/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 11, 1993 8:10:27 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: GGSliceImplD, module: GGSliceImplD */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1638783677,2288722857] GGSliceImplD";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {W8 f; W6 r;} W14;
typedef struct {word f0, f1, f2;} W3;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
typedef W3 *W3Pt;
typedef W2 *W2Pt;
typedef struct {W8 f; W8 r;} W16;
typedef W16 *W16Pt;
typedef W6 *W6Pt;
typedef struct {W16 f; W3 r;} W19;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef struct {W8 f; W5 r;} W13;
typedef struct {W8 f; W3 r;} W11;
typedef struct {W8 f; W2 r;} W10;
typedef struct {W8 f; W7 r;} W15;
typedef struct {W16 f; W5 r;} W21;
#define SOURCE(p, l) /* source p, l */
static float fc57 = 1.0;
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc123 = 0.0;
#define IOP2(op, x, y)  ( (word) ((x) op (y)) )
static float fc249 = 2000.0;
static float fc317 = 3.0;
#define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) )
static float fc344 = 0.001;
static float fc355 = 0.01;
static float fc827 = 1E16;
static void NoName←Q8592();
static void GGSliceImplD←P0();
static void KillBoundBox←P60();
static void KillBoundBoxOnly←P120();
static void KillTightBoxOnly←P180();
static void TrajShapeChangeNotify←P240();
static word BuildTrajSliceClass←P300();
static void TrajUnlink←P360();
static word TrajGetBoundBox←P420();
static word EnlargeBySegmentBox←P3612();
static word TrajGetTightBox←P480();
static word EnlargeBySegmentTightBox←P3720();
static word TrajCopy←P540();
static word CopyTraj←P600();
static void CopyEachSegment←P3876();
static word CopySegmentAndBuild←P3996();
static void CopyEachJoint←P3936();
static word CopyJointAndBuild←P4056();
static void TrajRestore←P660();
static void BuildConstrainedPathSeg←P720();
static void TrajBuildPath←P780();
static void TransformParts←P4404();
static void TransformEntire←P4464();
static void TransformNone←P4524();
static void TrajDrawBorder←P840();
static void DoTrajDrawBorder←P4872();
static void TrajDrawParts←P900();
static void TrajDrawTransform←P960();
static void TrajDrawSelectionFeedback←P1020();
static void DoDrawFeedback←P5076();
static void TrajDrawAttractorFeedback←P1080();
static word TrajAttractorFeedbackBoundBox←P1140();
static void FindImagerObject←P1200();
static word EqualPattern←P5424();
static word CompareProps←P5484();
static word ClosePoints←P1260();
static word CreateProps←P1320();
static void CachedDrawBorder←P1380();
static void TrajDrawObject←P1440();
static void DrawBorderAux←P1500();
static void TrajDrawBorderSingleStroke←P1560();
static void BuildPathNoTransform←P5880();
static void BuildPathTransform←P5940();
static word PatternProc←P6000();
static void DrawRubberControlPoints←P1620();
static void DrawSingleStrokeTraj←P1680();
static void BuildPath←P6396();
static word PatternProc←P6456();
static void DrawTraj←P1740();
static void DoDrawTraj←P6564();
static void DrawSingleStrokeTrajSeq←P1800();
static void BuildPath←P6672();
static word PatternProc←P6732();
static void DrawCpsAndJoints←P1860();
static void EnlargeByCpsAndJoints←P1920();
static void TrajSaveSelections←P1980();
static word TrajRemakeSelections←P2040();
static word DrawConstrained←P2100();
static void SegMaskStroke←P2160();
static void MaskPath←P7224();
static word PatternProc←P7284();
static void MaskStroke←P2220();
static void MaskPath←P7344();
static word PatternProc←P7404();
static void MaskStrokeTransform←P2280();
static void MaskPath←P7464();
static word PatternProc←P7524();
static word AllStrokePropsAndColorsEqual←P2340();
static word SegmentSelected←P2400();
static void TrajTransform←P2460();
static void TransformSequenceOpen←P2520();
static void TransformSequenceClosed←P2580();
static void TransformConstrained←P2640();
static word TrajIsEmptyParts←P2700();
static word TrajIsCompleteParts←P2760();
static word TrajNewParts←P2820();
static word NearestJointToHitSpot←P2880();
static word TrajUnionParts←P2940();
static word TrajDiffParts←P3000();
static void TrajMovingParts←P3060();
static word TrajAugmentParts←P3120();
static word TrajAlterParts←P3180();
static word PreviousJoint←P3240();
static void TrajSetSelectedFields←P3300();
static void Init←P3360();
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\354\000\000"};
static struct {unsigned f; char r[4];} string4 = {65537, "\001\000\000"};
static struct {unsigned f; char r[4];} string5 = {131076, "\216\251\000"};
static struct {unsigned f; char r[16];} string6 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\050\000\000"};
static struct {unsigned f; char r[4];} string8 = {131074, "\004\007\000"};
static struct {unsigned f; char r[48];} string9 = {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[4];} string10 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\214\000\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\100\200\000\000"};
static struct {unsigned f; char r[28];} string13 = {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[16];} string14 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\100\164\000\000"};
static struct {unsigned f; char r[4];} string15 = {131074, "\003\006\000"};
static struct {unsigned f; char r[16];} string16 = {851984, "\257\300\012\121\313\233\300\012\365\115\261\100\214\000\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\164\000\000"};
static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\141\255\332\275\300\210\153\043\251\100\200\000\000"};
static struct {unsigned f; char r[12];} string19 = {524296, "\011\000\004\000\040\000\004\001\000\000\000"};
static struct {unsigned f; char r[16];} string20 = {851984, "\257\300\074\177\166\242\300\203\113\217\044\104\254\000\000"};
static struct {unsigned f; char r[4];} string21 = {131074, "\003\005\000"};
static struct {unsigned f; char r[16];} string22 = {851984, "\257\300\141\255\332\275\300\210\153\043\251\101\304\000\000"};
static struct {unsigned f; char r[16];} string23 = {786448, "GGTrajObject\000\000\000"};
static struct {unsigned f; char r[8];} string24 = {393224, "Bezier\000"};
static struct {unsigned f; char r[12];} string25 = {524300, "Gargoyle\000\000\000"};
static struct {unsigned f; char r[12];} string26 = {524300, "CopyTraj\000\000\000"};
static struct {unsigned f; char r[8];} string27 = {262152, "Traj\000\000\000"};
static struct {unsigned f; char r[28];} string28 = {1638428, "NearestJointToHitSpot NYI\000\000"};
static struct {unsigned f; char r[8];} string29 = {458760, "Forward"};
static struct {unsigned f; char r[12];} string30 = {524300, "Backward\000\000\000"};
static struct {unsigned f; char r[8];} string31 = {262152, "Grow\000\000\000"};
static struct {unsigned f; char r[16];} string32 = {851984, "ShrinkForward\000\000"};
static struct {unsigned f; char r[16];} string33 = {917520, "ShrinkBackward\000"};
static struct {unsigned f; char r[16];} string34 = {851984, "\257\300\141\255\332\275\300\210\153\043\251\100\164\000\000"};
static struct {unsigned f; char r[16];} string35 = {851981, "\006\004\024\001\030\001\034\001\100\150\004\107\377\000\000"};
static struct {unsigned f; char r[16];} string36 = {851984, "\257\300\006<7[\300;CV\364@h\000\000"};
static struct {unsigned f; char r[16];} string37 = {851984, "\257\300\322\334\347\304\300\124\107\000\027\100\150\000\000"};
static struct {unsigned f; char r[16];} string38 = {851984, "\257\300\161\264\233\303\300\026\075\022\161\100\150\000\000"};
static struct {unsigned f; char r[16];} string39 = {851984, "\257\300\265\217\206\011\300\172\271\371\033\100\150\000\000"};
static struct {unsigned f; char r[16];} string40 = {851984, "\257\300\231\005\151\136\300\275\231\323\274\100\150\000\000"};
static struct {unsigned f; char r[16];} string41 = {851984, "\257\300\034\077\173\126\300\270\206\201\035\100\150\000\000"};
static struct {unsigned f; char r[16];} string42 = {851984, "\257\300\317\075\344\275\300\105\331\241\110\100\150\000\000"};
static struct {unsigned f; char r[16];} string43 = {851984, "\257\300\043\211\212\366\300\343\003\307\242\100\150\000\000"};
static struct {unsigned f; char r[16];} string44 = {851984, "\257\300\261\002\056\176\300\055\321\222\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string45 = {851984, "\257\300\235\036\354\311\300\234\133\201\260\100\150\000\000"};
static struct {unsigned f; char r[4];} string46 = {1195856748, "ice"};
static struct {unsigned f; char r[16];} string47 = {851984, "\257\300U$)\337\300Xo9\243@t\000\000"};
static struct {unsigned f; char r[16];} string48 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\150\000\000"};
static struct {unsigned f; char r[16];} string49 = {851984, "\257\300\104\154\010\164\300\126\073\363\036\100\150\000\000"};
static struct {unsigned f; char r[16];} string50 = {851984, "\257\300\370\132\042\205\300\045\133\011\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string51 = {851984, "\257\300\074\177\166\242\300\203\113\217\044\100\150\000\000"};
static struct {unsigned f; char r[16];} string52 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"};
static struct {unsigned f; char r[16];} string53 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string54 = {851984, "\257\300\252\120\163\253\300\126\171\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string55 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"};
static struct {
   word f0[37]; 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[25]; 
   } globalframe = {
   {0}, (word) Init←P3360, 0, (word) TrajSetSelectedFields←P3300, 
   0, (word) PreviousJoint←P3240, 0, (word) TrajAlterParts←P3180, 
   0, (word) TrajAugmentParts←P3120, 0, (word) TrajMovingParts←P3060, 
   0, (word) TrajDiffParts←P3000, 0, (word) TrajUnionParts←P2940, 
   0, (word) NearestJointToHitSpot←P2880, 0, (word) TrajNewParts←P2820, 
   0, (word) TrajIsCompleteParts←P2760, 0, (word) TrajIsEmptyParts←P2700, 
   0, (word) TransformConstrained←P2640, 0, (word) TransformSequenceClosed←P2580, 
   0, (word) TransformSequenceOpen←P2520, 0, (word) TrajTransform←P2460, 
   0, (word) SegmentSelected←P2400, 0, (word) AllStrokePropsAndColorsEqual←P2340, 
   0, (word) MaskStrokeTransform←P2280, 0, (word) MaskStroke←P2220, 
   0, (word) SegMaskStroke←P2160, 0, (word) DrawConstrained←P2100, 
   0, (word) TrajRemakeSelections←P2040, 0, (word) TrajSaveSelections←P1980, 
   0, (word) EnlargeByCpsAndJoints←P1920, 0, (word) DrawCpsAndJoints←P1860, 
   0, (word) DrawSingleStrokeTrajSeq←P1800, 0, (word) DrawTraj←P1740, 
   0, (word) DrawSingleStrokeTraj←P1680, 0, (word) DrawRubberControlPoints←P1620, 
   0, (word) TrajDrawBorderSingleStroke←P1560, 0, (word) DrawBorderAux←P1500, 
   0, (word) TrajDrawObject←P1440, 0, (word) CachedDrawBorder←P1380, 
   0, (word) CreateProps←P1320, 0, (word) ClosePoints←P1260, 
   0, (word) FindImagerObject←P1200, 0, (word) TrajAttractorFeedbackBoundBox←P1140, 
   0, (word) TrajDrawAttractorFeedback←P1080, 0, (word) TrajDrawSelectionFeedback←P1020, 
   0, (word) TrajDrawTransform←P960, 0, (word) TrajDrawParts←P900, 
   0, (word) TrajDrawBorder←P840, 0, (word) TrajBuildPath←P780, 
   0, (word) BuildConstrainedPathSeg←P720, 0, (word) TrajRestore←P660, 
   0, (word) CopyTraj←P600, 0, (word) TrajCopy←P540, 
   0, (word) TrajGetTightBox←P480, 0, (word) TrajGetBoundBox←P420, 
   0, (word) TrajUnlink←P360, 0, (word) BuildTrajSliceClass←P300, 
   0, (word) TrajShapeChangeNotify←P240, 0, (word) KillTightBoxOnly←P180, 
   0, (word) KillBoundBoxOnly←P120, 0, (word) KillBoundBox←P60, 
   0, (word) GGSliceImplD←P0, {0}
   };

static void NoName←Q8592()
   {
   register ptr gf←c01161 =  (ptr) &globalframe;
   word var←c94628;
   (* (( (ptr) gf←c01161)+10) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c01161)+11) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c01161)+12) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string4);
   (* (( (ptr) gf←c01161)+13) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string4);
   (* (( (ptr) gf←c01161)+15) ) = (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8);
   (* (( (ptr) gf←c01161)+16) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
   (* (( (ptr) gf←c01161)+18) ) = (word) XR←GetTypeIndexS((word) (&string11));
   (* (( (ptr) gf←c01161)+19) ) = (word) XR←GetTypeIndex((word) &string12, 0, (word) &string13);
   (* (( (ptr) gf←c01161)+20) ) = (word) XR←GetTypeIndex((word) &string14, 0, (word) &string15);
   (* (( (ptr) gf←c01161)+21) ) = (word) XR←GetTypeIndexS((word) (&string16));
   (* (( (ptr) gf←c01161)+22) ) = (word) XR←GetTypeIndexS((word) (&string17));
   (* (( (ptr) gf←c01161)+23) ) = (word) XR←GetTypeIndex((word) &string18, 0, (word) &string19);
   (* (( (ptr) gf←c01161)+24) ) = (word) XR←GetTypeIndex((word) &string20, 0, (word) &string21);
   (* (( (ptr) gf←c01161)+25) ) = (word) XR←GetTypeIndex((word) &string22, 0, (word) &string4);
   (*  (ptr) (( (bPt) gf←c01161)+104) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+12) ), (word) &string23);
   (*  (ptr) (( (bPt) gf←c01161)+108) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+12) ), (word) &string24);
   (*  (ptr) (( (bPt) gf←c01161)+112) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+12) ), (word) &string25);
   (*  (ptr) (( (bPt) gf←c01161)+116) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+12) ), (word) &string26);
   (*  (ptr) (( (bPt) gf←c01161)+120) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+12) ), (word) &string27);
   (*  (ptr) (( (bPt) gf←c01161)+124) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+13) ), (word) &string28);
   (*  (ptr) (( (bPt) gf←c01161)+128) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+12) ), (word) &string29);
   (*  (ptr) (( (bPt) gf←c01161)+132) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+12) ), (word) &string30);
   (*  (ptr) (( (bPt) gf←c01161)+136) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+12) ), (word) &string31);
   (*  (ptr) (( (bPt) gf←c01161)+140) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+12) ), (word) &string32);
   (*  (ptr) (( (bPt) gf←c01161)+144) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01161)+12) ), (word) &string33);
   (void) XR←DeclareGlobalFrame((word) "GGSliceImplD", &globalframe, (word) XR←GetTypeIndex((word) &string34, 0, (word) &string35)
      , (word) (( (bPt) gf←c01161)+596)/* var←c83812 */ );
   var←c94628 = (word) XR←ImportInterface((word) "CodeTimer", (word) XR←GetTypeIndexS((word) (&string36)), 21);
   (* (( (ptr) gf←c01161)+160)/* var←c84484 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 526850);
   (void) XR←ImportProcS(var←c94628, 526338);
   var←c94628 = (word) XR←ImportInterface((word) "Feedback", (word) XR←GetTypeIndexS((word) (&string37)), 25);
   (* (( (ptr) gf←c01161)+155)/* var←c83908 */  ) = var←c94628;
   var←c94628 = (word) XR←ImportInterface((word) "FunctionCache", (word) XR←GetTypeIndexS((word) (&string38)), 14);
   (* (( (ptr) gf←c01161)+169)/* var←c87812 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 67633154);
   (void) XR←ImportProcS(var←c94628, 1311237);
   (void) XR←ImportProcS(var←c94628, 135005443);
   var←c94628 = (word) XR←ImportInterface((word) "GGBoundBox", (word) XR←GetTypeIndexS((word) (&string39)), 24);
   (* (( (ptr) gf←c01161)+158)/* var←c84068 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 789250);
   (void) XR←ImportProcS(var←c94628, 268699393);
   (void) XR←ImportProcS(var←c94628, 527618);
   (void) XR←ImportProcS(var←c94628, 526850);
   (void) XR←ImportProcS(var←c94628, 67109376);
   var←c94628 = (word) XR←ImportInterface((word) "GGCoreOps", (word) XR←GetTypeIndexS((word) (&string40)), 37);
   (* (( (ptr) gf←c01161)+170)/* var←c88164 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 67641090);
   var←c94628 = (word) XR←ImportInterface((word) "GGMUserProfile", (word) XR←GetTypeIndexS((word) (&string41)), 3);
   (* (( (ptr) gf←c01161)+171)/* var←c88388 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 67109120);
   var←c94628 = (word) XR←ImportInterface((word) "GGProps", (word) XR←GetTypeIndexS((word) (&string42)), 11);
   (* (( (ptr) gf←c01161)+162)/* var←c84548 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 1050116);
   var←c94628 = (word) XR←ImportInterface((word) "GGSegment", (word) XR←GetTypeIndexS((word) (&string43)), 47);
   (* (( (ptr) gf←c01161)+164)/* var←c84836 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 1054723);
   (void) XR←ImportProcS(var←c94628, 529922);
   (void) XR←ImportProcS(var←c94628, 67637250);
   (void) XR←ImportProcS(var←c94628, 2104328);
   (void) XR←ImportProcS(var←c94628, 67374337);
   var←c94628 = (word) XR←ImportInterface((word) "GGSequence", (word) XR←GetTypeIndexS((word) (&string44)), 58);
   (* (( (ptr) gf←c01161)+159)/* var←c84100 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 67381761);
   (void) XR←ImportProcS(var←c94628, 67642882);
   (void) XR←ImportProcS(var←c94628, 67383553);
   (void) XR←ImportProcS(var←c94628, 67378945);
   (void) XR←ImportProcS(var←c94628, 268705281);
   (void) XR←ImportProcS(var←c94628, 67643394);
   (void) XR←ImportProcS(var←c94628, 264961);
   (void) XR←ImportProcS(var←c94628, 264705);
   (void) XR←ImportProcS(var←c94628, 270537476);
   (void) XR←ImportProcS(var←c94628, 67637506);
   (void) XR←ImportProcS(var←c94628, 67637250);
   (void) XR←ImportProcS(var←c94628, 67634434);
   (void) XR←ImportProcS(var←c94628, 67895555);
   (void) XR←ImportProcS(var←c94628, 67371777);
   (void) XR←ImportProcS(var←c94628, 67371521);
   (void) XR←ImportProcS(var←c94628, 67634690);
   (void) XR←ImportProcS(var←c94628, 67897091);
   (void) XR←ImportProcS(var←c94628, 67634178);
   (void) XR←ImportProcS(var←c94628, 67376385);
   (void) XR←ImportProcS(var←c94628, 68163332);
   (void) XR←ImportProcS(var←c94628, 67640322);
   (void) XR←ImportProcS(var←c94628, 134490881);
   (void) XR←ImportProcS(var←c94628, 67380225);
   (void) XR←ImportProcS(var←c94628, 67385601);
   (void) XR←ImportProcS(var←c94628, 67384321);
   (void) XR←ImportProcS(var←c94628, 67376641);
   (void) XR←ImportProcS(var←c94628, 67379713);
   (void) XR←ImportProcS(var←c94628, 134488321);
   (void) XR←ImportProcS(var←c94628, 67905283);
   (void) XR←ImportProcS(var←c94628, 67642626);
   var←c94628 = (word) XR←ImportInterface((word) "GGShapes", (word) XR←GetTypeIndexS((word) (&string45)), 20);
   (* (( (ptr) gf←c01161)+168)/* var←c87012 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 1052163);
   (void) XR←ImportProcS(var←c94628, 1314820);
   (void) XR←ImportProcS(var←c94628, 1052419);
   var←c94628 = (word) XR←ImportInterface((word) &string46, (word) XR←GetTypeIndexS((word) (&string47)), 128);
   (* (( (ptr) gf←c01161)+157)/* var←c84004 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 67634178);
   (void) XR←ImportProcS(var←c94628, 279041);
   (void) XR←ImportProcS(var←c94628, 278785);
   (void) XR←ImportProcS(var←c94628, 279297);
   (void) XR←ImportProcS(var←c94628, 277249);
   (void) XR←ImportProcS(var←c94628, 68189956);
   var←c94628 = (word) XR←ImportInterface((word) "GGTraj", (word) XR←GetTypeIndexS((word) (&string48)), 55);
   (* (( (ptr) gf←c01161)+161)/* var←c84516 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 67640066);
   (void) XR←ImportProcS(var←c94628, 402927873);
   (void) XR←ImportProcS(var←c94628, 67645186);
   (void) XR←ImportProcS(var←c94628, 797699);
   (void) XR←ImportProcS(var←c94628, 535810);
   (void) XR←ImportProcS(var←c94628, 67643394);
   (void) XR←ImportProcS(var←c94628, 67642626);
   (void) XR←ImportProcS(var←c94628, 671625218);
   (void) XR←ImportProcS(var←c94628, 134749186);
   (void) XR←ImportProcS(var←c94628, 67379457);
   (void) XR←ImportProcS(var←c94628, 67643138);
   (void) XR←ImportProcS(var←c94628, 67639554);
   (void) XR←ImportProcS(var←c94628, 67642882);
   (void) XR←ImportProcS(var←c94628, 70517002);
   (void) XR←ImportProcS(var←c94628, 67379969);
   (void) XR←ImportProcS(var←c94628, 67636482);
   var←c94628 = (word) XR←ImportInterface((word) "GGTransform", (word) XR←GetTypeIndexS((word) (&string49)), 7);
   (* (( (ptr) gf←c01161)+173)/* var←c91716 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 135004418);
   var←c94628 = (word) XR←ImportInterface((word) "GGUtility", (word) XR←GetTypeIndexS((word) (&string50)), 42);
   (* (( (ptr) gf←c01161)+172)/* var←c91556 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 67641858);
   var←c94628 = (word) XR←ImportInterface((word) "Imager", (word) XR←GetTypeIndexS((word) (&string51)), 84);
   (* (( (ptr) gf←c01161)+167)/* var←c86788 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 803587);
   (void) XR←ImportProcS(var←c94628, 1591046);
   (void) XR←ImportProcS(var←c94628, 1331972);
   (void) XR←ImportProcS(var←c94628, 526850);
   (void) XR←ImportProcS(var←c94628, 536578);
   (void) XR←ImportProcS(var←c94628, 540930);
   (void) XR←ImportProcS(var←c94628, 540674);
   (void) XR←ImportProcS(var←c94628, 541186);
   (void) XR←ImportProcS(var←c94628, 526338);
   var←c94628 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string52)), 55);
   (* (( (ptr) gf←c01161)+156)/* var←c83940 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 68681734);
   (void) XR←ImportProcS(var←c94628, 67908355);
   (void) XR←ImportProcS(var←c94628, 67899906);
   (void) XR←ImportProcS(var←c94628, 67634689);
   (void) XR←ImportProcS(var←c94628, 135013122);
   (void) XR←ImportProcS(var←c94628, 67371777);
   var←c94628 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string53)), 36);
   (* (( (ptr) gf←c01161)+166)/* var←c85540 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 67372289);
   var←c94628 = (word) XR←ImportInterface((word) "Rosary", (word) XR←GetTypeIndexS((word) (&string54)), 18);
   (* (( (ptr) gf←c01161)+163)/* var←c84740 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 67633410);
   (void) XR←ImportProcS(var←c94628, 68159746);
   (void) XR←ImportProcS(var←c94628, 67373057);
   var←c94628 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string55)), 21);
   (* (( (ptr) gf←c01161)+165)/* var←c85028 */  ) = var←c94628;
   (void) XR←ImportProcS(var←c94628, 135267842);
   (void) XR←ImportProcS(var←c94628, 135268098);
   (void) XR←ImportProcS(var←c94628, 67637249);
   (void) XR←ImportProcS(var←c94628, 68161794);
   (void) XR←ImportProcS(var←c94628, 135004418);
   (void) XR←ImportProcS(var←c94628, 68158722);
   (void) XR←ImportProcS(var←c94628, 67636737);
   (void) XR←ImportProcS(var←c94628, 135006210);
   (void) XR←ImportProcS(var←c94628, 134744321);
   (void) XR←ImportProcS(var←c94628, 68161282);
   (void) XR←ImportProcS(var←c94628, 135270914);
   var←c94628 = (word) XR←ExportInterface((word) &string46, (word) XR←GetTypeIndexS((word) (&string47)), 128);
   (* (( (ptr) gf←c01161)+174)/* var←c94660 */  ) = var←c94628;
   (void) XR←ExportProcS(var←c94628, (word) (( (bPt) gf←c01161)+556)/* var←c83652 */ , 67123712, (word) "BuildTrajSliceClass")
   ;
   (void) XR←ExportProcS(var←c94628, (word) (( (bPt) gf←c01161)+564)/* var←c83684 */ , 278017, (word) "TrajShapeChangeNotify")
   ;
   (void) XR←ExportProcS(var←c94628, (word) (( (bPt) gf←c01161)+588)/* var←c83780 */ , 278529, (word) "KillBoundBox");
   (void) XR←ExportProcS(var←c94628, (word) (( (bPt) gf←c01161)+580)/* var←c83748 */ , 278785, (word) "KillBoundBoxOnly");
   (void) XR←ExportProcS(var←c94628, (word) (( (bPt) gf←c01161)+572)/* var←c83716 */ , 279041, (word) "KillTightBoxOnly");
   }

static void GGSliceImplD←P0(formal←c087, formal←c086)
   word formal←c087;
   word formal←c086;
   {
   register ptr gf←c94692 =  (ptr) &globalframe;
   /* GGSliceImplD: */ 
SOURCE(344, 67013)
SOURCE(3530, 24)
   (* (( (ptr) gf←c94692)+4)/* Problem←v5492 */  ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c94692)+155)/* var←c83908 */  ))+28)
    ) );
SOURCE(18997, 58)
   {
      word pd56;
      pd56 = (* (( (ptr) (* (( (ptr) gf←c94692)+156)/* var←c83940 */  ))+7) );
      (* (( (ptr) gf←c94692)+5)/* identity←v5912 */  ) = (word) ( *( (fPt) ((*  (ptr) pd56 ))))((*  (ptr) (&fc57) ), pd56);
      };
SOURCE(67351, 6)
   (void) Init←P3360();
   }

static void KillBoundBox←P60(slice←v7444)
   word slice←v7444;
   {
   /* KillBoundBox: */ 
SOURCE(3591, 174)
SOURCE(3636, 129)
   {
      register word nextSlice←v16548;
      nextSlice←v16548 = slice←v7444;
      lab←L100003: ;
      if ((nextSlice←v16548 != 0)) {
         }
      else {
         goto lab←L100000;
         };
SOURCE(3706, 26)
      (* (( (ptr) nextSlice←v16548)+16) ) = 0;
SOURCE(3734, 31)
      (* (( (ptr) nextSlice←v16548)+14) ) = 0;
      nextSlice←v16548 = (* (( (ptr) nextSlice←v16548)+2) );
      goto lab←L100003;
      lab←L100000: ;
      };
   }

static void KillBoundBoxOnly←P120(slice←v7504)
   word slice←v7504;
   {
   /* KillBoundBoxOnly: */ 
SOURCE(3779, 145)
SOURCE(3828, 96)
   {
      register word nextSlice←v16592;
      nextSlice←v16592 = slice←v7504;
      lab←L100007: ;
      if ((nextSlice←v16592 != 0)) {
         }
      else {
         goto lab←L100004;
         };
SOURCE(3898, 26)
      (* (( (ptr) nextSlice←v16592)+16) ) = 0;
      nextSlice←v16592 = (* (( (ptr) nextSlice←v16592)+2) );
      goto lab←L100007;
      lab←L100004: ;
      };
   }

static void KillTightBoxOnly←P180(slice←v7564)
   word slice←v7564;
   {
   /* KillTightBoxOnly: */ 
SOURCE(3938, 150)
SOURCE(3987, 101)
   {
      register word nextSlice←v16636;
      nextSlice←v16636 = slice←v7564;
      lab←L100011: ;
      if ((nextSlice←v16636 != 0)) {
         }
      else {
         goto lab←L100008;
         };
SOURCE(4057, 31)
      (* (( (ptr) nextSlice←v16636)+14) ) = 0;
      nextSlice←v16636 = (* (( (ptr) nextSlice←v16636)+2) );
      goto lab←L100011;
      lab←L100008: ;
      };
   }

static void TrajShapeChangeNotify←P240(slice←v7624)
   word slice←v7624;
   {
   register ptr gf←c94724 =  (ptr) &globalframe;
   word trajData←v16680;
   /* TrajShapeChangeNotify: */ 
SOURCE(4103, 139)
SOURCE(4157, 39)
   trajData←v16680 = XR←Narrow((* (( (ptr) slice←v7624)+1) ), (* (( (ptr) gf←c94724)+10) ));
SOURCE(4198, 19)
   (void) KillBoundBox←P60(slice←v7624);
SOURCE(4219, 23)
   (* (( (ptr) trajData←v16680)+14) ) = 0;
   }

static word BuildTrajSliceClass←P300()
   {
   register ptr gf←c94756 =  (ptr) &globalframe;
   word class←v7684;
   /* BuildTrajSliceClass: */ 
SOURCE(4249, 992)
SOURCE(4249, 992)
   class←v7684 = 0;
SOURCE(4317, 884)
   {
      word var←c83972;
      var←c83972 = XR←NewObject(252, (* (( (ptr) gf←c94756)+11) ));
      (*  (ptr) var←c83972 ) = (* (( (ptr) gf←c94756)+30) );
      (* (( (ptr) var←c83972)+1) ) = (word) (( (bPt) gf←c94756)+540)/* var←c83588 */ ;
      (* (( (ptr) var←c83972)+2) ) = (* (( (ptr) (* (( (ptr) gf←c94756)+157)/* var←c84004 */  ))+131) );
      (* (( (ptr) var←c83972)+3) ) = (word) (( (bPt) gf←c94756)+532)/* var←c83556 */ ;
      (* (( (ptr) var←c83972)+4) ) = (word) (( (bPt) gf←c94756)+524)/* var←c83524 */ ;
      (* (( (ptr) var←c83972)+5) ) = (word) (( (bPt) gf←c94756)+548)/* var←c83620 */ ;
      (* (( (ptr) var←c83972)+6) ) = (word) (( (bPt) gf←c94756)+508)/* var←c83460 */ ;
      (* (( (ptr) var←c83972)+7) ) = (word) (( (bPt) gf←c94756)+492)/* var←c83396 */ ;
      (* (( (ptr) var←c83972)+8) ) = (word) (( (bPt) gf←c94756)+484)/* var←c83364 */ ;
      (* (( (ptr) var←c83972)+9) ) = (word) (( (bPt) gf←c94756)+476)/* var←c83332 */ ;
      (* (( (ptr) var←c83972)+10) ) = (word) (( (bPt) gf←c94756)+468)/* var←c83300 */ ;
      (* (( (ptr) var←c83972)+11) ) = (word) (( (bPt) gf←c94756)+460)/* var←c83268 */ ;
      (* (( (ptr) var←c83972)+12) ) = (word) (( (bPt) gf←c94756)+452)/* var←c83236 */ ;
      (* (( (ptr) var←c83972)+13) ) = (word) (( (bPt) gf←c94756)+444)/* var←c83204 */ ;
      (* (( (ptr) var←c83972)+14) ) = (word) (( (bPt) gf←c94756)+332)/* var←c82756 */ ;
      (* (( (ptr) var←c83972)+15) ) = (word) (( (bPt) gf←c94756)+324)/* var←c82724 */ ;
      (* (( (ptr) var←c83972)+16) ) = (word) (( (bPt) gf←c94756)+268)/* var←c82500 */ ;
      (* (( (ptr) var←c83972)+21) ) = (word) (( (bPt) gf←c94756)+236)/* var←c82372 */ ;
      (* (( (ptr) var←c83972)+22) ) = (word) (( (bPt) gf←c94756)+228)/* var←c82340 */ ;
      (* (( (ptr) var←c83972)+23) ) = (word) (( (bPt) gf←c94756)+220)/* var←c82308 */ ;
      (* (( (ptr) var←c83972)+24) ) = (word) (( (bPt) gf←c94756)+204)/* var←c82244 */ ;
      (* (( (ptr) var←c83972)+25) ) = (word) (( (bPt) gf←c94756)+196)/* var←c82212 */ ;
      (* (( (ptr) var←c83972)+26) ) = (word) (( (bPt) gf←c94756)+188)/* var←c82180 */ ;
      (* (( (ptr) var←c83972)+27) ) = (word) (( (bPt) gf←c94756)+180)/* var←c82148 */ ;
      (* (( (ptr) var←c83972)+28) ) = (word) (( (bPt) gf←c94756)+172)/* var←c82116 */ ;
      (* (( (ptr) var←c83972)+29) ) = (word) (( (bPt) gf←c94756)+156)/* var←c82052 */ ;
      class←v7684 = var←c83972;
      };
SOURCE(5203, 38)
   {
      word pd58;
      pd58 = (* (( (ptr) (* (( (ptr) gf←c94756)+157)/* var←c84004 */  ))+63) );
      (void) ( *( (fPt) ((*  (ptr) pd58 ))))(class←v7684, pd58);
      };
SOURCE(4249, 992)
   return(class←v7684);
   }

static void TrajUnlink←P360(slice←v7744)
   word slice←v7744;
   {
   register ptr gf←c94788 =  (ptr) &globalframe;
   word trajData←v16724;
   /* TrajUnlink: */ 
SOURCE(5292, 146)
SOURCE(5328, 39)
   trajData←v16724 = XR←Narrow((* (( (ptr) slice←v7744)+1) ), (* (( (ptr) gf←c94788)+10) ));
SOURCE(5369, 26)
   {
      word pd59;
      pd59 = (* (( (ptr) (* (( (ptr) gf←c94788)+157)/* var←c84004 */  ))+71) );
      (void) ( *( (fPt) ((*  (ptr) pd59 ))))(slice←v7744, pd59);
      };
SOURCE(5397, 41)
   (* (( (ptr) trajData←v16724)+3) ) = 0;
   (* (( (ptr) trajData←v16724)+2) ) = 0;
   }

static word TrajGetBoundBox←P420(slice←v7804, parts←v7832)
   word slice←v7804;
   word parts←v7832;
   {
   W7 var←c94820;
   register ptr gf←c94852 =  (ptr) &globalframe;
   /* declaration of box←v7876 skipped */ 
   /* declaration of var←c84036 skipped */ 
   /* TrajGetBoundBox: */ 
SOURCE(5444, 748)
   {
      word tmpAddr60;
      tmpAddr60 = (word) (( (ptr) &var←c94820)+5)/* var←c84036 */ ;
      (*  (ptr) tmpAddr60 ) = ( ((word)  (fPt) EnlargeBySegmentBox←P3612) );
      (* (( (ptr) tmpAddr60) + 1) ) = 1;
      };
SOURCE(5444, 748)
   var←c94820.f4/* box←v7876 */  = 0;
SOURCE(5528, 664)
   if ( ( (0 != (* (( (ptr) slice←v7804)+16) )) ? (parts←v7832 == 0) : 0 ) ) {
SOURCE(5565, 41)
      return((* (( (ptr) slice←v7804)+15) ));
      }
   else {
SOURCE(5606, 591)
      {
         word trajData←v16796;
         word trajParts←v16824;
SOURCE(5728, 39)
         trajData←v16796 = XR←Narrow((* (( (ptr) slice←v7804)+1) ), (* (( (ptr) gf←c94852)+10) ));
SOURCE(5769, 36)
         trajParts←v16824 = XR←Narrow(parts←v7832, (* (( (ptr) gf←c94852)+15) ));
SOURCE(5807, 31)
         {
            word pd61;
            pd61 = (* (( (ptr) (* (( (ptr) gf←c94852)+158)/* var←c84068 */  ))+6) );
            var←c94820.f4/* box←v7876 */  = (word) ( *( (fPt) ((*  (ptr) pd61 ))))(pd61);
            };
SOURCE(5840, 169)
         if ((parts←v7832 == 0)) {
SOURCE(5858, 71)
            {
               word var←c84132;
               word pd62;
               pd62 = (* (( (ptr) (* (( (ptr) gf←c94852)+159)/* var←c84100 */  ))+41) );
               var←c84132 = (word) ( *( (fPt) ((*  (ptr) pd62 ))))(trajData←v16796, (word) (( (bPt) &var←c94820)+20)/* var←c84036 */ , pd62)
               ;
               };
            }
         else {
SOURCE(5929, 80)
            {
               word var←c84164;
               word pd63;
               pd63 = (* (( (ptr) (* (( (ptr) gf←c94852)+159)/* var←c84100 */  ))+43) );
               var←c84164 = (word) ( *( (fPt) ((*  (ptr) pd63 ))))(trajData←v16796, trajParts←v16824, (word) (( (bPt) &var←c94820)+20)/* var←c84036 */ , pd63)
               ;
               };
            };
SOURCE(6012, 180)
         if ((parts←v7832 == 0)) {
SOURCE(6079, 38)
            {
               word pd64;
               pd64 = (* (( (ptr) (* (( (ptr) gf←c94852)+157)/* var←c84004 */  ))+69) );
               (void) ( *( (fPt) ((*  (ptr) pd64 ))))((* ((( (ptr) slice←v7804)+2)) ), pd64);
               };
SOURCE(6149, 20)
            (* (( (ptr) slice←v7804)+15) ) = var←c94820.f4/* box←v7876 */ ;
SOURCE(6171, 21)
            (* (( (ptr) slice←v7804)+16) ) = 1;
            };
         };
      };
SOURCE(5444, 748)
   return(var←c94820.f4/* box←v7876 */ );
   }

static word EnlargeBySegmentBox←P3612(traj←v54100, seg←v54128, index←v54156, formal←c94916)
   word traj←v54100;
   word seg←v54128;
   word index←v54156;
   word formal←c94916;
   {
   register ptr gf←c94884 =  (ptr) &globalframe;
   word done←v54200;
   formal←c94916 = (formal←c94916 - 20);
   /* EnlargeBySegmentBox: */ 
SOURCE(5608, 50)
SOURCE(5608, 50)
   done←v54200 = 0;
SOURCE(5660, 63)
   {
      word var←c84196;
      {
         word pd65;
         pd65 = (* (( (ptr) (*  (ptr) seg←v54128 ))+1) );
         var←c84196 = (word) ( *( (fPt) ((*  (ptr) pd65 ))))(seg←v54128, pd65);
         };
      {
         word pd66;
         pd66 = (* (( (ptr) (* (( (ptr) gf←c94884)+158)/* var←c84068 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd66 ))))((* (( (ptr) formal←c94916)+4) ), var←c84196, pd66);
         };
      };
SOURCE(5608, 50)
   return(done←v54200);
   }

static word TrajGetTightBox←P480(slice←v7936, parts←v7964)
   word slice←v7936;
   word parts←v7964;
   {
   W7 var←c94948;
   register ptr gf←c94980 =  (ptr) &globalframe;
   /* declaration of box←v8008 skipped */ 
   /* declaration of var←c84228 skipped */ 
   word trajData←v16868;
   /* TrajGetTightBox: */ 
SOURCE(6204, 815)
   {
      word tmpAddr67;
      tmpAddr67 = (word) (( (ptr) &var←c94948)+5)/* var←c84228 */ ;
      (*  (ptr) tmpAddr67 ) = ( ((word)  (fPt) EnlargeBySegmentTightBox←P3720) );
      (* (( (ptr) tmpAddr67) + 1) ) = 1;
      };
SOURCE(6204, 815)
   var←c94948.f4/* box←v8008 */  = 0;
SOURCE(6288, 39)
   trajData←v16868 = XR←Narrow((* (( (ptr) slice←v7936)+1) ), (* (( (ptr) gf←c94980)+10) ));
SOURCE(6329, 690)
   if ( ( (0 != (* (( (ptr) slice←v7936)+14) )) ? (parts←v7964 == 0) : 0 ) ) {
SOURCE(6371, 41)
      return((* (( (ptr) slice←v7936)+13) ));
      }
   else {
SOURCE(6412, 612)
      {
         word trajData←v16940;
         word trajParts←v16968;
SOURCE(6539, 39)
         trajData←v16940 = XR←Narrow((* (( (ptr) slice←v7936)+1) ), (* (( (ptr) gf←c94980)+10) ));
SOURCE(6580, 36)
         trajParts←v16968 = XR←Narrow(parts←v7964, (* (( (ptr) gf←c94980)+15) ));
SOURCE(6619, 31)
         {
            word pd68;
            pd68 = (* (( (ptr) (* (( (ptr) gf←c94980)+158)/* var←c84068 */  ))+6) );
            var←c94948.f4/* box←v8008 */  = (word) ( *( (fPt) ((*  (ptr) pd68 ))))(pd68);
            };
SOURCE(6652, 179)
         if ((parts←v7964 == 0)) {
SOURCE(6670, 76)
            {
               word var←c84260;
               word pd69;
               pd69 = (* (( (ptr) (* (( (ptr) gf←c94980)+159)/* var←c84100 */  ))+41) );
               var←c84260 = (word) ( *( (fPt) ((*  (ptr) pd69 ))))(trajData←v16940, (word) (( (bPt) &var←c94948)+20)/* var←c84228 */ , pd69)
               ;
               };
            }
         else {
SOURCE(6746, 85)
            {
               word var←c84292;
               word pd70;
               pd70 = (* (( (ptr) (* (( (ptr) gf←c94980)+159)/* var←c84100 */  ))+43) );
               var←c84292 = (word) ( *( (fPt) ((*  (ptr) pd70 ))))(trajData←v16940, trajParts←v16968, (word) (( (bPt) &var←c94948)+20)/* var←c84228 */ , pd70)
               ;
               };
            };
SOURCE(6834, 185)
         if ((parts←v7964 == 0)) {
SOURCE(6901, 38)
            {
               word pd71;
               pd71 = (* (( (ptr) (* (( (ptr) gf←c94980)+157)/* var←c84004 */  ))+70) );
               (void) ( *( (fPt) ((*  (ptr) pd71 ))))((* ((( (ptr) slice←v7936)+2)) ), pd71);
               };
SOURCE(6971, 20)
            (* (( (ptr) slice←v7936)+13) ) = var←c94948.f4/* box←v8008 */ ;
SOURCE(6993, 26)
            (* (( (ptr) slice←v7936)+14) ) = 1;
            };
         };
      };
SOURCE(6204, 815)
   return(var←c94948.f4/* box←v8008 */ );
   }

static word EnlargeBySegmentTightBox←P3720(traj←v55216, seg←v55244, index←v55272, formal←c95044)
   word traj←v55216;
   word seg←v55244;
   word index←v55272;
   word formal←c95044;
   {
   register ptr gf←c95012 =  (ptr) &globalframe;
   word done←v55316;
   formal←c95044 = (formal←c95044 - 20);
   /* EnlargeBySegmentTightBox: */ 
SOURCE(6414, 55)
SOURCE(6414, 55)
   done←v55316 = 0;
SOURCE(6471, 63)
   {
      word var←c84324;
      {
         word pd72;
         pd72 = (* (( (ptr) (*  (ptr) seg←v55244 ))+2) );
         var←c84324 = (word) ( *( (fPt) ((*  (ptr) pd72 ))))(seg←v55244, pd72);
         };
      {
         word pd73;
         pd73 = (* (( (ptr) (* (( (ptr) gf←c95012)+158)/* var←c84068 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd73 ))))((* (( (ptr) formal←c95044)+4) ), var←c84324, pd73);
         };
      };
SOURCE(6414, 55)
   return(done←v55316);
   }

static word TrajCopy←P540(slice←v8068, parts←v8096)
   word slice←v8068;
   word parts←v8096;
   {
   register ptr gf←c95076 =  (ptr) &globalframe;
   word copy←v8140;
   word trajParts←v17012 = 0;
   word runs←v17040 = 0;
   /* TrajCopy: */ 
SOURCE(7031, 725)
SOURCE(7031, 725)
   copy←v8140 = 0;
   {
      W2 var←c0134;
SOURCE(7178, 47)
      if ((parts←v8096 == 0)) {
SOURCE(7196, 29)
         {
            word var←c84388;
            word var←c84420;
            var←c84388 = XR←NewObject(8, (* (( (ptr) gf←c95076)+16) ));
            var←c84420 = var←c84388;
            (*  (ptr) var←c84420 ) = (word) CopyTraj←P600(slice←v8068);
            return(var←c84388);
            };
         };
SOURCE(7259, 25)
      trajParts←v17012 = XR←Narrow(parts←v8096, (* (( (ptr) gf←c95076)+15) ));
SOURCE(7286, 40)
      {
         word pd74;
         pd74 = (* (( (ptr) (* (( (ptr) gf←c95076)+160)/* var←c84484 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd74 ))))((* (( (ptr) gf←c95076)+29) ), (* (( (ptr) gf←c95076)+28) ), pd74);
         };
SOURCE(7328, 50)
      {
         word pd75;
         pd75 = (* (( (ptr) (* (( (ptr) gf←c95076)+159)/* var←c84100 */  ))+37) );
         (void) ( *( (fPt) ((*  (ptr) pd75 ))))((word) &var←c0134, trajParts←v17012, pd75);
         };
      runs←v17040 = var←c0134.f0;
SOURCE(7380, 326)
      {
         register word nextSeq←v17084;
         {
            word pd76;
            pd76 = (* (( (ptr) (* (( (ptr) gf←c95076)+159)/* var←c84100 */  ))+38) );
            nextSeq←v17084 = (word) ( *( (fPt) ((*  (ptr) pd76 ))))(runs←v17040, pd76);
            };
         lab←L100015: ;
         if ((nextSeq←v17084 != 0)) {
            }
         else {
            goto lab←L100012;
            };
         {
            word newSlice←v17128;
SOURCE(7487, 56)
            {
               word pd77;
               pd77 = (* (( (ptr) (* (( (ptr) gf←c95076)+161)/* var←c84516 */  ))+17) );
               newSlice←v17128 = (word) ( *( (fPt) ((*  (ptr) pd77 ))))(slice←v8068, nextSeq←v17084, pd77);
               };
SOURCE(7545, 78)
            (* (( (ptr) XR←Narrow((* (( (ptr) newSlice←v17128)+1) ), (* (( (ptr) gf←c95076)+10) )))+9) ) = (* (( (ptr) XR←Narrow((* (
                     ( (ptr) slice←v8068)+1) ), (* (( (ptr) gf←c95076)+10) )))+9) );
SOURCE(7625, 52)
            {
               word pd78;
               pd78 = (* (( (ptr) (* (( (ptr) gf←c95076)+162)/* var←c84548 */  ))+10) );
               (void) ( *( (fPt) ((*  (ptr) pd78 ))))(slice←v8068, newSlice←v17128, 0, 0, pd78);
               };
SOURCE(7679, 27)
            {
               word var←c84580;
               var←c84580 = XR←NewObject(8, (* (( (ptr) gf←c95076)+16) ));
               (*  (ptr) var←c84580 ) = newSlice←v17128;
               (* (( (ptr) var←c84580)+1) ) = copy←v8140;
               copy←v8140 = var←c84580;
               };
            };
         {
            word pd79;
            pd79 = (* (( (ptr) (* (( (ptr) gf←c95076)+159)/* var←c84100 */  ))+38) );
            nextSeq←v17084 = (word) ( *( (fPt) ((*  (ptr) pd79 ))))(runs←v17040, pd79);
            };
         goto lab←L100015;
         lab←L100012: ;
         };
SOURCE(7717, 39)
      {
         word pd80;
         pd80 = (* (( (ptr) (* (( (ptr) gf←c95076)+160)/* var←c84484 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd80 ))))((* (( (ptr) gf←c95076)+29) ), (* (( (ptr) gf←c95076)+28) ), pd80);
         };
      };
SOURCE(7031, 725)
   return(copy←v8140);
   }

static word CopyTraj←P600(original←v8284)
   word original←v8284;
   {
   W14 var←c95108;
   register ptr gf←c95140 =  (ptr) &globalframe;
   word copy←v8328;
   /* declaration of var←c84612 skipped */ 
   /* declaration of var←c84644 skipped */ 
   word trajData←v17172;
   word originalSegments←v17200;
   /* declaration of desiredSegments←v17228 skipped */ 
   word extractedSegments←v17256 = 0;
   word originalJoints←v17284;
   /* declaration of desiredJoints←v17312 skipped */ 
   word extractedJoints←v17340 = 0;
   /* CopyTraj: */ 
SOURCE(7762, 1598)
   {
      word tmpAddr81;
      tmpAddr81 = (word) (( (ptr) &var←c95108)+4)/* var←c84612 */ ;
      (*  (ptr) tmpAddr81 ) = ( ((word)  (fPt) CopyEachJoint←P3936) );
      (* (( (ptr) tmpAddr81) + 1) ) = 1;
      };
   {
      word tmpAddr82;
      tmpAddr82 = (word) (( (ptr) &var←c95108)+6)/* var←c84644 */ ;
      (*  (ptr) tmpAddr82 ) = ( ((word)  (fPt) CopyEachSegment←P3876) );
      (* (( (ptr) tmpAddr82) + 1) ) = 1;
      };
SOURCE(7762, 1598)
   copy←v8328 = 0;
SOURCE(7819, 42)
   trajData←v17172 = XR←Narrow((* (( (ptr) original←v8284)+1) ), (* (( (ptr) gf←c95140)+10) ));
SOURCE(7863, 51)
   originalSegments←v17200 = (* (( (ptr) trajData←v17172)+2) );
SOURCE(7916, 74)
   (* (( (ptr) &var←c95108)+8) ) = originalSegments←v17200;
   (* (( (ptr) &var←c95108)+9) ) = 0;
   (* (( (ptr) &var←c95108)+10) ) = (* (( (ptr) trajData←v17172)+1) );
SOURCE(8026, 47)
   originalJoints←v17284 = (* (( (ptr) trajData←v17172)+3) );
SOURCE(8075, 81)
   (* (( (ptr) &var←c95108)+11) ) = originalJoints←v17284;
   (* (( (ptr) &var←c95108)+12) ) = 0;
   {
      word pd83;
      word idx84;
      pd83 = (* (( (ptr) (* (( (ptr) gf←c95140)+161)/* var←c84516 */  ))+39) );
      (* (( (ptr) &var←c95108)+13) ) = (
         idx84 = (word) ((word) ( *( (fPt) ((*  (ptr) pd83 ))))(original←v8284, pd83) + 1),
         SGNCK(idx84)
         );
      };
SOURCE(8852, 40)
   {
      word pd85;
      pd85 = (* (( (ptr) (* (( (ptr) gf←c95140)+160)/* var←c84484 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd85 ))))((* (( (ptr) gf←c95140)+29) ), (* (( (ptr) gf←c95140)+28) ), pd85);
      };
SOURCE(8894, 52)
   {
      word pd86;
      pd86 = (* (( (ptr) (* (( (ptr) gf←c95140)+163)/* var←c84740 */  ))+12) );
      extractedSegments←v17256 = (word) ( *( (fPt) ((*  (ptr) pd86 ))))((word) ((( (bPt) &var←c95108)+24)/* var←c84644 */ ), pd86)
      ;
      };
SOURCE(8948, 48)
   {
      word pd87;
      pd87 = (* (( (ptr) (* (( (ptr) gf←c95140)+163)/* var←c84740 */  ))+12) );
      extractedJoints←v17340 = (word) ( *( (fPt) ((*  (ptr) pd87 ))))((word) ((( (bPt) &var←c95108)+16)/* var←c84612 */ ), pd87)
      ;
      };
SOURCE(8998, 189)
   {
      word pd88;
      pd88 = (* (( (ptr) (* (( (ptr) gf←c95140)+161)/* var←c84516 */  ))+5) );
      copy←v8328 = (word) ( *( (fPt) ((*  (ptr) pd88 ))))((*  (ptr) trajData←v17172 ), (* (( (ptr) trajData←v17172)+1) ), extractedSegments←v17256, extractedJoints←v17340, 0, (* (
            ( (ptr) trajData←v17172)+5) )
         , (* (( (ptr) trajData←v17172)+6) ), (* (( (ptr) trajData←v17172)+7) ), (* (( (ptr) trajData←v17172)+8) ), (*  (W4Pt) (( (ptr) gf←c95140)+151)
         /* var←c83876 */  ), pd88);
      };
SOURCE(9189, 77)
   (* (( (ptr) XR←Narrow((* (( (ptr) copy←v8328)+1) ), (* (( (ptr) gf←c95140)+10) )))+9) ) = (* (( (ptr) XR←Narrow((* (( (ptr) original←v8284)+1)
          ), (* (( (ptr) gf←c95140)+10) )))+9) );
SOURCE(9268, 51)
   {
      word pd89;
      pd89 = (* (( (ptr) (* (( (ptr) gf←c95140)+162)/* var←c84548 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd89 ))))(original←v8284, copy←v8328, 0, 0, pd89);
      };
SOURCE(9321, 39)
   {
      word pd90;
      pd90 = (* (( (ptr) (* (( (ptr) gf←c95140)+160)/* var←c84484 */  ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd90 ))))((* (( (ptr) gf←c95140)+29) ), (* (( (ptr) gf←c95140)+28) ), pd90);
      };
SOURCE(7762, 1598)
   return(copy←v8328);
   }

static void CopyEachSegment←P3876(formal←c01308, formal←c95236)
   word formal←c01308;
   word formal←c95236;
   {
   W7 var←c95172;
   /* declaration of q←v17472 skipped */ 
   register ptr gf←c95204 =  (ptr) &globalframe;
   /* declaration of var←c84772 skipped */ 
   formal←c95236 = (formal←c95236 - 24);
   var←c95172.f4/* q←v17472 */  = formal←c01308;
   var←c95172.f0 = formal←c95236;
   /* CopyEachSegment: */ 
SOURCE(8190, 302)
   {
      word tmpAddr91;
      tmpAddr91 = (word) (( (ptr) &var←c95172)+5)/* var←c84772 */ ;
      (*  (ptr) tmpAddr91 ) = ( ((word)  (fPt) CopySegmentAndBuild←P3996) );
      (* (( (ptr) tmpAddr91) + 1) ) = 1;
      };
SOURCE(8439, 53)
   {
      word var←c84804;
      word pd92;
      pd92 = (* (( (ptr) (* (( (ptr) gf←c95204)+163)/* var←c84740 */  ))+13) );
      var←c84804 = (word) ( *( (fPt) ((*  (ptr) pd92 ))))((*  (W3Pt) (( (ptr) formal←c95236)+8) ), (word) (( (bPt) &var←c95172)+20)
         /* var←c84772 */ , pd92);
      };
   }

static word CopySegmentAndBuild←P3996(item←v17812, formal←c95300)
   word item←v17812;
   word formal←c95300;
   {
   register ptr gf←c95268 =  (ptr) &globalframe;
   word quit←v17856;
   word copy←v17884 = 0;
   word oldSeg←v17912 = 0;
   formal←c95300 = (formal←c95300 - 20);
   /* CopySegmentAndBuild: */ 
SOURCE(8261, 173)
SOURCE(8261, 173)
   quit←v17856 = 0;
SOURCE(8363, 21)
   oldSeg←v17912 = XR←Narrow(item←v17812, (* (( (ptr) gf←c95268)+19) ));
SOURCE(8386, 36)
   {
      word pd93;
      pd93 = (* (( (ptr) (* (( (ptr) gf←c95268)+164)/* var←c84836 */  ))+17) );
      copy←v17884 = (word) ( *( (fPt) ((*  (ptr) pd93 ))))(oldSeg←v17912, pd93);
      };
SOURCE(8424, 10)
   {
      word pd94;
      pd94 = (* (( (ptr) formal←c95300)+4) );
      (void) ( *( (fPt) ((*  (ptr) pd94 ))))(copy←v17884, 1, pd94);
      };
SOURCE(8261, 173)
   return(quit←v17856);
   }

static void CopyEachJoint←P3936(formal←c01309, formal←c95396)
   word formal←c01309;
   word formal←c95396;
   {
   W7 var←c95332;
   /* declaration of q←v17620 skipped */ 
   register ptr gf←c95364 =  (ptr) &globalframe;
   /* declaration of var←c84868 skipped */ 
   formal←c95396 = (formal←c95396 - 16);
   var←c95332.f4/* q←v17620 */  = formal←c01309;
   var←c95332.f0 = formal←c95396;
   /* CopyEachJoint: */ 
SOURCE(8497, 350)
   {
      word tmpAddr95;
      tmpAddr95 = (word) (( (ptr) &var←c95332)+5)/* var←c84868 */ ;
      (*  (ptr) tmpAddr95 ) = ( ((word)  (fPt) CopyJointAndBuild←P4056) );
      (* (( (ptr) tmpAddr95) + 1) ) = 1;
      };
SOURCE(8798, 49)
   {
      word var←c84900;
      word pd96;
      pd96 = (* (( (ptr) (* (( (ptr) gf←c95364)+163)/* var←c84740 */  ))+13) );
      var←c84900 = (word) ( *( (fPt) ((*  (ptr) pd96 ))))((*  (W3Pt) (( (ptr) formal←c95396)+11) ), (word) (( (bPt) &var←c95332)+20)
         /* var←c84868 */ , pd96);
      };
   }

static word CopyJointAndBuild←P4056(item←v18032, formal←c95460)
   word item←v18032;
   word formal←c95460;
   {
   register ptr gf←c95428 =  (ptr) &globalframe;
   word quit←v18076;
   word copy←v18104 = 0;
   word oldJoint←v18132 = 0;
   formal←c95460 = (formal←c95460 - 20);
   /* CopyJointAndBuild: */ 
SOURCE(8566, 227)
SOURCE(8566, 227)
   quit←v18076 = 0;
SOURCE(8666, 23)
   oldJoint←v18132 = XR←Narrow(item←v18032, (* (( (ptr) gf←c95428)+20) ));
SOURCE(8691, 90)
   {
      word var←c84932;
      var←c84932 = XR←NewObject(28, (* (( (ptr) gf←c95428)+20) ));
      (*  (W2Pt) var←c84932 ) = (*  (W2Pt) oldJoint←v18132 );
      (*  (W4Pt) (( (ptr) var←c84932)+2) ) = (*  (W4Pt) (( (ptr) oldJoint←v18132)+2) );
      copy←v18104 = var←c84932;
      };
SOURCE(8783, 10)
   {
      word pd97;
      pd97 = (* (( (ptr) formal←c95460)+4) );
      (void) ( *( (fPt) ((*  (ptr) pd97 ))))(copy←v18104, 1, pd97);
      };
SOURCE(8566, 227)
   return(quit←v18076);
   }

static void TrajRestore←P660(from←v8388, to←v8416)
   word from←v8388;
   word to←v8416;
   {
   register ptr gf←c95492 =  (ptr) &globalframe;
   /* TrajRestore: */ 
SOURCE(9366, 783)
SOURCE(9413, 27)
   if ((to←v8416 == 0) || (from←v8388 == 0)) {
SOURCE(9440, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(9447, 28)
   if (((*  (ptr) to←v8416 ) != (*  (ptr) from←v8388 ))) {
SOURCE(9475, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(9482, 28)
   if (((*  (ptr) (*  (ptr) to←v8416 ) ) != (* (( (ptr) gf←c95492)+30) ))) {
SOURCE(9510, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(9517, 635)
   {
      word fromData←v18176;
      word toData←v18204;
SOURCE(9523, 38)
      fromData←v18176 = XR←Narrow((* (( (ptr) from←v8388)+1) ), (* (( (ptr) gf←c95492)+10) ));
SOURCE(9563, 34)
      toData←v18204 = XR←Narrow((* (( (ptr) to←v8416)+1) ), (* (( (ptr) gf←c95492)+10) ));
SOURCE(9600, 19)
      (*  (W16Pt) toData←v18204 ) = (*  (W16Pt) fromData←v18176 );
SOURCE(9622, 39)
      (*  (W4Pt) (( (ptr) to←v8416)+3) ) = (*  (W4Pt) (( (ptr) from←v8388)+3) );
SOURCE(9681, 28)
      (* (( (ptr) to←v8416)+7) ) = 0;
SOURCE(9735, 25)
      (* (( (ptr) to←v8416)+8) ) = 0;
SOURCE(9786, 28)
      (* (( (ptr) to←v8416)+9) ) = 0;
SOURCE(9840, 27)
      (* (( (ptr) to←v8416)+10) ) = 0;
SOURCE(9893, 29)
      (*  (W6Pt) (* (( (ptr) to←v8416)+13) ) ) = (*  (W6Pt) (* (( (ptr) from←v8388)+13) ) );
SOURCE(9924, 37)
      (* (( (ptr) to←v8416)+14) ) = (* (( (ptr) from←v8388)+14) );
SOURCE(9963, 29)
      (*  (W6Pt) (* (( (ptr) to←v8416)+15) ) ) = (*  (W6Pt) (* (( (ptr) from←v8388)+15) ) );
SOURCE(9994, 27)
      (* (( (ptr) to←v8416)+16) ) = (* (( (ptr) from←v8388)+16) );
SOURCE(10023, 29)
      (* (( (ptr) to←v8416)+17) ) = (* (( (ptr) from←v8388)+17) );
SOURCE(10054, 33)
      (* (( (ptr) to←v8416)+18) ) = (* (( (ptr) from←v8388)+18) );
SOURCE(10089, 27)
      (* (( (ptr) to←v8416)+19) ) = (* (( (ptr) from←v8388)+19) );
SOURCE(10118, 31)
      (* (( (ptr) to←v8416)+20) ) = (* (( (ptr) from←v8388)+20) );
      };
   }

static void BuildConstrainedPathSeg←P720(slice←v8476, transformParts←v8504, segNum←v8532, seg←v8560, transform←v8588, entire←v8616, lo←v8644, hi←v8672, controlPoints←v8700, editConstraints←v8728, lineTo←v8756, curveTo←v8784, conicTo←v8812, arcTo←v8840)
   word slice←v8476;
   word transformParts←v8504;
   word segNum←v8532;
   word seg←v8560;
   word transform←v8588;
   word entire←v8616;
   word lo←v8644;
   word hi←v8672;
   word controlPoints←v8700;
   word editConstraints←v8728;
   word lineTo←v8756;
   word curveTo←v8784;
   word conicTo←v8812;
   word arcTo←v8840;
   {
   register ptr gf←c95524 =  (ptr) &globalframe;
   /* BuildConstrainedPathSeg: */ 
SOURCE(10160, 5687)
SOURCE(10476, 5371)
   if ((0 != entire←v8616)) {
SOURCE(10491, 114)
      {
         word pd98;
         pd98 = (* (( (ptr) (*  (ptr) seg←v8560 ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd98 ))))(seg←v8560, transform←v8588, entire←v8616, lo←v8644, hi←v8672, controlPoints←v8700
            , lineTo←v8756, curveTo←v8784, conicTo←v8812, arcTo←v8840, pd98);
         };
      }
   else {
SOURCE(10605, 5244)
      {
         W2 dirVec←v18248;
         word distance←v18276;
         word partialTransform←v18304 = 0;
         word ctrlLoTrans←v18332 = 0;
         word ctrlHiTrans←v18360 = 0;
         W2 newJoint←v18388;
         W2 ctrlPoint←v18416;
         word ctrlPoints←v18444;
         word trajTransformParts←v18472;
SOURCE(10734, 57)
         ctrlPoints←v18444 = XR←NewObject(8, (* (( (ptr) gf←c95524)+21) ));
         (*  (ptr) ctrlPoints←v18444 ) = 2;
SOURCE(10831, 54)
         trajTransformParts←v18472 = XR←Narrow(transformParts←v8504, (* (( (ptr) gf←c95524)+15) ));
SOURCE(10887, 69)
         {
            word limit99;
            word xs100;
            word limit101;
            word limit102;
            word xs103;
            word x104;
            if ((controlPoints←v8700 == 0)) {
               xs100 = (word) (
                  limit99 = (*  (ptr) ctrlPoints←v18444 ),
                  BCK(0, limit99)
                  );
               (*  (bPt) ((( (bPt) ctrlPoints←v18444)+4) + ((word) xs100 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs100 & 7)+1));
               }
            else {
               xs103 = (word) (
                  limit102 = (*  (ptr) ctrlPoints←v18444 ),
                  BCK(0, limit102)
                  );
               x104 = (word) ((( (bPt) ctrlPoints←v18444)+4) + ((word) xs103 >> 3));
               xs103 = 8 - ((word) (xs103 & 7)+1);
               (*  (bPt) x104 ) = ((*  (bPt) x104 ) & ( ~ ((unsigned) 1 << xs103))) | ((( (unsigned) XR←ExtractField(controlPoints←v8700, 32 + (word) (
                        limit101 = (*  (ptr) controlPoints←v8700 ),
                        BCK(0, limit101)
                        ), 1) & 1)) << xs103);
               };
            };
SOURCE(10958, 69)
         {
            word limit105;
            word xs106;
            word limit107;
            word limit108;
            word xs109;
            word x110;
            if ((controlPoints←v8700 == 0)) {
               xs106 = (word) (
                  limit105 = (*  (ptr) ctrlPoints←v18444 ),
                  BCK(1, limit105)
                  );
               (*  (bPt) ((( (bPt) ctrlPoints←v18444)+4) + ((word) xs106 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs106 & 7)+1));
               }
            else {
               xs109 = (word) (
                  limit108 = (*  (ptr) ctrlPoints←v18444 ),
                  BCK(1, limit108)
                  );
               x110 = (word) ((( (bPt) ctrlPoints←v18444)+4) + ((word) xs109 >> 3));
               xs109 = 8 - ((word) (xs109 & 7)+1);
               (*  (bPt) x110 ) = ((*  (bPt) x110 ) & ( ~ ((unsigned) 1 << xs109))) | ((( (unsigned) XR←ExtractField(controlPoints←v8700, 32 + (word) (
                        limit107 = (*  (ptr) controlPoints←v8700 ),
                        BCK(1, limit107)
                        ), 1) & 1)) << xs109);
               };
            };
SOURCE(11029, 62)
         {
            word limit111;
            if (XR←ExtractField(ctrlPoints←v18444, 32 + (word) (
                  limit111 = (*  (ptr) ctrlPoints←v18444 ),
                  BCK(0, limit111)
                  ), 1)) {
               ctrlLoTrans←v18332 = transform←v8588;
               }
            else {
               ctrlLoTrans←v18332 = (* (( (ptr) gf←c95524)+6)/* idTransform←v7144 */  );
               };
            };
SOURCE(11093, 62)
         {
            word limit112;
            if (XR←ExtractField(ctrlPoints←v18444, 32 + (word) (
                  limit112 = (*  (ptr) ctrlPoints←v18444 ),
                  BCK(1, limit112)
                  ), 1)) {
               ctrlHiTrans←v18360 = transform←v8588;
               }
            else {
               ctrlHiTrans←v18360 = (* (( (ptr) gf←c95524)+6)/* idTransform←v7144 */  );
               };
            };
SOURCE(11158, 692)
         {
            word tc113;
            word limit114;
            if ((0 != lo←v8644)) {
               tc113 =  (word)  ! XR←ExtractField(ctrlPoints←v18444, 32 + (word) (
                     limit114 = (*  (ptr) ctrlPoints←v18444 ),
                     BCK(0, limit114)
                     ), 1);
               }
            else {
               tc113 =  (word) 0;
               };
            if (tc113) {
SOURCE(11216, 45)
               {
                  word pd115;
                  pd115 = (* (( (ptr) (*  (ptr) seg←v8560 ))+16) );
                  (void) ( *( (fPt) ((*  (ptr) pd115 ))))((word) &ctrlPoint←v18416, seg←v8560, 0, pd115);
                  };
SOURCE(11263, 20)
               {
                  word limit116;
                  word xs117;
                  xs117 = (word) (
                     limit116 = (*  (ptr) ctrlPoints←v18444 ),
                     BCK(0, limit116)
                     );
                  (*  (bPt) ((( (bPt) ctrlPoints←v18444)+4) + ((word) xs117 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs117 & 7)+1));
                  };
SOURCE(11285, 60)
               {
                  word pd118;
                  pd118 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+39) );
                  (void) ( *( (fPt) ((*  (ptr) pd118 ))))((word) &newJoint←v18388, transform←v8588, (*  (W2Pt) (( (ptr) seg←v8560)+9) ), pd118)
                  ;
                  };
SOURCE(11347, 98)
               {
                  W2 var←c84996;
                  {
                     word pd119;
                     pd119 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
                     (void) ( *( (fPt) ((*  (ptr) pd119 ))))((word) &var←c84996, ctrlPoint←v18416, newJoint←v18388, pd119);
                     };
                  {
                     word pd120;
                     pd120 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+10) );
                     partialTransform←v18304 = (word) ( *( (fPt) ((*  (ptr) pd120 ))))(var←c84996, pd120);
                     };
                  };
SOURCE(11447, 54)
               {
                  word pd121;
                  pd121 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
                  (void) ( *( (fPt) ((*  (ptr) pd121 ))))((word) &dirVec←v18248, (*  (W2Pt) (( (ptr) seg←v8560)+9) ), ctrlPoint←v18416, pd121)
                  ;
                  };
SOURCE(11503, 347)
               if ((editConstraints←v8728 == 1)) {
                  {
                     W2 var←c85060;
SOURCE(11539, 50)
                     {
                        word pd122;
                        pd122 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+19) );
                        distance←v18276 = (word) ( *( (fPt) ((*  (ptr) pd122 ))))(newJoint←v18388, ctrlPoint←v18416, pd122);
                        };
SOURCE(11591, 57)
                     var←c85060.f0 = (*  (ptr) &fc123 );
                     var←c85060.f1 = (*  (ptr) &fc123 );
                     if ( ! XR←EqualWords(&dirVec←v18248, &var←c85060, 2)) {
SOURCE(11612, 36)
                        {
                           word pd124;
                           pd124 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+13) );
                           (void) ( *( (fPt) ((*  (ptr) pd124 ))))((word) &dirVec←v18248, dirVec←v18248, pd124);
                           };
                        };
SOURCE(11667, 100)
                     {
                        W2 var←c85092;
                        {
                           word pd125;
                           pd125 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+12) );
                           (void) ( *( (fPt) ((*  (ptr) pd125 ))))((word) &var←c85092, dirVec←v18248, distance←v18276, pd125);
                           };
                        {
                           word pd126;
                           pd126 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+22) );
                           ctrlLoTrans←v18332 = (word) ( *( (fPt) ((*  (ptr) pd126 ))))(partialTransform←v18304, var←c85092, pd126);
                           };
                        };
                     };
                  }
               else {
SOURCE(11776, 74)
                  {
                     word pd127;
                     pd127 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+22) );
                     ctrlLoTrans←v18332 = (word) ( *( (fPt) ((*  (ptr) pd127 ))))(partialTransform←v18304, dirVec←v18248, pd127);
                     };
                  };
               };
            };
SOURCE(11856, 693)
         {
            word tc128;
            word limit129;
            if ((0 != hi←v8672)) {
               tc128 =  (word)  ! XR←ExtractField(ctrlPoints←v18444, 32 + (word) (
                     limit129 = (*  (ptr) ctrlPoints←v18444 ),
                     BCK(1, limit129)
                     ), 1);
               }
            else {
               tc128 =  (word) 0;
               };
            if (tc128) {
SOURCE(11915, 45)
               {
                  word pd130;
                  pd130 = (* (( (ptr) (*  (ptr) seg←v8560 ))+16) );
                  (void) ( *( (fPt) ((*  (ptr) pd130 ))))((word) &ctrlPoint←v18416, seg←v8560, 1, pd130);
                  };
SOURCE(11962, 20)
               {
                  word limit131;
                  word xs132;
                  xs132 = (word) (
                     limit131 = (*  (ptr) ctrlPoints←v18444 ),
                     BCK(1, limit131)
                     );
                  (*  (bPt) ((( (bPt) ctrlPoints←v18444)+4) + ((word) xs132 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs132 & 7)+1));
                  };
SOURCE(11984, 60)
               {
                  word pd133;
                  pd133 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+39) );
                  (void) ( *( (fPt) ((*  (ptr) pd133 ))))((word) &newJoint←v18388, transform←v8588, (*  (W2Pt) (( (ptr) seg←v8560)+11) ), pd133)
                  ;
                  };
SOURCE(12046, 98)
               {
                  W2 var←c85124;
                  {
                     word pd134;
                     pd134 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
                     (void) ( *( (fPt) ((*  (ptr) pd134 ))))((word) &var←c85124, ctrlPoint←v18416, newJoint←v18388, pd134);
                     };
                  {
                     word pd135;
                     pd135 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+10) );
                     partialTransform←v18304 = (word) ( *( (fPt) ((*  (ptr) pd135 ))))(var←c85124, pd135);
                     };
                  };
SOURCE(12146, 54)
               {
                  word pd136;
                  pd136 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
                  (void) ( *( (fPt) ((*  (ptr) pd136 ))))((word) &dirVec←v18248, (*  (W2Pt) (( (ptr) seg←v8560)+11) ), ctrlPoint←v18416, pd136)
                  ;
                  };
SOURCE(12202, 347)
               if ((editConstraints←v8728 == 1)) {
                  {
                     W2 var←c85156;
SOURCE(12238, 50)
                     {
                        word pd137;
                        pd137 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+19) );
                        distance←v18276 = (word) ( *( (fPt) ((*  (ptr) pd137 ))))(newJoint←v18388, ctrlPoint←v18416, pd137);
                        };
SOURCE(12290, 57)
                     var←c85156.f0 = (*  (ptr) &fc123 );
                     var←c85156.f1 = (*  (ptr) &fc123 );
                     if ( ! XR←EqualWords(&dirVec←v18248, &var←c85156, 2)) {
SOURCE(12311, 36)
                        {
                           word pd138;
                           pd138 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+13) );
                           (void) ( *( (fPt) ((*  (ptr) pd138 ))))((word) &dirVec←v18248, dirVec←v18248, pd138);
                           };
                        };
SOURCE(12366, 100)
                     {
                        W2 var←c85188;
                        {
                           word pd139;
                           pd139 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+12) );
                           (void) ( *( (fPt) ((*  (ptr) pd139 ))))((word) &var←c85188, dirVec←v18248, distance←v18276, pd139);
                           };
                        {
                           word pd140;
                           pd140 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+22) );
                           ctrlHiTrans←v18360 = (word) ( *( (fPt) ((*  (ptr) pd140 ))))(partialTransform←v18304, var←c85188, pd140);
                           };
                        };
                     };
                  }
               else {
SOURCE(12475, 74)
                  {
                     word pd141;
                     pd141 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+22) );
                     ctrlHiTrans←v18360 = (word) ( *( (fPt) ((*  (ptr) pd141 ))))(partialTransform←v18304, dirVec←v18248, pd141);
                     };
                  };
               };
            };
SOURCE(12556, 1549)
         {
            word tc142;
            word limit143;
            if ( ! XR←ExtractField(ctrlPoints←v18444, 32 + (word) (
                  limit143 = (*  (ptr) ctrlPoints←v18444 ),
                  BCK(0, limit143)
                  ), 1)) {
               tc142 =  (word) (0 == lo←v8644);
               }
            else {
               tc142 =  (word) 0;
               };
            if (tc142) {
SOURCE(12593, 1553)
               {
                  word prevSegNum←v18516;
                  word var←c85252;
SOURCE(12595, 58)
                  {
                     word pd144;
                     pd144 = (* (( (ptr) (* (( (ptr) gf←c95524)+161)/* var←c84516 */  ))+42) );
                     prevSegNum←v18516 = (word) ( *( (fPt) ((*  (ptr) pd144 ))))(slice←v8476, segNum←v8532, pd144);
                     };
SOURCE(12655, 1450)
                  {
                     word tc145;
                     word pd146;
                     if (( (int)prevSegNum←v18516 !=  (int) (word) -1)) {
                        pd146 = (* (( (ptr) (* (( (ptr) gf←c95524)+161)/* var←c84516 */  ))+29) );
                        tc145 =  (word) ((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd146 ))))(slice←v8476, SGNCK(prevSegNum←v18516), pd146) ) ) == (* (
                           ( (ptr) gf←c95524)+27) ));
                        }
                     else {
                        tc145 =  (word) 0;
                        };
                     if (tc145) {
SOURCE(12745, 1360)
                        {
                           word limit148;
                           {
/*1*/   word var←c85220;
/*1*/   var←c85220 = (* (( (ptr) trajTransformParts←v18472)+2) );
/*1*/   {
/*1*/      word limit147;
/*1*/      var←c85252 = (* ((( (ptr) var←c85220)+1)+(
/*1*/            limit147 = (*  (ptr) var←c85220 ),
/*1*/            BCK(prevSegNum←v18516, limit147)
/*1*/            )) );
/*1*/      };
/*1*/   };
                           if (XR←ExtractField(var←c85252, 32 + (word) (
/*1*/      limit148 = (*  (ptr) var←c85252 ),
/*1*/      BCK(1, limit148)
/*1*/      ), 1)) {
SOURCE(12801, 1339)
/*1*/   {
/*1*/      word angle←v18560;
/*1*/      W2 transformedPoint←v18588;
/*1*/      W2 otherCtrlPoint←v18616;
/*1*/      W2 otherDirVector←v18644;
/*1*/      W2 var←c85380;
/*1*/      W2 var←c85476;
SOURCE(12841, 92)
/*1*/      {
/*1*/         word var←c85284;
/*1*/         {
/*1*/            word pd149;
/*1*/            pd149 = (* (( (ptr) (* (( (ptr) gf←c95524)+161)/* var←c84516 */  ))+29) );
/*1*/            var←c85284 = (word) ( *( (fPt) ((*  (ptr) pd149 ))))(slice←v8476, SGNCK(prevSegNum←v18516), pd149);
/*1*/            };
/*1*/         {
/*1*/            word pd150;
/*1*/            pd150 = (* (( (ptr) (*  (ptr) seg←v8560 ))+16) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd150 ))))((word) &otherCtrlPoint←v18616, var←c85284, 1, pd150);
/*1*/            };
/*1*/         };
SOURCE(12935, 75)
/*1*/      {
/*1*/         word pd151;
/*1*/         pd151 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd151 ))))((word) &otherDirVector←v18644, (*  (W2Pt) (( (ptr) seg←v8560)+9) ), otherCtrlPoint←v18616, pd151)
/*1*/         ;
/*1*/         };
SOURCE(13012, 45)
/*1*/      {
/*1*/         word pd152;
/*1*/         pd152 = (* (( (ptr) (*  (ptr) seg←v8560 ))+16) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd152 ))))((word) &ctrlPoint←v18416, seg←v8560, 0, pd152);
/*1*/         };
SOURCE(13059, 54)
/*1*/      {
/*1*/         word pd153;
/*1*/         pd153 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd153 ))))((word) &dirVec←v18248, (*  (W2Pt) (( (ptr) seg←v8560)+9) ), ctrlPoint←v18416, pd153)
/*1*/         ;
/*1*/         };
SOURCE(13115, 38)
/*1*/      {
/*1*/         word pd154;
/*1*/         pd154 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+18) );
/*1*/         distance←v18276 = (word) ( *( (fPt) ((*  (ptr) pd154 ))))(dirVec←v18248, pd154);
/*1*/         };
SOURCE(13155, 76)
/*1*/      {
/*1*/         word pd155;
/*1*/         pd155 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+39) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd155 ))))((word) &transformedPoint←v18588, transform←v8588, otherCtrlPoint←v18616, pd155);
/*1*/         };
SOURCE(13233, 115)
/*1*/      {
/*1*/         W2 var←c85316;
/*1*/         {
/*1*/            word pd156;
/*1*/            pd156 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd156 ))))((word) &var←c85316, (*  (W2Pt) (( (ptr) seg←v8560)+9) ), transformedPoint←v18588, pd156)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd157;
/*1*/            pd157 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+9) );
/*1*/            angle←v18560 = (word) ( *( (fPt) ((*  (ptr) pd157 ))))(otherDirVector←v18644, var←c85316, pd157);
/*1*/            };
/*1*/         };
SOURCE(13350, 96)
/*1*/      {
/*1*/         W2 var←c85348;
/*1*/         {
/*1*/            word pd158;
/*1*/            pd158 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd158 ))))((word) &var←c85348, ctrlPoint←v18416, (*  (W2Pt) (( (ptr) seg←v8560)+9) ), pd158)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd159;
/*1*/            pd159 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+10) );
/*1*/            partialTransform←v18304 = (word) ( *( (fPt) ((*  (ptr) pd159 ))))(var←c85348, pd159);
/*1*/            };
/*1*/         };
SOURCE(13448, 20)
/*1*/      {
/*1*/         word limit160;
/*1*/         word xs161;
/*1*/         xs161 = (word) (
/*1*/            limit160 = (*  (ptr) ctrlPoints←v18444 ),
/*1*/            BCK(0, limit160)
/*1*/            );
/*1*/         (*  (bPt) ((( (bPt) ctrlPoints←v18444)+4) + ((word) xs161 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs161 & 7)+1));
/*1*/         };
SOURCE(13471, 634)
/*1*/      if ((editConstraints←v8728 == 1)) {
SOURCE(13507, 245)
/*1*/         {
/*1*/            word tc162;
/*1*/            if ( ! XR←EqualWords(&transformedPoint←v18588, (( (ptr) seg←v8560)+9), 2)) {
/*1*/               var←c85380.f0 = (*  (ptr) &fc123 );
/*1*/               var←c85380.f1 = (*  (ptr) &fc123 );
/*1*/               tc162 =  (word)  ! XR←EqualWords(&otherDirVector←v18644, &var←c85380, 2);
/*1*/               }
/*1*/            else {
/*1*/               tc162 =  (word) 0;
/*1*/               };
/*1*/            if (tc162) {
SOURCE(13617, 135)
/*1*/               {
/*1*/                  W2 var←c85412;
/*1*/                  {
/*1*/                     W2 var←c85444;
/*1*/                     {
/*1*/                        word pd163;
/*1*/                        pd163 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+5) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd163 ))))((word) &var←c85444, dirVec←v18248, angle←v18560, pd163);
/*1*/                        };
/*1*/                     {
/*1*/                        W2 var←c0230;
/*1*/                        {
/*1*/                           word pd164;
/*1*/                           pd164 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+12) );
/*1*/                           (void) ( *( (fPt) ((*  (ptr) pd164 ))))((word) &var←c0230, var←c85444, distance←v18276, pd164);
/*1*/                           };
/*1*/                        var←c85412 = var←c0230;
/*1*/                        };
/*1*/                     };
/*1*/                  {
/*1*/                     word pd165;
/*1*/                     pd165 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+22) );
/*1*/                     ctrlLoTrans←v18332 = (word) ( *( (fPt) ((*  (ptr) pd165 ))))(partialTransform←v18304, var←c85412, pd165);
/*1*/                     };
/*1*/                  };
/*1*/               };
/*1*/            };
/*1*/         }
/*1*/      else {
SOURCE(13803, 302)
/*1*/         var←c85476.f0 = (*  (ptr) &fc123 );
/*1*/         var←c85476.f1 = (*  (ptr) &fc123 );
/*1*/         if ( ! XR←EqualWords(&otherDirVector←v18644, &var←c85476, 2)) {
SOURCE(13836, 132)
/*1*/            {
/*1*/               word var←c85508;
/*1*/               word var←c01257;
/*1*/               {
/*1*/                  word pd166;
/*1*/                  word x167;
/*1*/                  word pd168;
/*1*/                  word x169;
/*1*/                  pd166 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+21) );
/*1*/                  pd168 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+20) );
/*1*/                  *(float*)&var←c85508 = (
/*1*/                     x167 = (word) ( *( (fPt) ((*  (ptr) pd166 ))))((*  (W2Pt) (( (ptr) seg←v8560)+9) ), transformedPoint←v18588, pd166),  *(float*)&x167
/*1*/                     ) / (
/*1*/                     x169 = (word) ( *( (fPt) ((*  (ptr) pd168 ))))(otherDirVector←v18644, pd168),  *(float*)&x169
/*1*/                     );
/*1*/                  };
/*1*/               {
/*1*/                  word pd170;
/*1*/                  pd170 = (* (( (ptr) (* (( (ptr) gf←c95524)+166)/* var←c85540 */  ))+9) );
/*1*/                  var←c01257 = (word) ( *( (fPt) ((*  (ptr) pd170 ))))(var←c85508, pd170);
/*1*/                  };
/*1*/               {
/*1*/                  word x171;
/*1*/                  word x172;
/*1*/                  *(float*)&distance←v18276 = (
/*1*/                     x171 = var←c01257,  *(float*)&x171
/*1*/                     ) * (
/*1*/                     x172 = distance←v18276,  *(float*)&x172
/*1*/                     );
/*1*/                  };
/*1*/               };
SOURCE(13970, 135)
/*1*/            {
/*1*/               W2 var←c85572;
/*1*/               {
/*1*/                  W2 var←c85604;
/*1*/                  {
/*1*/                     word pd173;
/*1*/                     pd173 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+5) );
/*1*/                     (void) ( *( (fPt) ((*  (ptr) pd173 ))))((word) &var←c85604, dirVec←v18248, angle←v18560, pd173);
/*1*/                     };
/*1*/                  {
/*1*/                     W2 var←c0236;
/*1*/                     {
/*1*/                        word pd174;
/*1*/                        pd174 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+12) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd174 ))))((word) &var←c0236, var←c85604, distance←v18276, pd174);
/*1*/                        };
/*1*/                     var←c85572 = var←c0236;
/*1*/                     };
/*1*/                  };
/*1*/               {
/*1*/                  word pd175;
/*1*/                  pd175 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+22) );
/*1*/                  ctrlLoTrans←v18332 = (word) ( *( (fPt) ((*  (ptr) pd175 ))))(partialTransform←v18304, var←c85572, pd175);
/*1*/                  };
/*1*/               };
/*1*/            };
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
SOURCE(14150, 1550)
         {
            word tc176;
            word limit177;
            if ( ! XR←ExtractField(ctrlPoints←v18444, 32 + (word) (
                  limit177 = (*  (ptr) ctrlPoints←v18444 ),
                  BCK(1, limit177)
                  ), 1)) {
               tc176 =  (word) (0 == hi←v8672);
               }
            else {
               tc176 =  (word) 0;
               };
            if (tc176) {
SOURCE(14187, 1553)
               {
                  word nextSegNum←v18688;
                  word var←c85668;
SOURCE(14189, 59)
                  {
                     word pd178;
                     pd178 = (* (( (ptr) (* (( (ptr) gf←c95524)+161)/* var←c84516 */  ))+43) );
                     nextSegNum←v18688 = (word) ( *( (fPt) ((*  (ptr) pd178 ))))(slice←v8476, segNum←v8532, pd178);
                     };
SOURCE(14250, 1450)
                  {
                     word tc179;
                     word pd180;
                     if (( (int)nextSegNum←v18688 !=  (int) (word) -1)) {
                        pd180 = (* (( (ptr) (* (( (ptr) gf←c95524)+161)/* var←c84516 */  ))+29) );
                        tc179 =  (word) ((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd180 ))))(slice←v8476, SGNCK(nextSegNum←v18688), pd180) ) ) == (* (
                           ( (ptr) gf←c95524)+27) ));
                        }
                     else {
                        tc179 =  (word) 0;
                        };
                     if (tc179) {
SOURCE(14340, 1360)
                        {
                           word limit182;
                           {
/*1*/   word var←c85636;
/*1*/   var←c85636 = (* (( (ptr) trajTransformParts←v18472)+2) );
/*1*/   {
/*1*/      word limit181;
/*1*/      var←c85668 = (* ((( (ptr) var←c85636)+1)+(
/*1*/            limit181 = (*  (ptr) var←c85636 ),
/*1*/            BCK(nextSegNum←v18688, limit181)
/*1*/            )) );
/*1*/      };
/*1*/   };
                           if (XR←ExtractField(var←c85668, 32 + (word) (
/*1*/      limit182 = (*  (ptr) var←c85668 ),
/*1*/      BCK(0, limit182)
/*1*/      ), 1)) {
SOURCE(14396, 1338)
/*1*/   {
/*1*/      word angle←v18732;
/*1*/      W2 transformedPoint←v18760;
/*1*/      W2 otherCtrlPoint←v18788;
/*1*/      W2 otherDirVector←v18816;
/*1*/      W2 var←c85796;
/*1*/      W2 var←c85892;
SOURCE(14436, 92)
/*1*/      {
/*1*/         word var←c85700;
/*1*/         {
/*1*/            word pd183;
/*1*/            pd183 = (* (( (ptr) (* (( (ptr) gf←c95524)+161)/* var←c84516 */  ))+29) );
/*1*/            var←c85700 = (word) ( *( (fPt) ((*  (ptr) pd183 ))))(slice←v8476, SGNCK(nextSegNum←v18688), pd183);
/*1*/            };
/*1*/         {
/*1*/            word pd184;
/*1*/            pd184 = (* (( (ptr) (*  (ptr) seg←v8560 ))+16) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd184 ))))((word) &otherCtrlPoint←v18788, var←c85700, 0, pd184);
/*1*/            };
/*1*/         };
SOURCE(14530, 75)
/*1*/      {
/*1*/         word pd185;
/*1*/         pd185 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd185 ))))((word) &otherDirVector←v18816, (*  (W2Pt) (( (ptr) seg←v8560)+11) ), otherCtrlPoint←v18788, pd185)
/*1*/         ;
/*1*/         };
SOURCE(14607, 45)
/*1*/      {
/*1*/         word pd186;
/*1*/         pd186 = (* (( (ptr) (*  (ptr) seg←v8560 ))+16) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd186 ))))((word) &ctrlPoint←v18416, seg←v8560, 1, pd186);
/*1*/         };
SOURCE(14654, 54)
/*1*/      {
/*1*/         word pd187;
/*1*/         pd187 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd187 ))))((word) &dirVec←v18248, (*  (W2Pt) (( (ptr) seg←v8560)+11) ), ctrlPoint←v18416, pd187)
/*1*/         ;
/*1*/         };
SOURCE(14710, 38)
/*1*/      {
/*1*/         word pd188;
/*1*/         pd188 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+18) );
/*1*/         distance←v18276 = (word) ( *( (fPt) ((*  (ptr) pd188 ))))(dirVec←v18248, pd188);
/*1*/         };
SOURCE(14750, 76)
/*1*/      {
/*1*/         word pd189;
/*1*/         pd189 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+39) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd189 ))))((word) &transformedPoint←v18760, transform←v8588, otherCtrlPoint←v18788, pd189);
/*1*/         };
SOURCE(14828, 115)
/*1*/      {
/*1*/         W2 var←c85732;
/*1*/         {
/*1*/            word pd190;
/*1*/            pd190 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd190 ))))((word) &var←c85732, (*  (W2Pt) (( (ptr) seg←v8560)+11) ), transformedPoint←v18760, pd190)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd191;
/*1*/            pd191 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+9) );
/*1*/            angle←v18732 = (word) ( *( (fPt) ((*  (ptr) pd191 ))))(otherDirVector←v18816, var←c85732, pd191);
/*1*/            };
/*1*/         };
SOURCE(14945, 96)
/*1*/      {
/*1*/         W2 var←c85764;
/*1*/         {
/*1*/            word pd192;
/*1*/            pd192 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd192 ))))((word) &var←c85764, ctrlPoint←v18416, (*  (W2Pt) (( (ptr) seg←v8560)+11) ), pd192)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd193;
/*1*/            pd193 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+10) );
/*1*/            partialTransform←v18304 = (word) ( *( (fPt) ((*  (ptr) pd193 ))))(var←c85764, pd193);
/*1*/            };
/*1*/         };
SOURCE(15043, 20)
/*1*/      {
/*1*/         word limit194;
/*1*/         word xs195;
/*1*/         xs195 = (word) (
/*1*/            limit194 = (*  (ptr) ctrlPoints←v18444 ),
/*1*/            BCK(1, limit194)
/*1*/            );
/*1*/         (*  (bPt) ((( (bPt) ctrlPoints←v18444)+4) + ((word) xs195 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs195 & 7)+1));
/*1*/         };
SOURCE(15066, 634)
/*1*/      if ((editConstraints←v8728 == 1)) {
SOURCE(15102, 245)
/*1*/         {
/*1*/            word tc196;
/*1*/            if ( ! XR←EqualWords(&transformedPoint←v18760, (( (ptr) seg←v8560)+11), 2)) {
/*1*/               var←c85796.f0 = (*  (ptr) &fc123 );
/*1*/               var←c85796.f1 = (*  (ptr) &fc123 );
/*1*/               tc196 =  (word)  ! XR←EqualWords(&otherDirVector←v18816, &var←c85796, 2);
/*1*/               }
/*1*/            else {
/*1*/               tc196 =  (word) 0;
/*1*/               };
/*1*/            if (tc196) {
SOURCE(15212, 135)
/*1*/               {
/*1*/                  W2 var←c85828;
/*1*/                  {
/*1*/                     W2 var←c85860;
/*1*/                     {
/*1*/                        word pd197;
/*1*/                        pd197 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+5) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd197 ))))((word) &var←c85860, dirVec←v18248, angle←v18732, pd197);
/*1*/                        };
/*1*/                     {
/*1*/                        W2 var←c0258;
/*1*/                        {
/*1*/                           word pd198;
/*1*/                           pd198 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+12) );
/*1*/                           (void) ( *( (fPt) ((*  (ptr) pd198 ))))((word) &var←c0258, var←c85860, distance←v18276, pd198);
/*1*/                           };
/*1*/                        var←c85828 = var←c0258;
/*1*/                        };
/*1*/                     };
/*1*/                  {
/*1*/                     word pd199;
/*1*/                     pd199 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+22) );
/*1*/                     ctrlHiTrans←v18360 = (word) ( *( (fPt) ((*  (ptr) pd199 ))))(partialTransform←v18304, var←c85828, pd199);
/*1*/                     };
/*1*/                  };
/*1*/               };
/*1*/            };
/*1*/         }
/*1*/      else {
SOURCE(15398, 302)
/*1*/         var←c85892.f0 = (*  (ptr) &fc123 );
/*1*/         var←c85892.f1 = (*  (ptr) &fc123 );
/*1*/         if ( ! XR←EqualWords(&otherDirVector←v18816, &var←c85892, 2)) {
SOURCE(15431, 132)
/*1*/            {
/*1*/               word var←c85924;
/*1*/               word var←c01258;
/*1*/               {
/*1*/                  word pd200;
/*1*/                  word x201;
/*1*/                  word pd202;
/*1*/                  word x203;
/*1*/                  pd200 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+21) );
/*1*/                  pd202 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+20) );
/*1*/                  *(float*)&var←c85924 = (
/*1*/                     x201 = (word) ( *( (fPt) ((*  (ptr) pd200 ))))((*  (W2Pt) (( (ptr) seg←v8560)+11) ), transformedPoint←v18760, pd200),  *(float*)&x201
/*1*/                     ) / (
/*1*/                     x203 = (word) ( *( (fPt) ((*  (ptr) pd202 ))))(otherDirVector←v18816, pd202),  *(float*)&x203
/*1*/                     );
/*1*/                  };
/*1*/               {
/*1*/                  word pd204;
/*1*/                  pd204 = (* (( (ptr) (* (( (ptr) gf←c95524)+166)/* var←c85540 */  ))+9) );
/*1*/                  var←c01258 = (word) ( *( (fPt) ((*  (ptr) pd204 ))))(var←c85924, pd204);
/*1*/                  };
/*1*/               {
/*1*/                  word x205;
/*1*/                  word x206;
/*1*/                  *(float*)&distance←v18276 = (
/*1*/                     x205 = var←c01258,  *(float*)&x205
/*1*/                     ) * (
/*1*/                     x206 = distance←v18276,  *(float*)&x206
/*1*/                     );
/*1*/                  };
/*1*/               };
SOURCE(15565, 135)
/*1*/            {
/*1*/               W2 var←c85956;
/*1*/               {
/*1*/                  W2 var←c85988;
/*1*/                  {
/*1*/                     word pd207;
/*1*/                     pd207 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+5) );
/*1*/                     (void) ( *( (fPt) ((*  (ptr) pd207 ))))((word) &var←c85988, dirVec←v18248, angle←v18732, pd207);
/*1*/                     };
/*1*/                  {
/*1*/                     W2 var←c0264;
/*1*/                     {
/*1*/                        word pd208;
/*1*/                        pd208 = (* (( (ptr) (* (( (ptr) gf←c95524)+165)/* var←c85028 */  ))+12) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd208 ))))((word) &var←c0264, var←c85988, distance←v18276, pd208);
/*1*/                        };
/*1*/                     var←c85956 = var←c0264;
/*1*/                     };
/*1*/                  };
/*1*/               {
/*1*/                  word pd209;
/*1*/                  pd209 = (* (( (ptr) (* (( (ptr) gf←c95524)+156)/* var←c83940 */  ))+22) );
/*1*/                  ctrlHiTrans←v18360 = (word) ( *( (fPt) ((*  (ptr) pd209 ))))(partialTransform←v18304, var←c85956, pd209);
/*1*/                  };
/*1*/               };
/*1*/            };
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
SOURCE(15744, 103)
         {
            word pd210;
            pd210 = (* (( (ptr) (* (( (ptr) gf←c95524)+164)/* var←c84836 */  ))+32) );
            (void) ( *( (fPt) ((*  (ptr) pd210 ))))(seg←v8560, transform←v8588, lo←v8644, hi←v8672, ctrlPoints←v18444, ctrlLoTrans←v18332
               , ctrlHiTrans←v18360, curveTo←v8784, pd210);
            };
         };
      };
   }

static void TrajBuildPath←P780(formal←c01310, formal←c01311, formal←c01312, formal←c01313, formal←c01314, formal←c01315, formal←c01316, formal←c01317, formal←c01318)
   word formal←c01310;
   word formal←c01311;
   word formal←c01312;
   word formal←c01313;
   word formal←c01314;
   word formal←c01315;
   word formal←c01316;
   word formal←c01317;
   word formal←c01318;
   {
   W19 var←c95556;
   /* declaration of slice←v8900 skipped */ 
   /* declaration of transformParts←v8928 skipped */ 
   /* declaration of transform←v8956 skipped */ 
   /* declaration of moveTo←v8984 skipped */ 
   /* declaration of lineTo←v9012 skipped */ 
   /* declaration of curveTo←v9040 skipped */ 
   /* declaration of conicTo←v9068 skipped */ 
   /* declaration of arcTo←v9096 skipped */ 
   /* declaration of editConstraints←v9124 skipped */ 
   /* declaration of var←c86020 skipped */ 
   /* declaration of var←c86052 skipped */ 
   /* declaration of var←c86084 skipped */ 
   (* (( (ptr) &var←c95556)+4)/* slice←v8900 */  ) = formal←c01310;
   (* (( (ptr) &var←c95556)+5)/* transformParts←v8928 */  ) = formal←c01311;
   (* (( (ptr) &var←c95556)+6)/* transform←v8956 */  ) = formal←c01312;
   (* (( (ptr) &var←c95556)+7)/* moveTo←v8984 */  ) = formal←c01313;
   (* (( (ptr) &var←c95556)+8)/* lineTo←v9012 */  ) = formal←c01314;
   (* (( (ptr) &var←c95556)+9)/* curveTo←v9040 */  ) = formal←c01315;
   (* (( (ptr) &var←c95556)+10)/* conicTo←v9068 */  ) = formal←c01316;
   (* (( (ptr) &var←c95556)+11)/* arcTo←v9096 */  ) = formal←c01317;
   (* (( (ptr) &var←c95556)+12)/* editConstraints←v9124 */  ) = formal←c01318;
   /* TrajBuildPath: */ 
SOURCE(15856, 2114)
   {
      word tmpAddr211;
      tmpAddr211 = (word) (( (ptr) &var←c95556)+13)/* var←c86020 */ ;
      (*  (ptr) tmpAddr211 ) = ( ((word)  (fPt) TransformNone←P4524) );
      (* (( (ptr) tmpAddr211) + 1) ) = 1;
      };
   {
      word tmpAddr212;
      tmpAddr212 = (word) (( (ptr) &var←c95556)+15)/* var←c86052 */ ;
      (*  (ptr) tmpAddr212 ) = ( ((word)  (fPt) TransformEntire←P4464) );
      (* (( (ptr) tmpAddr212) + 1) ) = 1;
      };
   {
      word tmpAddr213;
      tmpAddr213 = (word) (( (ptr) &var←c95556)+17)/* var←c86084 */ ;
      (*  (ptr) tmpAddr213 ) = ( ((word)  (fPt) TransformParts←P4404) );
      (* (( (ptr) tmpAddr213) + 1) ) = 1;
      };
SOURCE(17861, 109)
   if (((* (( (ptr) &var←c95556)+6)/* transform←v8956 */  ) != 0)) {
SOURCE(17883, 72)
      if (((* (( (ptr) &var←c95556)+5)/* transformParts←v8928 */  ) == 0)) {
SOURCE(17910, 23)
         (void) TransformEntire←P4464((word) ((( (bPt) &var←c95556)+60)/* var←c86052 */ ));
         }
      else {
SOURCE(17933, 22)
         (void) TransformParts←P4404((word) ((( (bPt) &var←c95556)+68)/* var←c86084 */ ));
         };
      }
   else {
SOURCE(17955, 15)
      (void) TransformNone←P4524((word) ((( (bPt) &var←c95556)+52)/* var←c86020 */ ));
      };
   }

static void TransformParts←P4404(formal←c95620)
   word formal←c95620;
   {
   register ptr gf←c95588 =  (ptr) &globalframe;
   word hiSegment←v19008;
   word trajParts←v19036;
   formal←c95620 = (formal←c95620 - 68);
   /* TransformParts: */ 
SOURCE(16114, 911)
SOURCE(16139, 40)
   {
      word pd214;
      pd214 = (* (( (ptr) (* (( (ptr) gf←c95588)+161)/* var←c84516 */  ))+37) );
      hiSegment←v19008 = (word) ( *( (fPt) ((*  (ptr) pd214 ))))((* ((( (ptr) formal←c95620)+4)) ), pd214);
      };
SOURCE(16181, 45)
   trajParts←v19036 = XR←Narrow((* (( (ptr) formal←c95620)+5) ), (* (( (ptr) gf←c95588)+15) ));
SOURCE(16228, 171)
   {
      W2 var←c86116;
      word var←c86148;
      word var←c86180;
      {
         word limit215;
         word limit217;
         var←c86148 = (*  (ptr) trajParts←v19036 );
         if (XR←ExtractField(var←c86148, 32 + (word) (
               limit215 = (*  (ptr) var←c86148 ),
               BCK(0, limit215)
               ), 1)) { goto then0216;};
         var←c86180 = (* (( (ptr) trajParts←v19036)+1) );
         if (XR←ExtractField(var←c86180, 32 + (word) (
               limit217 = (*  (ptr) var←c86180 ),
               BCK(0, limit217)
               ), 1)) {
            then0216: ;
            {
               W2 var←c86212;
               {
                  word pd218;
                  pd218 = (* (( (ptr) (* (( (ptr) gf←c95588)+161)/* var←c84516 */  ))+32) );
                  (void) ( *( (fPt) ((*  (ptr) pd218 ))))((word) &var←c86212, (* (( (ptr) formal←c95620)+4) ), 0, pd218);
                  };
               {
                  W2 var←c0284;
                  {
                     word pd219;
                     pd219 = (* (( (ptr) (* (( (ptr) gf←c95588)+156)/* var←c83940 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd219 ))))((word) &var←c0284, (* (( (ptr) formal←c95620)+6) ), var←c86212, pd219);
                     };
                  var←c86116 = var←c0284;
                  };
               };
            }
         else {
            {
               W2 var←c0285;
               {
                  word pd220;
                  pd220 = (* (( (ptr) (* (( (ptr) gf←c95588)+161)/* var←c84516 */  ))+32) );
                  (void) ( *( (fPt) ((*  (ptr) pd220 ))))((word) &var←c0285, (* (( (ptr) formal←c95620)+4) ), 0, pd220);
                  };
               var←c86116 = var←c0285;
               };
            };
         };
      {
         word pd221;
         pd221 = (* (( (ptr) formal←c95620)+7) );
         (void) ( *( (fPt) ((*  (ptr) pd221 ))))(var←c86116, pd221);
         };
      };
SOURCE(16401, 624)
   {
      register word index←v19080 = 0;
      register word noName←c86244;
      noName←c86244 = hiSegment←v19008;
      if (( (int)index←v19080 >  (int)noName←c86244)) {
         goto lab←L100016;
         };
      lab←L100019: ;
      {
         word seg←v19124;
SOURCE(16437, 48)
         {
            word pd222;
            pd222 = (* (( (ptr) (* (( (ptr) gf←c95588)+161)/* var←c84516 */  ))+29) );
            seg←v19124 = (word) ( *( (fPt) ((*  (ptr) pd222 ))))((* (( (ptr) formal←c95620)+4) ), SGNCK(index←v19080), pd222);
            };
SOURCE(16487, 538)
         if ( ( ((*  (ptr) (*  (ptr) seg←v19124 ) ) == (* (( (ptr) gf←c95588)+27) )) ? ((* (( (ptr) formal←c95620)+12) ) != 0) : 0 ) ) {
SOURCE(16543, 265)
            {
               word var←c86276;
               word var←c01259;
               word var←c86308;
               word var←c01260;
               word var←c86340;
               word var←c86372;
               word var←c01261;
               word var←c86404;
               word var←c01262;
               var←c86276 = (*  (ptr) trajParts←v19036 );
               {
                  word limit223;
                  var←c01259 =  (unsigned) XR←ExtractField(var←c86276, 32 + (word) (
                        limit223 = (*  (ptr) var←c86276 ),
                        BCK(index←v19080, limit223)
                        ), 1);
                  };
               var←c86308 = (* (( (ptr) trajParts←v19036)+1) );
               {
                  word limit224;
                  var←c01260 =  (unsigned) XR←ExtractField(var←c86308, 32 + (word) (
                        limit224 = (*  (ptr) var←c86308 ),
                        BCK(index←v19080, limit224)
                        ), 1);
                  };
               var←c86340 = IOP2( % ,  (int)(index←v19080 + 1),  (int)(*  (ptr) (*  (ptr) trajParts←v19036 ) ));
               var←c86372 = (* (( (ptr) trajParts←v19036)+1) );
               {
                  word limit225;
                  var←c01261 =  (unsigned) XR←ExtractField(var←c86372, 32 + (word) (
                        limit225 = (*  (ptr) var←c86372 ),
                        BCK(var←c86340, limit225)
                        ), 1);
                  };
               var←c86404 = (* (( (ptr) trajParts←v19036)+2) );
               {
                  word limit226;
                  var←c01262 = (* ((( (ptr) var←c86404)+1)+(
                        limit226 = (*  (ptr) var←c86404 ),
                        BCK(index←v19080, limit226)
                        )) );
                  };
               (void) BuildConstrainedPathSeg←P720((* (( (ptr) formal←c95620)+4) ), (* (( (ptr) formal←c95620)+5) ), SGNCK(index←v19080)
                  , seg←v19124, (* (( (ptr) formal←c95620)+6) ), var←c01259
                  , var←c01260, var←c01261, var←c01262, (* (( (ptr) formal←c95620)+12) ), (* (( (ptr) formal←c95620)+8) ), (* (( (ptr) formal←c95620)+9)
                   )
                  , (* (( (ptr) formal←c95620)+10) ), (* (( (ptr) formal←c95620)+11) ));
               };
            }
         else {
SOURCE(16808, 217)
            {
               word var←c86436;
               word var←c01263;
               word var←c86468;
               word var←c01264;
               word var←c86500;
               word var←c86532;
               word var←c01265;
               word var←c86564;
               word var←c01266;
               var←c86436 = (*  (ptr) trajParts←v19036 );
               {
                  word limit227;
                  var←c01263 =  (unsigned) XR←ExtractField(var←c86436, 32 + (word) (
                        limit227 = (*  (ptr) var←c86436 ),
                        BCK(index←v19080, limit227)
                        ), 1);
                  };
               var←c86468 = (* (( (ptr) trajParts←v19036)+1) );
               {
                  word limit228;
                  var←c01264 =  (unsigned) XR←ExtractField(var←c86468, 32 + (word) (
                        limit228 = (*  (ptr) var←c86468 ),
                        BCK(index←v19080, limit228)
                        ), 1);
                  };
               var←c86500 = IOP2( % ,  (int)(index←v19080 + 1),  (int)(*  (ptr) (*  (ptr) trajParts←v19036 ) ));
               var←c86532 = (* (( (ptr) trajParts←v19036)+1) );
               {
                  word limit229;
                  var←c01265 =  (unsigned) XR←ExtractField(var←c86532, 32 + (word) (
                        limit229 = (*  (ptr) var←c86532 ),
                        BCK(var←c86500, limit229)
                        ), 1);
                  };
               var←c86564 = (* (( (ptr) trajParts←v19036)+2) );
               {
                  word limit230;
                  var←c01266 = (* ((( (ptr) var←c86564)+1)+(
                        limit230 = (*  (ptr) var←c86564 ),
                        BCK(index←v19080, limit230)
                        )) );
                  };
               {
                  word pd231;
                  pd231 = (* (( (ptr) (*  (ptr) seg←v19124 ))+7) );
                  (void) ( *( (fPt) ((*  (ptr) pd231 ))))(seg←v19124, (* (( (ptr) formal←c95620)+6) ), var←c01263, var←c01264, var←c01265, var←c01266
                     , (* (( (ptr) formal←c95620)+8) ), (* (( (ptr) formal←c95620)+9) ), (* (( (ptr) formal←c95620)+10) ), (* (( (ptr) formal←c95620)+11)
                      ), pd231);
                  };
               };
            };
         };
      if (( (int)index←v19080 >=  (int)noName←c86244)) {
         goto lab←L100016;
         };
      index←v19080 = (index←v19080 + 1);
      goto lab←L100019;
      lab←L100016: ;
      };
   }

static void TransformEntire←P4464(formal←c95684)
   word formal←c95684;
   {
   register ptr gf←c95652 =  (ptr) &globalframe;
   word hiSegment←v19168;
   formal←c95684 = (formal←c95684 - 60);
   /* TransformEntire: */ 
SOURCE(17040, 542)
SOURCE(17066, 40)
   {
      word pd232;
      pd232 = (* (( (ptr) (* (( (ptr) gf←c95652)+161)/* var←c84516 */  ))+37) );
      hiSegment←v19168 = (word) ( *( (fPt) ((*  (ptr) pd232 ))))((* ((( (ptr) formal←c95684)+4)) ), pd232);
      };
SOURCE(17108, 82)
   {
      W2 var←c86596;
      {
         W2 var←c86628;
         {
            word pd233;
            pd233 = (* (( (ptr) (* (( (ptr) gf←c95652)+161)/* var←c84516 */  ))+32) );
            (void) ( *( (fPt) ((*  (ptr) pd233 ))))((word) &var←c86628, (* (( (ptr) formal←c95684)+4) ), 0, pd233);
            };
         {
            W2 var←c0303;
            {
               word pd234;
               pd234 = (* (( (ptr) (* (( (ptr) gf←c95652)+156)/* var←c83940 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd234 ))))((word) &var←c0303, (* (( (ptr) formal←c95684)+6) ), var←c86628, pd234);
               };
            var←c86596 = var←c0303;
            };
         };
      {
         word pd235;
         pd235 = (* (( (ptr) formal←c95684)+7) );
         (void) ( *( (fPt) ((*  (ptr) pd235 ))))(var←c86596, pd235);
         };
      };
SOURCE(17192, 390)
   {
      register word index←v19212 = 0;
      register word noName←c86660;
      noName←c86660 = hiSegment←v19168;
      if (( (int)index←v19212 >  (int)noName←c86660)) {
         goto lab←L100020;
         };
      lab←L100023: ;
      {
         word seg←v19256;
SOURCE(17228, 48)
         {
            word pd236;
            pd236 = (* (( (ptr) (* (( (ptr) gf←c95652)+161)/* var←c84516 */  ))+29) );
            seg←v19256 = (word) ( *( (fPt) ((*  (ptr) pd236 ))))((* (( (ptr) formal←c95684)+4) ), SGNCK(index←v19212), pd236);
            };
SOURCE(17278, 304)
         if ( ( ((*  (ptr) (*  (ptr) seg←v19256 ) ) == (* (( (ptr) gf←c95652)+27) )) ? ((* (( (ptr) formal←c95684)+12) ) != 0) : 0 ) ) {
SOURCE(17334, 148)
            (void) BuildConstrainedPathSeg←P720((* (( (ptr) formal←c95684)+4) ), (* (( (ptr) formal←c95684)+5) ), SGNCK(index←v19212)
               , seg←v19256, (* (( (ptr) formal←c95684)+6) ), 1
               , 1, 1, 0, (* (( (ptr) formal←c95684)+12) ), (* (( (ptr) formal←c95684)+8) ), (* (( (ptr) formal←c95684)+9) )
               , (* (( (ptr) formal←c95684)+10) ), (* (( (ptr) formal←c95684)+11) ));
            }
         else {
SOURCE(17482, 100)
            {
               word pd237;
               pd237 = (* (( (ptr) (*  (ptr) seg←v19256 ))+7) );
               (void) ( *( (fPt) ((*  (ptr) pd237 ))))(seg←v19256, (* (( (ptr) formal←c95684)+6) ), 1, 1, 1, 0
                  , (* (( (ptr) formal←c95684)+8) ), (* (( (ptr) formal←c95684)+9) ), (* (( (ptr) formal←c95684)+10) ), (* (( (ptr) formal←c95684)+11)
                   ), pd237);
               };
            };
         };
      if (( (int)index←v19212 >=  (int)noName←c86660)) {
         goto lab←L100020;
         };
      index←v19212 = (index←v19212 + 1);
      goto lab←L100023;
      lab←L100020: ;
      };
   }

static void TransformNone←P4524(formal←c95748)
   word formal←c95748;
   {
   register ptr gf←c95716 =  (ptr) &globalframe;
   word hiSegment←v19300;
   formal←c95748 = (formal←c95748 - 52);
   /* TransformNone: */ 
SOURCE(17597, 249)
SOURCE(17621, 40)
   {
      word pd238;
      pd238 = (* (( (ptr) (* (( (ptr) gf←c95716)+161)/* var←c84516 */  ))+37) );
      hiSegment←v19300 = (word) ( *( (fPt) ((*  (ptr) pd238 ))))((* ((( (ptr) formal←c95748)+4)) ), pd238);
      };
SOURCE(17663, 38)
   {
      W2 var←c86692;
      {
         word pd239;
         pd239 = (* (( (ptr) (* (( (ptr) gf←c95716)+161)/* var←c84516 */  ))+32) );
         (void) ( *( (fPt) ((*  (ptr) pd239 ))))((word) &var←c86692, (* (( (ptr) formal←c95748)+4) ), 0, pd239);
         };
      {
         word pd240;
         pd240 = (* (( (ptr) formal←c95748)+7) );
         (void) ( *( (fPt) ((*  (ptr) pd240 ))))(var←c86692, pd240);
         };
      };
SOURCE(17703, 143)
   {
      register word index←v19344 = 0;
      register word noName←c86724;
      noName←c86724 = hiSegment←v19300;
      if (( (int)index←v19344 >  (int)noName←c86724)) {
         goto lab←L100024;
         };
      lab←L100027: ;
      {
         word seg←v19388;
SOURCE(17739, 48)
         {
            word pd241;
            pd241 = (* (( (ptr) (* (( (ptr) gf←c95716)+161)/* var←c84516 */  ))+29) );
            seg←v19388 = (word) ( *( (fPt) ((*  (ptr) pd241 ))))((* (( (ptr) formal←c95748)+4) ), SGNCK(index←v19344), pd241);
            };
SOURCE(17789, 57)
         {
            word pd242;
            pd242 = (* (( (ptr) (*  (ptr) seg←v19388 ))+6) );
            (void) ( *( (fPt) ((*  (ptr) pd242 ))))(seg←v19388, (* (( (ptr) formal←c95748)+8) ), (* (( (ptr) formal←c95748)+9) ), (* (
                  ( (ptr) formal←c95748)+10) ), (* (( (ptr) formal←c95748)+11) ), pd242);
            };
         };
      if (( (int)index←v19344 >=  (int)noName←c86724)) {
         goto lab←L100024;
         };
      index←v19344 = (index←v19344 + 1);
      goto lab←L100027;
      lab←L100024: ;
      };
   }

static void TrajDrawBorder←P840(formal←c01319, formal←c01320, formal←c01321, formal←c01322, formal←c01323, formal←c01324, quick←v9352, formal←c01325)
   word formal←c01319;
   word formal←c01320;
   word formal←c01321;
   word formal←c01322;
   word formal←c01323;
   word formal←c01324;
   word quick←v9352;
   word formal←c01325;
   {
   W13 var←c95780;
   /* declaration of slice←v9184 skipped */ 
   /* declaration of drawParts←v9212 skipped */ 
   /* declaration of transformParts←v9240 skipped */ 
   /* declaration of transform←v9268 skipped */ 
   /* declaration of dc←v9296 skipped */ 
   /* declaration of camera←v9324 skipped */ 
   /* declaration of editConstraints←v9380 skipped */ 
   register ptr gf←c95812 =  (ptr) &globalframe;
   /* declaration of var←c86756 skipped */ 
   (* (( (ptr) &var←c95780)+4)/* slice←v9184 */  ) = formal←c01319;
   (* (( (ptr) &var←c95780)+5)/* drawParts←v9212 */  ) = formal←c01320;
   (* (( (ptr) &var←c95780)+6)/* transformParts←v9240 */  ) = formal←c01321;
   (* (( (ptr) &var←c95780)+7)/* transform←v9268 */  ) = formal←c01322;
   (* (( (ptr) &var←c95780)+8)/* dc←v9296 */  ) = formal←c01323;
   (* (( (ptr) &var←c95780)+9)/* camera←v9324 */  ) = formal←c01324;
   (* (( (ptr) &var←c95780)+10)/* editConstraints←v9380 */  ) = formal←c01325;
   /* TrajDrawBorder: */ 
SOURCE(17976, 1015)
   {
      word tmpAddr243;
      tmpAddr243 = (word) (( (ptr) &var←c95780)+11)/* var←c86756 */ ;
      (*  (ptr) tmpAddr243 ) = ( ((word)  (fPt) DoTrajDrawBorder←P4872) );
      (* (( (ptr) tmpAddr243) + 1) ) = 1;
      };
SOURCE(18956, 35)
   {
      word pd244;
      pd244 = (* (( (ptr) (* (( (ptr) gf←c95812)+167)/* var←c86788 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd244 ))))((* (( (ptr) &var←c95780)+8)/* dc←v9296 */  ), (word) (( (bPt) &var←c95780)+44)/* var←c86756 */ , pd244)
      ;
      };
   }

static void DoTrajDrawBorder←P4872(formal←c95876)
   word formal←c95876;
   {
   register ptr gf←c95844 =  (ptr) &globalframe;
   word trajDrawParts←v19492;
   word trajTransformParts←v19520;
   word drawEntireTraj←v19548;
   word transformNone←v19576;
   word transformEntireTraj←v19604;
   formal←c95876 = (formal←c95876 - 44);
   /* DoTrajDrawBorder: */ 
SOURCE(18184, 767)
SOURCE(18211, 44)
   trajDrawParts←v19492 = XR←Narrow((* (( (ptr) formal←c95876)+5) ), (* (( (ptr) gf←c95844)+15) ));
SOURCE(18257, 54)
   trajTransformParts←v19520 = XR←Narrow((* (( (ptr) formal←c95876)+6) ), (* (( (ptr) gf←c95844)+15) ));
SOURCE(18384, 74)
   {
      word pd245;
      if ((trajDrawParts←v19492 == 0)) {
         drawEntireTraj←v19548 =  (unsigned) 1;
         }
      else {
         pd245 = (* (( (ptr) (* (( (ptr) gf←c95844)+159)/* var←c84100 */  ))+26) );
         drawEntireTraj←v19548 =  (unsigned) (0 != (word) ( *( (fPt) ((*  (ptr) pd245 ))))(trajDrawParts←v19492, pd245));
         };
      };
SOURCE(18460, 29)
   transformNone←v19576 =  (unsigned) ((* (( (ptr) formal←c95876)+7) ) == 0);
SOURCE(18491, 113)
   {
      word pd246;
      if ((0 == transformNone←v19576)) {
         if ((trajTransformParts←v19520 == 0)) {
            transformEntireTraj←v19604 =  (unsigned) 1;
            }
         else {
            pd246 = (* (( (ptr) (* (( (ptr) gf←c95844)+159)/* var←c84100 */  ))+26) );
            transformEntireTraj←v19604 =  (unsigned) (0 != (word) ( *( (fPt) ((*  (ptr) pd246 ))))(trajTransformParts←v19520, pd246));
            };
         }
      else {
         transformEntireTraj←v19604 =  (unsigned) 0;
         };
      };
SOURCE(18607, 344)
   {
      word tc247;
      word pd248;
      if ((0 != drawEntireTraj←v19548)) {
         if ((0 != transformNone←v19576)) {
            tc247 =  (word) 1;
            }
         else {
            if ((0 != transformEntireTraj←v19604)) {
               pd248 = (* (( (ptr) (* (( (ptr) gf←c95844)+156)/* var←c83940 */  ))+55) );
               tc247 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd248 ))))((* (( (ptr) formal←c95876)+7) ), (* (( (ptr) gf←c95844)+5)/* identity←v5912 */  ), (*  (ptr) &fc249 ), pd248)
               );
               }
            else {
               tc247 =  (word) 0;
               };
            };
         }
      else {
         tc247 =  (word) 0;
         };
      if (tc247) {
SOURCE(18740, 64)
         (void) CachedDrawBorder←P1380((* (( (ptr) formal←c95876)+8) ), (* (( (ptr) formal←c95876)+4) ), (* (( (ptr) formal←c95876)+7)
             ), trajTransformParts←v19520);
         }
      else {
SOURCE(18804, 147)
         (void) DrawBorderAux←P1500((* (( (ptr) formal←c95876)+4) ), trajDrawParts←v19492, trajTransformParts←v19520, (* (( (ptr) formal←c95876)+7)
             ), (* (( (ptr) formal←c95876)+8) ), (* (( (ptr) formal←c95876)+9) )
            , (* (( (ptr) formal←c95876)+10) ), drawEntireTraj←v19548, transformNone←v19576, transformEntireTraj←v19604);
         };
      };
   }

static void TrajDrawParts←P900(slice←v9440, parts←v9468, dc←v9496, camera←v9524, quick←v9552)
   word slice←v9440;
   word parts←v9468;
   word dc←v9496;
   word camera←v9524;
   word quick←v9552;
   {
   register ptr gf←c95908 =  (ptr) &globalframe;
   word cpCount←v19648;
   word seg←v19676 = 0;
   word trajData←v19704;
   word trajParts←v19732;
   /* TrajDrawParts: */ 
SOURCE(19058, 925)
SOURCE(19199, 39)
   trajData←v19704 = XR←Narrow((* (( (ptr) slice←v9440)+1) ), (* (( (ptr) gf←c95908)+10) ));
SOURCE(19240, 36)
   trajParts←v19732 = XR←Narrow(parts←v9468, (* (( (ptr) gf←c95908)+15) ));
SOURCE(19278, 705)
   if ((trajParts←v19732 == 0)) {
SOURCE(19300, 25)
      (void) DrawTraj←P1740(dc←v9496, slice←v9440);
      }
   else {
SOURCE(19325, 658)
      if ((0 != (word) AllStrokePropsAndColorsEqual←P2340(slice←v9440))) {
SOURCE(19369, 47)
         (void) DrawSingleStrokeTrajSeq←P1800(dc←v9496, slice←v9440, parts←v9468);
         }
      else {
SOURCE(19416, 590)
         {
            word hiSegment←v19776;
SOURCE(19418, 40)
            {
               word pd250;
               pd250 = (* (( (ptr) (* (( (ptr) gf←c95908)+161)/* var←c84516 */  ))+37) );
               hiSegment←v19776 = (word) ( *( (fPt) ((*  (ptr) pd250 ))))(slice←v9440, pd250);
               };
SOURCE(19460, 47)
            {
               word pd251;
               pd251 = (* (( (ptr) (* (( (ptr) gf←c95908)+167)/* var←c86788 */  ))+70) );
               (void) ( *( (fPt) ((*  (ptr) pd251 ))))(dc←v9496, (* (( (ptr) trajData←v19704)+6) ), pd251);
               };
SOURCE(19509, 474)
            {
               register word i←v19820 = 0;
               register word noName←c86820;
               word var←c86852;
               noName←c86820 = hiSegment←v19776;
               if (( (int)i←v19820 >  (int)noName←c86820)) {
                  goto lab←L100028;
                  };
               lab←L100031: ;
SOURCE(19541, 442)
               {
                  word limit252;
                  var←c86852 = (*  (ptr) trajParts←v19732 );
                  if (XR←ExtractField(var←c86852, 32 + (word) (
                        limit252 = (*  (ptr) var←c86852 ),
                        BCK(i←v19820, limit252)
                        ), 1)) {
SOURCE(19573, 35)
                     {
                        word pd253;
                        pd253 = (* (( (ptr) (* (( (ptr) gf←c95908)+161)/* var←c84516 */  ))+29) );
                        seg←v19676 = (word) ( *( (fPt) ((*  (ptr) pd253 ))))(slice←v9440, SGNCK(i←v19820), pd253);
                        };
SOURCE(19610, 45)
                     {
                        word x254;
                        word x255;
                        if (((
                           x254 = (* (( (ptr) seg←v19676)+2) ),  *(float*)&x254
                           ) == (
                           x255 = (*  (ptr) &fc123 ),  *(float*)&x255
                           )) || ((* (( (ptr) seg←v19676)+8) ) == 0)) {
SOURCE(19655, 4)
                           goto lab←L100030;
                           };
                        };
SOURCE(19661, 42)
                     {
                        word pd256;
                        pd256 = (* (( (ptr) (* (( (ptr) gf←c95908)+167)/* var←c86788 */  ))+68) );
                        (void) ( *( (fPt) ((*  (ptr) pd256 ))))(dc←v9496, (* (( (ptr) seg←v19676)+2) ), pd256);
                        };
SOURCE(19705, 38)
                     {
                        word pd257;
                        pd257 = (* (( (ptr) (* (( (ptr) gf←c95908)+167)/* var←c86788 */  ))+69) );
                        (void) ( *( (fPt) ((*  (ptr) pd257 ))))(dc←v9496, (* (( (ptr) seg←v19676)+3) ), pd257);
                        };
SOURCE(19745, 30)
                     {
                        word pd258;
                        pd258 = (* (( (ptr) (* (( (ptr) gf←c95908)+167)/* var←c86788 */  ))+52) );
                        (void) ( *( (fPt) ((*  (ptr) pd258 ))))(dc←v9496, (* (( (ptr) seg←v19676)+8) ), pd258);
                        };
SOURCE(19777, 22)
                     (void) SegMaskStroke←P2160(dc←v9496, seg←v19676);
SOURCE(19801, 42)
                     {
                        word pd259;
                        pd259 = (* (( (ptr) (*  (ptr) seg←v19676 ))+17) );
                        cpCount←v19648 = (word) ( *( (fPt) ((*  (ptr) pd259 ))))(seg←v19676, pd259);
                        };
SOURCE(19845, 138)
                     {
                        register word j←v19864 = 0;
                        register word noName←c86884;
                        word var←c86948;
                        noName←c86884 = cpCount←v19648;
                        if ((j←v19864 >= noName←c86884)) {
                           goto lab←L100032;
                           };
                        lab←L100035: ;
SOURCE(19875, 108)
                        {
                           word limit261;
                           {
/*1*/   word var←c86916;
/*1*/   var←c86916 = (* (( (ptr) trajParts←v19732)+2) );
/*1*/   {
/*1*/      word limit260;
/*1*/      var←c86948 = (* ((( (ptr) var←c86916)+1)+(
/*1*/            limit260 = (*  (ptr) var←c86916 ),
/*1*/            BCK(i←v19820, limit260)
/*1*/            )) );
/*1*/      };
/*1*/   };
                           if (XR←ExtractField(var←c86948, 32 + (word) (
/*1*/      limit261 = (*  (ptr) var←c86948 ),
/*1*/      BCK(j←v19864, limit261)
/*1*/      ), 1)) {
SOURCE(19913, 70)
/*1*/   {
/*1*/      W2 var←c86980;
/*1*/      {
/*1*/         word pd262;
/*1*/         pd262 = (* (( (ptr) (*  (ptr) seg←v19676 ))+16) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd262 ))))((word) &var←c86980, seg←v19676, j←v19864, pd262);
/*1*/         };
/*1*/      {
/*1*/         word pd263;
/*1*/         pd263 = (* (( (ptr) (* (( (ptr) gf←c95908)+168)/* var←c87012 */  ))+19) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd263 ))))(dc←v9496, var←c86980, (* (( (ptr) camera←v9524)+4) ), pd263);
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        j←v19864 = (j←v19864 + 1);
                        if ((j←v19864 < noName←c86884)) {
                           goto lab←L100035;
                           };
                        lab←L100032: ;
                        };
                     };
                  };
               lab←L100030: ;
               if (( (int)i←v19820 >=  (int)noName←c86820)) {
                  goto lab←L100028;
                  };
               i←v19820 = (i←v19820 + 1);
               goto lab←L100031;
               lab←L100028: ;
               };
            };
         };
      };
   }

static void TrajDrawTransform←P960(slice←v9612, parts←v9640, dc←v9668, camera←v9696, transform←v9724, editConstraints←v9752)
   word slice←v9612;
   word parts←v9640;
   word dc←v9668;
   word camera←v9696;
   word transform←v9724;
   word editConstraints←v9752;
   {
   /* TrajDrawTransform: */ 
SOURCE(20013, 266)
SOURCE(20199, 80)
   (void) TrajDrawBorder←P840(slice←v9612, 0, parts←v9640, transform←v9724, dc←v9668, camera←v9696
      , 0, editConstraints←v9752);
   }

static void TrajDrawSelectionFeedback←P1020(formal←c01326, formal←c01327, formal←c01328, formal←c01329, formal←c01330, dragInProgress←v9952, caretIsMoving←v9980, hideHot←v10008, quick←v10036)
   word formal←c01326;
   word formal←c01327;
   word formal←c01328;
   word formal←c01329;
   word formal←c01330;
   word dragInProgress←v9952;
   word caretIsMoving←v9980;
   word hideHot←v10008;
   word quick←v10036;
   {
   W11 var←c95940;
   /* declaration of slice←v9812 skipped */ 
   /* declaration of selectedParts←v9840 skipped */ 
   /* declaration of hotParts←v9868 skipped */ 
   /* declaration of dc←v9896 skipped */ 
   /* declaration of camera←v9924 skipped */ 
   register ptr gf←c95972 =  (ptr) &globalframe;
   /* declaration of var←c87044 skipped */ 
   word trajData←v19936;
   (* (( (ptr) &var←c95940)+4)/* slice←v9812 */  ) = formal←c01326;
   (* (( (ptr) &var←c95940)+5)/* selectedParts←v9840 */  ) = formal←c01327;
   (* (( (ptr) &var←c95940)+6)/* hotParts←v9868 */  ) = formal←c01328;
   (* (( (ptr) &var←c95940)+7)/* dc←v9896 */  ) = formal←c01329;
   (* (( (ptr) &var←c95940)+8)/* camera←v9924 */  ) = formal←c01330;
   /* TrajDrawSelectionFeedback: */ 
SOURCE(20285, 2173)
   {
      word tmpAddr264;
      tmpAddr264 = (word) (( (ptr) &var←c95940)+9)/* var←c87044 */ ;
      (*  (ptr) tmpAddr264 ) = ( ((word)  (fPt) DoDrawFeedback←P5076) );
      (* (( (ptr) tmpAddr264) + 1) ) = 1;
      };
SOURCE(22252, 39)
   trajData←v19936 = XR←Narrow((* (( (ptr) (* (( (ptr) &var←c95940)+4)/* slice←v9812 */  ))+1) ), (* (( (ptr) gf←c95972)+10)
       ));
SOURCE(22293, 46)
   if (((0 != caretIsMoving←v9980) || (0 != dragInProgress←v9952))) {
SOURCE(22333, 6)
      return;
      };
SOURCE(22341, 49)
   if ( ( ((* (( (ptr) &var←c95940)+5)/* selectedParts←v9840 */  ) == 0) ? ((* (( (ptr) &var←c95940)+6)/* hotParts←v9868 */  ) == 0) : 0 ) ) {
SOURCE(22384, 6)
      return;
      };
SOURCE(22392, 66)
   if (((*  (ptr) (* (( (ptr) &var←c95940)+8)/* camera←v9924 */  ) ) != 2)) {
SOURCE(22425, 33)
      {
         word pd265;
         pd265 = (* (( (ptr) (* (( (ptr) gf←c95972)+167)/* var←c86788 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd265 ))))((* (( (ptr) &var←c95940)+7)/* dc←v9896 */  ), (word) (( (bPt) &var←c95940)+36)/* var←c87044 */ , pd265)
         ;
         };
      };
   }

static void DoDrawFeedback←P5076(formal←c96036)
   word formal←c96036;
   {
   register ptr gf←c96004 =  (ptr) &globalframe;
   word segGen←v19996 = 0;
   word jointGen←v20024 = 0;
   word seg←v20052 = 0;
   word someNormal←v20080;
   word someHot←v20108;
   word thisCPisHot←v20136;
   word thisCPisSelected←v20164;
   W2 point←v20192;
   word sliceTrajData←v20220;
   word selectedTrajParts←v20248;
   word hotTrajParts←v20276;
   formal←c96036 = (formal←c96036 - 36);
   /* DoDrawFeedback: */ 
SOURCE(20474, 1752)
SOURCE(20663, 44)
   sliceTrajData←v20220 = XR←Narrow((* (( (ptr) (* (( (ptr) formal←c96036)+4) ))+1) ), (* (( (ptr) gf←c96004)+10) ));
SOURCE(20709, 52)
   selectedTrajParts←v20248 = XR←Narrow((* (( (ptr) formal←c96036)+5) ), (* (( (ptr) gf←c96004)+15) ));
SOURCE(20763, 42)
   hotTrajParts←v20276 = XR←Narrow((* (( (ptr) formal←c96036)+6) ), (* (( (ptr) gf←c96004)+15) ));
SOURCE(20807, 49)
   {
      word pd266;
      pd266 = (* (( (ptr) (* (( (ptr) gf←c96004)+159)/* var←c84100 */  ))+56) );
      jointGen←v20024 = (word) ( *( (fPt) ((*  (ptr) pd266 ))))(sliceTrajData←v20220, pd266);
      };
SOURCE(20858, 527)
   {
      register word i←v20320;
      {
         word pd267;
         pd267 = (* (( (ptr) (* (( (ptr) gf←c96004)+159)/* var←c84100 */  ))+61) );
         i←v20320 = (word) ( *( (fPt) ((*  (ptr) pd267 ))))(jointGen←v20024, pd267);
         };
      lab←L100039: ;
      if (( (int)i←v20320 !=  (int) (word) -1)) {
         }
      else {
         goto lab←L100036;
         };
SOURCE(20950, 57)
      if ((hotTrajParts←v20276 != 0)) {
         {
            word var←c87076;
            var←c87076 = (* (( (ptr) hotTrajParts←v20276)+1) );
            {
               word limit268;
               thisCPisHot←v20136 =  (unsigned) XR←ExtractField(var←c87076, 32 + (word) (
                     limit268 = (*  (ptr) var←c87076 ),
                     BCK(i←v20320, limit268)
                     ), 1);
               };
            };
         }
      else {
         thisCPisHot←v20136 =  (unsigned) 0;
         };
SOURCE(21009, 72)
      if ((selectedTrajParts←v20248 != 0)) {
         {
            word var←c87108;
            var←c87108 = (* (( (ptr) selectedTrajParts←v20248)+1) );
            {
               word limit269;
               thisCPisSelected←v20164 =  (unsigned) XR←ExtractField(var←c87108, 32 + (word) (
                     limit269 = (*  (ptr) var←c87108 ),
                     BCK(i←v20320, limit269)
                     ), 1);
               };
            };
         }
      else {
         thisCPisSelected←v20164 =  (unsigned) 0;
         };
SOURCE(21083, 38)
      {
         word pd270;
         pd270 = (* (( (ptr) (* (( (ptr) gf←c96004)+161)/* var←c84516 */  ))+32) );
         (void) ( *( (fPt) ((*  (ptr) pd270 ))))((word) &point←v20192, (* (( (ptr) formal←c96036)+4) ), SGNCK(i←v20320), pd270);
         };
SOURCE(21123, 78)
      if ((0 != thisCPisHot←v20136)) {
SOURCE(21143, 58)
         {
            word pd271;
            pd271 = (* (( (ptr) (* (( (ptr) gf←c96004)+168)/* var←c87012 */  ))+20) );
            (void) ( *( (fPt) ((*  (ptr) pd271 ))))((* (( (ptr) formal←c96036)+7) ), point←v20192, 1, (* (( (ptr) (* (( (ptr) formal←c96036)+8)
                   ))+4) ), pd271);
            };
         };
SOURCE(21203, 86)
      if ((0 != thisCPisSelected←v20164)) {
SOURCE(21228, 61)
         {
            word pd272;
            pd272 = (* (( (ptr) (* (( (ptr) gf←c96004)+168)/* var←c87012 */  ))+20) );
            (void) ( *( (fPt) ((*  (ptr) pd272 ))))((* (( (ptr) formal←c96036)+7) ), point←v20192, 0, (* (( (ptr) (* (( (ptr) formal←c96036)+8)
                   ))+4) ), pd272);
            };
         };
SOURCE(21291, 94)
      if ( ( (0 == thisCPisHot←v20136) ? (0 == thisCPisSelected←v20164) : 0 ) ) {
SOURCE(21340, 45)
         {
            word pd273;
            pd273 = (* (( (ptr) (* (( (ptr) gf←c96004)+168)/* var←c87012 */  ))+18) );
            (void) ( *( (fPt) ((*  (ptr) pd273 ))))((* (( (ptr) formal←c96036)+7) ), point←v20192, (* (( (ptr) (* (( (ptr) formal←c96036)+8)
                   ))+4) ), pd273);
            };
         };
      {
         word pd274;
         pd274 = (* (( (ptr) (* (( (ptr) gf←c96004)+159)/* var←c84100 */  ))+61) );
         i←v20320 = (word) ( *( (fPt) ((*  (ptr) pd274 ))))(jointGen←v20024, pd274);
         };
      goto lab←L100039;
      lab←L100036: ;
      };
SOURCE(21396, 34)
   someNormal←v20080 =  (unsigned) (selectedTrajParts←v20248 != 0);
SOURCE(21432, 26)
   someHot←v20108 =  (unsigned) (hotTrajParts←v20276 != 0);
SOURCE(21460, 49)
   {
      word pd275;
      pd275 = (* (( (ptr) (* (( (ptr) gf←c96004)+159)/* var←c84100 */  ))+40) );
      segGen←v19996 = (word) ( *( (fPt) ((*  (ptr) pd275 ))))(sliceTrajData←v20220, pd275);
      };
SOURCE(21511, 715)
   {
      W2 next←v20364;
      {
         word pd276;
         pd276 = (* (( (ptr) (* (( (ptr) gf←c96004)+159)/* var←c84100 */  ))+47) );
         (void) ( *( (fPt) ((*  (ptr) pd276 ))))((word) &next←v20364, segGen←v19996, pd276);
         };
      lab←L100043: ;
      if ((next←v20364.f0 != 0)) {
         }
      else {
         goto lab←L100040;
         };
      {
         word i←v20408;
SOURCE(21647, 19)
         i←v20408 = next←v20364.f1;
SOURCE(21668, 14)
         seg←v20052 = next←v20364.f0;
SOURCE(21684, 542)
         if (((0 != someNormal←v20080) || (0 != someHot←v20108))) {
SOURCE(21716, 510)
            {
               register word j←v20452 = 0;
               register word noName←c87140;
               {
                  word pd277;
                  pd277 = (* (( (ptr) (*  (ptr) seg←v20052 ))+17) );
                  noName←c87140 = (word) ( *( (fPt) ((*  (ptr) pd277 ))))(seg←v20052, pd277);
                  };
               if (( (int)j←v20452 >=  (int)noName←c87140)) {
                  goto lab←L100044;
                  };
               lab←L100047: ;
SOURCE(21771, 67)
               if ((hotTrajParts←v20276 != 0)) {
                  {
                     word var←c87204;
                     word var←c87172;
                     {
                        word limit278;
                        var←c87172 = (* (( (ptr) hotTrajParts←v20276)+2) );
                        var←c87204 = (* ((( (ptr) var←c87172)+1)+(
/*1*/   limit278 = (*  (ptr) var←c87172 ),
/*1*/   BCK(i←v20408, limit278)
/*1*/   )) );
                        };
                     {
                        word limit279;
                        thisCPisHot←v20136 =  (unsigned) XR←ExtractField(var←c87204, 32 + (word) (
/*1*/   limit279 = (*  (ptr) var←c87204 ),
/*1*/   BCK(j←v20452, limit279)
/*1*/   ), 1);
                        };
                     };
                  }
               else {
                  thisCPisHot←v20136 =  (unsigned) 0;
                  };
SOURCE(21840, 82)
               if ((selectedTrajParts←v20248 != 0)) {
                  {
                     word var←c87268;
                     word var←c87236;
                     {
                        word limit280;
                        var←c87236 = (* (( (ptr) selectedTrajParts←v20248)+2) );
                        var←c87268 = (* ((( (ptr) var←c87236)+1)+(
/*1*/   limit280 = (*  (ptr) var←c87236 ),
/*1*/   BCK(i←v20408, limit280)
/*1*/   )) );
                        };
                     {
                        word limit281;
                        thisCPisSelected←v20164 =  (unsigned) XR←ExtractField(var←c87268, 32 + (word) (
/*1*/   limit281 = (*  (ptr) var←c87268 ),
/*1*/   BCK(j←v20452, limit281)
/*1*/   ), 1);
                        };
                     };
                  }
               else {
                  thisCPisSelected←v20164 =  (unsigned) 0;
                  };
SOURCE(21924, 41)
               {
                  word pd282;
                  pd282 = (* (( (ptr) (*  (ptr) seg←v20052 ))+16) );
                  (void) ( *( (fPt) ((*  (ptr) pd282 ))))((word) &point←v20192, seg←v20052, SGNCK(j←v20452), pd282);
                  };
SOURCE(21967, 78)
               if ((0 != thisCPisHot←v20136)) {
SOURCE(21987, 58)
                  {
                     word pd283;
                     pd283 = (* (( (ptr) (* (( (ptr) gf←c96004)+168)/* var←c87012 */  ))+20) );
                     (void) ( *( (fPt) ((*  (ptr) pd283 ))))((* (( (ptr) formal←c96036)+7) ), point←v20192, 1, (* (( (ptr) (* (( (ptr) formal←c96036)+8)
                            ))+4) ), pd283);
                     };
                  };
SOURCE(22047, 86)
               if ((0 != thisCPisSelected←v20164)) {
SOURCE(22072, 61)
                  {
                     word pd284;
                     pd284 = (* (( (ptr) (* (( (ptr) gf←c96004)+168)/* var←c87012 */  ))+20) );
                     (void) ( *( (fPt) ((*  (ptr) pd284 ))))((* (( (ptr) formal←c96036)+7) ), point←v20192, 0, (* (( (ptr) (* (( (ptr) formal←c96036)+8)
                            ))+4) ), pd284);
                     };
                  };
SOURCE(22135, 91)
               if ( ( (0 == thisCPisHot←v20136) ? (0 == thisCPisSelected←v20164) : 0 ) ) {
SOURCE(22184, 42)
                  {
                     word pd285;
                     pd285 = (* (( (ptr) (* (( (ptr) gf←c96004)+168)/* var←c87012 */  ))+19) );
                     (void) ( *( (fPt) ((*  (ptr) pd285 ))))((* (( (ptr) formal←c96036)+7) ), point←v20192, (* (( (ptr) (* (( (ptr) formal←c96036)+8)
                            ))+4) ), pd285);
                     };
                  };
               j←v20452 = (j←v20452 + 1);
               if (( (int)j←v20452 <  (int)noName←c87140)) {
                  goto lab←L100047;
                  };
               lab←L100044: ;
               };
            };
         };
      {
         word pd286;
         pd286 = (* (( (ptr) (* (( (ptr) gf←c96004)+159)/* var←c84100 */  ))+47) );
         (void) ( *( (fPt) ((*  (ptr) pd286 ))))((word) &next←v20364, segGen←v19996, pd286);
         };
      goto lab←L100043;
      lab←L100040: ;
      };
   }

static void TrajDrawAttractorFeedback←P1080(slice←v10096, attractorParts←v10124, selectedParts←v10152, dragInProgress←v10180, dc←v10208, camera←v10236, editConstraints←v10264)
   word slice←v10096;
   word attractorParts←v10124;
   word selectedParts←v10152;
   word dragInProgress←v10180;
   word dc←v10208;
   word camera←v10236;
   word editConstraints←v10264;
   {
   register ptr gf←c96068 =  (ptr) &globalframe;
   word success←v20496 = 0;
   word partType←v20524;
   word traj←v20552;
   word seg←v20580 = 0;
   word jointNum←v20608;
   word segNum←v20636;
   /* TrajDrawAttractorFeedback: */ 
SOURCE(22464, 1489)
SOURCE(22709, 18)
   traj←v20552 = slice←v10096;
SOURCE(22767, 122)
   {
      W10 var←c87300;
      {
         word pd287;
         pd287 = (* (( (ptr) (* (( (ptr) gf←c96068)+161)/* var←c84516 */  ))+52) );
         (void) ( *( (fPt) ((*  (ptr) pd287 ))))((word) &var←c87300, slice←v10096, attractorParts←v10124, pd287);
         };
      segNum←v20636 = (* (( (ptr) &var←c87300)+9) );
      seg←v20580 = (* (( (ptr) &var←c87300)+8) );
      jointNum←v20608 = (* (( (ptr) &var←c87300)+4) );
      partType←v20524 = (* (( (ptr) &var←c87300)+1) );
      success←v20496 = (*  (ptr) &var←c87300 );
      };
SOURCE(22891, 20)
   if ((0 == success←v20496)) {
SOURCE(22911, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(22935, 1018)
   {
      word var←c87332;
      var←c87332 = partType←v20524;
      switch (var←c87332) {
         case 1: 
SOURCE(22965, 926)
            {
               word prev←v20680;
               word previous←v20708;
               word this←v20736;
SOURCE(23028, 54)
               {
                  word pd288;
                  pd288 = (* (( (ptr) (* (( (ptr) gf←c96068)+161)/* var←c84516 */  ))+42) );
                  prev←v20680 = (word) ( *( (fPt) ((*  (ptr) pd288 ))))(slice←v10096, jointNum←v20608, pd288);
                  };
SOURCE(23084, 59)
               {
                  word pd289;
                  pd289 = (* (( (ptr) (* (( (ptr) gf←c96068)+161)/* var←c84516 */  ))+41) );
                  previous←v20708 = (word) ( *( (fPt) ((*  (ptr) pd289 ))))(slice←v10096, jointNum←v20608, pd289);
                  };
SOURCE(23145, 105)
               {
                  word tc290;
                  word pd291;
                  word pd292;
                  pd291 = (* (( (ptr) (* (( (ptr) gf←c96068)+161)/* var←c84516 */  ))+37) );
                  if ((jointNum←v20608 <= (word) ( *( (fPt) ((*  (ptr) pd291 ))))(slice←v10096, pd291))) {
                     pd292 = (* (( (ptr) (* (( (ptr) gf←c96068)+161)/* var←c84516 */  ))+29) );
                     tc290 =  (word) ( *( (fPt) ((*  (ptr) pd292 ))))(slice←v10096, jointNum←v20608, pd292);
                     }
                  else {
                     tc290 =  (word) 0;
                     };
                  this←v20736 = tc290;
                  };
SOURCE(23252, 634)
               if ((selectedParts←v10152 == 0)) {
SOURCE(23280, 59)
                  if ((previous←v20708 != 0)) {
SOURCE(23301, 38)
                     (void) DrawCpsAndJoints←P1860(dc←v10208, previous←v20708, camera←v10236, 0, 999, 0);
                     };
SOURCE(23341, 51)
                  if ((this←v20736 != 0)) {
SOURCE(23358, 34)
                     (void) DrawCpsAndJoints←P1860(dc←v10208, this←v20736, camera←v10236, 0, 999, 0);
                     };
                  }
               else {
                  {
                     word var←c87364;
                     word var←c87428;
                     word var←c87460;
SOURCE(23403, 222)
                     {
                        word tc293;
                        word pd294;
                        if ((this←v20736 != 0)) {
                           if ((0 == dragInProgress←v10180)) {
/*1*/   tc293 =  (word) 1;
/*1*/   }
                           else {
/*1*/   var←c87364 = XR←Narrow(selectedParts←v10152, (* (( (ptr) gf←c96068)+15) ));
/*1*/   pd294 = (* (( (ptr) (* (( (ptr) gf←c96068)+159)/* var←c84100 */  ))+32) );
/*1*/   tc293 =  (word) (0 == (word) ( *( (fPt) ((*  (ptr) pd294 ))))(var←c87364, jointNum←v20608, pd294));
/*1*/   };
                           }
                        else {
                           tc293 =  (word) 0;
                           };
                        if (tc293) {
SOURCE(23514, 111)
                           {
/*1*/   word var←c87396;
/*1*/   {
/*1*/      word pd295;
/*1*/      pd295 = (* (( (ptr) (* (( (ptr) gf←c96068)+157)/* var←c84004 */  ))+8) );
/*1*/      var←c87396 = (word) ( *( (fPt) ((*  (ptr) pd295 ))))(traj←v20552, selectedParts←v10152, pd295);
/*1*/      };
/*1*/   (void) DrawCpsAndJoints←P1860(dc←v10208, this←v20736, camera←v10236, var←c87396, jointNum←v20608, editConstraints←v10264)
/*1*/   ;
/*1*/   };
                           };
                        };
SOURCE(23627, 259)
                     {
                        word tc296;
                        word pd299;
                        if ((previous←v20708 != 0)) {
                           if ((0 == dragInProgress←v10180)) {
/*1*/   tc296 =  (word) 1;
/*1*/   }
                           else {
/*1*/   var←c87428 = XR←Narrow(selectedParts←v10152, (* (( (ptr) gf←c96068)+15) ));
/*1*/   {
/*1*/      word pd297;
/*1*/      word idx298;
/*1*/      pd297 = (* (( (ptr) (* (( (ptr) gf←c96068)+161)/* var←c84516 */  ))+42) );
/*1*/      var←c87460 = (
/*1*/         idx298 = (word) ( *( (fPt) ((*  (ptr) pd297 ))))(traj←v20552, jointNum←v20608, pd297),
/*1*/         SGNCK(idx298)
/*1*/         );
/*1*/      };
/*1*/   pd299 = (* (( (ptr) (* (( (ptr) gf←c96068)+159)/* var←c84100 */  ))+32) );
/*1*/   tc296 =  (word) (0 == (word) ( *( (fPt) ((*  (ptr) pd299 ))))(var←c87428, var←c87460, pd299));
/*1*/   };
                           }
                        else {
                           tc296 =  (word) 0;
                           };
                        if (tc296) {
SOURCE(23775, 111)
                           {
/*1*/   word var←c87492;
/*1*/   {
/*1*/      word pd300;
/*1*/      pd300 = (* (( (ptr) (* (( (ptr) gf←c96068)+157)/* var←c84004 */  ))+8) );
/*1*/      var←c87492 = (word) ( *( (fPt) ((*  (ptr) pd300 ))))(traj←v20552, selectedParts←v10152, pd300);
/*1*/      };
/*1*/   (void) DrawCpsAndJoints←P1860(dc←v10208, previous←v20708, camera←v10236, var←c87492, SGNCK(prev←v20680), editConstraints←v10264)
/*1*/   ;
/*1*/   };
                           };
                        };
                     };
                  };
               };
            break;
         case 3: case 2: 
SOURCE(23920, 33)
            (void) DrawCpsAndJoints←P1860(dc←v10208, seg←v20580, camera←v10236, 0, 999, 0);
            break;
         };
      };
   }

static word TrajAttractorFeedbackBoundBox←P1140(slice←v10324, attractorParts←v10352, selectedParts←v10380, dragInProgress←v10408, camera←v10436, editConstraints←v10464)
   word slice←v10324;
   word attractorParts←v10352;
   word selectedParts←v10380;
   word dragInProgress←v10408;
   word camera←v10436;
   word editConstraints←v10464;
   {
   register ptr gf←c96100 =  (ptr) &globalframe;
   word box←v10508;
   word success←v20780 = 0;
   word partType←v20808;
   word traj←v20836;
   word seg←v20864 = 0;
   word jointNum←v20892;
   word segNum←v20920;
   /* TrajAttractorFeedbackBoundBox: */ 
SOURCE(23976, 1656)
SOURCE(23976, 1656)
   box←v10508 = 0;
SOURCE(24229, 18)
   traj←v20836 = slice←v10324;
SOURCE(24287, 31)
   {
      word pd301;
      pd301 = (* (( (ptr) (* (( (ptr) gf←c96100)+158)/* var←c84068 */  ))+6) );
      box←v10508 = (word) ( *( (fPt) ((*  (ptr) pd301 ))))(pd301);
      };
SOURCE(24320, 122)
   {
      W10 var←c87524;
      {
         word pd302;
         pd302 = (* (( (ptr) (* (( (ptr) gf←c96100)+161)/* var←c84516 */  ))+52) );
         (void) ( *( (fPt) ((*  (ptr) pd302 ))))((word) &var←c87524, slice←v10324, attractorParts←v10352, pd302);
         };
      segNum←v20920 = (* (( (ptr) &var←c87524)+9) );
      seg←v20864 = (* (( (ptr) &var←c87524)+8) );
      jointNum←v20892 = (* (( (ptr) &var←c87524)+4) );
      partType←v20808 = (* (( (ptr) &var←c87524)+1) );
      success←v20780 = (*  (ptr) &var←c87524 );
      };
SOURCE(24444, 20)
   if ((0 == success←v20780)) {
SOURCE(24464, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(24488, 1048)
   {
      word var←c87556;
      var←c87556 = partType←v20808;
      switch (var←c87556) {
         case 1: 
SOURCE(24518, 950)
            {
               word prev←v20964;
               word previous←v20992;
               word this←v21020;
SOURCE(24581, 54)
               {
                  word pd303;
                  pd303 = (* (( (ptr) (* (( (ptr) gf←c96100)+161)/* var←c84516 */  ))+42) );
                  prev←v20964 = (word) ( *( (fPt) ((*  (ptr) pd303 ))))(slice←v10324, jointNum←v20892, pd303);
                  };
SOURCE(24637, 59)
               {
                  word pd304;
                  pd304 = (* (( (ptr) (* (( (ptr) gf←c96100)+161)/* var←c84516 */  ))+41) );
                  previous←v20992 = (word) ( *( (fPt) ((*  (ptr) pd304 ))))(slice←v10324, jointNum←v20892, pd304);
                  };
SOURCE(24698, 105)
               {
                  word tc305;
                  word pd306;
                  word pd307;
                  pd306 = (* (( (ptr) (* (( (ptr) gf←c96100)+161)/* var←c84516 */  ))+37) );
                  if ((jointNum←v20892 <= (word) ( *( (fPt) ((*  (ptr) pd306 ))))(slice←v10324, pd306))) {
                     pd307 = (* (( (ptr) (* (( (ptr) gf←c96100)+161)/* var←c84516 */  ))+29) );
                     tc305 =  (word) ( *( (fPt) ((*  (ptr) pd307 ))))(slice←v10324, jointNum←v20892, pd307);
                     }
                  else {
                     tc305 =  (word) 0;
                     };
                  this←v21020 = tc305;
                  };
SOURCE(24805, 658)
               if ((selectedParts←v10380 == 0)) {
SOURCE(24833, 65)
                  if ((previous←v20992 != 0)) {
SOURCE(24854, 44)
                     (void) EnlargeByCpsAndJoints←P1920(box←v10508, previous←v20992, camera←v10436, 0, 999, 0);
                     };
SOURCE(24900, 57)
                  if ((this←v21020 != 0)) {
SOURCE(24917, 40)
                     (void) EnlargeByCpsAndJoints←P1920(box←v10508, this←v21020, camera←v10436, 0, 999, 0);
                     };
                  }
               else {
                  {
                     word var←c87588;
                     word var←c87652;
                     word var←c87684;
SOURCE(24968, 228)
                     {
                        word tc308;
                        word pd309;
                        if ((this←v21020 != 0)) {
                           if ((0 == dragInProgress←v10408)) {
/*1*/   tc308 =  (word) 1;
/*1*/   }
                           else {
/*1*/   var←c87588 = XR←Narrow(selectedParts←v10380, (* (( (ptr) gf←c96100)+15) ));
/*1*/   pd309 = (* (( (ptr) (* (( (ptr) gf←c96100)+159)/* var←c84100 */  ))+32) );
/*1*/   tc308 =  (word) (0 == (word) ( *( (fPt) ((*  (ptr) pd309 ))))(var←c87588, jointNum←v20892, pd309));
/*1*/   };
                           }
                        else {
                           tc308 =  (word) 0;
                           };
                        if (tc308) {
SOURCE(25079, 117)
                           {
/*1*/   word var←c87620;
/*1*/   {
/*1*/      word pd310;
/*1*/      pd310 = (* (( (ptr) (* (( (ptr) gf←c96100)+157)/* var←c84004 */  ))+8) );
/*1*/      var←c87620 = (word) ( *( (fPt) ((*  (ptr) pd310 ))))(traj←v20836, selectedParts←v10380, pd310);
/*1*/      };
/*1*/   (void) EnlargeByCpsAndJoints←P1920(box←v10508, this←v21020, camera←v10436, var←c87620, jointNum←v20892, editConstraints←v10464)
/*1*/   ;
/*1*/   };
                           };
                        };
SOURCE(25198, 265)
                     {
                        word tc311;
                        word pd314;
                        if ((previous←v20992 != 0)) {
                           if ((0 == dragInProgress←v10408)) {
/*1*/   tc311 =  (word) 1;
/*1*/   }
                           else {
/*1*/   var←c87652 = XR←Narrow(selectedParts←v10380, (* (( (ptr) gf←c96100)+15) ));
/*1*/   {
/*1*/      word pd312;
/*1*/      word idx313;
/*1*/      pd312 = (* (( (ptr) (* (( (ptr) gf←c96100)+161)/* var←c84516 */  ))+42) );
/*1*/      var←c87684 = (
/*1*/         idx313 = (word) ( *( (fPt) ((*  (ptr) pd312 ))))(traj←v20836, jointNum←v20892, pd312),
/*1*/         SGNCK(idx313)
/*1*/         );
/*1*/      };
/*1*/   pd314 = (* (( (ptr) (* (( (ptr) gf←c96100)+159)/* var←c84100 */  ))+32) );
/*1*/   tc311 =  (word) (0 == (word) ( *( (fPt) ((*  (ptr) pd314 ))))(var←c87652, var←c87684, pd314));
/*1*/   };
                           }
                        else {
                           tc311 =  (word) 0;
                           };
                        if (tc311) {
SOURCE(25346, 117)
                           {
/*1*/   word var←c87716;
/*1*/   {
/*1*/      word pd315;
/*1*/      pd315 = (* (( (ptr) (* (( (ptr) gf←c96100)+157)/* var←c84004 */  ))+8) );
/*1*/      var←c87716 = (word) ( *( (fPt) ((*  (ptr) pd315 ))))(traj←v20836, selectedParts←v10380, pd315);
/*1*/      };
/*1*/   (void) EnlargeByCpsAndJoints←P1920(box←v10508, previous←v20992, camera←v10436, var←c87716, SGNCK(prev←v20964), editConstraints←v10464)
/*1*/   ;
/*1*/   };
                           };
                        };
                     };
                  };
               };
            break;
         case 3: case 2: 
SOURCE(25497, 39)
            (void) EnlargeByCpsAndJoints←P1920(box←v10508, seg←v20864, camera←v10436, 0, 999, 0);
            break;
         };
      };
SOURCE(25555, 77)
   {
      word pd316;
      word x318;
      word x319;
      word x320;
      float tf321;
      pd316 = (* (( (ptr) (* (( (ptr) gf←c96100)+158)/* var←c84068 */  ))+17) );
      (void) ( *( (fPt) ((*  (ptr) pd316 ))))(box←v10508, (
            tf321 = ((
               x318 = (*  (ptr) &fc317 ),  *(float*)&x318
               ) * (
               x319 = (* (( (ptr) camera←v10436)+4) ),  *(float*)&x319
               )) + (
               x320 = (*  (ptr) &fc57 ),  *(float*)&x320
               ),  *(word*)&tf321
            ), pd316);
      };
SOURCE(23976, 1656)
   return(box←v10508);
   }

static void FindImagerObject←P1200(formal←c0449, formal←c01331, formal←c01332)
   word formal←c0449;
   word formal←c01331;
   word formal←c01332;
   {
   W13 var←c96132;
   /* declaration of slice←v10728 skipped */ 
   /* declaration of trajData←v10756 skipped */ 
   register ptr gf←c96164 =  (ptr) &globalframe;
   word object←v10800;
   /* declaration of displacement←v10828 skipped */ 
   /* declaration of var←c87748 skipped */ 
   /* declaration of var←c87780 skipped */ 
   word value←v21120 = 0;
   word ok←v21148;
   /* declaration of hiSeg←v21176 skipped */ 
   (* (( (ptr) &var←c96132)+4)/* slice←v10728 */  ) = formal←c01331;
   (* (( (ptr) &var←c96132)+5)/* trajData←v10756 */  ) = formal←c01332;
   /* FindImagerObject: */ 
SOURCE(25757, 2041)
   {
      word tmpAddr322;
      tmpAddr322 = (word) (( (ptr) &var←c96132)+8)/* var←c87748 */ ;
      (*  (ptr) tmpAddr322 ) = ( ((word)  (fPt) CompareProps←P5484) );
      (* (( (ptr) tmpAddr322) + 1) ) = 1;
      };
   {
      word tmpAddr323;
      tmpAddr323 = (word) (( (ptr) &var←c96132)+10)/* var←c87780 */ ;
      (*  (ptr) tmpAddr323 ) = ( ((word)  (fPt) EqualPattern←P5424) );
      (* (( (ptr) tmpAddr323) + 1) ) = 1;
      };
SOURCE(25757, 2041)
   object←v10800 = 0;
SOURCE(25757, 2041)
   (* (( (ptr) &var←c96132)+6) ) = (*  (ptr) &fc123 );
   (* (( (ptr) &var←c96132)+7) ) = (*  (ptr) &fc123 );
SOURCE(27610, 36)
   {
      word pd324;
      pd324 = (* (( (ptr) (* (( (ptr) gf←c96164)+161)/* var←c84516 */  ))+37) );
      (* (( (ptr) &var←c96132)+12)/* hiSeg←v21176 */  ) = (word) ( *( (fPt) ((*  (ptr) pd324 ))))((* ((( (ptr) &var←c96132)+4)/* slice←v10728 */ ) ), pd324)
      ;
      };
SOURCE(27648, 92)
   {
      W2 var←c87844;
      {
         word pd325;
         pd325 = (* (( (ptr) (* (( (ptr) gf←c96164)+169)/* var←c87812 */  ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd325 ))))((word) &var←c87844, (* (( (ptr) gf←c96164)+7)/* cache←v7172 */  ), (word) (( (bPt) &var←c96132)+32)
            /* var←c87748 */ , (* (( (ptr) gf←c96164)+26) ), pd325);
         };
      ok←v21148 = var←c87844.f1;
      value←v21120 = var←c87844.f0;
      };
SOURCE(27742, 56)
   if ((0 != ok←v21148)) {
      object←v10800 = XR←Narrow(value←v21120, (* (( (ptr) gf←c96164)+24) ));
      }
   else {
      object←v10800 = 0;
      };
   /* removed bogus assignment */ 
   /* removed tail goto */ 
   (*  (ptr) formal←c0449 ) = object←v10800;
   (*  (W2Pt) (( (ptr) formal←c0449)+1) ) = (*  (W2Pt) (( (ptr) &var←c96132)+6)/* displacement←v10828 */  );
   return;
   }

static word EqualPattern←P5424(p1←v21252, p2←v21280, formal←c96196)
   word p1←v21252;
   word p2←v21280;
   word formal←c96196;
   {
   word var←c21324;
   formal←c96196 = (formal←c96196 - 40);
   /* EqualPattern: */ 
SOURCE(25881, 195)
SOURCE(25881, 195)
   var←c21324 = 0;
SOURCE(25952, 35)
   if (((*  (ptr) p1←v21252 ) != (*  (ptr) p2←v21280 ))) {
SOURCE(25974, 13)
      return(0);
      };
SOURCE(25989, 64)
   {
      register word i←v21352 = 0;
      register word noName←c87940;
      noName←c87940 = (*  (ptr) p1←v21252 );
      if ((i←v21352 >= noName←c87940)) {
         goto lab←L100049;
         };
      lab←L100052: ;
SOURCE(26019, 34)
      {
         word limit326;
         word x327;
         word limit328;
         word x329;
         if (((
            x327 = (* ((( (ptr) p1←v21252)+1)+(
                  limit326 = (*  (ptr) p1←v21252 ),
                  BCK(i←v21352, limit326)
                  )) ),  *(float*)&x327
            ) != (
            x329 = (* ((( (ptr) p2←v21280)+1)+(
                  limit328 = (*  (ptr) p2←v21280 ),
                  BCK(i←v21352, limit328)
                  )) ),  *(float*)&x329
            ))) {
SOURCE(26040, 13)
            return(0);
            };
         };
      i←v21352 = (i←v21352 + 1);
      if ((i←v21352 < noName←c87940)) {
         goto lab←L100052;
         };
      lab←L100049: ;
      };
SOURCE(26064, 12)
   return(1);
   }

static word CompareProps←P5484(argument←v67896, formal←c96260)
   word argument←v67896;
   word formal←c96260;
   {
   register ptr gf←c96228 =  (ptr) &globalframe;
   word good←v67940;
   word cachedProps←v21396;
   word cachedSlice←v21424;
   word cachedHiSeg←v21452;
   word cachedTrajData←v21480;
   word cachedSeg←v21508 = 0;
   word seg←v21536 = 0;
   formal←c96260 = (formal←c96260 - 32);
   /* CompareProps: */ 
SOURCE(26081, 1485)
SOURCE(26125, 37)
   cachedProps←v21396 = XR←Narrow(argument←v67896, (* (( (ptr) gf←c96228)+25) ));
SOURCE(26164, 38)
   cachedSlice←v21424 = (*  (ptr) cachedProps←v21396 );
SOURCE(26204, 36)
   cachedHiSeg←v21452 = (* (( (ptr) cachedProps←v21396)+1) );
SOURCE(26242, 51)
   cachedTrajData←v21480 = XR←Narrow((* (( (ptr) cachedSlice←v21424)+1) ), (* (( (ptr) gf←c96228)+10) ));
SOURCE(26344, 41)
   if ((cachedHiSeg←v21452 != (* (( (ptr) formal←c96260)+12) ))) {
SOURCE(26372, 13)
      return(0);
      };
SOURCE(26387, 71)
   if (((* (( (ptr) cachedTrajData←v21480)+6) ) != (* (( (ptr) (* (( (ptr) formal←c96260)+5) ))+6) ))) {
SOURCE(26445, 13)
      return(0);
      };
SOURCE(26460, 1083)
   {
      register word i←v21608 = 0;
      register word noName←c87972;
      noName←c87972 = cachedHiSeg←v21452;
      if ((i←v21608 > noName←c87972)) {
         goto lab←L100053;
         };
      lab←L100056: ;
      {
         W2 var←c88004;
SOURCE(26494, 47)
         {
            word pd330;
            pd330 = (* (( (ptr) (* (( (ptr) gf←c96228)+161)/* var←c84516 */  ))+29) );
            cachedSeg←v21508 = (word) ( *( (fPt) ((*  (ptr) pd330 ))))(cachedSlice←v21424, i←v21608, pd330);
            };
SOURCE(26543, 35)
         {
            word pd331;
            pd331 = (* (( (ptr) (* (( (ptr) gf←c96228)+161)/* var←c84516 */  ))+29) );
            seg←v21536 = (word) ( *( (fPt) ((*  (ptr) pd331 ))))((* (( (ptr) formal←c96260)+4) ), i←v21608, pd331);
            };
SOURCE(26580, 49)
         if (((*  (ptr) seg←v21536 ) != (*  (ptr) cachedSeg←v21508 ))) {
SOURCE(26616, 13)
            return(0);
            };
SOURCE(26631, 61)
         {
            word pd332;
            pd332 = (* (( (ptr) (* (( (ptr) gf←c96228)+164)/* var←c84836 */  ))+20) );
            if ((0 == (word) ( *( (fPt) ((*  (ptr) pd332 ))))(seg←v21536, cachedSeg←v21508, pd332))) {
SOURCE(26679, 13)
               return(0);
               };
            };
SOURCE(26694, 50)
         {
            word pd333;
            pd333 = (* (( (ptr) (* (( (ptr) gf←c96228)+165)/* var←c85028 */  ))+11) );
            (void) ( *( (fPt) ((*  (ptr) pd333 ))))((word) (( (bPt) formal←c96260)+24), (*  (W2Pt) (( (ptr) seg←v21536)+9) ), (*  (W2Pt) (
                  ( (ptr) cachedSeg←v21508)+9) ), pd333);
            };
SOURCE(26746, 88)
         {
            word pd334;
            pd334 = (* (( (ptr) (* (( (ptr) gf←c96228)+165)/* var←c85028 */  ))+10) );
            (void) ( *( (fPt) ((*  (ptr) pd334 ))))((word) &var←c88004, (*  (W2Pt) (( (ptr) cachedSeg←v21508)+11) ), (*  (W2Pt) (( (ptr) formal←c96260)+6)
                ), pd334);
            };
         if ((0 == (word) ClosePoints←P1260(var←c88004, (*  (W2Pt) (( (ptr) seg←v21536)+11) )))) {
SOURCE(26821, 13)
            return(0);
            };
SOURCE(26836, 79)
         {
            word limit335;
            word pd336;
            pd336 = (* (( (ptr) (*  (ptr) seg←v21536 ))+17) );
            if (((* ((( (ptr) cachedProps←v21396)+3)+(
                  limit335 = (* (( (ptr) cachedProps←v21396)+2) ),
                  BCK(i←v21608, limit335)
                  )) ) != (word) ( *( (fPt) ((*  (ptr) pd336 ))))(seg←v21536, pd336))) {
SOURCE(26902, 13)
               return(0);
               };
            };
SOURCE(26917, 193)
         {
            register word j←v21652 = 0;
            register word noName←c88036;
            W2 var←c88068;
            W2 var←c88132;
            {
               word limit337;
               noName←c88036 = (* ((( (ptr) cachedProps←v21396)+3)+(
                     limit337 = (* (( (ptr) cachedProps←v21396)+2) ),
                     BCK(i←v21608, limit337)
                     )) );
               };
            if ((j←v21652 >= noName←c88036)) {
               goto lab←L100057;
               };
            lab←L100060: ;
SOURCE(26962, 148)
            {
               W2 var←c88100;
               {
                  word pd338;
                  pd338 = (* (( (ptr) (*  (ptr) cachedSeg←v21508 ))+16) );
                  (void) ( *( (fPt) ((*  (ptr) pd338 ))))((word) &var←c88100, cachedSeg←v21508, j←v21652, pd338);
                  };
               {
                  W2 var←c0473;
                  {
                     word pd339;
                     pd339 = (* (( (ptr) (* (( (ptr) gf←c96228)+165)/* var←c85028 */  ))+10) );
                     (void) ( *( (fPt) ((*  (ptr) pd339 ))))((word) &var←c0473, var←c88100, (*  (W2Pt) (( (ptr) formal←c96260)+6) ), pd339);
                     };
                  var←c88068 = var←c0473;
                  };
               };
            {
               word pd340;
               pd340 = (* (( (ptr) (*  (ptr) seg←v21536 ))+16) );
               (void) ( *( (fPt) ((*  (ptr) pd340 ))))((word) &var←c88132, seg←v21536, j←v21652, pd340);
               };
            if ((0 == (word) ClosePoints←P1260(var←c88068, var←c88132))) {
SOURCE(27097, 13)
               return(0);
               };
            j←v21652 = (j←v21652 + 1);
            if ((j←v21652 < noName←c88036)) {
               goto lab←L100060;
               };
            lab←L100057: ;
            };
SOURCE(27121, 74)
         {
            float tf341;
            word x342;
            word x343;
            word x345;
            if ((FABS(((
                  x342 = (* (( (ptr) cachedSeg←v21508)+2) ),  *(float*)&x342
                  ) - (
                  x343 = (* (( (ptr) seg←v21536)+2) ),  *(float*)&x343
                  )), tf341) > (
               x345 = (*  (ptr) &fc344 ),  *(float*)&x345
               ))) {
SOURCE(27182, 13)
               return(0);
               };
            };
SOURCE(27197, 55)
         if (((* (( (ptr) cachedSeg←v21508)+3) ) != (* (( (ptr) seg←v21536)+3) ))) {
SOURCE(27239, 13)
            return(0);
            };
SOURCE(27254, 80)
         {
            word pd346;
            pd346 = (* (( (ptr) (* (( (ptr) gf←c96228)+170)/* var←c88164 */  ))+35) );
            if ((0 == (word) ( *( (fPt) ((*  (ptr) pd346 ))))((* (( (ptr) cachedSeg←v21508)+8) ), (* (( (ptr) seg←v21536)+8) ), pd346)
            )) {
SOURCE(27321, 13)
               return(0);
               };
            };
SOURCE(27336, 49)
         if (((* (( (ptr) cachedSeg←v21508)+4) ) != (* (( (ptr) seg←v21536)+4) ))) {
SOURCE(27372, 13)
            return(0);
            };
SOURCE(27387, 156)
         {
            word x347;
            word x348;
            word x349;
            word x350;
            if ( ( (0 != (* (( (ptr) cachedSeg←v21508)+4) )) ?  ( (((
               x347 = (* (( (ptr) cachedSeg←v21508)+6) ),  *(float*)&x347
               ) != (
               x348 = (* (( (ptr) seg←v21536)+6) ),  *(float*)&x348
               )) || ((
               x349 = (* (( (ptr) cachedSeg←v21508)+7) ),  *(float*)&x349
               ) != (
               x350 = (* (( (ptr) seg←v21536)+7) ),  *(float*)&x350
               ))) ? 1 : (0 == (word) EqualPattern←P5424((* (( (ptr) cachedSeg←v21508)+5) ), (* (( (ptr) seg←v21536)+5) ), (word) (( (bPt) formal←c96260)+40)
               )) )  : 0 ) ) {
SOURCE(27530, 13)
               return(0);
               };
            };
         };
      if ((i←v21608 >= noName←c87972)) {
         goto lab←L100053;
         };
      i←v21608 = (i←v21608 + 1);
      goto lab←L100056;
      lab←L100053: ;
      };
SOURCE(27554, 12)
   return(1);
   }

static word ClosePoints←P1260(p1←v10888, p2←v10916)
   W2 p1←v10888;
   W2 p2←v10916;
   {
   word var←c10960;
   /* ClosePoints: */ 
SOURCE(27804, 203)
SOURCE(27946, 61)
   {
      word tc351;
      float tf352;
      word x353;
      word x354;
      word x356;
      float tf357;
      word x358;
      word x359;
      word x360;
      if ((FABS(((
            x353 = p1←v10888.f0,  *(float*)&x353
            ) - (
            x354 = p2←v10916.f0,  *(float*)&x354
            )), tf352) < (
         x356 = (*  (ptr) &fc355 ),  *(float*)&x356
         ))) {
         tc351 =  (word)  (unsigned) (FABS(((
               x358 = p1←v10888.f1,  *(float*)&x358
               ) - (
               x359 = p2←v10916.f1,  *(float*)&x359
               )), tf357) < (
            x360 = (*  (ptr) &fc355 ),  *(float*)&x360
            ));
         }
      else {
         tc351 =  (word)  (unsigned) 0;
         };
      return(tc351);
      };
   }

static word CreateProps←P1320(slice←v11020, trajData←v11048)
   word slice←v11020;
   word trajData←v11048;
   {
   register ptr gf←c96292 =  (ptr) &globalframe;
   word props←v11092;
   word hiSeg←v21740;
   word seg←v21768 = 0;
   /* CreateProps: */ 
SOURCE(28013, 338)
SOURCE(28013, 338)
   props←v11092 = 0;
SOURCE(28093, 36)
   {
      word pd361;
      pd361 = (* (( (ptr) (* (( (ptr) gf←c96292)+161)/* var←c84516 */  ))+37) );
      hiSeg←v21740 = (word) ( *( (fPt) ((*  (ptr) pd361 ))))(slice←v11020, pd361);
      };
SOURCE(28145, 30)
   {
      word var←c88196;
      word var←c88228;
      word var←c88260;
      var←c88196 = BCK((hiSeg←v21740 + 1), 67108863);
      var←c88228 = ((word) var←c88196 << 2);
      var←c88260 = XR←NewObject((12 + var←c88228), (* (( (ptr) gf←c96292)+25) ));
      (* (( (ptr) var←c88260)+2) ) = var←c88196;
      props←v11092 = var←c88260;
      };
SOURCE(28177, 35)
   {
      word var←c88292;
      var←c88292 = (*  (ptr) TrajCopy←P540(slice←v11020, 0) );
      (*  (ptr) props←v11092 ) = var←c88292;
      };
SOURCE(28214, 19)
   (* (( (ptr) props←v11092)+1) ) = hiSeg←v21740;
SOURCE(28235, 116)
   {
      register word i←v21812 = 0;
      register word noName←c88324;
      noName←c88324 = hiSeg←v21740;
      if ((i←v21812 > noName←c88324)) {
         goto lab←L100061;
         };
      lab←L100064: ;
SOURCE(28263, 35)
      {
         word pd362;
         pd362 = (* (( (ptr) (* (( (ptr) gf←c96292)+161)/* var←c84516 */  ))+29) );
         seg←v21768 = (word) ( *( (fPt) ((*  (ptr) pd362 ))))(slice←v11020, i←v21812, pd362);
         };
SOURCE(28300, 51)
      {
         word var←c88356;
         {
            word pd363;
            pd363 = (* (( (ptr) (*  (ptr) seg←v21768 ))+17) );
            var←c88356 = (word) ( *( (fPt) ((*  (ptr) pd363 ))))(seg←v21768, pd363);
            };
         {
            word limit364;
            (* ((( (ptr) props←v11092)+3)+(
                  limit364 = (* (( (ptr) props←v11092)+2) ),
                  BCK(i←v21812, limit364)
                  )) ) = var←c88356;
            };
         };
      if ((i←v21812 >= noName←c88324)) {
         goto lab←L100061;
         };
      i←v21812 = (i←v21812 + 1);
      goto lab←L100064;
      lab←L100061: ;
      };
SOURCE(28013, 338)
   return(props←v11092);
   }

static void CachedDrawBorder←P1380(dc←v11152, slice←v11180, viewView←v11208, trajTransformParts←v11236)
   word dc←v11152;
   word slice←v11180;
   word viewView←v11208;
   word trajTransformParts←v11236;
   {
   register ptr gf←c96324 =  (ptr) &globalframe;
   word object←v21856 = 0;
   W2 position←v21884;
   word trajProps←v21912 = 0;
   word trajData←v21940;
   /* CachedDrawBorder: */ 
SOURCE(28367, 1049)
SOURCE(28614, 39)
   trajData←v21940 = XR←Narrow((* (( (ptr) slice←v11180)+1) ), (* (( (ptr) gf←c96324)+10) ));
SOURCE(28656, 760)
   {
      word pd365;
      pd365 = (* (( (ptr) (* (( (ptr) gf←c96324)+171)/* var←c88388 */  ))+5) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd365 ))))(pd365))) {
SOURCE(28694, 54)
         {
            W3 var←c88420;
            (void) FindImagerObject←P1200((word) &var←c88420, slice←v11180, trajData←v21940);
            position←v21884 = (*  (W2Pt) (( (ptr) &var←c88420)+1) );
            object←v21856 = var←c88420.f0;
            };
SOURCE(28750, 373)
         if ((object←v21856 == 0)) {
SOURCE(28772, 353)
            {
               W4 clipR←v21984;
               word props←v22012;
SOURCE(28795, 87)
               {
                  word var←c88452;
                  var←c88452 = (word) TrajGetBoundBox←P420(slice←v11180, 0);
                  {
                     word pd366;
                     pd366 = (* (( (ptr) (* (( (ptr) gf←c96324)+158)/* var←c84068 */  ))+11) );
                     (void) ( *( (fPt) ((*  (ptr) pd366 ))))((word) &clipR←v21984, var←c88452, pd366);
                     };
                  };
SOURCE(28884, 43)
               props←v22012 = (word) CreateProps←P1320(slice←v11180, trajData←v21940);
SOURCE(28961, 81)
               {
                  word var←c88484;
                  var←c88484 = XR←NewObject(24, (* (( (ptr) gf←c96324)+24) ));
                  (*  (ptr) var←c88484 ) = (word) (( (bPt) gf←c96324)+404)/* var←c83044 */ ;
                  (*  (W4Pt) (( (ptr) var←c88484)+1) ) = clipR←v21984;
                  (* (( (ptr) var←c88484)+5) ) = props←v22012;
                  object←v21856 = var←c88484;
                  };
SOURCE(29044, 16)
               position←v21884.f0 = (*  (ptr) &fc123 );
               position←v21884.f1 = (*  (ptr) &fc123 );
SOURCE(29062, 61)
               {
                  word pd367;
                  pd367 = (* (( (ptr) (* (( (ptr) gf←c96324)+169)/* var←c87812 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd367 ))))((* (( (ptr) gf←c96324)+7)/* cache←v7172 */  ), props←v22012, object←v21856, 60, (* (
                        ( (ptr) gf←c96324)+26) ), pd367);
                  };
               };
            };
SOURCE(29128, 31)
         trajProps←v21912 = XR←Narrow((* (( (ptr) object←v21856)+5) ), (* (( (ptr) gf←c96324)+25) ));
SOURCE(29161, 51)
         if ((viewView←v11208 != 0)) {
SOURCE(29184, 28)
            {
               word pd368;
               pd368 = (* (( (ptr) (* (( (ptr) gf←c96324)+167)/* var←c86788 */  ))+14) );
               (void) ( *( (fPt) ((*  (ptr) pd368 ))))(dc←v11152, viewView←v11208, pd368);
               };
            };
SOURCE(29214, 85)
         {
            word pd369;
            pd369 = (* (( (ptr) (* (( (ptr) gf←c96324)+167)/* var←c86788 */  ))+87) );
            (void) ( *( (fPt) ((*  (ptr) pd369 ))))(dc←v11152, object←v21856, position←v21884, 1, pd369);
            };
         }
      else {
SOURCE(29308, 108)
         (void) DrawBorderAux←P1500(slice←v11180, 0, trajTransformParts←v11236, viewView←v11208, dc←v11152, 0
            , 0, 1,  (unsigned) (viewView←v11208 == 0),  (unsigned) (viewView←v11208 != 0));
         };
      };
   }

static void TrajDrawObject←P1440(self←v11296, context←v11324)
   word self←v11296;
   word context←v11324;
   {
   register ptr gf←c96356 =  (ptr) &globalframe;
   word trajProps←v22056;
   /* TrajDrawObject: */ 
SOURCE(29422, 195)
SOURCE(29495, 36)
   trajProps←v22056 = XR←Narrow((* (( (ptr) self←v11296)+5) ), (* (( (ptr) gf←c96356)+25) ));
SOURCE(29533, 84)
   (void) DrawBorderAux←P1500((*  (ptr) trajProps←v22056 ), 0, 0, 0, context←v11324, 0
      , 0, 1, 1, 0);
   }

static void DrawBorderAux←P1500(slice←v11384, trajDrawParts←v11412, trajTransformParts←v11440, transform←v11468, dc←v11496, camera←v11524, editConstraints←v11552, drawEntireTraj←v11580, transformNone←v11608, transformEntireTraj←v11636)
   word slice←v11384;
   word trajDrawParts←v11412;
   word trajTransformParts←v11440;
   word transform←v11468;
   word dc←v11496;
   word camera←v11524;
   word editConstraints←v11552;
   word drawEntireTraj←v11580;
   word transformNone←v11608;
   word transformEntireTraj←v11636;
   {
   register ptr gf←c96388 =  (ptr) &globalframe;
   word hiSegment←v22100;
   /* DrawBorderAux: */ 
SOURCE(29623, 1904)
SOURCE(29881, 40)
   {
      word pd370;
      pd370 = (* (( (ptr) (* (( (ptr) gf←c96388)+161)/* var←c84516 */  ))+37) );
      hiSegment←v22100 = (word) ( *( (fPt) ((*  (ptr) pd370 ))))(slice←v11384, pd370);
      };
SOURCE(29923, 255)
   if ( ( (0 != drawEntireTraj←v11580) ? (0 != (word) AllStrokePropsAndColorsEqual←P2340(slice←v11384)) : 0 ) ) {
SOURCE(29988, 85)
      (void) TrajDrawBorderSingleStroke←P1560(slice←v11384, trajTransformParts←v11440, transform←v11468, dc←v11496, editConstraints←v11552)
      ;
SOURCE(30075, 95)
      if ((transform←v11468 != 0)) {
SOURCE(30097, 73)
         (void) DrawRubberControlPoints←P1620(dc←v11496, trajTransformParts←v11440, slice←v11384, transform←v11468, camera←v11524)
         ;
         };
SOURCE(30172, 6)
      return;
      };
SOURCE(30183, 1344)
   {
      register word i←v22144 = 0;
      register word noName←c88516;
      word var←c88548;
      noName←c88516 = hiSegment←v22100;
      if (( (int)i←v22144 >  (int)noName←c88516)) {
         goto lab←L100065;
         };
      lab←L100068: ;
SOURCE(30215, 1312)
      {
         word limit372;
         if ((0 != drawEntireTraj←v11580)) { goto then0371;};
         var←c88548 = (*  (ptr) trajDrawParts←v11412 );
         if (XR←ExtractField(var←c88548, 32 + (word) (
               limit372 = (*  (ptr) var←c88548 ),
               BCK(i←v22144, limit372)
               ), 1)) {
            then0371: ;
SOURCE(30267, 1262)
            {
               word seg←v22188;
SOURCE(30290, 44)
               {
                  word pd373;
                  pd373 = (* (( (ptr) (* (( (ptr) gf←c96388)+161)/* var←c84516 */  ))+29) );
                  seg←v22188 = (word) ( *( (fPt) ((*  (ptr) pd373 ))))(slice←v11384, SGNCK(i←v22144), pd373);
                  };
SOURCE(30336, 45)
               {
                  word x374;
                  word x375;
                  if (((
                     x374 = (* (( (ptr) seg←v22188)+2) ),  *(float*)&x374
                     ) == (
                     x375 = (*  (ptr) &fc123 ),  *(float*)&x375
                     )) || ((* (( (ptr) seg←v22188)+8) ) == 0)) {
SOURCE(30381, 4)
                     goto lab←L100067;
                     };
                  };
SOURCE(30387, 32)
               {
                  word pd376;
                  pd376 = (* (( (ptr) (* (( (ptr) gf←c96388)+167)/* var←c86788 */  ))+70) );
                  (void) ( *( (fPt) ((*  (ptr) pd376 ))))(dc←v11496, 1, pd376);
                  };
SOURCE(30476, 38)
               {
                  word pd377;
                  pd377 = (* (( (ptr) (* (( (ptr) gf←c96388)+167)/* var←c86788 */  ))+69) );
                  (void) ( *( (fPt) ((*  (ptr) pd377 ))))(dc←v11496, (* (( (ptr) seg←v22188)+3) ), pd377);
                  };
SOURCE(30516, 42)
               {
                  word pd378;
                  pd378 = (* (( (ptr) (* (( (ptr) gf←c96388)+167)/* var←c86788 */  ))+68) );
                  (void) ( *( (fPt) ((*  (ptr) pd378 ))))(dc←v11496, (* (( (ptr) seg←v22188)+2) ), pd378);
                  };
SOURCE(30560, 30)
               {
                  word pd379;
                  pd379 = (* (( (ptr) (* (( (ptr) gf←c96388)+167)/* var←c86788 */  ))+52) );
                  (void) ( *( (fPt) ((*  (ptr) pd379 ))))(dc←v11496, (* (( (ptr) seg←v22188)+8) ), pd379);
                  };
               if ((0 != transformNone←v11608)) {
SOURCE(30626, 251)
                  (void) MaskStrokeTransform←P2280(dc←v11496, seg←v22188, transform←v11468, 0, 0, 0
                     , 0, slice←v11384, trajTransformParts←v11440, SGNCK(i←v22144), camera←v11524, editConstraints←v11552);
                  }
               else {
                  if ((0 != transformEntireTraj←v11636)) {
SOURCE(30902, 251)
                     (void) MaskStrokeTransform←P2280(dc←v11496, seg←v22188, transform←v11468, 1, 1, 1
                        , 0, slice←v11384, trajTransformParts←v11440, SGNCK(i←v22144), camera←v11524, editConstraints←v11552);
                     }
                  else {
SOURCE(31166, 361)
                     {
                        word var←c88580;
                        {
                           word var←c88612;
                           word var←c88644;
                           {
/*1*/   word pd380;
/*1*/   pd380 = (* (( (ptr) (* (( (ptr) gf←c96388)+161)/* var←c84516 */  ))+44) );
/*1*/   var←c88612 = (word) ( *( (fPt) ((*  (ptr) pd380 ))))(slice←v11384, SGNCK(i←v22144), pd380);
/*1*/   };
                           var←c88644 = (* (( (ptr) trajTransformParts←v11440)+1) );
                           {
/*1*/   word limit381;
/*1*/   var←c88580 =  (unsigned) XR←ExtractField(var←c88644, 32 + (word) (
/*1*/         limit381 = (*  (ptr) var←c88644 ),
/*1*/         BCK(var←c88612, limit381)
/*1*/         ), 1);
/*1*/   };
                           };
                        {
                           word var←c88676;
                           word var←c01267;
                           word var←c88708;
                           word var←c01268;
                           word var←c88740;
                           word var←c01269;
                           var←c88676 = (*  (ptr) trajTransformParts←v11440 );
                           {
/*1*/   word limit382;
/*1*/   var←c01267 =  (unsigned) XR←ExtractField(var←c88676, 32 + (word) (
/*1*/         limit382 = (*  (ptr) var←c88676 ),
/*1*/         BCK(i←v22144, limit382)
/*1*/         ), 1);
/*1*/   };
                           var←c88708 = (* (( (ptr) trajTransformParts←v11440)+1) );
                           {
/*1*/   word limit383;
/*1*/   var←c01268 =  (unsigned) XR←ExtractField(var←c88708, 32 + (word) (
/*1*/         limit383 = (*  (ptr) var←c88708 ),
/*1*/         BCK(i←v22144, limit383)
/*1*/         ), 1);
/*1*/   };
                           var←c88740 = (* (( (ptr) trajTransformParts←v11440)+2) );
                           {
/*1*/   word limit384;
/*1*/   var←c01269 = (* ((( (ptr) var←c88740)+1)+(
/*1*/         limit384 = (*  (ptr) var←c88740 ),
/*1*/         BCK(i←v22144, limit384)
/*1*/         )) );
/*1*/   };
                           (void) MaskStrokeTransform←P2280(dc←v11496, seg←v22188, transform←v11468, var←c01267, var←c01268, var←c88580
/*1*/   , var←c01269, slice←v11384, trajTransformParts←v11440, SGNCK(i←v22144), camera←v11524, editConstraints←v11552);
                           };
                        };
                     };
                  };
               };
            };
         };
      lab←L100067: ;
      if (( (int)i←v22144 >=  (int)noName←c88516)) {
         goto lab←L100065;
         };
      i←v22144 = (i←v22144 + 1);
      goto lab←L100068;
      lab←L100065: ;
      };
   }

static void TrajDrawBorderSingleStroke←P1560(formal←c01333, formal←c01334, formal←c01335, dc←v11780, formal←c01336)
   word formal←c01333;
   word formal←c01334;
   word formal←c01335;
   word dc←v11780;
   word formal←c01336;
   {
   W15 var←c96420;
   /* declaration of slice←v11696 skipped */ 
   /* declaration of trajParts←v11724 skipped */ 
   /* declaration of transform←v11752 skipped */ 
   /* declaration of editConstraints←v11808 skipped */ 
   register ptr gf←c96452 =  (ptr) &globalframe;
   /* declaration of var←c88772 skipped */ 
   /* declaration of var←c88804 skipped */ 
   /* declaration of var←c88836 skipped */ 
   word trajData←v22316;
   word firstSeg←v22344;
   word strokeWidth←v22372;
   /* declaration of pattern←v22400 skipped */ 
   (* (( (ptr) &var←c96420)+4)/* slice←v11696 */  ) = formal←c01333;
   (* (( (ptr) &var←c96420)+5)/* trajParts←v11724 */  ) = formal←c01334;
   (* (( (ptr) &var←c96420)+6)/* transform←v11752 */  ) = formal←c01335;
   (* (( (ptr) &var←c96420)+7)/* editConstraints←v11808 */  ) = formal←c01336;
   /* TrajDrawBorderSingleStroke: */ 
SOURCE(31545, 2288)
   {
      word tmpAddr385;
      tmpAddr385 = (word) (( (ptr) &var←c96420)+8)/* var←c88772 */ ;
      (*  (ptr) tmpAddr385 ) = ( ((word)  (fPt) PatternProc←P6000) );
      (* (( (ptr) tmpAddr385) + 1) ) = 1;
      };
   {
      word tmpAddr386;
      tmpAddr386 = (word) (( (ptr) &var←c96420)+10)/* var←c88804 */ ;
      (*  (ptr) tmpAddr386 ) = ( ((word)  (fPt) BuildPathTransform←P5940) );
      (* (( (ptr) tmpAddr386) + 1) ) = 1;
      };
   {
      word tmpAddr387;
      tmpAddr387 = (word) (( (ptr) &var←c96420)+12)/* var←c88836 */ ;
      (*  (ptr) tmpAddr387 ) = ( ((word)  (fPt) BuildPathNoTransform←P5880) );
      (* (( (ptr) tmpAddr387) + 1) ) = 1;
      };
SOURCE(33113, 39)
   trajData←v22316 = XR←Narrow((* (( (ptr) (* (( (ptr) &var←c96420)+4)/* slice←v11696 */  ))+1) ), (* (( (ptr) gf←c96452)+10)
       ));
SOURCE(33154, 49)
   {
      word pd388;
      pd388 = (* (( (ptr) (* (( (ptr) gf←c96452)+161)/* var←c84516 */  ))+29) );
      firstSeg←v22344 = (word) ( *( (fPt) ((*  (ptr) pd388 ))))((* (( (ptr) &var←c96420)+4)/* slice←v11696 */  ), 0, pd388);
      };
SOURCE(33205, 40)
   strokeWidth←v22372 = (* (( (ptr) firstSeg←v22344)+2) );
SOURCE(33247, 42)
   (* (( (ptr) &var←c96420)+14)/* pattern←v22400 */  ) = (* (( (ptr) firstSeg←v22344)+5) );
SOURCE(33292, 541)
   {
      word x389;
      word x390;
      if ( ( ((
         x389 = strokeWidth←v22372,  *(float*)&x389
         ) != (
         x390 = (*  (ptr) &fc123 ),  *(float*)&x390
         )) ? ((* (( (ptr) firstSeg←v22344)+8) ) != 0) : 0 ) ) {
SOURCE(33345, 35)
         {
            word pd391;
            pd391 = (* (( (ptr) (* (( (ptr) gf←c96452)+167)/* var←c86788 */  ))+52) );
            (void) ( *( (fPt) ((*  (ptr) pd391 ))))(dc←v11780, (* (( (ptr) firstSeg←v22344)+8) ), pd391);
            };
SOURCE(33382, 38)
         {
            word pd392;
            pd392 = (* (( (ptr) (* (( (ptr) gf←c96452)+167)/* var←c86788 */  ))+68) );
            (void) ( *( (fPt) ((*  (ptr) pd392 ))))(dc←v11780, strokeWidth←v22372, pd392);
            };
SOURCE(33422, 43)
         {
            word pd393;
            pd393 = (* (( (ptr) (* (( (ptr) gf←c96452)+167)/* var←c86788 */  ))+69) );
            (void) ( *( (fPt) ((*  (ptr) pd393 ))))(dc←v11780, (* (( (ptr) firstSeg←v22344)+3) ), pd393);
            };
SOURCE(33467, 47)
         {
            word pd394;
            pd394 = (* (( (ptr) (* (( (ptr) gf←c96452)+167)/* var←c86788 */  ))+70) );
            (void) ( *( (fPt) ((*  (ptr) pd394 ))))(dc←v11780, (* (( (ptr) trajData←v22316)+6) ), pd394);
            };
SOURCE(33516, 317)
         if ((0 != (* (( (ptr) firstSeg←v22344)+4) ))) {
SOURCE(33540, 161)
            {
               word pd395;
               pd395 = (* (( (ptr) (* (( (ptr) gf←c96452)+167)/* var←c86788 */  ))+75) );
               (void) ( *( (fPt) ((*  (ptr) pd395 ))))(dc←v11780,  ( ((* (( (ptr) &var←c96420)+6)/* transform←v11752 */  ) == 0) ? (word) (
                     ( (bPt) &var←c96420)+48)/* var←c88836 */  : (word) (( (bPt) &var←c96420)+40)/* var←c88804 */  ) , (*  (ptr) (* (( (ptr) &var←c96420)+14)
                  /* pattern←v22400 */  ) ), (word) (( (bPt) &var←c96420)+32)/* var←c88772 */ , (* (( (ptr) firstSeg←v22344)+6) ), (* (( (ptr) firstSeg←v22344)+7)
                   ), pd395);
               };
            }
         else {
SOURCE(33701, 132)
            {
               word pd396;
               pd396 = (* (( (ptr) (* (( (ptr) gf←c96452)+167)/* var←c86788 */  ))+71) );
               (void) ( *( (fPt) ((*  (ptr) pd396 ))))(dc←v11780,  ( ((* (( (ptr) &var←c96420)+6)/* transform←v11752 */  ) == 0) ? (word) (
                     ( (bPt) &var←c96420)+48)/* var←c88836 */  : (word) (( (bPt) &var←c96420)+40)/* var←c88804 */  ) ,  (unsigned)  ( ((*  (ptr) trajData←v22316 ) == 0) ? 1 : ((*  (ptr) trajData←v22316 ) == 1) ) , pd396)
               ;
               };
            };
         };
      };
   }

static void BuildPathNoTransform←P5880(moveTo←v70524, lineTo←v70552, curveTo←v70580, conicTo←v70608, arcTo←v70636, formal←c96516)
   word moveTo←v70524;
   word lineTo←v70552;
   word curveTo←v70580;
   word conicTo←v70608;
   word arcTo←v70636;
   word formal←c96516;
   {
   register ptr gf←c96484 =  (ptr) &globalframe;
   word seg←v22548 = 0;
   word hiSegment←v22576;
   W2 firstPoint←v22604;
   formal←c96516 = (formal←c96516 - 48);
   /* BuildPathNoTransform: */ 
SOURCE(31700, 296)
SOURCE(31756, 40)
   {
      word pd397;
      pd397 = (* (( (ptr) (* (( (ptr) gf←c96484)+161)/* var←c84516 */  ))+37) );
      hiSegment←v22576 = (word) ( *( (fPt) ((*  (ptr) pd397 ))))((* ((( (ptr) formal←c96516)+4)) ), pd397);
      };
SOURCE(31798, 50)
   {
      word pd398;
      pd398 = (* (( (ptr) (* (( (ptr) gf←c96484)+161)/* var←c84516 */  ))+32) );
      (void) ( *( (fPt) ((*  (ptr) pd398 ))))((word) &firstPoint←v22604, (* (( (ptr) formal←c96516)+4) ), 0, pd398);
      };
SOURCE(31850, 18)
   (void) ( *( (fPt) ((*  (ptr) moveTo←v70524 ))))(firstPoint←v22604, moveTo←v70524);
SOURCE(31870, 126)
   {
      register word i←v22648 = 0;
      register word noName←c88868;
      noName←c88868 = hiSegment←v22576;
      if (( (int)i←v22648 >  (int)noName←c88868)) {
         goto lab←L100069;
         };
      lab←L100072: ;
SOURCE(31902, 35)
      {
         word pd399;
         pd399 = (* (( (ptr) (* (( (ptr) gf←c96484)+161)/* var←c84516 */  ))+29) );
         seg←v22548 = (word) ( *( (fPt) ((*  (ptr) pd399 ))))((* (( (ptr) formal←c96516)+4) ), SGNCK(i←v22648), pd399);
         };
SOURCE(31939, 57)
      {
         word pd400;
         pd400 = (* (( (ptr) (*  (ptr) seg←v22548 ))+6) );
         (void) ( *( (fPt) ((*  (ptr) pd400 ))))(seg←v22548, lineTo←v70552, curveTo←v70580, conicTo←v70608, arcTo←v70636, pd400);
         };
      if (( (int)i←v22648 >=  (int)noName←c88868)) {
         goto lab←L100069;
         };
      i←v22648 = (i←v22648 + 1);
      goto lab←L100072;
      lab←L100069: ;
      };
   }

static void BuildPathTransform←P5940(moveTo←v70696, lineTo←v70724, curveTo←v70752, conicTo←v70780, arcTo←v70808, formal←c96580)
   word moveTo←v70696;
   word lineTo←v70724;
   word curveTo←v70752;
   word conicTo←v70780;
   word arcTo←v70808;
   word formal←c96580;
   {
   register ptr gf←c96548 =  (ptr) &globalframe;
   word seg←v22692 = 0;
   word entire←v22720 = 0;
   word lo←v22748 = 0;
   word hi←v22776 = 0;
   word controlPoints←v22804 = 0;
   W2 firstPoint←v22832;
   word hiSegment←v22860;
   formal←c96580 = (formal←c96580 - 40);
   /* BuildPathTransform: */ 
SOURCE(32010, 1019)
SOURCE(32139, 40)
   {
      word pd401;
      pd401 = (* (( (ptr) (* (( (ptr) gf←c96548)+161)/* var←c84516 */  ))+37) );
      hiSegment←v22860 = (word) ( *( (fPt) ((*  (ptr) pd401 ))))((* ((( (ptr) formal←c96580)+4)) ), pd401);
      };
SOURCE(32182, 47)
   if (((* (( (ptr) formal←c96580)+5) ) == 0)) {
      entire←v22720 =  (unsigned) 1;
      }
   else {
      {
         word var←c88900;
         var←c88900 = (*  (ptr) (* (( (ptr) formal←c96580)+5) ) );
         {
            word limit402;
            entire←v22720 =  (unsigned) XR←ExtractField(var←c88900, 32 + (word) (
                  limit402 = (*  (ptr) var←c88900 ),
                  BCK(0, limit402)
                  ), 1);
            };
         };
      };
SOURCE(32231, 41)
   if (((* (( (ptr) formal←c96580)+5) ) == 0)) {
      lo←v22748 =  (unsigned) 1;
      }
   else {
      {
         word var←c88932;
         var←c88932 = (* (( (ptr) (* (( (ptr) formal←c96580)+5) ))+1) );
         {
            word limit403;
            lo←v22748 =  (unsigned) XR←ExtractField(var←c88932, 32 + (word) (
                  limit403 = (*  (ptr) var←c88932 ),
                  BCK(0, limit403)
                  ), 1);
            };
         };
      };
SOURCE(32274, 43)
   {
      word pd404;
      pd404 = (* (( (ptr) (* (( (ptr) gf←c96548)+161)/* var←c84516 */  ))+32) );
      (void) ( *( (fPt) ((*  (ptr) pd404 ))))((word) &firstPoint←v22832, (* (( (ptr) formal←c96580)+4) ), 0, pd404);
      };
SOURCE(32319, 87)
   if (((0 != entire←v22720) || (0 != lo←v22748))) {
SOURCE(32340, 66)
      {
         word pd405;
         pd405 = (* (( (ptr) (* (( (ptr) gf←c96548)+156)/* var←c83940 */  ))+39) );
         (void) ( *( (fPt) ((*  (ptr) pd405 ))))((word) &firstPoint←v22832, (* (( (ptr) formal←c96580)+6) ), firstPoint←v22832, pd405)
         ;
         };
      };
SOURCE(32408, 18)
   (void) ( *( (fPt) ((*  (ptr) moveTo←v70696 ))))(firstPoint←v22832, moveTo←v70696);
SOURCE(32429, 600)
   {
      register word i←v22904 = 0;
      register word noName←c88964;
      noName←c88964 = hiSegment←v22860;
      if (( (int)i←v22904 >  (int)noName←c88964)) {
         goto lab←L100073;
         };
      lab←L100076: ;
SOURCE(32461, 35)
      {
         word pd406;
         pd406 = (* (( (ptr) (* (( (ptr) gf←c96548)+161)/* var←c84516 */  ))+29) );
         seg←v22692 = (word) ( *( (fPt) ((*  (ptr) pd406 ))))((* (( (ptr) formal←c96580)+4) ), SGNCK(i←v22904), pd406);
         };
SOURCE(32498, 47)
      if (((* (( (ptr) formal←c96580)+5) ) == 0)) {
         entire←v22720 =  (unsigned) 1;
         }
      else {
         {
            word var←c88996;
            var←c88996 = (*  (ptr) (* (( (ptr) formal←c96580)+5) ) );
            {
               word limit407;
               entire←v22720 =  (unsigned) XR←ExtractField(var←c88996, 32 + (word) (
                     limit407 = (*  (ptr) var←c88996 ),
                     BCK(i←v22904, limit407)
                     ), 1);
               };
            };
         };
SOURCE(32547, 41)
      if (((* (( (ptr) formal←c96580)+5) ) == 0)) {
         lo←v22748 =  (unsigned) 1;
         }
      else {
         {
            word var←c89028;
            var←c89028 = (* (( (ptr) (* (( (ptr) formal←c96580)+5) ))+1) );
            {
               word limit408;
               lo←v22748 =  (unsigned) XR←ExtractField(var←c89028, 32 + (word) (
                     limit408 = (*  (ptr) var←c89028 ),
                     BCK(i←v22904, limit408)
                     ), 1);
               };
            };
         };
SOURCE(32590, 71)
      if (((* (( (ptr) formal←c96580)+5) ) == 0)) {
         hi←v22776 =  (unsigned) 1;
         }
      else {
         {
            word var←c89060;
            word var←c89092;
            {
               word pd409;
               pd409 = (* (( (ptr) (* (( (ptr) gf←c96548)+161)/* var←c84516 */  ))+44) );
               var←c89060 = (word) ( *( (fPt) ((*  (ptr) pd409 ))))((* (( (ptr) formal←c96580)+4) ), SGNCK(i←v22904), pd409);
               };
            var←c89092 = (* (( (ptr) (* (( (ptr) formal←c96580)+5) ))+1) );
            {
               word limit410;
               hi←v22776 =  (unsigned) XR←ExtractField(var←c89092, 32 + (word) (
                     limit410 = (*  (ptr) var←c89092 ),
                     BCK(var←c89060, limit410)
                     ), 1);
               };
            };
         };
SOURCE(32663, 42)
      {
         word var←c89124;
         var←c89124 = (* (( (ptr) (* (( (ptr) formal←c96580)+5) ))+2) );
         {
            word limit411;
            controlPoints←v22804 = (* ((( (ptr) var←c89124)+1)+(
                  limit411 = (*  (ptr) var←c89124 ),
                  BCK(i←v22904, limit411)
                  )) );
            };
         };
SOURCE(32707, 322)
      if ( ( ((*  (ptr) (*  (ptr) seg←v22692 ) ) == (* (( (ptr) gf←c96548)+27) )) ? ((* (( (ptr) formal←c96580)+7) ) != 0) : 0 ) ) {
SOURCE(32769, 141)
         (void) BuildConstrainedPathSeg←P720((* (( (ptr) formal←c96580)+4) ), (* (( (ptr) formal←c96580)+5) ), SGNCK(i←v22904), seg←v22692, (* (
               ( (ptr) formal←c96580)+6) ), entire←v22720
            , lo←v22748, hi←v22776, controlPoints←v22804, (* (( (ptr) formal←c96580)+7) ), lineTo←v70724, curveTo←v70752
            , conicTo←v70780, arcTo←v70808);
         }
      else {
SOURCE(32921, 108)
         {
            word pd412;
            pd412 = (* (( (ptr) (*  (ptr) seg←v22692 ))+7) );
            (void) ( *( (fPt) ((*  (ptr) pd412 ))))(seg←v22692, (* (( (ptr) formal←c96580)+6) ), entire←v22720, lo←v22748, hi←v22776, controlPoints←v22804
               , lineTo←v70724, curveTo←v70752, conicTo←v70780, arcTo←v70808, pd412);
            };
         };
      if (( (int)i←v22904 >=  (int)noName←c88964)) {
         goto lab←L100073;
         };
      i←v22904 = (i←v22904 + 1);
      goto lab←L100076;
      lab←L100073: ;
      };
   }

static word PatternProc←P6000(i←v22476, formal←c96612)
   word i←v22476;
   word formal←c96612;
   {
   word var←c22520;
   formal←c96612 = (formal←c96612 - 32);
   /* PatternProc: */ 
SOURCE(33046, 63)
SOURCE(33091, 18)
   {
      word limit413;
      return((* ((( (ptr) (* (( (ptr) formal←c96612)+14) ))+1)+(
            limit413 = (*  (ptr) (* (( (ptr) formal←c96612)+14) ) ),
            BCK(i←v22476, limit413)
            )) ));
      };
   }

static void DrawRubberControlPoints←P1620(dc←v11868, trajParts←v11896, slice←v11924, transform←v11952, camera←v11980)
   word dc←v11868;
   word trajParts←v11896;
   word slice←v11924;
   word transform←v11952;
   word camera←v11980;
   {
   register ptr gf←c96644 =  (ptr) &globalframe;
   word controlPoints←v22948 = 0;
   word seg←v22976 = 0;
   word cpCount←v23004;
   word cPointsInSeq←v23032 = 0;
   word cPointsInSeg←v23060 = 0;
   word hiSegment←v23088;
   word drawForTraj←v23116 = 0;
   word drawForSeg←v23144 = 0;
   /* DrawRubberControlPoints: */ 
SOURCE(33876, 1394)
SOURCE(34140, 40)
   {
      word pd414;
      pd414 = (* (( (ptr) (* (( (ptr) gf←c96644)+161)/* var←c84516 */  ))+37) );
      hiSegment←v23088 = (word) ( *( (fPt) ((*  (ptr) pd414 ))))(slice←v11924, pd414);
      };
SOURCE(34222, 30)
   if ((trajParts←v11896 == 0)) {
SOURCE(34246, 6)
      return;
      };
SOURCE(34254, 709)
   {
      register word i←v23188 = 0;
      register word noName←c89156;
      noName←c89156 = hiSegment←v23088;
      if (( (int)i←v23188 >  (int)noName←c89156)) {
         goto lab←L100077;
         };
      lab←L100080: ;
      {
         word var←c89220;
SOURCE(34286, 35)
         {
            word pd415;
            pd415 = (* (( (ptr) (* (( (ptr) gf←c96644)+161)/* var←c84516 */  ))+29) );
            seg←v22976 = (word) ( *( (fPt) ((*  (ptr) pd415 ))))(slice←v11924, SGNCK(i←v23188), pd415);
            };
SOURCE(34323, 42)
         {
            word var←c89188;
            var←c89188 = (* (( (ptr) trajParts←v11896)+2) );
            {
               word limit416;
               controlPoints←v22948 = (* ((( (ptr) var←c89188)+1)+(
                     limit416 = (*  (ptr) var←c89188 ),
                     BCK(i←v23188, limit416)
                     )) );
               };
            };
SOURCE(34367, 42)
         {
            word pd417;
            pd417 = (* (( (ptr) (*  (ptr) seg←v22976 ))+17) );
            cpCount←v23004 = (word) ( *( (fPt) ((*  (ptr) pd417 ))))(seg←v22976, pd417);
            };
SOURCE(34411, 552)
         {
            word limit418;
            var←c89220 = (*  (ptr) trajParts←v11896 );
            if ( ! XR←ExtractField(var←c89220, 32 + (word) (
                  limit418 = (*  (ptr) var←c89220 ),
                  BCK(i←v23188, limit418)
                  ), 1)) {
SOURCE(34447, 434)
               {
                  register word j←v23232 = 0;
                  register word noName←c89252;
                  noName←c89252 = cpCount←v23004;
                  if ((j←v23232 >= noName←c89252)) {
                     goto lab←L100081;
                     };
                  lab←L100084: ;
SOURCE(34477, 404)
                  {
                     word limit419;
                     if (XR←ExtractField(controlPoints←v22948, 32 + (word) (
                           limit419 = (*  (ptr) controlPoints←v22948 ),
                           BCK(j←v23232, limit419)
                           ), 1)) {
SOURCE(34504, 86)
                        if ((0 == drawForTraj←v23116)) {
SOURCE(34528, 62)
                           {
/*1*/   word var←c89284;
/*1*/   word var←c89316;
/*1*/   word var←c89348;
/*1*/   {
/*1*/      word pd420;
/*1*/      word idx421;
/*1*/      pd420 = (* (( (ptr) (* (( (ptr) gf←c96644)+161)/* var←c84516 */  ))+37) );
/*1*/      var←c89284 = (
/*1*/         idx421 = (word) ((word) ( *( (fPt) ((*  (ptr) pd420 ))))(slice←v11924, pd420) + 1),
/*1*/         BCK(idx421, 67108863)
/*1*/         );
/*1*/      };
/*1*/   var←c89316 = ((word) var←c89284 << 2);
/*1*/   var←c89348 = XR←NewObject((4 + var←c89316), (* (( (ptr) gf←c96644)+23) ));
/*1*/   (*  (ptr) var←c89348 ) = var←c89284;
/*1*/   cPointsInSeq←v23032 = var←c89348;
/*1*/   };
                           };
SOURCE(34592, 68)
                        if ((0 == drawForSeg←v23144)) {
SOURCE(34615, 45)
                           {
/*1*/   word var←c89380;
/*1*/   word var←c89412;
/*1*/   word var←c89444;
/*1*/   var←c89380 = BCK(cpCount←v23004, 22369621);
/*1*/   var←c89412 = ((word) var←c89380 * 12);
/*1*/   var←c89444 = XR←NewObject((4 + var←c89412), (* (( (ptr) gf←c96644)+22) ));
/*1*/   (*  (ptr) var←c89444 ) = var←c89380;
/*1*/   cPointsInSeg←v23060 = var←c89444;
/*1*/   };
                           };
SOURCE(34662, 101)
                        {
                           W2 var←c89476;
                           {
/*1*/   W2 var←c89508;
/*1*/   {
/*1*/      word pd422;
/*1*/      pd422 = (* (( (ptr) (*  (ptr) seg←v22976 ))+16) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd422 ))))((word) &var←c89508, seg←v22976, j←v23232, pd422);
/*1*/      };
/*1*/   {
/*1*/      W2 var←c0606;
/*1*/      {
/*1*/         word pd423;
/*1*/         pd423 = (* (( (ptr) (* (( (ptr) gf←c96644)+156)/* var←c83940 */  ))+39) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd423 ))))((word) &var←c0606, transform←v11952, var←c89508, pd423);
/*1*/         };
/*1*/      var←c89476 = var←c0606;
/*1*/      };
/*1*/   };
                           {
/*1*/   word limit424;
/*1*/   (*  (W2Pt) (( (W3Pt) (( (ptr) cPointsInSeg←v23060)+1))+(
/*1*/         limit424 = (*  (ptr) cPointsInSeg←v23060 ),
/*1*/         BCK(j←v23232, limit424)
/*1*/         )) ) = var←c89476;
/*1*/   };
                           };
SOURCE(34765, 27)
                        {
                           word limit425;
                           (* (( (W3Pt) (( (ptr) cPointsInSeg←v23060)+1))+(
/*1*/      limit425 = (*  (ptr) cPointsInSeg←v23060 ),
/*1*/      BCK(j←v23232, limit425)
/*1*/      )) ).f2 = 1;
                           };
SOURCE(34794, 31)
                        drawForSeg←v23144 = 1;
                        drawForTraj←v23116 = 1;
                        }
                     else {
SOURCE(34834, 47)
                        if ((0 != drawForSeg←v23144)) {
SOURCE(34853, 28)
                           {
/*1*/   word limit426;
/*1*/   (* (( (W3Pt) (( (ptr) cPointsInSeg←v23060)+1))+(
/*1*/         limit426 = (*  (ptr) cPointsInSeg←v23060 ),
/*1*/         BCK(j←v23232, limit426)
/*1*/         )) ).f2 = 0;
/*1*/   };
                           };
                        };
                     };
                  j←v23232 = (j←v23232 + 1);
                  if ((j←v23232 < noName←c89252)) {
                     goto lab←L100084;
                     };
                  lab←L100081: ;
                  };
SOURCE(34892, 71)
               if ((0 != drawForSeg←v23144)) {
SOURCE(34913, 30)
                  {
                     word limit427;
                     (* ((( (ptr) cPointsInSeq←v23032)+1)+(
                           limit427 = (*  (ptr) cPointsInSeq←v23032 ),
                           BCK(i←v23188, limit427)
                           )) ) = cPointsInSeg←v23060;
                     };
SOURCE(34945, 18)
                  drawForSeg←v23144 = 0;
                  };
               };
            };
         };
      if (( (int)i←v23188 >=  (int)noName←c89156)) {
         goto lab←L100077;
         };
      i←v23188 = (i←v23188 + 1);
      goto lab←L100080;
      lab←L100077: ;
      };
SOURCE(34980, 290)
   if ((cPointsInSeq←v23032 != 0)) {
SOURCE(35007, 263)
      {
         register word i←v23276 = 0;
         register word noName←c89540;
         word var←c89572;
         noName←c89540 = (*  (ptr) cPointsInSeq←v23032 );
         if ((i←v23276 >= noName←c89540)) {
            goto lab←L100085;
            };
         lab←L100088: ;
SOURCE(35046, 224)
         {
            word tc428;
            word limit429;
            word limit430;
            var←c89572 = (*  (ptr) trajParts←v11896 );
            if ( ! XR←ExtractField(var←c89572, 32 + (word) (
                  limit429 = (*  (ptr) var←c89572 ),
                  BCK(i←v23276, limit429)
                  ), 1)) {
               tc428 =  (word) ((* ((( (ptr) cPointsInSeq←v23032)+1)+(
                     limit430 = (*  (ptr) cPointsInSeq←v23032 ),
                     BCK(i←v23276, limit430)
                     )) ) != 0);
               }
            else {
               tc428 =  (word) 0;
               };
            if (tc428) {
SOURCE(35110, 160)
               {
                  register word j←v23320 = 0;
                  register word noName←c89604;
                  {
                     word limit431;
                     noName←c89604 = (*  (ptr) (* ((( (ptr) cPointsInSeq←v23032)+1)+(
                           limit431 = (*  (ptr) cPointsInSeq←v23032 ),
                           BCK(i←v23276, limit431)
                           )) ) );
                     };
                  if ((j←v23320 >= noName←c89604)) {
                     goto lab←L100089;
                     };
                  lab←L100092: ;
                  {
                     W2 cPoint←v23364;
                     word var←c89636;
                     word var←c89668;
                     word var←c01270;
SOURCE(35152, 41)
                     {
                        word limit433;
                        {
                           word limit432;
                           var←c89636 = (* ((( (ptr) cPointsInSeq←v23032)+1)+(
/*1*/      limit432 = (*  (ptr) cPointsInSeq←v23032 ),
/*1*/      BCK(i←v23276, limit432)
/*1*/      )) );
                           };
                        cPoint←v23364 = (*  (W2Pt) (( (W3Pt) (( (ptr) var←c89636)+1))+(
/*1*/   limit433 = (*  (ptr) var←c89636 ),
/*1*/   BCK(j←v23320, limit433)
/*1*/   )) );
                        };
SOURCE(35195, 75)
                     {
                        word limit435;
                        {
                           word limit434;
                           var←c89668 = (* ((( (ptr) cPointsInSeq←v23032)+1)+(
/*1*/      limit434 = (*  (ptr) cPointsInSeq←v23032 ),
/*1*/      BCK(i←v23276, limit434)
/*1*/      )) );
                           };
                        var←c01270 = (* (( (W3Pt) (( (ptr) var←c89668)+1))+(
/*1*/   limit435 = (*  (ptr) var←c89668 ),
/*1*/   BCK(j←v23320, limit435)
/*1*/   )) ).f2;
                        };
                     if ((0 != var←c01270)) {
SOURCE(35227, 43)
                        {
                           word pd436;
                           pd436 = (* (( (ptr) (* (( (ptr) gf←c96644)+168)/* var←c87012 */  ))+19) );
                           (void) ( *( (fPt) ((*  (ptr) pd436 ))))(dc←v11868, cPoint←v23364, (* (( (ptr) camera←v11980)+4) ), pd436);
                           };
                        };
                     };
                  j←v23320 = (j←v23320 + 1);
                  if ((j←v23320 < noName←c89604)) {
                     goto lab←L100092;
                     };
                  lab←L100089: ;
                  };
               };
            };
         i←v23276 = (i←v23276 + 1);
         if ((i←v23276 < noName←c89540)) {
            goto lab←L100088;
            };
         lab←L100085: ;
         };
      };
   }

static void DrawSingleStrokeTraj←P1680(dc←v12040, formal←c01337)
   word dc←v12040;
   word formal←c01337;
   {
   W10 var←c96676;
   /* declaration of slice←v12068 skipped */ 
   register ptr gf←c96708 =  (ptr) &globalframe;
   /* declaration of var←c89700 skipped */ 
   /* declaration of var←c89732 skipped */ 
   word trajData←v23464;
   word firstSeg←v23492;
   word strokeWidth←v23520;
   /* declaration of pattern←v23548 skipped */ 
   (* (( (ptr) &var←c96676)+4)/* slice←v12068 */  ) = formal←c01337;
   /* DrawSingleStrokeTraj: */ 
SOURCE(36486, 1044)
   {
      word tmpAddr437;
      tmpAddr437 = (word) (( (ptr) &var←c96676)+5)/* var←c89700 */ ;
      (*  (ptr) tmpAddr437 ) = ( ((word)  (fPt) PatternProc←P6456) );
      (* (( (ptr) tmpAddr437) + 1) ) = 1;
      };
   {
      word tmpAddr438;
      tmpAddr438 = (word) (( (ptr) &var←c96676)+7)/* var←c89732 */ ;
      (*  (ptr) tmpAddr438 ) = ( ((word)  (fPt) BuildPath←P6396) );
      (* (( (ptr) tmpAddr438) + 1) ) = 1;
      };
SOURCE(36920, 39)
   trajData←v23464 = XR←Narrow((* (( (ptr) (* (( (ptr) &var←c96676)+4)/* slice←v12068 */  ))+1) ), (* (( (ptr) gf←c96708)+10)
       ));
SOURCE(36961, 49)
   {
      word pd439;
      pd439 = (* (( (ptr) (* (( (ptr) gf←c96708)+161)/* var←c84516 */  ))+29) );
      firstSeg←v23492 = (word) ( *( (fPt) ((*  (ptr) pd439 ))))((* (( (ptr) &var←c96676)+4)/* slice←v12068 */  ), 0, pd439);
      };
SOURCE(37012, 40)
   strokeWidth←v23520 = (* (( (ptr) firstSeg←v23492)+2) );
SOURCE(37054, 42)
   (* (( (ptr) &var←c96676)+9)/* pattern←v23548 */  ) = (* (( (ptr) firstSeg←v23492)+5) );
SOURCE(37098, 52)
   {
      word x440;
      word x441;
      if (((
         x440 = strokeWidth←v23520,  *(float*)&x440
         ) == (
         x441 = (*  (ptr) &fc123 ),  *(float*)&x441
         )) || ((* (( (ptr) firstSeg←v23492)+8) ) == 0)) {
SOURCE(37144, 6)
         return;
         };
      };
SOURCE(37152, 38)
   {
      word pd442;
      pd442 = (* (( (ptr) (* (( (ptr) gf←c96708)+167)/* var←c86788 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd442 ))))(dc←v12040, strokeWidth←v23520, pd442);
      };
SOURCE(37192, 43)
   {
      word pd443;
      pd443 = (* (( (ptr) (* (( (ptr) gf←c96708)+167)/* var←c86788 */  ))+69) );
      (void) ( *( (fPt) ((*  (ptr) pd443 ))))(dc←v12040, (* (( (ptr) firstSeg←v23492)+3) ), pd443);
      };
SOURCE(37237, 47)
   {
      word pd444;
      pd444 = (* (( (ptr) (* (( (ptr) gf←c96708)+167)/* var←c86788 */  ))+70) );
      (void) ( *( (fPt) ((*  (ptr) pd444 ))))(dc←v12040, (* (( (ptr) trajData←v23464)+6) ), pd444);
      };
SOURCE(37286, 35)
   {
      word pd445;
      pd445 = (* (( (ptr) (* (( (ptr) gf←c96708)+167)/* var←c86788 */  ))+52) );
      (void) ( *( (fPt) ((*  (ptr) pd445 ))))(dc←v12040, (* (( (ptr) firstSeg←v23492)+8) ), pd445);
      };
SOURCE(37323, 207)
   if ((0 != (* (( (ptr) firstSeg←v23492)+4) ))) {
SOURCE(37347, 104)
      {
         word pd446;
         pd446 = (* (( (ptr) (* (( (ptr) gf←c96708)+167)/* var←c86788 */  ))+75) );
         (void) ( *( (fPt) ((*  (ptr) pd446 ))))(dc←v12040, (word) (( (bPt) &var←c96676)+28)/* var←c89732 */ , (*  (ptr) (* (( (ptr) &var←c96676)+9)
            /* pattern←v23548 */  ) ), (word) (( (bPt) &var←c96676)+20)/* var←c89700 */ , (* (( (ptr) firstSeg←v23492)+6) ), (* (( (ptr) firstSeg←v23492)+7)
             ), pd446);
         };
      }
   else {
SOURCE(37451, 79)
      {
         word pd447;
         pd447 = (* (( (ptr) (* (( (ptr) gf←c96708)+167)/* var←c86788 */  ))+71) );
         (void) ( *( (fPt) ((*  (ptr) pd447 ))))(dc←v12040, (word) (( (bPt) &var←c96676)+28)/* var←c89732 */ ,  (unsigned)  ( ((*  (ptr) trajData←v23464 ) == 0) ? 1 : ((*  (ptr) trajData←v23464 ) == 1) ) , pd447)
         ;
         };
      };
   }

static void BuildPath←P6396(moveTo←v71612, lineTo←v71640, curveTo←v71668, conicTo←v71696, arcTo←v71724, formal←c96772)
   word moveTo←v71612;
   word lineTo←v71640;
   word curveTo←v71668;
   word conicTo←v71696;
   word arcTo←v71724;
   word formal←c96772;
   {
   register ptr gf←c96740 =  (ptr) &globalframe;
   word seg←v23696 = 0;
   word hiSegment←v23724;
   W2 firstPoint←v23752;
   formal←c96772 = (formal←c96772 - 28);
   /* BuildPath: */ 
SOURCE(36552, 285)
SOURCE(36597, 40)
   {
      word pd448;
      pd448 = (* (( (ptr) (* (( (ptr) gf←c96740)+161)/* var←c84516 */  ))+37) );
      hiSegment←v23724 = (word) ( *( (fPt) ((*  (ptr) pd448 ))))((* ((( (ptr) formal←c96772)+4)) ), pd448);
      };
SOURCE(36639, 50)
   {
      word pd449;
      pd449 = (* (( (ptr) (* (( (ptr) gf←c96740)+161)/* var←c84516 */  ))+32) );
      (void) ( *( (fPt) ((*  (ptr) pd449 ))))((word) &firstPoint←v23752, (* (( (ptr) formal←c96772)+4) ), 0, pd449);
      };
SOURCE(36691, 18)
   (void) ( *( (fPt) ((*  (ptr) moveTo←v71612 ))))(firstPoint←v23752, moveTo←v71612);
SOURCE(36711, 126)
   {
      register word i←v23796 = 0;
      register word noName←c89764;
      noName←c89764 = hiSegment←v23724;
      if (( (int)i←v23796 >  (int)noName←c89764)) {
         goto lab←L100093;
         };
      lab←L100096: ;
SOURCE(36743, 35)
      {
         word pd450;
         pd450 = (* (( (ptr) (* (( (ptr) gf←c96740)+161)/* var←c84516 */  ))+29) );
         seg←v23696 = (word) ( *( (fPt) ((*  (ptr) pd450 ))))((* (( (ptr) formal←c96772)+4) ), SGNCK(i←v23796), pd450);
         };
SOURCE(36780, 57)
      {
         word pd451;
         pd451 = (* (( (ptr) (*  (ptr) seg←v23696 ))+6) );
         (void) ( *( (fPt) ((*  (ptr) pd451 ))))(seg←v23696, lineTo←v71640, curveTo←v71668, conicTo←v71696, arcTo←v71724, pd451);
         };
      if (( (int)i←v23796 >=  (int)noName←c89764)) {
         goto lab←L100093;
         };
      i←v23796 = (i←v23796 + 1);
      goto lab←L100096;
      lab←L100093: ;
      };
   }

static word PatternProc←P6456(i←v23624, formal←c96804)
   word i←v23624;
   word formal←c96804;
   {
   word var←c23668;
   formal←c96804 = (formal←c96804 - 20);
   /* PatternProc: */ 
SOURCE(36851, 64)
SOURCE(36897, 18)
   {
      word limit452;
      return((* ((( (ptr) (* (( (ptr) formal←c96804)+9) ))+1)+(
            limit452 = (*  (ptr) (* (( (ptr) formal←c96804)+9) ) ),
            BCK(i←v23624, limit452)
            )) ));
      };
   }

static void DrawTraj←P1740(dc←v12128, formal←c01338)
   word dc←v12128;
   word formal←c01338;
   {
   W8 var←c96836;
   /* declaration of slice←v12156 skipped */ 
   register ptr gf←c96868 =  (ptr) &globalframe;
   /* declaration of var←c89796 skipped */ 
   /* declaration of trajData←v23868 skipped */ 
   var←c96836.f4/* slice←v12156 */  = formal←c01338;
   /* DrawTraj: */ 
SOURCE(37564, 606)
   {
      word tmpAddr453;
      tmpAddr453 = (word) (( (ptr) &var←c96836)+5)/* var←c89796 */ ;
      (*  (ptr) tmpAddr453 ) = ( ((word)  (fPt) DoDrawTraj←P6564) );
      (* (( (ptr) tmpAddr453) + 1) ) = 1;
      };
SOURCE(38034, 39)
   var←c96836.f7/* trajData←v23868 */  = XR←Narrow((* (( (ptr) var←c96836.f4/* slice←v12156 */ )+1) ), (* (( (ptr) gf←c96868)+10)
       ));
SOURCE(38075, 95)
   if ((0 != (word) AllStrokePropsAndColorsEqual←P2340(var←c96836.f4/* slice←v12156 */ ))) {
SOURCE(38119, 37)
      (void) DrawSingleStrokeTraj←P1680(dc←v12128, var←c96836.f4/* slice←v12156 */ );
      }
   else {
SOURCE(38156, 14)
      (void) DoDrawTraj←P6564(dc←v12128, (word) (( (bPt) &var←c96836)+20)/* var←c89796 */ );
      };
   }

static void DoDrawTraj←P6564(dc←v23944, formal←c96932)
   word dc←v23944;
   word formal←c96932;
   {
   register ptr gf←c96900 =  (ptr) &globalframe;
   word seg←v23972 = 0;
   word hiSegment←v24000;
   formal←c96932 = (formal←c96932 - 20);
   /* DoDrawTraj: */ 
SOURCE(37618, 399)
SOURCE(37674, 40)
   {
      word pd454;
      pd454 = (* (( (ptr) (* (( (ptr) gf←c96900)+161)/* var←c84516 */  ))+37) );
      hiSegment←v24000 = (word) ( *( (fPt) ((*  (ptr) pd454 ))))((* ((( (ptr) formal←c96932)+4)) ), pd454);
      };
SOURCE(37716, 47)
   {
      word pd455;
      pd455 = (* (( (ptr) (* (( (ptr) gf←c96900)+167)/* var←c86788 */  ))+70) );
      (void) ( *( (fPt) ((*  (ptr) pd455 ))))(dc←v23944, (* (( (ptr) (* (( (ptr) formal←c96932)+7) ))+6) ), pd455);
      };
SOURCE(37765, 252)
   {
      register word i←v24044 = 0;
      register word noName←c89828;
      noName←c89828 = hiSegment←v24000;
      if (( (int)i←v24044 >  (int)noName←c89828)) {
         goto lab←L100097;
         };
      lab←L100100: ;
SOURCE(37797, 35)
      {
         word pd456;
         pd456 = (* (( (ptr) (* (( (ptr) gf←c96900)+161)/* var←c84516 */  ))+29) );
         seg←v23972 = (word) ( *( (fPt) ((*  (ptr) pd456 ))))((* (( (ptr) formal←c96932)+4) ), SGNCK(i←v24044), pd456);
         };
SOURCE(37834, 183)
      {
         word x457;
         word x458;
         if ( ( ((
            x457 = (* (( (ptr) seg←v23972)+2) ),  *(float*)&x457
            ) != (
            x458 = (*  (ptr) &fc123 ),  *(float*)&x458
            )) ? ((* (( (ptr) seg←v23972)+8) ) != 0) : 0 ) ) {
SOURCE(37882, 42)
            {
               word pd459;
               pd459 = (* (( (ptr) (* (( (ptr) gf←c96900)+167)/* var←c86788 */  ))+68) );
               (void) ( *( (fPt) ((*  (ptr) pd459 ))))(dc←v23944, (* (( (ptr) seg←v23972)+2) ), pd459);
               };
SOURCE(37926, 38)
            {
               word pd460;
               pd460 = (* (( (ptr) (* (( (ptr) gf←c96900)+167)/* var←c86788 */  ))+69) );
               (void) ( *( (fPt) ((*  (ptr) pd460 ))))(dc←v23944, (* (( (ptr) seg←v23972)+3) ), pd460);
               };
SOURCE(37966, 30)
            {
               word pd461;
               pd461 = (* (( (ptr) (* (( (ptr) gf←c96900)+167)/* var←c86788 */  ))+52) );
               (void) ( *( (fPt) ((*  (ptr) pd461 ))))(dc←v23944, (* (( (ptr) seg←v23972)+8) ), pd461);
               };
SOURCE(37998, 19)
            (void) MaskStroke←P2220(dc←v23944, seg←v23972);
            };
         };
      if (( (int)i←v24044 >=  (int)noName←c89828)) {
         goto lab←L100097;
         };
      i←v24044 = (i←v24044 + 1);
      goto lab←L100100;
      lab←L100097: ;
      };
   }

static void DrawSingleStrokeTrajSeq←P1800(dc←v12216, formal←c01339, parts←v12272)
   word dc←v12216;
   word formal←c01339;
   word parts←v12272;
   {
   W11 var←c96964;
   /* declaration of slice←v12244 skipped */ 
   register ptr gf←c96996 =  (ptr) &globalframe;
   /* declaration of var←c89860 skipped */ 
   /* declaration of var←c89892 skipped */ 
   word trajData←v24144;
   /* declaration of trajParts←v24172 skipped */ 
   word firstSeg←v24200;
   /* declaration of pattern←v24228 skipped */ 
   (* (( (ptr) &var←c96964)+4)/* slice←v12244 */  ) = formal←c01339;
   /* DrawSingleStrokeTrajSeq: */ 
SOURCE(38201, 1077)
   {
      word tmpAddr462;
      tmpAddr462 = (word) (( (ptr) &var←c96964)+5)/* var←c89860 */ ;
      (*  (ptr) tmpAddr462 ) = ( ((word)  (fPt) PatternProc←P6732) );
      (* (( (ptr) tmpAddr462) + 1) ) = 1;
      };
   {
      word tmpAddr463;
      tmpAddr463 = (word) (( (ptr) &var←c96964)+7)/* var←c89892 */ ;
      (*  (ptr) tmpAddr463 ) = ( ((word)  (fPt) BuildPath←P6672) );
      (* (( (ptr) tmpAddr463) + 1) ) = 1;
      };
SOURCE(38654, 39)
   trajData←v24144 = XR←Narrow((* (( (ptr) (* (( (ptr) &var←c96964)+4)/* slice←v12244 */  ))+1) ), (* (( (ptr) gf←c96996)+10)
       ));
SOURCE(38695, 36)
   (* (( (ptr) &var←c96964)+9)/* trajParts←v24172 */  ) = XR←Narrow(parts←v12272, (* (( (ptr) gf←c96996)+15) ));
SOURCE(38733, 49)
   {
      word pd464;
      pd464 = (* (( (ptr) (* (( (ptr) gf←c96996)+161)/* var←c84516 */  ))+29) );
      firstSeg←v24200 = (word) ( *( (fPt) ((*  (ptr) pd464 ))))((* (( (ptr) &var←c96964)+4)/* slice←v12244 */  ), 0, pd464);
      };
SOURCE(38784, 42)
   (* (( (ptr) &var←c96964)+10)/* pattern←v24228 */  ) = (* (( (ptr) firstSeg←v24200)+5) );
SOURCE(38828, 61)
   {
      word x465;
      word x466;
      if (((
         x465 = (* (( (ptr) firstSeg←v24200)+2) ),  *(float*)&x465
         ) == (
         x466 = (*  (ptr) &fc123 ),  *(float*)&x466
         )) || ((* (( (ptr) firstSeg←v24200)+8) ) == 0)) {
SOURCE(38883, 6)
         return;
         };
      };
SOURCE(38891, 47)
   {
      word pd467;
      pd467 = (* (( (ptr) (* (( (ptr) gf←c96996)+167)/* var←c86788 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd467 ))))(dc←v12216, (* (( (ptr) firstSeg←v24200)+2) ), pd467);
      };
SOURCE(38940, 43)
   {
      word pd468;
      pd468 = (* (( (ptr) (* (( (ptr) gf←c96996)+167)/* var←c86788 */  ))+69) );
      (void) ( *( (fPt) ((*  (ptr) pd468 ))))(dc←v12216, (* (( (ptr) firstSeg←v24200)+3) ), pd468);
      };
SOURCE(38985, 47)
   {
      word pd469;
      pd469 = (* (( (ptr) (* (( (ptr) gf←c96996)+167)/* var←c86788 */  ))+70) );
      (void) ( *( (fPt) ((*  (ptr) pd469 ))))(dc←v12216, (* (( (ptr) trajData←v24144)+6) ), pd469);
      };
SOURCE(39034, 35)
   {
      word pd470;
      pd470 = (* (( (ptr) (* (( (ptr) gf←c96996)+167)/* var←c86788 */  ))+52) );
      (void) ( *( (fPt) ((*  (ptr) pd470 ))))(dc←v12216, (* (( (ptr) firstSeg←v24200)+8) ), pd470);
      };
SOURCE(39071, 207)
   if ((0 != (* (( (ptr) firstSeg←v24200)+4) ))) {
SOURCE(39095, 104)
      {
         word pd471;
         pd471 = (* (( (ptr) (* (( (ptr) gf←c96996)+167)/* var←c86788 */  ))+75) );
         (void) ( *( (fPt) ((*  (ptr) pd471 ))))(dc←v12216, (word) (( (bPt) &var←c96964)+28)/* var←c89892 */ , (*  (ptr) (* (( (ptr) &var←c96964)+10)
            /* pattern←v24228 */  ) ), (word) (( (bPt) &var←c96964)+20)/* var←c89860 */ , (* (( (ptr) firstSeg←v24200)+6) ), (* (( (ptr) firstSeg←v24200)+7)
             ), pd471);
         };
      }
   else {
SOURCE(39199, 79)
      {
         word pd472;
         pd472 = (* (( (ptr) (* (( (ptr) gf←c96996)+167)/* var←c86788 */  ))+71) );
         (void) ( *( (fPt) ((*  (ptr) pd472 ))))(dc←v12216, (word) (( (bPt) &var←c96964)+28)/* var←c89892 */ ,  (unsigned)  ( ((*  (ptr) trajData←v24144 ) == 0) ? 1 : ((*  (ptr) trajData←v24144 ) == 1) ) , pd472)
         ;
         };
      };
   }

static void BuildPath←P6672(moveTo←v71784, lineTo←v71812, curveTo←v71840, conicTo←v71868, arcTo←v71896, formal←c97060)
   word moveTo←v71784;
   word lineTo←v71812;
   word curveTo←v71840;
   word conicTo←v71868;
   word arcTo←v71896;
   word formal←c97060;
   {
   register ptr gf←c97028 =  (ptr) &globalframe;
   word hiSegment←v24376;
   formal←c97060 = (formal←c97060 - 28);
   /* BuildPath: */ 
SOURCE(38295, 273)
SOURCE(38326, 40)
   {
      word pd473;
      pd473 = (* (( (ptr) (* (( (ptr) gf←c97028)+161)/* var←c84516 */  ))+37) );
      hiSegment←v24376 = (word) ( *( (fPt) ((*  (ptr) pd473 ))))((* ((( (ptr) formal←c97060)+4)) ), pd473);
      };
SOURCE(38368, 200)
   {
      register word i←v24420 = 0;
      register word noName←c89924;
      word var←c89956;
      noName←c89924 = hiSegment←v24376;
      if (( (int)i←v24420 >  (int)noName←c89924)) {
         goto lab←L100101;
         };
      lab←L100104: ;
SOURCE(38400, 168)
      {
         word limit475;
         if (((* (( (ptr) formal←c97060)+9) ) == 0)) { goto then0474;};
         var←c89956 = (*  (ptr) (* (( (ptr) formal←c97060)+9) ) );
         if (XR←ExtractField(var←c89956, 32 + (word) (
               limit475 = (*  (ptr) var←c89956 ),
               BCK(i←v24420, limit475)
               ), 1)) {
            then0474: ;
SOURCE(38447, 123)
            {
               word seg←v24464;
SOURCE(38449, 44)
               {
                  word pd476;
                  pd476 = (* (( (ptr) (* (( (ptr) gf←c97028)+161)/* var←c84516 */  ))+29) );
                  seg←v24464 = (word) ( *( (fPt) ((*  (ptr) pd476 ))))((* (( (ptr) formal←c97060)+4) ), SGNCK(i←v24420), pd476);
                  };
SOURCE(38495, 14)
               (void) ( *( (fPt) ((*  (ptr) moveTo←v71784 ))))((*  (W2Pt) ((( (ptr) seg←v24464)+9)) ), moveTo←v71784);
SOURCE(38511, 57)
               {
                  word pd477;
                  pd477 = (* (( (ptr) (*  (ptr) seg←v24464 ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd477 ))))(seg←v24464, lineTo←v71812, curveTo←v71840, conicTo←v71868, arcTo←v71896, pd477);
                  };
               };
            };
         };
      if (( (int)i←v24420 >=  (int)noName←c89924)) {
         goto lab←L100101;
         };
      i←v24420 = (i←v24420 + 1);
      goto lab←L100104;
      lab←L100101: ;
      };
   }

static word PatternProc←P6732(i←v24304, formal←c97092)
   word i←v24304;
   word formal←c97092;
   {
   word var←c24348;
   formal←c97092 = (formal←c97092 - 20);
   /* PatternProc: */ 
SOURCE(38585, 64)
SOURCE(38631, 18)
   {
      word limit478;
      return((* ((( (ptr) (* (( (ptr) formal←c97092)+10) ))+1)+(
            limit478 = (*  (ptr) (* (( (ptr) formal←c97092)+10) ) ),
            BCK(i←v24304, limit478)
            )) ));
      };
   }

static void DrawCpsAndJoints←P1860(dc←v12332, seg←v12360, camera←v12388, selSeq←v12416, segNum←v12444, editConstraints←v12472)
   word dc←v12332;
   word seg←v12360;
   word camera←v12388;
   word selSeq←v12416;
   word segNum←v12444;
   word editConstraints←v12472;
   {
   register ptr gf←c97124 =  (ptr) &globalframe;
   W2 point←v24508;
   /* DrawCpsAndJoints: */ 
SOURCE(39284, 512)
SOURCE(39460, 46)
   {
      word pd479;
      pd479 = (* (( (ptr) (* (( (ptr) gf←c97124)+168)/* var←c87012 */  ))+18) );
      (void) ( *( (fPt) ((*  (ptr) pd479 ))))(dc←v12332, (*  (W2Pt) (( (ptr) seg←v12360)+9) ), (* (( (ptr) camera←v12388)+4) ), pd479)
      ;
      };
SOURCE(39508, 46)
   {
      word pd480;
      pd480 = (* (( (ptr) (* (( (ptr) gf←c97124)+168)/* var←c87012 */  ))+18) );
      (void) ( *( (fPt) ((*  (ptr) pd480 ))))(dc←v12332, (*  (W2Pt) (( (ptr) seg←v12360)+11) ), (* (( (ptr) camera←v12388)+4) ), pd480)
      ;
      };
SOURCE(39556, 240)
   {
      register word j←v24552 = 0;
      register word noName←c89988;
      {
         word pd481;
         pd481 = (* (( (ptr) (*  (ptr) seg←v12360 ))+17) );
         noName←c89988 = (word) ( *( (fPt) ((*  (ptr) pd481 ))))(seg←v12360, pd481);
         };
      if (( (int)j←v24552 >=  (int)noName←c89988)) {
         goto lab←L100105;
         };
      lab←L100108: ;
SOURCE(39610, 186)
      {
         word pd483;
         if ((editConstraints←v12472 == 0)) { goto then0482;};
         pd483 = (* (( (ptr) (* (( (ptr) gf←c97124)+159)/* var←c84100 */  ))+27) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd483 ))))(selSeq←v12416, segNum←v12444, SGNCK(j←v24552), editConstraints←v12472, pd483)
         )) {
            then0482: ;
SOURCE(39711, 41)
            {
               word pd484;
               pd484 = (* (( (ptr) (*  (ptr) seg←v12360 ))+16) );
               (void) ( *( (fPt) ((*  (ptr) pd484 ))))((word) &point←v24508, seg←v12360, SGNCK(j←v24552), pd484);
               };
SOURCE(39754, 42)
            {
               word pd485;
               pd485 = (* (( (ptr) (* (( (ptr) gf←c97124)+168)/* var←c87012 */  ))+19) );
               (void) ( *( (fPt) ((*  (ptr) pd485 ))))(dc←v12332, point←v24508, (* (( (ptr) camera←v12388)+4) ), pd485);
               };
            };
         };
      j←v24552 = (j←v24552 + 1);
      if (( (int)j←v24552 <  (int)noName←c89988)) {
         goto lab←L100108;
         };
      lab←L100105: ;
      };
   }

static void EnlargeByCpsAndJoints←P1920(box←v12532, seg←v12560, camera←v12588, selSeq←v12616, segNum←v12644, editConstraints←v12672)
   word box←v12532;
   word seg←v12560;
   word camera←v12588;
   word selSeq←v12616;
   word segNum←v12644;
   word editConstraints←v12672;
   {
   register ptr gf←c97156 =  (ptr) &globalframe;
   W2 point←v24596;
   /* EnlargeByCpsAndJoints: */ 
SOURCE(39814, 492)
SOURCE(39990, 38)
   {
      word pd486;
      pd486 = (* (( (ptr) (* (( (ptr) gf←c97156)+158)/* var←c84068 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd486 ))))(box←v12532, (*  (W2Pt) (( (ptr) seg←v12560)+9) ), pd486);
      };
SOURCE(40030, 38)
   {
      word pd487;
      pd487 = (* (( (ptr) (* (( (ptr) gf←c97156)+158)/* var←c84068 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd487 ))))(box←v12532, (*  (W2Pt) (( (ptr) seg←v12560)+11) ), pd487);
      };
SOURCE(40070, 236)
   {
      register word j←v24640 = 0;
      register word noName←c90020;
      {
         word pd488;
         pd488 = (* (( (ptr) (*  (ptr) seg←v12560 ))+17) );
         noName←c90020 = (word) ( *( (fPt) ((*  (ptr) pd488 ))))(seg←v12560, pd488);
         };
      if (( (int)j←v24640 >=  (int)noName←c90020)) {
         goto lab←L100109;
         };
      lab←L100112: ;
SOURCE(40125, 181)
      {
         word pd490;
         if ((editConstraints←v12672 == 0)) { goto then0489;};
         pd490 = (* (( (ptr) (* (( (ptr) gf←c97156)+159)/* var←c84100 */  ))+27) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd490 ))))(selSeq←v12616, segNum←v12644, SGNCK(j←v24640), editConstraints←v12672, pd490)
         )) {
            then0489: ;
SOURCE(40226, 41)
            {
               word pd491;
               pd491 = (* (( (ptr) (*  (ptr) seg←v12560 ))+16) );
               (void) ( *( (fPt) ((*  (ptr) pd491 ))))((word) &point←v24596, seg←v12560, SGNCK(j←v24640), pd491);
               };
SOURCE(40269, 37)
            {
               word pd492;
               pd492 = (* (( (ptr) (* (( (ptr) gf←c97156)+158)/* var←c84068 */  ))+15) );
               (void) ( *( (fPt) ((*  (ptr) pd492 ))))(box←v12532, point←v24596, pd492);
               };
            };
         };
      j←v24640 = (j←v24640 + 1);
      if (( (int)j←v24640 <  (int)noName←c90020)) {
         goto lab←L100112;
         };
      lab←L100109: ;
      };
   }

static void TrajSaveSelections←P1980(slice←v12732, parts←v12760, selectClass←v12788)
   word slice←v12732;
   word parts←v12760;
   word selectClass←v12788;
   {
   register ptr gf←c97188 =  (ptr) &globalframe;
   word trajParts←v24684;
   /* TrajSaveSelections: */ 
SOURCE(40324, 257)
SOURCE(40416, 36)
   trajParts←v24684 = XR←Narrow(parts←v12760, (* (( (ptr) gf←c97188)+15) ));
SOURCE(40454, 127)
   if ((trajParts←v24684 == 0)) {
SOURCE(40476, 47)
      {
         word pd493;
         pd493 = (* (( (ptr) (* (( (ptr) gf←c97188)+161)/* var←c84516 */  ))+49) );
         (void) ( *( (fPt) ((*  (ptr) pd493 ))))(slice←v12732, selectClass←v12788, pd493);
         };
      }
   else {
SOURCE(40523, 58)
      {
         word pd494;
         pd494 = (* (( (ptr) (* (( (ptr) gf←c97188)+161)/* var←c84516 */  ))+48) );
         (void) ( *( (fPt) ((*  (ptr) pd494 ))))(slice←v12732, trajParts←v24684, selectClass←v12788, pd494);
         };
      };
   }

static word TrajRemakeSelections←P2040(slice←v12848, selectClass←v12876)
   word slice←v12848;
   word selectClass←v12876;
   {
   register ptr gf←c97220 =  (ptr) &globalframe;
   word parts←v12920;
   /* TrajRemakeSelections: */ 
SOURCE(40587, 153)
SOURCE(40587, 153)
   parts←v12920 = 0;
SOURCE(40690, 50)
   {
      word pd495;
      pd495 = (* (( (ptr) (* (( (ptr) gf←c97220)+161)/* var←c84516 */  ))+51) );
      return((word) ( *( (fPt) ((*  (ptr) pd495 ))))(slice←v12848, selectClass←v12876, pd495));
      };
   }

static word DrawConstrained←P2100(dc←v12980, slice←v13008, transformParts←v13036, segNum←v13064, seg←v13092, transform←v13120, entire←v13148, lo←v13176, hi←v13204, controlPoints←v13232, editConstraints←v13260, lineTo←v13288, curveTo←v13316, conicTo←v13344, arcTo←v13372)
   word dc←v12980;
   word slice←v13008;
   word transformParts←v13036;
   word segNum←v13064;
   word seg←v13092;
   word transform←v13120;
   word entire←v13148;
   word lo←v13176;
   word hi←v13204;
   word controlPoints←v13232;
   word editConstraints←v13260;
   word lineTo←v13288;
   word curveTo←v13316;
   word conicTo←v13344;
   word arcTo←v13372;
   {
   register ptr gf←c97252 =  (ptr) &globalframe;
   word cPointsInSeg←v13416;
   /* DrawConstrained: */ 
SOURCE(40747, 6123)
SOURCE(40747, 6123)
   cPointsInSeg←v13416 = 0;
SOURCE(41114, 5756)
   if ((0 != entire←v13148)) {
SOURCE(41129, 114)
      {
         word pd496;
         pd496 = (* (( (ptr) (*  (ptr) seg←v13092 ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd496 ))))(seg←v13092, transform←v13120, entire←v13148, lo←v13176, hi←v13204, controlPoints←v13232
            , lineTo←v13288, curveTo←v13316, conicTo←v13344, arcTo←v13372, pd496);
         };
      }
   else {
SOURCE(41243, 5629)
      {
         word selSeq←v24728;
         W2 dirVec←v24756;
         W2 newJoint←v24784;
         word distance←v24812;
         word partialTransform←v24840 = 0;
         word ctrlLoTrans←v24868 = 0;
         word ctrlHiTrans←v24896 = 0;
         W2 ctrlPoint←v24924;
         word ctrlPoints←v24952;
SOURCE(41245, 42)
         selSeq←v24728 = XR←Narrow(transformParts←v13036, (* (( (ptr) gf←c97252)+15) ));
SOURCE(41416, 57)
         ctrlPoints←v24952 = XR←NewObject(8, (* (( (ptr) gf←c97252)+21) ));
         (*  (ptr) ctrlPoints←v24952 ) = 2;
SOURCE(41475, 32)
         {
            word limit497;
            word limit498;
            word xs499;
            word x500;
            xs499 = (word) (
               limit498 = (*  (ptr) ctrlPoints←v24952 ),
               BCK(0, limit498)
               );
            x500 = (word) ((( (bPt) ctrlPoints←v24952)+4) + ((word) xs499 >> 3));
            xs499 = 8 - ((word) (xs499 & 7)+1);
            (*  (bPt) x500 ) = ((*  (bPt) x500 ) & ( ~ ((unsigned) 1 << xs499))) | (((XR←ExtractField(controlPoints←v13232, 32 + (word) (
                        limit497 = (*  (ptr) controlPoints←v13232 ),
                        BCK(0, limit497)
                        ), 1))) << xs499);
            };
SOURCE(41509, 32)
         {
            word limit501;
            word limit502;
            word xs503;
            word x504;
            xs503 = (word) (
               limit502 = (*  (ptr) ctrlPoints←v24952 ),
               BCK(1, limit502)
               );
            x504 = (word) ((( (bPt) ctrlPoints←v24952)+4) + ((word) xs503 >> 3));
            xs503 = 8 - ((word) (xs503 & 7)+1);
            (*  (bPt) x504 ) = ((*  (bPt) x504 ) & ( ~ ((unsigned) 1 << xs503))) | (((XR←ExtractField(controlPoints←v13232, 32 + (word) (
                        limit501 = (*  (ptr) controlPoints←v13232 ),
                        BCK(1, limit501)
                        ), 1))) << xs503);
            };
SOURCE(41543, 62)
         {
            word limit505;
            if (XR←ExtractField(ctrlPoints←v24952, 32 + (word) (
                  limit505 = (*  (ptr) ctrlPoints←v24952 ),
                  BCK(0, limit505)
                  ), 1)) {
               ctrlLoTrans←v24868 = transform←v13120;
               }
            else {
               ctrlLoTrans←v24868 = (* (( (ptr) gf←c97252)+6)/* idTransform←v7144 */  );
               };
            };
SOURCE(41607, 62)
         {
            word limit506;
            if (XR←ExtractField(ctrlPoints←v24952, 32 + (word) (
                  limit506 = (*  (ptr) ctrlPoints←v24952 ),
                  BCK(1, limit506)
                  ), 1)) {
               ctrlHiTrans←v24896 = transform←v13120;
               }
            else {
               ctrlHiTrans←v24896 = (* (( (ptr) gf←c97252)+6)/* idTransform←v7144 */  );
               };
            };
SOURCE(41671, 694)
         {
            word tc507;
            word limit508;
            if ((0 != lo←v13176)) {
               tc507 =  (word)  ! XR←ExtractField(ctrlPoints←v24952, 32 + (word) (
                     limit508 = (*  (ptr) ctrlPoints←v24952 ),
                     BCK(0, limit508)
                     ), 1);
               }
            else {
               tc507 =  (word) 0;
               };
            if (tc507) {
SOURCE(41729, 45)
               {
                  word pd509;
                  pd509 = (* (( (ptr) (*  (ptr) seg←v13092 ))+16) );
                  (void) ( *( (fPt) ((*  (ptr) pd509 ))))((word) &ctrlPoint←v24924, seg←v13092, 0, pd509);
                  };
SOURCE(41776, 20)
               {
                  word limit510;
                  word xs511;
                  xs511 = (word) (
                     limit510 = (*  (ptr) ctrlPoints←v24952 ),
                     BCK(0, limit510)
                     );
                  (*  (bPt) ((( (bPt) ctrlPoints←v24952)+4) + ((word) xs511 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs511 & 7)+1));
                  };
SOURCE(41798, 60)
               {
                  word pd512;
                  pd512 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+39) );
                  (void) ( *( (fPt) ((*  (ptr) pd512 ))))((word) &newJoint←v24784, transform←v13120, (*  (W2Pt) (( (ptr) seg←v13092)+9) ), pd512)
                  ;
                  };
SOURCE(41860, 98)
               {
                  W2 var←c90116;
                  {
                     word pd513;
                     pd513 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
                     (void) ( *( (fPt) ((*  (ptr) pd513 ))))((word) &var←c90116, ctrlPoint←v24924, newJoint←v24784, pd513);
                     };
                  {
                     word pd514;
                     pd514 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+10) );
                     partialTransform←v24840 = (word) ( *( (fPt) ((*  (ptr) pd514 ))))(var←c90116, pd514);
                     };
                  };
SOURCE(41960, 54)
               {
                  word pd515;
                  pd515 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
                  (void) ( *( (fPt) ((*  (ptr) pd515 ))))((word) &dirVec←v24756, (*  (W2Pt) (( (ptr) seg←v13092)+9) ), ctrlPoint←v24924, pd515)
                  ;
                  };
SOURCE(42016, 349)
               if ((editConstraints←v13260 == 1)) {
                  {
                     W2 var←c90148;
SOURCE(42052, 50)
                     {
                        word pd516;
                        pd516 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+19) );
                        distance←v24812 = (word) ( *( (fPt) ((*  (ptr) pd516 ))))(newJoint←v24784, ctrlPoint←v24924, pd516);
                        };
SOURCE(42104, 59)
                     var←c90148.f0 = (*  (ptr) &fc123 );
                     var←c90148.f1 = (*  (ptr) &fc123 );
                     if ( ! XR←EqualWords(&dirVec←v24756, &var←c90148, 2)) {
SOURCE(42127, 36)
                        {
                           word pd517;
                           pd517 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+13) );
                           (void) ( *( (fPt) ((*  (ptr) pd517 ))))((word) &dirVec←v24756, dirVec←v24756, pd517);
                           };
                        };
SOURCE(42182, 100)
                     {
                        W2 var←c90180;
                        {
                           word pd518;
                           pd518 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+12) );
                           (void) ( *( (fPt) ((*  (ptr) pd518 ))))((word) &var←c90180, dirVec←v24756, distance←v24812, pd518);
                           };
                        {
                           word pd519;
                           pd519 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+22) );
                           ctrlLoTrans←v24868 = (word) ( *( (fPt) ((*  (ptr) pd519 ))))(partialTransform←v24840, var←c90180, pd519);
                           };
                        };
                     };
                  }
               else {
SOURCE(42291, 74)
                  {
                     word pd520;
                     pd520 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+22) );
                     ctrlLoTrans←v24868 = (word) ( *( (fPt) ((*  (ptr) pd520 ))))(partialTransform←v24840, dirVec←v24756, pd520);
                     };
                  };
               };
            };
SOURCE(42371, 695)
         {
            word tc521;
            word limit522;
            if ((0 != hi←v13204)) {
               tc521 =  (word)  ! XR←ExtractField(ctrlPoints←v24952, 32 + (word) (
                     limit522 = (*  (ptr) ctrlPoints←v24952 ),
                     BCK(1, limit522)
                     ), 1);
               }
            else {
               tc521 =  (word) 0;
               };
            if (tc521) {
SOURCE(42430, 45)
               {
                  word pd523;
                  pd523 = (* (( (ptr) (*  (ptr) seg←v13092 ))+16) );
                  (void) ( *( (fPt) ((*  (ptr) pd523 ))))((word) &ctrlPoint←v24924, seg←v13092, 1, pd523);
                  };
SOURCE(42477, 20)
               {
                  word limit524;
                  word xs525;
                  xs525 = (word) (
                     limit524 = (*  (ptr) ctrlPoints←v24952 ),
                     BCK(1, limit524)
                     );
                  (*  (bPt) ((( (bPt) ctrlPoints←v24952)+4) + ((word) xs525 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs525 & 7)+1));
                  };
SOURCE(42499, 60)
               {
                  word pd526;
                  pd526 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+39) );
                  (void) ( *( (fPt) ((*  (ptr) pd526 ))))((word) &newJoint←v24784, transform←v13120, (*  (W2Pt) (( (ptr) seg←v13092)+11) ), pd526)
                  ;
                  };
SOURCE(42561, 98)
               {
                  W2 var←c90212;
                  {
                     word pd527;
                     pd527 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
                     (void) ( *( (fPt) ((*  (ptr) pd527 ))))((word) &var←c90212, ctrlPoint←v24924, newJoint←v24784, pd527);
                     };
                  {
                     word pd528;
                     pd528 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+10) );
                     partialTransform←v24840 = (word) ( *( (fPt) ((*  (ptr) pd528 ))))(var←c90212, pd528);
                     };
                  };
SOURCE(42661, 54)
               {
                  word pd529;
                  pd529 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
                  (void) ( *( (fPt) ((*  (ptr) pd529 ))))((word) &dirVec←v24756, (*  (W2Pt) (( (ptr) seg←v13092)+11) ), ctrlPoint←v24924, pd529)
                  ;
                  };
SOURCE(42717, 349)
               if ((editConstraints←v13260 == 1)) {
                  {
                     W2 var←c90244;
SOURCE(42753, 50)
                     {
                        word pd530;
                        pd530 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+19) );
                        distance←v24812 = (word) ( *( (fPt) ((*  (ptr) pd530 ))))(newJoint←v24784, ctrlPoint←v24924, pd530);
                        };
SOURCE(42805, 59)
                     var←c90244.f0 = (*  (ptr) &fc123 );
                     var←c90244.f1 = (*  (ptr) &fc123 );
                     if ( ! XR←EqualWords(&dirVec←v24756, &var←c90244, 2)) {
SOURCE(42828, 36)
                        {
                           word pd531;
                           pd531 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+13) );
                           (void) ( *( (fPt) ((*  (ptr) pd531 ))))((word) &dirVec←v24756, dirVec←v24756, pd531);
                           };
                        };
SOURCE(42883, 100)
                     {
                        W2 var←c90276;
                        {
                           word pd532;
                           pd532 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+12) );
                           (void) ( *( (fPt) ((*  (ptr) pd532 ))))((word) &var←c90276, dirVec←v24756, distance←v24812, pd532);
                           };
                        {
                           word pd533;
                           pd533 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+22) );
                           ctrlHiTrans←v24896 = (word) ( *( (fPt) ((*  (ptr) pd533 ))))(partialTransform←v24840, var←c90276, pd533);
                           };
                        };
                     };
                  }
               else {
SOURCE(42992, 74)
                  {
                     word pd534;
                     pd534 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+22) );
                     ctrlHiTrans←v24896 = (word) ( *( (fPt) ((*  (ptr) pd534 ))))(partialTransform←v24840, dirVec←v24756, pd534);
                     };
                  };
               };
            };
SOURCE(43073, 1539)
         {
            word tc535;
            word limit536;
            if ( ! XR←ExtractField(ctrlPoints←v24952, 32 + (word) (
                  limit536 = (*  (ptr) ctrlPoints←v24952 ),
                  BCK(0, limit536)
                  ), 1)) {
               tc535 =  (word) (0 == lo←v13176);
               }
            else {
               tc535 =  (word) 0;
               };
            if (tc535) {
SOURCE(43110, 1543)
               {
                  word prevSegNum←v24996;
                  word var←c90340;
SOURCE(43112, 58)
                  {
                     word pd537;
                     pd537 = (* (( (ptr) (* (( (ptr) gf←c97252)+161)/* var←c84516 */  ))+42) );
                     prevSegNum←v24996 = (word) ( *( (fPt) ((*  (ptr) pd537 ))))(slice←v13008, segNum←v13064, pd537);
                     };
SOURCE(43172, 1440)
                  {
                     word tc538;
                     word pd539;
                     if (( (int)prevSegNum←v24996 !=  (int) (word) -1)) {
                        pd539 = (* (( (ptr) (* (( (ptr) gf←c97252)+161)/* var←c84516 */  ))+29) );
                        tc538 =  (word) ((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd539 ))))(slice←v13008, SGNCK(prevSegNum←v24996), pd539) ) ) == (* (
                           ( (ptr) gf←c97252)+27) ));
                        }
                     else {
                        tc538 =  (word) 0;
                        };
                     if (tc538) {
SOURCE(43264, 1348)
                        {
                           word limit541;
                           {
/*1*/   word var←c90308;
/*1*/   var←c90308 = (* (( (ptr) selSeq←v24728)+2) );
/*1*/   {
/*1*/      word limit540;
/*1*/      var←c90340 = (* ((( (ptr) var←c90308)+1)+(
/*1*/            limit540 = (*  (ptr) var←c90308 ),
/*1*/            BCK(prevSegNum←v24996, limit540)
/*1*/            )) );
/*1*/      };
/*1*/   };
                           if (XR←ExtractField(var←c90340, 32 + (word) (
/*1*/      limit541 = (*  (ptr) var←c90340 ),
/*1*/      BCK(1, limit541)
/*1*/      ), 1)) {
SOURCE(43308, 1339)
/*1*/   {
/*1*/      word angle←v25040;
/*1*/      W2 transformedPoint←v25068;
/*1*/      W2 otherCtrlPoint←v25096;
/*1*/      W2 otherDirVector←v25124;
/*1*/      W2 var←c90468;
/*1*/      W2 var←c90564;
SOURCE(43348, 92)
/*1*/      {
/*1*/         word var←c90372;
/*1*/         {
/*1*/            word pd542;
/*1*/            pd542 = (* (( (ptr) (* (( (ptr) gf←c97252)+161)/* var←c84516 */  ))+29) );
/*1*/            var←c90372 = (word) ( *( (fPt) ((*  (ptr) pd542 ))))(slice←v13008, SGNCK(prevSegNum←v24996), pd542);
/*1*/            };
/*1*/         {
/*1*/            word pd543;
/*1*/            pd543 = (* (( (ptr) (*  (ptr) seg←v13092 ))+16) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd543 ))))((word) &otherCtrlPoint←v25096, var←c90372, 1, pd543);
/*1*/            };
/*1*/         };
SOURCE(43442, 75)
/*1*/      {
/*1*/         word pd544;
/*1*/         pd544 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd544 ))))((word) &otherDirVector←v25124, (*  (W2Pt) (( (ptr) seg←v13092)+9) ), otherCtrlPoint←v25096, pd544)
/*1*/         ;
/*1*/         };
SOURCE(43519, 45)
/*1*/      {
/*1*/         word pd545;
/*1*/         pd545 = (* (( (ptr) (*  (ptr) seg←v13092 ))+16) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd545 ))))((word) &ctrlPoint←v24924, seg←v13092, 0, pd545);
/*1*/         };
SOURCE(43566, 54)
/*1*/      {
/*1*/         word pd546;
/*1*/         pd546 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd546 ))))((word) &dirVec←v24756, (*  (W2Pt) (( (ptr) seg←v13092)+9) ), ctrlPoint←v24924, pd546)
/*1*/         ;
/*1*/         };
SOURCE(43622, 38)
/*1*/      {
/*1*/         word pd547;
/*1*/         pd547 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+18) );
/*1*/         distance←v24812 = (word) ( *( (fPt) ((*  (ptr) pd547 ))))(dirVec←v24756, pd547);
/*1*/         };
SOURCE(43662, 76)
/*1*/      {
/*1*/         word pd548;
/*1*/         pd548 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+39) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd548 ))))((word) &transformedPoint←v25068, transform←v13120, otherCtrlPoint←v25096, pd548);
/*1*/         };
SOURCE(43740, 115)
/*1*/      {
/*1*/         W2 var←c90404;
/*1*/         {
/*1*/            word pd549;
/*1*/            pd549 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd549 ))))((word) &var←c90404, (*  (W2Pt) (( (ptr) seg←v13092)+9) ), transformedPoint←v25068, pd549)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd550;
/*1*/            pd550 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+9) );
/*1*/            angle←v25040 = (word) ( *( (fPt) ((*  (ptr) pd550 ))))(otherDirVector←v25124, var←c90404, pd550);
/*1*/            };
/*1*/         };
SOURCE(43857, 96)
/*1*/      {
/*1*/         W2 var←c90436;
/*1*/         {
/*1*/            word pd551;
/*1*/            pd551 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd551 ))))((word) &var←c90436, ctrlPoint←v24924, (*  (W2Pt) (( (ptr) seg←v13092)+9) ), pd551)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd552;
/*1*/            pd552 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+10) );
/*1*/            partialTransform←v24840 = (word) ( *( (fPt) ((*  (ptr) pd552 ))))(var←c90436, pd552);
/*1*/            };
/*1*/         };
SOURCE(43955, 20)
/*1*/      {
/*1*/         word limit553;
/*1*/         word xs554;
/*1*/         xs554 = (word) (
/*1*/            limit553 = (*  (ptr) ctrlPoints←v24952 ),
/*1*/            BCK(0, limit553)
/*1*/            );
/*1*/         (*  (bPt) ((( (bPt) ctrlPoints←v24952)+4) + ((word) xs554 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs554 & 7)+1));
/*1*/         };
SOURCE(43978, 634)
/*1*/      if ((editConstraints←v13260 == 1)) {
SOURCE(44014, 245)
/*1*/         {
/*1*/            word tc555;
/*1*/            if ( ! XR←EqualWords(&transformedPoint←v25068, (( (ptr) seg←v13092)+9), 2)) {
/*1*/               var←c90468.f0 = (*  (ptr) &fc123 );
/*1*/               var←c90468.f1 = (*  (ptr) &fc123 );
/*1*/               tc555 =  (word)  ! XR←EqualWords(&otherDirVector←v25124, &var←c90468, 2);
/*1*/               }
/*1*/            else {
/*1*/               tc555 =  (word) 0;
/*1*/               };
/*1*/            if (tc555) {
SOURCE(44124, 135)
/*1*/               {
/*1*/                  W2 var←c90500;
/*1*/                  {
/*1*/                     W2 var←c90532;
/*1*/                     {
/*1*/                        word pd556;
/*1*/                        pd556 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+5) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd556 ))))((word) &var←c90532, dirVec←v24756, angle←v25040, pd556);
/*1*/                        };
/*1*/                     {
/*1*/                        W2 var←c0757;
/*1*/                        {
/*1*/                           word pd557;
/*1*/                           pd557 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+12) );
/*1*/                           (void) ( *( (fPt) ((*  (ptr) pd557 ))))((word) &var←c0757, var←c90532, distance←v24812, pd557);
/*1*/                           };
/*1*/                        var←c90500 = var←c0757;
/*1*/                        };
/*1*/                     };
/*1*/                  {
/*1*/                     word pd558;
/*1*/                     pd558 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+22) );
/*1*/                     ctrlLoTrans←v24868 = (word) ( *( (fPt) ((*  (ptr) pd558 ))))(partialTransform←v24840, var←c90500, pd558);
/*1*/                     };
/*1*/                  };
/*1*/               };
/*1*/            };
/*1*/         }
/*1*/      else {
SOURCE(44310, 302)
/*1*/         var←c90564.f0 = (*  (ptr) &fc123 );
/*1*/         var←c90564.f1 = (*  (ptr) &fc123 );
/*1*/         if ( ! XR←EqualWords(&otherDirVector←v25124, &var←c90564, 2)) {
SOURCE(44343, 132)
/*1*/            {
/*1*/               word var←c90596;
/*1*/               word var←c01271;
/*1*/               {
/*1*/                  word pd559;
/*1*/                  word x560;
/*1*/                  word pd561;
/*1*/                  word x562;
/*1*/                  pd559 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+21) );
/*1*/                  pd561 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+20) );
/*1*/                  *(float*)&var←c90596 = (
/*1*/                     x560 = (word) ( *( (fPt) ((*  (ptr) pd559 ))))((*  (W2Pt) (( (ptr) seg←v13092)+9) ), transformedPoint←v25068, pd559),  *(float*)&x560
/*1*/                     ) / (
/*1*/                     x562 = (word) ( *( (fPt) ((*  (ptr) pd561 ))))(otherDirVector←v25124, pd561),  *(float*)&x562
/*1*/                     );
/*1*/                  };
/*1*/               {
/*1*/                  word pd563;
/*1*/                  pd563 = (* (( (ptr) (* (( (ptr) gf←c97252)+166)/* var←c85540 */  ))+9) );
/*1*/                  var←c01271 = (word) ( *( (fPt) ((*  (ptr) pd563 ))))(var←c90596, pd563);
/*1*/                  };
/*1*/               {
/*1*/                  word x564;
/*1*/                  word x565;
/*1*/                  *(float*)&distance←v24812 = (
/*1*/                     x564 = var←c01271,  *(float*)&x564
/*1*/                     ) * (
/*1*/                     x565 = distance←v24812,  *(float*)&x565
/*1*/                     );
/*1*/                  };
/*1*/               };
SOURCE(44477, 135)
/*1*/            {
/*1*/               W2 var←c90628;
/*1*/               {
/*1*/                  W2 var←c90660;
/*1*/                  {
/*1*/                     word pd566;
/*1*/                     pd566 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+5) );
/*1*/                     (void) ( *( (fPt) ((*  (ptr) pd566 ))))((word) &var←c90660, dirVec←v24756, angle←v25040, pd566);
/*1*/                     };
/*1*/                  {
/*1*/                     W2 var←c0763;
/*1*/                     {
/*1*/                        word pd567;
/*1*/                        pd567 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+12) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd567 ))))((word) &var←c0763, var←c90660, distance←v24812, pd567);
/*1*/                        };
/*1*/                     var←c90628 = var←c0763;
/*1*/                     };
/*1*/                  };
/*1*/               {
/*1*/                  word pd568;
/*1*/                  pd568 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+22) );
/*1*/                  ctrlLoTrans←v24868 = (word) ( *( (fPt) ((*  (ptr) pd568 ))))(partialTransform←v24840, var←c90628, pd568);
/*1*/                  };
/*1*/               };
/*1*/            };
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
SOURCE(44657, 1538)
         {
            word tc569;
            word limit570;
            if ( ! XR←ExtractField(ctrlPoints←v24952, 32 + (word) (
                  limit570 = (*  (ptr) ctrlPoints←v24952 ),
                  BCK(1, limit570)
                  ), 1)) {
               tc569 =  (word) (0 == hi←v13204);
               }
            else {
               tc569 =  (word) 0;
               };
            if (tc569) {
SOURCE(44694, 1541)
               {
                  word nextSegNum←v25168;
                  word var←c90724;
SOURCE(44696, 59)
                  {
                     word pd571;
                     pd571 = (* (( (ptr) (* (( (ptr) gf←c97252)+161)/* var←c84516 */  ))+43) );
                     nextSegNum←v25168 = (word) ( *( (fPt) ((*  (ptr) pd571 ))))(slice←v13008, segNum←v13064, pd571);
                     };
SOURCE(44757, 1438)
                  {
                     word tc572;
                     word pd573;
                     if (( (int)nextSegNum←v25168 !=  (int) (word) -1)) {
                        pd573 = (* (( (ptr) (* (( (ptr) gf←c97252)+161)/* var←c84516 */  ))+29) );
                        tc572 =  (word) ((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd573 ))))(slice←v13008, SGNCK(nextSegNum←v25168), pd573) ) ) == (* (
                           ( (ptr) gf←c97252)+27) ));
                        }
                     else {
                        tc572 =  (word) 0;
                        };
                     if (tc572) {
SOURCE(44847, 1348)
                        {
                           word limit575;
                           {
/*1*/   word var←c90692;
/*1*/   var←c90692 = (* (( (ptr) selSeq←v24728)+2) );
/*1*/   {
/*1*/      word limit574;
/*1*/      var←c90724 = (* ((( (ptr) var←c90692)+1)+(
/*1*/            limit574 = (*  (ptr) var←c90692 ),
/*1*/            BCK(nextSegNum←v25168, limit574)
/*1*/            )) );
/*1*/      };
/*1*/   };
                           if (XR←ExtractField(var←c90724, 32 + (word) (
/*1*/      limit575 = (*  (ptr) var←c90724 ),
/*1*/      BCK(0, limit575)
/*1*/      ), 1)) {
SOURCE(44891, 1338)
/*1*/   {
/*1*/      word angle←v25212;
/*1*/      W2 transformedPoint←v25240;
/*1*/      W2 otherCtrlPoint←v25268;
/*1*/      W2 otherDirVector←v25296;
/*1*/      W2 var←c90852;
/*1*/      W2 var←c90948;
SOURCE(44931, 92)
/*1*/      {
/*1*/         word var←c90756;
/*1*/         {
/*1*/            word pd576;
/*1*/            pd576 = (* (( (ptr) (* (( (ptr) gf←c97252)+161)/* var←c84516 */  ))+29) );
/*1*/            var←c90756 = (word) ( *( (fPt) ((*  (ptr) pd576 ))))(slice←v13008, SGNCK(nextSegNum←v25168), pd576);
/*1*/            };
/*1*/         {
/*1*/            word pd577;
/*1*/            pd577 = (* (( (ptr) (*  (ptr) seg←v13092 ))+16) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd577 ))))((word) &otherCtrlPoint←v25268, var←c90756, 0, pd577);
/*1*/            };
/*1*/         };
SOURCE(45025, 75)
/*1*/      {
/*1*/         word pd578;
/*1*/         pd578 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd578 ))))((word) &otherDirVector←v25296, (*  (W2Pt) (( (ptr) seg←v13092)+11) ), otherCtrlPoint←v25268, pd578)
/*1*/         ;
/*1*/         };
SOURCE(45102, 45)
/*1*/      {
/*1*/         word pd579;
/*1*/         pd579 = (* (( (ptr) (*  (ptr) seg←v13092 ))+16) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd579 ))))((word) &ctrlPoint←v24924, seg←v13092, 1, pd579);
/*1*/         };
SOURCE(45149, 54)
/*1*/      {
/*1*/         word pd580;
/*1*/         pd580 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd580 ))))((word) &dirVec←v24756, (*  (W2Pt) (( (ptr) seg←v13092)+11) ), ctrlPoint←v24924, pd580)
/*1*/         ;
/*1*/         };
SOURCE(45205, 38)
/*1*/      {
/*1*/         word pd581;
/*1*/         pd581 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+18) );
/*1*/         distance←v24812 = (word) ( *( (fPt) ((*  (ptr) pd581 ))))(dirVec←v24756, pd581);
/*1*/         };
SOURCE(45245, 76)
/*1*/      {
/*1*/         word pd582;
/*1*/         pd582 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+39) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd582 ))))((word) &transformedPoint←v25240, transform←v13120, otherCtrlPoint←v25268, pd582);
/*1*/         };
SOURCE(45323, 115)
/*1*/      {
/*1*/         W2 var←c90788;
/*1*/         {
/*1*/            word pd583;
/*1*/            pd583 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd583 ))))((word) &var←c90788, (*  (W2Pt) (( (ptr) seg←v13092)+11) ), transformedPoint←v25240, pd583)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd584;
/*1*/            pd584 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+9) );
/*1*/            angle←v25212 = (word) ( *( (fPt) ((*  (ptr) pd584 ))))(otherDirVector←v25296, var←c90788, pd584);
/*1*/            };
/*1*/         };
SOURCE(45440, 96)
/*1*/      {
/*1*/         W2 var←c90820;
/*1*/         {
/*1*/            word pd585;
/*1*/            pd585 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd585 ))))((word) &var←c90820, ctrlPoint←v24924, (*  (W2Pt) (( (ptr) seg←v13092)+11) ), pd585)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd586;
/*1*/            pd586 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+10) );
/*1*/            partialTransform←v24840 = (word) ( *( (fPt) ((*  (ptr) pd586 ))))(var←c90820, pd586);
/*1*/            };
/*1*/         };
SOURCE(45538, 20)
/*1*/      {
/*1*/         word limit587;
/*1*/         word xs588;
/*1*/         xs588 = (word) (
/*1*/            limit587 = (*  (ptr) ctrlPoints←v24952 ),
/*1*/            BCK(1, limit587)
/*1*/            );
/*1*/         (*  (bPt) ((( (bPt) ctrlPoints←v24952)+4) + ((word) xs588 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs588 & 7)+1));
/*1*/         };
SOURCE(45561, 634)
/*1*/      if ((editConstraints←v13260 == 1)) {
SOURCE(45597, 245)
/*1*/         {
/*1*/            word tc589;
/*1*/            if ( ! XR←EqualWords(&transformedPoint←v25240, (( (ptr) seg←v13092)+11), 2)) {
/*1*/               var←c90852.f0 = (*  (ptr) &fc123 );
/*1*/               var←c90852.f1 = (*  (ptr) &fc123 );
/*1*/               tc589 =  (word)  ! XR←EqualWords(&otherDirVector←v25296, &var←c90852, 2);
/*1*/               }
/*1*/            else {
/*1*/               tc589 =  (word) 0;
/*1*/               };
/*1*/            if (tc589) {
SOURCE(45707, 135)
/*1*/               {
/*1*/                  W2 var←c90884;
/*1*/                  {
/*1*/                     W2 var←c90916;
/*1*/                     {
/*1*/                        word pd590;
/*1*/                        pd590 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+5) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd590 ))))((word) &var←c90916, dirVec←v24756, angle←v25212, pd590);
/*1*/                        };
/*1*/                     {
/*1*/                        W2 var←c0785;
/*1*/                        {
/*1*/                           word pd591;
/*1*/                           pd591 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+12) );
/*1*/                           (void) ( *( (fPt) ((*  (ptr) pd591 ))))((word) &var←c0785, var←c90916, distance←v24812, pd591);
/*1*/                           };
/*1*/                        var←c90884 = var←c0785;
/*1*/                        };
/*1*/                     };
/*1*/                  {
/*1*/                     word pd592;
/*1*/                     pd592 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+22) );
/*1*/                     ctrlHiTrans←v24896 = (word) ( *( (fPt) ((*  (ptr) pd592 ))))(partialTransform←v24840, var←c90884, pd592);
/*1*/                     };
/*1*/                  };
/*1*/               };
/*1*/            };
/*1*/         }
/*1*/      else {
SOURCE(45893, 302)
/*1*/         var←c90948.f0 = (*  (ptr) &fc123 );
/*1*/         var←c90948.f1 = (*  (ptr) &fc123 );
/*1*/         if ( ! XR←EqualWords(&otherDirVector←v25296, &var←c90948, 2)) {
SOURCE(45926, 132)
/*1*/            {
/*1*/               word var←c90980;
/*1*/               word var←c01272;
/*1*/               {
/*1*/                  word pd593;
/*1*/                  word x594;
/*1*/                  word pd595;
/*1*/                  word x596;
/*1*/                  pd593 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+21) );
/*1*/                  pd595 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+20) );
/*1*/                  *(float*)&var←c90980 = (
/*1*/                     x594 = (word) ( *( (fPt) ((*  (ptr) pd593 ))))((*  (W2Pt) (( (ptr) seg←v13092)+11) ), transformedPoint←v25240, pd593),  *(float*)&x594
/*1*/                     ) / (
/*1*/                     x596 = (word) ( *( (fPt) ((*  (ptr) pd595 ))))(otherDirVector←v25296, pd595),  *(float*)&x596
/*1*/                     );
/*1*/                  };
/*1*/               {
/*1*/                  word pd597;
/*1*/                  pd597 = (* (( (ptr) (* (( (ptr) gf←c97252)+166)/* var←c85540 */  ))+9) );
/*1*/                  var←c01272 = (word) ( *( (fPt) ((*  (ptr) pd597 ))))(var←c90980, pd597);
/*1*/                  };
/*1*/               {
/*1*/                  word x598;
/*1*/                  word x599;
/*1*/                  *(float*)&distance←v24812 = (
/*1*/                     x598 = var←c01272,  *(float*)&x598
/*1*/                     ) * (
/*1*/                     x599 = distance←v24812,  *(float*)&x599
/*1*/                     );
/*1*/                  };
/*1*/               };
SOURCE(46060, 135)
/*1*/            {
/*1*/               W2 var←c91012;
/*1*/               {
/*1*/                  W2 var←c91044;
/*1*/                  {
/*1*/                     word pd600;
/*1*/                     pd600 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+5) );
/*1*/                     (void) ( *( (fPt) ((*  (ptr) pd600 ))))((word) &var←c91044, dirVec←v24756, angle←v25212, pd600);
/*1*/                     };
/*1*/                  {
/*1*/                     W2 var←c0791;
/*1*/                     {
/*1*/                        word pd601;
/*1*/                        pd601 = (* (( (ptr) (* (( (ptr) gf←c97252)+165)/* var←c85028 */  ))+12) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd601 ))))((word) &var←c0791, var←c91044, distance←v24812, pd601);
/*1*/                        };
/*1*/                     var←c91012 = var←c0791;
/*1*/                     };
/*1*/                  };
/*1*/               {
/*1*/                  word pd602;
/*1*/                  pd602 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+22) );
/*1*/                  ctrlHiTrans←v24896 = (word) ( *( (fPt) ((*  (ptr) pd602 ))))(partialTransform←v24840, var←c91012, pd602);
/*1*/                  };
/*1*/               };
/*1*/            };
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
SOURCE(46240, 103)
         {
            word pd603;
            pd603 = (* (( (ptr) (* (( (ptr) gf←c97252)+164)/* var←c84836 */  ))+32) );
            (void) ( *( (fPt) ((*  (ptr) pd603 ))))(seg←v13092, transform←v13120, lo←v13176, hi←v13204, ctrlPoints←v24952, ctrlLoTrans←v24868
               , ctrlHiTrans←v24896, curveTo←v13316, pd603);
            };
SOURCE(46346, 56)
         {
            word tc604;
            word limit605;
            word limit606;
            if ( ! XR←ExtractField(ctrlPoints←v24952, 32 + (word) (
                  limit605 = (*  (ptr) ctrlPoints←v24952 ),
                  BCK(0, limit605)
                  ), 1)) {
               tc604 =  (word)  ! XR←ExtractField(ctrlPoints←v24952, 32 + (word) (
                     limit606 = (*  (ptr) ctrlPoints←v24952 ),
                     BCK(1, limit606)
                     ), 1);
               }
            else {
               tc604 =  (word) 0;
               };
            if (tc604) {
SOURCE(46391, 11)
               return(0);
               };
            };
SOURCE(46404, 39)
         {
            word var←c91076;
            var←c91076 = XR←NewObject(28, (* (( (ptr) gf←c97252)+22) ));
            (*  (ptr) var←c91076 ) = 2;
            cPointsInSeg←v13416 = var←c91076;
            };
SOURCE(46460, 193)
         {
            word limit607;
            if (XR←ExtractField(ctrlPoints←v24952, 32 + (word) (
                  limit607 = (*  (ptr) ctrlPoints←v24952 ),
                  BCK(0, limit607)
                  ), 1)) {
SOURCE(46484, 103)
               {
                  W2 var←c91108;
                  {
                     W2 var←c91140;
                     {
                        word pd608;
                        pd608 = (* (( (ptr) (*  (ptr) seg←v13092 ))+16) );
                        (void) ( *( (fPt) ((*  (ptr) pd608 ))))((word) &var←c91140, seg←v13092, 0, pd608);
                        };
                     {
                        W2 var←c0796;
                        {
                           word pd609;
                           pd609 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+39) );
                           (void) ( *( (fPt) ((*  (ptr) pd609 ))))((word) &var←c0796, ctrlLoTrans←v24868, var←c91140, pd609);
                           };
                        var←c91108 = var←c0796;
                        };
                     };
                  {
                     word limit610;
                     (*  (W2Pt) (( (W3Pt) (( (ptr) cPointsInSeg←v13416)+1))+(
                           limit610 = (*  (ptr) cPointsInSeg←v13416 ),
                           BCK(0, limit610)
                           )) ) = var←c91108;
                     };
                  };
SOURCE(46589, 27)
               {
                  word limit611;
                  (* (( (W3Pt) (( (ptr) cPointsInSeg←v13416)+1))+(
                        limit611 = (*  (ptr) cPointsInSeg←v13416 ),
                        BCK(0, limit611)
                        )) ).f2 = 1;
                  };
               }
            else {
SOURCE(46625, 28)
               {
                  word limit612;
                  (* (( (W3Pt) (( (ptr) cPointsInSeg←v13416)+1))+(
                        limit612 = (*  (ptr) cPointsInSeg←v13416 ),
                        BCK(0, limit612)
                        )) ).f2 = 0;
                  };
               };
            };
SOURCE(46655, 193)
         {
            word limit613;
            if (XR←ExtractField(ctrlPoints←v24952, 32 + (word) (
                  limit613 = (*  (ptr) ctrlPoints←v24952 ),
                  BCK(1, limit613)
                  ), 1)) {
SOURCE(46679, 103)
               {
                  W2 var←c91172;
                  {
                     W2 var←c91204;
                     {
                        word pd614;
                        pd614 = (* (( (ptr) (*  (ptr) seg←v13092 ))+16) );
                        (void) ( *( (fPt) ((*  (ptr) pd614 ))))((word) &var←c91204, seg←v13092, 1, pd614);
                        };
                     {
                        W2 var←c0800;
                        {
                           word pd615;
                           pd615 = (* (( (ptr) (* (( (ptr) gf←c97252)+156)/* var←c83940 */  ))+39) );
                           (void) ( *( (fPt) ((*  (ptr) pd615 ))))((word) &var←c0800, ctrlHiTrans←v24896, var←c91204, pd615);
                           };
                        var←c91172 = var←c0800;
                        };
                     };
                  {
                     word limit616;
                     (*  (W2Pt) (( (W3Pt) (( (ptr) cPointsInSeg←v13416)+1))+(
                           limit616 = (*  (ptr) cPointsInSeg←v13416 ),
                           BCK(1, limit616)
                           )) ) = var←c91172;
                     };
                  };
SOURCE(46784, 27)
               {
                  word limit617;
                  (* (( (W3Pt) (( (ptr) cPointsInSeg←v13416)+1))+(
                        limit617 = (*  (ptr) cPointsInSeg←v13416 ),
                        BCK(1, limit617)
                        )) ).f2 = 1;
                  };
               }
            else {
SOURCE(46820, 28)
               {
                  word limit618;
                  (* (( (W3Pt) (( (ptr) cPointsInSeg←v13416)+1))+(
                        limit618 = (*  (ptr) cPointsInSeg←v13416 ),
                        BCK(1, limit618)
                        )) ).f2 = 0;
                  };
               };
            };
SOURCE(46850, 20)
         return(cPointsInSeg←v13416);
         };
      };
SOURCE(40747, 6123)
   return(cPointsInSeg←v13416);
   }

static void SegMaskStroke←P2160(dc←v13476, formal←c01340)
   word dc←v13476;
   word formal←c01340;
   {
   W10 var←c97284;
   /* declaration of seg←v13504 skipped */ 
   register ptr gf←c97316 =  (ptr) &globalframe;
   /* declaration of var←c91236 skipped */ 
   /* declaration of var←c91268 skipped */ 
   /* declaration of pattern←v25396 skipped */ 
   (* (( (ptr) &var←c97284)+4)/* seg←v13504 */  ) = formal←c01340;
   /* SegMaskStroke: */ 
SOURCE(46879, 425)
   {
      word tmpAddr619;
      tmpAddr619 = (word) (( (ptr) &var←c97284)+5)/* var←c91236 */ ;
      (*  (ptr) tmpAddr619 ) = ( ((word)  (fPt) PatternProc←P7284) );
      (* (( (ptr) tmpAddr619) + 1) ) = 1;
      };
   {
      word tmpAddr620;
      tmpAddr620 = (word) (( (ptr) &var←c97284)+7)/* var←c91268 */ ;
      (*  (ptr) tmpAddr620 ) = ( ((word)  (fPt) MaskPath←P7224) );
      (* (( (ptr) tmpAddr620) + 1) ) = 1;
      };
SOURCE(47115, 37)
   (* (( (ptr) &var←c97284)+9)/* pattern←v25396 */  ) = (* (( (ptr) (* (( (ptr) &var←c97284)+4)/* seg←v13504 */  ))+5) );
SOURCE(47154, 150)
   if ((0 != (* (( (ptr) (* (( (ptr) &var←c97284)+4)/* seg←v13504 */  ))+4) ))) {
SOURCE(47173, 93)
      {
         word pd621;
         pd621 = (* (( (ptr) (* (( (ptr) gf←c97316)+167)/* var←c86788 */  ))+75) );
         (void) ( *( (fPt) ((*  (ptr) pd621 ))))(dc←v13476, (word) (( (bPt) &var←c97284)+28)/* var←c91268 */ , (*  (ptr) (* (( (ptr) &var←c97284)+9)
            /* pattern←v25396 */  ) ), (word) (( (bPt) &var←c97284)+20)/* var←c91236 */ , (* (( (ptr) (* (( (ptr) &var←c97284)+4)/* seg←v13504 */  ))+6)
             ), (* (( (ptr) (* (( (ptr) &var←c97284)+4)/* seg←v13504 */  ))+7) ), pd621);
         };
      }
   else {
SOURCE(47266, 38)
      {
         word pd622;
         pd622 = (* (( (ptr) (* (( (ptr) gf←c97316)+167)/* var←c86788 */  ))+71) );
         (void) ( *( (fPt) ((*  (ptr) pd622 ))))(dc←v13476, (word) (( (bPt) &var←c97284)+28)/* var←c91268 */ , 0, pd622);
         };
      };
   }

static void MaskPath←P7224(moveTo←v72856, lineTo←v72884, curveTo←v72912, conicTo←v72940, arcTo←v72968, formal←c97348)
   word moveTo←v72856;
   word lineTo←v72884;
   word curveTo←v72912;
   word conicTo←v72940;
   word arcTo←v72968;
   word formal←c97348;
   {
   formal←c97348 = (formal←c97348 - 28);
   /* MaskPath: */ 
SOURCE(46938, 103)
SOURCE(46968, 14)
   (void) ( *( (fPt) ((*  (ptr) moveTo←v72856 ))))((*  (W2Pt) ((( (ptr) (* (( (ptr) formal←c97348)+4) ))+9)) ), moveTo←v72856)
   ;
SOURCE(46984, 57)
   {
      word pd623;
      pd623 = (* (( (ptr) (*  (ptr) (* (( (ptr) formal←c97348)+4) ) ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd623 ))))((* (( (ptr) formal←c97348)+4) ), lineTo←v72884, curveTo←v72912, conicTo←v72940, arcTo←v72968, pd623)
      ;
      };
   }

static word PatternProc←P7284(i←v25472, formal←c97380)
   word i←v25472;
   word formal←c97380;
   {
   word var←c25516;
   formal←c97380 = (formal←c97380 - 20);
   /* PatternProc: */ 
SOURCE(47046, 64)
SOURCE(47092, 18)
   {
      word limit624;
      return((* ((( (ptr) (* (( (ptr) formal←c97380)+9) ))+1)+(
            limit624 = (*  (ptr) (* (( (ptr) formal←c97380)+9) ) ),
            BCK(i←v25472, limit624)
            )) ));
      };
   }

static void MaskStroke←P2220(dc←v13564, formal←c01341)
   word dc←v13564;
   word formal←c01341;
   {
   W10 var←c97412;
   /* declaration of seg←v13592 skipped */ 
   register ptr gf←c97444 =  (ptr) &globalframe;
   /* declaration of var←c91300 skipped */ 
   /* declaration of var←c91332 skipped */ 
   /* declaration of pattern←v25600 skipped */ 
   (* (( (ptr) &var←c97412)+4)/* seg←v13592 */  ) = formal←c01341;
   /* MaskStroke: */ 
SOURCE(47310, 422)
   {
      word tmpAddr625;
      tmpAddr625 = (word) (( (ptr) &var←c97412)+5)/* var←c91300 */ ;
      (*  (ptr) tmpAddr625 ) = ( ((word)  (fPt) PatternProc←P7404) );
      (* (( (ptr) tmpAddr625) + 1) ) = 1;
      };
   {
      word tmpAddr626;
      tmpAddr626 = (word) (( (ptr) &var←c97412)+7)/* var←c91332 */ ;
      (*  (ptr) tmpAddr626 ) = ( ((word)  (fPt) MaskPath←P7344) );
      (* (( (ptr) tmpAddr626) + 1) ) = 1;
      };
SOURCE(47543, 37)
   (* (( (ptr) &var←c97412)+9)/* pattern←v25600 */  ) = (* (( (ptr) (* (( (ptr) &var←c97412)+4)/* seg←v13592 */  ))+5) );
SOURCE(47582, 150)
   if ((0 != (* (( (ptr) (* (( (ptr) &var←c97412)+4)/* seg←v13592 */  ))+4) ))) {
SOURCE(47601, 93)
      {
         word pd627;
         pd627 = (* (( (ptr) (* (( (ptr) gf←c97444)+167)/* var←c86788 */  ))+75) );
         (void) ( *( (fPt) ((*  (ptr) pd627 ))))(dc←v13564, (word) (( (bPt) &var←c97412)+28)/* var←c91332 */ , (*  (ptr) (* (( (ptr) &var←c97412)+9)
            /* pattern←v25600 */  ) ), (word) (( (bPt) &var←c97412)+20)/* var←c91300 */ , (* (( (ptr) (* (( (ptr) &var←c97412)+4)/* seg←v13592 */  ))+6)
             ), (* (( (ptr) (* (( (ptr) &var←c97412)+4)/* seg←v13592 */  ))+7) ), pd627);
         };
      }
   else {
SOURCE(47694, 38)
      {
         word pd628;
         pd628 = (* (( (ptr) (* (( (ptr) gf←c97444)+167)/* var←c86788 */  ))+71) );
         (void) ( *( (fPt) ((*  (ptr) pd628 ))))(dc←v13564, (word) (( (bPt) &var←c97412)+28)/* var←c91332 */ , 0, pd628);
         };
      };
   }

static void MaskPath←P7344(moveTo←v73028, lineTo←v73056, curveTo←v73084, conicTo←v73112, arcTo←v73140, formal←c97476)
   word moveTo←v73028;
   word lineTo←v73056;
   word curveTo←v73084;
   word conicTo←v73112;
   word arcTo←v73140;
   word formal←c97476;
   {
   formal←c97476 = (formal←c97476 - 28);
   /* MaskPath: */ 
SOURCE(47366, 103)
SOURCE(47396, 14)
   (void) ( *( (fPt) ((*  (ptr) moveTo←v73028 ))))((*  (W2Pt) ((( (ptr) (* (( (ptr) formal←c97476)+4) ))+9)) ), moveTo←v73028)
   ;
SOURCE(47412, 57)
   {
      word pd629;
      pd629 = (* (( (ptr) (*  (ptr) (* (( (ptr) formal←c97476)+4) ) ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd629 ))))((* (( (ptr) formal←c97476)+4) ), lineTo←v73056, curveTo←v73084, conicTo←v73112, arcTo←v73140, pd629)
      ;
      };
   }

static word PatternProc←P7404(i←v25676, formal←c97508)
   word i←v25676;
   word formal←c97508;
   {
   word var←c25720;
   formal←c97508 = (formal←c97508 - 20);
   /* PatternProc: */ 
SOURCE(47474, 64)
SOURCE(47520, 18)
   {
      word limit630;
      return((* ((( (ptr) (* (( (ptr) formal←c97508)+9) ))+1)+(
            limit630 = (*  (ptr) (* (( (ptr) formal←c97508)+9) ) ),
            BCK(i←v25676, limit630)
            )) ));
      };
   }

static void MaskStrokeTransform←P2280(formal←c01342, formal←c01343, formal←c01344, formal←c01345, formal←c01346, formal←c01347, formal←c01348, formal←c01349, formal←c01350, formal←c01351, formal←c01352, formal←c01353)
   word formal←c01342;
   word formal←c01343;
   word formal←c01344;
   word formal←c01345;
   word formal←c01346;
   word formal←c01347;
   word formal←c01348;
   word formal←c01349;
   word formal←c01350;
   word formal←c01351;
   word formal←c01352;
   word formal←c01353;
   {
   W21 var←c97540;
   /* declaration of dc←v13652 skipped */ 
   /* declaration of seg←v13680 skipped */ 
   /* declaration of transform←v13708 skipped */ 
   /* declaration of entire←v13736 skipped */ 
   /* declaration of lo←v13764 skipped */ 
   /* declaration of hi←v13792 skipped */ 
   /* declaration of controlPoints←v13820 skipped */ 
   /* declaration of slice←v13848 skipped */ 
   /* declaration of transformParts←v13876 skipped */ 
   /* declaration of segNum←v13904 skipped */ 
   /* declaration of camera←v13932 skipped */ 
   /* declaration of editConstraints←v13960 skipped */ 
   register ptr gf←c97572 =  (ptr) &globalframe;
   /* declaration of var←c91364 skipped */ 
   /* declaration of var←c91396 skipped */ 
   /* declaration of pattern←v25804 skipped */ 
   (* (( (ptr) &var←c97540)+4)/* dc←v13652 */  ) = formal←c01342;
   (* (( (ptr) &var←c97540)+5)/* seg←v13680 */  ) = formal←c01343;
   (* (( (ptr) &var←c97540)+6)/* transform←v13708 */  ) = formal←c01344;
   (* (( (ptr) &var←c97540)+7)/* entire←v13736 */  ) = formal←c01345;
   (* (( (ptr) &var←c97540)+8)/* lo←v13764 */  ) = formal←c01346;
   (* (( (ptr) &var←c97540)+9)/* hi←v13792 */  ) = formal←c01347;
   (* (( (ptr) &var←c97540)+10)/* controlPoints←v13820 */  ) = formal←c01348;
   (* (( (ptr) &var←c97540)+11)/* slice←v13848 */  ) = formal←c01349;
   (* (( (ptr) &var←c97540)+12)/* transformParts←v13876 */  ) = formal←c01350;
   (* (( (ptr) &var←c97540)+13)/* segNum←v13904 */  ) = formal←c01351;
   (* (( (ptr) &var←c97540)+14)/* camera←v13932 */  ) = formal←c01352;
   (* (( (ptr) &var←c97540)+15)/* editConstraints←v13960 */  ) = formal←c01353;
   /* MaskStrokeTransform: */ 
SOURCE(47738, 1377)
   {
      word tmpAddr631;
      tmpAddr631 = (word) (( (ptr) &var←c97540)+16)/* var←c91364 */ ;
      (*  (ptr) tmpAddr631 ) = ( ((word)  (fPt) PatternProc←P7524) );
      (* (( (ptr) tmpAddr631) + 1) ) = 1;
      };
   {
      word tmpAddr632;
      tmpAddr632 = (word) (( (ptr) &var←c97540)+18)/* var←c91396 */ ;
      (*  (ptr) tmpAddr632 ) = ( ((word)  (fPt) MaskPath←P7464) );
      (* (( (ptr) tmpAddr632) + 1) ) = 1;
      };
SOURCE(48926, 37)
   (* (( (ptr) &var←c97540)+20)/* pattern←v25804 */  ) = (* (( (ptr) (* (( (ptr) &var←c97540)+5)/* seg←v13680 */  ))+5) );
SOURCE(48965, 150)
   if ((0 != (* (( (ptr) (* (( (ptr) &var←c97540)+5)/* seg←v13680 */  ))+4) ))) {
SOURCE(48984, 93)
      {
         word pd633;
         pd633 = (* (( (ptr) (* (( (ptr) gf←c97572)+167)/* var←c86788 */  ))+75) );
         (void) ( *( (fPt) ((*  (ptr) pd633 ))))((* (( (ptr) &var←c97540)+4)/* dc←v13652 */  ), (word) (( (bPt) &var←c97540)+72)/* var←c91396 */ , (*  (ptr) (* (
               ( (ptr) &var←c97540)+20)/* pattern←v25804 */  ) ), (word) (( (bPt) &var←c97540)+64)/* var←c91364 */ , (* (( (ptr) (* (( (ptr) &var←c97540)+5)
               /* seg←v13680 */  ))+6) ), (* (( (ptr) (* (( (ptr) &var←c97540)+5)/* seg←v13680 */  ))+7) ), pd633);
         };
      }
   else {
SOURCE(49077, 38)
      {
         word pd634;
         pd634 = (* (( (ptr) (* (( (ptr) gf←c97572)+167)/* var←c86788 */  ))+71) );
         (void) ( *( (fPt) ((*  (ptr) pd634 ))))((* (( (ptr) &var←c97540)+4)/* dc←v13652 */  ), (word) (( (bPt) &var←c97540)+72)/* var←c91396 */ , 0, pd634)
         ;
         };
      };
   }

static void MaskPath←P7464(moveTo←v73200, lineTo←v73228, curveTo←v73256, conicTo←v73284, arcTo←v73312, formal←c97636)
   word moveTo←v73200;
   word lineTo←v73228;
   word curveTo←v73256;
   word conicTo←v73284;
   word arcTo←v73312;
   word formal←c97636;
   {
   register ptr gf←c97604 =  (ptr) &globalframe;
   W2 loPoint←v25952;
   word cpCount←v25980;
   formal←c97636 = (formal←c97636 - 72);
   /* MaskPath: */ 
SOURCE(48003, 835)
SOURCE(48049, 47)
   {
      word pd635;
      pd635 = (* (( (ptr) (*  (ptr) (* (( (ptr) formal←c97636)+5) ) ))+17) );
      cpCount←v25980 = (word) ( *( (fPt) ((*  (ptr) pd635 ))))((* ((( (ptr) formal←c97636)+5)) ), pd635);
      };
SOURCE(48098, 92)
   if (((0 != (* (( (ptr) formal←c97636)+7) )) || (0 != (* (( (ptr) formal←c97636)+8) )))) {
      {
         W2 var←c0847;
         {
            word pd636;
            pd636 = (* (( (ptr) (* (( (ptr) gf←c97604)+156)/* var←c83940 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd636 ))))((word) &var←c0847, (* (( (ptr) formal←c97636)+6) ), (*  (W2Pt) (( (ptr) (* (( (ptr) formal←c97636)+5)
                   ))+9) ), pd636);
            };
         loPoint←v25952 = var←c0847;
         };
      }
   else {
      loPoint←v25952 = (*  (W2Pt) (( (ptr) (* (( (ptr) formal←c97636)+5) ))+9) );
      };
SOURCE(48192, 15)
   (void) ( *( (fPt) ((*  (ptr) moveTo←v73200 ))))(loPoint←v25952, moveTo←v73200);
SOURCE(48209, 322)
   if ( ( ((*  (ptr) (*  (ptr) (* (( (ptr) formal←c97636)+5) ) ) ) == (* (( (ptr) gf←c97604)+27) )) ? ((* (( (ptr) formal←c97636)+15)
    ) != 0) : 0 ) ) {
SOURCE(48265, 158)
      {
         word var←c91428;
         var←c91428 = (word) DrawConstrained←P2100((* (( (ptr) formal←c97636)+4) ), (* (( (ptr) formal←c97636)+11) ), (* (( (ptr) formal←c97636)+12)
             ), (* (( (ptr) formal←c97636)+13) ), (* (( (ptr) formal←c97636)+5) ), (* (( (ptr) formal←c97636)+6) )
            , (* (( (ptr) formal←c97636)+7) ), (* (( (ptr) formal←c97636)+8) ), (* (( (ptr) formal←c97636)+9) ), (* (( (ptr) formal←c97636)+10)
             ), (* (( (ptr) formal←c97636)+15) ), lineTo←v73228
            , curveTo←v73256, conicTo←v73284, arcTo←v73312);
         };
      }
   else {
SOURCE(48423, 108)
      {
         word pd637;
         pd637 = (* (( (ptr) (*  (ptr) (* (( (ptr) formal←c97636)+5) ) ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd637 ))))((* (( (ptr) formal←c97636)+5) ), (* (( (ptr) formal←c97636)+6) ), (* (( (ptr) formal←c97636)+7)
             ), (* (( (ptr) formal←c97636)+8) ), (* (( (ptr) formal←c97636)+9) ), (* (( (ptr) formal←c97636)+10) )
            , lineTo←v73228, curveTo←v73256, conicTo←v73284, arcTo←v73312, pd637);
         };
      };
SOURCE(48533, 305)
   if ( ( ((* (( (ptr) formal←c97636)+6) ) != 0) ? (0 == (* (( (ptr) formal←c97636)+7) )) : 0 ) ) {
SOURCE(48599, 239)
      {
         register word j←v26024 = 0;
         register word noName←c91460;
         noName←c91460 = cpCount←v25980;
         if ((j←v26024 >= noName←c91460)) {
            goto lab←L100113;
            };
         lab←L100116: ;
SOURCE(48629, 209)
         {
            word limit639;
            if (((* (( (ptr) formal←c97636)+10) ) == 0)) { goto then0638;};
            if (XR←ExtractField((* (( (ptr) formal←c97636)+10) ), 32 + (word) (
                  limit639 = (*  (ptr) (* (( (ptr) formal←c97636)+10) ) ),
                  BCK(j←v26024, limit639)
                  ), 1)) {
               then0638: ;
SOURCE(48675, 165)
               {
                  W2 cPoint←v26068;
SOURCE(48701, 92)
                  {
                     W2 var←c91492;
                     {
                        word pd640;
                        pd640 = (* (( (ptr) (*  (ptr) (* (( (ptr) formal←c97636)+5) ) ))+16) );
                        (void) ( *( (fPt) ((*  (ptr) pd640 ))))((word) &var←c91492, (* (( (ptr) formal←c97636)+5) ), j←v26024, pd640);
                        };
                     {
                        W2 var←c0854;
                        {
                           word pd641;
                           pd641 = (* (( (ptr) (* (( (ptr) gf←c97604)+156)/* var←c83940 */  ))+39) );
                           (void) ( *( (fPt) ((*  (ptr) pd641 ))))((word) &var←c0854, (* (( (ptr) formal←c97636)+6) ), var←c91492, pd641);
                           };
                        cPoint←v26068 = var←c0854;
                        };
                     };
SOURCE(48795, 43)
                  {
                     word pd642;
                     pd642 = (* (( (ptr) (* (( (ptr) gf←c97604)+168)/* var←c87012 */  ))+19) );
                     (void) ( *( (fPt) ((*  (ptr) pd642 ))))((* (( (ptr) formal←c97636)+4) ), cPoint←v26068, (* (( (ptr) (* (( (ptr) formal←c97636)+14)
                            ))+4) ), pd642);
                     };
                  };
               };
            };
         j←v26024 = (j←v26024 + 1);
         if ((j←v26024 < noName←c91460)) {
            goto lab←L100116;
            };
         lab←L100113: ;
         };
      };
   }

static word PatternProc←P7524(i←v25880, formal←c97668)
   word i←v25880;
   word formal←c97668;
   {
   word var←c25924;
   formal←c97668 = (formal←c97668 - 64);
   /* PatternProc: */ 
SOURCE(48857, 64)
SOURCE(48903, 18)
   {
      word limit643;
      return((* ((( (ptr) (* (( (ptr) formal←c97668)+20) ))+1)+(
            limit643 = (*  (ptr) (* (( (ptr) formal←c97668)+20) ) ),
            BCK(i←v25880, limit643)
            )) ));
      };
   }

static word AllStrokePropsAndColorsEqual←P2340(slice←v14020)
   word slice←v14020;
   {
   register ptr gf←c97700 =  (ptr) &globalframe;
   word var←c14064;
   word seg←v26112 = 0;
   word firstSeg←v26140;
   word width←v26168;
   word end←v26196;
   word color←v26224;
   word dashed←v26252;
   word pattern←v26280;
   word offset←v26308;
   word length←v26336;
   word hiSegment←v26364;
   /* AllStrokePropsAndColorsEqual: */ 
SOURCE(49120, 922)
SOURCE(49120, 922)
   var←c14064 = 0;
SOURCE(49211, 49)
   {
      word pd644;
      pd644 = (* (( (ptr) (* (( (ptr) gf←c97700)+161)/* var←c84516 */  ))+29) );
      firstSeg←v26140 = (word) ( *( (fPt) ((*  (ptr) pd644 ))))(slice←v14020, 0, pd644);
      };
SOURCE(49262, 34)
   width←v26168 = (* (( (ptr) firstSeg←v26140)+2) );
SOURCE(49298, 35)
   end←v26196 = (* (( (ptr) firstSeg←v26140)+3) );
SOURCE(49335, 29)
   color←v26224 = (* (( (ptr) firstSeg←v26140)+8) );
SOURCE(49366, 30)
   dashed←v26252 = (* (( (ptr) firstSeg←v26140)+4) );
SOURCE(49398, 42)
   pattern←v26280 = (* (( (ptr) firstSeg←v26140)+5) );
SOURCE(49442, 30)
   offset←v26308 = (* (( (ptr) firstSeg←v26140)+6) );
SOURCE(49474, 30)
   length←v26336 = (* (( (ptr) firstSeg←v26140)+7) );
SOURCE(49506, 40)
   {
      word pd645;
      pd645 = (* (( (ptr) (* (( (ptr) gf←c97700)+161)/* var←c84516 */  ))+37) );
      hiSegment←v26364 = (word) ( *( (fPt) ((*  (ptr) pd645 ))))(slice←v14020, pd645);
      };
SOURCE(49548, 494)
   {
      register word i←v26408 = 1;
      register word noName←c91524;
      noName←c91524 = hiSegment←v26364;
      if (( (int)i←v26408 >  (int)noName←c91524)) {
         goto lab←L100117;
         };
      lab←L100120: ;
SOURCE(49580, 35)
      {
         word pd646;
         pd646 = (* (( (ptr) (* (( (ptr) gf←c97700)+161)/* var←c84516 */  ))+29) );
         seg←v26112 = (word) ( *( (fPt) ((*  (ptr) pd646 ))))(slice←v14020, SGNCK(i←v26408), pd646);
         };
SOURCE(49617, 41)
      if (((* (( (ptr) seg←v26112)+4) ) != dashed←v26252)) {
SOURCE(49645, 13)
         return(0);
         };
SOURCE(49660, 41)
      if (((* (( (ptr) seg←v26112)+3) ) != end←v26196)) {
SOURCE(49688, 13)
         return(0);
         };
SOURCE(49703, 45)
      {
         word x647;
         word x648;
         if (((
            x647 = (* (( (ptr) seg←v26112)+2) ),  *(float*)&x647
            ) != (
            x648 = width←v26168,  *(float*)&x648
            ))) {
SOURCE(49735, 13)
            return(0);
            };
         };
SOURCE(49750, 70)
      {
         word pd649;
         pd649 = (* (( (ptr) (* (( (ptr) gf←c97700)+170)/* var←c88164 */  ))+35) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd649 ))))(color←v26224, (* (( (ptr) seg←v26112)+8) ), pd649))) {
SOURCE(49807, 13)
            return(0);
            };
         };
SOURCE(49822, 19)
      if ((0 == dashed←v26252)) {
SOURCE(49841, 4)
         goto lab←L100119;
         };
SOURCE(49847, 41)
      {
         word x650;
         word x651;
         if (((
            x650 = (* (( (ptr) seg←v26112)+6) ),  *(float*)&x650
            ) != (
            x651 = offset←v26308,  *(float*)&x651
            ))) {
SOURCE(49875, 13)
            return(0);
            };
         };
SOURCE(49890, 41)
      {
         word x652;
         word x653;
         if (((
            x652 = (* (( (ptr) seg←v26112)+7) ),  *(float*)&x652
            ) != (
            x653 = length←v26336,  *(float*)&x653
            ))) {
SOURCE(49918, 13)
            return(0);
            };
         };
SOURCE(49933, 76)
      {
         word pd654;
         pd654 = (* (( (ptr) (* (( (ptr) gf←c97700)+172)/* var←c91556 */  ))+38) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd654 ))))((* (( (ptr) seg←v26112)+5) ), pattern←v26280, pd654))) {
SOURCE(49996, 13)
            return(0);
            };
         };
      lab←L100119: ;
      if (( (int)i←v26408 >=  (int)noName←c91524)) {
         goto lab←L100117;
         };
      i←v26408 = (i←v26408 + 1);
      goto lab←L100120;
      lab←L100117: ;
SOURCE(50030, 12)
      return(1);
      };
   }

static word SegmentSelected←P2400(segNum←v14124, selectedSeq←v14152)
   word segNum←v14124;
   word selectedSeq←v14152;
   {
   word var←c14196;
   /* SegmentSelected: */ 
SOURCE(50057, 123)
SOURCE(50057, 123)
   var←c14196 = 0;
SOURCE(50144, 36)
   {
      word var←c01273;
      {
         word var←c91588;
         var←c91588 = (*  (ptr) selectedSeq←v14152 );
         {
            word limit655;
            var←c01273 =  (unsigned) XR←ExtractField(var←c91588, 32 + (word) (
                  limit655 = (*  (ptr) var←c91588 ),
                  BCK(segNum←v14124, limit655)
                  ), 1);
            };
         };
      return(var←c01273);
      };
   }

static void TrajTransform←P2460(slice←v14256, parts←v14284, transform←v14312, editConstraints←v14340, history←v14368)
   word slice←v14256;
   word parts←v14284;
   word transform←v14312;
   word editConstraints←v14340;
   word history←v14368;
   {
   register ptr gf←c97732 =  (ptr) &globalframe;
   word joint←v26452 = 0;
   word seg←v26480 = 0;
   word trajData←v26508;
   word trajParts←v26536;
   word hiSegment←v26564;
   word hiJoint←v26592;
   /* TrajTransform: */ 
SOURCE(50186, 1093)
SOURCE(50383, 39)
   trajData←v26508 = XR←Narrow((* (( (ptr) slice←v14256)+1) ), (* (( (ptr) gf←c97732)+10) ));
SOURCE(50424, 36)
   trajParts←v26536 = XR←Narrow(parts←v14284, (* (( (ptr) gf←c97732)+15) ));
SOURCE(50462, 40)
   {
      word pd656;
      pd656 = (* (( (ptr) (* (( (ptr) gf←c97732)+161)/* var←c84516 */  ))+37) );
      hiSegment←v26564 = (word) ( *( (fPt) ((*  (ptr) pd656 ))))(slice←v14256, pd656);
      };
SOURCE(50504, 36)
   {
      word pd657;
      pd657 = (* (( (ptr) (* (( (ptr) gf←c97732)+161)/* var←c84516 */  ))+39) );
      hiJoint←v26592 = (word) ( *( (fPt) ((*  (ptr) pd657 ))))(slice←v14256, pd657);
      };
SOURCE(50542, 179)
   {
      word var←c91620;
      var←c91620 = (*  (ptr) trajData←v26508 );
      switch (var←c91620) {
         case 2: 
SOURCE(50576, 63)
            (void) TransformSequenceOpen←P2520(slice←v14256, parts←v14284, transform←v14312, editConstraints←v14340);
            break;
         case 0: case 1: 
SOURCE(50656, 65)
            (void) TransformSequenceClosed←P2580(slice←v14256, parts←v14284, transform←v14312, editConstraints←v14340);
            break;
         default: 
SOURCE(50734, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(50741, 186)
   {
      register word i←v26636 = 0;
      register word noName←c91652;
      word var←c91684;
      noName←c91652 = hiJoint←v26592;
      if ((i←v26636 > noName←c91652)) {
         goto lab←L100121;
         };
      lab←L100124: ;
SOURCE(50771, 156)
      {
         word limit659;
         if ((trajParts←v26536 == 0)) { goto then0658;};
         var←c91684 = (* (( (ptr) trajParts←v26536)+1) );
         if (XR←ExtractField(var←c91684, 32 + (word) (
               limit659 = (*  (ptr) var←c91684 ),
               BCK(i←v26636, limit659)
               ), 1)) {
            then0658: ;
SOURCE(50818, 48)
            {
               word pd660;
               pd660 = (* (( (ptr) (* (( (ptr) gf←c97732)+163)/* var←c84740 */  ))+5) );
               joint←v26452 = XR←Narrow((word) ( *( (fPt) ((*  (ptr) pd660 ))))((* (( (ptr) trajData←v26508)+3) ), i←v26636, pd660), (* (
                     ( (ptr) gf←c97732)+20) ));
               };
SOURCE(50868, 59)
            {
               word pd661;
               pd661 = (* (( (ptr) (* (( (ptr) gf←c97732)+173)/* var←c91716 */  ))+5) );
               (void) ( *( (fPt) ((*  (ptr) pd661 ))))((word) joint←v26452, transform←v14312, (*  (W2Pt) joint←v26452 ), pd661);
               };
            };
         };
      if ((i←v26636 >= noName←c91652)) {
         goto lab←L100121;
         };
      i←v26636 = (i←v26636 + 1);
      goto lab←L100124;
      lab←L100121: ;
      };
SOURCE(50941, 28)
   (void) TrajShapeChangeNotify←P240(slice←v14256);
SOURCE(50972, 30)
   if ((trajParts←v26536 == 0)) {
SOURCE(50996, 6)
      return;
      };
SOURCE(51004, 275)
   {
      register word i←v26680 = 0;
      register word noName←c91748;
      noName←c91748 = hiSegment←v26564;
      if ((i←v26680 > noName←c91748)) {
         goto lab←L100125;
         };
      lab←L100128: ;
      {
         word cpCount←v26724;
         word var←c91780;
SOURCE(51036, 45)
         {
            word limit662;
            var←c91780 = (* (( (ptr) trajParts←v26536)+2) );
            cpCount←v26724 = (*  (ptr) (* ((( (ptr) var←c91780)+1)+(
                  limit662 = (*  (ptr) var←c91780 ),
                  BCK(i←v26680, limit662)
                  )) ) );
            };
SOURCE(51083, 48)
         {
            word pd663;
            pd663 = (* (( (ptr) (* (( (ptr) gf←c97732)+163)/* var←c84740 */  ))+5) );
            seg←v26480 = XR←Narrow((word) ( *( (fPt) ((*  (ptr) pd663 ))))((* (( (ptr) trajData←v26508)+2) ), i←v26680, pd663), (* (( (ptr) gf←c97732)+19)
                ));
            };
SOURCE(51133, 146)
         {
            register word j←v26768 = 0;
            register word noName←c91812;
            word var←c91876;
            word var←c91908;
            noName←c91812 = cpCount←v26724;
            if ((j←v26768 >= noName←c91812)) {
               goto lab←L100129;
               };
            lab←L100132: ;
SOURCE(51163, 116)
            {
               word tc664;
               word limit666;
               word limit667;
               {
                  word var←c91844;
                  var←c91844 = (* (( (ptr) trajParts←v26536)+2) );
                  {
                     word limit665;
                     var←c91876 = (* ((( (ptr) var←c91844)+1)+(
                           limit665 = (*  (ptr) var←c91844 ),
                           BCK(i←v26680, limit665)
                           )) );
                     };
                  };
               if (XR←ExtractField(var←c91876, 32 + (word) (
                     limit666 = (*  (ptr) var←c91876 ),
                     BCK(j←v26768, limit666)
                     ), 1)) {
                  var←c91908 = (*  (ptr) trajParts←v26536 );
                  tc664 =  (word)  ! XR←ExtractField(var←c91908, 32 + (word) (
                        limit667 = (*  (ptr) var←c91908 ),
                        BCK(i←v26680, limit667)
                        ), 1);
                  }
               else {
                  tc664 =  (word) 0;
                  };
               if (tc664) {
SOURCE(51233, 46)
                  {
                     word pd668;
                     pd668 = (* (( (ptr) (*  (ptr) seg←v26480 ))+10) );
                     (void) ( *( (fPt) ((*  (ptr) pd668 ))))(seg←v26480, transform←v14312, j←v26768, pd668);
                     };
                  };
               };
            j←v26768 = (j←v26768 + 1);
            if ((j←v26768 < noName←c91812)) {
               goto lab←L100132;
               };
            lab←L100129: ;
            };
         };
      if ((i←v26680 >= noName←c91748)) {
         goto lab←L100125;
         };
      i←v26680 = (i←v26680 + 1);
      goto lab←L100128;
      lab←L100125: ;
      };
   }

static void TransformSequenceOpen←P2520(slice←v14428, parts←v14456, transform←v14484, editConstraints←v14512)
   word slice←v14428;
   word parts←v14456;
   word transform←v14484;
   word editConstraints←v14512;
   {
   register ptr gf←c97764 =  (ptr) &globalframe;
   word trajParts←v26812;
   word seg←v26840 = 0;
   word hiSegment←v26868;
   /* TransformSequenceOpen: */ 
SOURCE(51306, 781)
SOURCE(51454, 36)
   trajParts←v26812 = XR←Narrow(parts←v14456, (* (( (ptr) gf←c97764)+15) ));
SOURCE(51506, 40)
   {
      word pd669;
      pd669 = (* (( (ptr) (* (( (ptr) gf←c97764)+161)/* var←c84516 */  ))+37) );
      hiSegment←v26868 = (word) ( *( (fPt) ((*  (ptr) pd669 ))))(slice←v14428, pd669);
      };
SOURCE(51548, 539)
   {
      register word i←v26912 = 0;
      register word noName←c91940;
      noName←c91940 = hiSegment←v26868;
      if ((i←v26912 > noName←c91940)) {
         goto lab←L100133;
         };
      lab←L100136: ;
      {
         word var←c91972;
SOURCE(51580, 35)
         {
            word pd670;
            pd670 = (* (( (ptr) (* (( (ptr) gf←c97764)+161)/* var←c84516 */  ))+29) );
            seg←v26840 = (word) ( *( (fPt) ((*  (ptr) pd670 ))))(slice←v14428, i←v26912, pd670);
            };
SOURCE(51617, 470)
         {
            word limit672;
            if ((trajParts←v26812 == 0)) { goto then0671;};
            var←c91972 = (*  (ptr) trajParts←v26812 );
            if (XR←ExtractField(var←c91972, 32 + (word) (
                  limit672 = (*  (ptr) var←c91972 ),
                  BCK(i←v26912, limit672)
                  ), 1)) {
               then0671: ;
SOURCE(51666, 42)
               {
                  word pd673;
                  pd673 = (* (( (ptr) (* (( (ptr) gf←c97764)+164)/* var←c84836 */  ))+26) );
                  (void) ( *( (fPt) ((*  (ptr) pd673 ))))(seg←v26840, transform←v14484, pd673);
                  };
               }
            else {
SOURCE(51719, 368)
               if ( ( ((*  (ptr) (*  (ptr) seg←v26840 ) ) == (* (( (ptr) gf←c97764)+27) )) ? (editConstraints←v14512 != 0) : 0 ) ) {
SOURCE(51781, 70)
                  (void) TransformConstrained←P2640(slice←v14428, parts←v14456, i←v26912, seg←v26840, transform←v14484, editConstraints←v14512)
                  ;
                  }
               else {
                  {
                     word var←c92004;
                     word var←c92068;
                     word var←c92100;
SOURCE(51862, 110)
                     {
                        word limit674;
                        var←c92004 = (* (( (ptr) trajParts←v26812)+1) );
                        if (XR←ExtractField(var←c92004, 32 + (word) (
/*1*/   limit674 = (*  (ptr) var←c92004 ),
/*1*/   BCK(i←v26912, limit674)
/*1*/   ), 1)) {
SOURCE(51890, 82)
                           {
/*1*/   W2 var←c92036;
/*1*/   {
/*1*/      word pd675;
/*1*/      pd675 = (* (( (ptr) (* (( (ptr) gf←c97764)+173)/* var←c91716 */  ))+5) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd675 ))))((word) &var←c92036, transform←v14484, (*  (W2Pt) (( (ptr) seg←v26840)+9) ), pd675)
/*1*/      ;
/*1*/      };
/*1*/   {
/*1*/      word pd676;
/*1*/      pd676 = (* (( (ptr) (* (( (ptr) gf←c97764)+164)/* var←c84836 */  ))+28) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd676 ))))(seg←v26840, 1, var←c92036, pd676);
/*1*/      };
/*1*/   };
                           };
                        };
SOURCE(51974, 113)
                     {
                        word limit677;
                        var←c92068 = (i←v26912 + 1);
                        var←c92100 = (* (( (ptr) trajParts←v26812)+1) );
                        if (XR←ExtractField(var←c92100, 32 + (word) (
/*1*/   limit677 = (*  (ptr) var←c92100 ),
/*1*/   BCK(var←c92068, limit677)
/*1*/   ), 1)) {
SOURCE(52004, 83)
                           {
/*1*/   W2 var←c92132;
/*1*/   {
/*1*/      word pd678;
/*1*/      pd678 = (* (( (ptr) (* (( (ptr) gf←c97764)+173)/* var←c91716 */  ))+5) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd678 ))))((word) &var←c92132, transform←v14484, (*  (W2Pt) (( (ptr) seg←v26840)+11) ), pd678)
/*1*/      ;
/*1*/      };
/*1*/   {
/*1*/      word pd679;
/*1*/      pd679 = (* (( (ptr) (* (( (ptr) gf←c97764)+164)/* var←c84836 */  ))+28) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd679 ))))(seg←v26840, 0, var←c92132, pd679);
/*1*/      };
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
         };
      if ((i←v26912 >= noName←c91940)) {
         goto lab←L100133;
         };
      i←v26912 = (i←v26912 + 1);
      goto lab←L100136;
      lab←L100133: ;
      };
   }

static void TransformSequenceClosed←P2580(slice←v14572, parts←v14600, transform←v14628, editConstraints←v14656)
   word slice←v14572;
   word parts←v14600;
   word transform←v14628;
   word editConstraints←v14656;
   {
   register ptr gf←c97796 =  (ptr) &globalframe;
   word trajParts←v26956;
   word seg←v26984 = 0;
   word hiSegment←v27012;
   word var←c92388;
   /* TransformSequenceClosed: */ 
SOURCE(52108, 1388)
SOURCE(52258, 36)
   trajParts←v26956 = XR←Narrow(parts←v14600, (* (( (ptr) gf←c97796)+15) ));
SOURCE(52310, 40)
   {
      word pd680;
      pd680 = (* (( (ptr) (* (( (ptr) gf←c97796)+161)/* var←c84516 */  ))+37) );
      hiSegment←v27012 = (word) ( *( (fPt) ((*  (ptr) pd680 ))))(slice←v14572, pd680);
      };
SOURCE(52352, 572)
   {
      register word i←v27056 = 0;
      register word noName←c92164;
      noName←c92164 = hiSegment←v27012;
      if ((i←v27056 >= noName←c92164)) {
         goto lab←L100137;
         };
      lab←L100140: ;
      {
         word var←c92196;
SOURCE(52384, 35)
         {
            word pd681;
            pd681 = (* (( (ptr) (* (( (ptr) gf←c97796)+161)/* var←c84516 */  ))+29) );
            seg←v26984 = (word) ( *( (fPt) ((*  (ptr) pd681 ))))(slice←v14572, i←v27056, pd681);
            };
SOURCE(52421, 503)
         {
            word limit683;
            if ((trajParts←v26956 == 0)) { goto then0682;};
            var←c92196 = (*  (ptr) trajParts←v26956 );
            if (XR←ExtractField(var←c92196, 32 + (word) (
                  limit683 = (*  (ptr) var←c92196 ),
                  BCK(i←v27056, limit683)
                  ), 1)) {
               then0682: ;
SOURCE(52470, 42)
               {
                  word pd684;
                  pd684 = (* (( (ptr) (* (( (ptr) gf←c97796)+164)/* var←c84836 */  ))+26) );
                  (void) ( *( (fPt) ((*  (ptr) pd684 ))))(seg←v26984, transform←v14628, pd684);
                  };
               }
            else {
SOURCE(52523, 401)
               if ( ( ((*  (ptr) (*  (ptr) seg←v26984 ) ) == (* (( (ptr) gf←c97796)+27) )) ? (editConstraints←v14656 != 0) : 0 ) ) {
SOURCE(52585, 70)
                  (void) TransformConstrained←P2640(slice←v14572, parts←v14600, i←v27056, seg←v26984, transform←v14628, editConstraints←v14656)
                  ;
                  }
               else {
                  {
                     word var←c92228;
                     word var←c92292;
                     word var←c92324;
SOURCE(52699, 110)
                     {
                        word limit685;
                        var←c92228 = (* (( (ptr) trajParts←v26956)+1) );
                        if (XR←ExtractField(var←c92228, 32 + (word) (
/*1*/   limit685 = (*  (ptr) var←c92228 ),
/*1*/   BCK(i←v27056, limit685)
/*1*/   ), 1)) {
SOURCE(52727, 82)
                           {
/*1*/   W2 var←c92260;
/*1*/   {
/*1*/      word pd686;
/*1*/      pd686 = (* (( (ptr) (* (( (ptr) gf←c97796)+173)/* var←c91716 */  ))+5) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd686 ))))((word) &var←c92260, transform←v14628, (*  (W2Pt) (( (ptr) seg←v26984)+9) ), pd686)
/*1*/      ;
/*1*/      };
/*1*/   {
/*1*/      word pd687;
/*1*/      pd687 = (* (( (ptr) (* (( (ptr) gf←c97796)+164)/* var←c84836 */  ))+28) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd687 ))))(seg←v26984, 1, var←c92260, pd687);
/*1*/      };
/*1*/   };
                           };
                        };
SOURCE(52811, 113)
                     {
                        word limit688;
                        var←c92292 = (i←v27056 + 1);
                        var←c92324 = (* (( (ptr) trajParts←v26956)+1) );
                        if (XR←ExtractField(var←c92324, 32 + (word) (
/*1*/   limit688 = (*  (ptr) var←c92324 ),
/*1*/   BCK(var←c92292, limit688)
/*1*/   ), 1)) {
SOURCE(52841, 83)
                           {
/*1*/   W2 var←c92356;
/*1*/   {
/*1*/      word pd689;
/*1*/      pd689 = (* (( (ptr) (* (( (ptr) gf←c97796)+173)/* var←c91716 */  ))+5) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd689 ))))((word) &var←c92356, transform←v14628, (*  (W2Pt) (( (ptr) seg←v26984)+11) ), pd689)
/*1*/      ;
/*1*/      };
/*1*/   {
/*1*/      word pd690;
/*1*/      pd690 = (* (( (ptr) (* (( (ptr) gf←c97796)+164)/* var←c84836 */  ))+28) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd690 ))))(seg←v26984, 0, var←c92356, pd690);
/*1*/      };
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
         };
      i←v27056 = (i←v27056 + 1);
      if ((i←v27056 < noName←c92164)) {
         goto lab←L100140;
         };
      lab←L100137: ;
      };
SOURCE(52941, 43)
   {
      word pd691;
      pd691 = (* (( (ptr) (* (( (ptr) gf←c97796)+161)/* var←c84516 */  ))+29) );
      seg←v26984 = (word) ( *( (fPt) ((*  (ptr) pd691 ))))(slice←v14572, hiSegment←v27012, pd691);
      };
SOURCE(52986, 510)
   {
      word limit693;
      if ((trajParts←v26956 == 0)) { goto then0692;};
      var←c92388 = (*  (ptr) trajParts←v26956 );
      if (XR←ExtractField(var←c92388, 32 + (word) (
            limit693 = (*  (ptr) var←c92388 ),
            BCK(hiSegment←v27012, limit693)
            ), 1)) {
         then0692: ;
SOURCE(53043, 42)
         {
            word pd694;
            pd694 = (* (( (ptr) (* (( (ptr) gf←c97796)+164)/* var←c84836 */  ))+26) );
            (void) ( *( (fPt) ((*  (ptr) pd694 ))))(seg←v26984, transform←v14628, pd694);
            };
         }
      else {
SOURCE(53096, 400)
         if ( ( ((*  (ptr) (*  (ptr) seg←v26984 ) ) == (* (( (ptr) gf←c97796)+27) )) ? (editConstraints←v14656 != 0) : 0 ) ) {
SOURCE(53158, 78)
            (void) TransformConstrained←P2640(slice←v14572, parts←v14600, hiSegment←v27012, seg←v26984, transform←v14628, editConstraints←v14656)
            ;
            }
         else {
            {
               word var←c92420;
               word var←c92484;
SOURCE(53265, 118)
               {
                  word limit695;
                  var←c92420 = (* (( (ptr) trajParts←v26956)+1) );
                  if (XR←ExtractField(var←c92420, 32 + (word) (
                        limit695 = (*  (ptr) var←c92420 ),
                        BCK(hiSegment←v27012, limit695)
                        ), 1)) {
SOURCE(53301, 82)
                     {
                        W2 var←c92452;
                        {
                           word pd696;
                           pd696 = (* (( (ptr) (* (( (ptr) gf←c97796)+173)/* var←c91716 */  ))+5) );
                           (void) ( *( (fPt) ((*  (ptr) pd696 ))))((word) &var←c92452, transform←v14628, (*  (W2Pt) (( (ptr) seg←v26984)+9) ), pd696)
                           ;
                           };
                        {
                           word pd697;
                           pd697 = (* (( (ptr) (* (( (ptr) gf←c97796)+164)/* var←c84836 */  ))+28) );
                           (void) ( *( (fPt) ((*  (ptr) pd697 ))))(seg←v26984, 1, var←c92452, pd697);
                           };
                        };
                     };
                  };
SOURCE(53385, 111)
               {
                  word limit698;
                  var←c92484 = (* (( (ptr) trajParts←v26956)+1) );
                  if (XR←ExtractField(var←c92484, 32 + (word) (
                        limit698 = (*  (ptr) var←c92484 ),
                        BCK(0, limit698)
                        ), 1)) {
SOURCE(53413, 83)
                     {
                        W2 var←c92516;
                        {
                           word pd699;
                           pd699 = (* (( (ptr) (* (( (ptr) gf←c97796)+173)/* var←c91716 */  ))+5) );
                           (void) ( *( (fPt) ((*  (ptr) pd699 ))))((word) &var←c92516, transform←v14628, (*  (W2Pt) (( (ptr) seg←v26984)+11) ), pd699)
                           ;
                           };
                        {
                           word pd700;
                           pd700 = (* (( (ptr) (* (( (ptr) gf←c97796)+164)/* var←c84836 */  ))+28) );
                           (void) ( *( (fPt) ((*  (ptr) pd700 ))))(seg←v26984, 0, var←c92516, pd700);
                           };
                        };
                     };
                  };
               };
            };
         };
      };
   }

static void TransformConstrained←P2640(slice←v14716, parts←v14744, segNum←v14772, seg←v14800, transform←v14828, editConstraints←v14856)
   word slice←v14716;
   word parts←v14744;
   word segNum←v14772;
   word seg←v14800;
   word transform←v14828;
   word editConstraints←v14856;
   {
   register ptr gf←c97828 =  (ptr) &globalframe;
   word nextJointNum←v27100;
   W2 dirVec←v27128;
   word distance←v27156;
   W2 ctrlPoint←v27184;
   word ctrlTrans←v27212 = 0;
   word partialTransform←v27240 = 0;
   word selSeq←v27268;
   word var←c92548;
   word var←c92580;
   word var←c92612;
   word var←c92804;
   word var←c92836;
   word var←c93284;
   word var←c93316;
   word var←c93348;
   word var←c93540;
   word var←c93572;
   /* TransformConstrained: */ 
SOURCE(53508, 5765)
SOURCE(53829, 33)
   selSeq←v27268 = XR←Narrow(parts←v14744, (* (( (ptr) gf←c97828)+15) ));
SOURCE(53864, 2677)
   {
      word tc701;
      word limit702;
      word limit704;
      var←c92548 = (* (( (ptr) selSeq←v27268)+1) );
      if (XR←ExtractField(var←c92548, 32 + (word) (
            limit702 = (*  (ptr) var←c92548 ),
            BCK(segNum←v14772, limit702)
            ), 1)) {
         {
            word limit703;
            var←c92580 = (* (( (ptr) selSeq←v27268)+2) );
            var←c92612 = (* ((( (ptr) var←c92580)+1)+(
                  limit703 = (*  (ptr) var←c92580 ),
                  BCK(segNum←v14772, limit703)
                  )) );
            };
         tc701 =  (word)  ! XR←ExtractField(var←c92612, 32 + (word) (
               limit704 = (*  (ptr) var←c92612 ),
               BCK(0, limit704)
               ), 1);
         }
      else {
         tc701 =  (word) 0;
         };
      if (tc701) {
SOURCE(53959, 45)
         {
            word pd705;
            pd705 = (* (( (ptr) (*  (ptr) seg←v14800 ))+16) );
            (void) ( *( (fPt) ((*  (ptr) pd705 ))))((word) &ctrlPoint←v27184, seg←v14800, 0, pd705);
            };
SOURCE(54006, 54)
         {
            word pd706;
            pd706 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
            (void) ( *( (fPt) ((*  (ptr) pd706 ))))((word) &dirVec←v27128, (*  (W2Pt) (( (ptr) seg←v14800)+9) ), ctrlPoint←v27184, pd706)
            ;
            };
SOURCE(54062, 82)
         {
            W2 var←c92644;
            {
               word pd707;
               pd707 = (* (( (ptr) (* (( (ptr) gf←c97828)+173)/* var←c91716 */  ))+5) );
               (void) ( *( (fPt) ((*  (ptr) pd707 ))))((word) &var←c92644, transform←v14828, (*  (W2Pt) (( (ptr) seg←v14800)+9) ), pd707)
               ;
               };
            {
               word pd708;
               pd708 = (* (( (ptr) (* (( (ptr) gf←c97828)+164)/* var←c84836 */  ))+28) );
               (void) ( *( (fPt) ((*  (ptr) pd708 ))))(seg←v14800, 1, var←c92644, pd708);
               };
            };
SOURCE(54146, 96)
         {
            W2 var←c92676;
            {
               word pd709;
               pd709 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
               (void) ( *( (fPt) ((*  (ptr) pd709 ))))((word) &var←c92676, ctrlPoint←v27184, (*  (W2Pt) (( (ptr) seg←v14800)+9) ), pd709)
               ;
               };
            {
               word pd710;
               pd710 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+10) );
               partialTransform←v27240 = (word) ( *( (fPt) ((*  (ptr) pd710 ))))(var←c92676, pd710);
               };
            };
SOURCE(54244, 387)
         if ((editConstraints←v14856 == 1)) {
            {
               W2 var←c92708;
SOURCE(54324, 48)
               {
                  word pd711;
                  pd711 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+19) );
                  distance←v27156 = (word) ( *( (fPt) ((*  (ptr) pd711 ))))((*  (W2Pt) (( (ptr) seg←v14800)+9) ), ctrlPoint←v27184, pd711);
                  };
SOURCE(54374, 59)
               var←c92708.f0 = (*  (ptr) &fc123 );
               var←c92708.f1 = (*  (ptr) &fc123 );
               if ( ! XR←EqualWords(&dirVec←v27128, &var←c92708, 2)) {
SOURCE(54397, 36)
                  {
                     word pd712;
                     pd712 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+13) );
                     (void) ( *( (fPt) ((*  (ptr) pd712 ))))((word) &dirVec←v27128, dirVec←v27128, pd712);
                     };
                  };
SOURCE(54452, 98)
               {
                  W2 var←c92740;
                  {
                     word pd713;
                     pd713 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+12) );
                     (void) ( *( (fPt) ((*  (ptr) pd713 ))))((word) &var←c92740, dirVec←v27128, distance←v27156, pd713);
                     };
                  {
                     word pd714;
                     pd714 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+22) );
                     ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd714 ))))(partialTransform←v27240, var←c92740, pd714);
                     };
                  };
               };
            }
         else {
SOURCE(54559, 72)
            {
               word pd715;
               pd715 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+22) );
               ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd715 ))))(partialTransform←v27240, dirVec←v27128, pd715);
               };
            };
SOURCE(54633, 46)
         {
            word pd716;
            pd716 = (* (( (ptr) (*  (ptr) seg←v14800 ))+10) );
            (void) ( *( (fPt) ((*  (ptr) pd716 ))))(seg←v14800, ctrlTrans←v27212, 0, pd716);
            };
         }
      else {
SOURCE(54690, 1851)
         {
            word limit718;
            {
               word var←c92772;
               var←c92772 = (* (( (ptr) selSeq←v27268)+2) );
               {
                  word limit717;
                  var←c92804 = (* ((( (ptr) var←c92772)+1)+(
                        limit717 = (*  (ptr) var←c92772 ),
                        BCK(segNum←v14772, limit717)
                        )) );
                  };
               };
            if (XR←ExtractField(var←c92804, 32 + (word) (
                  limit718 = (*  (ptr) var←c92804 ),
                  BCK(0, limit718)
                  ), 1)) {
SOURCE(54732, 112)
               {
                  word limit719;
                  var←c92836 = (* (( (ptr) selSeq←v27268)+1) );
                  if (XR←ExtractField(var←c92836, 32 + (word) (
                        limit719 = (*  (ptr) var←c92836 ),
                        BCK(segNum←v14772, limit719)
                        ), 1)) {
SOURCE(54762, 82)
                     {
                        W2 var←c92868;
                        {
                           word pd720;
                           pd720 = (* (( (ptr) (* (( (ptr) gf←c97828)+173)/* var←c91716 */  ))+5) );
                           (void) ( *( (fPt) ((*  (ptr) pd720 ))))((word) &var←c92868, transform←v14828, (*  (W2Pt) (( (ptr) seg←v14800)+9) ), pd720)
                           ;
                           };
                        {
                           word pd721;
                           pd721 = (* (( (ptr) (* (( (ptr) gf←c97828)+164)/* var←c84836 */  ))+28) );
                           (void) ( *( (fPt) ((*  (ptr) pd721 ))))(seg←v14800, 1, var←c92868, pd721);
                           };
                        };
                     };
                  };
               }
            else {
SOURCE(54853, 1696)
               {
                  word prevSegNum←v27312;
                  word var←c92932;
SOURCE(54930, 58)
                  {
                     word pd722;
                     pd722 = (* (( (ptr) (* (( (ptr) gf←c97828)+161)/* var←c84516 */  ))+42) );
                     prevSegNum←v27312 = (word) ( *( (fPt) ((*  (ptr) pd722 ))))(slice←v14716, segNum←v14772, pd722);
                     };
SOURCE(54990, 1551)
                  {
                     word tc723;
                     word pd724;
                     if (( (int)prevSegNum←v27312 !=  (int) (word) -1)) {
                        pd724 = (* (( (ptr) (* (( (ptr) gf←c97828)+161)/* var←c84516 */  ))+29) );
                        tc723 =  (word) ((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd724 ))))(slice←v14716, SGNCK(prevSegNum←v27312), pd724) ) ) == (* (
                           ( (ptr) gf←c97828)+27) ));
                        }
                     else {
                        tc723 =  (word) 0;
                        };
                     if (tc723) {
SOURCE(55082, 1459)
                        {
                           word limit726;
                           {
/*1*/   word var←c92900;
/*1*/   var←c92900 = (* (( (ptr) selSeq←v27268)+2) );
/*1*/   {
/*1*/      word limit725;
/*1*/      var←c92932 = (* ((( (ptr) var←c92900)+1)+(
/*1*/            limit725 = (*  (ptr) var←c92900 ),
/*1*/            BCK(prevSegNum←v27312, limit725)
/*1*/            )) );
/*1*/      };
/*1*/   };
                           if (XR←ExtractField(var←c92932, 32 + (word) (
/*1*/      limit726 = (*  (ptr) var←c92932 ),
/*1*/      BCK(1, limit726)
/*1*/      ), 1)) {
SOURCE(55126, 1417)
/*1*/   {
/*1*/      word angle←v27356;
/*1*/      W2 transformedPoint←v27384;
/*1*/      W2 otherCtrlPoint←v27412;
/*1*/      W2 otherDirVector←v27440;
/*1*/      W2 var←c93060;
/*1*/      W2 var←c93156;
SOURCE(55166, 92)
/*1*/      {
/*1*/         word var←c92964;
/*1*/         {
/*1*/            word pd727;
/*1*/            pd727 = (* (( (ptr) (* (( (ptr) gf←c97828)+161)/* var←c84516 */  ))+29) );
/*1*/            var←c92964 = (word) ( *( (fPt) ((*  (ptr) pd727 ))))(slice←v14716, SGNCK(prevSegNum←v27312), pd727);
/*1*/            };
/*1*/         {
/*1*/            word pd728;
/*1*/            pd728 = (* (( (ptr) (*  (ptr) seg←v14800 ))+16) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd728 ))))((word) &otherCtrlPoint←v27412, var←c92964, 1, pd728);
/*1*/            };
/*1*/         };
SOURCE(55260, 75)
/*1*/      {
/*1*/         word pd729;
/*1*/         pd729 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd729 ))))((word) &otherDirVector←v27440, (*  (W2Pt) (( (ptr) seg←v14800)+9) ), otherCtrlPoint←v27412, pd729)
/*1*/         ;
/*1*/         };
SOURCE(55337, 45)
/*1*/      {
/*1*/         word pd730;
/*1*/         pd730 = (* (( (ptr) (*  (ptr) seg←v14800 ))+16) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd730 ))))((word) &ctrlPoint←v27184, seg←v14800, 0, pd730);
/*1*/         };
SOURCE(55384, 54)
/*1*/      {
/*1*/         word pd731;
/*1*/         pd731 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd731 ))))((word) &dirVec←v27128, (*  (W2Pt) (( (ptr) seg←v14800)+9) ), ctrlPoint←v27184, pd731)
/*1*/         ;
/*1*/         };
SOURCE(55440, 38)
/*1*/      {
/*1*/         word pd732;
/*1*/         pd732 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+18) );
/*1*/         distance←v27156 = (word) ( *( (fPt) ((*  (ptr) pd732 ))))(dirVec←v27128, pd732);
/*1*/         };
SOURCE(55480, 76)
/*1*/      {
/*1*/         word pd733;
/*1*/         pd733 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+39) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd733 ))))((word) &transformedPoint←v27384, transform←v14828, otherCtrlPoint←v27412, pd733);
/*1*/         };
SOURCE(55558, 115)
/*1*/      {
/*1*/         W2 var←c92996;
/*1*/         {
/*1*/            word pd734;
/*1*/            pd734 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd734 ))))((word) &var←c92996, (*  (W2Pt) (( (ptr) seg←v14800)+9) ), transformedPoint←v27384, pd734)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd735;
/*1*/            pd735 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+9) );
/*1*/            angle←v27356 = (word) ( *( (fPt) ((*  (ptr) pd735 ))))(otherDirVector←v27440, var←c92996, pd735);
/*1*/            };
/*1*/         };
SOURCE(55675, 96)
/*1*/      {
/*1*/         W2 var←c93028;
/*1*/         {
/*1*/            word pd736;
/*1*/            pd736 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd736 ))))((word) &var←c93028, ctrlPoint←v27184, (*  (W2Pt) (( (ptr) seg←v14800)+9) ), pd736)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd737;
/*1*/            pd737 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+10) );
/*1*/            partialTransform←v27240 = (word) ( *( (fPt) ((*  (ptr) pd737 ))))(var←c93028, pd737);
/*1*/            };
/*1*/         };
SOURCE(55774, 703)
/*1*/      if ((editConstraints←v14856 == 1)) {
SOURCE(55810, 283)
/*1*/         {
/*1*/            word tc738;
/*1*/            if ( ! XR←EqualWords(&transformedPoint←v27384, (( (ptr) seg←v14800)+9), 2)) {
/*1*/               var←c93060.f0 = (*  (ptr) &fc123 );
/*1*/               var←c93060.f1 = (*  (ptr) &fc123 );
/*1*/               tc738 =  (word)  ! XR←EqualWords(&otherDirVector←v27440, &var←c93060, 2);
/*1*/               }
/*1*/            else {
/*1*/               tc738 =  (word) 0;
/*1*/               };
/*1*/            if (tc738) {
SOURCE(55910, 133)
/*1*/               {
/*1*/                  W2 var←c93092;
/*1*/                  {
/*1*/                     W2 var←c93124;
/*1*/                     {
/*1*/                        word pd739;
/*1*/                        pd739 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+5) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd739 ))))((word) &var←c93124, dirVec←v27128, angle←v27356, pd739);
/*1*/                        };
/*1*/                     {
/*1*/                        W2 var←c0993;
/*1*/                        {
/*1*/                           word pd740;
/*1*/                           pd740 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+12) );
/*1*/                           (void) ( *( (fPt) ((*  (ptr) pd740 ))))((word) &var←c0993, var←c93124, distance←v27156, pd740);
/*1*/                           };
/*1*/                        var←c93092 = var←c0993;
/*1*/                        };
/*1*/                     };
/*1*/                  {
/*1*/                     word pd741;
/*1*/                     pd741 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+22) );
/*1*/                     ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd741 ))))(partialTransform←v27240, var←c93092, pd741);
/*1*/                     };
/*1*/                  };
/*1*/               }
/*1*/            else {
SOURCE(56052, 41)
/*1*/               {
/*1*/                  word pd742;
/*1*/                  pd742 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+7) );
/*1*/                  ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd742 ))))((*  (ptr) (&fc57) ), pd742);
/*1*/                  };
/*1*/               };
/*1*/            };
/*1*/         }
/*1*/      else {
SOURCE(56127, 350)
/*1*/         var←c93156.f0 = (*  (ptr) &fc123 );
/*1*/         var←c93156.f1 = (*  (ptr) &fc123 );
/*1*/         if ( ! XR←EqualWords(&otherDirVector←v27440, &var←c93156, 2)) {
SOURCE(56160, 132)
/*1*/            {
/*1*/               word var←c93188;
/*1*/               word var←c01274;
/*1*/               {
/*1*/                  word pd743;
/*1*/                  word x744;
/*1*/                  word pd745;
/*1*/                  word x746;
/*1*/                  pd743 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+21) );
/*1*/                  pd745 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+20) );
/*1*/                  *(float*)&var←c93188 = (
/*1*/                     x744 = (word) ( *( (fPt) ((*  (ptr) pd743 ))))((*  (W2Pt) (( (ptr) seg←v14800)+9) ), transformedPoint←v27384, pd743),  *(float*)&x744
/*1*/                     ) / (
/*1*/                     x746 = (word) ( *( (fPt) ((*  (ptr) pd745 ))))(otherDirVector←v27440, pd745),  *(float*)&x746
/*1*/                     );
/*1*/                  };
/*1*/               {
/*1*/                  word pd747;
/*1*/                  pd747 = (* (( (ptr) (* (( (ptr) gf←c97828)+166)/* var←c85540 */  ))+9) );
/*1*/                  var←c01274 = (word) ( *( (fPt) ((*  (ptr) pd747 ))))(var←c93188, pd747);
/*1*/                  };
/*1*/               {
/*1*/                  word x748;
/*1*/                  word x749;
/*1*/                  *(float*)&distance←v27156 = (
/*1*/                     x748 = var←c01274,  *(float*)&x748
/*1*/                     ) * (
/*1*/                     x749 = distance←v27156,  *(float*)&x749
/*1*/                     );
/*1*/                  };
/*1*/               };
SOURCE(56294, 133)
/*1*/            {
/*1*/               W2 var←c93220;
/*1*/               {
/*1*/                  W2 var←c93252;
/*1*/                  {
/*1*/                     word pd750;
/*1*/                     pd750 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+5) );
/*1*/                     (void) ( *( (fPt) ((*  (ptr) pd750 ))))((word) &var←c93252, dirVec←v27128, angle←v27356, pd750);
/*1*/                     };
/*1*/                  {
/*1*/                     W2 var←c0999;
/*1*/                     {
/*1*/                        word pd751;
/*1*/                        pd751 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+12) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd751 ))))((word) &var←c0999, var←c93252, distance←v27156, pd751);
/*1*/                        };
/*1*/                     var←c93220 = var←c0999;
/*1*/                     };
/*1*/                  };
/*1*/               {
/*1*/                  word pd752;
/*1*/                  pd752 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+22) );
/*1*/                  ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd752 ))))(partialTransform←v27240, var←c93220, pd752);
/*1*/                  };
/*1*/               };
/*1*/            }
/*1*/         else {
SOURCE(56436, 41)
/*1*/            {
/*1*/               word pd753;
/*1*/               pd753 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+7) );
/*1*/               ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd753 ))))((*  (ptr) (&fc57) ), pd753);
/*1*/               };
/*1*/            };
/*1*/         };
SOURCE(56495, 46)
/*1*/      {
/*1*/         word pd754;
/*1*/         pd754 = (* (( (ptr) (*  (ptr) seg←v14800 ))+10) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd754 ))))(seg←v14800, ctrlTrans←v27212, 0, pd754);
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
         };
      };
SOURCE(56557, 51)
   {
      word pd755;
      word idx756;
      pd755 = (* (( (ptr) (* (( (ptr) gf←c97828)+161)/* var←c84516 */  ))+44) );
      nextJointNum←v27100 = (
         idx756 = (word) ( *( (fPt) ((*  (ptr) pd755 ))))(slice←v14716, segNum←v14772, pd755),
         SGNCK(idx756)
         );
      };
SOURCE(56611, 2662)
   {
      word tc757;
      word limit758;
      word limit760;
      var←c93284 = (* (( (ptr) selSeq←v27268)+1) );
      if (XR←ExtractField(var←c93284, 32 + (word) (
            limit758 = (*  (ptr) var←c93284 ),
            BCK(nextJointNum←v27100, limit758)
            ), 1)) {
         {
            word limit759;
            var←c93316 = (* (( (ptr) selSeq←v27268)+2) );
            var←c93348 = (* ((( (ptr) var←c93316)+1)+(
                  limit759 = (*  (ptr) var←c93316 ),
                  BCK(segNum←v14772, limit759)
                  )) );
            };
         tc757 =  (word)  ! XR←ExtractField(var←c93348, 32 + (word) (
               limit760 = (*  (ptr) var←c93348 ),
               BCK(1, limit760)
               ), 1);
         }
      else {
         tc757 =  (word) 0;
         };
      if (tc757) {
SOURCE(56713, 45)
         {
            word pd761;
            pd761 = (* (( (ptr) (*  (ptr) seg←v14800 ))+16) );
            (void) ( *( (fPt) ((*  (ptr) pd761 ))))((word) &ctrlPoint←v27184, seg←v14800, 1, pd761);
            };
SOURCE(56760, 54)
         {
            word pd762;
            pd762 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
            (void) ( *( (fPt) ((*  (ptr) pd762 ))))((word) &dirVec←v27128, (*  (W2Pt) (( (ptr) seg←v14800)+11) ), ctrlPoint←v27184, pd762)
            ;
            };
SOURCE(56816, 83)
         {
            W2 var←c93380;
            {
               word pd763;
               pd763 = (* (( (ptr) (* (( (ptr) gf←c97828)+173)/* var←c91716 */  ))+5) );
               (void) ( *( (fPt) ((*  (ptr) pd763 ))))((word) &var←c93380, transform←v14828, (*  (W2Pt) (( (ptr) seg←v14800)+11) ), pd763)
               ;
               };
            {
               word pd764;
               pd764 = (* (( (ptr) (* (( (ptr) gf←c97828)+164)/* var←c84836 */  ))+28) );
               (void) ( *( (fPt) ((*  (ptr) pd764 ))))(seg←v14800, 0, var←c93380, pd764);
               };
            };
SOURCE(56901, 96)
         {
            W2 var←c93412;
            {
               word pd765;
               pd765 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
               (void) ( *( (fPt) ((*  (ptr) pd765 ))))((word) &var←c93412, ctrlPoint←v27184, (*  (W2Pt) (( (ptr) seg←v14800)+11) ), pd765)
               ;
               };
            {
               word pd766;
               pd766 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+10) );
               partialTransform←v27240 = (word) ( *( (fPt) ((*  (ptr) pd766 ))))(var←c93412, pd766);
               };
            };
SOURCE(56999, 343)
         if ((editConstraints←v14856 == 1)) {
            {
               W2 var←c93444;
SOURCE(57035, 48)
               {
                  word pd767;
                  pd767 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+19) );
                  distance←v27156 = (word) ( *( (fPt) ((*  (ptr) pd767 ))))((*  (W2Pt) (( (ptr) seg←v14800)+11) ), ctrlPoint←v27184, pd767)
                  ;
                  };
SOURCE(57085, 59)
               var←c93444.f0 = (*  (ptr) &fc123 );
               var←c93444.f1 = (*  (ptr) &fc123 );
               if ( ! XR←EqualWords(&dirVec←v27128, &var←c93444, 2)) {
SOURCE(57108, 36)
                  {
                     word pd768;
                     pd768 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+13) );
                     (void) ( *( (fPt) ((*  (ptr) pd768 ))))((word) &dirVec←v27128, dirVec←v27128, pd768);
                     };
                  };
SOURCE(57163, 98)
               {
                  W2 var←c93476;
                  {
                     word pd769;
                     pd769 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+12) );
                     (void) ( *( (fPt) ((*  (ptr) pd769 ))))((word) &var←c93476, dirVec←v27128, distance←v27156, pd769);
                     };
                  {
                     word pd770;
                     pd770 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+22) );
                     ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd770 ))))(partialTransform←v27240, var←c93476, pd770);
                     };
                  };
               };
            }
         else {
SOURCE(57270, 72)
            {
               word pd771;
               pd771 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+22) );
               ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd771 ))))(partialTransform←v27240, dirVec←v27128, pd771);
               };
            };
SOURCE(57344, 46)
         {
            word pd772;
            pd772 = (* (( (ptr) (*  (ptr) seg←v14800 ))+10) );
            (void) ( *( (fPt) ((*  (ptr) pd772 ))))(seg←v14800, ctrlTrans←v27212, 1, pd772);
            };
         }
      else {
SOURCE(57418, 1855)
         {
            word limit774;
            {
               word var←c93508;
               var←c93508 = (* (( (ptr) selSeq←v27268)+2) );
               {
                  word limit773;
                  var←c93540 = (* ((( (ptr) var←c93508)+1)+(
                        limit773 = (*  (ptr) var←c93508 ),
                        BCK(segNum←v14772, limit773)
                        )) );
                  };
               };
            if (XR←ExtractField(var←c93540, 32 + (word) (
                  limit774 = (*  (ptr) var←c93540 ),
                  BCK(1, limit774)
                  ), 1)) {
SOURCE(57460, 119)
               {
                  word limit775;
                  var←c93572 = (* (( (ptr) selSeq←v27268)+1) );
                  if (XR←ExtractField(var←c93572, 32 + (word) (
                        limit775 = (*  (ptr) var←c93572 ),
                        BCK(nextJointNum←v27100, limit775)
                        ), 1)) {
SOURCE(57496, 83)
                     {
                        W2 var←c93604;
                        {
                           word pd776;
                           pd776 = (* (( (ptr) (* (( (ptr) gf←c97828)+173)/* var←c91716 */  ))+5) );
                           (void) ( *( (fPt) ((*  (ptr) pd776 ))))((word) &var←c93604, transform←v14828, (*  (W2Pt) (( (ptr) seg←v14800)+11) ), pd776)
                           ;
                           };
                        {
                           word pd777;
                           pd777 = (* (( (ptr) (* (( (ptr) gf←c97828)+164)/* var←c84836 */  ))+28) );
                           (void) ( *( (fPt) ((*  (ptr) pd777 ))))(seg←v14800, 0, var←c93604, pd777);
                           };
                        };
                     };
                  };
               }
            else {
SOURCE(57588, 1693)
               {
                  word nextSegNum←v27484;
                  word var←c93668;
SOURCE(57665, 59)
                  {
                     word pd778;
                     pd778 = (* (( (ptr) (* (( (ptr) gf←c97828)+161)/* var←c84516 */  ))+43) );
                     nextSegNum←v27484 = (word) ( *( (fPt) ((*  (ptr) pd778 ))))(slice←v14716, segNum←v14772, pd778);
                     };
SOURCE(57726, 1547)
                  {
                     word tc779;
                     word pd780;
                     if (( (int)nextSegNum←v27484 !=  (int) (word) -1)) {
                        pd780 = (* (( (ptr) (* (( (ptr) gf←c97828)+161)/* var←c84516 */  ))+29) );
                        tc779 =  (word) ((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd780 ))))(slice←v14716, SGNCK(nextSegNum←v27484), pd780) ) ) == (* (
                           ( (ptr) gf←c97828)+27) ));
                        }
                     else {
                        tc779 =  (word) 0;
                        };
                     if (tc779) {
SOURCE(57816, 1457)
                        {
                           word limit782;
                           {
/*1*/   word var←c93636;
/*1*/   var←c93636 = (* (( (ptr) selSeq←v27268)+2) );
/*1*/   {
/*1*/      word limit781;
/*1*/      var←c93668 = (* ((( (ptr) var←c93636)+1)+(
/*1*/            limit781 = (*  (ptr) var←c93636 ),
/*1*/            BCK(nextSegNum←v27484, limit781)
/*1*/            )) );
/*1*/      };
/*1*/   };
                           if (XR←ExtractField(var←c93668, 32 + (word) (
/*1*/      limit782 = (*  (ptr) var←c93668 ),
/*1*/      BCK(0, limit782)
/*1*/      ), 1)) {
SOURCE(57860, 1415)
/*1*/   {
/*1*/      word angle←v27528;
/*1*/      W2 transformedPoint←v27556;
/*1*/      W2 otherCtrlPoint←v27584;
/*1*/      W2 otherDirVector←v27612;
/*1*/      W2 var←c93796;
/*1*/      W2 var←c93892;
SOURCE(57900, 92)
/*1*/      {
/*1*/         word var←c93700;
/*1*/         {
/*1*/            word pd783;
/*1*/            pd783 = (* (( (ptr) (* (( (ptr) gf←c97828)+161)/* var←c84516 */  ))+29) );
/*1*/            var←c93700 = (word) ( *( (fPt) ((*  (ptr) pd783 ))))(slice←v14716, SGNCK(nextSegNum←v27484), pd783);
/*1*/            };
/*1*/         {
/*1*/            word pd784;
/*1*/            pd784 = (* (( (ptr) (*  (ptr) seg←v14800 ))+16) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd784 ))))((word) &otherCtrlPoint←v27584, var←c93700, 0, pd784);
/*1*/            };
/*1*/         };
SOURCE(57994, 75)
/*1*/      {
/*1*/         word pd785;
/*1*/         pd785 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd785 ))))((word) &otherDirVector←v27612, (*  (W2Pt) (( (ptr) seg←v14800)+11) ), otherCtrlPoint←v27584, pd785)
/*1*/         ;
/*1*/         };
SOURCE(58071, 45)
/*1*/      {
/*1*/         word pd786;
/*1*/         pd786 = (* (( (ptr) (*  (ptr) seg←v14800 ))+16) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd786 ))))((word) &ctrlPoint←v27184, seg←v14800, 1, pd786);
/*1*/         };
SOURCE(58118, 54)
/*1*/      {
/*1*/         word pd787;
/*1*/         pd787 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd787 ))))((word) &dirVec←v27128, (*  (W2Pt) (( (ptr) seg←v14800)+11) ), ctrlPoint←v27184, pd787)
/*1*/         ;
/*1*/         };
SOURCE(58174, 38)
/*1*/      {
/*1*/         word pd788;
/*1*/         pd788 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+18) );
/*1*/         distance←v27156 = (word) ( *( (fPt) ((*  (ptr) pd788 ))))(dirVec←v27128, pd788);
/*1*/         };
SOURCE(58214, 76)
/*1*/      {
/*1*/         word pd789;
/*1*/         pd789 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+39) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd789 ))))((word) &transformedPoint←v27556, transform←v14828, otherCtrlPoint←v27584, pd789);
/*1*/         };
SOURCE(58292, 115)
/*1*/      {
/*1*/         W2 var←c93732;
/*1*/         {
/*1*/            word pd790;
/*1*/            pd790 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd790 ))))((word) &var←c93732, (*  (W2Pt) (( (ptr) seg←v14800)+11) ), transformedPoint←v27556, pd790)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd791;
/*1*/            pd791 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+9) );
/*1*/            angle←v27528 = (word) ( *( (fPt) ((*  (ptr) pd791 ))))(otherDirVector←v27612, var←c93732, pd791);
/*1*/            };
/*1*/         };
SOURCE(58409, 96)
/*1*/      {
/*1*/         W2 var←c93764;
/*1*/         {
/*1*/            word pd792;
/*1*/            pd792 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+22) );
/*1*/            (void) ( *( (fPt) ((*  (ptr) pd792 ))))((word) &var←c93764, ctrlPoint←v27184, (*  (W2Pt) (( (ptr) seg←v14800)+11) ), pd792)
/*1*/            ;
/*1*/            };
/*1*/         {
/*1*/            word pd793;
/*1*/            pd793 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+10) );
/*1*/            partialTransform←v27240 = (word) ( *( (fPt) ((*  (ptr) pd793 ))))(var←c93764, pd793);
/*1*/            };
/*1*/         };
SOURCE(58508, 702)
/*1*/      if ((editConstraints←v14856 == 1)) {
SOURCE(58544, 283)
/*1*/         {
/*1*/            word tc794;
/*1*/            if ( ! XR←EqualWords(&transformedPoint←v27556, (( (ptr) seg←v14800)+11), 2)) {
/*1*/               var←c93796.f0 = (*  (ptr) &fc123 );
/*1*/               var←c93796.f1 = (*  (ptr) &fc123 );
/*1*/               tc794 =  (word)  ! XR←EqualWords(&otherDirVector←v27612, &var←c93796, 2);
/*1*/               }
/*1*/            else {
/*1*/               tc794 =  (word) 0;
/*1*/               };
/*1*/            if (tc794) {
SOURCE(58644, 133)
/*1*/               {
/*1*/                  W2 var←c93828;
/*1*/                  {
/*1*/                     W2 var←c93860;
/*1*/                     {
/*1*/                        word pd795;
/*1*/                        pd795 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+5) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd795 ))))((word) &var←c93860, dirVec←v27128, angle←v27528, pd795);
/*1*/                        };
/*1*/                     {
/*1*/                        W2 var←c01039;
/*1*/                        {
/*1*/                           word pd796;
/*1*/                           pd796 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+12) );
/*1*/                           (void) ( *( (fPt) ((*  (ptr) pd796 ))))((word) &var←c01039, var←c93860, distance←v27156, pd796);
/*1*/                           };
/*1*/                        var←c93828 = var←c01039;
/*1*/                        };
/*1*/                     };
/*1*/                  {
/*1*/                     word pd797;
/*1*/                     pd797 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+22) );
/*1*/                     ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd797 ))))(partialTransform←v27240, var←c93828, pd797);
/*1*/                     };
/*1*/                  };
/*1*/               }
/*1*/            else {
SOURCE(58786, 41)
/*1*/               {
/*1*/                  word pd798;
/*1*/                  pd798 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+7) );
/*1*/                  ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd798 ))))((*  (ptr) (&fc57) ), pd798);
/*1*/                  };
/*1*/               };
/*1*/            };
/*1*/         }
/*1*/      else {
SOURCE(58860, 350)
/*1*/         var←c93892.f0 = (*  (ptr) &fc123 );
/*1*/         var←c93892.f1 = (*  (ptr) &fc123 );
/*1*/         if ( ! XR←EqualWords(&otherDirVector←v27612, &var←c93892, 2)) {
SOURCE(58893, 132)
/*1*/            {
/*1*/               word var←c93924;
/*1*/               word var←c01275;
/*1*/               {
/*1*/                  word pd799;
/*1*/                  word x800;
/*1*/                  word pd801;
/*1*/                  word x802;
/*1*/                  pd799 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+21) );
/*1*/                  pd801 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+20) );
/*1*/                  *(float*)&var←c93924 = (
/*1*/                     x800 = (word) ( *( (fPt) ((*  (ptr) pd799 ))))((*  (W2Pt) (( (ptr) seg←v14800)+11) ), transformedPoint←v27556, pd799),  *(float*)&x800
/*1*/                     ) / (
/*1*/                     x802 = (word) ( *( (fPt) ((*  (ptr) pd801 ))))(otherDirVector←v27612, pd801),  *(float*)&x802
/*1*/                     );
/*1*/                  };
/*1*/               {
/*1*/                  word pd803;
/*1*/                  pd803 = (* (( (ptr) (* (( (ptr) gf←c97828)+166)/* var←c85540 */  ))+9) );
/*1*/                  var←c01275 = (word) ( *( (fPt) ((*  (ptr) pd803 ))))(var←c93924, pd803);
/*1*/                  };
/*1*/               {
/*1*/                  word x804;
/*1*/                  word x805;
/*1*/                  *(float*)&distance←v27156 = (
/*1*/                     x804 = var←c01275,  *(float*)&x804
/*1*/                     ) * (
/*1*/                     x805 = distance←v27156,  *(float*)&x805
/*1*/                     );
/*1*/                  };
/*1*/               };
SOURCE(59027, 133)
/*1*/            {
/*1*/               W2 var←c93956;
/*1*/               {
/*1*/                  W2 var←c93988;
/*1*/                  {
/*1*/                     word pd806;
/*1*/                     pd806 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+5) );
/*1*/                     (void) ( *( (fPt) ((*  (ptr) pd806 ))))((word) &var←c93988, dirVec←v27128, angle←v27528, pd806);
/*1*/                     };
/*1*/                  {
/*1*/                     W2 var←c01045;
/*1*/                     {
/*1*/                        word pd807;
/*1*/                        pd807 = (* (( (ptr) (* (( (ptr) gf←c97828)+165)/* var←c85028 */  ))+12) );
/*1*/                        (void) ( *( (fPt) ((*  (ptr) pd807 ))))((word) &var←c01045, var←c93988, distance←v27156, pd807);
/*1*/                        };
/*1*/                     var←c93956 = var←c01045;
/*1*/                     };
/*1*/                  };
/*1*/               {
/*1*/                  word pd808;
/*1*/                  pd808 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+22) );
/*1*/                  ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd808 ))))(partialTransform←v27240, var←c93956, pd808);
/*1*/                  };
/*1*/               };
/*1*/            }
/*1*/         else {
SOURCE(59169, 41)
/*1*/            {
/*1*/               word pd809;
/*1*/               pd809 = (* (( (ptr) (* (( (ptr) gf←c97828)+156)/* var←c83940 */  ))+7) );
/*1*/               ctrlTrans←v27212 = (word) ( *( (fPt) ((*  (ptr) pd809 ))))((*  (ptr) (&fc57) ), pd809);
/*1*/               };
/*1*/            };
/*1*/         };
SOURCE(59227, 46)
/*1*/      {
/*1*/         word pd810;
/*1*/         pd810 = (* (( (ptr) (*  (ptr) seg←v14800 ))+10) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd810 ))))(seg←v14800, ctrlTrans←v27212, 1, pd810);
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
         };
      };
   }

static word TrajIsEmptyParts←P2700(sliceD←v14916)
   word sliceD←v14916;
   {
   register ptr gf←c97860 =  (ptr) &globalframe;
   word var←c14960;
   word trajParts←v27656;
   /* TrajIsEmptyParts: */ 
SOURCE(59290, 174)
SOURCE(59290, 174)
   var←c14960 = 1;
SOURCE(59365, 43)
   trajParts←v27656 = XR←Narrow((* (( (ptr) sliceD←v14916)+1) ), (* (( (ptr) gf←c97860)+15) ));
SOURCE(59410, 54)
   {
      word tc811;
      word pd812;
      if ((trajParts←v27656 == 0)) {
         tc811 =  (word)  (unsigned) 1;
         }
      else {
         pd812 = (* (( (ptr) (* (( (ptr) gf←c97860)+159)/* var←c84100 */  ))+25) );
         tc811 =  (word)  (unsigned) (0 != (word) ( *( (fPt) ((*  (ptr) pd812 ))))(trajParts←v27656, pd812));
         };
      return(tc811);
      };
   }

static word TrajIsCompleteParts←P2760(sliceD←v15020)
   word sliceD←v15020;
   {
   register ptr gf←c97892 =  (ptr) &globalframe;
   word var←c15064;
   word trajParts←v27700;
   /* TrajIsCompleteParts: */ 
SOURCE(59470, 182)
SOURCE(59470, 182)
   var←c15064 = 0;
SOURCE(59549, 43)
   trajParts←v27700 = XR←Narrow((* (( (ptr) sliceD←v15020)+1) ), (* (( (ptr) gf←c97892)+15) ));
SOURCE(59594, 58)
   {
      word tc813;
      word pd814;
      if ((trajParts←v27700 != 0)) {
         pd814 = (* (( (ptr) (* (( (ptr) gf←c97892)+159)/* var←c84100 */  ))+26) );
         tc813 =  (word)  (unsigned) (0 != (word) ( *( (fPt) ((*  (ptr) pd814 ))))(trajParts←v27700, pd814));
         }
      else {
         tc813 =  (word)  (unsigned) 0;
         };
      return(tc813);
      };
   }

static word TrajNewParts←P2820(slice←v15124, hitData←v15152, mode←v15180)
   word slice←v15124;
   word hitData←v15152;
   word mode←v15180;
   {
   register ptr gf←c97924 =  (ptr) &globalframe;
   word sliceD←v15240;
   word trajParts←v27744 = 0;
   word trajData←v27772;
   word trajHitData←v27800;
   /* TrajNewParts: */ 
SOURCE(59658, 2605)
SOURCE(59658, 2605)
   sliceD←v15240 = 0;
SOURCE(59788, 39)
   trajData←v27772 = XR←Narrow((* (( (ptr) slice←v15124)+1) ), (* (( (ptr) gf←c97924)+10) ));
SOURCE(59829, 42)
   trajHitData←v27800 = XR←Narrow(hitData←v15152, (* (( (ptr) gf←c97924)+18) ));
SOURCE(59873, 2313)
   {
      word var←c94084;
      var←c94084 = mode←v15180;
      switch (var←c94084) {
         case 0: 
SOURCE(59901, 372)
            {
               word hitType←v27844;
               word segNum←v27872;
               word cpNum←v27900;
               word jointNum←v27928;
SOURCE(59951, 72)
               {
                  W6 var←c94116;
                  {
                     word pd815;
                     pd815 = (* (( (ptr) (* (( (ptr) gf←c97924)+161)/* var←c84516 */  ))+53) );
                     (void) ( *( (fPt) ((*  (ptr) pd815 ))))((word) &var←c94116, hitData←v15152, pd815);
                     };
                  jointNum←v27928 = var←c94116.f3;
                  cpNum←v27900 = var←c94116.f2;
                  segNum←v27872 = var←c94116.f1;
                  hitType←v27844 = var←c94116.f0;
                  };
SOURCE(60025, 246)
               {
                  word var←c94148;
                  var←c94148 = hitType←v27844;
                  {
                     word pd816;
                     word pd817;
                     word pd818;
                     switch (var←c94148) {
                        case 1: 
                           pd816 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+8) );
                           trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd816 ))))(trajData←v27772, SGNCK(jointNum←v27928), pd816);
                           break;
                        case 2: 
                           pd817 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+11) );
                           trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd817 ))))(trajData←v27772, SGNCK(segNum←v27872), SGNCK(cpNum←v27900), pd817)
                           ;
                           break;
                        case 3: 
                           pd818 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+10) );
                           trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd818 ))))(trajData←v27772, SGNCK(segNum←v27872), pd818);
                           break;
                        default: 
                           trajParts←v27744 = (
/*1*/   XR←RaiseUnnamedError(), 0
/*1*/   );
                           break;
                        };
                     };
                  };
               };
            break;
         case 8: 
SOURCE(60286, 44)
            {
               word pd819;
               pd819 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+6) );
               trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd819 ))))(trajData←v27772, pd819);
               };
            break;
         case 6: 
SOURCE(60346, 47)
            {
               word pd820;
               pd820 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+7) );
               trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd820 ))))(trajData←v27772, pd820);
               };
            break;
         case 1: 
SOURCE(60409, 1242)
            {
               word var←c94180;
               var←c94180 = (*  (ptr) trajHitData←v27800 );
               switch (var←c94180) {
                  case 1: 
SOURCE(60450, 128)
                     {
                        word jointNum←v27972;
SOURCE(60467, 36)
                        {
                           word idx821;
                           jointNum←v27972 = (
/*1*/   idx821 = (* (( (ptr) trajHitData←v27800)+3) ),
/*1*/   SGNCK(idx821)
/*1*/   );
                           };
SOURCE(60505, 71)
                        {
                           word pd822;
                           pd822 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+5) );
                           trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd822 ))))(trajData←v27772, jointNum←v27972, jointNum←v27972, pd822);
                           };
                        };
                     break;
                  case 3: 
SOURCE(60592, 892)
                     {
                        word success←v28016 = 0;
                        word segNum←v28044;
                        word cpNum←v28072;
                        word jointNum←v28100;
                        W2 jointPoint←v28128;
                        W2 cpPoint←v28156;
                        W2 caretPt←v28184;
                        word seg←v28212 = 0;
SOURCE(60763, 27)
                        {
                           word idx823;
                           segNum←v28044 = (
/*1*/   idx823 = (* (( (ptr) trajHitData←v27800)+1) ),
/*1*/   SGNCK(idx823)
/*1*/   );
                           };
SOURCE(60792, 40)
                        {
                           word pd824;
                           pd824 = (* (( (ptr) (* (( (ptr) gf←c97924)+161)/* var←c84516 */  ))+29) );
                           seg←v28212 = (word) ( *( (fPt) ((*  (ptr) pd824 ))))(slice←v15124, segNum←v28044, pd824);
                           };
SOURCE(60834, 30)
                        caretPt←v28184 = (*  (W2Pt) (( (ptr) trajHitData←v27800)+4) );
SOURCE(60866, 69)
                        jointNum←v28100 = (word) NearestJointToHitSpot←P2880(caretPt←v28184, slice←v15124,  (word) -1, segNum←v28044, 3);
SOURCE(60937, 50)
                        {
                           word pd825;
                           pd825 = (* (( (ptr) (* (( (ptr) gf←c97924)+161)/* var←c84516 */  ))+32) );
                           (void) ( *( (fPt) ((*  (ptr) pd825 ))))((word) &jointPoint←v28128, slice←v15124, jointNum←v28100, pd825);
                           };
SOURCE(60989, 101)
                        {
                           W6 var←c94212;
                           {
/*1*/   word pd826;
/*1*/   pd826 = (* (( (ptr) (*  (ptr) seg←v28212 ))+19) );
/*1*/   (void) ( *( (fPt) ((*  (ptr) pd826 ))))((word) &var←c94212, seg←v28212, caretPt←v28184, (*  (ptr) &fc827 ), pd826);
/*1*/   };
                           success←v28016 = var←c94212.f5;
                           cpNum←v28072 = var←c94212.f4;
                           cpPoint←v28156 = (*  (W2Pt) &var←c94212 );
                           };
SOURCE(61092, 387)
                        if ((0 == success←v28016)) {
SOURCE(61112, 77)
                           {
/*1*/   word pd828;
/*1*/   pd828 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+5) );
/*1*/   trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd828 ))))(trajData←v27772, jointNum←v28100, jointNum←v28100, pd828);
/*1*/   };
                           }
                        else {
SOURCE(61189, 292)
                           {
/*1*/   word cpDist←v28256;
/*1*/   word jointDist←v28284;
SOURCE(61191, 58)
/*1*/   {
/*1*/      word pd829;
/*1*/      pd829 = (* (( (ptr) (* (( (ptr) gf←c97924)+165)/* var←c85028 */  ))+21) );
/*1*/      cpDist←v28256 = (word) ( *( (fPt) ((*  (ptr) pd829 ))))(cpPoint←v28156, caretPt←v28184, pd829);
/*1*/      };
SOURCE(61251, 64)
/*1*/   {
/*1*/      word pd830;
/*1*/      pd830 = (* (( (ptr) (* (( (ptr) gf←c97924)+165)/* var←c85028 */  ))+21) );
/*1*/      jointDist←v28284 = (word) ( *( (fPt) ((*  (ptr) pd830 ))))(jointPoint←v28128, caretPt←v28184, pd830);
/*1*/      };
SOURCE(61317, 162)
/*1*/   {
/*1*/      word x831;
/*1*/      word x832;
/*1*/      word pd833;
/*1*/      word pd834;
/*1*/      if (((
/*1*/         x831 = cpDist←v28256,  *(float*)&x831
/*1*/         ) < (
/*1*/         x832 = jointDist←v28284,  *(float*)&x832
/*1*/         ))) {
/*1*/         pd833 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+11) );
/*1*/         trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd833 ))))(trajData←v27772, segNum←v28044, cpNum←v28072, pd833);
/*1*/         }
/*1*/      else {
/*1*/         pd834 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+5) );
/*1*/         trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd834 ))))(trajData←v27772, jointNum←v28100, jointNum←v28100, pd834);
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        };
                     break;
                  case 2: 
SOURCE(61503, 150)
                     {
                        word segNum←v28328;
                        word cpNum←v28356;
SOURCE(61525, 27)
                        {
                           word idx835;
                           segNum←v28328 = (
/*1*/   idx835 = (* (( (ptr) trajHitData←v27800)+1) ),
/*1*/   SGNCK(idx835)
/*1*/   );
                           };
SOURCE(61554, 25)
                        {
                           word idx836;
                           cpNum←v28356 = (
/*1*/   idx836 = (* (( (ptr) trajHitData←v27800)+2) ),
/*1*/   SGNCK(idx836)
/*1*/   );
                           };
SOURCE(61581, 70)
                        {
                           word pd837;
                           pd837 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+11) );
                           trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd837 ))))(trajData←v27772, segNum←v28328, cpNum←v28356, pd837);
                           };
                        };
                     break;
                  default: 
SOURCE(61668, 5)
                     (void) XR←RaiseUnnamedError();
                     break;
                  };
               };
            break;
         case 3: 
SOURCE(61691, 401)
            {
               word var←c94244;
               var←c94244 = (*  (ptr) trajHitData←v27800 );
               switch (var←c94244) {
                  case 1: 
SOURCE(61732, 260)
                     {
                        word jointNum←v28400;
                        word this←v28428;
                        word previous←v28456;
SOURCE(61734, 36)
                        {
                           word idx838;
                           jointNum←v28400 = (
/*1*/   idx838 = (* (( (ptr) trajHitData←v27800)+3) ),
/*1*/   SGNCK(idx838)
/*1*/   );
                           };
SOURCE(61772, 69)
                        {
                           word tc839;
                           word pd840;
                           pd840 = (* (( (ptr) (* (( (ptr) gf←c97924)+161)/* var←c84516 */  ))+37) );
                           if ((jointNum←v28400 > (word) ( *( (fPt) ((*  (ptr) pd840 ))))(slice←v15124, pd840))) {
/*1*/   tc839 =  (word)  (word) -1;
/*1*/   }
                           else {
/*1*/   tc839 =  (word) jointNum←v28400;
/*1*/   };
                           this←v28428 = tc839;
                           };
SOURCE(61843, 58)
                        {
                           word pd841;
                           pd841 = (* (( (ptr) (* (( (ptr) gf←c97924)+161)/* var←c84516 */  ))+42) );
                           previous←v28456 = (word) ( *( (fPt) ((*  (ptr) pd841 ))))(slice←v15124, jointNum←v28400, pd841);
                           };
SOURCE(61903, 87)
                        {
                           word pd842;
                           word idx843;
                           pd842 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+9) );
                           trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd842 ))))(trajData←v27772, (
/*1*/      idx843 = (word)  ( ( (int)this←v28428 !=  (int) (word) -1) ? this←v28428 : previous←v28456 ) ,
/*1*/      SGNCK(idx843)
/*1*/      ), pd842);
                           };
                        };
                     break;
                  case 3: case 2: 
SOURCE(62022, 70)
                     {
                        word pd844;
                        word idx845;
                        pd844 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+9) );
                        trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd844 ))))(trajData←v27772, (
/*1*/   idx845 = (* (( (ptr) trajHitData←v27800)+1) ),
/*1*/   SGNCK(idx845)
/*1*/   ), pd844);
                        };
                     break;
                  default: 
SOURCE(62109, 5)
                     (void) XR←RaiseUnnamedError();
                     break;
                  };
               };
            break;
         case 5: case 7: 
SOURCE(62139, 47)
            {
               word pd846;
               pd846 = (* (( (ptr) (* (( (ptr) gf←c97924)+159)/* var←c84100 */  ))+7) );
               trajParts←v27744 = (word) ( *( (fPt) ((*  (ptr) pd846 ))))(trajData←v27772, pd846);
               };
            break;
         default: 
SOURCE(62202, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(62209, 54)
   {
      word pd847;
      pd847 = (* (( (ptr) (* (( (ptr) gf←c97924)+157)/* var←c84004 */  ))+8) );
      sliceD←v15240 = (word) ( *( (fPt) ((*  (ptr) pd847 ))))(slice←v15124, trajParts←v27744, pd847);
      };
SOURCE(59658, 2605)
   return(sliceD←v15240);
   }

static word NearestJointToHitSpot←P2880(caretPt←v15300, traj←v15328, hitJointNum←v15356, hitSegNum←v15384, hitType←v15412)
   W2 caretPt←v15300;
   word traj←v15328;
   word hitJointNum←v15356;
   word hitSegNum←v15384;
   word hitType←v15412;
   {
   register ptr gf←c97956 =  (ptr) &globalframe;
   word jointNum←v15456;
   word nextNum←v28500;
   W2 p1←v28528;
   W2 p2←v28556;
   word d1←v28584;
   word d2←v28612;
   /* NearestJointToHitSpot: */ 
SOURCE(62269, 615)
SOURCE(62449, 435)
   {
      word var←c94276;
      var←c94276 = hitType←v15412;
      switch (var←c94276) {
         case 1: 
SOURCE(62480, 22)
            jointNum←v15456 = SGNCK(hitJointNum←v15356);
            break;
         case 3: case 2: 
SOURCE(62534, 48)
            {
               word pd848;
               word idx849;
               pd848 = (* (( (ptr) (* (( (ptr) gf←c97956)+161)/* var←c84516 */  ))+44) );
               nextNum←v28500 = (
                  idx849 = (word) ( *( (fPt) ((*  (ptr) pd848 ))))(traj←v15328, SGNCK(hitSegNum←v15384), pd848),
                  SGNCK(idx849)
                  );
               };
SOURCE(62584, 42)
            {
               word pd850;
               pd850 = (* (( (ptr) (* (( (ptr) gf←c97956)+161)/* var←c84516 */  ))+32) );
               (void) ( *( (fPt) ((*  (ptr) pd850 ))))((word) &p1←v28528, traj←v15328, SGNCK(hitSegNum←v15384), pd850);
               };
SOURCE(62628, 40)
            {
               word pd851;
               pd851 = (* (( (ptr) (* (( (ptr) gf←c97956)+161)/* var←c84516 */  ))+32) );
               (void) ( *( (fPt) ((*  (ptr) pd851 ))))((word) &p2←v28556, traj←v15328, nextNum←v28500, pd851);
               };
SOURCE(62670, 43)
            {
               word pd852;
               pd852 = (* (( (ptr) (* (( (ptr) gf←c97956)+165)/* var←c85028 */  ))+21) );
               d1←v28584 = (word) ( *( (fPt) ((*  (ptr) pd852 ))))(p1←v28528, caretPt←v15300, pd852);
               };
SOURCE(62715, 43)
            {
               word pd853;
               pd853 = (* (( (ptr) (* (( (ptr) gf←c97956)+165)/* var←c85028 */  ))+21) );
               d2←v28612 = (word) ( *( (fPt) ((*  (ptr) pd853 ))))(p2←v28556, caretPt←v15300, pd853);
               };
SOURCE(62760, 61)
            {
               word x854;
               word x855;
               if (((
                  x854 = d1←v28584,  *(float*)&x854
                  ) <= (
                  x855 = d2←v28612,  *(float*)&x855
                  ))) {
SOURCE(62777, 26)
                  jointNum←v15456 = SGNCK(hitSegNum←v15384);
                  }
               else {
SOURCE(62803, 18)
                  jointNum←v15456 = nextNum←v28500;
                  };
               };
            break;
         default: 
SOURCE(62837, 47)
            {
               word var←c01102;
               var←c01102 = (* (( (ptr) gf←c97956)+31) );
               (void) XR←RaiseError((* (( (ptr) gf←c97956)+4)/* Problem←v5492 */  ), (word) &var←c01102);
               };
            break;
         };
      };
SOURCE(62269, 615)
   return(jointNum←v15456);
   }

static word TrajUnionParts←P2940(partsA←v15516, partsB←v15544)
   word partsA←v15516;
   word partsB←v15544;
   {
   register ptr gf←c97988 =  (ptr) &globalframe;
   word aPlusB←v15588;
   /* TrajUnionParts: */ 
SOURCE(62922, 151)
SOURCE(62922, 151)
   aPlusB←v15588 = 0;
SOURCE(63032, 41)
   {
      word pd856;
      pd856 = (* (( (ptr) (* (( (ptr) gf←c97988)+159)/* var←c84100 */  ))+20) );
      aPlusB←v15588 = (word) ( *( (fPt) ((*  (ptr) pd856 ))))(partsA←v15516, partsB←v15544, pd856);
      };
SOURCE(62922, 151)
   return(aPlusB←v15588);
   }

static word TrajDiffParts←P3000(partsA←v15648, partsB←v15676)
   word partsA←v15648;
   word partsB←v15676;
   {
   register ptr gf←c98020 =  (ptr) &globalframe;
   word aMinusB←v15720;
   /* TrajDiffParts: */ 
SOURCE(63079, 157)
SOURCE(63079, 157)
   aMinusB←v15720 = 0;
SOURCE(63189, 47)
   {
      word pd857;
      pd857 = (* (( (ptr) (* (( (ptr) gf←c98020)+159)/* var←c84100 */  ))+21) );
      aMinusB←v15720 = (word) ( *( (fPt) ((*  (ptr) pd857 ))))(partsA←v15648, partsB←v15676, pd857);
      };
SOURCE(63079, 157)
   return(aMinusB←v15720);
   }

static void TrajMovingParts←P3060(formal←c01123, slice←v15780, selectedParts←v15808, editConstraints←v15836, bezierDrag←v15864)
   word formal←c01123;
   word slice←v15780;
   word selectedParts←v15808;
   word editConstraints←v15836;
   W5 bezierDrag←v15864;
   {
   register ptr gf←c98052 =  (ptr) &globalframe;
   word background←v15908;
   word overlay←v15936;
   word rubber←v15964;
   word drag←v15992;
   word bkgdParts←v28656 = 0;
   word overParts←v28684 = 0;
   word rubberParts←v28712 = 0;
   word dragParts←v28740 = 0;
   /* TrajMovingParts: */ 
SOURCE(63242, 618)
SOURCE(63242, 618)
   background←v15908 = 0;
SOURCE(63242, 618)
   overlay←v15936 = 0;
SOURCE(63242, 618)
   rubber←v15964 = 0;
SOURCE(63242, 618)
   drag←v15992 = 0;
SOURCE(63505, 126)
   {
      W4 var←c94308;
      {
         word pd858;
         pd858 = (* (( (ptr) (* (( (ptr) gf←c98052)+159)/* var←c84100 */  ))+23) );
         (void) ( *( (fPt) ((*  (ptr) pd858 ))))((word) &var←c94308, slice←v15780, selectedParts←v15808, editConstraints←v15836, bezierDrag←v15864, pd858)
         ;
         };
      dragParts←v28740 = var←c94308.f3;
      rubberParts←v28712 = var←c94308.f2;
      overParts←v28684 = var←c94308.f1;
      bkgdParts←v28656 = var←c94308.f0;
      };
SOURCE(63633, 58)
   {
      word pd859;
      pd859 = (* (( (ptr) (* (( (ptr) gf←c98052)+157)/* var←c84004 */  ))+8) );
      background←v15908 = (word) ( *( (fPt) ((*  (ptr) pd859 ))))(slice←v15780, bkgdParts←v28656, pd859);
      };
SOURCE(63693, 55)
   {
      word pd860;
      pd860 = (* (( (ptr) (* (( (ptr) gf←c98052)+157)/* var←c84004 */  ))+8) );
      overlay←v15936 = (word) ( *( (fPt) ((*  (ptr) pd860 ))))(slice←v15780, overParts←v28684, pd860);
      };
SOURCE(63750, 56)
   {
      word pd861;
      pd861 = (* (( (ptr) (* (( (ptr) gf←c98052)+157)/* var←c84004 */  ))+8) );
      rubber←v15964 = (word) ( *( (fPt) ((*  (ptr) pd861 ))))(slice←v15780, rubberParts←v28712, pd861);
      };
SOURCE(63808, 52)
   {
      word pd862;
      pd862 = (* (( (ptr) (* (( (ptr) gf←c98052)+157)/* var←c84004 */  ))+8) );
      drag←v15992 = (word) ( *( (fPt) ((*  (ptr) pd862 ))))(slice←v15780, dragParts←v28740, pd862);
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c01123 ) = background←v15908;
   (* (( (ptr) formal←c01123)+1) ) = overlay←v15936;
   (* (( (ptr) formal←c01123)+2) ) = rubber←v15964;
   (* (( (ptr) formal←c01123)+3) ) = drag←v15992;
   return;
   }

static word TrajAugmentParts←P3120(sliceD←v16052, selectClass←v16080)
   word sliceD←v16052;
   word selectClass←v16080;
   {
   register ptr gf←c98084 =  (ptr) &globalframe;
   word more←v16124;
   word trajParts←v28784;
   /* TrajAugmentParts: */ 
SOURCE(63866, 326)
SOURCE(63866, 326)
   more←v16124 = 0;
SOURCE(63980, 43)
   trajParts←v28784 = XR←Narrow((* (( (ptr) sliceD←v16052)+1) ), (* (( (ptr) gf←c98084)+15) ));
SOURCE(64025, 63)
   if ((selectClass←v16080 == 0)) {
SOURCE(64054, 34)
      {
         word pd863;
         pd863 = (* (( (ptr) (* (( (ptr) gf←c98084)+159)/* var←c84100 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd863 ))))(trajParts←v28784, pd863);
         };
      };
SOURCE(64090, 41)
   {
      word pd864;
      pd864 = (* (( (ptr) (* (( (ptr) gf←c98084)+159)/* var←c84100 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd864 ))))(trajParts←v28784, pd864);
      };
SOURCE(64133, 59)
   {
      word pd865;
      pd865 = (* (( (ptr) (* (( (ptr) gf←c98084)+157)/* var←c84004 */  ))+8) );
      more←v16124 = (word) ( *( (fPt) ((*  (ptr) pd865 ))))((*  (ptr) sliceD←v16052 ), trajParts←v28784, pd865);
      };
SOURCE(63866, 326)
   return(more←v16124);
   }

static word TrajAlterParts←P3180(sliceD←v16184, action←v16212)
   word sliceD←v16184;
   word action←v16212;
   {
   register ptr gf←c98116 =  (ptr) &globalframe;
   word alteredD←v16256;
   word slice←v28828;
   word trajData←v28856;
   word trajParts←v28884;
   word isACP←v28912 = 0;
   word jointNum←v28940 = 999;
   word cpNum←v28968 = 999;
   word segNum←v28996 = 999;
   /* TrajAlterParts: */ 
SOURCE(64198, 1317)
SOURCE(64198, 1317)
   alteredD←v16256 = 0;
SOURCE(64299, 27)
   slice←v28828 = (*  (ptr) sliceD←v16184 );
SOURCE(64328, 39)
   trajData←v28856 = XR←Narrow((* (( (ptr) slice←v28828)+1) ), (* (( (ptr) gf←c98116)+10) ));
SOURCE(64369, 43)
   trajParts←v28884 = XR←Narrow((* (( (ptr) sliceD←v16184)+1) ), (* (( (ptr) gf←c98116)+15) ));
SOURCE(64471, 1044)
   {
      word var←c94340;
      var←c94340 = action←v16212;
      if ((var←c94340 == (* (( (ptr) gf←c98116)+32) )) || (var←c94340 == (* (( (ptr) gf←c98116)+33) ))) {
SOURCE(64515, 47)
         if ((0 != (word) TrajIsCompleteParts←P2760(sliceD←v16184))) {
SOURCE(64551, 11)
            return(0);
            };
SOURCE(64564, 206)
         {
            word pd867;
            pd867 = (* (( (ptr) (* (( (ptr) gf←c98116)+159)/* var←c84100 */  ))+44) );
            if (((word) ( *( (fPt) ((*  (ptr) pd867 ))))(trajData←v28856, trajParts←v28884, pd867) == 0)) {
SOURCE(64630, 85)
               {
                  W4 var←c94372;
                  {
                     word pd868;
                     pd868 = (* (( (ptr) (* (( (ptr) gf←c98116)+159)/* var←c84100 */  ))+34) );
                     (void) ( *( (fPt) ((*  (ptr) pd868 ))))((word) &var←c94372, trajParts←v28884, pd868);
                     };
                  jointNum←v28940 = var←c94372.f3;
                  cpNum←v28968 = var←c94372.f2;
                  segNum←v28996 = var←c94372.f1;
                  isACP←v28912 = var←c94372.f0;
                  };
               }
            else {
SOURCE(64715, 55)
               {
                  word pd869;
                  pd869 = (* (( (ptr) (* (( (ptr) gf←c98116)+159)/* var←c84100 */  ))+35) );
                  segNum←v28996 = (word) ( *( (fPt) ((*  (ptr) pd869 ))))(trajParts←v28884, pd869);
                  };
               };
            };
         if (( (int)jointNum←v28940 !=  (int)999)) {
SOURCE(64807, 122)
            if ((action←v16212 == (* (( (ptr) gf←c98116)+32) ))) {
SOURCE(64833, 55)
               {
                  word pd870;
                  pd870 = (* (( (ptr) (* (( (ptr) gf←c98116)+161)/* var←c84516 */  ))+44) );
                  jointNum←v28940 = (word) ( *( (fPt) ((*  (ptr) pd870 ))))(slice←v28828, SGNCK(jointNum←v28940), pd870);
                  };
               }
            else {
SOURCE(64888, 41)
               jointNum←v28940 = (word) PreviousJoint←P3240(slice←v28828, jointNum←v28940);
               };
SOURCE(64931, 124)
            if (( (int)jointNum←v28940 ==  (int) (word) -1)) {
               alteredD←v16256 = 0;
               }
            else {
               {
                  word var←c94404;
                  {
                     word pd871;
                     pd871 = (* (( (ptr) (* (( (ptr) gf←c98116)+159)/* var←c84100 */  ))+8) );
                     var←c94404 = (word) ( *( (fPt) ((*  (ptr) pd871 ))))(trajData←v28856, SGNCK(jointNum←v28940), pd871);
                     };
                  {
                     word pd872;
                     pd872 = (* (( (ptr) (* (( (ptr) gf←c98116)+157)/* var←c84004 */  ))+8) );
                     alteredD←v16256 = (word) ( *( (fPt) ((*  (ptr) pd872 ))))(slice←v28828, var←c94404, pd872);
                     };
                  };
               };
            }
         else {
            if ((0 != isACP←v28912)) {
SOURCE(65071, 17)
               alteredD←v16256 = sliceD←v16184;
               }
            else {
               if (( (int)segNum←v28996 !=  (int)999)) {
SOURCE(65131, 131)
                  if ((action←v16212 == (* (( (ptr) gf←c98116)+32) ))) {
SOURCE(65157, 56)
                     {
                        word pd873;
                        pd873 = (* (( (ptr) (* (( (ptr) gf←c98116)+161)/* var←c84516 */  ))+43) );
                        segNum←v28996 = (word) ( *( (fPt) ((*  (ptr) pd873 ))))(slice←v28828, SGNCK(segNum←v28996), pd873);
                        };
                     }
                  else {
SOURCE(65213, 49)
                     {
                        word pd874;
                        pd874 = (* (( (ptr) (* (( (ptr) gf←c98116)+161)/* var←c84516 */  ))+42) );
                        segNum←v28996 = (word) ( *( (fPt) ((*  (ptr) pd874 ))))(slice←v28828, SGNCK(segNum←v28996), pd874);
                        };
                     };
SOURCE(65264, 122)
                  if (( (int)segNum←v28996 ==  (int) (word) -1)) {
                     alteredD←v16256 = 0;
                     }
                  else {
                     {
                        word var←c94436;
                        {
                           word pd875;
                           pd875 = (* (( (ptr) (* (( (ptr) gf←c98116)+159)/* var←c84100 */  ))+9) );
                           var←c94436 = (word) ( *( (fPt) ((*  (ptr) pd875 ))))(trajData←v28856, SGNCK(segNum←v28996), pd875);
                           };
                        {
                           word pd876;
                           pd876 = (* (( (ptr) (* (( (ptr) gf←c98116)+157)/* var←c84004 */  ))+8) );
                           alteredD←v16256 = (word) ( *( (fPt) ((*  (ptr) pd876 ))))(slice←v28828, var←c94436, pd876);
                           };
                        };
                     };
                  }
               else {
SOURCE(65402, 5)
                  (void) XR←RaiseUnnamedError();
                  };
               };
            };
         goto endif0866;
         };
      if ((var←c94340 == (* (( (ptr) gf←c98116)+34) ))) {
SOURCE(65421, 46)
         return((word) TrajNewParts←P2820((*  (ptr) sliceD←v16184 ), 0, 6));
         };
      if ((var←c94340 == (* (( (ptr) gf←c98116)+35) )) || (var←c94340 == (* (( (ptr) gf←c98116)+36) ))) {
SOURCE(65504, 11)
         return(0);
         };
SOURCE(65528, 5)
      (void) XR←RaiseUnnamedError();
      goto endif0866;
      endif0866: ;
      };
SOURCE(64198, 1317)
   return(alteredD←v16256);
   }

static word PreviousJoint←P3240(slice←v16316, index←v16344)
   word slice←v16316;
   word index←v16344;
   {
   register ptr gf←c98148 =  (ptr) &globalframe;
   word nextIndex←v16388;
   word trajData←v29040;
   /* PreviousJoint: */ 
SOURCE(65539, 254)
SOURCE(65616, 39)
   trajData←v29040 = XR←Narrow((* (( (ptr) slice←v16316)+1) ), (* (( (ptr) gf←c98148)+10) ));
SOURCE(65657, 136)
   {
      word var←c94500;
      var←c94500 = (*  (ptr) trajData←v29040 );
      switch (var←c94500) {
         case 2: 
SOURCE(65691, 21)
            nextIndex←v16388 = (index←v16344 - 1);
            break;
         case 0: case 1: 
SOURCE(65729, 64)
            nextIndex←v16388 = IOP2( % ,  (int)((index←v16344 + (* (( (ptr) trajData←v29040)+1) )) - 1),  (int)(* (( (ptr) trajData←v29040)+1)
                ));
            break;
         default: 
SOURCE(65806, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(65539, 254)
   return(nextIndex←v16388);
   }

static void TrajSetSelectedFields←P3300(sliceD←v16448, selected←v16476, selectClass←v16504)
   word sliceD←v16448;
   word selected←v16476;
   word selectClass←v16504;
   {
   register ptr gf←c98180 =  (ptr) &globalframe;
   word joint←v29084 = 0;
   word jointGen←v29112 = 0;
   word segGen←v29140 = 0;
   word trajParts←v29168;
   word trajData←v29196;
   /* TrajSetSelectedFields: */ 
SOURCE(65817, 1317)
SOURCE(65986, 43)
   trajParts←v29168 = XR←Narrow((* (( (ptr) sliceD←v16448)+1) ), (* (( (ptr) gf←c98180)+15) ));
SOURCE(66031, 46)
   trajData←v29196 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v16448 ))+1) ), (* (( (ptr) gf←c98180)+10) ));
SOURCE(66079, 226)
   {
      word var←c94532;
      var←c94532 = selectClass←v16504;
      switch (var←c94532) {
         case 0: 
SOURCE(66113, 41)
            (* (( (ptr) trajData←v29196)+10) ) = selected←v16476;
            break;
         case 1: 
SOURCE(66163, 38)
            (* (( (ptr) trajData←v29196)+11) ) = selected←v16476;
            break;
         case 2: 
SOURCE(66213, 41)
            (* (( (ptr) trajData←v29196)+12) ) = selected←v16476;
            break;
         case 3: 
SOURCE(66265, 40)
            (* (( (ptr) trajData←v29196)+13) ) = selected←v16476;
            break;
         };
      };
SOURCE(66316, 49)
   {
      word pd877;
      pd877 = (* (( (ptr) (* (( (ptr) gf←c98180)+159)/* var←c84100 */  ))+53) );
      jointGen←v29112 = (word) ( *( (fPt) ((*  (ptr) pd877 ))))(trajParts←v29168, pd877);
      };
SOURCE(66367, 375)
   {
      register word jointNum←v29240;
      {
         word pd878;
         pd878 = (* (( (ptr) (* (( (ptr) gf←c98180)+159)/* var←c84100 */  ))+61) );
         jointNum←v29240 = (word) ( *( (fPt) ((*  (ptr) pd878 ))))(jointGen←v29112, pd878);
         };
      lab←L100145: ;
      if (( (int)jointNum←v29240 !=  (int) (word) -1)) {
         }
      else {
         goto lab←L100142;
         };
SOURCE(66473, 49)
      {
         word pd879;
         pd879 = (* (( (ptr) (* (( (ptr) gf←c98180)+161)/* var←c84516 */  ))+31) );
         joint←v29084 = (word) ( *( (fPt) ((*  (ptr) pd879 ))))((*  (ptr) sliceD←v16448 ), SGNCK(jointNum←v29240), pd879);
         };
SOURCE(66524, 218)
      {
         word var←c94564;
         var←c94564 = selectClass←v16504;
         switch (var←c94564) {
            case 0: 
SOURCE(66558, 39)
               (* (( (ptr) joint←v29084)+2) ) = selected←v16476;
               break;
            case 1: 
SOURCE(66606, 36)
               (* (( (ptr) joint←v29084)+3) ) = selected←v16476;
               break;
            case 2: 
SOURCE(66654, 39)
               (* (( (ptr) joint←v29084)+4) ) = selected←v16476;
               break;
            case 3: 
SOURCE(66704, 38)
               (* (( (ptr) joint←v29084)+5) ) = selected←v16476;
               break;
            };
         };
      {
         word pd880;
         pd880 = (* (( (ptr) (* (( (ptr) gf←c98180)+159)/* var←c84100 */  ))+61) );
         jointNum←v29240 = (word) ( *( (fPt) ((*  (ptr) pd880 ))))(jointGen←v29112, pd880);
         };
      goto lab←L100145;
      lab←L100142: ;
      };
SOURCE(66762, 59)
   {
      word pd881;
      pd881 = (* (( (ptr) (* (( (ptr) gf←c98180)+159)/* var←c84100 */  ))+42) );
      segGen←v29140 = (word) ( *( (fPt) ((*  (ptr) pd881 ))))(trajData←v29196, trajParts←v29168, pd881);
      };
SOURCE(66823, 311)
   {
      register word seg←v29284;
      {
         word pd882;
         pd882 = (* (( (ptr) (* (( (ptr) gf←c98180)+159)/* var←c84100 */  ))+46) );
         seg←v29284 = (word) ( *( (fPt) ((*  (ptr) pd882 ))))(segGen←v29140, pd882);
         };
      lab←L100149: ;
      if ((seg←v29284 != 0)) {
         }
      else {
         goto lab←L100146;
         };
SOURCE(66924, 210)
      {
         word var←c94596;
         var←c94596 = selectClass←v16504;
         switch (var←c94596) {
            case 0: 
SOURCE(66958, 37)
               (* (( (ptr) seg←v29284)+17) ) = selected←v16476;
               break;
            case 1: 
SOURCE(67004, 34)
               (* (( (ptr) seg←v29284)+18) ) = selected←v16476;
               break;
            case 2: 
SOURCE(67050, 37)
               (* (( (ptr) seg←v29284)+19) ) = selected←v16476;
               break;
            case 3: 
SOURCE(67098, 36)
               (* (( (ptr) seg←v29284)+20) ) = selected←v16476;
               break;
            };
         };
      {
         word pd883;
         pd883 = (* (( (ptr) (* (( (ptr) gf←c98180)+159)/* var←c84100 */  ))+46) );
         seg←v29284 = (word) ( *( (fPt) ((*  (ptr) pd883 ))))(segGen←v29140, pd883);
         };
      goto lab←L100149;
      lab←L100146: ;
      };
   }

static void Init←P3360()
   {
   register ptr gf←c98212 =  (ptr) &globalframe;
   /* Init: */ 
SOURCE(67216, 129)
SOURCE(67231, 54)
   {
      word pd884;
      pd884 = (* (( (ptr) (* (( (ptr) gf←c98212)+156)/* var←c83940 */  ))+4) );
      (* (( (ptr) gf←c98212)+6)/* idTransform←v7144 */  ) = (word) ( *( (fPt) ((*  (ptr) pd884 ))))((*  (ptr) &fc57 ), (*  (ptr) &fc123 ), (*  (ptr) &fc123 ), (*  (ptr) &fc123 ), (*  (ptr) &fc57 ), (*  (ptr) &fc123 ), pd884)
      ;
      };
SOURCE(67300, 45)
   {
      word pd885;
      pd885 = (* (( (ptr) (* (( (ptr) gf←c98212)+169)/* var←c87812 */  ))+4) );
      (* (( (ptr) gf←c98212)+7)/* cache←v7172 */  ) = (word) ( *( (fPt) ((*  (ptr) pd885 ))))(100, 2147483647, pd885);
      };
   }

/* file: GGSliceImplD, module: GGSliceImplD, compiled at: July 11, 1993 8:10:23 pm PDT */ 
extern void XR←install←GGSliceImplD() {
   NoName←Q8592();
   }
extern void XR←run←GGSliceImplD() { XR←Start(&globalframe); }