/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1993 by Xerox Corporation. All rights reserved. */ /* time: July 11, 1993 8:14:52 pm PDT */ /* C2C version: April 20, 1993 (sun4) */ /* ref-counting: off */ /* file: GGTrajImpl, module: GGTrajImpl */ /* switches: bcfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> static char versionStamp[] = "@(#)mob←version [1259302800,3591173255] GGTrajImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef struct {word f0, f1, f2, f3;} W4; typedef W4 *W4Pt; typedef word (*fPt)(); typedef struct {word f0, f1;} W2; typedef W2 *W2Pt; typedef struct {word f0, f1, f2, f3, f4, f5;} W6; typedef W6 *W6Pt; typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8; typedef struct {W8 f; W6 r;} W14; typedef struct {word f0, f1, f2;} W3; typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7; typedef W3 *W3Pt; typedef struct {W8 f; W2 r;} W10; typedef struct {W8 f; W8 r;} W16; typedef struct {W16 f; W2 r;} W18; typedef struct {W8 f; W3 r;} W11; typedef struct {W16 f; W11 r;} W27; #define SOURCE(p, l) /* source p, l */ static float fc51 = 9999.0; #define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i ) #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) ) static float fc224 = 0.0; static float fc232 = 1.0; static float fc245 = 0.5; static float fc257 = 2.0; static float fc281 = -1.0; #define IOP2(op, x, y) ( (word) ((x) op (y)) ) #define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) ) static float fc368 = 0.01; static void NoName←Q7236(); static void GGTrajImpl←P0(); static word CreateTrajFromData←P60(); static word CreateTraj←P120(); static word AddSegment←P180(); static void CloseWithSegment←P240(); static void CloseByDistorting←P300(); static void SetSelectionBits←P360(); static word ReplaceFirstRun←P420(); static void SegToSegMatchCp←P480(); static void SegAndCpsToSegs←P540(); static word DeleteControlPoints←P600(); static void DeleteSequence←P660(); static word OutlinesOfTrajMinusSequence←P720(); static word GroupPieces←P780(); static word CopyTrajFromRun←P840(); static void CopyEachSegment←P4968(); static word CopySegmentAndBuild←P5088(); static void CopyEachJoint←P5028(); static word CopyJointAndBuild←P5148(); static word CopyTrajFromRange←P900(); static void CopyEachSegment←P5208(); static word CopySegmentAndBuild←P5328(); static void CopyEachJoint←P5268(); static word CopyJointAndBuild←P5388(); static word Concat←P960(); static word SpliceIn←P1020(); static void ResetEndSelectionBits←P1080(); static word SpliceInOpen←P1140(); static word SpliceInClosed←P1200(); static void ReverseTraj←P1260(); static word IsClockwiseTraj←P1320(); static word IsClockwiseTrajTransformSeq←P1380(); static void DrawPolyline←P1440(); static void PolyPathProc←P5544(); static void TranslateTraj←P1500(); static word ConstrainJoint←P1560(); static word ConstrainCP←P1620(); static word MatchShape←P1680(); static word FetchSegment←P1740(); static word FetchSegmentTraj←P1800(); static word FetchJoint←P1860(); static void FetchJointPos←P1920(); static void FetchJointPosTraj←P1980(); static void FetchJointNormal←P2040(); static void LastJointPos←P2100(); static void SetJointPos←P2160(); static word HiSegment←P2220(); static word HiSegmentTraj←P2280(); static word HiJoint←P2340(); static word HiJointTraj←P2400(); static word PreviousSegment←P2460(); static word PreviousSegmentNum←P2520(); static word FollowingSegmentNum←P2580(); static word FollowingJoint←P2640(); static word IsEndJoint←P2700(); static void SaveSelection←P2760(); static void SaveSelectionInSequence←P2820(); static void SaveSelectionInParts←P2880(); static void ClearSelection←P2940(); static void ClearSelections←P3000(); static word RemakeSelection←P3060(); static void SetControlPointField←P3120(); static word GetControlPointField←P3180(); static word GetJointField←P3240(); static word GetSegmentField←P3300(); static void SetJointField←P3360(); static void SetSegmentField←P3420(); static word CopyJoint←P3480(); static void SetTrajRole←P3540(); static word GetTrajRole←P3600(); static void UnpackSimpleDescriptor←P3660(); static void UnpackHitData←P3720(); static void PointToVector←P3780(); static void CrossProduct←P3840(); static word GetPartialArea←P3900(); static word SignedArea←P3960(); static word SignedAreaTransformSeq←P4020(); static word OnlyChild←P4080(); static void NearestSegment←P4140(); static word ProcessSegment←P6756(); static void NearestJoint←P4200(); static word ProcessJoint←P6912(); static void NearestControlPoint←P4260(); static word SomeCP←P6972(); static word ProcessSegment←P7032(); static word IndexOfJoint←P4320(); static word IndexOfSegment←P4380(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\106\354\000\000"}; static struct {unsigned f; char r[8];} string2 = {262148, "\004\200@\034\000\000\000"}; static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\100\324\000\000"}; static struct {unsigned f; char r[32];} string4 = {1966110, "\006\015\000\001\004\001\010\001\034\001\040\001\044\001\050\001\054\001\060\001\064\001\074\001\100\110\001\100\130\001\000"}; static struct {unsigned f; char r[4];} string5 = {131076, "\216\251\000"}; static struct {unsigned f; char r[4];} string6 = {65537, "\001\000\000"}; static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\100\164\000\000"}; static struct {unsigned f; char r[4];} string8 = {131074, "\003\006\000"}; static struct {unsigned f; char r[20];} string9 = {1179668, "\260\006\005\146\151\162\163\164\217\005\004\162\145\163\164\214\217\261\000"}; static struct {unsigned f; char r[4];} string10 = {131074, "\004\003\000"}; static struct {unsigned f; char r[16];} string11 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"}; static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\311\023\117\300\300\337\236\305\170\100\164\000\000"}; static struct {unsigned f; char r[4];} string13 = {196611, "\004A6"}; static struct {unsigned f; char r[16];} string14 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\050\000\000"}; static struct {unsigned f; char r[4];} string15 = {131074, "\004\007\000"}; static struct {unsigned f; char r[16];} string16 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\214\000\000"}; static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\100\200\000\000"}; static struct {unsigned f; char r[28];} string18 = {1638425, "\006\011\000\001\004\001\024\001\040\001\100\124\001\100\130\001\100\134\001\100\140\001\100\144\001\000\000"}; static struct {unsigned f; char r[48];} string19 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\247\365\203\234\300\047\265\225\046\100\324\005\004\162\145\163\164\214\216\257\300\247\365\203\234\300\047\265\225\046\100\324\261\000\000\000"}; static struct {unsigned f; char r[12];} string20 = {524300, "Gargoyle\000\000\000"}; static struct {unsigned f; char r[8];} string21 = {458760, "Apology"}; static struct {unsigned f; char r[48];} string22 = {2949168, "Only delete control points from Cubic Splines\000\000"}; static struct {unsigned f; char r[12];} string23 = {720908, "CubicSpline"}; static struct {unsigned f; char r[4];} string24 = {196612, "Arc"}; static struct {unsigned f; char r[8];} string25 = {393224, "Bezier\000"}; static struct {unsigned f; char r[8];} string26 = {327688, "Conic\000\000"}; static struct {unsigned f; char r[40];} string27 = {2424872, "single closed segment not implemented\000\000"}; static struct {unsigned f; char r[8];} string28 = {262152, "Traj\000\000\000"}; static struct {unsigned f; char r[16];} string29 = {851984, "\257\300\113\017\157\220\300\326\014\364\207\100\164\000\000"}; static struct {unsigned f; char r[8];} string30 = {458759, "\006\001@X\004A\377"}; static struct {unsigned f; char r[16];} string31 = {851984, "\257\300\322\334\347\304\300\124\107\000\027\100\150\000\000"}; static struct {unsigned f; char r[16];} string32 = {851984, "\257\300\265\217\206\011\300\172\271\371\033\100\150\000\000"}; static struct {unsigned f; char r[16];} string33 = {851984, "\257\300\231\005\151\136\300\275\231\323\274\100\150\000\000"}; static struct {unsigned f; char r[16];} string34 = {851984, "\257\300\311\023\117\300\300\337\236\305\170\100\150\000\000"}; static struct {unsigned f; char r[16];} string35 = {851984, "\257\300\301\241\007\150\300\032\111\265\237\100\150\000\000"}; static struct {unsigned f; char r[16];} string36 = {851984, "\257\300\043\211\212\366\300\343\003\307\242\100\150\000\000"}; static struct {unsigned f; char r[16];} string37 = {851984, "\257\300\011\245\206\305\300\112\326\356\245\100\150\000\000"}; static struct {unsigned f; char r[16];} string38 = {851984, "\257\300\261\002\056\176\300\055\321\222\125\100\150\000\000"}; static struct {unsigned f; char r[16];} string39 = {851984, "\257\300U$)\337\300Xo9\243@t\000\000"}; static struct {unsigned f; char r[16];} string40 = {851984, "\257\300\336\025\013\356\300\216\115\352\271\100\150\000\000"}; static struct {unsigned f; char r[16];} string41 = {851984, "\257\300\104\154\010\164\300\126\073\363\036\100\150\000\000"}; static struct {unsigned f; char r[16];} string42 = {851984, "\257\300\370\132\042\205\300\045\133\011\125\100\150\000\000"}; static struct {unsigned f; char r[16];} string43 = {851984, "\257\300\074\177\166\242\300\203\113\217\044\100\150\000\000"}; static struct {unsigned f; char r[16];} string44 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"}; static struct {unsigned f; char r[16];} string45 = {851984, "\257\300\103\306\166\071\300\047\126\012\237\100\150\000\000"}; static struct {unsigned f; char r[16];} string46 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string47 = {851984, "\257\300\252\120\163\253\300\126\171\142\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string48 = {851984, "\257\300\353\035\365\325\300\132\075\117\337\100\150\000\000"}; static struct {unsigned f; char r[16];} string49 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"}; static struct {unsigned f; char r[16];} string50 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\150\000\000"}; static struct { word f0[31]; word f31; word f32; word f33; word f34; word f35; word f36; word f37; word f38; word f39; word f40; word f41; word f42; word f43; word f44; word f45; word f46; word f47; word f48; word f49; word f50; word f51; word f52; word f53; word f54; word f55; word f56; word f57; word f58; word f59; word f60; word f61; word f62; word f63; word f64; word f65; word f66; word f67; word f68; word f69; word f70; word f71; word f72; word f73; word f74; word f75; word f76; word f77; word f78; word f79; word f80; word f81; word f82; word f83; word f84; word f85; word f86; word f87; word f88; word f89; word f90; word f91; word f92; word f93; word f94; word f95; word f96; word f97; word f98; word f99; word f100; word f101; word f102; word f103; word f104; word f105; word f106; word f107; word f108; word f109; word f110; word f111; word f112; word f113; word f114; word f115; word f116; word f117; word f118; word f119; word f120; word f121; word f122; word f123; word f124; word f125; word f126; word f127; word f128; word f129; word f130; word f131; word f132; word f133; word f134; word f135; word f136; word f137; word f138; word f139; word f140; word f141; word f142; word f143; word f144; word f145; word f146; word f147; word f148; word f149; word f150; word f151; word f152; word f153; word f154; word f155; word f156; word f157; word f158; word f159; word f160; word f161; word f162; word f163; word f164; word f165; word f166; word f167; word f168; word f169; word f170; word f171; word f172; word f173; word f174; word f175; word f176; word f177; word f178[25]; } globalframe = { {0}, (word) IndexOfSegment←P4380, 0, (word) IndexOfJoint←P4320, 0, (word) NearestControlPoint←P4260, 0, (word) NearestJoint←P4200, 0, (word) NearestSegment←P4140, 0, (word) OnlyChild←P4080, 0, (word) SignedAreaTransformSeq←P4020, 0, (word) SignedArea←P3960, 0, (word) GetPartialArea←P3900, 0, (word) CrossProduct←P3840, 0, (word) PointToVector←P3780, 0, (word) UnpackHitData←P3720, 0, (word) UnpackSimpleDescriptor←P3660, 0, (word) GetTrajRole←P3600, 0, (word) SetTrajRole←P3540, 0, (word) CopyJoint←P3480, 0, (word) SetSegmentField←P3420, 0, (word) SetJointField←P3360, 0, (word) GetSegmentField←P3300, 0, (word) GetJointField←P3240, 0, (word) GetControlPointField←P3180, 0, (word) SetControlPointField←P3120, 0, (word) RemakeSelection←P3060, 0, (word) ClearSelections←P3000, 0, (word) ClearSelection←P2940, 0, (word) SaveSelectionInParts←P2880, 0, (word) SaveSelectionInSequence←P2820, 0, (word) SaveSelection←P2760, 0, (word) IsEndJoint←P2700, 0, (word) FollowingJoint←P2640, 0, (word) FollowingSegmentNum←P2580, 0, (word) PreviousSegmentNum←P2520, 0, (word) PreviousSegment←P2460, 0, (word) HiJointTraj←P2400, 0, (word) HiJoint←P2340, 0, (word) HiSegmentTraj←P2280, 0, (word) HiSegment←P2220, 0, (word) SetJointPos←P2160, 0, (word) LastJointPos←P2100, 0, (word) FetchJointNormal←P2040, 0, (word) FetchJointPosTraj←P1980, 0, (word) FetchJointPos←P1920, 0, (word) FetchJoint←P1860, 0, (word) FetchSegmentTraj←P1800, 0, (word) FetchSegment←P1740, 0, (word) MatchShape←P1680, 0, (word) ConstrainCP←P1620, 0, (word) ConstrainJoint←P1560, 0, (word) TranslateTraj←P1500, 0, (word) DrawPolyline←P1440, 0, (word) IsClockwiseTrajTransformSeq←P1380, 0, (word) IsClockwiseTraj←P1320, 0, (word) ReverseTraj←P1260, 0, (word) SpliceInClosed←P1200, 0, (word) SpliceInOpen←P1140, 0, (word) ResetEndSelectionBits←P1080, 0, (word) SpliceIn←P1020, 0, (word) Concat←P960, 0, (word) CopyTrajFromRange←P900, 0, (word) CopyTrajFromRun←P840, 0, (word) GroupPieces←P780, 0, (word) OutlinesOfTrajMinusSequence←P720, 0, (word) DeleteSequence←P660, 0, (word) DeleteControlPoints←P600, 0, (word) SegAndCpsToSegs←P540, 0, (word) SegToSegMatchCp←P480, 0, (word) ReplaceFirstRun←P420, 0, (word) SetSelectionBits←P360, 0, (word) CloseByDistorting←P300, 0, (word) CloseWithSegment←P240, 0, (word) AddSegment←P180, 0, (word) CreateTraj←P120, 0, (word) CreateTrajFromData←P60, 0, (word) GGTrajImpl←P0, {0} }; static void NoName←Q7236() { register ptr gf←c0917 = (ptr) &globalframe; word var←c68860; (* (( (ptr) gf←c0917)+6) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2); (* (( (ptr) gf←c0917)+7) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4); (* (( (ptr) gf←c0917)+8) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6); (* (( (ptr) gf←c0917)+13) ) = (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8); (* (( (ptr) gf←c0917)+14) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10); (* (( (ptr) gf←c0917)+16) ) = (word) XR←GetTypeIndex((word) &string11, 0, (word) &string6); (* (( (ptr) gf←c0917)+17) ) = (word) XR←GetTypeIndex((word) &string12, 0, (word) &string13); (* (( (ptr) gf←c0917)+18) ) = (word) XR←GetTypeIndex((word) &string14, 0, (word) &string15); (* (( (ptr) gf←c0917)+19) ) = (word) XR←GetTypeIndexS((word) (&string16)); (* (( (ptr) gf←c0917)+20) ) = (word) XR←GetTypeIndex((word) &string17, 0, (word) &string18); (* (( (ptr) gf←c0917)+21) ) = (word) XR←GetTypeIndex((word) &string19, 0, (word) &string10); (* (ptr) (( (bPt) gf←c0917)+88) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0917)+8) ), (word) &string20); (* (ptr) (( (bPt) gf←c0917)+92) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0917)+8) ), (word) &string21); (* (ptr) (( (bPt) gf←c0917)+96) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0917)+16) ), (word) &string22); (* (ptr) (( (bPt) gf←c0917)+100) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0917)+8) ), (word) &string23); (* (ptr) (( (bPt) gf←c0917)+104) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0917)+8) ), (word) &string24); (* (ptr) (( (bPt) gf←c0917)+108) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0917)+8) ), (word) &string25); (* (ptr) (( (bPt) gf←c0917)+112) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0917)+8) ), (word) &string26); (* (ptr) (( (bPt) gf←c0917)+116) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0917)+16) ), (word) &string27); (* (ptr) (( (bPt) gf←c0917)+120) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0917)+8) ), (word) &string28); (void) XR←DeclareGlobalFrame((word) "GGTrajImpl", &globalframe, (word) XR←GetTypeIndex((word) &string29, 0, (word) &string30) , (word) (( (bPt) gf←c0917)+708)/* var←c62396 */ ); var←c68860 = (word) XR←ImportInterface((word) "Feedback", (word) XR←GetTypeIndexS((word) (&string31)), 25); (* (( (ptr) gf←c0917)+183)/* var←c62492 */ ) = var←c68860; var←c68860 = (word) XR←ImportInterface((word) "GGBoundBox", (word) XR←GetTypeIndexS((word) (&string32)), 24); (* (( (ptr) gf←c0917)+185)/* var←c62652 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 68162051); (void) XR←ImportProcS(var←c68860, 67371777); (void) XR←ImportProcS(var←c68860, 67109376); var←c68860 = (word) XR←ImportInterface((word) "GGCoreOps", (word) XR←GetTypeIndexS((word) (&string33)), 37); (* (( (ptr) gf←c0917)+196)/* var←c64668 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 269229059); var←c68860 = (word) XR←ImportInterface((word) "GGOutline", (word) XR←GetTypeIndexS((word) (&string34)), 19); (* (( (ptr) gf←c0917)+195)/* var←c64284 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 67633922); (void) XR←ImportProcS(var←c68860, 67633410); (void) XR←ImportProcS(var←c68860, 67896323); var←c68860 = (word) XR←ImportInterface((word) "GGParent", (word) XR←GetTypeIndexS((word) (&string35)), 83); (* (( (ptr) gf←c0917)+190)/* var←c63708 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 67386369); var←c68860 = (word) XR←ImportInterface((word) "GGSegment", (word) XR←GetTypeIndexS((word) (&string36)), 47); (* (( (ptr) gf←c0917)+187)/* var←c62940 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 67637250); (void) XR←ImportProcS(var←c68860, 1056003); (void) XR←ImportProcS(var←c68860, 1054723); (void) XR←ImportProcS(var←c68860, 529922); (void) XR←ImportProcS(var←c68860, 267009); (void) XR←ImportProcS(var←c68860, 67640066); (void) XR←ImportProcS(var←c68860, 68944900); (void) XR←ImportProcS(var←c68860, 67374337); (void) XR←ImportProcS(var←c68860, 527874); (void) XR←ImportProcS(var←c68860, 788738); (void) XR←ImportProcS(var←c68860, 792322); (void) XR←ImportProcS(var←c68860, 266753); var←c68860 = (word) XR←ImportInterface((word) "GGSelect", (word) XR←GetTypeIndexS((word) (&string37)), 23); (* (( (ptr) gf←c0917)+193)/* var←c64124 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 67637250); (void) XR←ImportProcS(var←c68860, 135271172); var←c68860 = (word) XR←ImportInterface((word) "GGSequence", (word) XR←GetTypeIndexS((word) (&string38)), 58); (* (( (ptr) gf←c0917)+189)/* var←c63644 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 799491); (void) XR←ImportProcS(var←c68860, 67905283); (void) XR←ImportProcS(var←c68860, 671621122); (void) XR←ImportProcS(var←c68860, 67371521); (void) XR←ImportProcS(var←c68860, 264705); (void) XR←ImportProcS(var←c68860, 134490881); (void) XR←ImportProcS(var←c68860, 67643650); (void) XR←ImportProcS(var←c68860, 67379713); (void) XR←ImportProcS(var←c68860, 134488321); (void) XR←ImportProcS(var←c68860, 67637506); (void) XR←ImportProcS(var←c68860, 67376385); (void) XR←ImportProcS(var←c68860, 67371777); (void) XR←ImportProcS(var←c68860, 67379969); (void) XR←ImportProcS(var←c68860, 67376641); (void) XR←ImportProcS(var←c68860, 67385601); (void) XR←ImportProcS(var←c68860, 67384321); (void) XR←ImportProcS(var←c68860, 67381761); (void) XR←ImportProcS(var←c68860, 67380225); var←c68860 = (word) XR←ImportInterface((word) "GGSlice", (word) XR←GetTypeIndexS((word) (&string39)), 128); (* (( (ptr) gf←c0917)+184)/* var←c62588 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 278529); (void) XR←ImportProcS(var←c68860, 67634178); (void) XR←ImportProcS(var←c68860, 67371777); var←c68860 = (word) XR←ImportInterface((word) "GGSliceOps", (word) XR←GetTypeIndexS((word) (&string40)), 73); (* (( (ptr) gf←c0917)+192)/* var←c64092 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 67634434); (void) XR←ImportProcS(var←c68860, 67371521); (void) XR←ImportProcS(var←c68860, 67634690); (void) XR←ImportProcS(var←c68860, 134756866); (void) XR←ImportProcS(var←c68860, 67633922); (void) XR←ImportProcS(var←c68860, 1062148); var←c68860 = (word) XR←ImportInterface((word) "GGTransform", (word) XR←GetTypeIndexS((word) (&string41)), 7); (* (( (ptr) gf←c0917)+199)/* var←c66172 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 135004418); var←c68860 = (word) XR←ImportInterface((word) "GGUtility", (word) XR←GetTypeIndexS((word) (&string42)), 42); (* (( (ptr) gf←c0917)+191)/* var←c63996 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 67378689); var←c68860 = (word) XR←ImportInterface((word) "Imager", (word) XR←GetTypeIndexS((word) (&string43)), 84); (* (( (ptr) gf←c0917)+197)/* var←c65980 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 803587); (void) XR←ImportProcS(var←c68860, 540674); (void) XR←ImportProcS(var←c68860, 541186); (void) XR←ImportProcS(var←c68860, 536578); var←c68860 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string44)), 55); (* (( (ptr) gf←c0917)+198)/* var←c66076 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 135013122); (void) XR←ImportProcS(var←c68860, 67634689); var←c68860 = (word) XR←ImportInterface((word) "Lines2d", (word) XR←GetTypeIndexS((word) (&string45)), 50); (* (( (ptr) gf←c0917)+200)/* var←c66268 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 135014914); (void) XR←ImportProcS(var←c68860, 68163330); var←c68860 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string46)), 36); (* (( (ptr) gf←c0917)+201)/* var←c66492 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 67372289); (void) XR←ImportProcS(var←c68860, 67904259); var←c68860 = (word) XR←ImportInterface((word) "Rosary", (word) XR←GetTypeIndexS((word) (&string47)), 18); (* (( (ptr) gf←c0917)+186)/* var←c62748 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 67633410); (void) XR←ImportProcS(var←c68860, 68159746); (void) XR←ImportProcS(var←c68860, 67373057); (void) XR←ImportProcS(var←c68860, 67896067); (void) XR←ImportProcS(var←c68860, 67634178); (void) XR←ImportProcS(var←c68860, 67374593); (void) XR←ImportProcS(var←c68860, 67633666); var←c68860 = (word) XR←ImportInterface((word) "SimpleFeedback", (word) XR←GetTypeIndexS((word) (&string48)), 7); (* (( (ptr) gf←c0917)+194)/* var←c64188 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 1048580); var←c68860 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string49)), 21); (* (( (ptr) gf←c0917)+188)/* var←c63004 */ ) = var←c68860; (void) XR←ImportProcS(var←c68860, 68158722); (void) XR←ImportProcS(var←c68860, 68161794); (void) XR←ImportProcS(var←c68860, 134744321); (void) XR←ImportProcS(var←c68860, 68161282); (void) XR←ImportProcS(var←c68860, 135270914); (void) XR←ImportProcS(var←c68860, 135006210); (void) XR←ImportProcS(var←c68860, 135267842); (void) XR←ImportProcS(var←c68860, 135268098); var←c68860 = (word) XR←ExportInterface((word) "GGTraj", (word) XR←GetTypeIndexS((word) (&string50)), 55); (* (( (ptr) gf←c0917)+202)/* var←c68892 */ ) = var←c68860; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+692)/* var←c62332 */ , 67633153, (word) "CreateTraj"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+700)/* var←c62364 */ , 70517002, (word) "CreateTrajFromData") ; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+684)/* var←c62300 */ , 68157956, (word) "AddSegment"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+676)/* var←c62268 */ , 787203, (word) "CloseWithSegment"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+668)/* var←c62236 */ , 525314, (word) "CloseByDistorting"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+628)/* var←c62076 */ , 67634434, (word) "DeleteControlPoints") ; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+620)/* var←c62044 */ , 134481409, (word) "DeleteSequence"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+652)/* var←c62172 */ , 68159236, (word) "ReplaceFirstRun"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+644)/* var←c62140 */ , 1050628, (word) "SegToSegMatchCp"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+636)/* var←c62108 */ , 1050884, (word) "SegAndCpsToSegs"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+164)/* var←c60220 */ , 67373569, (word) "OnlyChild"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+236)/* var←c60508 */ , 527106, (word) "SetTrajRole"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+228)/* var←c60476 */ , 67374081, (word) "GetTrajRole"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+596)/* var←c61948 */ , 67636482, (word) "CopyTrajFromRun"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+588)/* var←c61916 */ , 67898883, (word) "CopyTrajFromRange"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+580)/* var←c61884 */ , 68161284, (word) "Concat"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+572)/* var←c61852 */ , 67637250, (word) "SpliceIn"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+540)/* var←c61724 */ , 266497, (word) "ReverseTraj"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+532)/* var←c61692 */ , 67375617, (word) "IsClockwiseTraj"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+524)/* var←c61660 */ , 67638018, (word) "IsClockwiseTrajTransformSeq") ; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+516)/* var←c61628 */ , 529666, (word) "DrawPolyline"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+500)/* var←c61564 */ , 67900931, (word) "ConstrainJoint"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+492)/* var←c61532 */ , 68163332, (word) "ConstrainCP"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+484)/* var←c61500 */ , 67639298, (word) "MatchShape"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+476)/* var←c61468 */ , 67639554, (word) "FetchSegment"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+468)/* var←c61436 */ , 67639810, (word) "FetchSegmentTraj"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+460)/* var←c61404 */ , 67640066, (word) "FetchJoint"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+452)/* var←c61372 */ , 134749186, (word) "FetchJointPos"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+444)/* var←c61340 */ , 134749442, (word) "FetchJointPosTraj") ; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+436)/* var←c61308 */ , 134749698, (word) "FetchJointNormal"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+428)/* var←c61276 */ , 134487809, (word) "LastJointPos"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+420)/* var←c61244 */ , 1056771, (word) "SetJointPos"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+412)/* var←c61212 */ , 67379457, (word) "HiSegment"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+404)/* var←c61180 */ , 67379713, (word) "HiSegmentTraj"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+396)/* var←c61148 */ , 67379969, (word) "HiJoint"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+388)/* var←c61116 */ , 67380225, (word) "HiJointTraj"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+380)/* var←c61084 */ , 67642626, (word) "PreviousSegment"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+372)/* var←c61052 */ , 67642882, (word) "PreviousSegmentNum") ; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+364)/* var←c61020 */ , 67643138, (word) "FollowingSegmentNum") ; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+356)/* var←c60988 */ , 67643394, (word) "FollowingJoint"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+348)/* var←c60956 */ , 67643650, (word) "IsEndJoint"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+340)/* var←c60924 */ , 797187, (word) "SaveSelection"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+332)/* var←c60892 */ , 535298, (word) "SaveSelectionInSequence") ; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+324)/* var←c60860 */ , 797699, (word) "SaveSelectionInParts") ; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+316)/* var←c60828 */ , 535810, (word) "ClearSelection"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+308)/* var←c60796 */ , 273921, (word) "ClearSelections"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+300)/* var←c60764 */ , 67645186, (word) "RemakeSelection"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+220)/* var←c60444 */ , 671625218, (word) "UnpackSimpleDescriptor") ; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+212)/* var←c60412 */ , 402927873, (word) "UnpackHitData"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+156)/* var←c60188 */ , 470823427, (word) "NearestSegment"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+148)/* var←c60156 */ , 470823683, (word) "NearestJoint"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+140)/* var←c60124 */ , 537932803, (word) "NearestControlPoint") ; (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+132)/* var←c60092 */ , 67646722, (word) "IndexOfJoint"); (void) XR←ExportProcS(var←c68860, (word) (( (bPt) gf←c0917)+124)/* var←c60060 */ , 67646978, (word) "IndexOfSegment"); } static void GGTrajImpl←P0(formal←c0102, formal←c0101) word formal←c0102; word formal←c0101; { register ptr gf←c68924 = (ptr) &globalframe; /* GGTrajImpl: */ SOURCE(343, 51562) SOURCE(2619, 16) (* (( (ptr) gf←c68924)+4)/* Problem←v4960 */ ) = (* (ptr) (* (( (ptr) (* (( (ptr) gf←c68924)+183)/* var←c62492 */ ))+28) ) ); SOURCE(29633, 20) (* (( (ptr) gf←c68924)+5)/* closeness←v5744 */ ) = (word) -18; } static word CreateTrajFromData←P60(role←v7340, segCount←v7368, segments←v7396, joints←v7424, extraPoints←v7452, visibleJoints←v7480, strokeJoint←v7508, loArrow←v7536, hiArrow←v7564, selectedInPart←v7592) word role←v7340; word segCount←v7368; word segments←v7396; word joints←v7424; word extraPoints←v7452; word visibleJoints←v7480; word strokeJoint←v7508; word loArrow←v7536; word hiArrow←v7564; W4 selectedInPart←v7592; { register ptr gf←c68956 = (ptr) &globalframe; word slice←v7720; word trajData←v17728; /* CreateTrajFromData: */ SOURCE(2671, 741) SOURCE(2671, 741) slice←v7720 = 0; SOURCE(3011, 168) trajData←v17728 = XR←NewObject(64, (* (( (ptr) gf←c68956)+6) )); (* (ptr) trajData←v17728 ) = role←v7340; (* (( (ptr) trajData←v17728)+1) ) = segCount←v7368; (* (( (ptr) trajData←v17728)+2) ) = segments←v7396; (* (( (ptr) trajData←v17728)+3) ) = joints←v7424; (* (( (ptr) trajData←v17728)+4) ) = extraPoints←v7452; (* (( (ptr) trajData←v17728)+5) ) = visibleJoints←v7480; (* (( (ptr) trajData←v17728)+6) ) = strokeJoint←v7508; (* (( (ptr) trajData←v17728)+7) ) = loArrow←v7536; (* (( (ptr) trajData←v17728)+8) ) = hiArrow←v7564; (* (( (ptr) trajData←v17728)+9) ) = 1; (* (W4Pt) (( (ptr) trajData←v17728)+10) ) = selectedInPart←v7592; (* (( (ptr) trajData←v17728)+15) ) = (* (ptr) &fc51 ); SOURCE(3181, 79) { word var←c62556; word var←c62620; { word pd52; pd52 = (* (( (ptr) (* (( (ptr) gf←c68956)+184)/* var←c62588 */ ))+7) ); var←c62556 = (word) ( *( (fPt) ((* (ptr) pd52 ))))((* ((( (ptr) gf←c68956)+30)) ), pd52); }; var←c62620 = XR←NewObject(92, (* (( (ptr) gf←c68956)+7) )); (* (ptr) var←c62620 ) = var←c62556; (* (( (ptr) var←c62620)+1) ) = trajData←v17728; (* (W4Pt) (( (ptr) var←c62620)+3) ) = (* (W4Pt) (( (ptr) gf←c68956)+179)/* var←c62460 */ ); (* (( (ptr) var←c62620)+21) ) = (word) -1; slice←v7720 = var←c62620; }; SOURCE(3262, 42) { word pd53; pd53 = (* (( (ptr) (* (( (ptr) gf←c68956)+185)/* var←c62652 */ ))+6) ); (* (( (ptr) slice←v7720)+15) ) = (word) ( *( (fPt) ((* (ptr) pd53 ))))(pd53); }; SOURCE(3306, 42) { word pd54; pd54 = (* (( (ptr) (* (( (ptr) gf←c68956)+185)/* var←c62652 */ ))+6) ); (* (( (ptr) slice←v7720)+13) ) = (word) ( *( (fPt) ((* (ptr) pd54 ))))(pd54); }; SOURCE(3350, 62) { word pd55; pd55 = (* (( (ptr) (* (( (ptr) gf←c68956)+184)/* var←c62588 */ ))+8) ); (* (( (ptr) slice←v7720)+11) ) = (word) ( *( (fPt) ((* (ptr) pd55 ))))(slice←v7720, 0, pd55); }; SOURCE(2671, 741) return(slice←v7720); } static word CreateTraj←P120(point←v7780) W2 point←v7780; { register ptr gf←c68988 = (ptr) &globalframe; word slice←v7824; word firstJoint←v17772; word trajData←v17800; /* CreateTraj: */ SOURCE(3418, 695) SOURCE(3418, 695) slice←v7824 = 0; SOURCE(3485, 50) firstJoint←v17772 = XR←NewObject(28, (* (( (ptr) gf←c68988)+13) )); (* (W2Pt) firstJoint←v17772 ) = point←v7780; SOURCE(3537, 184) { word var←c62716; word var←c62780; { word pd56; pd56 = (* (( (ptr) (* (( (ptr) gf←c68988)+186)/* var←c62748 */ ))+6) ); var←c62716 = (word) ( *( (fPt) ((* (ptr) pd56 ))))(firstJoint←v17772, 1, pd56); }; var←c62780 = XR←NewObject(64, (* (( (ptr) gf←c68988)+6) )); (* (ptr) var←c62780 ) = 2; (* (( (ptr) var←c62780)+3) ) = var←c62716; (* (( (ptr) var←c62780)+6) ) = 2; (* (( (ptr) var←c62780)+9) ) = 1; (* (W4Pt) (( (ptr) var←c62780)+10) ) = (* (W4Pt) (( (ptr) gf←c68988)+179)/* var←c62460 */ ); (* (( (ptr) var←c62780)+15) ) = (* (ptr) &fc51 ); trajData←v17800 = var←c62780; }; SOURCE(3723, 326) { word var←c62812; word var←c62844; word var←c62876; word var←c62908; { word pd57; pd57 = (* (( (ptr) (* (( (ptr) gf←c68988)+184)/* var←c62588 */ ))+7) ); var←c62812 = (word) ( *( (fPt) ((* (ptr) pd57 ))))((* ((( (ptr) gf←c68988)+30)) ), pd57); }; { word pd58; pd58 = (* (( (ptr) (* (( (ptr) gf←c68988)+185)/* var←c62652 */ ))+6) ); var←c62844 = (word) ( *( (fPt) ((* (ptr) pd58 ))))(pd58); }; { word pd59; pd59 = (* (( (ptr) (* (( (ptr) gf←c68988)+185)/* var←c62652 */ ))+6) ); var←c62876 = (word) ( *( (fPt) ((* (ptr) pd59 ))))(pd59); }; var←c62908 = XR←NewObject(92, (* (( (ptr) gf←c68988)+7) )); (* (ptr) var←c62908 ) = var←c62812; (* (( (ptr) var←c62908)+1) ) = trajData←v17800; (* (W4Pt) (( (ptr) var←c62908)+3) ) = (* (W4Pt) (( (ptr) gf←c68988)+179)/* var←c62460 */ ); (* (( (ptr) var←c62908)+13) ) = var←c62844; (* (( (ptr) var←c62908)+15) ) = var←c62876; (* (( (ptr) var←c62908)+21) ) = (word) -1; slice←v7824 = var←c62908; }; SOURCE(4051, 62) { word pd60; pd60 = (* (( (ptr) (* (( (ptr) gf←c68988)+184)/* var←c62588 */ ))+8) ); (* (( (ptr) slice←v7824)+11) ) = (word) ( *( (fPt) ((* (ptr) pd60 ))))(slice←v7824, 0, pd60); }; SOURCE(3418, 695) return(slice←v7824); } static word AddSegment←P180(slice←v7884, trajEnd←v7912, seg←v7940, segEnd←v7968) word slice←v7884; word trajEnd←v7912; word seg←v7940; word segEnd←v7968; { register ptr gf←c69020 = (ptr) &globalframe; word success←v8012; W2 diff←v17844; word loJoint←v17872 = 0; word hiJoint←v17900 = 0; word trajData←v17928; /* AddSegment: */ SOURCE(4119, 1314) SOURCE(4119, 1314) success←v8012 = 1; SOURCE(4282, 39) trajData←v17928 = XR←Narrow((* (( (ptr) slice←v7884)+1) ), (* (( (ptr) gf←c69020)+6) )); SOURCE(4323, 78) if (((* (ptr) trajData←v17928 ) == 0) || ((* (ptr) trajData←v17928 ) == 1)) { SOURCE(4378, 15) success←v8012 = 0; SOURCE(4395, 6) return(success←v8012); }; SOURCE(4404, 54) if ((trajEnd←v7912 == segEnd←v7968)) { SOURCE(4429, 29) { word pd61; pd61 = (* (( (ptr) (* (( (ptr) gf←c69020)+187)/* var←c62940 */ ))+22) ); (void) ( *( (fPt) ((* (ptr) pd61 ))))(seg←v7940, pd61); }; }; SOURCE(4460, 142) if ((trajEnd←v7912 == 0)) { { W2 var←c62972; (void) FetchJointPos←P1920((word) &var←c62972, slice←v7884, 0); { W2 var←c0138; { word pd62; pd62 = (* (( (ptr) (* (( (ptr) gf←c69020)+188)/* var←c63004 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd62 ))))((word) &var←c0138, var←c62972, (* (W2Pt) (( (ptr) seg←v7940)+11) ), pd62); }; diff←v17844 = var←c0138; }; }; } else { { W2 var←c63036; (void) FetchJointPos←P1920((word) &var←c63036, slice←v7884, (* (( (ptr) trajData←v17928)+1) )); { W2 var←c0141; { word pd63; pd63 = (* (( (ptr) (* (( (ptr) gf←c69020)+188)/* var←c63004 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd63 ))))((word) &var←c0141, var←c63036, (* (W2Pt) (( (ptr) seg←v7940)+9) ), pd63); }; diff←v17844 = var←c0141; }; }; }; SOURCE(4604, 37) { word pd64; pd64 = (* (( (ptr) (* (( (ptr) gf←c69020)+187)/* var←c62940 */ ))+27) ); (void) ( *( (fPt) ((* (ptr) pd64 ))))(seg←v7940, diff←v17844, pd64); }; SOURCE(4643, 790) if (((* (( (ptr) trajData←v17928)+1) ) == 0)) { SOURCE(4675, 40) { word pd65; pd65 = (* (( (ptr) (* (( (ptr) gf←c69020)+186)/* var←c62748 */ ))+6) ); (* (( (ptr) trajData←v17928)+2) ) = (word) ( *( (fPt) ((* (ptr) pd65 ))))(seg←v7940, 1, pd65); }; SOURCE(4717, 41) { word var←c63068; var←c63068 = XR←NewObject(28, (* (( (ptr) gf←c69020)+13) )); (* (W2Pt) var←c63068 ) = (* (W2Pt) (( (ptr) seg←v7940)+9) ); (* (W4Pt) (( (ptr) var←c63068)+2) ) = (* (W4Pt) (( (ptr) gf←c69020)+179)/* var←c62460 */ ); loJoint←v17872 = var←c63068; }; SOURCE(4760, 41) { word var←c63100; var←c63100 = XR←NewObject(28, (* (( (ptr) gf←c69020)+13) )); (* (W2Pt) var←c63100 ) = (* (W2Pt) (( (ptr) seg←v7940)+11) ); (* (W4Pt) (( (ptr) var←c63100)+2) ) = (* (W4Pt) (( (ptr) gf←c69020)+179)/* var←c62460 */ ); hiJoint←v17900 = var←c63100; }; SOURCE(4803, 57) { word var←c63132; { word var←c63164; word var←c63196; var←c63164 = XR←NewObject(8, (* (( (ptr) gf←c69020)+14) )); var←c63196 = var←c63164; (* (ptr) var←c63196 ) = loJoint←v17872; (* (( (ptr) var←c63196)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c69020)+14) )); var←c63196 = (* (( (ptr) var←c63196)+1) ); (* (ptr) var←c63196 ) = hiJoint←v17900; var←c63132 = var←c63164; }; { word pd66; pd66 = (* (( (ptr) (* (( (ptr) gf←c69020)+186)/* var←c62748 */ ))+18) ); (* (( (ptr) trajData←v17928)+3) ) = (word) ( *( (fPt) ((* (ptr) pd66 ))))(var←c63132, pd66); }; }; SOURCE(4862, 21) (* (( (ptr) trajData←v17928)+1) ) = 1; SOURCE(4885, 42) { W6 var←c63228; { word pd67; pd67 = (* (( (ptr) (* (ptr) seg←v7940 ))+1) ); var←c63228 = (* (W6Pt) ( *( (fPt) ((* (ptr) pd67 ))))(seg←v7940, pd67) ); }; (* (W6Pt) (* (( (ptr) slice←v7884)+15) ) ) = var←c63228; }; } else { SOURCE(4938, 420) if ((trajEnd←v7912 == 0)) { SOURCE(4961, 41) { word var←c63260; var←c63260 = XR←NewObject(28, (* (( (ptr) gf←c69020)+13) )); (* (W2Pt) var←c63260 ) = (* (W2Pt) (( (ptr) seg←v7940)+9) ); (* (W4Pt) (( (ptr) var←c63260)+2) ) = (* (W4Pt) (( (ptr) gf←c69020)+179)/* var←c62460 */ ); loJoint←v17872 = var←c63260; }; SOURCE(5004, 74) { word var←c63292; { word pd68; pd68 = (* (( (ptr) (* (( (ptr) gf←c69020)+186)/* var←c62748 */ ))+6) ); var←c63292 = (word) ( *( (fPt) ((* (ptr) pd68 ))))(loJoint←v17872, 1, pd68); }; { word pd69; pd69 = (* (( (ptr) (* (( (ptr) gf←c69020)+186)/* var←c62748 */ ))+8) ); (* (( (ptr) trajData←v17928)+3) ) = (word) ( *( (fPt) ((* (ptr) pd69 ))))(var←c63292, (* (( (ptr) trajData←v17928)+3) ), pd69) ; }; }; SOURCE(5080, 74) { word var←c63324; { word pd70; pd70 = (* (( (ptr) (* (( (ptr) gf←c69020)+186)/* var←c62748 */ ))+6) ); var←c63324 = (word) ( *( (fPt) ((* (ptr) pd70 ))))(seg←v7940, 1, pd70); }; { word pd71; pd71 = (* (( (ptr) (* (( (ptr) gf←c69020)+186)/* var←c62748 */ ))+8) ); (* (( (ptr) trajData←v17928)+2) ) = (word) ( *( (fPt) ((* (ptr) pd71 ))))(var←c63324, (* (( (ptr) trajData←v17928)+2) ), pd71) ; }; }; } else { SOURCE(5165, 41) { word var←c63356; var←c63356 = XR←NewObject(28, (* (( (ptr) gf←c69020)+13) )); (* (W2Pt) var←c63356 ) = (* (W2Pt) (( (ptr) seg←v7940)+11) ); (* (W4Pt) (( (ptr) var←c63356)+2) ) = (* (W4Pt) (( (ptr) gf←c69020)+179)/* var←c62460 */ ); hiJoint←v17900 = var←c63356; }; SOURCE(5208, 74) { word var←c63388; { word pd72; pd72 = (* (( (ptr) (* (( (ptr) gf←c69020)+186)/* var←c62748 */ ))+6) ); var←c63388 = (word) ( *( (fPt) ((* (ptr) pd72 ))))(hiJoint←v17900, 1, pd72); }; { word pd73; pd73 = (* (( (ptr) (* (( (ptr) gf←c69020)+186)/* var←c62748 */ ))+8) ); (* (( (ptr) trajData←v17928)+3) ) = (word) ( *( (fPt) ((* (ptr) pd73 ))))((* (( (ptr) trajData←v17928)+3) ), var←c63388, pd73) ; }; }; SOURCE(5284, 74) { word var←c63420; { word pd74; pd74 = (* (( (ptr) (* (( (ptr) gf←c69020)+186)/* var←c62748 */ ))+6) ); var←c63420 = (word) ( *( (fPt) ((* (ptr) pd74 ))))(seg←v7940, 1, pd74); }; { word pd75; pd75 = (* (( (ptr) (* (( (ptr) gf←c69020)+186)/* var←c62748 */ ))+8) ); (* (( (ptr) trajData←v17928)+2) ) = (word) ( *( (fPt) ((* (ptr) pd75 ))))((* (( (ptr) trajData←v17928)+2) ), var←c63420, pd75) ; }; }; }; SOURCE(5363, 41) (* (( (ptr) trajData←v17928)+1) ) = ((* (( (ptr) trajData←v17928)+1) ) + 1); SOURCE(5406, 27) { word pd76; pd76 = (* (( (ptr) (* (( (ptr) gf←c69020)+184)/* var←c62588 */ ))+68) ); (void) ( *( (fPt) ((* (ptr) pd76 ))))(slice←v7884, pd76); }; }; SOURCE(4119, 1314) return(success←v8012); } static void CloseWithSegment←P240(slice←v8072, seg←v8100, segEnd←v8128) word slice←v8072; word seg←v8100; word segEnd←v8128; { register ptr gf←c69052 = (ptr) &globalframe; W2 diff←v17972; word trajData←v18000; /* CloseWithSegment: */ SOURCE(5442, 573) SOURCE(5536, 39) trajData←v18000 = XR←Narrow((* (( (ptr) slice←v8072)+1) ), (* (( (ptr) gf←c69052)+6) )); SOURCE(5614, 89) if (((* (( (ptr) trajData←v18000)+1) ) == 0)) { SOURCE(5644, 59) { word var←c0159; var←c0159 = (* (( (ptr) gf←c69052)+29) ); (void) XR←RaiseError((* (( (ptr) gf←c69052)+4)/* Problem←v4960 */ ), (word) &var←c0159); }; }; SOURCE(5705, 49) if ((segEnd←v8128 == 1)) { SOURCE(5725, 29) { word pd77; pd77 = (* (( (ptr) (* (( (ptr) gf←c69052)+187)/* var←c62940 */ ))+22) ); (void) ( *( (fPt) ((* (ptr) pd77 ))))(seg←v8100, pd77); }; }; SOURCE(5756, 49) { W2 var←c63452; (void) LastJointPos←P2100((word) &var←c63452, slice←v8072); { W2 var←c0162; { word pd78; pd78 = (* (( (ptr) (* (( (ptr) gf←c69052)+188)/* var←c63004 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd78 ))))((word) &var←c0162, var←c63452, (* (W2Pt) (( (ptr) seg←v8100)+9) ), pd78); }; diff←v17972 = var←c0162; }; }; SOURCE(5807, 37) { word pd79; pd79 = (* (( (ptr) (* (( (ptr) gf←c69052)+187)/* var←c62940 */ ))+27) ); (void) ( *( (fPt) ((* (ptr) pd79 ))))(seg←v8100, diff←v17972, pd79); }; SOURCE(5846, 74) { word var←c63484; { word pd80; pd80 = (* (( (ptr) (* (( (ptr) gf←c69052)+186)/* var←c62748 */ ))+6) ); var←c63484 = (word) ( *( (fPt) ((* (ptr) pd80 ))))(seg←v8100, 1, pd80); }; { word pd81; pd81 = (* (( (ptr) (* (( (ptr) gf←c69052)+186)/* var←c62748 */ ))+8) ); (* (( (ptr) trajData←v18000)+2) ) = (word) ( *( (fPt) ((* (ptr) pd81 ))))((* (( (ptr) trajData←v18000)+2) ), var←c63484, pd81) ; }; }; SOURCE(5922, 41) (* (( (ptr) trajData←v18000)+1) ) = ((* (( (ptr) trajData←v18000)+1) ) + 1); SOURCE(5965, 21) (* (ptr) trajData←v18000 ) = 0; SOURCE(5988, 27) { word pd82; pd82 = (* (( (ptr) (* (( (ptr) gf←c69052)+184)/* var←c62588 */ ))+68) ); (void) ( *( (fPt) ((* (ptr) pd82 ))))(slice←v8072, pd82); }; } static void CloseByDistorting←P300(slice←v8188, distortEnd←v8216) word slice←v8188; word distortEnd←v8216; { register ptr gf←c69084 = (ptr) &globalframe; word seg←v18044 = 0; word loJoint←v18072 = 0; word hiJoint←v18100 = 0; word trajData←v18128; /* CloseByDistorting: */ SOURCE(6020, 735) SOURCE(6130, 39) trajData←v18128 = XR←Narrow((* (( (ptr) slice←v8188)+1) ), (* (( (ptr) gf←c69084)+6) )); SOURCE(6208, 30) loJoint←v18072 = (word) FetchJoint←P1860(slice←v8188, 0); SOURCE(6240, 43) { word var←c63516; var←c63516 = (word) HiJoint←P2340(slice←v8188); hiJoint←v18100 = (word) FetchJoint←P1860(slice←v8188, var←c63516); }; SOURCE(6285, 328) { word var←c63548; var←c63548 = distortEnd←v8216; if ((var←c63548 == 0)) { SOURCE(6316, 28) seg←v18044 = (word) FetchSegment←P1740(slice←v8188, 0); SOURCE(6346, 29) (* (W2Pt) loJoint←v18072 ) = (* (W2Pt) hiJoint←v18100 ); SOURCE(6377, 22) (* (W2Pt) (( (ptr) seg←v18044)+9) ) = (* (W2Pt) hiJoint←v18100 ); SOURCE(6401, 49) { word pd83; pd83 = (* (( (ptr) (* (ptr) seg←v18044 ))+9) ); (void) ( *( (fPt) ((* (ptr) pd83 ))))(seg←v18044, 1, (* (W2Pt) hiJoint←v18100 ), pd83); }; } else { if ((var←c63548 == 1)) { SOURCE(6463, 43) { word var←c63580; var←c63580 = (word) HiSegment←P2220(slice←v8188); seg←v18044 = (word) FetchSegment←P1740(slice←v8188, var←c63580); }; SOURCE(6508, 29) (* (W2Pt) hiJoint←v18100 ) = (* (W2Pt) loJoint←v18072 ); SOURCE(6539, 22) (* (W2Pt) (( (ptr) seg←v18044)+11) ) = (* (W2Pt) loJoint←v18072 ); SOURCE(6563, 50) { word pd84; pd84 = (* (( (ptr) (* (ptr) seg←v18044 ))+9) ); (void) ( *( (fPt) ((* (ptr) pd84 ))))(seg←v18044, 0, (* (W2Pt) loJoint←v18072 ), pd84); }; } else { SOURCE(6629, 5) (void) XR←RaiseUnnamedError(); }; }; }; SOURCE(6636, 67) { word var←c63612; var←c63612 = (word) HiJoint←P2340(slice←v8188); { word pd85; pd85 = (* (( (ptr) (* (( (ptr) gf←c69084)+186)/* var←c62748 */ ))+7) ); (* (( (ptr) trajData←v18128)+3) ) = (word) ( *( (fPt) ((* (ptr) pd85 ))))((* (( (ptr) trajData←v18128)+3) ), 0, var←c63612, pd85) ; }; }; SOURCE(6705, 21) (* (ptr) trajData←v18128 ) = 0; SOURCE(6728, 27) { word pd86; pd86 = (* (( (ptr) (* (( (ptr) gf←c69084)+184)/* var←c62588 */ ))+68) ); (void) ( *( (fPt) ((* (ptr) pd86 ))))(slice←v8188, pd86); }; } static void SetSelectionBits←P360(traj←v8276, selected←v8304, selectClass←v8332) word traj←v8276; word selected←v8304; word selectClass←v8332; { register ptr gf←c69116 = (ptr) &globalframe; word segGen←v18172 = 0; word jointGen←v18200 = 0; word joint←v18228 = 0; word trajData←v18256; /* SetSelectionBits: */ SOURCE(6761, 777) SOURCE(6939, 38) trajData←v18256 = XR←Narrow((* (( (ptr) traj←v8276)+1) ), (* (( (ptr) gf←c69116)+6) )); SOURCE(6979, 44) { word pd87; pd87 = (* (( (ptr) (* (( (ptr) gf←c69116)+189)/* var←c63644 */ ))+40) ); segGen←v18172 = (word) ( *( (fPt) ((* (ptr) pd87 ))))(trajData←v18256, pd87); }; SOURCE(7025, 262) { register word seg←v18300; { word pd88; pd88 = (* (( (ptr) (* (( (ptr) gf←c69116)+189)/* var←c63644 */ ))+46) ); seg←v18300 = (word) ( *( (fPt) ((* (ptr) pd88 ))))(segGen←v18172, pd88); }; lab←L100003: ; if ((seg←v18300 != 0)) { } else { goto lab←L100000; }; SOURCE(7126, 43) (void) SetSegmentField←P3420(seg←v18300, selected←v8304, selectClass←v8332); SOURCE(7171, 116) { register word i←v18344 = 0; register word noName←c63676; { word pd89; pd89 = (* (( (ptr) (* (ptr) seg←v18300 ))+17) ); noName←c63676 = (word) ( *( (fPt) ((* (ptr) pd89 ))))(seg←v18300, pd89); }; if ((i←v18344 >= noName←c63676)) { goto lab←L100004; }; lab←L100007: ; SOURCE(7226, 61) { word pd90; pd90 = (* (( (ptr) (* (ptr) seg←v18300 ))+14) ); (void) ( *( (fPt) ((* (ptr) pd90 ))))(seg←v18300, i←v18344, selected←v8304, selectClass←v8332, pd90); }; i←v18344 = (i←v18344 + 1); if ((i←v18344 < noName←c63676)) { goto lab←L100007; }; lab←L100004: ; }; { word pd91; pd91 = (* (( (ptr) (* (( (ptr) gf←c69116)+189)/* var←c63644 */ ))+46) ); seg←v18300 = (word) ( *( (fPt) ((* (ptr) pd91 ))))(segGen←v18172, pd91); }; goto lab←L100003; lab←L100000: ; }; SOURCE(7307, 44) { word pd92; pd92 = (* (( (ptr) (* (( (ptr) gf←c69116)+189)/* var←c63644 */ ))+56) ); jointGen←v18200 = (word) ( *( (fPt) ((* (ptr) pd92 ))))(trajData←v18256, pd92); }; SOURCE(7353, 185) { register word jointNum←v18388; { word pd93; pd93 = (* (( (ptr) (* (( (ptr) gf←c69116)+189)/* var←c63644 */ ))+61) ); jointNum←v18388 = (word) ( *( (fPt) ((* (ptr) pd93 ))))(jointGen←v18200, pd93); }; lab←L100011: ; if (( (int)jointNum←v18388 != (int) (word) -1)) { } else { goto lab←L100008; }; SOURCE(7459, 34) joint←v18228 = (word) FetchJoint←P1860(traj←v8276, SGNCK(jointNum←v18388)); SOURCE(7495, 43) (void) SetJointField←P3360(joint←v18228, selected←v8304, selectClass←v8332); { word pd94; pd94 = (* (( (ptr) (* (( (ptr) gf←c69116)+189)/* var←c63644 */ ))+61) ); jointNum←v18388 = (word) ( *( (fPt) ((* (ptr) pd94 ))))(jointGen←v18200, pd94); }; goto lab←L100011; lab←L100008: ; }; } static word ReplaceFirstRun←P420(trajD←v8392, runProc←v8420, segmentsOnly←v8448, selectNewRuns←v8476) word trajD←v8392; word runProc←v8420; word segmentsOnly←v8448; word selectNewRuns←v8476; { register ptr gf←c69148 = (ptr) &globalframe; word newOutline←v8520; /* ReplaceFirstRun: */ SOURCE(7553, 1020) SOURCE(7553, 1020) newOutline←v8520 = 0; SOURCE(7696, 877) SOURCE(7698, 42) { word trajParts←v18432; word traj←v18460; word run←v18488 = 0; word runParts←v18516 = 0; word oldOutline←v18544; SOURCE(7698, 42) trajParts←v18432 = XR←Narrow((* (( (ptr) trajD←v8392)+1) ), (* (( (ptr) gf←c69148)+18) )); SOURCE(7742, 25) traj←v18460 = (* (ptr) trajD←v8392 ); SOURCE(7812, 44) { word pd95; pd95 = (* (( (ptr) (* (( (ptr) gf←c69148)+190)/* var←c63708 */ ))+64) ); oldOutline←v18544 = (word) ( *( (fPt) ((* (ptr) pd95 ))))(traj←v18460, pd95); }; SOURCE(7859, 266) { word pd96; pd96 = (* (( (ptr) (* (( (ptr) gf←c69148)+189)/* var←c63644 */ ))+26) ); if ((0 != (word) ( *( (fPt) ((* (ptr) pd96 ))))(trajParts←v18432, pd96))) { SOURCE(7902, 11) run←v18488 = trajD←v8392; SOURCE(7915, 20) runParts←v18516 = trajParts←v18432; } else { SOURCE(7946, 41) { word pd97; pd97 = (* (( (ptr) (* (( (ptr) gf←c69148)+189)/* var←c63644 */ ))+39) ); runParts←v18516 = (word) ( *( (fPt) ((* (ptr) pd97 ))))(trajParts←v18432, pd97); }; SOURCE(7989, 23) if ((runParts←v18516 == 0)) { SOURCE(8012, 21) goto lab←L100012; }; SOURCE(8076, 49) { word pd98; pd98 = (* (( (ptr) (* (( (ptr) gf←c69148)+184)/* var←c62588 */ ))+8) ); run←v18488 = (word) ( *( (fPt) ((* (ptr) pd98 ))))(traj←v18460, runParts←v18516, pd98); }; }; }; SOURCE(8131, 288) if (((* (( (ptr) runParts←v18516)+3) ) > 0) || (0 == segmentsOnly←v8448)) { SOURCE(8179, 242) { word newRun←v18588; SOURCE(8181, 28) newRun←v18588 = (word) ( *( (fPt) ((* (ptr) runProc←v8420 ))))(run←v18488, runProc←v8420); SOURCE(8211, 149) if ((newRun←v18588 != 0)) { SOURCE(8232, 39) (void) SetSelectionBits←P360(newRun←v18588, 0, 2); SOURCE(8300, 60) if ((0 != selectNewRuns←v8476)) { SOURCE(8322, 38) (void) SetSelectionBits←P360(newRun←v18588, 1, 0); }; }; SOURCE(8365, 54) { word var←c63740; var←c63740 = (word) SpliceIn←P1020(run←v18488, newRun←v18588); { word pd99; pd99 = (* (( (ptr) (* (( (ptr) gf←c69148)+190)/* var←c63708 */ ))+64) ); newOutline←v8520 = (word) ( *( (fPt) ((* (ptr) pd99 ))))(var←c63740, pd99); }; }; }; } else { SOURCE(8428, 21) goto lab←L100012; }; }; goto lab←L100013; lab←L100012: ; SOURCE(8479, 44) (void) SetSelectionBits←P360((* (ptr) trajD←v8392 ), 0, 2); SOURCE(8552, 16) newOutline←v8520 = 0; lab←L100013: ; SOURCE(7553, 1020) return(newOutline←v8520); } static void SegToSegMatchCp←P480(seg←v8580, traj←v8608, makeCurve←v8636, type←v8664) word seg←v8580; word traj←v8608; word makeCurve←v8636; word type←v8664; { register ptr gf←c69180 = (ptr) &globalframe; word tSeg←v18632 = 0; word success←v18660 = 0; /* SegToSegMatchCp: */ SOURCE(8577, 1364) SOURCE(8714, 1202) if (((* (ptr) (* (ptr) seg←v8580 ) ) == type←v8664)) { SOURCE(8790, 216) if ((type←v8664 == (* (( (ptr) gf←c69180)+28) ))) { SOURCE(8814, 43) tSeg←v18632 = (word) ( *( (fPt) ((* (ptr) makeCurve←v8636 ))))((* (W2Pt) (( (ptr) seg←v8580)+9) ), (* (W2Pt) (( (ptr) seg←v8580)+11) ), (* (( (ptr) seg←v8580)+25) ), makeCurve←v8636); SOURCE(8859, 71) { W2 var←c63772; { word pd100; pd100 = (* (( (ptr) (* (ptr) seg←v8580 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd100 ))))((word) &var←c63772, seg←v8580, 0, pd100); }; { word pd101; pd101 = (* (( (ptr) (* (( (ptr) gf←c69180)+187)/* var←c62940 */ ))+13) ); (void) ( *( (fPt) ((* (ptr) pd101 ))))(tSeg←v18632, var←c63772, pd101); }; }; SOURCE(8932, 30) { word pd102; pd102 = (* (( (ptr) (* (( (ptr) gf←c69180)+187)/* var←c62940 */ ))+18) ); (void) ( *( (fPt) ((* (ptr) pd102 ))))(seg←v8580, tSeg←v18632, pd102); }; } else { SOURCE(8973, 33) { word pd103; pd103 = (* (( (ptr) (* (( (ptr) gf←c69180)+187)/* var←c62940 */ ))+17) ); tSeg←v18632 = (word) ( *( (fPt) ((* (ptr) pd103 ))))(seg←v8580, pd103); }; }; SOURCE(9011, 40) success←v18660 = (word) AddSegment←P180(traj←v8608, 1, tSeg←v18632, 0); } else { SOURCE(9060, 856) { word tc104; word pd105; if ((type←v8664 == (* (( (ptr) gf←c69180)+26) ))) { pd105 = (* (( (ptr) (* (ptr) seg←v8580 ))+17) ); tc104 = (word) ((word) ( *( (fPt) ((* (ptr) pd105 ))))(seg←v8580, pd105) == 1); } else { tc104 = (word) 0; }; if (tc104) { SOURCE(9221, 86) { W2 var←c63804; { word pd106; pd106 = (* (( (ptr) (* (ptr) seg←v8580 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd106 ))))((word) &var←c63804, seg←v8580, 0, pd106); }; { word pd107; pd107 = (* (( (ptr) (* (( (ptr) gf←c69180)+187)/* var←c62940 */ ))+8) ); tSeg←v18632 = (word) ( *( (fPt) ((* (ptr) pd107 ))))((* (W2Pt) (( (ptr) seg←v8580)+9) ), var←c63804, (* (W2Pt) (( (ptr) seg←v8580)+11) ), (* (( (ptr) seg←v8580)+25) ), pd107); }; }; SOURCE(9309, 30) { word pd108; pd108 = (* (( (ptr) (* (( (ptr) gf←c69180)+187)/* var←c62940 */ ))+18) ); (void) ( *( (fPt) ((* (ptr) pd108 ))))(seg←v8580, tSeg←v18632, pd108); }; SOURCE(9341, 42) success←v18660 = (word) AddSegment←P180(traj←v8608, 1, tSeg←v18632, 0); } else { SOURCE(9390, 526) { word tc109; word pd110; if ((type←v8664 == (* (( (ptr) gf←c69180)+28) ))) { pd110 = (* (( (ptr) (* (ptr) seg←v8580 ))+17) ); tc109 = (word) ((word) ( *( (fPt) ((* (ptr) pd110 ))))(seg←v8580, pd110) == 1); } else { tc109 = (word) 0; }; if (tc109) { SOURCE(9548, 43) tSeg←v18632 = (word) ( *( (fPt) ((* (ptr) makeCurve←v8636 ))))((* (W2Pt) (( (ptr) seg←v8580)+9) ), (* (W2Pt) (( (ptr) seg←v8580)+11) ), (* (( (ptr) seg←v8580)+25) ), makeCurve←v8636); SOURCE(9593, 71) { W2 var←c63836; { word pd111; pd111 = (* (( (ptr) (* (ptr) seg←v8580 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd111 ))))((word) &var←c63836, seg←v8580, 0, pd111); }; { word pd112; pd112 = (* (( (ptr) (* (( (ptr) gf←c69180)+187)/* var←c62940 */ ))+13) ); (void) ( *( (fPt) ((* (ptr) pd112 ))))(tSeg←v18632, var←c63836, pd112); }; }; SOURCE(9666, 30) { word pd113; pd113 = (* (( (ptr) (* (( (ptr) gf←c69180)+187)/* var←c62940 */ ))+18) ); (void) ( *( (fPt) ((* (ptr) pd113 ))))(seg←v8580, tSeg←v18632, pd113); }; SOURCE(9698, 41) success←v18660 = (word) AddSegment←P180(traj←v8608, 1, tSeg←v18632, 0); } else { SOURCE(9799, 43) tSeg←v18632 = (word) ( *( (fPt) ((* (ptr) makeCurve←v8636 ))))((* (W2Pt) (( (ptr) seg←v8580)+9) ), (* (W2Pt) (( (ptr) seg←v8580)+11) ), (* (( (ptr) seg←v8580)+25) ), makeCurve←v8636); SOURCE(9844, 30) { word pd114; pd114 = (* (( (ptr) (* (( (ptr) gf←c69180)+187)/* var←c62940 */ ))+18) ); (void) ( *( (fPt) ((* (ptr) pd114 ))))(seg←v8580, tSeg←v18632, pd114); }; SOURCE(9876, 40) success←v18660 = (word) AddSegment←P180(traj←v8608, 1, tSeg←v18632, 0); }; }; }; }; }; SOURCE(9921, 20) if ((0 == success←v18660)) { SOURCE(9941, 5) (void) XR←RaiseUnnamedError(); }; } static void SegAndCpsToSegs←P540(seg←v8724, traj←v8752, makeCurve←v8780, type←v8808) word seg←v8724; word traj←v8752; word makeCurve←v8780; word type←v8808; { register ptr gf←c69212 = (ptr) &globalframe; word success←v18704 = 0; /* SegAndCpsToSegs: */ SOURCE(9952, 876) SOURCE(10074, 754) if (((* (ptr) (* (ptr) seg←v8724 ) ) == type←v8808)) { SOURCE(10165, 68) { word var←c63868; { word pd115; pd115 = (* (( (ptr) (* (( (ptr) gf←c69212)+187)/* var←c62940 */ ))+17) ); var←c63868 = (word) ( *( (fPt) ((* (ptr) pd115 ))))(seg←v8724, pd115); }; success←v18704 = (word) AddSegment←P180(traj←v8752, 1, var←c63868, 0); }; } else { SOURCE(10233, 602) { word tSeg←v18748 = 0; W2 last←v18776; W2 next←v18804; SOURCE(10329, 26) last←v18776 = (* (W2Pt) (( (ptr) seg←v8724)+9) ); next←v18804 = last←v18776; SOURCE(10357, 286) { register word i←v18848 = 0; register word noName←c63900; { word pd116; pd116 = (* (( (ptr) (* (ptr) seg←v8724 ))+17) ); noName←c63900 = (word) ( *( (fPt) ((* (ptr) pd116 ))))(seg←v8724, pd116); }; if (( (int)i←v18848 >= (int)noName←c63900)) { goto lab←L100014; }; lab←L100017: ; SOURCE(10411, 40) { word pd117; pd117 = (* (( (ptr) (* (ptr) seg←v8724 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd117 ))))((word) &next←v18804, seg←v8724, SGNCK(i←v18848), pd117); }; SOURCE(10453, 39) tSeg←v18748 = (word) ( *( (fPt) ((* (ptr) makeCurve←v8780 ))))(last←v18776, next←v18804, (* (( (ptr) seg←v8724)+25) ), makeCurve←v8780) ; SOURCE(10494, 30) { word pd118; pd118 = (* (( (ptr) (* (( (ptr) gf←c69212)+187)/* var←c62940 */ ))+18) ); (void) ( *( (fPt) ((* (ptr) pd118 ))))(seg←v8724, tSeg←v18748, pd118); }; SOURCE(10563, 40) success←v18704 = (word) AddSegment←P180(traj←v8752, 1, tSeg←v18748, 0); SOURCE(10605, 20) if ((0 == success←v18704)) { SOURCE(10625, 5) (void) XR←RaiseUnnamedError(); }; SOURCE(10632, 11) last←v18776 = next←v18804; i←v18848 = (i←v18848 + 1); if (( (int)i←v18848 < (int)noName←c63900)) { goto lab←L100017; }; lab←L100014: ; }; SOURCE(10654, 41) tSeg←v18748 = (word) ( *( (fPt) ((* (ptr) makeCurve←v8780 ))))(last←v18776, (* (W2Pt) (( (ptr) seg←v8724)+11) ), (* (( (ptr) seg←v8724)+25) ), makeCurve←v8780); SOURCE(10697, 30) { word pd119; pd119 = (* (( (ptr) (* (( (ptr) gf←c69212)+187)/* var←c62940 */ ))+18) ); (void) ( *( (fPt) ((* (ptr) pd119 ))))(seg←v8724, tSeg←v18748, pd119); }; SOURCE(10766, 40) success←v18704 = (word) AddSegment←P180(traj←v8752, 1, tSeg←v18748, 0); SOURCE(10808, 20) if ((0 == success←v18704)) { SOURCE(10828, 5) (void) XR←RaiseUnnamedError(); }; }; }; } static word DeleteControlPoints←P600(trajD←v8868, scene←v8896) word trajD←v8868; word scene←v8896; { register ptr gf←c69244 = (ptr) &globalframe; word bBox←v8940; word trajData←v18892; word trajParts←v18920; word outlineOfTraj←v18948; /* DeleteControlPoints: */ SOURCE(10842, 1138) SOURCE(10842, 1138) bBox←v8940 = 0; SOURCE(10943, 45) trajData←v18892 = XR←Narrow((* (( (ptr) (* (ptr) trajD←v8868 ))+1) ), (* (( (ptr) gf←c69244)+6) )); SOURCE(10990, 42) trajParts←v18920 = XR←Narrow((* (( (ptr) trajD←v8868)+1) ), (* (( (ptr) gf←c69244)+18) )); SOURCE(11034, 54) { word pd120; pd120 = (* (( (ptr) (* (( (ptr) gf←c69244)+190)/* var←c63708 */ ))+64) ); outlineOfTraj←v18948 = (word) ( *( (fPt) ((* (ptr) pd120 ))))((* (ptr) (trajD←v8868) ), pd120); }; SOURCE(11090, 33) { word pd121; pd121 = (* (( (ptr) (* (( (ptr) gf←c69244)+184)/* var←c62588 */ ))+68) ); (void) ( *( (fPt) ((* (ptr) pd121 ))))((* (ptr) (trajD←v8868) ), pd121); }; SOURCE(11125, 38) (void) SaveSelection←P2760((* (ptr) trajD←v8868 ), 1, scene←v8896); SOURCE(11207, 41) (void) SaveSelection←P2760((* (ptr) trajD←v8868 ), 0, scene←v8896); SOURCE(11250, 644) { register word i←v18992 = 0; register word noName←c63932; word var←c63964; word var←c64028; noName←c63932 = (* (( (ptr) trajData←v18892)+1) ); if (( (int)i←v18992 >= (int)noName←c63932)) { goto lab←L100018; }; lab←L100021: ; SOURCE(11290, 604) { word tc122; word pd123; word limit124; word limit125; var←c63964 = (* (( (ptr) trajParts←v18920)+2) ); pd123 = (* (( (ptr) (* (( (ptr) gf←c69244)+191)/* var←c63996 */ ))+34) ); if ((0 == (word) ( *( (fPt) ((* (ptr) pd123 ))))((* (((( (ptr) var←c63964)+1)+( limit124 = (* (ptr) var←c63964 ), BCK(i←v18992, limit124) ))) ), pd123))) { var←c64028 = (* (ptr) trajParts←v18920 ); tc122 = (word) ! XR←ExtractField(var←c64028, 32 + (word) ( limit125 = (* (ptr) var←c64028 ), BCK(i←v18992, limit125) ), 1); } else { tc122 = (word) 0; }; if (tc122) { SOURCE(11379, 520) { word oldSeg←v19036; SOURCE(11381, 46) oldSeg←v19036 = (word) FetchSegment←P1740((* (ptr) trajD←v8868 ), SGNCK(i←v18992)); SOURCE(11429, 465) if (((* (ptr) (* (ptr) oldSeg←v19036 ) ) == (* (( (ptr) gf←c69244)+25) ))) { SOURCE(11470, 314) { word newSeg←v19080; word newRun←v19108; SOURCE(11472, 84) { word var←c64060; word var←c0995; var←c64060 = (* (( (ptr) trajParts←v18920)+2) ); { word limit126; var←c0995 = (* ((( (ptr) var←c64060)+1)+( /*1*/ limit126 = (* (ptr) var←c64060 ), /*1*/ BCK(i←v18992, limit126) /*1*/ )) ); }; { word pd127; pd127 = (* (( (ptr) (* (( (ptr) gf←c69244)+187)/* var←c62940 */ ))+31) ); newSeg←v19080 = (word) ( *( (fPt) ((* (ptr) pd127 ))))(oldSeg←v19036, var←c0995, pd127); }; }; SOURCE(11558, 37) newRun←v19108 = (word) CreateTraj←P120((* (W2Pt) ((( (ptr) newSeg←v19080)+9)) )); SOURCE(11597, 65) { word pd128; pd128 = (* (( (ptr) (* (( (ptr) gf←c69244)+192)/* var←c64092 */ ))+57) ); (void) ( *( (fPt) ((* (ptr) pd128 ))))(newRun←v19108, 0, (* (( (ptr) trajData←v18892)+6) ), 0, pd128); }; SOURCE(11664, 47) if ((0 == (word) AddSegment←P180(newRun←v19108, 1, newSeg←v19080, 0))) { SOURCE(11711, 5) (void) XR←RaiseUnnamedError(); }; SOURCE(11718, 66) { W2 var←c64156; { word pd129; pd129 = (* (( (ptr) (* (( (ptr) gf←c69244)+193)/* var←c64124 */ ))+23) ); (void) ( *( (fPt) ((* (ptr) pd129 ))))((word) &var←c64156, (* (ptr) trajD←v8868 ), SGNCK(i←v18992), newRun←v19108, scene←v8896, pd129) ; }; }; }; } else { SOURCE(11793, 101) { word pd130; pd130 = (* (( (ptr) (* (( (ptr) gf←c69244)+194)/* var←c64188 */ ))+4) ); (void) ( *( (fPt) ((* (ptr) pd130 ))))((* (( (ptr) gf←c69244)+22) ), 0, (* (( (ptr) gf←c69244)+23) ), (* (( (ptr) gf←c69244)+24) ), pd130); }; }; }; }; }; i←v18992 = (i←v18992 + 1); if (( (int)i←v18992 < (int)noName←c63932)) { goto lab←L100021; }; lab←L100018: ; }; SOURCE(11911, 69) { word var←c64220; { word pd131; pd131 = (* (( (ptr) (* (( (ptr) gf←c69244)+192)/* var←c64092 */ ))+7) ); var←c64220 = (word) ( *( (fPt) ((* (ptr) pd131 ))))(outlineOfTraj←v18948, 0, pd131); }; { word pd132; pd132 = (* (( (ptr) (* (( (ptr) gf←c69244)+185)/* var←c62652 */ ))+7) ); bBox←v8940 = (word) ( *( (fPt) ((* (ptr) pd132 ))))(var←c64220, pd132); }; }; SOURCE(10842, 1138) return(bBox←v8940); } static void DeleteSequence←P660(formal←c0246, seq←v9000) word formal←c0246; word seq←v9000; { register ptr gf←c69276 = (ptr) &globalframe; word smallerOutline←v9044; word openTrajOutlines←v9072; word traj←v19152; word trajData←v19180; word trajParts←v19208; word oldOutline←v19236; /* DeleteSequence: */ SOURCE(11986, 582) SOURCE(11986, 582) smallerOutline←v9044 = 0; SOURCE(11986, 582) openTrajOutlines←v9072 = 0; SOURCE(12106, 23) traj←v19152 = (* (ptr) seq←v9000 ); SOURCE(12131, 38) trajData←v19180 = XR←Narrow((* (( (ptr) traj←v19152)+1) ), (* (( (ptr) gf←c69276)+6) )); SOURCE(12171, 40) trajParts←v19208 = XR←Narrow((* (( (ptr) seq←v9000)+1) ), (* (( (ptr) gf←c69276)+18) )); SOURCE(12213, 44) { word pd133; pd133 = (* (( (ptr) (* (( (ptr) gf←c69276)+190)/* var←c63708 */ ))+64) ); oldOutline←v19236 = (word) ( *( (fPt) ((* (ptr) pd133 ))))(traj←v19152, pd133); }; SOURCE(12260, 308) { word var←c64252; var←c64252 = (* (ptr) trajData←v19180 ); switch (var←c64252) { case 0: case 1: SOURCE(12303, 51) openTrajOutlines←v9072 = (word) OutlinesOfTrajMinusSequence←P720(seq←v9000); SOURCE(12390, 62) { word pd134; pd134 = (* (( (ptr) (* (( (ptr) gf←c69276)+195)/* var←c64284 */ ))+8) ); smallerOutline←v9044 = (word) ( *( (fPt) ((* (ptr) pd134 ))))(oldOutline←v19236, traj←v19152, 0, pd134); }; break; case 2: SOURCE(12495, 51) openTrajOutlines←v9072 = (word) OutlinesOfTrajMinusSequence←P720(seq←v9000); SOURCE(12548, 20) smallerOutline←v9044 = 0; break; default: SOURCE(12584, 5) (void) XR←RaiseUnnamedError(); break; }; }; /* removed tail goto */ (* (ptr) formal←c0246 ) = smallerOutline←v9044; (* (( (ptr) formal←c0246)+1) ) = openTrajOutlines←v9072; return; } static word OutlinesOfTrajMinusSequence←P720(seq←v9216) word seq←v9216; { register ptr gf←c69308 = (ptr) &globalframe; word newOutlines←v9260; word keepParts←v19280 = 0; word wholeTrajParts←v19308 = 0; word traj←v19336; word trajData←v19364; word trajParts←v19392; /* OutlinesOfTrajMinusSequence: */ SOURCE(12595, 610) SOURCE(12595, 610) newOutlines←v9260 = 0; SOURCE(12748, 23) traj←v19336 = (* (ptr) seq←v9216 ); SOURCE(12773, 38) trajData←v19364 = XR←Narrow((* (( (ptr) traj←v19336)+1) ), (* (( (ptr) gf←c69308)+6) )); SOURCE(12813, 40) trajParts←v19392 = XR←Narrow((* (( (ptr) seq←v9216)+1) ), (* (( (ptr) gf←c69308)+18) )); SOURCE(12856, 52) { word pd135; pd135 = (* (( (ptr) (* (( (ptr) gf←c69308)+189)/* var←c63644 */ ))+26) ); if ((0 != (word) ( *( (fPt) ((* (ptr) pd135 ))))(trajParts←v19392, pd135))) { SOURCE(12897, 11) return(0); }; }; SOURCE(12910, 52) { word pd136; pd136 = (* (( (ptr) (* (( (ptr) gf←c69308)+189)/* var←c63644 */ ))+7) ); wholeTrajParts←v19308 = (word) ( *( (fPt) ((* (ptr) pd136 ))))(trajData←v19364, pd136); }; SOURCE(12964, 112) { word tc137; word pd138; pd138 = (* (( (ptr) (* (( (ptr) gf←c69308)+189)/* var←c63644 */ ))+25) ); if ((0 == (word) ( *( (fPt) ((* (ptr) pd138 ))))(trajParts←v19392, pd138))) { tc137 = (word) ((* (( (ptr) trajData←v19364)+1) ) == 1); } else { tc137 = (word) 0; }; if (tc137) { SOURCE(13030, 46) { word var←c64316; var←c64316 = (word) FetchSegment←P1740(traj←v19336, 0); { word pd139; pd139 = (* (( (ptr) (* (( (ptr) gf←c69308)+187)/* var←c62940 */ ))+23) ); (void) ( *( (fPt) ((* (ptr) pd139 ))))(var←c64316, pd139); }; }; }; }; SOURCE(13078, 89) { word var←c64348; { word pd140; pd140 = (* (( (ptr) (* (( (ptr) gf←c69308)+184)/* var←c62588 */ ))+8) ); var←c64348 = (word) ( *( (fPt) ((* (ptr) pd140 ))))(traj←v19336, wholeTrajParts←v19308, pd140); }; { word pd141; pd141 = (* (( (ptr) (* (( (ptr) gf←c69308)+189)/* var←c63644 */ ))+21) ); keepParts←v19280 = (word) ( *( (fPt) ((* (ptr) pd141 ))))(var←c64348, seq←v9216, pd141); }; }; SOURCE(13169, 36) newOutlines←v9260 = (word) GroupPieces←P780(keepParts←v19280); SOURCE(12595, 610) return(newOutlines←v9260); } static word GroupPieces←P780(seq←v9404) word seq←v9404; { register ptr gf←c69340 = (ptr) &globalframe; word newOutlines←v9448; word seqTraj←v19436; word seqData←v19464; word seqParts←v19492; word seqGen←v19520 = 0; word newTraj←v19548 = 0; word newTrajData←v19576 = 0; word newOutline←v19604 = 0; word oldOutline←v19632 = 0; word joint←v19660 = 0; /* GroupPieces: */ SOURCE(13211, 968) SOURCE(13211, 968) newOutlines←v9448 = 0; SOURCE(13293, 26) seqTraj←v19436 = (* (ptr) seq←v9404 ); SOURCE(13321, 40) seqData←v19464 = XR←Narrow((* (( (ptr) seqTraj←v19436)+1) ), (* (( (ptr) gf←c69340)+6) )); SOURCE(13363, 39) seqParts←v19492 = XR←Narrow((* (( (ptr) seq←v9404)+1) ), (* (( (ptr) gf←c69340)+18) )); SOURCE(13516, 40) { word pd142; pd142 = (* (( (ptr) (* (( (ptr) gf←c69340)+190)/* var←c63708 */ ))+64) ); oldOutline←v19632 = (word) ( *( (fPt) ((* (ptr) pd142 ))))(seqTraj←v19436, pd142); }; SOURCE(13558, 52) { W2 var←c64380; { word pd143; pd143 = (* (( (ptr) (* (( (ptr) gf←c69340)+189)/* var←c63644 */ ))+37) ); (void) ( *( (fPt) ((* (ptr) pd143 ))))((word) &var←c64380, seqParts←v19492, pd143); }; seqGen←v19520 = var←c64380.f0; }; SOURCE(13612, 567) { register word run←v19704; { word pd144; pd144 = (* (( (ptr) (* (( (ptr) gf←c69340)+189)/* var←c63644 */ ))+38) ); run←v19704 = (word) ( *( (fPt) ((* (ptr) pd144 ))))(seqGen←v19520, pd144); }; lab←L100026: ; if ((run←v19704 != 0)) { } else { goto lab←L100023; }; SOURCE(13717, 23) if (((* (( (ptr) run←v19704)+3) ) == 0)) { SOURCE(13740, 4) goto lab←L100025; }; SOURCE(13784, 39) newTraj←v19548 = (word) CopyTrajFromRun←P840(seqTraj←v19436, run←v19704); SOURCE(13825, 30) joint←v19660 = (word) FetchJoint←P1860(newTraj←v19548, 0); SOURCE(13857, 36) (* (( (ptr) joint←v19660)+4) ) = 0; SOURCE(13895, 45) { word var←c64412; var←c64412 = (word) HiJoint←P2340(newTraj←v19548); joint←v19660 = (word) FetchJoint←P1860(newTraj←v19548, var←c64412); }; SOURCE(13942, 36) (* (( (ptr) joint←v19660)+4) ) = 0; SOURCE(13980, 34) newTrajData←v19576 = XR←Narrow((* (( (ptr) newTraj←v19548)+1) ), (* (( (ptr) gf←c69340)+6) )); SOURCE(14016, 23) (* (ptr) newTrajData←v19576 ) = 2; SOURCE(14041, 93) { W2 var←c0272; word var←c64444; { word pd145; pd145 = (* (( (ptr) (* (( (ptr) gf←c69340)+192)/* var←c64092 */ ))+62) ); (void) ( *( (fPt) ((* (ptr) pd145 ))))((word) &var←c0272, oldOutline←v19632, 0, pd145); }; var←c64444 = var←c0272.f0; { word pd146; pd146 = (* (( (ptr) (* (( (ptr) gf←c69340)+195)/* var←c64284 */ ))+5) ); newOutline←v19604 = (word) ( *( (fPt) ((* (ptr) pd146 ))))(newTraj←v19548, var←c64444, pd146); }; }; SOURCE(14136, 43) { word var←c64476; var←c64476 = XR←NewObject(8, (* (( (ptr) gf←c69340)+21) )); (* (ptr) var←c64476 ) = newOutline←v19604; (* (( (ptr) var←c64476)+1) ) = newOutlines←v9448; newOutlines←v9448 = var←c64476; }; lab←L100025: ; { word pd147; pd147 = (* (( (ptr) (* (( (ptr) gf←c69340)+189)/* var←c63644 */ ))+38) ); run←v19704 = (word) ( *( (fPt) ((* (ptr) pd147 ))))(seqGen←v19520, pd147); }; goto lab←L100026; lab←L100023: ; }; SOURCE(13211, 968) return(newOutlines←v9448); } static word CopyTrajFromRun←P840(slice←v9592, run←v9620) word slice←v9592; word run←v9620; { W14 var←c69372; register ptr gf←c69404 = (ptr) &globalframe; word copy←v9664; /* declaration of var←c64508 skipped */ /* declaration of var←c64540 skipped */ word trajData←v19748; word trajParts←v19776; word originalSegments←v19804; /* declaration of desiredSegments←v19832 skipped */ word loSegments←v19860 = 0; word hiSegments←v19888 = 0; word extractedSegments←v19916 = 0; word originalJoints←v19944; /* declaration of desiredJoints←v19972 skipped */ word loJoints←v20000 = 0; word hiJoints←v20028 = 0; word extractedJoints←v20056 = 0; word segGen←v20084 = 0; W2 next←v20112; word s1←v20140; word len1←v20168; word s2←v20196; word len2←v20224; word jointCount←v20252; word newRole←v20280; /* CopyTrajFromRun: */ SOURCE(14194, 2769) { word tmpAddr148; tmpAddr148 = (word) (( (ptr) &var←c69372)+4)/* var←c64508 */ ; (* (ptr) tmpAddr148 ) = ( ((word) (fPt) CopyEachJoint←P5028) ); (* (( (ptr) tmpAddr148) + 1) ) = 1; }; { word tmpAddr149; tmpAddr149 = (word) (( (ptr) &var←c69372)+6)/* var←c64540 */ ; (* (ptr) tmpAddr149 ) = ( ((word) (fPt) CopyEachSegment←P4968) ); (* (( (ptr) tmpAddr149) + 1) ) = 1; }; SOURCE(14194, 2769) copy←v9664 = 0; SOURCE(14280, 39) trajData←v19748 = XR←Narrow((* (( (ptr) slice←v9592)+1) ), (* (( (ptr) gf←c69404)+6) )); SOURCE(14321, 26) trajParts←v19776 = run←v9620; SOURCE(14349, 51) originalSegments←v19804 = (* (( (ptr) trajData←v19748)+2) ); SOURCE(14402, 31) (* (( (ptr) &var←c69372)+8) ) = 0; (* (( (ptr) &var←c69372)+9) ) = 0; (* (( (ptr) &var←c69372)+10) ) = 2147483647; SOURCE(14493, 47) originalJoints←v19944 = (* (( (ptr) trajData←v19748)+3) ); SOURCE(14542, 29) (* (( (ptr) &var←c69372)+11) ) = 0; (* (( (ptr) &var←c69372)+12) ) = 0; (* (( (ptr) &var←c69372)+13) ) = 2147483647; SOURCE(14651, 28) next←v20112.f0 = 0; next←v20112.f1 = 0; SOURCE(15366, 66) { word pd150; pd150 = (* (( (ptr) (* (( (ptr) gf←c69404)+189)/* var←c63644 */ ))+45) ); segGen←v20084 = (word) ( *( (fPt) ((* (ptr) pd150 ))))(trajData←v19748, trajParts←v19776, pd150); }; SOURCE(15434, 45) { word pd151; pd151 = (* (( (ptr) (* (( (ptr) gf←c69404)+189)/* var←c63644 */ ))+47) ); (void) ( *( (fPt) ((* (ptr) pd151 ))))((word) &next←v20112, segGen←v20084, pd151); }; SOURCE(15481, 103) { W4 var←c64700; { word pd152; pd152 = (* (( (ptr) (* (( (ptr) gf←c69404)+196)/* var←c64668 */ ))+32) ); (void) ( *( (fPt) ((* (ptr) pd152 ))))((word) &var←c64700, next←v20112.f1, (* (( (ptr) trajParts←v19776)+3) ), (* (( (ptr) trajData←v19748)+1) ), pd152); }; len2←v20224 = var←c64700.f3; s2←v20196 = var←c64700.f2; len1←v20168 = var←c64700.f1; s1←v20140 = var←c64700.f0; }; SOURCE(15586, 398) if (( (int)s2←v20196 != (int) (word) -1)) { SOURCE(15604, 46) (* (( (ptr) &var←c69372)+8) ) = originalSegments←v19804; (* (( (ptr) &var←c69372)+9) ) = s1←v20140; (* (( (ptr) &var←c69372)+10) ) = len1←v20168; SOURCE(15652, 45) { word pd153; pd153 = (* (( (ptr) (* (( (ptr) gf←c69404)+186)/* var←c62748 */ ))+12) ); loSegments←v19860 = (word) ( *( (fPt) ((* (ptr) pd153 ))))((word) ((( (bPt) &var←c69372)+24)/* var←c64540 */ ), pd153); }; SOURCE(15699, 46) (* (( (ptr) &var←c69372)+8) ) = originalSegments←v19804; (* (( (ptr) &var←c69372)+9) ) = s2←v20196; (* (( (ptr) &var←c69372)+10) ) = len2←v20224; SOURCE(15747, 45) { word pd154; pd154 = (* (( (ptr) (* (( (ptr) gf←c69404)+186)/* var←c62748 */ ))+12) ); hiSegments←v19888 = (word) ( *( (fPt) ((* (ptr) pd154 ))))((word) ((( (bPt) &var←c69372)+24)/* var←c64540 */ ), pd154); }; SOURCE(15794, 57) { word pd155; pd155 = (* (( (ptr) (* (( (ptr) gf←c69404)+186)/* var←c62748 */ ))+8) ); extractedSegments←v19916 = (word) ( *( (fPt) ((* (ptr) pd155 ))))(hiSegments←v19888, loSegments←v19860, pd155); }; } else { SOURCE(15862, 68) (* (( (ptr) &var←c69372)+8) ) = originalSegments←v19804; (* (( (ptr) &var←c69372)+9) ) = next←v20112.f1; (* (( (ptr) &var←c69372)+10) ) = (* (( (ptr) trajParts←v19776)+3) ); SOURCE(15932, 52) { word pd156; pd156 = (* (( (ptr) (* (( (ptr) gf←c69404)+186)/* var←c62748 */ ))+12) ); extractedSegments←v19916 = (word) ( *( (fPt) ((* (ptr) pd156 ))))((word) ((( (bPt) &var←c69372)+24)/* var←c64540 */ ), pd156) ; }; }; SOURCE(15989, 35) jointCount←v20252 = ((* (( (ptr) trajParts←v19776)+3) ) + 1); SOURCE(16244, 94) { W4 var←c64764; { word var←c64732; var←c64732 = ((word) HiJoint←P2340(slice←v9592) + 1); { word pd157; pd157 = (* (( (ptr) (* (( (ptr) gf←c69404)+196)/* var←c64668 */ ))+32) ); (void) ( *( (fPt) ((* (ptr) pd157 ))))((word) &var←c64764, next←v20112.f1, jointCount←v20252, var←c64732, pd157); }; }; len2←v20224 = var←c64764.f3; s2←v20196 = var←c64764.f2; len1←v20168 = var←c64764.f1; s1←v20140 = var←c64764.f0; }; SOURCE(16340, 360) if (( (int)s2←v20196 != (int) (word) -1)) { SOURCE(16358, 42) (* (( (ptr) &var←c69372)+11) ) = originalJoints←v19944; (* (( (ptr) &var←c69372)+12) ) = s1←v20140; (* (( (ptr) &var←c69372)+13) ) = len1←v20168; SOURCE(16402, 41) { word pd158; pd158 = (* (( (ptr) (* (( (ptr) gf←c69404)+186)/* var←c62748 */ ))+12) ); loJoints←v20000 = (word) ( *( (fPt) ((* (ptr) pd158 ))))((word) ((( (bPt) &var←c69372)+16)/* var←c64508 */ ), pd158); }; SOURCE(16445, 42) (* (( (ptr) &var←c69372)+11) ) = originalJoints←v19944; (* (( (ptr) &var←c69372)+12) ) = s2←v20196; (* (( (ptr) &var←c69372)+13) ) = len2←v20224; SOURCE(16489, 41) { word pd159; pd159 = (* (( (ptr) (* (( (ptr) gf←c69404)+186)/* var←c62748 */ ))+12) ); hiJoints←v20028 = (word) ( *( (fPt) ((* (ptr) pd159 ))))((word) ((( (bPt) &var←c69372)+16)/* var←c64508 */ ), pd159); }; SOURCE(16532, 51) { word pd160; pd160 = (* (( (ptr) (* (( (ptr) gf←c69404)+186)/* var←c62748 */ ))+8) ); extractedJoints←v20056 = (word) ( *( (fPt) ((* (ptr) pd160 ))))(hiJoints←v20028, loJoints←v20000, pd160); }; } else { SOURCE(16594, 56) (* (( (ptr) &var←c69372)+11) ) = originalJoints←v19944; (* (( (ptr) &var←c69372)+12) ) = next←v20112.f1; (* (( (ptr) &var←c69372)+13) ) = jointCount←v20252; SOURCE(16652, 48) { word pd161; pd161 = (* (( (ptr) (* (( (ptr) gf←c69404)+186)/* var←c62748 */ ))+12) ); extractedJoints←v20056 = (word) ( *( (fPt) ((* (ptr) pd161 ))))((word) ((( (bPt) &var←c69372)+16)/* var←c64508 */ ), pd161) ; }; }; SOURCE(16705, 89) { word tc162; word pd163; pd163 = (* (( (ptr) (* (( (ptr) gf←c69404)+189)/* var←c63644 */ ))+26) ); if ((0 != (word) ( *( (fPt) ((* (ptr) pd163 ))))(trajParts←v19776, pd163))) { tc162 = (word) ((* (ptr) trajData←v19748 ) != 2); } else { tc162 = (word) 0; }; if (tc162) { newRole←v20280 = 0; } else { newRole←v20280 = 2; }; }; SOURCE(16796, 141) copy←v9664 = (word) CreateTrajFromData←P60(newRole←v20280, (* (( (ptr) trajParts←v19776)+3) ), extractedSegments←v19916, extractedJoints←v20056, 0, (* ( ( (ptr) trajData←v19748)+5) ) , (* (( (ptr) trajData←v19748)+6) ), 0, 0, (* (W4Pt) (( (ptr) gf←c69404)+179)/* var←c62460 */ )); SOURCE(16939, 24) (* (( (ptr) copy←v9664)+22) ) = (* (( (ptr) slice←v9592)+22) ); SOURCE(14194, 2769) return(copy←v9664); } static void CopyEachSegment←P4968(formal←c01021, formal←c69500) word formal←c01021; word formal←c69500; { W7 var←c69436; /* declaration of q←v20412 skipped */ register ptr gf←c69468 = (ptr) &globalframe; /* declaration of var←c64796 skipped */ formal←c69500 = (formal←c69500 - 24); var←c69436.f4/* q←v20412 */ = formal←c01021; var←c69436.f0 = formal←c69500; /* CopyEachSegment: */ SOURCE(14760, 306) { word tmpAddr164; tmpAddr164 = (word) (( (ptr) &var←c69436)+5)/* var←c64796 */ ; (* (ptr) tmpAddr164 ) = ( ((word) (fPt) CopySegmentAndBuild←P5088) ); (* (( (ptr) tmpAddr164) + 1) ) = 1; }; SOURCE(15013, 53) { word var←c64828; word pd165; pd165 = (* (( (ptr) (* (( (ptr) gf←c69468)+186)/* var←c62748 */ ))+13) ); var←c64828 = (word) ( *( (fPt) ((* (ptr) pd165 ))))((* (W3Pt) (( (ptr) formal←c69500)+8) ), (word) (( (bPt) &var←c69436)+20) /* var←c64796 */ , pd165); }; } static word CopySegmentAndBuild←P5088(item←v20752, formal←c69564) word item←v20752; word formal←c69564; { register ptr gf←c69532 = (ptr) &globalframe; word quit←v20796; word copy←v20824 = 0; word oldSeg←v20852 = 0; formal←c69564 = (formal←c69564 - 20); /* CopySegmentAndBuild: */ SOURCE(14832, 176) SOURCE(14832, 176) quit←v20796 = 0; SOURCE(14937, 21) oldSeg←v20852 = XR←Narrow(item←v20752, (* (( (ptr) gf←c69532)+20) )); SOURCE(14960, 36) { word pd166; pd166 = (* (( (ptr) (* (( (ptr) gf←c69532)+187)/* var←c62940 */ ))+17) ); copy←v20824 = (word) ( *( (fPt) ((* (ptr) pd166 ))))(oldSeg←v20852, pd166); }; SOURCE(14998, 10) { word pd167; pd167 = (* (( (ptr) formal←c69564)+4) ); (void) ( *( (fPt) ((* (ptr) pd167 ))))(copy←v20824, 1, pd167); }; SOURCE(14832, 176) return(quit←v20796); } static void CopyEachJoint←P5028(formal←c01022, formal←c69660) word formal←c01022; word formal←c69660; { W7 var←c69596; /* declaration of q←v20560 skipped */ register ptr gf←c69628 = (ptr) &globalframe; /* declaration of var←c64860 skipped */ formal←c69660 = (formal←c69660 - 16); var←c69596.f4/* q←v20560 */ = formal←c01022; var←c69596.f0 = formal←c69660; /* CopyEachJoint: */ SOURCE(15071, 290) { word tmpAddr168; tmpAddr168 = (word) (( (ptr) &var←c69596)+5)/* var←c64860 */ ; (* (ptr) tmpAddr168 ) = ( ((word) (fPt) CopyJointAndBuild←P5148) ); (* (( (ptr) tmpAddr168) + 1) ) = 1; }; SOURCE(15312, 49) { word var←c64892; word pd169; pd169 = (* (( (ptr) (* (( (ptr) gf←c69628)+186)/* var←c62748 */ ))+13) ); var←c64892 = (word) ( *( (fPt) ((* (ptr) pd169 ))))((* (W3Pt) (( (ptr) formal←c69660)+11) ), (word) (( (bPt) &var←c69596)+20) /* var←c64860 */ , pd169); }; } static word CopyJointAndBuild←P5148(item←v20972, formal←c69724) word item←v20972; word formal←c69724; { register ptr gf←c69692 = (ptr) &globalframe; word quit←v21016; word copy←v21044 = 0; word oldJoint←v21072 = 0; formal←c69724 = (formal←c69724 - 20); /* CopyJointAndBuild: */ SOURCE(15141, 166) SOURCE(15141, 166) quit←v21016 = 0; SOURCE(15244, 23) oldJoint←v21072 = XR←Narrow(item←v20972, (* (( (ptr) gf←c69692)+13) )); SOURCE(15269, 26) copy←v21044 = (word) CopyJoint←P3480(oldJoint←v21072); SOURCE(15297, 10) { word pd170; pd170 = (* (( (ptr) formal←c69724)+4) ); (void) ( *( (fPt) ((* (ptr) pd170 ))))(copy←v21044, 1, pd170); }; SOURCE(15141, 166) return(quit←v21016); } static word CopyTrajFromRange←P900(slice←v9724, start←v9752, len←v9780) word slice←v9724; word start←v9752; word len←v9780; { W14 var←c69756; register ptr gf←c69788 = (ptr) &globalframe; word piece←v9824; /* declaration of var←c64924 skipped */ /* declaration of var←c64956 skipped */ word original←v21116; word originalSegments←v21144; /* declaration of desiredSegments←v21172 skipped */ word extractedSegments←v21200 = 0; word originalJoints←v21228; /* declaration of desiredJoints←v21256 skipped */ word extractedJoints←v21284 = 0; /* CopyTrajFromRange: */ SOURCE(16969, 1304) { word tmpAddr171; tmpAddr171 = (word) (( (ptr) &var←c69756)+4)/* var←c64924 */ ; (* (ptr) tmpAddr171 ) = ( ((word) (fPt) CopyEachJoint←P5268) ); (* (( (ptr) tmpAddr171) + 1) ) = 1; }; { word tmpAddr172; tmpAddr172 = (word) (( (ptr) &var←c69756)+6)/* var←c64956 */ ; (* (ptr) tmpAddr172 ) = ( ((word) (fPt) CopyEachSegment←P5208) ); (* (( (ptr) tmpAddr172) + 1) ) = 1; }; SOURCE(16969, 1304) piece←v9824 = 0; SOURCE(17064, 39) original←v21116 = XR←Narrow((* (( (ptr) slice←v9724)+1) ), (* (( (ptr) gf←c69788)+6) )); SOURCE(17142, 51) originalSegments←v21144 = (* (( (ptr) original←v21116)+2) ); SOURCE(17195, 64) (* (( (ptr) &var←c69756)+8) ) = originalSegments←v21144; (* (( (ptr) &var←c69756)+9) ) = start←v9752; (* (( (ptr) &var←c69756)+10) ) = len←v9780; SOURCE(17295, 47) originalJoints←v21228 = (* (( (ptr) original←v21116)+3) ); SOURCE(17344, 60) (* (( (ptr) &var←c69756)+11) ) = originalJoints←v21228; (* (( (ptr) &var←c69756)+12) ) = start←v9752; (* (( (ptr) &var←c69756)+13) ) = len←v9780; SOURCE(18044, 52) { word pd173; pd173 = (* (( (ptr) (* (( (ptr) gf←c69788)+186)/* var←c62748 */ ))+12) ); extractedSegments←v21200 = (word) ( *( (fPt) ((* (ptr) pd173 ))))((word) ((( (bPt) &var←c69756)+24)/* var←c64956 */ ), pd173) ; }; SOURCE(18098, 48) { word pd174; pd174 = (* (( (ptr) (* (( (ptr) gf←c69788)+186)/* var←c62748 */ ))+12) ); extractedJoints←v21284 = (word) ( *( (fPt) ((* (ptr) pd174 ))))((word) ((( (bPt) &var←c69756)+16)/* var←c64924 */ ), pd174) ; }; SOURCE(18148, 125) piece←v9824 = (word) CreateTrajFromData←P60(0, SGNCK(len←v9780), extractedSegments←v21200, extractedJoints←v21284, 0, (* ( ( (ptr) original←v21116)+5) ) , (* (( (ptr) original←v21116)+6) ), 0, 0, (* (W4Pt) (( (ptr) gf←c69788)+179)/* var←c62460 */ )); SOURCE(16969, 1304) return(piece←v9824); } static void CopyEachSegment←P5208(formal←c01023, formal←c69884) word formal←c01023; word formal←c69884; { W7 var←c69820; /* declaration of q←v21416 skipped */ register ptr gf←c69852 = (ptr) &globalframe; /* declaration of var←c65052 skipped */ formal←c69884 = (formal←c69884 - 24); var←c69820.f4/* q←v21416 */ = formal←c01023; var←c69820.f0 = formal←c69884; /* CopyEachSegment: */ SOURCE(17438, 306) { word tmpAddr175; tmpAddr175 = (word) (( (ptr) &var←c69820)+5)/* var←c65052 */ ; (* (ptr) tmpAddr175 ) = ( ((word) (fPt) CopySegmentAndBuild←P5328) ); (* (( (ptr) tmpAddr175) + 1) ) = 1; }; SOURCE(17691, 53) { word var←c65084; word pd176; pd176 = (* (( (ptr) (* (( (ptr) gf←c69852)+186)/* var←c62748 */ ))+13) ); var←c65084 = (word) ( *( (fPt) ((* (ptr) pd176 ))))((* (W3Pt) (( (ptr) formal←c69884)+8) ), (word) (( (bPt) &var←c69820)+20) /* var←c65052 */ , pd176); }; } static word CopySegmentAndBuild←P5328(item←v21756, formal←c69948) word item←v21756; word formal←c69948; { register ptr gf←c69916 = (ptr) &globalframe; word quit←v21800; word copy←v21828 = 0; word oldSeg←v21856 = 0; formal←c69948 = (formal←c69948 - 20); /* CopySegmentAndBuild: */ SOURCE(17510, 176) SOURCE(17510, 176) quit←v21800 = 0; SOURCE(17615, 21) oldSeg←v21856 = XR←Narrow(item←v21756, (* (( (ptr) gf←c69916)+20) )); SOURCE(17638, 36) { word pd177; pd177 = (* (( (ptr) (* (( (ptr) gf←c69916)+187)/* var←c62940 */ ))+17) ); copy←v21828 = (word) ( *( (fPt) ((* (ptr) pd177 ))))(oldSeg←v21856, pd177); }; SOURCE(17676, 10) { word pd178; pd178 = (* (( (ptr) formal←c69948)+4) ); (void) ( *( (fPt) ((* (ptr) pd178 ))))(copy←v21828, 1, pd178); }; SOURCE(17510, 176) return(quit←v21800); } static void CopyEachJoint←P5268(formal←c01024, formal←c70044) word formal←c01024; word formal←c70044; { W7 var←c69980; /* declaration of q←v21564 skipped */ register ptr gf←c70012 = (ptr) &globalframe; /* declaration of var←c65116 skipped */ formal←c70044 = (formal←c70044 - 16); var←c69980.f4/* q←v21564 */ = formal←c01024; var←c69980.f0 = formal←c70044; /* CopyEachJoint: */ SOURCE(17749, 290) { word tmpAddr179; tmpAddr179 = (word) (( (ptr) &var←c69980)+5)/* var←c65116 */ ; (* (ptr) tmpAddr179 ) = ( ((word) (fPt) CopyJointAndBuild←P5388) ); (* (( (ptr) tmpAddr179) + 1) ) = 1; }; SOURCE(17990, 49) { word var←c65148; word pd180; pd180 = (* (( (ptr) (* (( (ptr) gf←c70012)+186)/* var←c62748 */ ))+13) ); var←c65148 = (word) ( *( (fPt) ((* (ptr) pd180 ))))((* (W3Pt) (( (ptr) formal←c70044)+11) ), (word) (( (bPt) &var←c69980)+20) /* var←c65116 */ , pd180); }; } static word CopyJointAndBuild←P5388(item←v21976, formal←c70108) word item←v21976; word formal←c70108; { register ptr gf←c70076 = (ptr) &globalframe; word quit←v22020; word copy←v22048 = 0; word oldJoint←v22076 = 0; formal←c70108 = (formal←c70108 - 20); /* CopyJointAndBuild: */ SOURCE(17819, 166) SOURCE(17819, 166) quit←v22020 = 0; SOURCE(17922, 23) oldJoint←v22076 = XR←Narrow(item←v21976, (* (( (ptr) gf←c70076)+13) )); SOURCE(17947, 26) copy←v22048 = (word) CopyJoint←P3480(oldJoint←v22076); SOURCE(17975, 10) { word pd181; pd181 = (* (( (ptr) formal←c70108)+4) ); (void) ( *( (fPt) ((* (ptr) pd181 ))))(copy←v22048, 1, pd181); }; SOURCE(17819, 166) return(quit←v22020); } static word Concat←P960(fixed←v9884, fixedEnd←v9912, moving←v9940, movingEnd←v9968) word fixed←v9884; word fixedEnd←v9912; word moving←v9940; word movingEnd←v9968; { register ptr gf←c70140 = (ptr) &globalframe; word longer←v10012; W2 diff←v22120; word fixedTraj←v22148 = 0; word movingTraj←v22176 = 0; /* Concat: */ SOURCE(18279, 1461) SOURCE(18279, 1461) longer←v10012 = 0; SOURCE(18443, 36) { word pd182; pd182 = (* (( (ptr) (* (( (ptr) gf←c70140)+192)/* var←c64092 */ ))+10) ); fixed←v9884 = (* (ptr) ( *( (fPt) ((* (ptr) pd182 ))))(fixed←v9884, 0, pd182) ); }; SOURCE(18481, 38) { word pd183; pd183 = (* (( (ptr) (* (( (ptr) gf←c70140)+192)/* var←c64092 */ ))+10) ); moving←v9940 = (* (ptr) ( *( (fPt) ((* (ptr) pd183 ))))(moving←v9940, 0, pd183) ); }; SOURCE(18521, 48) if ((fixedEnd←v9912 == movingEnd←v9968)) { SOURCE(18550, 19) (void) ReverseTraj←P1260(moving←v9940); }; SOURCE(18571, 1169) if ((fixedEnd←v9912 == 1)) { SOURCE(18595, 84) { W2 var←c65180; W2 var←c65244; { word var←c65212; var←c65212 = (word) HiJoint←P2340(fixed←v9884); (void) FetchJointPos←P1920((word) &var←c65180, fixed←v9884, var←c65212); }; (void) FetchJointPos←P1920((word) &var←c65244, moving←v9940, 0); { W2 var←c0359; { word pd184; pd184 = (* (( (ptr) (* (( (ptr) gf←c70140)+188)/* var←c63004 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd184 ))))((word) &var←c0359, var←c65180, var←c65244, pd184); }; diff←v22120 = var←c0359; }; }; SOURCE(18681, 27) (void) TranslateTraj←P1500(moving←v9940, diff←v22120); SOURCE(18710, 30) fixedTraj←v22148 = XR←Narrow((* (( (ptr) fixed←v9884)+1) ), (* (( (ptr) gf←c70140)+6) )); SOURCE(18742, 32) movingTraj←v22176 = XR←Narrow((* (( (ptr) moving←v9940)+1) ), (* (( (ptr) gf←c70140)+6) )); SOURCE(18776, 377) { word var←c65276; word var←c65308; { word pd185; pd185 = (* (( (ptr) (* (( (ptr) gf←c70140)+186)/* var←c62748 */ ))+8) ); var←c65276 = (word) ( *( (fPt) ((* (ptr) pd185 ))))((* (( (ptr) fixedTraj←v22148)+2) ), (* (( (ptr) movingTraj←v22176)+2) ), pd185); }; { word var←c65340; { word pd186; pd186 = (* (( (ptr) (* (( (ptr) gf←c70140)+186)/* var←c62748 */ ))+7) ); var←c65340 = (word) ( *( (fPt) ((* (ptr) pd186 ))))((* (( (ptr) movingTraj←v22176)+3) ), 1, 2147483647, pd186); }; { word pd187; pd187 = (* (( (ptr) (* (( (ptr) gf←c70140)+186)/* var←c62748 */ ))+8) ); var←c65308 = (word) ( *( (fPt) ((* (ptr) pd187 ))))((* (( (ptr) fixedTraj←v22148)+3) ), var←c65340, pd187); }; }; { word idx188; longer←v10012 = (word) CreateTrajFromData←P60(2, ( idx188 = (word) ((* (( (ptr) fixedTraj←v22148)+1) ) + (* (( (ptr) movingTraj←v22176)+1) )), SGNCK(idx188) ), var←c65276, var←c65308, 0, (* (( (ptr) fixedTraj←v22148)+5) ) , (* (( (ptr) fixedTraj←v22148)+6) ), 0, 0, (* (W4Pt) (( (ptr) gf←c70140)+179)/* var←c62460 */ )); }; }; } else { SOURCE(19181, 85) { W2 var←c65372; W2 var←c65404; (void) FetchJointPos←P1920((word) &var←c65372, fixed←v9884, 0); { word var←c65436; var←c65436 = (word) HiJoint←P2340(moving←v9940); (void) FetchJointPos←P1920((word) &var←c65404, moving←v9940, var←c65436); }; { W2 var←c0368; { word pd189; pd189 = (* (( (ptr) (* (( (ptr) gf←c70140)+188)/* var←c63004 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd189 ))))((word) &var←c0368, var←c65372, var←c65404, pd189); }; diff←v22120 = var←c0368; }; }; SOURCE(19268, 27) (void) TranslateTraj←P1500(moving←v9940, diff←v22120); SOURCE(19297, 30) fixedTraj←v22148 = XR←Narrow((* (( (ptr) fixed←v9884)+1) ), (* (( (ptr) gf←c70140)+6) )); SOURCE(19329, 32) movingTraj←v22176 = XR←Narrow((* (( (ptr) moving←v9940)+1) ), (* (( (ptr) gf←c70140)+6) )); SOURCE(19363, 377) { word var←c65468; word var←c65500; { word pd190; pd190 = (* (( (ptr) (* (( (ptr) gf←c70140)+186)/* var←c62748 */ ))+8) ); var←c65468 = (word) ( *( (fPt) ((* (ptr) pd190 ))))((* (( (ptr) movingTraj←v22176)+2) ), (* (( (ptr) fixedTraj←v22148)+2) ), pd190); }; { word var←c65532; { word pd191; pd191 = (* (( (ptr) (* (( (ptr) gf←c70140)+186)/* var←c62748 */ ))+7) ); var←c65532 = (word) ( *( (fPt) ((* (ptr) pd191 ))))((* (( (ptr) fixedTraj←v22148)+3) ), 1, 2147483647, pd191); }; { word pd192; pd192 = (* (( (ptr) (* (( (ptr) gf←c70140)+186)/* var←c62748 */ ))+8) ); var←c65500 = (word) ( *( (fPt) ((* (ptr) pd192 ))))((* (( (ptr) movingTraj←v22176)+3) ), var←c65532, pd192); }; }; { word idx193; longer←v10012 = (word) CreateTrajFromData←P60(2, ( idx193 = (word) ((* (( (ptr) fixedTraj←v22148)+1) ) + (* (( (ptr) movingTraj←v22176)+1) )), SGNCK(idx193) ), var←c65468, var←c65500, 0, (* (( (ptr) fixedTraj←v22148)+5) ) , (* (( (ptr) fixedTraj←v22148)+6) ), 0, 0, (* (W4Pt) (( (ptr) gf←c70140)+179)/* var←c62460 */ )); }; }; }; SOURCE(18279, 1461) return(longer←v10012); } static word SpliceIn←P1020(runDescriptor←v10072, slice←v10100) word runDescriptor←v10072; word slice←v10100; { register ptr gf←c70172 = (ptr) &globalframe; word newSlice←v10144; word oldTraj←v22220; word newOutline←v22248 = 0; word oldOutline←v22276; /* SpliceIn: */ SOURCE(19749, 1252) SOURCE(19749, 1252) newSlice←v10144 = 0; SOURCE(19848, 52) oldTraj←v22220 = XR←Narrow((* (( (ptr) (* (ptr) runDescriptor←v10072 ))+1) ), (* (( (ptr) gf←c70172)+6) )); SOURCE(19944, 59) { word pd194; pd194 = (* (( (ptr) (* (( (ptr) gf←c70172)+190)/* var←c63708 */ ))+64) ); oldOutline←v22276 = (word) ( *( (fPt) ((* (ptr) pd194 ))))((* (ptr) (runDescriptor←v10072) ), pd194); }; SOURCE(20005, 751) { word var←c65564; var←c65564 = (* (ptr) oldTraj←v22220 ); switch (var←c65564) { case 1: SOURCE(20040, 47) newSlice←v10144 = (word) SpliceInClosed←P1200(runDescriptor←v10072, slice←v10100); SOURCE(20089, 43) (* (ptr) XR←Narrow((* (( (ptr) newSlice←v10144)+1) ), (* (( (ptr) gf←c70172)+6) )) ) = 1; SOURCE(20134, 78) { word pd195; pd195 = (* (( (ptr) (* (( (ptr) gf←c70172)+195)/* var←c64284 */ ))+8) ); newOutline←v22248 = (word) ( *( (fPt) ((* (ptr) pd195 ))))(oldOutline←v22276, (* (ptr) runDescriptor←v10072 ), newSlice←v10144, pd195) ; }; SOURCE(20214, 28) (* (( (ptr) newSlice←v10144)+2) ) = newOutline←v22248; break; case 2: SOURCE(20297, 45) newSlice←v10144 = (word) SpliceInOpen←P1140(runDescriptor←v10072, slice←v10100); SOURCE(20344, 43) (* (ptr) XR←Narrow((* (( (ptr) newSlice←v10144)+1) ), (* (( (ptr) gf←c70172)+6) )) ) = 2; SOURCE(20389, 94) { W2 var←c0380; word var←c65596; { word pd196; pd196 = (* (( (ptr) (* (( (ptr) gf←c70172)+192)/* var←c64092 */ ))+62) ); (void) ( *( (fPt) ((* (ptr) pd196 ))))((word) &var←c0380, oldOutline←v22276, 0, pd196); }; var←c65596 = var←c0380.f0; { word pd197; pd197 = (* (( (ptr) (* (( (ptr) gf←c70172)+195)/* var←c64284 */ ))+5) ); newOutline←v22248 = (word) ( *( (fPt) ((* (ptr) pd197 ))))(newSlice←v10144, var←c65596, pd197); }; }; SOURCE(20485, 28) (* (( (ptr) newSlice←v10144)+2) ) = newOutline←v22248; break; case 0: SOURCE(20569, 47) newSlice←v10144 = (word) SpliceInClosed←P1200(runDescriptor←v10072, slice←v10100); SOURCE(20618, 44) (* (ptr) XR←Narrow((* (( (ptr) newSlice←v10144)+1) ), (* (( (ptr) gf←c70172)+6) )) ) = 0; SOURCE(20664, 62) { word pd198; pd198 = (* (( (ptr) (* (( (ptr) gf←c70172)+195)/* var←c64284 */ ))+7) ); newOutline←v22248 = (word) ( *( (fPt) ((* (ptr) pd198 ))))(oldOutline←v22276, newSlice←v10144, pd198); }; SOURCE(20728, 28) (* (( (ptr) newSlice←v10144)+2) ) = newOutline←v22248; break; default: SOURCE(20812, 5) (void) XR←RaiseUnnamedError(); break; }; }; SOURCE(20819, 57) (* (( (ptr) XR←Narrow((* (( (ptr) newSlice←v10144)+1) ), (* (( (ptr) gf←c70172)+6) )))+7) ) = (* (( (ptr) oldTraj←v22220)+7) ); SOURCE(20878, 57) (* (( (ptr) XR←Narrow((* (( (ptr) newSlice←v10144)+1) ), (* (( (ptr) gf←c70172)+6) )))+8) ) = (* (( (ptr) oldTraj←v22220)+8) ); SOURCE(20937, 32) { word pd199; pd199 = (* (( (ptr) (* (( (ptr) gf←c70172)+184)/* var←c62588 */ ))+68) ); (void) ( *( (fPt) ((* (ptr) pd199 ))))(oldOutline←v22276, pd199); }; SOURCE(20971, 30) { word pd200; pd200 = (* (( (ptr) (* (( (ptr) gf←c70172)+184)/* var←c62588 */ ))+68) ); (void) ( *( (fPt) ((* (ptr) pd200 ))))(newSlice←v10144, pd200); }; SOURCE(19749, 1252) return(newSlice←v10144); } static void ResetEndSelectionBits←P1080(slice←v10204, lo←v10232, hi←v10260) word slice←v10204; word lo←v10232; word hi←v10260; { word joint←v22320 = 0; /* ResetEndSelectionBits: */ SOURCE(21007, 258) SOURCE(21089, 79) if ((0 != lo←v10232)) { SOURCE(21102, 28) joint←v22320 = (word) FetchJoint←P1860(slice←v10204, 0); SOURCE(21132, 36) (* (( (ptr) joint←v22320)+4) ) = 0; }; SOURCE(21173, 92) if ((0 != hi←v10260)) { SOURCE(21186, 41) { word var←c65628; var←c65628 = (word) HiJoint←P2340(slice←v10204); joint←v22320 = (word) FetchJoint←P1860(slice←v10204, var←c65628); }; SOURCE(21229, 36) (* (( (ptr) joint←v22320)+4) ) = 0; }; } static word SpliceInOpen←P1140(runDescriptor←v10320, slice←v10348) word runDescriptor←v10320; word slice←v10348; { register ptr gf←c70204 = (ptr) &globalframe; word newSlice←v10392; word runSlice←v22364; word runData←v22392; word runParts←v22420; word runGen←v22448 = 0; word slice1←v22476 = 0; word slice2←v22504 = 0; word remainder←v22532 = 0; word remainderParts←v22560 = 0; word run1←v22588 = 0; word run2←v22616 = 0; word run3←v22644 = 0; word wholeParts←v22672; word wholeDescriptor←v22700; /* SpliceInOpen: */ SOURCE(21274, 1751) SOURCE(21274, 1751) newSlice←v10392 = 0; SOURCE(21370, 37) runSlice←v22364 = (* (ptr) runDescriptor←v10320 ); SOURCE(21441, 41) runData←v22392 = XR←Narrow((* (( (ptr) runSlice←v22364)+1) ), (* (( (ptr) gf←c70204)+6) )); SOURCE(21522, 49) runParts←v22420 = XR←Narrow((* (( (ptr) runDescriptor←v10320)+1) ), (* (( (ptr) gf←c70204)+18) )); SOURCE(21738, 58) { word pd201; pd201 = (* (( (ptr) (* (( (ptr) gf←c70204)+189)/* var←c63644 */ ))+7) ); wholeParts←v22672 = (word) ( *( (fPt) ((* (ptr) pd201 ))))(runData←v22392, pd201); }; SOURCE(21798, 84) { word pd202; pd202 = (* (( (ptr) (* (( (ptr) gf←c70204)+184)/* var←c62588 */ ))+8) ); wholeDescriptor←v22700 = (word) ( *( (fPt) ((* (ptr) pd202 ))))(runSlice←v22364, wholeParts←v22672, pd202); }; SOURCE(21884, 65) { word pd203; pd203 = (* (( (ptr) (* (( (ptr) gf←c70204)+189)/* var←c63644 */ ))+21) ); remainder←v22532 = (word) ( *( (fPt) ((* (ptr) pd203 ))))(wholeDescriptor←v22700, runDescriptor←v10320, pd203); }; SOURCE(21951, 40) remainderParts←v22560 = XR←Narrow((* (( (ptr) remainder←v22532)+1) ), (* (( (ptr) gf←c70204)+18) )); SOURCE(21993, 39) { word pd204; pd204 = (* (( (ptr) (* (( (ptr) gf←c70204)+189)/* var←c63644 */ ))+14) ); (void) ( *( (fPt) ((* (ptr) pd204 ))))(remainderParts←v22560, pd204); }; SOURCE(22034, 57) { W2 var←c65660; { word pd205; pd205 = (* (( (ptr) (* (( (ptr) gf←c70204)+189)/* var←c63644 */ ))+37) ); (void) ( *( (fPt) ((* (ptr) pd205 ))))((word) &var←c65660, remainderParts←v22560, pd205); }; runGen←v22448 = var←c65660.f0; }; SOURCE(22093, 38) { word pd206; pd206 = (* (( (ptr) (* (( (ptr) gf←c70204)+189)/* var←c63644 */ ))+38) ); run1←v22588 = (word) ( *( (fPt) ((* (ptr) pd206 ))))(runGen←v22448, pd206); }; SOURCE(22133, 38) { word pd207; pd207 = (* (( (ptr) (* (( (ptr) gf←c70204)+189)/* var←c63644 */ ))+38) ); run2←v22616 = (word) ( *( (fPt) ((* (ptr) pd207 ))))(runGen←v22448, pd207); }; SOURCE(22173, 38) { word pd208; pd208 = (* (( (ptr) (* (( (ptr) gf←c70204)+189)/* var←c63644 */ ))+38) ); run3←v22644 = (word) ( *( (fPt) ((* (ptr) pd208 ))))(runGen←v22448, pd208); }; SOURCE(22213, 19) if ((run3←v22644 != 0)) { SOURCE(22232, 5) (void) XR←RaiseUnnamedError(); }; if ((run1←v22588 == 0)) { SOURCE(22272, 16) newSlice←v10392 = slice←v10348; } else { if ((run2←v22616 == 0)) { { word var←c65692; SOURCE(22309, 40) slice1←v22476 = (word) CopyTrajFromRun←P840(runSlice←v22364, run1←v22588); SOURCE(22351, 316) { word limit209; var←c65692 = (* (ptr) runParts←v22420 ); if (XR←ExtractField(var←c65692, 32 + (word) ( limit209 = (* (ptr) var←c65692 ), BCK(0, limit209) ), 1)) { SOURCE(22409, 57) (void) ResetEndSelectionBits←P1080(slice1←v22476, 1, 0); SOURCE(22468, 40) newSlice←v10392 = (word) Concat←P960(slice←v10348, 1, slice1←v22476, 0); } else { SOURCE(22568, 57) (void) ResetEndSelectionBits←P1080(slice1←v22476, 0, 1); SOURCE(22627, 40) newSlice←v10392 = (word) Concat←P960(slice←v10348, 0, slice1←v22476, 1); }; }; }; } else { SOURCE(22738, 40) slice1←v22476 = (word) CopyTrajFromRun←P840(runSlice←v22364, run1←v22588); SOURCE(22780, 57) (void) ResetEndSelectionBits←P1080(slice1←v22476, 0, 1); SOURCE(22839, 40) slice2←v22504 = (word) CopyTrajFromRun←P840(runSlice←v22364, run2←v22616); SOURCE(22881, 57) (void) ResetEndSelectionBits←P1080(slice2←v22504, 1, 0); SOURCE(22940, 40) newSlice←v10392 = (word) Concat←P960(slice←v10348, 0, slice1←v22476, 1); SOURCE(22982, 43) newSlice←v10392 = (word) Concat←P960(newSlice←v10392, 1, slice2←v22504, 0); }; }; SOURCE(21274, 1751) return(newSlice←v10392); } static word SpliceInClosed←P1200(runDescriptor←v10452, slice←v10480) word runDescriptor←v10452; word slice←v10480; { register ptr gf←c70236 = (ptr) &globalframe; word newSlice←v10524; word runSlice←v22744; word runData←v22772; word runParts←v22800; word runGen←v22828 = 0; word slice1←v22856 = 0; word remainder←v22884 = 0; word wholeParts←v22912 = 0; word remainderParts←v22940 = 0; word run1←v22968 = 0; word run2←v22996 = 0; word wholeDescriptor←v23024 = 0; /* SpliceInClosed: */ SOURCE(23034, 1224) SOURCE(23034, 1224) newSlice←v10524 = 0; SOURCE(23132, 37) runSlice←v22744 = (* (ptr) runDescriptor←v10452 ); SOURCE(23203, 41) runData←v22772 = XR←Narrow((* (( (ptr) runSlice←v22744)+1) ), (* (( (ptr) gf←c70236)+6) )); SOURCE(23284, 49) runParts←v22800 = XR←Narrow((* (( (ptr) runDescriptor←v10452)+1) ), (* (( (ptr) gf←c70236)+18) )); SOURCE(23532, 53) { word pd210; pd210 = (* (( (ptr) (* (( (ptr) gf←c70236)+189)/* var←c63644 */ ))+26) ); if ((0 != (word) ( *( (fPt) ((* (ptr) pd210 ))))(runParts←v22800, pd210))) { SOURCE(23572, 13) return(slice←v10480); }; }; SOURCE(23609, 47) { word pd211; pd211 = (* (( (ptr) (* (( (ptr) gf←c70236)+189)/* var←c63644 */ ))+7) ); wholeParts←v22912 = (word) ( *( (fPt) ((* (ptr) pd211 ))))(runData←v22772, pd211); }; SOURCE(23658, 67) { word pd212; pd212 = (* (( (ptr) (* (( (ptr) gf←c70236)+184)/* var←c62588 */ ))+8) ); wholeDescriptor←v23024 = (word) ( *( (fPt) ((* (ptr) pd212 ))))(runSlice←v22744, wholeParts←v22912, pd212); }; SOURCE(23727, 65) { word pd213; pd213 = (* (( (ptr) (* (( (ptr) gf←c70236)+189)/* var←c63644 */ ))+21) ); remainder←v22884 = (word) ( *( (fPt) ((* (ptr) pd213 ))))(wholeDescriptor←v23024, runDescriptor←v10452, pd213); }; SOURCE(23794, 40) remainderParts←v22940 = XR←Narrow((* (( (ptr) remainder←v22884)+1) ), (* (( (ptr) gf←c70236)+18) )); SOURCE(23836, 39) { word pd214; pd214 = (* (( (ptr) (* (( (ptr) gf←c70236)+189)/* var←c63644 */ ))+14) ); (void) ( *( (fPt) ((* (ptr) pd214 ))))(remainderParts←v22940, pd214); }; SOURCE(23877, 58) { W2 var←c65724; { word pd215; pd215 = (* (( (ptr) (* (( (ptr) gf←c70236)+189)/* var←c63644 */ ))+37) ); (void) ( *( (fPt) ((* (ptr) pd215 ))))((word) &var←c65724, remainderParts←v22940, pd215); }; runGen←v22828 = var←c65724.f0; }; SOURCE(23937, 38) { word pd216; pd216 = (* (( (ptr) (* (( (ptr) gf←c70236)+189)/* var←c63644 */ ))+38) ); run1←v22968 = (word) ( *( (fPt) ((* (ptr) pd216 ))))(runGen←v22828, pd216); }; SOURCE(23977, 38) { word pd217; pd217 = (* (( (ptr) (* (( (ptr) gf←c70236)+189)/* var←c63644 */ ))+38) ); run2←v22996 = (word) ( *( (fPt) ((* (ptr) pd217 ))))(runGen←v22828, pd217); }; SOURCE(24017, 33) if ((run1←v22968 == 0) || (run2←v22996 != 0)) { SOURCE(24050, 5) (void) XR←RaiseUnnamedError(); }; SOURCE(24057, 40) slice1←v22856 = (word) CopyTrajFromRun←P840(runSlice←v22744, run1←v22968); SOURCE(24099, 29) (void) ResetEndSelectionBits←P1080(slice1←v22856, 1, 1); SOURCE(24130, 40) newSlice←v10524 = (word) Concat←P960(slice←v10480, 0, slice1←v22856, 1); SOURCE(24227, 31) (void) CloseByDistorting←P300(newSlice←v10524, 0); SOURCE(23034, 1224) return(newSlice←v10524); } static void ReverseTraj←P1260(slice←v10584) word slice←v10584; { register ptr gf←c70268 = (ptr) &globalframe; word newSegments←v23068 = 0; word newJoints←v23096 = 0; word seg←v23124 = 0; word joint←v23152 = 0; word trajData←v23180; /* ReverseTraj: */ SOURCE(24265, 619) SOURCE(24391, 39) trajData←v23180 = XR←Narrow((* (( (ptr) slice←v10584)+1) ), (* (( (ptr) gf←c70268)+6) )); SOURCE(24432, 163) { register word i←v23224 = 0; register word noName←c65756; noName←c65756 = (* (( (ptr) trajData←v23180)+1) ); if ((i←v23224 >= noName←c65756)) { goto lab←L100027; }; lab←L100030: ; SOURCE(24472, 28) seg←v23124 = (word) FetchSegment←P1740(slice←v10584, i←v23224); SOURCE(24502, 29) { word pd218; pd218 = (* (( (ptr) (* (( (ptr) gf←c70268)+187)/* var←c62940 */ ))+22) ); (void) ( *( (fPt) ((* (ptr) pd218 ))))(seg←v23124, pd218); }; SOURCE(24533, 62) { word var←c65788; { word pd219; pd219 = (* (( (ptr) (* (( (ptr) gf←c70268)+186)/* var←c62748 */ ))+6) ); var←c65788 = (word) ( *( (fPt) ((* (ptr) pd219 ))))(seg←v23124, 1, pd219); }; { word pd220; pd220 = (* (( (ptr) (* (( (ptr) gf←c70268)+186)/* var←c62748 */ ))+8) ); newSegments←v23068 = (word) ( *( (fPt) ((* (ptr) pd220 ))))(var←c65788, newSegments←v23068, pd220); }; }; i←v23224 = (i←v23224 + 1); if ((i←v23224 < noName←c65756)) { goto lab←L100030; }; lab←L100027: ; }; SOURCE(24606, 207) { register word i←v23268 = 0; register word noName←c65820; noName←c65820 = (* (( (ptr) trajData←v23180)+1) ); if ((i←v23268 > noName←c65820)) { goto lab←L100031; }; lab←L100034: ; SOURCE(24646, 105) if (((* (ptr) trajData←v23180 ) == 2)) { joint←v23152 = (word) FetchJoint←P1860(slice←v10584, i←v23268); } else { joint←v23152 = (word) FetchJoint←P1860(slice←v10584, (i←v23268 % (* (( (ptr) trajData←v23180)+1) ))); }; SOURCE(24753, 60) { word var←c65852; { word pd221; pd221 = (* (( (ptr) (* (( (ptr) gf←c70268)+186)/* var←c62748 */ ))+6) ); var←c65852 = (word) ( *( (fPt) ((* (ptr) pd221 ))))(joint←v23152, 1, pd221); }; { word pd222; pd222 = (* (( (ptr) (* (( (ptr) gf←c70268)+186)/* var←c62748 */ ))+8) ); newJoints←v23096 = (word) ( *( (fPt) ((* (ptr) pd222 ))))(var←c65852, newJoints←v23096, pd222); }; }; if ((i←v23268 >= noName←c65820)) { goto lab←L100031; }; i←v23268 = (i←v23268 + 1); goto lab←L100034; lab←L100031: ; }; SOURCE(24824, 31) (* (( (ptr) trajData←v23180)+2) ) = newSegments←v23068; SOURCE(24857, 27) (* (( (ptr) trajData←v23180)+3) ) = newJoints←v23096; } static word IsClockwiseTraj←P1320(slice←v10644) word slice←v10644; { word var←c10688; /* IsClockwiseTraj: */ SOURCE(24890, 91) SOURCE(24953, 28) { word x223; word x225; return( (unsigned) (( x223 = (word) SignedArea←P3960(slice←v10644), *(float*)&x223 ) > ( x225 = (* (ptr) &fc224 ), *(float*)&x225 ))); }; } static word IsClockwiseTrajTransformSeq←P1380(descriptor←v10748, transform←v10776) word descriptor←v10748; word transform←v10776; { word var←c10820; /* IsClockwiseTrajTransformSeq: */ SOURCE(24987, 194) SOURCE(25125, 56) { word x226; word x227; return( (unsigned) (( x226 = (word) SignedAreaTransformSeq←P4020(descriptor←v10748, transform←v10776), *(float*)&x226 ) > ( x227 = (* (ptr) &fc224 ), *(float*)&x227 ))); }; } static void DrawPolyline←P1440(dc←v10880, traj←v10908) word dc←v10880; word traj←v10908; { W7 var←c70300; register ptr gf←c70332 = (ptr) &globalframe; /* declaration of var←c65948 skipped */ word trajData←v23312; /* declaration of wholePolyline←v23368 skipped */ word success←v23396 = 0; /* DrawPolyline: */ SOURCE(25187, 564) { word tmpAddr228; tmpAddr228 = (word) (( (ptr) &var←c70300)+4)/* var←c65948 */ ; (* (ptr) tmpAddr228 ) = ( ((word) (fPt) PolyPathProc←P5544) ); (* (( (ptr) tmpAddr228) + 1) ) = 1; }; SOURCE(25251, 38) trajData←v23312 = XR←Narrow((* (( (ptr) traj←v10908)+1) ), (* (( (ptr) gf←c70332)+6) )); SOURCE(25433, 42) var←c70300.f6/* wholePolyline←v23368 */ = 0; SOURCE(25501, 33) var←c70300.f6/* wholePolyline←v23368 */ = (* (( (ptr) trajData←v23312)+14) ); SOURCE(25536, 34) if ((var←c70300.f6/* wholePolyline←v23368 */ == 0)) { SOURCE(25564, 6) return; }; SOURCE(25572, 35) if (((* (ptr) trajData←v23312 ) == 2)) { SOURCE(25601, 6) return; }; SOURCE(25609, 33) { word pd229; pd229 = (* (( (ptr) (* (( (ptr) gf←c70332)+197)/* var←c65980 */ ))+52) ); (void) ( *( (fPt) ((* (ptr) pd229 ))))(dc←v10880, (* (ptr) (* (( (ptr) (* (( (ptr) gf←c70332)+197)/* var←c65980 */ ))+54) ) ), pd229); }; SOURCE(25644, 32) { word pd230; pd230 = (* (( (ptr) (* (( (ptr) gf←c70332)+197)/* var←c65980 */ ))+70) ); (void) ( *( (fPt) ((* (ptr) pd230 ))))(dc←v10880, 1, pd230); }; SOURCE(25678, 30) { word pd231; pd231 = (* (( (ptr) (* (( (ptr) gf←c70332)+197)/* var←c65980 */ ))+68) ); (void) ( *( (fPt) ((* (ptr) pd231 ))))(dc←v10880, (* (ptr) &fc232 ), pd231); }; SOURCE(25710, 41) { word pd233; pd233 = (* (( (ptr) (* (( (ptr) gf←c70332)+197)/* var←c65980 */ ))+71) ); (void) ( *( (fPt) ((* (ptr) pd233 ))))(dc←v10880, (word) (( (bPt) &var←c70300)+16)/* var←c65948 */ , 1, pd233); }; } static void PolyPathProc←P5544(moveTo←v51472, lineTo←v51500, curveTo←v51528, conicTo←v51556, arcTo←v51584, formal←c70364) word moveTo←v51472; word lineTo←v51500; word curveTo←v51528; word conicTo←v51556; word arcTo←v51584; word formal←c70364; { formal←c70364 = (formal←c70364 - 16); /* PolyPathProc: */ SOURCE(25292, 127) SOURCE(25326, 24) { word limit234; (void) ( *( (fPt) ((* (ptr) moveTo←v51472 ))))((* ((( (W2Pt) (( (ptr) (* (( (ptr) formal←c70364)+6) ))+2))+( limit234 = (* (( (ptr) (* (( (ptr) formal←c70364)+6) ))+1) ), BCK(0, limit234) ))) ), moveTo←v51472); }; SOURCE(25352, 67) { register word i←v23440 = 1; register word noName←c66012; noName←c66012 = (* (ptr) (* (( (ptr) formal←c70364)+6) ) ); if ((i←v23440 >= noName←c66012)) { goto lab←L100035; }; lab←L100038: ; SOURCE(25395, 24) { word limit235; (void) ( *( (fPt) ((* (ptr) lineTo←v51500 ))))((* ((( (W2Pt) (( (ptr) (* (( (ptr) formal←c70364)+6) ))+2))+( limit235 = (* (( (ptr) (* (( (ptr) formal←c70364)+6) ))+1) ), BCK(i←v23440, limit235) ))) ), lineTo←v51500); }; i←v23440 = (i←v23440 + 1); if ((i←v23440 < noName←c66012)) { goto lab←L100038; }; lab←L100035: ; }; } static void TranslateTraj←P1500(slice←v10968, vector←v10996) word slice←v10968; W2 vector←v10996; { register ptr gf←c70396 = (ptr) &globalframe; word transform←v23484; word seg←v23512 = 0; word joint←v23540 = 0; word trajData←v23568; word hiSegment←v23596; word hiJoint←v23624; /* TranslateTraj: */ SOURCE(26484, 586) SOURCE(26540, 101) { W2 var←c66044; var←c66044.f0 = vector←v10996.f0; var←c66044.f1 = vector←v10996.f1; { word pd236; pd236 = (* (( (ptr) (* (( (ptr) gf←c70396)+198)/* var←c66076 */ ))+10) ); transform←v23484 = (word) ( *( (fPt) ((* (ptr) pd236 ))))(var←c66044, pd236); }; }; SOURCE(26671, 39) trajData←v23568 = XR←Narrow((* (( (ptr) slice←v10968)+1) ), (* (( (ptr) gf←c70396)+6) )); SOURCE(26712, 33) hiSegment←v23596 = (word) HiSegment←P2220(slice←v10968); SOURCE(26747, 29) hiJoint←v23624 = (word) HiJoint←P2340(slice←v10968); SOURCE(26778, 104) { register word i←v23668 = 0; register word noName←c66108; noName←c66108 = hiSegment←v23596; if ((i←v23668 > noName←c66108)) { goto lab←L100039; }; lab←L100042: ; SOURCE(26810, 28) seg←v23512 = (word) FetchSegment←P1740(slice←v10968, i←v23668); SOURCE(26840, 42) { word pd237; pd237 = (* (( (ptr) (* (( (ptr) gf←c70396)+187)/* var←c62940 */ ))+26) ); (void) ( *( (fPt) ((* (ptr) pd237 ))))(seg←v23512, transform←v23484, pd237); }; if ((i←v23668 >= noName←c66108)) { goto lab←L100039; }; i←v23668 = (i←v23668 + 1); goto lab←L100042; lab←L100039: ; }; SOURCE(26893, 139) { register word i←v23712 = 0; register word noName←c66140; noName←c66140 = hiJoint←v23624; if ((i←v23712 > noName←c66140)) { goto lab←L100043; }; lab←L100046: ; SOURCE(26923, 48) { word pd238; pd238 = (* (( (ptr) (* (( (ptr) gf←c70396)+186)/* var←c62748 */ ))+5) ); joint←v23540 = XR←Narrow((word) ( *( (fPt) ((* (ptr) pd238 ))))((* (( (ptr) trajData←v23568)+3) ), i←v23712, pd238), (* ( ( (ptr) gf←c70396)+13) )); }; SOURCE(26973, 59) { word pd239; pd239 = (* (( (ptr) (* (( (ptr) gf←c70396)+199)/* var←c66172 */ ))+5) ); (void) ( *( (fPt) ((* (ptr) pd239 ))))((word) joint←v23540, transform←v23484, (* (W2Pt) joint←v23540 ), pd239); }; if ((i←v23712 >= noName←c66140)) { goto lab←L100043; }; i←v23712 = (i←v23712 + 1); goto lab←L100046; lab←L100043: ; }; SOURCE(27043, 27) { word pd240; pd240 = (* (( (ptr) (* (( (ptr) gf←c70396)+184)/* var←c62588 */ ))+68) ); (void) ( *( (fPt) ((* (ptr) pd240 ))))(slice←v10968, pd240); }; } static word ConstrainJoint←P1560(slice←v11056, editConstraints←v11084, jointNum←v11112) word slice←v11056; word editConstraints←v11084; word jointNum←v11112; { register ptr gf←c70428 = (ptr) &globalframe; word constrained←v11156; W2 newPos←v23756; word loSeg←v23784 = 0; word hiSeg←v23812 = 0; W2 cPointLo←v23840; W2 cPointHi←v23868; word joint←v23896 = 0; word trajData←v23924; /* ConstrainJoint: */ SOURCE(27113, 1029) SOURCE(27113, 1029) constrained←v11156 = 0; SOURCE(27324, 39) trajData←v23924 = XR←Narrow((* (( (ptr) slice←v11056)+1) ), (* (( (ptr) gf←c70428)+6) )); SOURCE(27365, 777) if ((0 == (word) IsEndJoint←P2700(slice←v11056, jointNum←v11112))) { SOURCE(27407, 35) joint←v23896 = (word) FetchJoint←P1860(slice←v11056, jointNum←v11112); SOURCE(27444, 37) hiSeg←v23812 = (word) FetchSegment←P1740(slice←v11056, jointNum←v11112); SOURCE(27483, 40) loSeg←v23784 = (word) PreviousSegment←P2460(slice←v11056, jointNum←v11112); SOURCE(27525, 617) if ( ( ((* (ptr) (* (ptr) hiSeg←v23812 ) ) == (* (( (ptr) gf←c70428)+27) )) ? ((* (ptr) (* (ptr) loSeg←v23784 ) ) == (* ( ( (ptr) gf←c70428)+27) )) : 0 ) ) { SOURCE(27593, 18) constrained←v11156 = 1; SOURCE(27613, 48) { word pd241; pd241 = (* (( (ptr) (* (ptr) loSeg←v23784 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd241 ))))((word) &cPointLo←v23840, loSeg←v23784, 1, pd241); }; SOURCE(27663, 48) { word pd242; pd242 = (* (( (ptr) (* (ptr) hiSeg←v23812 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd242 ))))((word) &cPointHi←v23868, hiSeg←v23812, 0, pd242); }; SOURCE(27713, 270) if ((editConstraints←v11084 == 2)) { SOURCE(27748, 102) { W2 var←c66204; { W2 var←c66236; { word pd243; pd243 = (* (( (ptr) (* (( (ptr) gf←c70428)+188)/* var←c63004 */ ))+22) ); (void) ( *( (fPt) ((* (ptr) pd243 ))))((word) &var←c66236, cPointLo←v23840, cPointHi←v23868, pd243); }; { W2 var←c0481; { word pd244; pd244 = (* (( (ptr) (* (( (ptr) gf←c70428)+188)/* var←c63004 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd244 ))))((word) &var←c0481, var←c66236, (* (ptr) &fc245 ), pd244); }; var←c66204 = var←c0481; }; }; { W2 var←c0482; { word pd246; pd246 = (* (( (ptr) (* (( (ptr) gf←c70428)+188)/* var←c63004 */ ))+10) ); (void) ( *( (fPt) ((* (ptr) pd246 ))))((word) &var←c0482, var←c66204, cPointLo←v23840, pd246); }; newPos←v23756 = var←c0482; }; }; } else { SOURCE(27859, 126) { word cpLine←v23968; SOURCE(27872, 53) { word pd247; pd247 = (* (( (ptr) (* (( (ptr) gf←c70428)+200)/* var←c66268 */ ))+27) ); cpLine←v23968 = (word) ( *( (fPt) ((* (ptr) pd247 ))))(cPointLo←v23840, cPointHi←v23868, pd247); }; SOURCE(27927, 56) { word pd248; pd248 = (* (( (ptr) (* (( (ptr) gf←c70428)+200)/* var←c66268 */ ))+46) ); (void) ( *( (fPt) ((* (ptr) pd248 ))))((word) &newPos←v23756, (* (W2Pt) joint←v23896 ), cpLine←v23968, pd248); }; }; }; SOURCE(27988, 20) (* (W2Pt) joint←v23896 ) = newPos←v23756; SOURCE(28010, 50) { word pd249; pd249 = (* (( (ptr) (* (( (ptr) gf←c70428)+187)/* var←c62940 */ ))+28) ); (void) ( *( (fPt) ((* (ptr) pd249 ))))(hiSeg←v23812, 1, newPos←v23756, pd249); }; SOURCE(28062, 51) { word pd250; pd250 = (* (( (ptr) (* (( (ptr) gf←c70428)+187)/* var←c62940 */ ))+28) ); (void) ( *( (fPt) ((* (ptr) pd250 ))))(loSeg←v23784, 0, newPos←v23756, pd250); }; SOURCE(28115, 27) { word pd251; pd251 = (* (( (ptr) (* (( (ptr) gf←c70428)+184)/* var←c62588 */ ))+68) ); (void) ( *( (fPt) ((* (ptr) pd251 ))))(slice←v11056, pd251); }; }; }; SOURCE(27113, 1029) return(constrained←v11156); } static word ConstrainCP←P1620(slice←v11216, editConstraints←v11244, segNum←v11272, cpNum←v11300) word slice←v11216; word editConstraints←v11244; word segNum←v11272; word cpNum←v11300; { register ptr gf←c70460 = (ptr) &globalframe; word constrained←v11344; W2 newPos←v24012; word thisSeg←v24040 = 0; word otherSeg←v24068 = 0; W2 thisCP←v24096; W2 otherCP←v24124; word joint←v24152 = 0; word otherSegNum←v24180; word otherCPNum←v24208; word trajData←v24236; /* ConstrainCP: */ SOURCE(28154, 1468) SOURCE(28154, 1468) constrained←v11344 = 0; SOURCE(28404, 39) trajData←v24236 = XR←Narrow((* (( (ptr) slice←v11216)+1) ), (* (( (ptr) gf←c70460)+6) )); SOURCE(28445, 251) if ((cpNum←v11300 == 0)) { SOURCE(28465, 47) otherSegNum←v24180 = (word) PreviousSegmentNum←P2520(slice←v11216, segNum←v11272); SOURCE(28514, 33) joint←v24152 = (word) FetchJoint←P1860(slice←v11216, segNum←v11272); SOURCE(28549, 14) otherCPNum←v24208 = 1; } else { SOURCE(28574, 48) otherSegNum←v24180 = (word) FollowingSegmentNum←P2580(slice←v11216, segNum←v11272); SOURCE(28624, 56) { word var←c66300; { word idx252; var←c66300 = ( idx252 = (word) FollowingJoint←P2640(slice←v11216, segNum←v11272), SGNCK(idx252) ); }; joint←v24152 = (word) FetchJoint←P1860(slice←v11216, var←c66300); }; SOURCE(28682, 14) otherCPNum←v24208 = 0; }; SOURCE(28702, 920) if (( (int)otherSegNum←v24180 != (int) (word) -1)) { SOURCE(28729, 37) thisSeg←v24040 = (word) FetchSegment←P1740(slice←v11216, segNum←v11272); SOURCE(28768, 43) otherSeg←v24068 = (word) FetchSegment←P1740(slice←v11216, SGNCK(otherSegNum←v24180)); SOURCE(28813, 809) if ( ( ((* (ptr) (* (ptr) thisSeg←v24040 ) ) == (* (( (ptr) gf←c70460)+27) )) ? ((* (ptr) (* (ptr) otherSeg←v24068 ) ) == (* ( ( (ptr) gf←c70460)+27) )) : 0 ) ) { SOURCE(28886, 18) constrained←v11344 = 1; SOURCE(28906, 54) { word pd253; pd253 = (* (( (ptr) (* (ptr) thisSeg←v24040 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd253 ))))((word) &thisCP←v24096, thisSeg←v24040, cpNum←v11300, pd253); }; SOURCE(28962, 62) { word pd254; pd254 = (* (( (ptr) (* (ptr) otherSeg←v24068 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd254 ))))((word) &otherCP←v24124, otherSeg←v24068, SGNCK(otherCPNum←v24208), pd254); }; SOURCE(29026, 507) if ((editConstraints←v11244 == 2)) { SOURCE(29061, 103) { W2 var←c66332; { W2 var←c66364; { word pd255; pd255 = (* (( (ptr) (* (( (ptr) gf←c70460)+188)/* var←c63004 */ ))+22) ); (void) ( *( (fPt) ((* (ptr) pd255 ))))((word) &var←c66364, otherCP←v24124, (* (W2Pt) joint←v24152 ), pd255); }; { W2 var←c0505; { word pd256; pd256 = (* (( (ptr) (* (( (ptr) gf←c70460)+188)/* var←c63004 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd256 ))))((word) &var←c0505, var←c66364, (* (ptr) &fc257 ), pd256); }; var←c66332 = var←c0505; }; }; { W2 var←c0506; { word pd258; pd258 = (* (( (ptr) (* (( (ptr) gf←c70460)+188)/* var←c63004 */ ))+10) ); (void) ( *( (fPt) ((* (ptr) pd258 ))))((word) &var←c0506, var←c66332, otherCP←v24124, pd258); }; newPos←v24012 = var←c0506; }; }; } else { SOURCE(29173, 362) { W2 dirVec←v24280; word distance←v24308; W2 var←c66396; SOURCE(29243, 65) { word pd259; pd259 = (* (( (ptr) (* (( (ptr) gf←c70460)+188)/* var←c63004 */ ))+22) ); (void) ( *( (fPt) ((* (ptr) pd259 ))))((word) &dirVec←v24280, otherCP←v24124, (* (W2Pt) joint←v24152 ), pd259); }; SOURCE(29310, 56) { word pd260; pd260 = (* (( (ptr) (* (( (ptr) gf←c70460)+188)/* var←c63004 */ ))+19) ); distance←v24308 = (word) ( *( (fPt) ((* (ptr) pd260 ))))((* (W2Pt) joint←v24152 ), thisCP←v24096, pd260); }; SOURCE(29368, 59) var←c66396.f0 = (* (ptr) &fc224 ); var←c66396.f1 = (* (ptr) &fc224 ); if ( ! XR←EqualWords(&dirVec←v24280, &var←c66396, 2)) { SOURCE(29391, 36) { word pd261; pd261 = (* (( (ptr) (* (( (ptr) gf←c70460)+188)/* var←c63004 */ ))+13) ); (void) ( *( (fPt) ((* (ptr) pd261 ))))((word) &dirVec←v24280, dirVec←v24280, pd261); }; }; SOURCE(29446, 42) { word pd262; pd262 = (* (( (ptr) (* (( (ptr) gf←c70460)+188)/* var←c63004 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd262 ))))((word) &dirVec←v24280, dirVec←v24280, distance←v24308, pd262); }; SOURCE(29490, 43) { word pd263; pd263 = (* (( (ptr) (* (( (ptr) gf←c70460)+188)/* var←c63004 */ ))+10) ); (void) ( *( (fPt) ((* (ptr) pd263 ))))((word) &newPos←v24012, (* (W2Pt) joint←v24152 ), dirVec←v24280, pd263); }; }; }; SOURCE(29538, 55) { word pd264; pd264 = (* (( (ptr) (* (( (ptr) gf←c70460)+187)/* var←c62940 */ ))+33) ); (void) ( *( (fPt) ((* (ptr) pd264 ))))(thisSeg←v24040, newPos←v24012, cpNum←v11300, pd264); }; SOURCE(29595, 27) { word pd265; pd265 = (* (( (ptr) (* (( (ptr) gf←c70460)+184)/* var←c62588 */ ))+68) ); (void) ( *( (fPt) ((* (ptr) pd265 ))))(slice←v11216, pd265); }; }; }; SOURCE(28154, 1468) return(constrained←v11344); } static word MatchShape←P1680(traj1←v11404, traj2←v11432) word traj1←v11404; word traj2←v11432; { register ptr gf←c70492 = (ptr) &globalframe; word var←c11476; word segCount1←v24352; word segCount2←v24380; word trajData1←v24408; word trajData2←v24436; word seg1←v24464 = 0; word seg2←v24492 = 0; word cpCount1←v24520; word closed1←v24548; word closed2←v24576; /* MatchShape: */ SOURCE(29748, 1162) SOURCE(29813, 33) segCount1←v24352 = (word) HiSegment←P2220(traj1←v11404); SOURCE(29848, 33) segCount2←v24380 = (word) HiSegment←P2220(traj2←v11432); SOURCE(29883, 40) trajData1←v24408 = XR←Narrow((* (( (ptr) traj1←v11404)+1) ), (* (( (ptr) gf←c70492)+6) )); SOURCE(29925, 40) trajData2←v24436 = XR←Narrow((* (( (ptr) traj1←v11404)+1) ), (* (( (ptr) gf←c70492)+6) )); SOURCE(30003, 63) closed1←v24548 = (unsigned) ( ((* (ptr) trajData1←v24408 ) == 1) ? 1 : ((* (ptr) trajData1←v24408 ) == 0) ) ; SOURCE(30068, 63) closed2←v24576 = (unsigned) ( ((* (ptr) trajData2←v24436 ) == 1) ? 1 : ((* (ptr) trajData2←v24436 ) == 0) ) ; SOURCE(30134, 43) if ((segCount1←v24352 != segCount2←v24380)) { SOURCE(30164, 13) return(0); }; SOURCE(30179, 39) if ((closed1←v24548 != closed2←v24576)) { SOURCE(30205, 13) return(0); }; SOURCE(30220, 658) { register word i←v24620 = 0; register word noName←c66428; noName←c66428 = segCount1←v24352; if ((i←v24620 > noName←c66428)) { goto lab←L100047; }; lab←L100050: ; SOURCE(30252, 29) seg1←v24464 = (word) FetchSegment←P1740(traj1←v11404, i←v24620); SOURCE(30283, 29) seg2←v24492 = (word) FetchSegment←P1740(traj2←v11432, i←v24620); SOURCE(30314, 45) if (((* (ptr) seg1←v24464 ) != (* (ptr) seg2←v24492 ))) { SOURCE(30346, 13) return(0); }; SOURCE(30361, 57) { word pd266; pd266 = (* (( (ptr) (* (( (ptr) gf←c70492)+187)/* var←c62940 */ ))+20) ); if ((0 == (word) ( *( (fPt) ((* (ptr) pd266 ))))(seg1←v24464, seg2←v24492, pd266))) { SOURCE(30405, 13) return(0); }; }; SOURCE(30420, 39) if ( ! XR←EqualWords((( (ptr) seg1←v24464)+11), (( (ptr) seg2←v24492)+11), 2)) { SOURCE(30446, 13) return(0); }; SOURCE(30461, 45) { word pd267; pd267 = (* (( (ptr) (* (ptr) seg1←v24464 ))+17) ); cpCount1←v24520 = (word) ( *( (fPt) ((* (ptr) pd267 ))))(seg1←v24464, pd267); }; SOURCE(30508, 67) { word pd268; pd268 = (* (( (ptr) (* (ptr) seg2←v24492 ))+17) ); if ((cpCount1←v24520 != (word) ( *( (fPt) ((* (ptr) pd268 ))))(seg2←v24492, pd268))) { SOURCE(30562, 13) return(0); }; }; SOURCE(30577, 301) { register word j←v24664 = 0; register word noName←c66460; noName←c66460 = cpCount1←v24520; if ((j←v24664 >= noName←c66460)) { goto lab←L100051; }; lab←L100054: ; { W2 point1←v24708; W2 point2←v24736; SOURCE(30631, 104) { word pd269; pd269 = (* (( (ptr) (* (ptr) seg1←v24464 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd269 ))))((word) &point1←v24708, seg1←v24464, j←v24664, pd269); }; { word pd270; pd270 = (* (( (ptr) (* (ptr) seg2←v24492 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd270 ))))((word) &point2←v24736, seg2←v24492, j←v24664, pd270); }; if (XR←EqualWords(&point1←v24708, &point2←v24736, 2)) { SOURCE(30735, 4) goto lab←L100053; }; SOURCE(30741, 137) { word tc271; word pd272; word idx273; word pd274; word idx275; pd272 = (* (( (ptr) (* (( (ptr) gf←c70492)+201)/* var←c66492 */ ))+39) ); if ((0 != (word) ( *( (fPt) ((* (ptr) pd272 ))))(point1←v24708.f0, point2←v24736.f0, ( idx273 = (word) ((* (( (ptr) gf←c70492)+5)/* closeness←v5744 */ ) + 126), BCK(idx273, 127) ), pd272))) { pd274 = (* (( (ptr) (* (( (ptr) gf←c70492)+201)/* var←c66492 */ ))+39) ); tc271 = (word) (0 != (word) ( *( (fPt) ((* (ptr) pd274 ))))(point1←v24708.f1, point2←v24736.f1, ( idx275 = (word) ((* (( (ptr) gf←c70492)+5)/* closeness←v5744 */ ) + 126), BCK(idx275, 127) ), pd274)); } else { tc271 = (word) 0; }; if (tc271) { } else { SOURCE(30865, 13) return(0); }; }; }; lab←L100053: ; j←v24664 = (j←v24664 + 1); if ((j←v24664 < noName←c66460)) { goto lab←L100054; }; lab←L100051: ; }; if ((i←v24620 >= noName←c66428)) { goto lab←L100047; }; i←v24620 = (i←v24620 + 1); goto lab←L100050; lab←L100047: ; }; SOURCE(30898, 12) return(1); } static word FetchSegment←P1740(slice←v11536, index←v11564) word slice←v11536; word index←v11564; { register ptr gf←c70524 = (ptr) &globalframe; word seg←v11608; word trajData←v24780; /* FetchSegment: */ SOURCE(30916, 173) SOURCE(30916, 173) seg←v11608 = 0; SOURCE(30996, 39) trajData←v24780 = XR←Narrow((* (( (ptr) slice←v11536)+1) ), (* (( (ptr) gf←c70524)+6) )); SOURCE(31037, 52) { word pd276; pd276 = (* (( (ptr) (* (( (ptr) gf←c70524)+186)/* var←c62748 */ ))+5) ); seg←v11608 = XR←Narrow((word) ( *( (fPt) ((* (ptr) pd276 ))))((* (( (ptr) trajData←v24780)+2) ), index←v11564, pd276), (* ( ( (ptr) gf←c70524)+20) )); }; SOURCE(30916, 173) return(seg←v11608); } static word FetchSegmentTraj←P1800(trajData←v11668, index←v11696) word trajData←v11668; word index←v11696; { register ptr gf←c70556 = (ptr) &globalframe; word seg←v11740; /* FetchSegmentTraj: */ SOURCE(31095, 142) SOURCE(31095, 142) seg←v11740 = 0; SOURCE(31185, 52) { word pd277; pd277 = (* (( (ptr) (* (( (ptr) gf←c70556)+186)/* var←c62748 */ ))+5) ); seg←v11740 = XR←Narrow((word) ( *( (fPt) ((* (ptr) pd277 ))))((* (( (ptr) trajData←v11668)+2) ), index←v11696, pd277), (* ( ( (ptr) gf←c70556)+20) )); }; SOURCE(31095, 142) return(seg←v11740); } static word FetchJoint←P1860(slice←v11800, index←v11828) word slice←v11800; word index←v11828; { register ptr gf←c70588 = (ptr) &globalframe; word joint←v11872; word trajData←v24824; /* FetchJoint: */ SOURCE(31243, 171) SOURCE(31243, 171) joint←v11872 = 0; SOURCE(31321, 39) trajData←v24824 = XR←Narrow((* (( (ptr) slice←v11800)+1) ), (* (( (ptr) gf←c70588)+6) )); SOURCE(31362, 52) { word pd278; pd278 = (* (( (ptr) (* (( (ptr) gf←c70588)+186)/* var←c62748 */ ))+5) ); joint←v11872 = XR←Narrow((word) ( *( (fPt) ((* (ptr) pd278 ))))((* (( (ptr) trajData←v24824)+3) ), index←v11828, pd278), (* ( ( (ptr) gf←c70588)+13) )); }; SOURCE(31243, 171) return(joint←v11872); } static void FetchJointPos←P1920(formal←c0552, slice←v11932, index←v11960) word formal←c0552; word slice←v11932; word index←v11960; { register ptr gf←c70620 = (ptr) &globalframe; W2 point←v12004; word trajData←v24868; word joint←v24896 = 0; word hiJoint←v24924; /* FetchJointPos: */ SOURCE(31420, 379) SOURCE(31501, 39) trajData←v24868 = XR←Narrow((* (( (ptr) slice←v11932)+1) ), (* (( (ptr) gf←c70620)+6) )); SOURCE(31556, 123) { word var←c66524; var←c66524 = (* (ptr) trajData←v24868 ); switch (var←c66524) { case 2: hiJoint←v24924 = (* (( (ptr) trajData←v24868)+1) ); break; case 0: case 1: hiJoint←v24924 = ((* (( (ptr) trajData←v24868)+1) ) - 1); break; default: hiJoint←v24924 = ( XR←RaiseUnnamedError(), 0 ); break; }; }; SOURCE(31681, 37) if ((index←v11960 > hiJoint←v24924)) { SOURCE(31718, 5) (void) XR←RaiseUnnamedError(); }; SOURCE(31726, 52) { word pd279; pd279 = (* (( (ptr) (* (( (ptr) gf←c70620)+186)/* var←c62748 */ ))+5) ); joint←v24896 = XR←Narrow((word) ( *( (fPt) ((* (ptr) pd279 ))))((* (( (ptr) trajData←v24868)+3) ), index←v11960, pd279), (* ( ( (ptr) gf←c70620)+13) )); }; SOURCE(31780, 19) point←v12004 = (* (W2Pt) joint←v24896 ); /* removed tail goto */ (* (W2Pt) formal←c0552 ) = point←v12004; return; } static void FetchJointPosTraj←P1980(formal←c0559, trajData←v12064, index←v12092) word formal←c0559; word trajData←v12064; word index←v12092; { register ptr gf←c70652 = (ptr) &globalframe; W2 point←v12136; word joint←v24968 = 0; word hiJoint←v24996; /* FetchJointPosTraj: */ SOURCE(31805, 348) SOURCE(31910, 123) { word var←c66556; var←c66556 = (* (ptr) trajData←v12064 ); switch (var←c66556) { case 2: hiJoint←v24996 = (* (( (ptr) trajData←v12064)+1) ); break; case 0: case 1: hiJoint←v24996 = ((* (( (ptr) trajData←v12064)+1) ) - 1); break; default: hiJoint←v24996 = ( XR←RaiseUnnamedError(), 0 ); break; }; }; SOURCE(32035, 37) if ((index←v12092 > hiJoint←v24996)) { SOURCE(32072, 5) (void) XR←RaiseUnnamedError(); }; SOURCE(32080, 52) { word pd280; pd280 = (* (( (ptr) (* (( (ptr) gf←c70652)+186)/* var←c62748 */ ))+5) ); joint←v24968 = XR←Narrow((word) ( *( (fPt) ((* (ptr) pd280 ))))((* (( (ptr) trajData←v12064)+3) ), index←v12092, pd280), (* ( ( (ptr) gf←c70652)+13) )); }; SOURCE(32134, 19) point←v12136 = (* (W2Pt) joint←v24968 ); /* removed tail goto */ (* (W2Pt) formal←c0559 ) = point←v12136; return; } static void FetchJointNormal←P2040(formal←c0563, slice←v12196, index←v12224) word formal←c0563; word slice←v12196; word index←v12224; { W2 normal←v12268; /* FetchJointNormal: */ SOURCE(32159, 101) SOURCE(32245, 15) normal←v12268.f0 = (* (ptr) &fc224 ); normal←v12268.f1 = (* (ptr) &fc281 ); /* removed tail goto */ (* (W2Pt) formal←c0563 ) = normal←v12268; return; } static void LastJointPos←P2100(formal←c0568, slice←v12328) word formal←c0568; word slice←v12328; { register ptr gf←c70684 = (ptr) &globalframe; W2 point←v12372; word trajData←v25040; word joint←v25068; /* LastJointPos: */ SOURCE(32277, 202) SOURCE(32345, 39) trajData←v25040 = XR←Narrow((* (( (ptr) slice←v12328)+1) ), (* (( (ptr) gf←c70684)+6) )); SOURCE(32386, 71) { word pd282; pd282 = (* (( (ptr) (* (( (ptr) gf←c70684)+186)/* var←c62748 */ ))+5) ); joint←v25068 = XR←Narrow((word) ( *( (fPt) ((* (ptr) pd282 ))))((* (( (ptr) trajData←v25040)+3) ), (* (( (ptr) trajData←v25040)+1) ), pd282), (* (( (ptr) gf←c70684)+13) )); }; SOURCE(32459, 20) point←v12372 = (* (W2Pt) joint←v25068 ); /* removed tail goto */ (* (W2Pt) formal←c0568 ) = point←v12372; return; } static void SetJointPos←P2160(slice←v12432, index←v12460, newPos←v12488) word slice←v12432; word index←v12460; W2 newPos←v12488; { register ptr gf←c70716 = (ptr) &globalframe; word trajData←v25112; word joint←v25140; word segLeft←v25168 = 0; word segRight←v25196 = 0; /* SetJointPos: */ SOURCE(32483, 402) SOURCE(32554, 39) trajData←v25112 = XR←Narrow((* (( (ptr) slice←v12432)+1) ), (* (( (ptr) gf←c70716)+6) )); SOURCE(32595, 59) { word pd283; pd283 = (* (( (ptr) (* (( (ptr) gf←c70716)+186)/* var←c62748 */ ))+5) ); joint←v25140 = XR←Narrow((word) ( *( (fPt) ((* (ptr) pd283 ))))((* (( (ptr) trajData←v25112)+3) ), index←v12460, pd283), (* ( ( (ptr) gf←c70716)+13) )); }; SOURCE(32684, 20) (* (W2Pt) joint←v25140 ) = newPos←v12488; SOURCE(32706, 79) if ((index←v12460 > 0)) { SOURCE(32726, 38) segLeft←v25168 = (word) FetchSegment←P1740(slice←v12432, SGNCK((index←v12460 - 1))); SOURCE(32766, 19) (* (W2Pt) (( (ptr) segLeft←v25168)+11) ) = newPos←v12488; }; SOURCE(32790, 95) if ((index←v12460 < (* (( (ptr) trajData←v25112)+1) ))) { SOURCE(32826, 37) segRight←v25196 = (word) FetchSegment←P1740(slice←v12432, index←v12460); SOURCE(32865, 20) (* (W2Pt) (( (ptr) segRight←v25196)+9) ) = newPos←v12488; }; } static word HiSegment←P2220(slice←v12548) word slice←v12548; { register ptr gf←c70748 = (ptr) &globalframe; word highestIndex←v12592; word trajData←v25240; /* HiSegment: */ SOURCE(32894, 147) SOURCE(32964, 39) trajData←v25240 = XR←Narrow((* (( (ptr) slice←v12548)+1) ), (* (( (ptr) gf←c70748)+6) )); SOURCE(33005, 36) { word idx284; highestIndex←v12592 = ( idx284 = (word) ((* (( (ptr) trajData←v25240)+1) ) - 1), SGNCK(idx284) ); }; SOURCE(32894, 147) return(highestIndex←v12592); } static word HiSegmentTraj←P2280(trajData←v12652) word trajData←v12652; { word highestIndex←v12696; /* HiSegmentTraj: */ SOURCE(33047, 116) SOURCE(33127, 36) { word idx285; highestIndex←v12696 = ( idx285 = (word) ((* (( (ptr) trajData←v12652)+1) ) - 1), SGNCK(idx285) ); }; SOURCE(33047, 116) return(highestIndex←v12696); } static word HiJoint←P2340(slice←v12756) word slice←v12756; { register ptr gf←c70780 = (ptr) &globalframe; word highestIndex←v12800; word trajData←v25284; /* HiJoint: */ SOURCE(33169, 228) SOURCE(33238, 39) trajData←v25284 = XR←Narrow((* (( (ptr) slice←v12756)+1) ), (* (( (ptr) gf←c70780)+6) )); SOURCE(33279, 118) { word var←c66588; var←c66588 = (* (ptr) trajData←v25284 ); switch (var←c66588) { case 2: SOURCE(33313, 32) highestIndex←v12800 = (* (( (ptr) trajData←v25284)+1) ); break; case 0: case 1: SOURCE(33362, 35) { word idx286; highestIndex←v12800 = ( idx286 = (word) ((* (( (ptr) trajData←v25284)+1) ) - 1), SGNCK(idx286) ); }; break; default: SOURCE(33410, 5) (void) XR←RaiseUnnamedError(); break; }; }; SOURCE(33169, 228) return(highestIndex←v12800); } static word HiJointTraj←P2400(trajData←v12860) word trajData←v12860; { word highestIndex←v12904; /* HiJointTraj: */ SOURCE(33421, 197) SOURCE(33500, 118) { word var←c66620; var←c66620 = (* (ptr) trajData←v12860 ); switch (var←c66620) { case 2: SOURCE(33534, 32) highestIndex←v12904 = (* (( (ptr) trajData←v12860)+1) ); break; case 0: case 1: SOURCE(33583, 35) { word idx287; highestIndex←v12904 = ( idx287 = (word) ((* (( (ptr) trajData←v12860)+1) ) - 1), SGNCK(idx287) ); }; break; default: SOURCE(33631, 5) (void) XR←RaiseUnnamedError(); break; }; }; SOURCE(33421, 197) return(highestIndex←v12904); } static word PreviousSegment←P2460(slice←v12964, segNum←v12992) word slice←v12964; word segNum←v12992; { register ptr gf←c70812 = (ptr) &globalframe; word prev←v13036; word trajData←v25328; /* PreviousSegment: */ SOURCE(33642, 320) SOURCE(33642, 320) prev←v13036 = 0; SOURCE(33727, 39) trajData←v25328 = XR←Narrow((* (( (ptr) slice←v12964)+1) ), (* (( (ptr) gf←c70812)+6) )); SOURCE(33768, 194) if (((* (ptr) trajData←v25328 ) == 2)) { SOURCE(33799, 74) if ((segNum←v12992 == 0)) { SOURCE(33818, 17) return(0); } else { SOURCE(33835, 38) prev←v13036 = (word) FetchSegment←P1740(slice←v12964, SGNCK((segNum←v12992 - 1))); }; } else { SOURCE(33884, 78) prev←v13036 = (word) FetchSegment←P1740(slice←v12964, IOP2( % , (int)((segNum←v12992 - 1) + (* (( (ptr) trajData←v25328)+1) )), (int)(* (( (ptr) trajData←v25328)+1) ))); }; SOURCE(33642, 320) return(prev←v13036); } static word PreviousSegmentNum←P2520(slice←v13096, segNum←v13124) word slice←v13096; word segNum←v13124; { register ptr gf←c70844 = (ptr) &globalframe; word prevNum←v13168; word trajData←v25372; /* PreviousSegmentNum: */ SOURCE(33971, 233) SOURCE(34058, 39) trajData←v25372 = XR←Narrow((* (( (ptr) slice←v13096)+1) ), (* (( (ptr) gf←c70844)+6) )); SOURCE(34099, 105) if (((* (ptr) trajData←v25372 ) == 2)) { prevNum←v13168 = (segNum←v13124 - 1); } else { prevNum←v13168 = IOP2( % , (int)((segNum←v13124 - 1) + (* (( (ptr) trajData←v25372)+1) )), (int)(* (( (ptr) trajData←v25372)+1) )); }; SOURCE(33971, 233) return(prevNum←v13168); } static word FollowingSegmentNum←P2580(slice←v13228, segNum←v13256) word slice←v13228; word segNum←v13256; { register ptr gf←c70876 = (ptr) &globalframe; word followNum←v13300; word trajData←v25416; /* FollowingSegmentNum: */ SOURCE(34210, 274) SOURCE(34300, 39) trajData←v25416 = XR←Narrow((* (( (ptr) slice←v13228)+1) ), (* (( (ptr) gf←c70876)+6) )); SOURCE(34341, 143) if (((* (ptr) trajData←v25416 ) == 2)) { SOURCE(34370, 70) if ((segNum←v13256 == (word) HiSegment←P2220(slice←v13228))) { followNum←v13300 = (word) -1; } else { followNum←v13300 = (segNum←v13256 + 1); }; } else { SOURCE(34440, 44) followNum←v13300 = ((segNum←v13256 + 1) % (* (( (ptr) trajData←v25416)+1) )); }; SOURCE(34210, 274) return(followNum←v13300); } static word FollowingJoint←P2640(slice←v13360, index←v13388) word slice←v13360; word index←v13388; { register ptr gf←c70908 = (ptr) &globalframe; word nextIndex←v13432; word trajData←v25460; /* FollowingJoint: */ SOURCE(34490, 285) SOURCE(34575, 39) trajData←v25460 = XR←Narrow((* (( (ptr) slice←v13360)+1) ), (* (( (ptr) gf←c70908)+6) )); SOURCE(34616, 159) { word var←c66652; var←c66652 = (* (ptr) trajData←v25460 ); switch (var←c66652) { case 2: SOURCE(34650, 63) if ((index←v13388 == (* (( (ptr) trajData←v25460)+1) ))) { nextIndex←v13432 = (word) -1; } else { nextIndex←v13432 = (index←v13388 + 1); }; break; case 0: case 1: SOURCE(34730, 45) nextIndex←v13432 = ((index←v13388 + 1) % (* (( (ptr) trajData←v25460)+1) )); break; default: SOURCE(34788, 5) (void) XR←RaiseUnnamedError(); break; }; }; SOURCE(34490, 285) return(nextIndex←v13432); } static word IsEndJoint←P2700(slice←v13492, index←v13520) word slice←v13492; word index←v13520; { register ptr gf←c70940 = (ptr) &globalframe; word var←c13564; word trajData←v25504; /* IsEndJoint: */ SOURCE(34799, 222) SOURCE(34870, 39) trajData←v25504 = XR←Narrow((* (( (ptr) slice←v13492)+1) ), (* (( (ptr) gf←c70940)+6) )); SOURCE(34911, 110) { word var←c66684; var←c66684 = (* (ptr) trajData←v25504 ); switch (var←c66684) { case 2: SOURCE(34945, 46) { word tc288; if ((index←v13520 == 0)) { tc288 = (word) (unsigned) 1; } else { tc288 = (word) (unsigned) (index←v13520 == (* (( (ptr) trajData←v25504)+1) )); }; return(tc288); }; case 0: case 1: SOURCE(35008, 13) return(0); default: SOURCE(35034, 5) (void) XR←RaiseUnnamedError(); break; }; }; } static void SaveSelection←P2760(slice←v13624, selectClass←v13652, scene←v13680) word slice←v13624; word selectClass←v13652; word scene←v13680; { register ptr gf←c70972 = (ptr) &globalframe; word seq←v25548; /* SaveSelection: */ SOURCE(35044, 257) SOURCE(35133, 69) { word pd289; pd289 = (* (( (ptr) (* (( (ptr) gf←c70972)+193)/* var←c64124 */ ))+20) ); seq←v25548 = (word) ( *( (fPt) ((* (ptr) pd289 ))))(slice←v13624, selectClass←v13652, pd289); }; SOURCE(35204, 97) if ((seq←v25548 == 0)) { SOURCE(35220, 40) (void) ClearSelection←P2940(slice←v13624, selectClass←v13652); } else { SOURCE(35260, 41) (void) SaveSelectionInSequence←P2820(seq←v25548, selectClass←v13652); }; } static void SaveSelectionInSequence←P2820(descriptor←v13740, selectClass←v13768) word descriptor←v13740; word selectClass←v13768; { /* SaveSelectionInSequence: */ SOURCE(35307, 169) SOURCE(35407, 69) (void) SaveSelectionInParts←P2880((* (ptr) descriptor←v13740 ), (* (( (ptr) descriptor←v13740)+1) ), selectClass←v13768) ; } static void SaveSelectionInParts←P2880(slice←v13828, parts←v13856, selectClass←v13884) word slice←v13828; word parts←v13856; word selectClass←v13884; { register ptr gf←c71004 = (ptr) &globalframe; word seg←v25592 = 0; word joint←v25620 = 0; word trajParts←v25648; word hiSegment←v25676; word hiJoint←v25704; /* SaveSelectionInParts: */ SOURCE(35482, 614) SOURCE(35611, 36) trajParts←v25648 = XR←Narrow(parts←v13856, (* (( (ptr) gf←c71004)+18) )); SOURCE(35649, 33) hiSegment←v25676 = (word) HiSegment←P2220(slice←v13828); SOURCE(35684, 29) hiJoint←v25704 = (word) HiJoint←P2340(slice←v13828); SOURCE(35715, 247) { register word i←v25748 = 0; register word noName←c66716; noName←c66716 = hiSegment←v25676; if ((i←v25748 > noName←c66716)) { goto lab←L100059; }; lab←L100062: ; SOURCE(35747, 28) seg←v25592 = (word) FetchSegment←P1740(slice←v13828, i←v25748); SOURCE(35777, 56) { word var←c66748; word var←c0996; var←c66748 = (* (ptr) trajParts←v25648 ); { word limit290; var←c0996 = (unsigned) XR←ExtractField(var←c66748, 32 + (word) ( limit290 = (* (ptr) var←c66748 ), BCK(i←v25748, limit290) ), 1); }; (void) SetSegmentField←P3420(seg←v25592, var←c0996, selectClass←v13884); }; SOURCE(35835, 127) { register word j←v25792 = 0; register word noName←c66780; { word pd291; pd291 = (* (( (ptr) (* (ptr) seg←v25592 ))+17) ); noName←c66780 = (word) ( *( (fPt) ((* (ptr) pd291 ))))(seg←v25592, pd291); }; if ((j←v25792 >= noName←c66780)) { goto lab←L100063; }; lab←L100066: ; SOURCE(35890, 72) { word var←c66812; word var←c66844; word var←c0997; { word limit292; var←c66812 = (* (( (ptr) trajParts←v25648)+2) ); var←c66844 = (* ((( (ptr) var←c66812)+1)+( limit292 = (* (ptr) var←c66812 ), BCK(i←v25748, limit292) )) ); }; { word limit293; var←c0997 = (unsigned) XR←ExtractField(var←c66844, 32 + (word) ( limit293 = (* (ptr) var←c66844 ), BCK(j←v25792, limit293) ), 1); }; (void) SetControlPointField←P3120(seg←v25592, j←v25792, var←c0997, selectClass←v13884); }; j←v25792 = (j←v25792 + 1); if ((j←v25792 < noName←c66780)) { goto lab←L100066; }; lab←L100063: ; }; if ((i←v25748 >= noName←c66716)) { goto lab←L100059; }; i←v25748 = (i←v25748 + 1); goto lab←L100062; lab←L100059: ; }; SOURCE(35982, 114) { register word i←v25836 = 0; register word noName←c66876; noName←c66876 = hiJoint←v25704; if ((i←v25836 > noName←c66876)) { goto lab←L100067; }; lab←L100070: ; SOURCE(36012, 28) joint←v25620 = (word) FetchJoint←P1860(slice←v13828, i←v25836); SOURCE(36042, 54) { word var←c66908; word var←c0998; var←c66908 = (* (( (ptr) trajParts←v25648)+1) ); { word limit294; var←c0998 = (unsigned) XR←ExtractField(var←c66908, 32 + (word) ( limit294 = (* (ptr) var←c66908 ), BCK(i←v25836, limit294) ), 1); }; (void) SetJointField←P3360(joint←v25620, var←c0998, selectClass←v13884); }; if ((i←v25836 >= noName←c66876)) { goto lab←L100067; }; i←v25836 = (i←v25836 + 1); goto lab←L100070; lab←L100067: ; }; } static void ClearSelection←P2940(slice←v13944, selectClass←v13972) word slice←v13944; word selectClass←v13972; { word seg←v25880 = 0; word joint←v25908 = 0; word hiSegment←v25936; word hiJoint←v25964; /* ClearSelection: */ SOURCE(36111, 497) SOURCE(36215, 33) hiSegment←v25936 = (word) HiSegment←P2220(slice←v13944); SOURCE(36250, 29) hiJoint←v25964 = (word) HiJoint←P2340(slice←v13944); SOURCE(36281, 207) { register word i←v26008 = 0; register word noName←c66940; noName←c66940 = hiSegment←v25936; if ((i←v26008 > noName←c66940)) { goto lab←L100071; }; lab←L100074: ; SOURCE(36313, 28) seg←v25880 = (word) FetchSegment←P1740(slice←v13944, i←v26008); SOURCE(36343, 40) (void) SetSegmentField←P3420(seg←v25880, 0, selectClass←v13972); SOURCE(36385, 103) { register word j←v26052 = 0; register word noName←c66972; { word pd295; pd295 = (* (( (ptr) (* (ptr) seg←v25880 ))+17) ); noName←c66972 = (word) ( *( (fPt) ((* (ptr) pd295 ))))(seg←v25880, pd295); }; if ((j←v26052 >= noName←c66972)) { goto lab←L100075; }; lab←L100078: ; SOURCE(36440, 48) (void) SetControlPointField←P3120(seg←v25880, j←v26052, 0, selectClass←v13972); j←v26052 = (j←v26052 + 1); if ((j←v26052 < noName←c66972)) { goto lab←L100078; }; lab←L100075: ; }; if ((i←v26008 >= noName←c66940)) { goto lab←L100071; }; i←v26008 = (i←v26008 + 1); goto lab←L100074; lab←L100071: ; }; SOURCE(36508, 100) { register word i←v26096 = 0; register word noName←c67004; noName←c67004 = hiJoint←v25964; if ((i←v26096 > noName←c67004)) { goto lab←L100079; }; lab←L100082: ; SOURCE(36538, 28) joint←v25908 = (word) FetchJoint←P1860(slice←v13944, i←v26096); SOURCE(36568, 40) (void) SetJointField←P3360(joint←v25908, 0, selectClass←v13972); if ((i←v26096 >= noName←c67004)) { goto lab←L100079; }; i←v26096 = (i←v26096 + 1); goto lab←L100082; lab←L100079: ; }; } static void ClearSelections←P3000(slice←v14032) word slice←v14032; { word seg←v26140 = 0; word joint←v26168 = 0; word hiSegment←v26196; word hiJoint←v26224; /* ClearSelections: */ SOURCE(36623, 799) SOURCE(36699, 33) hiSegment←v26196 = (word) HiSegment←P2220(slice←v14032); SOURCE(36734, 29) hiJoint←v26224 = (word) HiJoint←P2340(slice←v14032); SOURCE(36765, 435) { register word i←v26268 = 0; register word noName←c67036; noName←c67036 = hiSegment←v26196; if ((i←v26268 > noName←c67036)) { goto lab←L100083; }; lab←L100086: ; SOURCE(36797, 28) seg←v26140 = (word) FetchSegment←P1740(slice←v14032, i←v26268); SOURCE(36827, 35) (void) SetSegmentField←P3420(seg←v26140, 0, 0); SOURCE(36864, 32) (void) SetSegmentField←P3420(seg←v26140, 0, 1); SOURCE(36898, 35) (void) SetSegmentField←P3420(seg←v26140, 0, 2); SOURCE(36935, 34) (void) SetSegmentField←P3420(seg←v26140, 0, 3); SOURCE(36971, 229) { register word j←v26312 = 0; register word noName←c67068; { word pd296; pd296 = (* (( (ptr) (* (ptr) seg←v26140 ))+17) ); noName←c67068 = (word) ( *( (fPt) ((* (ptr) pd296 ))))(seg←v26140, pd296); }; if ((j←v26312 >= noName←c67068)) { goto lab←L100087; }; lab←L100090: ; SOURCE(37026, 43) (void) SetControlPointField←P3120(seg←v26140, j←v26312, 0, 0); SOURCE(37071, 40) (void) SetControlPointField←P3120(seg←v26140, j←v26312, 0, 1); SOURCE(37113, 43) (void) SetControlPointField←P3120(seg←v26140, j←v26312, 0, 2); SOURCE(37158, 42) (void) SetControlPointField←P3120(seg←v26140, j←v26312, 0, 3); j←v26312 = (j←v26312 + 1); if ((j←v26312 < noName←c67068)) { goto lab←L100090; }; lab←L100087: ; }; if ((i←v26268 >= noName←c67036)) { goto lab←L100083; }; i←v26268 = (i←v26268 + 1); goto lab←L100086; lab←L100083: ; }; SOURCE(37220, 202) { register word i←v26356 = 0; register word noName←c67100; noName←c67100 = hiJoint←v26224; if ((i←v26356 > noName←c67100)) { goto lab←L100091; }; lab←L100094: ; SOURCE(37250, 28) joint←v26168 = (word) FetchJoint←P1860(slice←v14032, i←v26356); SOURCE(37280, 35) (void) SetJointField←P3360(joint←v26168, 0, 0); SOURCE(37317, 32) (void) SetJointField←P3360(joint←v26168, 0, 1); SOURCE(37351, 35) (void) SetJointField←P3360(joint←v26168, 0, 2); SOURCE(37388, 34) (void) SetJointField←P3360(joint←v26168, 0, 3); if ((i←v26356 >= noName←c67100)) { goto lab←L100091; }; i←v26356 = (i←v26356 + 1); goto lab←L100094; lab←L100091: ; }; } static word RemakeSelection←P3060(slice←v14092, selectClass←v14120) word slice←v14092; word selectClass←v14120; { register ptr gf←c71036 = (ptr) &globalframe; word parts←v14164; word trajData←v26400; word trajParts←v26428; word seg←v26456 = 0; word joint←v26484 = 0; word hiSegment←v26512; word hiJoint←v26540; /* RemakeSelection: */ SOURCE(37437, 1045) SOURCE(37437, 1045) parts←v14164 = 0; SOURCE(37542, 39) trajData←v26400 = XR←Narrow((* (( (ptr) slice←v14092)+1) ), (* (( (ptr) gf←c71036)+6) )); SOURCE(37611, 63) { word pd297; pd297 = (* (( (ptr) (* (( (ptr) gf←c71036)+189)/* var←c63644 */ ))+6) ); trajParts←v26428 = (word) ( *( (fPt) ((* (ptr) pd297 ))))(trajData←v26400, pd297); }; SOURCE(37704, 33) hiSegment←v26512 = (word) HiSegment←P2220(slice←v14092); SOURCE(37739, 29) hiJoint←v26540 = (word) HiJoint←P2340(slice←v14092); SOURCE(37770, 425) { register word i←v26584 = 0; register word noName←c67132; noName←c67132 = hiSegment←v26512; if ((i←v26584 > noName←c67132)) { goto lab←L100095; }; lab←L100098: ; { word var←c67228; SOURCE(37802, 28) seg←v26456 = (word) FetchSegment←P1740(slice←v14092, i←v26584); SOURCE(37832, 57) { word var←c67164; var←c67164 = (word) GetSegmentField←P3300(seg←v26456, selectClass←v14120); { word var←c67196; var←c67196 = (* (ptr) trajParts←v26428 ); { word limit298; word xs299; word x300; xs299 = (word) ( limit298 = (* (ptr) var←c67196 ), BCK(i←v26584, limit298) ); x300 = (word) ((( (bPt) var←c67196)+4) + ((word) xs299 >> 3)); xs299 = 8 - ((word) (xs299 & 7)+1); (* (bPt) x300 ) = ((* (bPt) x300 ) & ( ~ ((unsigned) 1 << xs299))) | (((var←c67164 & 1)) << xs299); }; }; }; SOURCE(37891, 73) { word limit301; var←c67228 = (* (ptr) trajParts←v26428 ); if (XR←ExtractField(var←c67228, 32 + (word) ( limit301 = (* (ptr) var←c67228 ), BCK(i←v26584, limit301) ), 1)) { SOURCE(37921, 43) (* (( (ptr) trajParts←v26428)+3) ) = ((* (( (ptr) trajParts←v26428)+3) ) + 1); }; }; SOURCE(37966, 229) { register word j←v26628 = 0; register word noName←c67260; { word pd302; pd302 = (* (( (ptr) (* (ptr) seg←v26456 ))+17) ); noName←c67260 = (word) ( *( (fPt) ((* (ptr) pd302 ))))(seg←v26456, pd302); }; if ((j←v26628 >= noName←c67260)) { goto lab←L100099; }; lab←L100102: ; { word var←c67420; SOURCE(38021, 73) { word var←c67292; var←c67292 = (word) GetControlPointField←P3180(seg←v26456, j←v26628, selectClass←v14120); { word var←c67356; { word var←c67324; var←c67324 = (* (( (ptr) trajParts←v26428)+2) ); { word limit303; var←c67356 = (* ((( (ptr) var←c67324)+1)+( /*1*/ limit303 = (* (ptr) var←c67324 ), /*1*/ BCK(i←v26584, limit303) /*1*/ )) ); }; }; { word limit304; word xs305; word x306; xs305 = (word) ( limit304 = (* (ptr) var←c67356 ), BCK(j←v26628, limit304) ); x306 = (word) ((( (bPt) var←c67356)+4) + ((word) xs305 >> 3)); xs305 = 8 - ((word) (xs305 & 7)+1); (* (bPt) x306 ) = ((* (bPt) x306 ) & ( ~ ((unsigned) 1 << xs305))) | (((var←c67292 & 1)) << xs305); }; }; }; SOURCE(38096, 99) { word limit308; { word var←c67388; var←c67388 = (* (( (ptr) trajParts←v26428)+2) ); { word limit307; var←c67420 = (* ((( (ptr) var←c67388)+1)+( /*1*/ limit307 = (* (ptr) var←c67388 ), /*1*/ BCK(i←v26584, limit307) /*1*/ )) ); }; }; if (XR←ExtractField(var←c67420, 32 + (word) ( limit308 = (* (ptr) var←c67420 ), BCK(j←v26628, limit308) ), 1)) { SOURCE(38134, 61) (* (( (ptr) trajParts←v26428)+5) ) = ((* (( (ptr) trajParts←v26428)+5) ) + 1); }; }; }; j←v26628 = (j←v26628 + 1); if ((j←v26628 < noName←c67260)) { goto lab←L100102; }; lab←L100099: ; }; }; if ((i←v26584 >= noName←c67132)) { goto lab←L100095; }; i←v26584 = (i←v26584 + 1); goto lab←L100098; lab←L100095: ; }; SOURCE(38215, 192) { register word i←v26672 = 0; register word noName←c67452; noName←c67452 = hiJoint←v26540; if ((i←v26672 > noName←c67452)) { goto lab←L100103; }; lab←L100106: ; { word var←c67548; SOURCE(38245, 28) joint←v26484 = (word) FetchJoint←P1860(slice←v14092, i←v26672); SOURCE(38275, 55) { word var←c67484; var←c67484 = (word) GetJointField←P3240(joint←v26484, selectClass←v14120); { word var←c67516; var←c67516 = (* (( (ptr) trajParts←v26428)+1) ); { word limit309; word xs310; word x311; xs310 = (word) ( limit309 = (* (ptr) var←c67516 ), BCK(i←v26672, limit309) ); x311 = (word) ((( (bPt) var←c67516)+4) + ((word) xs310 >> 3)); xs310 = 8 - ((word) (xs310 & 7)+1); (* (bPt) x311 ) = ((* (bPt) x311 ) & ( ~ ((unsigned) 1 << xs310))) | (((var←c67484 & 1)) << xs310); }; }; }; SOURCE(38332, 75) { word limit312; var←c67548 = (* (( (ptr) trajParts←v26428)+1) ); if (XR←ExtractField(var←c67548, 32 + (word) ( limit312 = (* (ptr) var←c67548 ), BCK(i←v26672, limit312) ), 1)) { SOURCE(38360, 47) (* (( (ptr) trajParts←v26428)+4) ) = ((* (( (ptr) trajParts←v26428)+4) ) + 1); }; }; }; if ((i←v26672 >= noName←c67452)) { goto lab←L100103; }; i←v26672 = (i←v26672 + 1); goto lab←L100106; lab←L100103: ; }; SOURCE(38418, 64) { word pd313; pd313 = (* (( (ptr) (* (( (ptr) gf←c71036)+189)/* var←c63644 */ ))+25) ); if ((0 != (word) ( *( (fPt) ((* (ptr) pd313 ))))(trajParts←v26428, pd313))) { parts←v14164 = 0; } else { parts←v14164 = trajParts←v26428; }; }; SOURCE(37437, 1045) return(parts←v14164); } static void SetControlPointField←P3120(seg←v14224, cpNum←v14252, selected←v14280, selectClass←v14308) word seg←v14224; word cpNum←v14252; word selected←v14280; word selectClass←v14308; { /* SetControlPointField: */ SOURCE(38488, 169) SOURCE(38592, 65) { word pd314; pd314 = (* (( (ptr) (* (ptr) seg←v14224 ))+14) ); (void) ( *( (fPt) ((* (ptr) pd314 ))))(seg←v14224, cpNum←v14252, selected←v14280, selectClass←v14308, pd314); }; } static word GetControlPointField←P3180(seg←v14368, cpNum←v14396, selectClass←v14424) word seg←v14368; word cpNum←v14396; word selectClass←v14424; { word selected←v14468; /* GetControlPointField: */ SOURCE(38663, 179) SOURCE(38776, 66) { word pd315; pd315 = (* (( (ptr) (* (ptr) seg←v14368 ))+15) ); selected←v14468 = (word) ( *( (fPt) ((* (ptr) pd315 ))))(seg←v14368, cpNum←v14396, selectClass←v14424, pd315); }; SOURCE(38663, 179) return(selected←v14468); } static word GetJointField←P3240(joint←v14528, selectClass←v14556) word joint←v14528; word selectClass←v14556; { word selected←v14600; /* GetJointField: */ SOURCE(38848, 311) SOURCE(38941, 218) { word var←c67580; var←c67580 = selectClass←v14556; switch (var←c67580) { case 0: SOURCE(38975, 39) selected←v14600 = (* (( (ptr) joint←v14528)+2) ); break; case 1: SOURCE(39023, 36) selected←v14600 = (* (( (ptr) joint←v14528)+3) ); break; case 2: SOURCE(39071, 39) selected←v14600 = (* (( (ptr) joint←v14528)+4) ); break; case 3: SOURCE(39121, 38) selected←v14600 = (* (( (ptr) joint←v14528)+5) ); break; }; }; SOURCE(38848, 311) return(selected←v14600); } static word GetSegmentField←P3300(seg←v14660, selectClass←v14688) word seg←v14660; word selectClass←v14688; { word selected←v14732; /* GetSegmentField: */ SOURCE(39174, 305) SOURCE(39269, 210) { word var←c67612; var←c67612 = selectClass←v14688; switch (var←c67612) { case 0: SOURCE(39303, 37) selected←v14732 = (* (( (ptr) seg←v14660)+17) ); break; case 1: SOURCE(39349, 34) selected←v14732 = (* (( (ptr) seg←v14660)+18) ); break; case 2: SOURCE(39395, 37) selected←v14732 = (* (( (ptr) seg←v14660)+19) ); break; case 3: SOURCE(39443, 36) selected←v14732 = (* (( (ptr) seg←v14660)+20) ); break; }; }; SOURCE(39174, 305) return(selected←v14732); } static void SetJointField←P3360(joint←v14792, selected←v14820, selectClass←v14848) word joint←v14792; word selected←v14820; word selectClass←v14848; { /* SetJointField: */ SOURCE(39494, 303) SOURCE(39579, 218) { word var←c67644; var←c67644 = selectClass←v14848; switch (var←c67644) { case 0: SOURCE(39613, 39) (* (( (ptr) joint←v14792)+2) ) = selected←v14820; break; case 1: SOURCE(39661, 36) (* (( (ptr) joint←v14792)+3) ) = selected←v14820; break; case 2: SOURCE(39709, 39) (* (( (ptr) joint←v14792)+4) ) = selected←v14820; break; case 3: SOURCE(39759, 38) (* (( (ptr) joint←v14792)+5) ) = selected←v14820; break; }; }; } static void SetSegmentField←P3420(seg←v14908, selected←v14936, selectClass←v14964) word seg←v14908; word selected←v14936; word selectClass←v14964; { /* SetSegmentField: */ SOURCE(39812, 297) SOURCE(39899, 210) { word var←c67676; var←c67676 = selectClass←v14964; switch (var←c67676) { case 0: SOURCE(39933, 37) (* (( (ptr) seg←v14908)+17) ) = selected←v14936; break; case 1: SOURCE(39979, 34) (* (( (ptr) seg←v14908)+18) ) = selected←v14936; break; case 2: SOURCE(40025, 37) (* (( (ptr) seg←v14908)+19) ) = selected←v14936; break; case 3: SOURCE(40073, 36) (* (( (ptr) seg←v14908)+20) ) = selected←v14936; break; }; }; } static word CopyJoint←P3480(joint←v15024) word joint←v15024; { register ptr gf←c71068 = (ptr) &globalframe; word copy←v15068; /* CopyJoint: */ SOURCE(40124, 141) SOURCE(40124, 141) copy←v15068 = 0; SOURCE(40181, 84) { word var←c67708; var←c67708 = XR←NewObject(28, (* (( (ptr) gf←c71068)+13) )); (* (W2Pt) var←c67708 ) = (* (W2Pt) joint←v15024 ); (* (W4Pt) (( (ptr) var←c67708)+2) ) = (* (W4Pt) (( (ptr) joint←v15024)+2) ); copy←v15068 = var←c67708; }; SOURCE(40124, 141) return(copy←v15068); } static void SetTrajRole←P3540(traj←v15128, role←v15156) word traj←v15128; word role←v15156; { register ptr gf←c71100 = (ptr) &globalframe; /* SetTrajRole: */ SOURCE(40271, 142) SOURCE(40335, 78) { word pd316; pd316 = (* (( (ptr) (* (( (ptr) gf←c71100)+192)/* var←c64092 */ ))+6) ); if (((word) ( *( (fPt) ((* (ptr) pd316 ))))(traj←v15128, pd316) == (* (( (ptr) gf←c71100)+30) ))) { SOURCE(40374, 39) (* (ptr) XR←Narrow((* (( (ptr) traj←v15128)+1) ), (* (( (ptr) gf←c71100)+6) )) ) = role←v15156; }; }; } static word GetTrajRole←P3600(traj←v15216) word traj←v15216; { register ptr gf←c71132 = (ptr) &globalframe; word role←v15260; /* GetTrajRole: */ SOURCE(40419, 112) SOURCE(40492, 39) role←v15260 = (* (ptr) XR←Narrow((* (( (ptr) traj←v15216)+1) ), (* (( (ptr) gf←c71132)+6) )) ); SOURCE(40419, 112) return(role←v15260); } static void UnpackSimpleDescriptor←P3660(formal←c0727, traj←v15320, parts←v15348) word formal←c0727; word traj←v15320; word parts←v15348; { register ptr gf←c71164 = (ptr) &globalframe; word success←v15392; word partType←v15420; word trajData←v15448; word joint←v15476; word jointNum←v15504; W2 cp←v15532; word cpNum←v15560; word seg←v15588; word segNum←v15616; /* UnpackSimpleDescriptor: */ SOURCE(40537, 451) SOURCE(40537, 451) success←v15392 = 0; SOURCE(40537, 451) partType←v15420 = 0; SOURCE(40537, 451) trajData←v15448 = 0; SOURCE(40537, 451) joint←v15476 = 0; SOURCE(40537, 451) jointNum←v15504 = 999; SOURCE(40537, 451) cp←v15532.f0 = (* (ptr) &fc224 ); cp←v15532.f1 = (* (ptr) &fc224 ); SOURCE(40537, 451) cpNum←v15560 = 999; SOURCE(40537, 451) seg←v15588 = 0; SOURCE(40537, 451) segNum←v15616 = 999; SOURCE(40810, 59) { word pd318; if ((traj←v15320 == 0)) { goto then0317;}; pd318 = (* (( (ptr) (* (( (ptr) gf←c71164)+192)/* var←c64092 */ ))+6) ); if (((word) ( *( (fPt) ((* (ptr) pd318 ))))(traj←v15320, pd318) != (* (( (ptr) gf←c71164)+30) ))) { then0317: ; SOURCE(40863, 6) goto lab←L100107; }; }; SOURCE(40871, 117) { W10 var←c67740; { word pd319; pd319 = (* (( (ptr) (* (( (ptr) gf←c71164)+189)/* var←c63644 */ ))+36) ); (void) ( *( (fPt) ((* (ptr) pd319 ))))((word) &var←c67740, traj←v15320, parts←v15348, pd319); }; segNum←v15616 = (* (( (ptr) &var←c67740)+9) ); seg←v15588 = (* (( (ptr) &var←c67740)+8) ); cpNum←v15560 = (* (( (ptr) &var←c67740)+7) ); cp←v15532 = (* (W2Pt) (( (ptr) &var←c67740)+5) ); jointNum←v15504 = (* (( (ptr) &var←c67740)+4) ); joint←v15476 = (* (( (ptr) &var←c67740)+3) ); trajData←v15448 = (* (( (ptr) &var←c67740)+2) ); partType←v15420 = (* (( (ptr) &var←c67740)+1) ); success←v15392 = (* (ptr) &var←c67740 ); }; /* removed tail goto */ lab←L100107: ; (* (ptr) formal←c0727 ) = success←v15392; (* (( (ptr) formal←c0727)+1) ) = partType←v15420; (* (( (ptr) formal←c0727)+2) ) = trajData←v15448; (* (( (ptr) formal←c0727)+3) ) = joint←v15476; (* (( (ptr) formal←c0727)+4) ) = jointNum←v15504; (* (W2Pt) (( (ptr) formal←c0727)+5) ) = cp←v15532; (* (( (ptr) formal←c0727)+7) ) = cpNum←v15560; (* (( (ptr) formal←c0727)+8) ) = seg←v15588; (* (( (ptr) formal←c0727)+9) ) = segNum←v15616; return; } static void UnpackHitData←P3720(formal←c0735, hitData←v15676) word formal←c0735; word hitData←v15676; { register ptr gf←c71196 = (ptr) &globalframe; word hitType←v15736; word segNum←v15764; word cpNum←v15792; word jointNum←v15820; W2 hitPoint←v15848; word trajHitData←v26716; /* UnpackHitData: */ SOURCE(40994, 319) SOURCE(41118, 42) trajHitData←v26716 = XR←Narrow(hitData←v15676, (* (( (ptr) gf←c71196)+19) )); SOURCE(41162, 29) hitType←v15736 = (* (ptr) trajHitData←v26716 ); SOURCE(41193, 27) segNum←v15764 = (* (( (ptr) trajHitData←v26716)+1) ); SOURCE(41222, 25) cpNum←v15792 = (* (( (ptr) trajHitData←v26716)+2) ); SOURCE(41249, 31) jointNum←v15820 = (* (( (ptr) trajHitData←v26716)+3) ); SOURCE(41282, 31) hitPoint←v15848 = (* (W2Pt) (( (ptr) trajHitData←v26716)+4) ); /* removed tail goto */ (* (ptr) formal←c0735 ) = hitType←v15736; (* (( (ptr) formal←c0735)+1) ) = segNum←v15764; (* (( (ptr) formal←c0735)+2) ) = cpNum←v15792; (* (( (ptr) formal←c0735)+3) ) = jointNum←v15820; (* (W2Pt) (( (ptr) formal←c0735)+4) ) = hitPoint←v15848; return; } static void PointToVector←P3780(formal←c0738, point←v15944) word formal←c0738; W2 point←v15944; { W3 vector←v15988; /* PointToVector: */ SOURCE(41358, 121) SOURCE(41424, 19) vector←v15988.f0 = point←v15944.f0; SOURCE(41445, 19) vector←v15988.f1 = point←v15944.f1; SOURCE(41466, 13) vector←v15988.f2 = (* (ptr) &fc224 ); /* removed tail goto */ (* (W3Pt) formal←c0738 ) = vector←v15988; return; } static void CrossProduct←P3840(formal←c0742, v1←v16048, v2←v16076) word formal←c0742; W3 v1←v16048; W3 v2←v16076; { W3 prodV←v16120; /* CrossProduct: */ SOURCE(41484, 190) SOURCE(41562, 36) { word x320; word x321; word x322; word x323; *(float*)&prodV←v16120.f0 = (( x320 = v1←v16048.f1, *(float*)&x320 ) * ( x321 = v2←v16076.f2, *(float*)&x321 )) - (( x322 = v1←v16048.f2, *(float*)&x322 ) * ( x323 = v2←v16076.f1, *(float*)&x323 )); }; SOURCE(41600, 36) { word x324; word x325; word x326; word x327; *(float*)&prodV←v16120.f1 = (( x324 = v1←v16048.f2, *(float*)&x324 ) * ( x325 = v2←v16076.f0, *(float*)&x325 )) - (( x326 = v1←v16048.f0, *(float*)&x326 ) * ( x327 = v2←v16076.f2, *(float*)&x327 )); }; SOURCE(41638, 36) { word x328; word x329; word x330; word x331; *(float*)&prodV←v16120.f2 = (( x328 = v1←v16048.f0, *(float*)&x328 ) * ( x329 = v2←v16076.f1, *(float*)&x329 )) - (( x330 = v1←v16048.f1, *(float*)&x330 ) * ( x331 = v2←v16076.f0, *(float*)&x331 )); }; /* removed tail goto */ (* (W3Pt) formal←c0742 ) = prodV←v16120; return; } static word GetPartialArea←P3900(pt1←v16180, pt2←v16208) W2 pt1←v16180; W2 pt2←v16208; { word partial←v16252; W3 D1←v26760; W3 D2←v26788; W3 areaVector←v26816; /* GetPartialArea: */ SOURCE(41680, 242) SOURCE(41754, 33) (void) PointToVector←P3780((word) &D1←v26760, pt1←v16180); SOURCE(41789, 33) (void) PointToVector←P3780((word) &D2←v26788, pt2←v16208); SOURCE(41824, 43) (void) CrossProduct←P3840((word) &areaVector←v26816, D2←v26788, D1←v26760); SOURCE(41900, 22) return(areaVector←v26816.f2); } static word SignedArea←P3960(slice←v16312) word slice←v16312; { word area←v16356; W2 lastPoint←v26860; W2 thisPoint←v26888; word hiSeg←v26916; word thisSeg←v26944 = 0; /* SignedArea: */ SOURCE(41928, 577) SOURCE(41928, 577) area←v16356 = (* (ptr) &fc224 ); SOURCE(41991, 53) (void) FetchJointPos←P1920((word) &lastPoint←v26860, slice←v16312, 0); thisPoint←v26888 = lastPoint←v26860; SOURCE(42046, 29) hiSeg←v26916 = (word) HiSegment←P2220(slice←v16312); SOURCE(42095, 410) { register word index←v26988 = 0; register word noName←c67772; noName←c67772 = hiSeg←v26916; if ((index←v26988 > noName←c67772)) { goto lab←L100111; }; lab←L100114: ; SOURCE(42127, 36) thisSeg←v26944 = (word) FetchSegment←P1740(slice←v16312, index←v26988); SOURCE(42165, 194) { register word cpIndex←v27032 = 0; register word noName←c67804; { word pd332; pd332 = (* (( (ptr) (* (ptr) thisSeg←v26944 ))+17) ); noName←c67804 = (word) ( *( (fPt) ((* (ptr) pd332 ))))(thisSeg←v26944, pd332); }; if ((cpIndex←v27032 >= noName←c67804)) { goto lab←L100115; }; lab←L100118: ; SOURCE(42234, 102) { W2 var←c67836; word var←c0999; { W2 var←c67868; { word pd333; pd333 = (* (( (ptr) (* (ptr) thisSeg←v26944 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd333 ))))((word) &var←c67868, thisSeg←v26944, cpIndex←v27032, pd333); }; thisPoint←v26888 = var←c67868; var←c67836 = var←c67868; }; var←c0999 = (word) GetPartialArea←P3900(lastPoint←v26860, var←c67836); { word x334; word x335; *(float*)&area←v16356 = ( x334 = area←v16356, *(float*)&x334 ) + ( x335 = var←c0999, *(float*)&x335 ); }; }; SOURCE(42338, 21) lastPoint←v26860 = thisPoint←v26888; cpIndex←v27032 = (cpIndex←v27032 + 1); if ((cpIndex←v27032 < noName←c67804)) { goto lab←L100118; }; lab←L100115: ; }; SOURCE(42370, 111) { W2 var←c67900; word var←c01000; { W2 var←c67932; (void) FetchJointPos←P1920((word) &var←c67932, slice←v16312, ( (index←v26988 == hiSeg←v26916) ? 0 : (index←v26988 + 1) ) ) ; thisPoint←v26888 = var←c67932; var←c67900 = var←c67932; }; var←c01000 = (word) GetPartialArea←P3900(lastPoint←v26860, var←c67900); { word x336; word x337; *(float*)&area←v16356 = ( x336 = area←v16356, *(float*)&x336 ) + ( x337 = var←c01000, *(float*)&x337 ); }; }; SOURCE(42484, 21) lastPoint←v26860 = thisPoint←v26888; if ((index←v26988 >= noName←c67772)) { goto lab←L100111; }; index←v26988 = (index←v26988 + 1); goto lab←L100114; lab←L100111: ; }; SOURCE(41928, 577) return(area←v16356); } static word SignedAreaTransformSeq←P4020(descriptor←v16416, transform←v16444) word descriptor←v16416; word transform←v16444; { register ptr gf←c71228 = (ptr) &globalframe; word area←v16488; W2 lastPoint←v27076; W2 thisPoint←v27104; word trajParts←v27132; word hiSeg←v27160; word thisSeg←v27188 = 0; /* SignedAreaTransformSeq: */ SOURCE(42541, 1109) SOURCE(42541, 1109) area←v16488 = (* (ptr) &fc224 ); SOURCE(42708, 47) trajParts←v27132 = XR←Narrow((* (( (ptr) descriptor←v16416)+1) ), (* (( (ptr) gf←c71228)+18) )); SOURCE(42757, 40) hiSeg←v27160 = (word) HiSegment←P2220((* (ptr) (descriptor←v16416) )); { word var←c67964; SOURCE(42817, 46) (void) FetchJointPos←P1920((word) &lastPoint←v27076, (* (ptr) descriptor←v16416 ), 0); SOURCE(42865, 92) { word limit338; var←c67964 = (* (( (ptr) trajParts←v27132)+1) ); if (XR←ExtractField(var←c67964, 32 + (word) ( limit338 = (* (ptr) var←c67964 ), BCK(0, limit338) ), 1)) { SOURCE(42893, 64) { word pd339; pd339 = (* (( (ptr) (* (( (ptr) gf←c71228)+198)/* var←c66076 */ ))+39) ); (void) ( *( (fPt) ((* (ptr) pd339 ))))((word) &lastPoint←v27076, transform←v16444, lastPoint←v27076, pd339); }; }; }; SOURCE(42959, 691) { register word index←v27232 = 0; register word noName←c67996; noName←c67996 = hiSeg←v27160; if ((index←v27232 > noName←c67996)) { goto lab←L100119; }; lab←L100122: ; { word var←c68124; word var←c68156; SOURCE(42991, 47) thisSeg←v27188 = (word) FetchSegment←P1740((* (ptr) descriptor←v16416 ), index←v27232); SOURCE(43040, 317) { register word cpIndex←v27276 = 0; register word noName←c68028; { word pd340; pd340 = (* (( (ptr) (* (ptr) thisSeg←v27188 ))+17) ); noName←c68028 = (word) ( *( (fPt) ((* (ptr) pd340 ))))(thisSeg←v27188, pd340); }; if ((cpIndex←v27276 >= noName←c68028)) { goto lab←L100123; }; lab←L100126: ; { word var←c68092; SOURCE(43109, 59) { word pd341; pd341 = (* (( (ptr) (* (ptr) thisSeg←v27188 ))+16) ); (void) ( *( (fPt) ((* (ptr) pd341 ))))((word) &thisPoint←v27104, thisSeg←v27188, cpIndex←v27276, pd341); }; SOURCE(43170, 112) { word limit343; { word var←c68060; var←c68060 = (* (( (ptr) trajParts←v27132)+2) ); { word limit342; var←c68092 = (* ((( (ptr) var←c68060)+1)+( /*1*/ limit342 = (* (ptr) var←c68060 ), /*1*/ BCK(index←v27232, limit342) /*1*/ )) ); }; }; if (XR←ExtractField(var←c68092, 32 + (word) ( limit343 = (* (ptr) var←c68092 ), BCK(cpIndex←v27276, limit343) ), 1)) { SOURCE(43218, 64) { word pd344; pd344 = (* (( (ptr) (* (( (ptr) gf←c71228)+198)/* var←c66076 */ ))+39) ); (void) ( *( (fPt) ((* (ptr) pd344 ))))((word) &thisPoint←v27104, transform←v16444, thisPoint←v27104, pd344); }; }; }; SOURCE(43284, 50) { word x345; word x346; *(float*)&area←v16488 = ( x345 = area←v16488, *(float*)&x345 ) + ( x346 = (word) GetPartialArea←P3900(lastPoint←v27076, thisPoint←v27104), *(float*)&x346 ); }; SOURCE(43336, 21) lastPoint←v27076 = thisPoint←v27104; }; cpIndex←v27276 = (cpIndex←v27276 + 1); if ((cpIndex←v27276 < noName←c68028)) { goto lab←L100126; }; lab←L100123: ; }; SOURCE(43368, 79) (void) FetchJointPos←P1920((word) &thisPoint←v27104, (* (ptr) descriptor←v16416 ), ( (index←v27232 == hiSeg←v27160) ? 0 : (index←v27232 + 1) ) ); SOURCE(43449, 125) { word limit347; var←c68124 = ( (index←v27232 == hiSeg←v27160) ? 0 : (index←v27232 + 1) ) ; var←c68156 = (* (( (ptr) trajParts←v27132)+1) ); if (XR←ExtractField(var←c68156, 32 + (word) ( limit347 = (* (ptr) var←c68156 ), BCK(var←c68124, limit347) ), 1)) { SOURCE(43510, 64) { word pd348; pd348 = (* (( (ptr) (* (( (ptr) gf←c71228)+198)/* var←c66076 */ ))+39) ); (void) ( *( (fPt) ((* (ptr) pd348 ))))((word) &thisPoint←v27104, transform←v16444, thisPoint←v27104, pd348); }; }; }; SOURCE(43576, 50) { word x349; word x350; *(float*)&area←v16488 = ( x349 = area←v16488, *(float*)&x349 ) + ( x350 = (word) GetPartialArea←P3900(lastPoint←v27076, thisPoint←v27104), *(float*)&x350 ); }; SOURCE(43629, 21) lastPoint←v27076 = thisPoint←v27104; }; if ((index←v27232 >= noName←c67996)) { goto lab←L100119; }; index←v27232 = (index←v27232 + 1); goto lab←L100122; lab←L100119: ; }; }; SOURCE(42541, 1109) return(area←v16488); } static word OnlyChild←P4080(slice←v16548) word slice←v16548; { register ptr gf←c71260 = (ptr) &globalframe; word var←c16592; word trajData←v27320; word outline←v27348; word outlineData←v27376; /* OnlyChild: */ SOURCE(43807, 254) SOURCE(43864, 39) trajData←v27320 = XR←Narrow((* (( (ptr) slice←v16548)+1) ), (* (( (ptr) gf←c71260)+6) )); SOURCE(43942, 29) outline←v27348 = (* (( (ptr) slice←v16548)+2) ); SOURCE(43973, 47) outlineData←v27376 = XR←Narrow((* (( (ptr) outline←v27348)+1) ), (* (( (ptr) gf←c71260)+17) )); SOURCE(44022, 39) return( (unsigned) ((* (( (ptr) (* (( (ptr) outlineData←v27376)+4) ))+1) ) == 0)); } static void NearestSegment←P4140(formal←c0823, formal←c01025, descriptor←v16680, formal←c01026) word formal←c0823; W2 formal←c01025; word descriptor←v16680; word formal←c01026; { W18 var←c71292; /* declaration of testPoint←v16652 skipped */ /* declaration of tolerance←v16708 skipped */ register ptr gf←c71324 = (ptr) &globalframe; word bestDist←v16752; /* declaration of bestSeg←v16780 skipped */ /* declaration of bestPoint←v16808 skipped */ W2 bestNormal←v16836; /* declaration of success←v16864 skipped */ /* declaration of var←c68188 skipped */ word traj←v27420; word trajData←v27448; word trajParts←v27476; /* declaration of thisDist2←v27504 skipped */ /* declaration of bestDist2←v27532 skipped */ /* declaration of thisPoint←v27560 skipped */ /* declaration of thisSuccess←v27588 skipped */ word tolerance2←v27616; (* (W2Pt) (( (ptr) &var←c71292)+4)/* testPoint←v16652 */ ) = formal←c01025; (* (( (ptr) &var←c71292)+6)/* tolerance←v16708 */ ) = formal←c01026; /* NearestSegment: */ SOURCE(46129, 1641) { word tmpAddr351; tmpAddr351 = (word) (( (ptr) &var←c71292)+11)/* var←c68188 */ ; (* (ptr) tmpAddr351 ) = ( ((word) (fPt) ProcessSegment←P6756) ); (* (( (ptr) tmpAddr351) + 1) ) = 1; }; SOURCE(46129, 1641) bestDist←v16752 = (* (ptr) &fc224 ); SOURCE(46129, 1641) (* (( (ptr) &var←c71292)+7)/* bestSeg←v16780 */ ) = 0; SOURCE(46129, 1641) (* (( (ptr) &var←c71292)+8) ) = (* (ptr) &fc224 ); (* (( (ptr) &var←c71292)+9) ) = (* (ptr) &fc224 ); SOURCE(46129, 1641) bestNormal←v16836.f0 = (* (ptr) &fc224 ); bestNormal←v16836.f1 = (* (ptr) &fc281 ); SOURCE(46129, 1641) (* (( (ptr) &var←c71292)+10)/* success←v16864 */ ) = 0; SOURCE(46358, 30) traj←v27420 = (* (ptr) descriptor←v16680 ); SOURCE(46390, 38) trajData←v27448 = XR←Narrow((* (( (ptr) traj←v27420)+1) ), (* (( (ptr) gf←c71324)+6) )); SOURCE(46430, 47) trajParts←v27476 = XR←Narrow((* (( (ptr) descriptor←v16680)+1) ), (* (( (ptr) gf←c71324)+18) )); SOURCE(46525, 25) (* (( (ptr) &var←c71292)+17)/* thisSuccess←v27588 */ ) = 0; SOURCE(46552, 38) { word x352; word x353; *(float*)&tolerance2←v27616 = ( x352 = (* (( (ptr) &var←c71292)+6)/* tolerance←v16708 */ ), *(float*)&x352 ) * ( x353 = (* (( (ptr) &var←c71292)+6)/* tolerance←v16708 */ ), *(float*)&x353 ); }; { word var←c68220; SOURCE(46939, 99) { word pd355; { word pd354; pd354 = (* (( (ptr) (* (( (ptr) gf←c71324)+192)/* var←c64092 */ ))+9) ); var←c68220 = (word) ( *( (fPt) ((* (ptr) pd354 ))))(traj←v27420, 0, pd354); }; pd355 = (* (( (ptr) (* (( (ptr) gf←c71324)+185)/* var←c62652 */ ))+22) ); if ((0 == (word) ( *( (fPt) ((* (ptr) pd355 ))))((* (W2Pt) (( (ptr) &var←c71292)+4)/* testPoint←v16652 */ ), var←c68220, (* ( ( (ptr) &var←c71292)+6)/* tolerance←v16708 */ ), pd355))) { SOURCE(47032, 6) goto lab←L100127; }; }; SOURCE(47060, 20) bestDist←v16752 = (* (( (ptr) &var←c71292)+6)/* tolerance←v16708 */ ); SOURCE(47082, 22) (* (( (ptr) &var←c71292)+14)/* bestDist2←v27532 */ ) = tolerance2←v27616; SOURCE(47106, 15) (* (( (ptr) &var←c71292)+7)/* bestSeg←v16780 */ ) = 7777; SOURCE(47159, 24) (* (( (ptr) &var←c71292)+8) ) = (* (ptr) &fc281 ); (* (( (ptr) &var←c71292)+9) ) = (* (ptr) &fc281 ); SOURCE(47185, 75) { word var←c68252; word pd356; pd356 = (* (( (ptr) (* (( (ptr) gf←c71324)+189)/* var←c63644 */ ))+43) ); var←c68252 = (word) ( *( (fPt) ((* (ptr) pd356 ))))(trajData←v27448, trajParts←v27476, (word) (( (bPt) &var←c71292)+44)/* var←c68188 */ , pd356) ; }; SOURCE(47263, 507) if ((0 != (* (( (ptr) &var←c71292)+10)/* success←v16864 */ ))) { SOURCE(47279, 496) { W2 jointPoint←v27688; word diffX←v27716; word diffY←v27744; SOURCE(47350, 34) { word pd357; pd357 = (* (( (ptr) (* (( (ptr) gf←c71324)+201)/* var←c66492 */ ))+9) ); bestDist←v16752 = (word) ( *( (fPt) ((* (ptr) pd357 ))))((* ((( (ptr) &var←c71292)+14)/* bestDist2←v27532 */ ) ), pd357) ; }; SOURCE(47386, 48) { word pd358; pd358 = (* (( (ptr) (* (( (ptr) gf←c71324)+188)/* var←c63004 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd358 ))))((word) &bestNormal←v16836, (* (W2Pt) (( (ptr) &var←c71292)+4)/* testPoint←v16652 */ ), (* (W2Pt) ( ( (ptr) &var←c71292)+8)/* bestPoint←v16808 */ ), pd358); }; SOURCE(47436, 41) (void) FetchJointPos←P1920((word) &jointPoint←v27688, traj←v27420, (* (( (ptr) &var←c71292)+7)/* bestSeg←v16780 */ )); SOURCE(47479, 39) { float tf359; word x360; word x361; float tf362; diffX←v27716 = ( tf362 = FABS((( x360 = jointPoint←v27688.f0, *(float*)&x360 ) - ( x361 = (* (( (ptr) &var←c71292)+8) ), *(float*)&x361 )), tf359), *(word*)&tf362 ); }; SOURCE(47520, 39) { float tf363; word x364; word x365; float tf366; diffY←v27744 = ( tf366 = FABS((( x364 = jointPoint←v27688.f1, *(float*)&x364 ) - ( x365 = (* (( (ptr) &var←c71292)+9) ), *(float*)&x365 )), tf363), *(word*)&tf366 ); }; SOURCE(47561, 209) { word x367; word x369; word x370; word x371; if ( ( ( ((* (ptr) trajData←v27448 ) == 2) ? (( x367 = diffX←v27716, *(float*)&x367 ) < ( x369 = (* (ptr) &fc368 ), *(float*)&x369 )) : 0 ) ? (( x370 = diffY←v27744, *(float*)&x370 ) < ( x371 = (* (ptr) &fc368 ), *(float*)&x371 )) : 0 ) ) { SOURCE(47624, 148) { word bestSegment←v27788; W4 var←c0822; SOURCE(47626, 50) bestSegment←v27788 = (word) FetchSegment←P1740(traj←v27420, (* (( (ptr) &var←c71292)+7)/* bestSeg←v16780 */ )); SOURCE(47678, 92) { word pd372; pd372 = (* (( (ptr) (* (ptr) bestSegment←v27788 ))+26) ); (void) ( *( (fPt) ((* (ptr) pd372 ))))((word) &var←c0822, bestSegment←v27788, jointPoint←v27688, (* (W2Pt) (( (ptr) &var←c71292)+4) /* testPoint←v16652 */ ), 0, pd372); }; bestNormal←v16836 = (* (W2Pt) &var←c0822 ); }; }; }; }; }; }; /* removed tail goto */ lab←L100127: ; (* (ptr) formal←c0823 ) = bestDist←v16752; (* (( (ptr) formal←c0823)+1) ) = (* (( (ptr) &var←c71292)+7)/* bestSeg←v16780 */ ); (* (W2Pt) (( (ptr) formal←c0823)+2) ) = (* (W2Pt) (( (ptr) &var←c71292)+8)/* bestPoint←v16808 */ ); (* (W2Pt) (( (ptr) formal←c0823)+4) ) = bestNormal←v16836; (* (( (ptr) formal←c0823)+6) ) = (* (( (ptr) &var←c71292)+10)/* success←v16864 */ ); return; } static word ProcessSegment←P6756(traj←v57492, seg←v57520, index←v57548, formal←c71388) word traj←v57492; word seg←v57520; word index←v57548; word formal←c71388; { register ptr gf←c71356 = (ptr) &globalframe; word done←v57592; formal←c71388 = (formal←c71388 - 44); /* ProcessSegment: */ SOURCE(46592, 317) SOURCE(46592, 317) done←v57592 = 0; SOURCE(46639, 76) { W3 var←c68284; { word pd373; pd373 = (* (( (ptr) (* (ptr) seg←v57520 ))+18) ); (void) ( *( (fPt) ((* (ptr) pd373 ))))((word) &var←c68284, seg←v57520, (* (W2Pt) (( (ptr) formal←c71388)+4) ), (* (( (ptr) formal←c71388)+6) ), pd373); }; (* (( (ptr) formal←c71388)+17) ) = var←c68284.f2; (* (W2Pt) (( (ptr) formal←c71388)+15) ) = (* (W2Pt) &var←c68284 ); }; SOURCE(46717, 192) if ((0 != (* (( (ptr) formal←c71388)+17) ))) { SOURCE(46739, 59) { word pd374; pd374 = (* (( (ptr) (* (( (ptr) gf←c71356)+188)/* var←c63004 */ ))+21) ); (* (( (ptr) formal←c71388)+13) ) = (word) ( *( (fPt) ((* (ptr) pd374 ))))((* (W2Pt) (( (ptr) formal←c71388)+15) ), (* (W2Pt) ( ( (ptr) formal←c71388)+4) ), pd374); }; SOURCE(46800, 109) { word x375; word x376; if ((( x375 = (* (( (ptr) formal←c71388)+13) ), *(float*)&x375 ) < ( x376 = (* (( (ptr) formal←c71388)+14) ), *(float*)&x376 ))) { SOURCE(46832, 21) (* (( (ptr) formal←c71388)+14) ) = (* (( (ptr) formal←c71388)+13) ); SOURCE(46855, 15) (* (( (ptr) formal←c71388)+7) ) = index←v57548; SOURCE(46872, 21) (* (W2Pt) (( (ptr) formal←c71388)+8) ) = (* (W2Pt) (( (ptr) formal←c71388)+15) ); SOURCE(46895, 14) (* (( (ptr) formal←c71388)+10) ) = 1; }; }; }; SOURCE(46592, 317) return(done←v57592); } static void NearestJoint←P4200(formal←c0862, formal←c01027, descriptor←v16952, tolerance←v16980) word formal←c0862; W2 formal←c01027; word descriptor←v16952; word tolerance←v16980; { W14 var←c71420; /* declaration of testPoint←v16924 skipped */ register ptr gf←c71452 = (ptr) &globalframe; word bestDist←v17024; /* declaration of bestJoint←v17052 skipped */ /* declaration of bestPoint←v17080 skipped */ W2 bestNormal←v17108; /* declaration of success←v17136 skipped */ /* declaration of var←c68316 skipped */ word traj←v27832; word trajData←v27860; word trajParts←v27888; word tolerance2←v27916; /* declaration of thisDist2←v27944 skipped */ /* declaration of bestDist2←v27972 skipped */ word seg1←v28000 = 0; word seg2←v28028 = 0; W2 normal1←v28056; W2 normal2←v28084; W2 tangent1←v28112; W2 tangent2←v28140; W2 direction←v28168; (* (W2Pt) (( (ptr) &var←c71420)+4)/* testPoint←v16924 */ ) = formal←c01027; /* NearestJoint: */ SOURCE(47782, 1984) { word tmpAddr377; tmpAddr377 = (word) (( (ptr) &var←c71420)+10)/* var←c68316 */ ; (* (ptr) tmpAddr377 ) = ( ((word) (fPt) ProcessJoint←P6912) ); (* (( (ptr) tmpAddr377) + 1) ) = 1; }; SOURCE(47782, 1984) bestDist←v17024 = (* (ptr) &fc224 ); SOURCE(47782, 1984) (* (( (ptr) &var←c71420)+6)/* bestJoint←v17052 */ ) = 0; SOURCE(47782, 1984) (* (( (ptr) &var←c71420)+7) ) = (* (ptr) &fc224 ); (* (( (ptr) &var←c71420)+8) ) = (* (ptr) &fc224 ); SOURCE(47782, 1984) bestNormal←v17108.f0 = (* (ptr) &fc224 ); bestNormal←v17108.f1 = (* (ptr) &fc281 ); SOURCE(47782, 1984) (* (( (ptr) &var←c71420)+9)/* success←v17136 */ ) = 0; SOURCE(48011, 30) traj←v27832 = (* (ptr) descriptor←v16952 ); SOURCE(48043, 38) trajData←v27860 = XR←Narrow((* (( (ptr) traj←v27832)+1) ), (* (( (ptr) gf←c71452)+6) )); SOURCE(48083, 47) trajParts←v27888 = XR←Narrow((* (( (ptr) descriptor←v16952)+1) ), (* (( (ptr) gf←c71452)+18) )); SOURCE(48132, 38) { word x378; word x379; *(float*)&tolerance2←v27916 = ( x378 = tolerance←v16980, *(float*)&x378 ) * ( x379 = tolerance←v16980, *(float*)&x379 ); }; { word var←c68348; SOURCE(48572, 99) { word pd381; { word pd380; pd380 = (* (( (ptr) (* (( (ptr) gf←c71452)+192)/* var←c64092 */ ))+9) ); var←c68348 = (word) ( *( (fPt) ((* (ptr) pd380 ))))(traj←v27832, 0, pd380); }; pd381 = (* (( (ptr) (* (( (ptr) gf←c71452)+185)/* var←c62652 */ ))+22) ); if ((0 == (word) ( *( (fPt) ((* (ptr) pd381 ))))((* (W2Pt) (( (ptr) &var←c71420)+4)/* testPoint←v16924 */ ), var←c68348, tolerance←v16980, pd381) )) { SOURCE(48665, 6) goto lab←L100128; }; }; SOURCE(48693, 20) bestDist←v17024 = tolerance←v16980; SOURCE(48715, 22) (* (( (ptr) &var←c71420)+13)/* bestDist2←v27972 */ ) = tolerance2←v27916; SOURCE(48739, 19) (* (( (ptr) &var←c71420)+6)/* bestJoint←v17052 */ ) = 9999; SOURCE(48760, 24) (* (( (ptr) &var←c71420)+7) ) = (* (ptr) &fc281 ); (* (( (ptr) &var←c71420)+8) ) = (* (ptr) &fc281 ); SOURCE(48786, 74) { word pd382; pd382 = (* (( (ptr) (* (( (ptr) gf←c71452)+189)/* var←c63644 */ ))+55) ); (void) ( *( (fPt) ((* (ptr) pd382 ))))(trajData←v27860, trajParts←v27888, (word) (( (bPt) &var←c71420)+40)/* var←c68316 */ , pd382) ; }; SOURCE(48863, 903) if ((0 != (* (( (ptr) &var←c71420)+9)/* success←v17136 */ ))) { SOURCE(48903, 34) { word pd383; pd383 = (* (( (ptr) (* (( (ptr) gf←c71452)+201)/* var←c66492 */ ))+9) ); bestDist←v17024 = (word) ( *( (fPt) ((* (ptr) pd383 ))))((* ((( (ptr) &var←c71420)+13)/* bestDist2←v27972 */ ) ), pd383) ; }; SOURCE(48939, 145) if (((word) HiSegment←P2220(traj←v27832) < (* (( (ptr) &var←c71420)+6)/* bestJoint←v17052 */ ))) { SOURCE(48975, 73) if (((* (ptr) trajData←v27860 ) == 2)) { seg2←v28028 = 0; } else { seg2←v28028 = (word) FetchSegment←P1740(traj←v27832, 0); }; } else { SOURCE(49048, 36) seg2←v28028 = (word) FetchSegment←P1740(traj←v27832, (* (( (ptr) &var←c71420)+6)/* bestJoint←v17052 */ )); }; SOURCE(49086, 39) seg1←v28000 = (word) PreviousSegment←P2460(traj←v27832, (* (( (ptr) &var←c71420)+6)/* bestJoint←v17052 */ )); SOURCE(49127, 639) if ( ( (seg1←v28000 != 0) ? (seg2←v28028 != 0) : 0 ) ) { SOURCE(49163, 80) { W4 var←c68380; { word pd384; pd384 = (* (( (ptr) (* (ptr) seg2←v28028 ))+26) ); (void) ( *( (fPt) ((* (ptr) pd384 ))))((word) &var←c68380, seg2←v28028, (* (W2Pt) (( (ptr) &var←c71420)+7)/* bestPoint←v17080 */ ), (* (W2Pt) ( ( (ptr) &var←c71420)+4)/* testPoint←v16924 */ ), 0, pd384); }; tangent2←v28140 = (* (W2Pt) (( (ptr) &var←c68380)+2) ); normal2←v28084 = (* (W2Pt) &var←c68380 ); }; SOURCE(49245, 78) { W4 var←c68412; { word pd385; pd385 = (* (( (ptr) (* (ptr) seg1←v28000 ))+26) ); (void) ( *( (fPt) ((* (ptr) pd385 ))))((word) &var←c68412, seg1←v28000, (* (W2Pt) (( (ptr) &var←c71420)+7)/* bestPoint←v17080 */ ), (* (W2Pt) ( ( (ptr) &var←c71420)+4)/* testPoint←v16924 */ ), 1, pd385); }; tangent1←v28112 = (* (W2Pt) (( (ptr) &var←c68412)+2) ); normal1←v28056 = (* (W2Pt) &var←c68412 ); }; SOURCE(49325, 60) { word pd386; pd386 = (* (( (ptr) (* (( (ptr) gf←c71452)+188)/* var←c63004 */ ))+22) ); (void) ( *( (fPt) ((* (ptr) pd386 ))))((word) &direction←v28168, (* (W2Pt) (( (ptr) &var←c71420)+7)/* bestPoint←v17080 */ ), (* (W2Pt) ( ( (ptr) &var←c71420)+4)/* testPoint←v16924 */ ), pd386); }; SOURCE(49387, 173) { float tf387; word pd388; word x389; float tf390; word pd391; word x392; pd388 = (* (( (ptr) (* (( (ptr) gf←c71452)+188)/* var←c63004 */ ))+9) ); pd391 = (* (( (ptr) (* (( (ptr) gf←c71452)+188)/* var←c63004 */ ))+9) ); if ((FABS(( x389 = (word) ( *( (fPt) ((* (ptr) pd388 ))))(tangent1←v28112, direction←v28168, pd388), *(float*)&x389 ), tf387) < FABS(( x392 = (word) ( *( (fPt) ((* (ptr) pd391 ))))(tangent2←v28140, direction←v28168, pd391), *(float*)&x392 ), tf390))) { bestNormal←v17108 = normal1←v28056; } else { bestNormal←v17108 = normal2←v28084; }; }; } else { SOURCE(49571, 96) if ((seg1←v28000 != 0)) { SOURCE(49590, 77) { W4 var←c68444; { word pd393; pd393 = (* (( (ptr) (* (ptr) seg1←v28000 ))+26) ); (void) ( *( (fPt) ((* (ptr) pd393 ))))((word) &var←c68444, seg1←v28000, (* (W2Pt) (( (ptr) &var←c71420)+7)/* bestPoint←v17080 */ ), (* (W2Pt) ( ( (ptr) &var←c71420)+4)/* testPoint←v16924 */ ), 1, pd393); }; bestNormal←v17108 = (* (W2Pt) &var←c68444 ); }; }; SOURCE(49669, 97) if ((seg2←v28028 != 0)) { SOURCE(49688, 78) { W4 var←c68476; { word pd394; pd394 = (* (( (ptr) (* (ptr) seg2←v28028 ))+26) ); (void) ( *( (fPt) ((* (ptr) pd394 ))))((word) &var←c68476, seg2←v28028, (* (W2Pt) (( (ptr) &var←c71420)+7)/* bestPoint←v17080 */ ), (* (W2Pt) ( ( (ptr) &var←c71420)+4)/* testPoint←v16924 */ ), 0, pd394); }; bestNormal←v17108 = (* (W2Pt) &var←c68476 ); }; }; }; }; }; /* removed tail goto */ lab←L100128: ; (* (ptr) formal←c0862 ) = bestDist←v17024; (* (( (ptr) formal←c0862)+1) ) = (* (( (ptr) &var←c71420)+6)/* bestJoint←v17052 */ ); (* (W2Pt) (( (ptr) formal←c0862)+2) ) = (* (W2Pt) (( (ptr) &var←c71420)+7)/* bestPoint←v17080 */ ); (* (W2Pt) (( (ptr) formal←c0862)+4) ) = bestNormal←v17108; (* (( (ptr) formal←c0862)+6) ) = (* (( (ptr) &var←c71420)+9)/* success←v17136 */ ); return; } static word ProcessJoint←P6912(traj←v28272, jointPos←v28300, index←v28328, formal←c71516) word traj←v28272; W2 jointPos←v28300; word index←v28328; word formal←c71516; { register ptr gf←c71484 = (ptr) &globalframe; word done←v28372; formal←c71516 = (formal←c71516 - 40); /* ProcessJoint: */ SOURCE(48278, 268) SOURCE(48278, 268) done←v28372 = 0; SOURCE(48376, 58) { word pd395; pd395 = (* (( (ptr) (* (( (ptr) gf←c71484)+188)/* var←c63004 */ ))+21) ); (* (( (ptr) formal←c71516)+12) ) = (word) ( *( (fPt) ((* (ptr) pd395 ))))(jointPos←v28300, (* (W2Pt) (( (ptr) formal←c71516)+4) ), pd395); }; SOURCE(48436, 110) { word x396; word x397; if ((( x396 = (* (( (ptr) formal←c71516)+12) ), *(float*)&x396 ) < ( x397 = (* (( (ptr) formal←c71516)+13) ), *(float*)&x397 ))) { SOURCE(48468, 21) (* (( (ptr) formal←c71516)+13) ) = (* (( (ptr) formal←c71516)+12) ); SOURCE(48491, 17) (* (( (ptr) formal←c71516)+6) ) = index←v28328; SOURCE(48510, 20) (* (W2Pt) (( (ptr) formal←c71516)+7) ) = jointPos←v28300; SOURCE(48532, 14) (* (( (ptr) formal←c71516)+9) ) = 1; }; }; SOURCE(48278, 268) return(done←v28372); } static void NearestControlPoint←P4260(formal←c0890, formal←c01028, descriptor←v17224, formal←c01029) word formal←c0890; W2 formal←c01028; word descriptor←v17224; word formal←c01029; { W27 var←c71548; /* declaration of testPoint←v17196 skipped */ /* declaration of tolerance←v17252 skipped */ register ptr gf←c71580 = (ptr) &globalframe; word bestDist←v17296; /* declaration of bestSeg←v17324 skipped */ /* declaration of bestControlPoint←v17352 skipped */ /* declaration of bestPoint←v17380 skipped */ /* declaration of bestNormal←v17408 skipped */ /* declaration of success←v17436 skipped */ /* declaration of var←c68508 skipped */ /* declaration of var←c68540 skipped */ word traj←v28428; word trajData←v28456; /* declaration of trajParts←v28484 skipped */ word tolerance2←v28512; /* declaration of thisDist2←v28540 skipped */ /* declaration of bestDist2←v28568 skipped */ /* declaration of thisControlPoint←v28596 skipped */ /* declaration of thisPoint←v28624 skipped */ /* declaration of thisNormal←v28652 skipped */ /* declaration of thisSuccess←v28680 skipped */ (* (W2Pt) (( (ptr) &var←c71548)+4)/* testPoint←v17196 */ ) = formal←c01028; (* (( (ptr) &var←c71548)+6)/* tolerance←v17252 */ ) = formal←c01029; /* NearestControlPoint: */ SOURCE(49778, 1657) { word tmpAddr398; tmpAddr398 = (word) (( (ptr) &var←c71548)+14)/* var←c68508 */ ; (* (ptr) tmpAddr398 ) = ( ((word) (fPt) ProcessSegment←P7032) ); (* (( (ptr) tmpAddr398) + 1) ) = 1; }; { word tmpAddr399; tmpAddr399 = (word) (( (ptr) &var←c71548)+16)/* var←c68540 */ ; (* (ptr) tmpAddr399 ) = ( ((word) (fPt) SomeCP←P6972) ); (* (( (ptr) tmpAddr399) + 1) ) = 1; }; SOURCE(49778, 1657) bestDist←v17296 = (* (ptr) &fc224 ); SOURCE(49778, 1657) (* (( (ptr) &var←c71548)+7)/* bestSeg←v17324 */ ) = 0; SOURCE(49778, 1657) (* (( (ptr) &var←c71548)+8)/* bestControlPoint←v17352 */ ) = 0; SOURCE(49778, 1657) (* (( (ptr) &var←c71548)+9) ) = (* (ptr) &fc224 ); (* (( (ptr) &var←c71548)+10) ) = (* (ptr) &fc224 ); SOURCE(49778, 1657) (* (( (ptr) &var←c71548)+11) ) = (* (ptr) &fc224 ); (* (( (ptr) &var←c71548)+12) ) = (* (ptr) &fc281 ); SOURCE(49778, 1657) (* (( (ptr) &var←c71548)+13)/* success←v17436 */ ) = 0; SOURCE(50236, 30) traj←v28428 = (* (ptr) descriptor←v17224 ); SOURCE(50268, 38) trajData←v28456 = XR←Narrow((* (( (ptr) traj←v28428)+1) ), (* (( (ptr) gf←c71580)+6) )); SOURCE(50308, 47) (* (( (ptr) &var←c71548)+18)/* trajParts←v28484 */ ) = XR←Narrow((* (( (ptr) descriptor←v17224)+1) ), (* (( (ptr) gf←c71580)+18) )); SOURCE(50357, 38) { word x400; word x401; *(float*)&tolerance2←v28512 = ( x400 = (* (( (ptr) &var←c71548)+6)/* tolerance←v17252 */ ), *(float*)&x400 ) * ( x401 = (* (( (ptr) &var←c71548)+6)/* tolerance←v17252 */ ), *(float*)&x401 ); }; SOURCE(50486, 25) (* (( (ptr) &var←c71548)+26)/* thisSuccess←v28680 */ ) = 0; { word var←c68572; SOURCE(51042, 99) { word pd403; { word pd402; pd402 = (* (( (ptr) (* (( (ptr) gf←c71580)+192)/* var←c64092 */ ))+9) ); var←c68572 = (word) ( *( (fPt) ((* (ptr) pd402 ))))(traj←v28428, 0, pd402); }; pd403 = (* (( (ptr) (* (( (ptr) gf←c71580)+185)/* var←c62652 */ ))+22) ); if ((0 == (word) ( *( (fPt) ((* (ptr) pd403 ))))((* (W2Pt) (( (ptr) &var←c71548)+4)/* testPoint←v17196 */ ), var←c68572, (* ( ( (ptr) &var←c71548)+6)/* tolerance←v17252 */ ), pd403))) { SOURCE(51135, 6) goto lab←L100129; }; }; SOURCE(51163, 20) bestDist←v17296 = (* (( (ptr) &var←c71548)+6)/* tolerance←v17252 */ ); SOURCE(51185, 22) (* (( (ptr) &var←c71548)+20)/* bestDist2←v28568 */ ) = tolerance2←v28512; SOURCE(51209, 15) (* (( (ptr) &var←c71548)+7)/* bestSeg←v17324 */ ) = 7777; SOURCE(51226, 23) (* (( (ptr) &var←c71548)+8)/* bestControlPoint←v17352 */ ) = 8888; SOURCE(51282, 24) (* (( (ptr) &var←c71548)+9) ) = (* (ptr) &fc281 ); (* (( (ptr) &var←c71548)+10) ) = (* (ptr) &fc281 ); SOURCE(51308, 75) { word var←c68604; word pd404; pd404 = (* (( (ptr) (* (( (ptr) gf←c71580)+189)/* var←c63644 */ ))+43) ); var←c68604 = (word) ( *( (fPt) ((* (ptr) pd404 ))))(trajData←v28456, (* (( (ptr) &var←c71548)+18)/* trajParts←v28484 */ ), (word) ( ( (bPt) &var←c71548)+56)/* var←c68508 */ , pd404); }; SOURCE(51385, 50) if ((0 != (* (( (ptr) &var←c71548)+13)/* success←v17436 */ ))) { SOURCE(51401, 34) { word pd405; pd405 = (* (( (ptr) (* (( (ptr) gf←c71580)+201)/* var←c66492 */ ))+9) ); bestDist←v17296 = (word) ( *( (fPt) ((* (ptr) pd405 ))))((* ((( (ptr) &var←c71548)+20)/* bestDist2←v28568 */ ) ), pd405) ; }; }; }; /* removed tail goto */ lab←L100129: ; (* (ptr) formal←c0890 ) = bestDist←v17296; (* (( (ptr) formal←c0890)+1) ) = (* (( (ptr) &var←c71548)+7)/* bestSeg←v17324 */ ); (* (( (ptr) formal←c0890)+2) ) = (* (( (ptr) &var←c71548)+8)/* bestControlPoint←v17352 */ ); (* (W2Pt) (( (ptr) formal←c0890)+3) ) = (* (W2Pt) (( (ptr) &var←c71548)+9)/* bestPoint←v17380 */ ); (* (W2Pt) (( (ptr) formal←c0890)+5) ) = (* (W2Pt) (( (ptr) &var←c71548)+11)/* bestNormal←v17408 */ ); (* (( (ptr) formal←c0890)+7) ) = (* (( (ptr) &var←c71548)+13)/* success←v17436 */ ); return; } static word SomeCP←P6972(i←v28784, formal←c71612) word i←v28784; word formal←c71612; { word var←c28828; word cpCount←v29016; word var←c68636; formal←c71612 = (formal←c71612 - 64); /* SomeCP: */ SOURCE(50039, 192) SOURCE(50080, 45) { word limit406; var←c68636 = (* (( (ptr) (* (( (ptr) formal←c71612)+18) ))+2) ); cpCount←v29016 = (* (ptr) (* ((( (ptr) var←c68636)+1)+( limit406 = (* (ptr) var←c68636 ), BCK(i←v28784, limit406) )) ) ); }; SOURCE(50127, 80) { register word j←v29060 = 0; register word noName←c68668; word var←c68732; noName←c68668 = cpCount←v29016; if ((j←v29060 >= noName←c68668)) { goto lab←L100130; }; lab←L100133: ; SOURCE(50157, 50) { word limit408; { word var←c68700; var←c68700 = (* (( (ptr) (* (( (ptr) formal←c71612)+18) ))+2) ); { word limit407; var←c68732 = (* ((( (ptr) var←c68700)+1)+( limit407 = (* (ptr) var←c68700 ), BCK(i←v28784, limit407) )) ); }; }; if (XR←ExtractField(var←c68732, 32 + (word) ( limit408 = (* (ptr) var←c68732 ), BCK(j←v29060, limit408) ), 1)) { SOURCE(50195, 12) return(1); }; }; j←v29060 = (j←v29060 + 1); if ((j←v29060 < noName←c68668)) { goto lab←L100133; }; lab←L100130: ; }; SOURCE(50218, 13) return(0); } static word ProcessSegment←P7032(traj←v28888, seg←v28916, index←v28944, formal←c71676) word traj←v28888; word seg←v28916; word index←v28944; word formal←c71676; { register ptr gf←c71644 = (ptr) &globalframe; word done←v28988; formal←c71676 = (formal←c71676 - 56); /* ProcessSegment: */ SOURCE(50513, 500) SOURCE(50513, 500) done←v28988 = 0; SOURCE(50610, 32) if ((0 == (word) SomeCP←P6972(index←v28944, (word) (( (bPt) formal←c71676)+64)))) { SOURCE(50636, 6) return(done←v28988); }; SOURCE(50644, 113) { W6 var←c68764; { word pd409; pd409 = (* (( (ptr) (* (ptr) seg←v28916 ))+19) ); (void) ( *( (fPt) ((* (ptr) pd409 ))))((word) &var←c68764, seg←v28916, (* (W2Pt) (( (ptr) formal←c71676)+4) ), (* (( (ptr) formal←c71676)+6) ), pd409); }; (* (( (ptr) formal←c71676)+26) ) = var←c68764.f5; (* (( (ptr) formal←c71676)+21) ) = var←c68764.f4; (* (W2Pt) (( (ptr) formal←c71676)+24) ) = (* (W2Pt) (( (ptr) &var←c68764)+2) ); (* (W2Pt) (( (ptr) formal←c71676)+22) ) = (* (W2Pt) &var←c68764 ); }; SOURCE(50759, 254) if ((0 != (* (( (ptr) formal←c71676)+26) ))) { SOURCE(50781, 59) { word pd410; pd410 = (* (( (ptr) (* (( (ptr) gf←c71644)+188)/* var←c63004 */ ))+21) ); (* (( (ptr) formal←c71676)+19) ) = (word) ( *( (fPt) ((* (ptr) pd410 ))))((* (W2Pt) (( (ptr) formal←c71676)+22) ), (* (W2Pt) ( ( (ptr) formal←c71676)+4) ), pd410); }; SOURCE(50842, 171) { word x411; word x412; if ((( x411 = (* (( (ptr) formal←c71676)+19) ), *(float*)&x411 ) < ( x412 = (* (( (ptr) formal←c71676)+20) ), *(float*)&x412 ))) { SOURCE(50874, 21) (* (( (ptr) formal←c71676)+20) ) = (* (( (ptr) formal←c71676)+19) ); SOURCE(50897, 15) (* (( (ptr) formal←c71676)+7) ) = index←v28944; SOURCE(50914, 35) (* (( (ptr) formal←c71676)+8) ) = (* (( (ptr) formal←c71676)+21) ); SOURCE(50951, 21) (* (W2Pt) (( (ptr) formal←c71676)+9) ) = (* (W2Pt) (( (ptr) formal←c71676)+22) ); SOURCE(50974, 23) (* (W2Pt) (( (ptr) formal←c71676)+11) ) = (* (W2Pt) (( (ptr) formal←c71676)+24) ); SOURCE(50999, 14) (* (( (ptr) formal←c71676)+13) ) = 1; }; }; }; SOURCE(50513, 500) return(done←v28988); } static word IndexOfJoint←P4320(joint←v17496, slice←v17524) word joint←v17496; word slice←v17524; { word index←v17568; word thisJoint←v29104 = 0; /* IndexOfJoint: */ SOURCE(51441, 225) SOURCE(51539, 106) { register word i←v29148 = 0; register word noName←c68796; noName←c68796 = (word) HiJoint←P2340(slice←v17524); if ((i←v29148 > noName←c68796)) { goto lab←L100134; }; lab←L100137: ; SOURCE(51576, 32) thisJoint←v29104 = (word) FetchJoint←P1860(slice←v17524, i←v29148); SOURCE(51610, 35) if ((thisJoint←v29104 == joint←v17496)) { SOURCE(51636, 9) return(i←v29148); }; if ((i←v29148 >= noName←c68796)) { goto lab←L100134; }; i←v29148 = (i←v29148 + 1); goto lab←L100137; lab←L100134: ; }; SOURCE(51656, 10) return( (word) -1); } static word IndexOfSegment←P4380(segment←v17628, slice←v17656) word segment←v17628; word slice←v17656; { word index←v17700; word thisSeg←v29192 = 0; /* IndexOfSegment: */ SOURCE(51672, 233) SOURCE(51776, 108) { register word i←v29236 = 0; register word noName←c68828; noName←c68828 = (word) HiSegment←P2220(slice←v17656); if ((i←v29236 > noName←c68828)) { goto lab←L100138; }; lab←L100141: ; SOURCE(51815, 32) thisSeg←v29192 = (word) FetchSegment←P1740(slice←v17656, i←v29236); SOURCE(51849, 35) if ((thisSeg←v29192 == segment←v17628)) { SOURCE(51875, 9) return(i←v29236); }; if ((i←v29236 >= noName←c68828)) { goto lab←L100138; }; i←v29236 = (i←v29236 + 1); goto lab←L100141; lab←L100138: ; }; SOURCE(51895, 10) return( (word) -1); } /* file: GGTrajImpl, module: GGTrajImpl, compiled at: July 11, 1993 8:14:50 pm PDT */ extern void XR←install←GGTrajImpl() { NoName←Q7236(); } extern void XR←run←GGTrajImpl() { XR←Start(&globalframe); }