/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 11, 1993 8:18:36 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: GGSliceImplE, module: GGSliceImplE */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2898489908,327952352] GGSliceImplE";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2;} W3;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef W2 *W2Pt;
typedef W3 *W3Pt;
typedef W5 *W5Pt;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef struct {W8 f; W8 r;} W16;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {word f0, f1, f2, f3;} W4;
typedef struct {W8 f; word r;} W9;
typedef struct {W8 f; W2 r;} W10;
typedef struct {W8 f; W3 r;} W11;
#define SOURCE(p, l) /* source p, l */
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static float fc90 = -1.0;
static float fc95 = 0.0;
static float fc187 = 8802.04;
static float fc197 = 8607.22;
static float fc202 = 8702.26;
static float fc210 = 8701.135;
static float fc221 = 8701.23;
static float fc238 = 8607.30;
static float fc249 = 8610.29;
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc319 = 1E16;
static float fc332 = 9999.0;
#define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) )
static void NoName←Q5760();
static void GGSliceImplE←P0();
static void BuildMoreTrajSliceClass←P60();
static void AllStrokeEndsEqual←P120();
static word AllStrokeWidthsEqual←P180();
static void AllStrokeColorsEqual←P240();
static void AllDashesEqual←P300();
static word TrajDescribe←P360();
static word TrajDescribeHit←P420();
static void TrajFileout←P480();
static word TrajFilein←P540();
static word RoleFromRope←P600();
static word RoleToRope←P660();
static word TrajPointsInDescriptor←P720();
static void TrajWalkPointsInDescriptor←P780();
static word TrajPointPairsInDescriptor←P840();
static word TrajSegmentsInDescriptor←P900();
static word TrajWalkSegments←P960();
static void TrajNextPoint←P1020();
static void TrajNextPointPair←P1080();
static void TrajNextSegment←P1140();
static void TrajClosestPoint←P1200();
static void TrajClosestJointToHitData←P1260();
static void FindJointNormal←P4044();
static word NearestJointToHitData←P4296();
static void TrajClosestPointAndTangent←P1320();
static void TrajClosestSegment←P1380();
static word InsideContour←P1440();
static word HanrahanInsideContour←P1500();
static void PolylineOfTraj←P1560();
static word GetPolyline←P4500();
static void TrajFilledPathsUnderPoint←P1620();
static void TrajLineIntersection←P1680();
static void TrajCircleIntersection←P1740();
static word TrajHitDataAsSimpleCurve←P1800();
static void TrajSetDefaults←P1860();
static word TrajSetStrokeWidth←P1920();
static void TrajGetStrokeWidth←P1980();
static word DoCheckWidth←P5040();
static void TrajSetStrokeEnd←P2040();
static void TrajGetStrokeEnd←P2100();
static word DoCheckEnd←P5196();
static void TrajSetStrokeJoint←P2160();
static void TrajGetStrokeJoint←P2220();
static void TrajSetStrokeColor←P2280();
static void TrajGetStrokeColor←P2340();
static word DoCheckColor←P5400();
static void TrajSetArrows←P2400();
static void TrajGetArrows←P2460();
static void TrajSetDashed←P2520();
static void TrajGetDashed←P2580();
static word DoCheckDashes←P5604();
static word TrajSetOrientation←P2640();
static void TrajGetOrientation←P2700();
static word FetchSliceClass←P2760();
static void RegisterSliceClass←P2820();
static word DescriptorFromParts←P2880();
static void UnlinkAllSliceDescriptors←P2940();
static void UnlinkSlice←P3000();
static word EntitiesInSlice←P3060();
static void Init←P3120();
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\107\050\000\000"};
static struct {unsigned f; char r[4];} string4 = {131074, "\004\007\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\214\000\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[4];} string7 = {65537, "\001\000\000"};
static struct {unsigned f; char r[48];} string8 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\247\365\203\234\300\047\265\225\046\100\310\005\004\162\145\163\164\214\216\257\300\247\365\203\234\300\047\265\225\046\100\310\261\000\000\000"};
static struct {unsigned f; char r[4];} string9 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\100\310\000\000"};
static struct {unsigned f; char r[48];} string11 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\254\303\162\064\300\023\214\047\340\100\200\005\004\162\145\163\164\214\216\257\300\254\303\162\064\300\023\214\047\340\100\200\261\000\000\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\254\303\162\064\300\023\214\047\340\100\200\000\000"};
static struct {unsigned f; char r[48];} string13 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\371\314\343\307\300\031\056\017\130\100\324\005\004\162\145\163\164\214\216\257\300\371\314\343\307\300\031\056\017\130\100\324\261\000\000\000"};
static struct {unsigned f; char r[44];} string14 = {2752556, "\260\006\005\146\151\162\163\164\257\300\247\031\224\326\300\123\162\224\023\100\164\005\004\162\145\163\164\214\257\300\247\031\224\326\300\123\162\224\023\100\164\261\000"};
static struct {unsigned f; char r[4];} string15 = {131074, "\003\002\000"};
static struct {unsigned f; char r[48];} string16 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\254\073\314\103\300\064\024\167\046\102\220\005\004\162\145\163\164\214\216\257\300\254\073\314\103\300\064\024\167\046\102\220\261\000\000\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\102\220\000\000"};
static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\224\000\000"};
static struct {unsigned f; char r[4];} string19 = {131074, "\004\011\000"};
static struct {unsigned f; char r[16];} string20 = {851984, "\257\300\254\303\162\064\300\023\214\047\340\101\224\000\000"};
static struct {unsigned f; char r[16];} string21 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\210\000\000"};
static struct {unsigned f; char r[16];} string22 = {851984, "\257\300\254\303\162\064\300\023\214\047\340\101\210\000\000"};
static struct {unsigned f; char r[4];} string23 = {131074, "\004\006\000"};
static struct {unsigned f; char r[4];} string24 = {131076, "\216\251\000"};
static struct {unsigned f; char r[20];} string25 = {1179668, "\260\006\005\146\151\162\163\164\217\005\004\162\145\163\164\214\217\261\000"};
static struct {unsigned f; char r[4];} string26 = {131076, "j:\000"};
static struct {unsigned f; char r[4];} string27 = {131076, "e:\000"};
static struct {unsigned f; char r[4];} string28 = {131076, "w:\000"};
static struct {unsigned f; char r[4];} string29 = {131076, "c:\000"};
static struct {unsigned f; char r[4];} string30 = {131076, "d:\000"};
static struct {unsigned f; char r[8];} string31 = {458760, "arrows:"};
static struct {unsigned f; char r[8];} string32 = {262152, "Traj\000\000\000"};
static struct {unsigned f; char r[8];} string33 = {393224, "Circle\000"};
static struct {unsigned f; char r[8];} string34 = {393224, " fwd: \000"};
static struct {unsigned f; char r[8];} string35 = {262152, "Disc\000\000\000"};
static struct {unsigned f; char r[8];} string36 = {262152, "fwd:\000\000\000"};
static struct {unsigned f; char r[8];} string37 = {327688, "fence\000\000"};
static struct {unsigned f; char r[8];} string38 = {262152, "hole\000\000\000"};
static struct {unsigned f; char r[8];} string39 = {262152, "open\000\000\000"};
static struct {unsigned f; char r[4];} string40 = {65540, ")\000\000"};
static struct {unsigned f; char r[4];} string41 = {131076, ") \000"};
static struct {unsigned f; char r[8];} string42 = {458760, " %g %g "};
static struct {unsigned f; char r[12];} string43 = {524300, " (%g %g \000\000\000"};
static struct {unsigned f; char r[8];} string44 = {327688, " (%g \000\000"};
static struct {unsigned f; char r[8];} string45 = {393224, " %g %g\000"};
static struct {unsigned f; char r[4];} string46 = {196612, "d: "};
static struct {unsigned f; char r[4];} string47 = {196612, "Set"};
static struct {unsigned f; char r[4];} string48 = {196612, "c: "};
static struct {unsigned f; char r[12];} string49 = {589836, "ChangeHue\000\000"};
static struct {unsigned f; char r[24];} string50 = {1441816, "Slice class not found.\000"};
static struct {unsigned f; char r[8];} string51 = {393224, "w: %g \000"};
static struct {unsigned f; char r[8];} string52 = {262152, " e: \000\000\000"};
static struct {unsigned f; char r[4];} string53 = {196612, "j: "};
static struct {unsigned f; char r[24];} string54 = {1441816, " (%g) [%g] arrows: %g \000"};
static struct {unsigned f; char r[28];} string55 = {1769500, "GGSlice.EntitiesInSlice NYI"};
static struct {unsigned f; char r[8];} string56 = {262152, "Text\000\000\000"};
static struct {unsigned f; char r[4];} string57 = {131076, "IP\000"};
static struct {unsigned f; char r[4];} string58 = {196612, "Box"};
static struct {unsigned f; char r[8];} string59 = {458760, "Outline"};
static struct {unsigned f; char r[8];} string60 = {458760, "Cluster"};
static struct {unsigned f; char r[20];} string61 = {1114132, "xerox/pressfonts/\000\000"};
static struct {unsigned f; char r[20];} string62 = {1114132, "xerox/tiogafonts/\000\000"};
static struct {unsigned f; char r[16];} string63 = {851984, "\257\300\254\303\162\064\300\023\214\047\340\100\164\000\000"};
static struct {unsigned f; char r[20];} string64 = {1114129, "\006\005\030\001\034\001\040\001\044\001\100\174\010\000\004\046\001\000\000"};
static struct {unsigned f; char r[16];} string65 = {851984, "\257\300\055\153\222\376\300\327\164\352\142\100\150\000\000"};
static struct {unsigned f; char r[16];} string66 = {851984, "\257\300\322\334\347\304\300\124\107\000\027\100\150\000\000"};
static struct {unsigned f; char r[16];} string67 = {851984, "\257\300\265\217\206\011\300\172\271\371\033\100\150\000\000"};
static struct {unsigned f; char r[16];} string68 = {851984, "\257\300\231\005\151\136\300\275\231\323\274\100\150\000\000"};
static struct {unsigned f; char r[16];} string69 = {851984, "\257\300\236\155\220\261\300\040\017\026\014\100\150\000\000"};
static struct {unsigned f; char r[16];} string70 = {851984, "\257\300\045\215\147\016\300\153\043\150\276\100\150\000\000"};
static struct {unsigned f; char r[16];} string71 = {851984, "\257\300\043\211\212\366\300\343\003\307\242\100\150\000\000"};
static struct {unsigned f; char r[16];} string72 = {851984, "\257\300\261\002\056\176\300\055\321\222\125\100\150\000\000"};
static struct {unsigned f; char r[4];} string73 = {1195856748, "ice"};
static struct {unsigned f; char r[16];} string74 = {851984, "\257\300U$)\337\300Xo9\243@t\000\000"};
static struct {unsigned f; char r[16];} string75 = {851984, "\257\300\336\025\013\356\300\216\115\352\271\100\150\000\000"};
static struct {unsigned f; char r[16];} string76 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\150\000\000"};
static struct {unsigned f; char r[16];} string77 = {851984, "\257\300\370\132\042\205\300\045\133\011\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string78 = {851984, "\257\300\074\177\166\242\300\203\113\217\044\100\150\000\000"};
static struct {unsigned f; char r[16];} string79 = {851984, "\257\300\015\277\004\146\300\034\367\146\045\100\164\000\000"};
static struct {unsigned f; char r[16];} string80 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {unsigned f; char r[16];} string81 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"};
static struct {
   word f0[69]; word f69; word f70; word f71; 
   word f72; word f73; word f74; word f75; 
   word f76; word f77; word f78; word f79; 
   word f80; word f81; word f82; word f83; 
   word f84; word f85; word f86; word f87; 
   word f88; word f89; word f90; word f91; 
   word f92; word f93; word f94; word f95; 
   word f96; word f97; word f98; word f99; 
   word f100; word f101; word f102; word f103; 
   word f104; word f105; word f106; word f107; 
   word f108; word f109; word f110; word f111; 
   word f112; word f113; word f114; word f115; 
   word f116; word f117; word f118; word f119; 
   word f120; word f121; word f122; word f123; 
   word f124; word f125; word f126; word f127; 
   word f128; word f129; word f130; word f131; 
   word f132; word f133; word f134; word f135; 
   word f136; word f137; word f138; word f139; 
   word f140; word f141; word f142; word f143; 
   word f144; word f145; word f146; word f147; 
   word f148; word f149; word f150; word f151; 
   word f152; word f153; word f154; word f155; 
   word f156; word f157; word f158; word f159; 
   word f160; word f161; word f162; word f163; 
   word f164; word f165; word f166; word f167; 
   word f168; word f169; word f170; word f171; 
   word f172; word f173; word f174[18]; 
   } globalframe = {
   {0}, (word) Init←P3120, 0, (word) EntitiesInSlice←P3060, 
   0, (word) UnlinkSlice←P3000, 0, (word) UnlinkAllSliceDescriptors←P2940, 
   0, (word) DescriptorFromParts←P2880, 0, (word) RegisterSliceClass←P2820, 
   0, (word) FetchSliceClass←P2760, 0, (word) TrajGetOrientation←P2700, 
   0, (word) TrajSetOrientation←P2640, 0, (word) TrajGetDashed←P2580, 
   0, (word) TrajSetDashed←P2520, 0, (word) TrajGetArrows←P2460, 
   0, (word) TrajSetArrows←P2400, 0, (word) TrajGetStrokeColor←P2340, 
   0, (word) TrajSetStrokeColor←P2280, 0, (word) TrajGetStrokeJoint←P2220, 
   0, (word) TrajSetStrokeJoint←P2160, 0, (word) TrajGetStrokeEnd←P2100, 
   0, (word) TrajSetStrokeEnd←P2040, 0, (word) TrajGetStrokeWidth←P1980, 
   0, (word) TrajSetStrokeWidth←P1920, 0, (word) TrajSetDefaults←P1860, 
   0, (word) TrajHitDataAsSimpleCurve←P1800, 0, (word) TrajCircleIntersection←P1740, 
   0, (word) TrajLineIntersection←P1680, 0, (word) TrajFilledPathsUnderPoint←P1620, 
   0, (word) PolylineOfTraj←P1560, 0, (word) HanrahanInsideContour←P1500, 
   0, (word) InsideContour←P1440, 0, (word) TrajClosestSegment←P1380, 
   0, (word) TrajClosestPointAndTangent←P1320, 0, (word) TrajClosestJointToHitData←P1260, 
   0, (word) TrajClosestPoint←P1200, 0, (word) TrajNextSegment←P1140, 
   0, (word) TrajNextPointPair←P1080, 0, (word) TrajNextPoint←P1020, 
   0, (word) TrajWalkSegments←P960, 0, (word) TrajSegmentsInDescriptor←P900, 
   0, (word) TrajPointPairsInDescriptor←P840, 0, (word) TrajWalkPointsInDescriptor←P780, 
   0, (word) TrajPointsInDescriptor←P720, 0, (word) RoleToRope←P660, 
   0, (word) RoleFromRope←P600, 0, (word) TrajFilein←P540, 
   0, (word) TrajFileout←P480, 0, (word) TrajDescribeHit←P420, 
   0, (word) TrajDescribe←P360, 0, (word) AllDashesEqual←P300, 
   0, (word) AllStrokeColorsEqual←P240, 0, (word) AllStrokeWidthsEqual←P180, 
   0, (word) AllStrokeEndsEqual←P120, 0, (word) BuildMoreTrajSliceClass←P60, 
   0, (word) GGSliceImplE←P0, {0}
   };

static void NoName←Q5760()
   {
   register ptr gf←c0720 =  (ptr) &globalframe;
   word var←c75316;
   (* (( (ptr) gf←c0720)+11) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0720)+12) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c0720)+13) ) = (word) XR←GetTypeIndexS((word) (&string5));
   (* (( (ptr) gf←c0720)+15) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7);
   (* (( (ptr) gf←c0720)+16) ) = (word) XR←GetTypeIndex((word) &string8, 0, (word) &string9);
   (* (( (ptr) gf←c0720)+17) ) = (word) XR←GetTypeIndex((word) &string10, 0, (word) &string9);
   (* (( (ptr) gf←c0720)+18) ) = (word) XR←GetTypeIndex((word) &string11, 0, (word) &string9);
   (* (( (ptr) gf←c0720)+19) ) = (word) XR←GetTypeIndex((word) &string12, 0, (word) &string9);
   (* (( (ptr) gf←c0720)+20) ) = (word) XR←GetTypeIndex((word) &string13, 0, (word) &string9);
   (* (( (ptr) gf←c0720)+21) ) = (word) XR←GetTypeIndex((word) &string14, 0, (word) &string15);
   (* (( (ptr) gf←c0720)+22) ) = (word) XR←GetTypeIndex((word) &string16, 0, (word) &string9);
   (* (( (ptr) gf←c0720)+23) ) = (word) XR←GetTypeIndexS((word) (&string17));
   (* (( (ptr) gf←c0720)+24) ) = (word) XR←GetTypeIndex((word) &string18, 0, (word) &string19);
   (* (( (ptr) gf←c0720)+25) ) = (word) XR←GetTypeIndex((word) &string20, 0, (word) &string7);
   (* (( (ptr) gf←c0720)+26) ) = (word) XR←GetTypeIndex((word) &string21, 0, (word) &string19);
   (* (( (ptr) gf←c0720)+27) ) = (word) XR←GetTypeIndex((word) &string22, 0, (word) &string23);
   (* (( (ptr) gf←c0720)+29) ) = (word) XR←GetTypeIndex((word) &string24, 0, (word) &string7);
   (* (( (ptr) gf←c0720)+30) ) = (word) XR←GetTypeIndex((word) &string25, 0, (word) &string9);
   (*  (ptr) (( (bPt) gf←c0720)+124) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string26);
   (*  (ptr) (( (bPt) gf←c0720)+128) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string27);
   (*  (ptr) (( (bPt) gf←c0720)+132) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string28);
   (*  (ptr) (( (bPt) gf←c0720)+136) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string29);
   (*  (ptr) (( (bPt) gf←c0720)+140) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string30);
   (*  (ptr) (( (bPt) gf←c0720)+144) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string31);
   (*  (ptr) (( (bPt) gf←c0720)+148) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string32);
   (*  (ptr) (( (bPt) gf←c0720)+152) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+29) ), (word) &string33);
   (*  (ptr) (( (bPt) gf←c0720)+156) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string34);
   (*  (ptr) (( (bPt) gf←c0720)+160) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+29) ), (word) &string35);
   (*  (ptr) (( (bPt) gf←c0720)+164) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string36);
   (*  (ptr) (( (bPt) gf←c0720)+168) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string37);
   (*  (ptr) (( (bPt) gf←c0720)+172) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string38);
   (*  (ptr) (( (bPt) gf←c0720)+176) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string39);
   (*  (ptr) (( (bPt) gf←c0720)+180) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string40);
   (*  (ptr) (( (bPt) gf←c0720)+184) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string41);
   (*  (ptr) (( (bPt) gf←c0720)+188) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string42);
   (*  (ptr) (( (bPt) gf←c0720)+192) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string43);
   (*  (ptr) (( (bPt) gf←c0720)+196) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string44);
   (*  (ptr) (( (bPt) gf←c0720)+200) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string45);
   (*  (ptr) (( (bPt) gf←c0720)+204) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string46);
   (*  (ptr) (( (bPt) gf←c0720)+208) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+29) ), (word) &string47);
   (*  (ptr) (( (bPt) gf←c0720)+212) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string48);
   (*  (ptr) (( (bPt) gf←c0720)+216) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+29) ), (word) &string49);
   (*  (ptr) (( (bPt) gf←c0720)+220) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string50);
   (*  (ptr) (( (bPt) gf←c0720)+224) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string51);
   (*  (ptr) (( (bPt) gf←c0720)+228) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string52);
   (*  (ptr) (( (bPt) gf←c0720)+232) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string53);
   (*  (ptr) (( (bPt) gf←c0720)+236) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string54);
   (*  (ptr) (( (bPt) gf←c0720)+240) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string55);
   (*  (ptr) (( (bPt) gf←c0720)+244) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+29) ), (word) &string56);
   (*  (ptr) (( (bPt) gf←c0720)+248) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+29) ), (word) &string57);
   (*  (ptr) (( (bPt) gf←c0720)+252) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+29) ), (word) &string58);
   (*  (ptr) (( (bPt) gf←c0720)+256) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+29) ), (word) &string59);
   (*  (ptr) (( (bPt) gf←c0720)+260) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+29) ), (word) &string60);
   (*  (ptr) (( (bPt) gf←c0720)+264) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+29) ), (word) &string32);
   (*  (ptr) (( (bPt) gf←c0720)+268) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string61);
   (*  (ptr) (( (bPt) gf←c0720)+272) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0720)+15) ), (word) &string62);
   (void) XR←DeclareGlobalFrame((word) "GGSliceImplE", &globalframe, (word) XR←GetTypeIndex((word) &string63, 0, (word) &string64)
      , (word) (( (bPt) gf←c0720)+692)/* var←c70580 */ );
   var←c75316 = (word) XR←ImportInterface((word) "Atom", (word) XR←GetTypeIndexS((word) (&string65)), 16);
   (* (( (ptr) gf←c0720)+183)/* var←c71476 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 67895555);
   (void) XR←ImportProcS(var←c75316, 67372289);
   var←c75316 = (word) XR←ImportInterface((word) "Feedback", (word) XR←GetTypeIndexS((word) (&string66)), 25);
   (* (( (ptr) gf←c0720)+175)/* var←c70612 */  ) = var←c75316;
   var←c75316 = (word) XR←ImportInterface((word) "GGBoundBox", (word) XR←GetTypeIndexS((word) (&string67)), 24);
   (* (( (ptr) gf←c0720)+190)/* var←c72852 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 67372033);
   (void) XR←ImportProcS(var←c75316, 68162051);
   var←c75316 = (word) XR←ImportInterface((word) "GGCoreOps", (word) XR←GetTypeIndexS((word) (&string68)), 37);
   (* (( (ptr) gf←c0720)+178)/* var←c70804 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 67641090);
   var←c75316 = (word) XR←ImportInterface((word) "GGParseIn", (word) XR←GetTypeIndexS((word) (&string69)), 26);
   (* (( (ptr) gf←c0720)+184)/* var←c71956 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 67373313);
   (void) XR←ImportProcS(var←c75316, 134483713);
   (void) XR←ImportProcS(var←c75316, 67375873);
   (void) XR←ImportProcS(var←c75316, 67636226);
   (void) XR←ImportProcS(var←c75316, 67376897);
   (void) XR←ImportProcS(var←c75316, 67373569);
   (void) XR←ImportProcS(var←c75316, 67376129);
   (void) XR←ImportProcS(var←c75316, 67373825);
   (void) XR←ImportProcS(var←c75316, 67376385);
   (void) XR←ImportProcS(var←c75316, 67372033);
   (void) XR←ImportProcS(var←c75316, 525826);
   (void) XR←ImportProcS(var←c75316, 525570);
   var←c75316 = (word) XR←ImportInterface((word) "GGParseOut", (word) XR←GetTypeIndexS((word) (&string70)), 15);
   (* (( (ptr) gf←c0720)+182)/* var←c71188 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 526594);
   (void) XR←ImportProcS(var←c75316, 787714);
   (void) XR←ImportProcS(var←c75316, 526850);
   (void) XR←ImportProcS(var←c75316, 524802);
   (void) XR←ImportProcS(var←c75316, 524290);
   (void) XR←ImportProcS(var←c75316, 527106);
   (void) XR←ImportProcS(var←c75316, 524546);
   var←c75316 = (word) XR←ImportInterface((word) "GGSegment", (word) XR←GetTypeIndexS((word) (&string71)), 47);
   (* (( (ptr) gf←c0720)+186)/* var←c72116 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 68944900);
   (void) XR←ImportProcS(var←c75316, 67376129);
   var←c75316 = (word) XR←ImportInterface((word) "GGSequence", (word) XR←GetTypeIndexS((word) (&string72)), 58);
   (* (( (ptr) gf←c0720)+180)/* var←c70900 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 671621122);
   (void) XR←ImportProcS(var←c75316, 67905283);
   (void) XR←ImportProcS(var←c75316, 67643394);
   (void) XR←ImportProcS(var←c75316, 67642626);
   (void) XR←ImportProcS(var←c75316, 67634178);
   (void) XR←ImportProcS(var←c75316, 67897091);
   (void) XR←ImportProcS(var←c75316, 67381761);
   (void) XR←ImportProcS(var←c75316, 201600513);
   (void) XR←ImportProcS(var←c75316, 264961);
   (void) XR←ImportProcS(var←c75316, 264705);
   (void) XR←ImportProcS(var←c75316, 67380225);
   (void) XR←ImportProcS(var←c75316, 67371521);
   (void) XR←ImportProcS(var←c75316, 797955);
   (void) XR←ImportProcS(var←c75316, 799235);
   (void) XR←ImportProcS(var←c75316, 67385601);
   (void) XR←ImportProcS(var←c75316, 67383553);
   (void) XR←ImportProcS(var←c75316, 201600769);
   (void) XR←ImportProcS(var←c75316, 67644418);
   (void) XR←ImportProcS(var←c75316, 134490881);
   (void) XR←ImportProcS(var←c75316, 67642882);
   var←c75316 = (word) XR←ImportInterface((word) &string73, (word) XR←GetTypeIndexS((word) (&string74)), 128);
   (* (( (ptr) gf←c0720)+176)/* var←c70644 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 67123712);
   (void) XR←ImportProcS(var←c75316, 67112192);
   (void) XR←ImportProcS(var←c75316, 67124224);
   (void) XR←ImportProcS(var←c75316, 67120896);
   (void) XR←ImportProcS(var←c75316, 67118848);
   (void) XR←ImportProcS(var←c75316, 67121664);
   (void) XR←ImportProcS(var←c75316, 67112704);
   (void) XR←ImportProcS(var←c75316, 279297);
   (void) XR←ImportProcS(var←c75316, 278785);
   (void) XR←ImportProcS(var←c75316, 67634178);
   (void) XR←ImportProcS(var←c75316, 134772738);
   (void) XR←ImportProcS(var←c75316, 1341189);
   var←c75316 = (word) XR←ImportInterface((word) "GGSliceOps", (word) XR←GetTypeIndexS((word) (&string75)), 73);
   (* (( (ptr) gf←c0720)+189)/* var←c72628 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 1324805);
   (void) XR←ImportProcS(var←c75316, 1850631);
   (void) XR←ImportProcS(var←c75316, 1061636);
   (void) XR←ImportProcS(var←c75316, 1062148);
   (void) XR←ImportProcS(var←c75316, 68169988);
   (void) XR←ImportProcS(var←c75316, 67634434);
   (void) XR←ImportProcS(var←c75316, 134752002);
   var←c75316 = (word) XR←ImportInterface((word) "GGTraj", (word) XR←GetTypeIndexS((word) (&string76)), 55);
   (* (( (ptr) gf←c0720)+177)/* var←c70676 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 266497);
   (void) XR←ImportProcS(var←c75316, 67375617);
   (void) XR←ImportProcS(var←c75316, 67639810);
   (void) XR←ImportProcS(var←c75316, 67379713);
   (void) XR←ImportProcS(var←c75316, 470823427);
   (void) XR←ImportProcS(var←c75316, 67642626);
   (void) XR←ImportProcS(var←c75316, 67643394);
   (void) XR←ImportProcS(var←c75316, 402927873);
   (void) XR←ImportProcS(var←c75316, 470823683);
   (void) XR←ImportProcS(var←c75316, 537932803);
   (void) XR←ImportProcS(var←c75316, 787203);
   (void) XR←ImportProcS(var←c75316, 525314);
   (void) XR←ImportProcS(var←c75316, 68157956);
   (void) XR←ImportProcS(var←c75316, 67633153);
   (void) XR←ImportProcS(var←c75316, 134749186);
   (void) XR←ImportProcS(var←c75316, 67379969);
   (void) XR←ImportProcS(var←c75316, 67379457);
   (void) XR←ImportProcS(var←c75316, 67639554);
   var←c75316 = (word) XR←ImportInterface((word) "GGUtility", (word) XR←GetTypeIndexS((word) (&string77)), 42);
   (* (( (ptr) gf←c0720)+179)/* var←c70868 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 67641346);
   (void) XR←ImportProcS(var←c75316, 67379457);
   (void) XR←ImportProcS(var←c75316, 67381505);
   (void) XR←ImportProcS(var←c75316, 67380481);
   (void) XR←ImportProcS(var←c75316, 67643138);
   (void) XR←ImportProcS(var←c75316, 67905027);
   (void) XR←ImportProcS(var←c75316, 67643394);
   (void) XR←ImportProcS(var←c75316, 67641858);
   var←c75316 = (word) XR←ImportInterface((word) "Imager", (word) XR←GetTypeIndexS((word) (&string78)), 84);
   (* (( (ptr) gf←c0720)+185)/* var←c72052 */  ) = var←c75316;
   var←c75316 = (word) XR←ImportInterface((word) "IO", (word) XR←GetTypeIndexS((word) (&string79)), 103);
   (* (( (ptr) gf←c0720)+181)/* var←c71156 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 1063171);
   (void) XR←ImportProcS(var←c75316, 528642);
   (void) XR←ImportProcS(var←c75316, 1071364);
   (void) XR←ImportProcS(var←c75316, 2111493);
   var←c75316 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string80)), 43);
   (* (( (ptr) gf←c0720)+188)/* var←c72404 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 67896323);
   var←c75316 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string81)), 21);
   (* (( (ptr) gf←c0720)+187)/* var←c72212 */  ) = var←c75316;
   (void) XR←ImportProcS(var←c75316, 68158722);
   (void) XR←ImportProcS(var←c75316, 135270914);
   (void) XR←ImportProcS(var←c75316, 68161794);
   (void) XR←ImportProcS(var←c75316, 135268098);
   var←c75316 = (word) XR←ExportInterface((word) &string73, (word) XR←GetTypeIndexS((word) (&string74)), 128);
   (* (( (ptr) gf←c0720)+191)/* var←c75348 */  ) = var←c75316;
   (void) XR←ExportProcS(var←c75316, (word) (( (bPt) gf←c0720)+316)/* var←c69076 */ , 262657, (word) "RegisterSliceClass");
   (void) XR←ExportProcS(var←c75316, (word) (( (bPt) gf←c0720)+324)/* var←c69108 */ , 67371777, (word) "FetchSliceClass");
   (void) XR←ExportProcS(var←c75316, (word) (( (bPt) gf←c0720)+308)/* var←c69044 */ , 67634178, (word) "DescriptorFromParts")
   ;
   (void) XR←ExportProcS(var←c75316, (word) (( (bPt) gf←c0720)+284)/* var←c68948 */ , 67372289, (word) "EntitiesInSlice");
   (void) XR←ExportProcS(var←c75316, (word) (( (bPt) gf←c0720)+684)/* var←c70548 */ , 277249, (word) "BuildMoreTrajSliceClass")
   ;
   (void) XR←ExportProcS(var←c75316, (word) (( (bPt) gf←c0720)+292)/* var←c68980 */ , 279297, (word) "UnlinkSlice");
   }

static void GGSliceImplE←P0(formal←c081, formal←c080)
   word formal←c081;
   word formal←c080;
   {
   register ptr gf←c75380 =  (ptr) &globalframe;
   /* GGSliceImplE: */ 
SOURCE(293, 43462)
SOURCE(3743, 24)
   (* (( (ptr) gf←c75380)+4)/* Problem←v5464 */  ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c75380)+175)/* var←c70612 */  ))+28)
    ) );
SOURCE(43749, 6)
   (void) Init←P3120();
   }

static void BuildMoreTrajSliceClass←P60(class←v7424)
   word class←v7424;
   {
   register ptr gf←c75412 =  (ptr) &globalframe;
   /* BuildMoreTrajSliceClass: */ 
SOURCE(3804, 1650)
SOURCE(3865, 29)
   (* (( (ptr) class←v7424)+17) ) = (word) (( (bPt) gf←c75412)+644)/* var←c70388 */ ;
SOURCE(3896, 35)
   (* (( (ptr) class←v7424)+18) ) = (word) (( (bPt) gf←c75412)+636)/* var←c70356 */ ;
SOURCE(3933, 27)
   (* (( (ptr) class←v7424)+19) ) = (word) (( (bPt) gf←c75412)+628)/* var←c70324 */ ;
SOURCE(3962, 25)
   (* (( (ptr) class←v7424)+20) ) = (word) (( (bPt) gf←c75412)+620)/* var←c70292 */ ;
SOURCE(3989, 49)
   (* (( (ptr) class←v7424)+30) ) = (word) (( (bPt) gf←c75412)+596)/* var←c70196 */ ;
SOURCE(4040, 57)
   (* (( (ptr) class←v7424)+31) ) = (word) (( (bPt) gf←c75412)+588)/* var←c70164 */ ;
SOURCE(4099, 57)
   (* (( (ptr) class←v7424)+32) ) = (word) (( (bPt) gf←c75412)+580)/* var←c70132 */ ;
SOURCE(4158, 53)
   (* (( (ptr) class←v7424)+33) ) = (word) (( (bPt) gf←c75412)+572)/* var←c70100 */ ;
SOURCE(4213, 37)
   (* (( (ptr) class←v7424)+34) ) = (word) (( (bPt) gf←c75412)+564)/* var←c70068 */ ;
SOURCE(4252, 31)
   (* (( (ptr) class←v7424)+35) ) = (word) (( (bPt) gf←c75412)+556)/* var←c70036 */ ;
SOURCE(4285, 39)
   (* (( (ptr) class←v7424)+36) ) = (word) (( (bPt) gf←c75412)+548)/* var←c70004 */ ;
SOURCE(4326, 35)
   (* (( (ptr) class←v7424)+37) ) = (word) (( (bPt) gf←c75412)+540)/* var←c69972 */ ;
SOURCE(4363, 37)
   (* (( (ptr) class←v7424)+38) ) = (word) (( (bPt) gf←c75412)+532)/* var←c69940 */ ;
SOURCE(4402, 55)
   (* (( (ptr) class←v7424)+39) ) = (word) (( (bPt) gf←c75412)+524)/* var←c69908 */ ;
SOURCE(4459, 57)
   (* (( (ptr) class←v7424)+40) ) = (word) (( (bPt) gf←c75412)+516)/* var←c69876 */ ;
SOURCE(4518, 41)
   (* (( (ptr) class←v7424)+41) ) = (word) (( (bPt) gf←c75412)+508)/* var←c69844 */ ;
SOURCE(4561, 55)
   (* (( (ptr) class←v7424)+42) ) = (word) (( (bPt) gf←c75412)+476)/* var←c69716 */ ;
SOURCE(4618, 45)
   (* (( (ptr) class←v7424)+43) ) = (word) (( (bPt) gf←c75412)+468)/* var←c69684 */ ;
SOURCE(4665, 49)
   (* (( (ptr) class←v7424)+44) ) = (word) (( (bPt) gf←c75412)+460)/* var←c69652 */ ;
SOURCE(4716, 53)
   (* (( (ptr) class←v7424)+45) ) = (word) (( (bPt) gf←c75412)+452)/* var←c69620 */ ;
SOURCE(4771, 35)
   (* (( (ptr) class←v7424)+46) ) = (word) (( (bPt) gf←c75412)+444)/* var←c69588 */ ;
SOURCE(4808, 41)
   (* (( (ptr) class←v7424)+47) ) = (word) (( (bPt) gf←c75412)+436)/* var←c69556 */ ;
SOURCE(4851, 41)
   (* (( (ptr) class←v7424)+48) ) = (word) (( (bPt) gf←c75412)+428)/* var←c69524 */ ;
SOURCE(4894, 37)
   (* (( (ptr) class←v7424)+49) ) = (word) (( (bPt) gf←c75412)+420)/* var←c69492 */ ;
SOURCE(4933, 37)
   (* (( (ptr) class←v7424)+50) ) = (word) (( (bPt) gf←c75412)+412)/* var←c69460 */ ;
SOURCE(4972, 41)
   (* (( (ptr) class←v7424)+51) ) = (word) (( (bPt) gf←c75412)+404)/* var←c69428 */ ;
SOURCE(5015, 41)
   (* (( (ptr) class←v7424)+52) ) = (word) (( (bPt) gf←c75412)+396)/* var←c69396 */ ;
SOURCE(5058, 41)
   (* (( (ptr) class←v7424)+53) ) = (word) (( (bPt) gf←c75412)+388)/* var←c69364 */ ;
SOURCE(5101, 41)
   (* (( (ptr) class←v7424)+54) ) = (word) (( (bPt) gf←c75412)+380)/* var←c69332 */ ;
SOURCE(5144, 45)
   (* (( (ptr) class←v7424)+55) ) = (* (( (ptr) (* (( (ptr) gf←c75412)+176)/* var←c70644 */  ))+123) );
SOURCE(5191, 45)
   (* (( (ptr) class←v7424)+56) ) = (* (( (ptr) (* (( (ptr) gf←c75412)+176)/* var←c70644 */  ))+124) );
SOURCE(5238, 31)
   (* (( (ptr) class←v7424)+57) ) = (word) (( (bPt) gf←c75412)+372)/* var←c69300 */ ;
SOURCE(5271, 31)
   (* (( (ptr) class←v7424)+58) ) = (word) (( (bPt) gf←c75412)+364)/* var←c69268 */ ;
SOURCE(5304, 31)
   (* (( (ptr) class←v7424)+59) ) = (word) (( (bPt) gf←c75412)+356)/* var←c69236 */ ;
SOURCE(5337, 31)
   (* (( (ptr) class←v7424)+60) ) = (word) (( (bPt) gf←c75412)+348)/* var←c69204 */ ;
SOURCE(5370, 41)
   (* (( (ptr) class←v7424)+61) ) = (word) (( (bPt) gf←c75412)+340)/* var←c69172 */ ;
SOURCE(5413, 41)
   (* (( (ptr) class←v7424)+62) ) = (word) (( (bPt) gf←c75412)+332)/* var←c69140 */ ;
   }

static void AllStrokeEndsEqual←P120(formal←c091, slice←v7484)
   word formal←c091;
   word slice←v7484;
   {
   register ptr gf←c75444 =  (ptr) &globalframe;
   word allEqual←v7528;
   word end←v7556;
   word seg←v15812 = 0;
   word firstSeg←v15840;
   word hiSegment←v15868;
   /* AllStrokeEndsEqual: */ 
SOURCE(5460, 369)
SOURCE(5460, 369)
   allEqual←v7528 = 0;
SOURCE(5567, 49)
   {
      word pd82;
      pd82 = (* (( (ptr) (* (( (ptr) gf←c75444)+177)/* var←c70676 */  ))+29) );
      firstSeg←v15840 = (word) ( *( (fPt) ((*  (ptr) pd82 ))))(slice←v7484, 0, pd82);
      };
SOURCE(5618, 40)
   {
      word pd83;
      pd83 = (* (( (ptr) (* (( (ptr) gf←c75444)+177)/* var←c70676 */  ))+37) );
      hiSegment←v15868 = (word) ( *( (fPt) ((*  (ptr) pd83 ))))(slice←v7484, pd83);
      };
SOURCE(5660, 24)
   end←v7556 = (* (( (ptr) firstSeg←v15840)+3) );
SOURCE(5686, 117)
   {
      register word i←v15912 = 1;
      register word noName←c70708;
      noName←c70708 = hiSegment←v15868;
      if (( (int)i←v15912 >  (int)noName←c70708)) {
         goto lab←L100001;
         };
      lab←L100004: ;
SOURCE(5718, 35)
      {
         word pd84;
         pd84 = (* (( (ptr) (* (( (ptr) gf←c75444)+177)/* var←c70676 */  ))+29) );
         seg←v15812 = (word) ( *( (fPt) ((*  (ptr) pd84 ))))(slice←v7484, SGNCK(i←v15912), pd84);
         };
SOURCE(5755, 48)
      if (((* (( (ptr) seg←v15812)+3) ) != end←v7556)) {
SOURCE(5783, 20)
         allEqual←v7528 = 0;
         end←v7556 = 2;
         goto lab←L100000;
         };
      if (( (int)i←v15912 >=  (int)noName←c70708)) {
         goto lab←L100001;
         };
      i←v15912 = (i←v15912 + 1);
      goto lab←L100004;
      lab←L100001: ;
      };
SOURCE(5814, 15)
   allEqual←v7528 = 1;
   /* removed tail goto */ 
   lab←L100000: ;
   (*  (ptr) formal←c091 ) = allEqual←v7528;
   (* (( (ptr) formal←c091)+1) ) = end←v7556;
   return;
   }

static word AllStrokeWidthsEqual←P180(slice←v7616)
   word slice←v7616;
   {
   register ptr gf←c75476 =  (ptr) &globalframe;
   word width←v7660;
   word seg←v15956 = 0;
   word firstSeg←v15984;
   word hiSegment←v16012;
   /* AllStrokeWidthsEqual: */ 
SOURCE(5835, 318)
SOURCE(5917, 49)
   {
      word pd85;
      pd85 = (* (( (ptr) (* (( (ptr) gf←c75476)+177)/* var←c70676 */  ))+29) );
      firstSeg←v15984 = (word) ( *( (fPt) ((*  (ptr) pd85 ))))(slice←v7616, 0, pd85);
      };
SOURCE(5968, 40)
   {
      word pd86;
      pd86 = (* (( (ptr) (* (( (ptr) gf←c75476)+177)/* var←c70676 */  ))+37) );
      hiSegment←v16012 = (word) ( *( (fPt) ((*  (ptr) pd86 ))))(slice←v7616, pd86);
      };
SOURCE(6010, 28)
   width←v7660 = (* (( (ptr) firstSeg←v15984)+2) );
SOURCE(6040, 113)
   {
      register word i←v16056 = 1;
      register word noName←c70740;
      noName←c70740 = hiSegment←v16012;
      if (( (int)i←v16056 >  (int)noName←c70740)) {
         goto lab←L100005;
         };
      lab←L100008: ;
SOURCE(6072, 35)
      {
         word pd87;
         pd87 = (* (( (ptr) (* (( (ptr) gf←c75476)+177)/* var←c70676 */  ))+29) );
         seg←v15956 = (word) ( *( (fPt) ((*  (ptr) pd87 ))))(slice←v7616, SGNCK(i←v16056), pd87);
         };
SOURCE(6109, 44)
      {
         word x88;
         word x89;
         if (((
            x88 = (* (( (ptr) seg←v15956)+2) ),  *(float*)&x88
            ) != (
            x89 = width←v7660,  *(float*)&x89
            ))) {
SOURCE(6141, 12)
            return((*  (ptr) &fc90 ));
            };
         };
      if (( (int)i←v16056 >=  (int)noName←c70740)) {
         goto lab←L100005;
         };
      i←v16056 = (i←v16056 + 1);
      goto lab←L100008;
      lab←L100005: ;
      };
SOURCE(5835, 318)
   return(width←v7660);
   }

static void AllStrokeColorsEqual←P240(formal←c0107, slice←v7720)
   word formal←c0107;
   word slice←v7720;
   {
   register ptr gf←c75508 =  (ptr) &globalframe;
   word allEqual←v7764;
   word color←v7792;
   word seg←v16100 = 0;
   word firstSeg←v16128;
   word hiSegment←v16156;
   /* AllStrokeColorsEqual: */ 
SOURCE(6168, 394)
SOURCE(6168, 394)
   allEqual←v7764 = 0;
SOURCE(6168, 394)
   color←v7792 = 0;
SOURCE(6275, 49)
   {
      word pd91;
      pd91 = (* (( (ptr) (* (( (ptr) gf←c75508)+177)/* var←c70676 */  ))+29) );
      firstSeg←v16128 = (word) ( *( (fPt) ((*  (ptr) pd91 ))))(slice←v7720, 0, pd91);
      };
SOURCE(6326, 40)
   {
      word pd92;
      pd92 = (* (( (ptr) (* (( (ptr) gf←c75508)+177)/* var←c70676 */  ))+37) );
      hiSegment←v16156 = (word) ( *( (fPt) ((*  (ptr) pd92 ))))(slice←v7720, pd92);
      };
SOURCE(6368, 22)
   color←v7792 = (* (( (ptr) firstSeg←v16128)+8) );
SOURCE(6392, 144)
   {
      register word i←v16200 = 1;
      register word noName←c70772;
      noName←c70772 = hiSegment←v16156;
      if (( (int)i←v16200 >  (int)noName←c70772)) {
         goto lab←L100010;
         };
      lab←L100013: ;
SOURCE(6424, 35)
      {
         word pd93;
         pd93 = (* (( (ptr) (* (( (ptr) gf←c75508)+177)/* var←c70676 */  ))+29) );
         seg←v16100 = (word) ( *( (fPt) ((*  (ptr) pd93 ))))(slice←v7720, SGNCK(i←v16200), pd93);
         };
SOURCE(6461, 75)
      {
         word pd94;
         pd94 = (* (( (ptr) (* (( (ptr) gf←c75508)+178)/* var←c70804 */  ))+35) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd94 ))))(color←v7792, (* (( (ptr) seg←v16100)+8) ), pd94))) {
SOURCE(6518, 18)
            allEqual←v7764 = 0;
            color←v7792 = 0;
            goto lab←L100009;
            };
         };
      if (( (int)i←v16200 >=  (int)noName←c70772)) {
         goto lab←L100010;
         };
      i←v16200 = (i←v16200 + 1);
      goto lab←L100013;
      lab←L100010: ;
      };
SOURCE(6547, 15)
   allEqual←v7764 = 1;
   /* removed tail goto */ 
   lab←L100009: ;
   (*  (ptr) formal←c0107 ) = allEqual←v7764;
   (* (( (ptr) formal←c0107)+1) ) = color←v7792;
   return;
   }

static void AllDashesEqual←P300(formal←c0119, slice←v7852)
   word formal←c0119;
   word slice←v7852;
   {
   register ptr gf←c75540 =  (ptr) &globalframe;
   word allEqual←v7896;
   word dashed←v7924;
   word pattern←v7952;
   word offset←v7980;
   word length←v8008;
   word seg←v16244 = 0;
   word firstSeg←v16272;
   word hiSegment←v16300;
   /* AllDashesEqual: */ 
SOURCE(6568, 692)
SOURCE(6568, 692)
   allEqual←v7896 = 0;
SOURCE(6568, 692)
   dashed←v7924 = 0;
SOURCE(6568, 692)
   pattern←v7952 = 0;
SOURCE(6568, 692)
   offset←v7980 = (*  (ptr) &fc95 );
SOURCE(6568, 692)
   length←v8008 = (*  (ptr) &fc95 );
SOURCE(6736, 49)
   {
      word pd96;
      pd96 = (* (( (ptr) (* (( (ptr) gf←c75540)+177)/* var←c70676 */  ))+29) );
      firstSeg←v16272 = (word) ( *( (fPt) ((*  (ptr) pd96 ))))(slice←v7852, 0, pd96);
      };
SOURCE(6787, 40)
   {
      word pd97;
      pd97 = (* (( (ptr) (* (( (ptr) gf←c75540)+177)/* var←c70676 */  ))+37) );
      hiSegment←v16300 = (word) ( *( (fPt) ((*  (ptr) pd97 ))))(slice←v7852, pd97);
      };
SOURCE(6829, 24)
   dashed←v7924 = (* (( (ptr) firstSeg←v16272)+4) );
SOURCE(6855, 26)
   pattern←v7952 = (* (( (ptr) firstSeg←v16272)+5) );
SOURCE(6883, 24)
   offset←v7980 = (* (( (ptr) firstSeg←v16272)+6) );
SOURCE(6909, 24)
   length←v8008 = (* (( (ptr) firstSeg←v16272)+7) );
SOURCE(6935, 299)
   {
      register word i←v16344 = 1;
      register word noName←c70836;
      noName←c70836 = hiSegment←v16300;
      if (( (int)i←v16344 >  (int)noName←c70836)) {
         goto lab←L100015;
         };
      lab←L100018: ;
SOURCE(6967, 35)
      {
         word pd98;
         pd98 = (* (( (ptr) (* (( (ptr) gf←c75540)+177)/* var←c70676 */  ))+29) );
         seg←v16244 = (word) ( *( (fPt) ((*  (ptr) pd98 ))))(slice←v7852, SGNCK(i←v16344), pd98);
         };
SOURCE(7004, 41)
      if (((* (( (ptr) seg←v16244)+4) ) != dashed←v7924)) {
SOURCE(7032, 13)
         allEqual←v7896 = 0;
         dashed←v7924 = 0;
         pattern←v7952 = 0;
         offset←v7980 = (*  (ptr) &fc95 );
         length←v8008 = (*  (ptr) &fc95 );
         goto lab←L100014;
         };
SOURCE(7047, 19)
      if ((0 == dashed←v7924)) {
SOURCE(7066, 4)
         goto lab←L100017;
         };
SOURCE(7072, 76)
      {
         word pd99;
         pd99 = (* (( (ptr) (* (( (ptr) gf←c75540)+179)/* var←c70868 */  ))+38) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd99 ))))((* (( (ptr) seg←v16244)+5) ), pattern←v7952, pd99))) {
SOURCE(7135, 13)
            allEqual←v7896 = 0;
            dashed←v7924 = 0;
            pattern←v7952 = 0;
            offset←v7980 = (*  (ptr) &fc95 );
            length←v8008 = (*  (ptr) &fc95 );
            goto lab←L100014;
            };
         };
SOURCE(7150, 41)
      {
         word x100;
         word x101;
         if (((
            x100 = (* (( (ptr) seg←v16244)+6) ),  *(float*)&x100
            ) != (
            x101 = offset←v7980,  *(float*)&x101
            ))) {
SOURCE(7178, 13)
            allEqual←v7896 = 0;
            dashed←v7924 = 0;
            pattern←v7952 = 0;
            offset←v7980 = (*  (ptr) &fc95 );
            length←v8008 = (*  (ptr) &fc95 );
            goto lab←L100014;
            };
         };
SOURCE(7193, 41)
      {
         word x102;
         word x103;
         if (((
            x102 = (* (( (ptr) seg←v16244)+7) ),  *(float*)&x102
            ) != (
            x103 = length←v8008,  *(float*)&x103
            ))) {
SOURCE(7221, 13)
            allEqual←v7896 = 0;
            dashed←v7924 = 0;
            pattern←v7952 = 0;
            offset←v7980 = (*  (ptr) &fc95 );
            length←v8008 = (*  (ptr) &fc95 );
            goto lab←L100014;
            };
         };
      lab←L100017: ;
      if (( (int)i←v16344 >=  (int)noName←c70836)) {
         goto lab←L100015;
         };
      i←v16344 = (i←v16344 + 1);
      goto lab←L100018;
      lab←L100015: ;
      };
SOURCE(7245, 15)
   allEqual←v7896 = 1;
   /* removed tail goto */ 
   lab←L100014: ;
   (*  (ptr) formal←c0119 ) = allEqual←v7896;
   (* (( (ptr) formal←c0119)+1) ) = dashed←v7924;
   (* (( (ptr) formal←c0119)+2) ) = pattern←v7952;
   (* (( (ptr) formal←c0119)+3) ) = offset←v7980;
   (* (( (ptr) formal←c0119)+4) ) = length←v8008;
   return;
   }

static word TrajDescribe←P360(sliceD←v8068)
   word sliceD←v8068;
   {
   register ptr gf←c75572 =  (ptr) &globalframe;
   word rope←v8112;
   word trajData←v16388;
   word trajParts←v16416;
   /* TrajDescribe: */ 
SOURCE(7266, 1163)
SOURCE(7266, 1163)
   rope←v8112 = 0;
SOURCE(7341, 46)
   trajData←v16388 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v8068 ))+1) ), (* (( (ptr) gf←c75572)+11) ));
SOURCE(7389, 43)
   trajParts←v16416 = XR←Narrow((* (( (ptr) sliceD←v8068)+1) ), (* (( (ptr) gf←c75572)+12) ));
SOURCE(7434, 995)
   if ((trajParts←v16416 == 0)) {
SOURCE(7456, 17)
      return(0);
      }
   else {
SOURCE(7473, 958)
      {
         word segNum←v16460;
         word cpNum←v16488;
         word segCount←v16516;
         word jointCount←v16544;
         word cpCount←v16572;
SOURCE(7495, 34)
         segCount←v16516 = (* (( (ptr) trajParts←v16416)+3) );
SOURCE(7531, 38)
         jointCount←v16544 = (* (( (ptr) trajParts←v16416)+4) );
SOURCE(7571, 42)
         cpCount←v16572 = (* (( (ptr) trajParts←v16416)+5) );
         if ((segCount←v16516 == 1)) {
SOURCE(7646, 215)
            {
               word segGen←v16616;
SOURCE(7688, 77)
               {
                  word pd104;
                  pd104 = (* (( (ptr) (* (( (ptr) gf←c75572)+180)/* var←c70900 */  ))+42) );
                  segGen←v16616 = (word) ( *( (fPt) ((*  (ptr) pd104 ))))(trajData←v16388, trajParts←v16416, pd104);
                  };
SOURCE(7767, 92)
               {
                  W2 var←c0131;
                  word var←c70932;
                  {
                     word pd105;
                     pd105 = (* (( (ptr) (* (( (ptr) gf←c75572)+180)/* var←c70900 */  ))+47) );
                     (void) ( *( (fPt) ((*  (ptr) pd105 ))))((word) &var←c0131, segGen←v16616, pd105);
                     };
                  var←c70932 = var←c0131.f1;
                  {
                     word pd106;
                     pd106 = (* (( (ptr) (* (( (ptr) gf←c75572)+179)/* var←c70868 */  ))+44) );
                     rope←v8112 = (word) ( *( (fPt) ((*  (ptr) pd106 ))))((*  (ptr) sliceD←v8068 ), var←c70932, pd106);
                     };
                  };
               };
            }
         else {
            if ( ( (segCount←v16516 == 0) ? (cpCount←v16572 == 1) : 0 ) ) {
SOURCE(7892, 249)
               {
                  word cpGen←v16660;
SOURCE(7929, 86)
                  {
                     word pd107;
                     pd107 = (* (( (ptr) (* (( (ptr) gf←c75572)+180)/* var←c70900 */  ))+48) );
                     cpGen←v16660 = (word) ( *( (fPt) ((*  (ptr) pd107 ))))(trajData←v16388, trajParts←v16416, pd107);
                     };
SOURCE(8017, 54)
                  {
                     W3 var←c70964;
                     {
                        word pd108;
                        pd108 = (* (( (ptr) (* (( (ptr) gf←c75572)+180)/* var←c70900 */  ))+51) );
                        (void) ( *( (fPt) ((*  (ptr) pd108 ))))((word) &var←c70964, cpGen←v16660, pd108);
                        };
                     cpNum←v16488 = var←c70964.f1;
                     segNum←v16460 = var←c70964.f0;
                     };
SOURCE(8073, 66)
                  {
                     word pd109;
                     pd109 = (* (( (ptr) (* (( (ptr) gf←c75572)+179)/* var←c70868 */  ))+42) );
                     rope←v8112 = (word) ( *( (fPt) ((*  (ptr) pd109 ))))((*  (ptr) sliceD←v8068 ), segNum←v16460, cpNum←v16488, pd109);
                     };
                  };
               }
            else {
               if ( (  ( (segCount←v16516 == 0) ? (cpCount←v16572 == 0) : 0 )  ? (jointCount←v16544 == 1) : 0 ) ) {
SOURCE(8189, 185)
                  {
                     word jointGen←v16704;
SOURCE(8229, 65)
                     {
                        word pd110;
                        pd110 = (* (( (ptr) (* (( (ptr) gf←c75572)+180)/* var←c70900 */  ))+53) );
                        jointGen←v16704 = (word) ( *( (fPt) ((*  (ptr) pd110 ))))(trajParts←v16416, pd110);
                        };
SOURCE(8296, 76)
                     {
                        word var←c70996;
                        {
                           word pd111;
                           word idx112;
                           pd111 = (* (( (ptr) (* (( (ptr) gf←c75572)+180)/* var←c70900 */  ))+61) );
                           var←c70996 = (
/*1*/   idx112 = (word) ( *( (fPt) ((*  (ptr) pd111 ))))(jointGen←v16704, pd111),
/*1*/   SGNCK(idx112)
/*1*/   );
                           };
                        {
                           word pd113;
                           pd113 = (* (( (ptr) (* (( (ptr) gf←c75572)+179)/* var←c70868 */  ))+43) );
                           rope←v8112 = (word) ( *( (fPt) ((*  (ptr) pd113 ))))((*  (ptr) sliceD←v8068 ), var←c70996, pd113);
                           };
                        };
                     };
                  }
               else {
SOURCE(8388, 41)
                  {
                     word pd114;
                     pd114 = (* (( (ptr) (* (( (ptr) gf←c75572)+179)/* var←c70868 */  ))+41) );
                     rope←v8112 = (word) ( *( (fPt) ((*  (ptr) pd114 ))))(sliceD←v8068, pd114);
                     };
                  };
               };
            };
         };
      };
SOURCE(7266, 1163)
   return(rope←v8112);
   }

static word TrajDescribeHit←P420(slice←v8172, hitData←v8200)
   word slice←v8172;
   word hitData←v8200;
   {
   register ptr gf←c75604 =  (ptr) &globalframe;
   word rope←v8260;
   word trajHitData←v16748;
   /* TrajDescribeHit: */ 
SOURCE(8438, 456)
SOURCE(8438, 456)
   rope←v8260 = 0;
SOURCE(8523, 42)
   trajHitData←v16748 = XR←Narrow(hitData←v8200, (* (( (ptr) gf←c75604)+13) ));
SOURCE(8567, 327)
   {
      word var←c71028;
      var←c71028 = (*  (ptr) trajHitData←v16748 );
      switch (var←c71028) {
         case 1: 
SOURCE(8608, 59)
            {
               word pd115;
               word idx116;
               pd115 = (* (( (ptr) (* (( (ptr) gf←c75604)+179)/* var←c70868 */  ))+43) );
               rope←v8260 = (word) ( *( (fPt) ((*  (ptr) pd115 ))))(slice←v8172, (
                     idx116 = (* (( (ptr) trajHitData←v16748)+3) ),
                     SGNCK(idx116)
                     ), pd115);
               };
            break;
         case 2: 
SOURCE(8685, 83)
            {
               word pd117;
               word idx118;
               word idx119;
               pd117 = (* (( (ptr) (* (( (ptr) gf←c75604)+179)/* var←c70868 */  ))+42) );
               rope←v8260 = (word) ( *( (fPt) ((*  (ptr) pd117 ))))(slice←v8172, (
                     idx118 = (* (( (ptr) trajHitData←v16748)+1) ),
                     SGNCK(idx118)
                     ), (
                     idx119 = (* (( (ptr) trajHitData←v16748)+2) ),
                     SGNCK(idx119)
                     ), pd117);
               };
            break;
         case 3: 
SOURCE(8781, 59)
            {
               word pd120;
               word idx121;
               pd120 = (* (( (ptr) (* (( (ptr) gf←c75604)+179)/* var←c70868 */  ))+44) );
               rope←v8260 = (word) ( *( (fPt) ((*  (ptr) pd120 ))))(slice←v8172, (
                     idx121 = (* (( (ptr) trajHitData←v16748)+1) ),
                     SGNCK(idx121)
                     ), pd120);
               };
            break;
         case 4: 
SOURCE(8854, 40)
            {
               word pd122;
               pd122 = (* (( (ptr) (* (( (ptr) gf←c75604)+179)/* var←c70868 */  ))+45) );
               rope←v8260 = (word) ( *( (fPt) ((*  (ptr) pd122 ))))(slice←v8172, pd122);
               };
            break;
         default: 
SOURCE(8907, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(8438, 456)
   return(rope←v8260);
   }

static void TrajFileout←P480(slice←v8320, f←v8348)
   word slice←v8320;
   word f←v8348;
   {
   register ptr gf←c75636 =  (ptr) &globalframe;
   word trajData←v16792;
   word roleRope←v16820;
   word strokeWidth←v16848;
   word offset←v16876;
   word length←v16904;
   word strokeOK←v16932;
   word endsOK←v16960;
   word colorOK←v16988;
   word dashOK←v17016;
   word dashed←v17044;
   word pattern←v17072 = 0;
   word color←v17100 = 0;
   W2 point←v17128;
   word end←v17156;
   word className←v17184 = 0;
   word seg←v17212 = 0;
   word arrowCode←v17240;
   word hiJoint←v17268;
   /* TrajFileout: */ 
SOURCE(8918, 3197)
SOURCE(8969, 39)
   trajData←v16792 = XR←Narrow((* (( (ptr) slice←v8320)+1) ), (* (( (ptr) gf←c75636)+11) ));
SOURCE(9010, 47)
   roleRope←v16820 = (word) RoleToRope←P660((*  (ptr) (trajData←v16792) ));
SOURCE(9264, 36)
   {
      word pd123;
      pd123 = (* (( (ptr) (* (( (ptr) gf←c75636)+177)/* var←c70676 */  ))+39) );
      hiJoint←v17268 = (word) ( *( (fPt) ((*  (ptr) pd123 ))))(slice←v8320, pd123);
      };
SOURCE(9302, 166)
   if ((0 != (* (( (ptr) trajData←v16792)+8) ))) {
      if ((0 != (* (( (ptr) trajData←v16792)+7) ))) {
         arrowCode←v17240 = 3;
         }
      else {
         arrowCode←v17240 = 2;
         };
      }
   else {
      if ((0 != (* (( (ptr) trajData←v16792)+7) ))) {
         arrowCode←v17240 = 1;
         }
      else {
         arrowCode←v17240 = 0;
         };
      };
SOURCE(9470, 92)
   {
      W2 var←c71060;
      W2 var←c71092;
      W2 var←c71124;
      var←c71060.f0 = 11;
      var←c71060.f1 = roleRope←v16820;
      var←c71092.f0 = 5;
      var←c71092.f1 = hiJoint←v17268;
      var←c71124.f0 = 5;
      var←c71124.f1 = arrowCode←v17240;
      {
         word pd124;
         pd124 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+60) );
         (void) ( *( (fPt) ((*  (ptr) pd124 ))))(f←v8348, (* (( (ptr) gf←c75636)+59) ), var←c71060, var←c71092, var←c71124, pd124)
         ;
         };
      };
SOURCE(9564, 16)
   {
      word pd125;
      pd125 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd125 ))))(f←v8348, (* (( (ptr) gf←c75636)+58) ), 0, 2147483647, pd125);
      };
SOURCE(9597, 52)
   {
      word pd126;
      pd126 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd126 ))))(f←v8348, (* (( (ptr) trajData←v16792)+6) ), pd126);
      };
SOURCE(9651, 41)
   {
      W2 var←c71220;
      (void) AllStrokeEndsEqual←P120((word) &var←c71220, slice←v8320);
      end←v17156 = var←c71220.f1;
      endsOK←v16960 = var←c71220.f0;
      };
SOURCE(9694, 17)
   {
      word pd127;
      pd127 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd127 ))))(f←v8348, (* (( (ptr) gf←c75636)+57) ), 0, 2147483647, pd127);
      };
SOURCE(9713, 31)
   {
      word pd128;
      pd128 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd128 ))))(f←v8348, endsOK←v16960, pd128);
      };
SOURCE(9746, 16)
   {
      word pd129;
      pd129 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
      (void) ( *( (fPt) ((*  (ptr) pd129 ))))(f←v8348, 32, pd129);
      };
SOURCE(9764, 33)
   {
      word pd130;
      pd130 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd130 ))))(f←v8348, end←v17156, pd130);
      };
SOURCE(9799, 16)
   {
      word pd131;
      pd131 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
      (void) ( *( (fPt) ((*  (ptr) pd131 ))))(f←v8348, 32, pd131);
      };
SOURCE(9817, 41)
   strokeWidth←v16848 = (word) AllStrokeWidthsEqual←P180(slice←v8320);
SOURCE(9860, 29)
   {
      word x132;
      word x133;
      strokeOK←v16932 =  (unsigned) ((
         x132 = strokeWidth←v16848,  *(float*)&x132
         ) >= (
         x133 = (*  (ptr) &fc95 ),  *(float*)&x133
         ));
      };
SOURCE(9891, 38)
   {
      W2 var←c71252;
      var←c71252.f0 = 8;
      var←c71252.f1 = strokeWidth←v16848;
      {
         word pd134;
         pd134 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+61) );
         (void) ( *( (fPt) ((*  (ptr) pd134 ))))(f←v8348, (* (( (ptr) gf←c75636)+56) ), var←c71252, pd134);
         };
      };
SOURCE(9931, 46)
   {
      W2 var←c71284;
      (void) AllStrokeColorsEqual←P240((word) &var←c71284, slice←v8320);
      color←v17100 = var←c71284.f1;
      colorOK←v16988 = var←c71284.f0;
      };
SOURCE(9979, 16)
   {
      word pd135;
      pd135 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd135 ))))(f←v8348, (* (( (ptr) gf←c75636)+53) ), 0, 2147483647, pd135);
      };
SOURCE(9997, 32)
   {
      word pd136;
      pd136 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd136 ))))(f←v8348, colorOK←v16988, pd136);
      };
SOURCE(10031, 16)
   {
      word pd137;
      pd137 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
      (void) ( *( (fPt) ((*  (ptr) pd137 ))))(f←v8348, 32, pd137);
      };
SOURCE(10049, 31)
   {
      word pd138;
      pd138 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd138 ))))(f←v8348, color←v17100, pd138);
      };
SOURCE(10082, 16)
   {
      word pd139;
      pd139 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
      (void) ( *( (fPt) ((*  (ptr) pd139 ))))(f←v8348, 32, pd139);
      };
SOURCE(10100, 65)
   {
      W5 var←c71316;
      (void) AllDashesEqual←P300((word) &var←c71316, slice←v8320);
      length←v16904 = var←c71316.f4;
      offset←v16876 = var←c71316.f3;
      pattern←v17072 = var←c71316.f2;
      dashed←v17044 = var←c71316.f1;
      dashOK←v17016 = var←c71316.f0;
      };
SOURCE(10167, 16)
   {
      word pd140;
      pd140 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd140 ))))(f←v8348, (* (( (ptr) gf←c75636)+51) ), 0, 2147483647, pd140);
      };
SOURCE(10185, 31)
   {
      word pd141;
      pd141 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd141 ))))(f←v8348, dashOK←v17016, pd141);
      };
SOURCE(10218, 192)
   if ((0 != dashOK←v17016)) {
SOURCE(10235, 16)
      {
         word pd142;
         pd142 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
         (void) ( *( (fPt) ((*  (ptr) pd142 ))))(f←v8348, 32, pd142);
         };
SOURCE(10253, 31)
      {
         word pd143;
         pd143 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+15) );
         (void) ( *( (fPt) ((*  (ptr) pd143 ))))(f←v8348, dashed←v17044, pd143);
         };
SOURCE(10286, 16)
      {
         word pd144;
         pd144 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
         (void) ( *( (fPt) ((*  (ptr) pd144 ))))(f←v8348, 32, pd144);
         };
SOURCE(10304, 106)
      if ((0 != dashed←v17044)) {
SOURCE(10321, 39)
         {
            word pd145;
            pd145 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+14) );
            (void) ( *( (fPt) ((*  (ptr) pd145 ))))(f←v8348, pattern←v17072, pd145);
            };
SOURCE(10362, 48)
         {
            W2 var←c71348;
            W2 var←c71380;
            W2 var←c0782;
            var←c71348.f0 = 8;
            var←c71348.f1 = offset←v16876;
            var←c71380.f0 = 8;
            var←c71380.f1 = length←v16904;
            (*  (ptr) (word) &var←c0782 ) = 0;
            (* (( (ptr) (word) &var←c0782) + 1) ) = 0;
            {
               word pd146;
               pd146 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+60) );
               (void) ( *( (fPt) ((*  (ptr) pd146 ))))(f←v8348, (* (( (ptr) gf←c75636)+50) ), var←c71348, var←c71380, var←c0782, pd146);
               };
            };
         };
      };
SOURCE(10418, 16)
   {
      word pd147;
      pd147 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
      (void) ( *( (fPt) ((*  (ptr) pd147 ))))(f←v8348, 10, pd147);
      };
SOURCE(10436, 38)
   {
      word pd148;
      pd148 = (* (( (ptr) (* (( (ptr) gf←c75636)+177)/* var←c70676 */  ))+32) );
      (void) ( *( (fPt) ((*  (ptr) pd148 ))))((word) &point←v17128, slice←v8320, 0, pd148);
      };
SOURCE(10476, 31)
   {
      word pd149;
      pd149 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd149 ))))(f←v8348, point←v17128, pd149);
      };
SOURCE(10509, 792)
   {
      register word index←v17312 = 1;
      register word noName←c71444;
      noName←c71444 = hiJoint←v17268;
      if ((index←v17312 > noName←c71444)) {
         goto lab←L100019;
         };
      lab←L100022: ;
SOURCE(10543, 43)
      {
         word pd150;
         pd150 = (* (( (ptr) (* (( (ptr) gf←c75636)+177)/* var←c70676 */  ))+29) );
         seg←v17212 = (word) ( *( (fPt) ((*  (ptr) pd150 ))))(slice←v8320, SGNCK((index←v17312 - 1)), pd150);
         };
SOURCE(10588, 41)
      {
         word pd151;
         pd151 = (* (( (ptr) (* (( (ptr) gf←c75636)+183)/* var←c71476 */  ))+9) );
         className←v17184 = (word) ( *( (fPt) ((*  (ptr) pd151 ))))((*  (ptr) ((*  (ptr) seg←v17212 )) ), pd151);
         };
SOURCE(10631, 120)
      if ((0 != strokeOK←v16932)) {
SOURCE(10648, 41)
         {
            W2 var←c71508;
            var←c71508.f0 = 11;
            var←c71508.f1 = className←v17184;
            {
               word pd152;
               pd152 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+61) );
               (void) ( *( (fPt) ((*  (ptr) pd152 ))))(f←v8348, (* (( (ptr) gf←c75636)+49) ), var←c71508, pd152);
               };
            };
         }
      else {
SOURCE(10689, 62)
         {
            W2 var←c71540;
            W2 var←c71572;
            W2 var←c0783;
            var←c71540.f0 = 11;
            var←c71540.f1 = className←v17184;
            var←c71572.f0 = 8;
            var←c71572.f1 = (* (( (ptr) seg←v17212)+2) );
            (*  (ptr) (word) &var←c0783 ) = 0;
            (* (( (ptr) (word) &var←c0783) + 1) ) = 0;
            {
               word pd153;
               pd153 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+60) );
               (void) ( *( (fPt) ((*  (ptr) pd153 ))))(f←v8348, (* (( (ptr) gf←c75636)+48) ), var←c71540, var←c71572, var←c0783, pd153);
               };
            };
         };
SOURCE(10753, 82)
      if ((0 == endsOK←v16960)) {
SOURCE(10774, 43)
         {
            word pd154;
            pd154 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+4) );
            (void) ( *( (fPt) ((*  (ptr) pd154 ))))(f←v8348, (* (( (ptr) seg←v17212)+3) ), pd154);
            };
SOURCE(10819, 16)
         {
            word pd155;
            pd155 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
            (void) ( *( (fPt) ((*  (ptr) pd155 ))))(f←v8348, 32, pd155);
            };
         };
SOURCE(10840, 75)
      if ((0 == colorOK←v16988)) {
SOURCE(10862, 35)
         {
            word pd156;
            pd156 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+6) );
            (void) ( *( (fPt) ((*  (ptr) pd156 ))))(f←v8348, (* (( (ptr) seg←v17212)+8) ), pd156);
            };
SOURCE(10899, 16)
         {
            word pd157;
            pd157 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
            (void) ( *( (fPt) ((*  (ptr) pd157 ))))(f←v8348, 32, pd157);
            };
         };
SOURCE(10920, 217)
      if ((0 == dashOK←v17016)) {
SOURCE(10941, 35)
         {
            word pd158;
            pd158 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+15) );
            (void) ( *( (fPt) ((*  (ptr) pd158 ))))(f←v8348, (* (( (ptr) seg←v17212)+4) ), pd158);
            };
SOURCE(10978, 16)
         {
            word pd159;
            pd159 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
            (void) ( *( (fPt) ((*  (ptr) pd159 ))))(f←v8348, 32, pd159);
            };
SOURCE(10996, 141)
         if ((0 != (* (( (ptr) seg←v17212)+4) ))) {
SOURCE(11017, 43)
            {
               word pd160;
               pd160 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+14) );
               (void) ( *( (fPt) ((*  (ptr) pd160 ))))(f←v8348, (* (( (ptr) seg←v17212)+5) ), pd160);
               };
SOURCE(11062, 16)
            {
               word pd161;
               pd161 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
               (void) ( *( (fPt) ((*  (ptr) pd161 ))))(f←v8348, 32, pd161);
               };
SOURCE(11080, 57)
            {
               W2 var←c71636;
               W2 var←c71668;
               W2 var←c0784;
               var←c71636.f0 = 8;
               var←c71636.f1 = (* (( (ptr) seg←v17212)+6) );
               var←c71668.f0 = 8;
               var←c71668.f1 = (* (( (ptr) seg←v17212)+7) );
               (*  (ptr) (word) &var←c0784 ) = 0;
               (* (( (ptr) (word) &var←c0784) + 1) ) = 0;
               {
                  word pd162;
                  pd162 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+60) );
                  (void) ( *( (fPt) ((*  (ptr) pd162 ))))(f←v8348, (* (( (ptr) gf←c75636)+47) ), var←c71636, var←c71668, var←c0784, pd162);
                  };
               };
            };
         };
SOURCE(11145, 25)
      {
         word pd163;
         pd163 = (* (( (ptr) (*  (ptr) seg←v17212 ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd163 ))))(seg←v17212, f←v8348, pd163);
         };
SOURCE(11172, 35)
      {
         word pd164;
         pd164 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+13) );
         (void) ( *( (fPt) ((*  (ptr) pd164 ))))(f←v8348, (* (( (ptr) seg←v17212)+25) ), pd164);
         };
SOURCE(11209, 15)
      {
         word pd165;
         pd165 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+93) );
         (void) ( *( (fPt) ((*  (ptr) pd165 ))))(f←v8348, (* (( (ptr) gf←c75636)+46) ), 0, 2147483647, pd165);
         };
SOURCE(11226, 42)
      {
         word pd166;
         pd166 = (* (( (ptr) (* (( (ptr) gf←c75636)+177)/* var←c70676 */  ))+32) );
         (void) ( *( (fPt) ((*  (ptr) pd166 ))))((word) &point←v17128, slice←v8320, index←v17312, pd166);
         };
SOURCE(11270, 31)
      {
         word pd167;
         pd167 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd167 ))))(f←v8348, point←v17128, pd167);
         };
      if ((index←v17312 >= noName←c71444)) {
         goto lab←L100019;
         };
      index←v17312 = (index←v17312 + 1);
      goto lab←L100022;
      lab←L100019: ;
      };
SOURCE(11312, 736)
   if (((*  (ptr) trajData←v16792 ) == 0) || ((*  (ptr) trajData←v16792 ) == 1)) {
SOURCE(11370, 41)
      {
         word pd168;
         pd168 = (* (( (ptr) (* (( (ptr) gf←c75636)+177)/* var←c70676 */  ))+29) );
         seg←v17212 = (word) ( *( (fPt) ((*  (ptr) pd168 ))))(slice←v8320, hiJoint←v17268, pd168);
         };
SOURCE(11413, 41)
      {
         word pd169;
         pd169 = (* (( (ptr) (* (( (ptr) gf←c75636)+183)/* var←c71476 */  ))+9) );
         className←v17184 = (word) ( *( (fPt) ((*  (ptr) pd169 ))))((*  (ptr) ((*  (ptr) seg←v17212 )) ), pd169);
         };
SOURCE(11456, 120)
      if ((0 != strokeOK←v16932)) {
SOURCE(11473, 41)
         {
            W2 var←c71732;
            var←c71732.f0 = 11;
            var←c71732.f1 = className←v17184;
            {
               word pd170;
               pd170 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+61) );
               (void) ( *( (fPt) ((*  (ptr) pd170 ))))(f←v8348, (* (( (ptr) gf←c75636)+49) ), var←c71732, pd170);
               };
            };
         }
      else {
SOURCE(11514, 62)
         {
            W2 var←c71764;
            W2 var←c71796;
            W2 var←c0785;
            var←c71764.f0 = 11;
            var←c71764.f1 = className←v17184;
            var←c71796.f0 = 8;
            var←c71796.f1 = (* (( (ptr) seg←v17212)+2) );
            (*  (ptr) (word) &var←c0785 ) = 0;
            (* (( (ptr) (word) &var←c0785) + 1) ) = 0;
            {
               word pd171;
               pd171 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+60) );
               (void) ( *( (fPt) ((*  (ptr) pd171 ))))(f←v8348, (* (( (ptr) gf←c75636)+48) ), var←c71764, var←c71796, var←c0785, pd171);
               };
            };
         };
SOURCE(11578, 82)
      if ((0 == endsOK←v16960)) {
SOURCE(11599, 43)
         {
            word pd172;
            pd172 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+4) );
            (void) ( *( (fPt) ((*  (ptr) pd172 ))))(f←v8348, (* (( (ptr) seg←v17212)+3) ), pd172);
            };
SOURCE(11644, 16)
         {
            word pd173;
            pd173 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
            (void) ( *( (fPt) ((*  (ptr) pd173 ))))(f←v8348, 32, pd173);
            };
         };
SOURCE(11665, 75)
      if ((0 == colorOK←v16988)) {
SOURCE(11687, 35)
         {
            word pd174;
            pd174 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+6) );
            (void) ( *( (fPt) ((*  (ptr) pd174 ))))(f←v8348, (* (( (ptr) seg←v17212)+8) ), pd174);
            };
SOURCE(11724, 16)
         {
            word pd175;
            pd175 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
            (void) ( *( (fPt) ((*  (ptr) pd175 ))))(f←v8348, 32, pd175);
            };
         };
SOURCE(11745, 217)
      if ((0 == dashOK←v17016)) {
SOURCE(11766, 35)
         {
            word pd176;
            pd176 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+15) );
            (void) ( *( (fPt) ((*  (ptr) pd176 ))))(f←v8348, (* (( (ptr) seg←v17212)+4) ), pd176);
            };
SOURCE(11803, 16)
         {
            word pd177;
            pd177 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
            (void) ( *( (fPt) ((*  (ptr) pd177 ))))(f←v8348, 32, pd177);
            };
SOURCE(11821, 141)
         if ((0 != (* (( (ptr) seg←v17212)+4) ))) {
SOURCE(11842, 43)
            {
               word pd178;
               pd178 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+14) );
               (void) ( *( (fPt) ((*  (ptr) pd178 ))))(f←v8348, (* (( (ptr) seg←v17212)+5) ), pd178);
               };
SOURCE(11887, 16)
            {
               word pd179;
               pd179 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+21) );
               (void) ( *( (fPt) ((*  (ptr) pd179 ))))(f←v8348, 32, pd179);
               };
SOURCE(11905, 57)
            {
               W2 var←c71860;
               W2 var←c71892;
               W2 var←c0786;
               var←c71860.f0 = 8;
               var←c71860.f1 = (* (( (ptr) seg←v17212)+6) );
               var←c71892.f0 = 8;
               var←c71892.f1 = (* (( (ptr) seg←v17212)+7) );
               (*  (ptr) (word) &var←c0786 ) = 0;
               (* (( (ptr) (word) &var←c0786) + 1) ) = 0;
               {
                  word pd180;
                  pd180 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+60) );
                  (void) ( *( (fPt) ((*  (ptr) pd180 ))))(f←v8348, (* (( (ptr) gf←c75636)+47) ), var←c71860, var←c71892, var←c0786, pd180);
                  };
               };
            };
         };
SOURCE(11970, 25)
      {
         word pd181;
         pd181 = (* (( (ptr) (*  (ptr) seg←v17212 ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd181 ))))(seg←v17212, f←v8348, pd181);
         };
SOURCE(11997, 35)
      {
         word pd182;
         pd182 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+13) );
         (void) ( *( (fPt) ((*  (ptr) pd182 ))))(f←v8348, (* (( (ptr) seg←v17212)+25) ), pd182);
         };
SOURCE(12034, 14)
      {
         word pd183;
         pd183 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+93) );
         (void) ( *( (fPt) ((*  (ptr) pd183 ))))(f←v8348, (* (( (ptr) gf←c75636)+45) ), 0, 2147483647, pd183);
         };
      };
SOURCE(12053, 19)
   {
      word pd184;
      pd184 = (* (( (ptr) (* (( (ptr) gf←c75636)+181)/* var←c71156 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd184 ))))(f←v8348, (* (( (ptr) gf←c75636)+39) ), 0, 2147483647, pd184);
      };
SOURCE(12074, 41)
   {
      word pd185;
      pd185 = (* (( (ptr) (* (( (ptr) gf←c75636)+182)/* var←c71188 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd185 ))))(f←v8348, (* (( (ptr) trajData←v16792)+9) ), pd185);
      };
   }

static word TrajFilein←P540(f←v8408, version←v8436, router←v8464, camera←v8492)
   word f←v8408;
   word version←v8436;
   word router←v8464;
   word camera←v8492;
   {
   register ptr gf←c75668 =  (ptr) &globalframe;
   word slice←v8536;
   word hasCircle←v17356 = 0;
   word hiJoint←v17384;
   word arrowCode←v17412;
   word role←v17440;
   word roleName←v17468 = 0;
   word className←v17496 = 0;
   W2 pFirst←v17524;
   W2 p0←v17552;
   W2 p1←v17580;
   word trajData←v17608 = 0;
   word seg←v17636 = 0;
   word class←v17664 = 0;
   word strokeWidth←v17692;
   word offset←v17720;
   word length←v17748;
   word pattern←v17776 = 0;
   word strokeColor←v17804 = 0;
   word strokeEnd←v17832;
   word strokeJoint←v17860;
   word success←v17888;
   word colorOK←v17916;
   word widthOK←v17944;
   word endsOK←v17972;
   word dashOK←v18000;
   word dashed←v18028;
   word fwd←v18056;
   /* TrajFilein: */ 
SOURCE(12120, 5215)
SOURCE(12120, 5215)
   slice←v8536 = 0;
SOURCE(12600, 55)
   {
      word x186;
      word x188;
      if (((
         x186 = version←v8436,  *(float*)&x186
         ) < (
         x188 = (*  (ptr) &fc187 ),  *(float*)&x188
         ))) {
SOURCE(12626, 29)
         {
            word pd189;
            pd189 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd189 ))))(f←v8408, (* (( (ptr) gf←c75668)+37) ), pd189);
            };
         };
      };
SOURCE(12687, 25)
   {
      word pd190;
      pd190 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd190 ))))(f←v8408, 40, pd190);
      };
SOURCE(12714, 32)
   {
      word pd191;
      pd191 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+8) );
      roleName←v17468 = (word) ( *( (fPt) ((*  (ptr) pd191 ))))(f←v8408, pd191);
      };
SOURCE(12748, 29)
   role←v17440 = (word) RoleFromRope←P600(roleName←v17468);
SOURCE(12779, 25)
   {
      word pd192;
      pd192 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd192 ))))(f←v8408, 41, pd192);
      };
SOURCE(12806, 25)
   {
      word pd193;
      pd193 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd193 ))))(f←v8408, 91, pd193);
      };
SOURCE(12833, 30)
   {
      word pd194;
      pd194 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+25) );
      hiJoint←v17384 = (word) ( *( (fPt) ((*  (ptr) pd194 ))))(f←v8408, pd194);
      };
SOURCE(12865, 25)
   {
      word pd195;
      pd195 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd195 ))))(f←v8408, 93, pd195);
      };
SOURCE(12892, 117)
   {
      word x196;
      word x198;
      if (((
         x196 = version←v8436,  *(float*)&x196
         ) >= (
         x198 = (*  (ptr) &fc197 ),  *(float*)&x198
         ))) {
SOURCE(12921, 32)
         {
            word pd199;
            pd199 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd199 ))))(f←v8408, (* (( (ptr) gf←c75668)+36) ), pd199);
            };
SOURCE(12955, 32)
         {
            word pd200;
            pd200 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+25) );
            arrowCode←v17412 = (word) ( *( (fPt) ((*  (ptr) pd200 ))))(f←v8408, pd200);
            };
         }
      else {
SOURCE(12996, 13)
         arrowCode←v17412 = 0;
         };
      };
SOURCE(13011, 247)
   {
      word x201;
      word x203;
      if (((
         x201 = version←v8436,  *(float*)&x201
         ) >= (
         x203 = (*  (ptr) &fc202 ),  *(float*)&x203
         ))) {
SOURCE(13040, 27)
         {
            word pd204;
            pd204 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd204 ))))(f←v8408, (* (( (ptr) gf←c75668)+31) ), pd204);
            };
SOURCE(13069, 42)
         {
            word pd205;
            pd205 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+15) );
            strokeJoint←v17860 = (word) ( *( (fPt) ((*  (ptr) pd205 ))))(f←v8408, pd205);
            };
SOURCE(13113, 27)
         {
            word pd206;
            pd206 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd206 ))))(f←v8408, (* (( (ptr) gf←c75668)+32) ), pd206);
            };
SOURCE(13142, 30)
         {
            word pd207;
            pd207 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+24) );
            endsOK←v17972 = (word) ( *( (fPt) ((*  (ptr) pd207 ))))(f←v8408, pd207);
            };
SOURCE(13174, 38)
         {
            word pd208;
            pd208 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+14) );
            strokeEnd←v17832 = (word) ( *( (fPt) ((*  (ptr) pd208 ))))(f←v8408, pd208);
            };
         }
      else {
SOURCE(13223, 19)
         strokeJoint←v17860 = 2;
SOURCE(13244, 14)
         endsOK←v17972 = 0;
         };
      };
SOURCE(13263, 302)
   {
      word x209;
      word x211;
      if (((
         x209 = version←v8436,  *(float*)&x209
         ) >= (
         x211 = (*  (ptr) &fc210 ),  *(float*)&x211
         ))) {
SOURCE(13293, 27)
         {
            word pd212;
            pd212 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd212 ))))(f←v8408, (* (( (ptr) gf←c75668)+33) ), pd212);
            };
SOURCE(13322, 35)
         {
            word pd213;
            pd213 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+27) );
            strokeWidth←v17692 = (word) ( *( (fPt) ((*  (ptr) pd213 ))))(f←v8408, pd213);
            };
SOURCE(13359, 27)
         {
            word x214;
            word x215;
            widthOK←v17944 =  (unsigned) ((
               x214 = strokeWidth←v17692,  *(float*)&x214
               ) >= (
               x215 = (*  (ptr) &fc95 ),  *(float*)&x215
               ));
            };
SOURCE(13388, 27)
         {
            word pd216;
            pd216 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd216 ))))(f←v8408, (* (( (ptr) gf←c75668)+34) ), pd216);
            };
SOURCE(13417, 31)
         {
            word pd217;
            pd217 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+24) );
            colorOK←v17916 = (word) ( *( (fPt) ((*  (ptr) pd217 ))))(f←v8408, pd217);
            };
SOURCE(13450, 45)
         {
            word pd218;
            pd218 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+16) );
            strokeColor←v17804 = (word) ( *( (fPt) ((*  (ptr) pd218 ))))(f←v8408, version←v8436, pd218);
            };
         }
      else {
SOURCE(13506, 25)
         {
            word pd219;
            pd219 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+10) );
            (void) ( *( (fPt) ((*  (ptr) pd219 ))))(f←v8408, 58, pd219);
            };
SOURCE(13533, 15)
         widthOK←v17944 = 0;
SOURCE(13550, 15)
         colorOK←v17916 = 0;
         };
      };
SOURCE(13570, 304)
   {
      word x220;
      word x222;
      if (((
         x220 = version←v8436,  *(float*)&x220
         ) >= (
         x222 = (*  (ptr) &fc221 ),  *(float*)&x222
         ))) {
SOURCE(13599, 27)
         {
            word pd223;
            pd223 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd223 ))))(f←v8408, (* (( (ptr) gf←c75668)+35) ), pd223);
            };
SOURCE(13628, 30)
         {
            word pd224;
            pd224 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+24) );
            dashOK←v18000 = (word) ( *( (fPt) ((*  (ptr) pd224 ))))(f←v8408, pd224);
            };
SOURCE(13660, 168)
         if ((0 != dashOK←v18000)) {
SOURCE(13677, 30)
            {
               word pd225;
               pd225 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+24) );
               dashed←v18028 = (word) ( *( (fPt) ((*  (ptr) pd225 ))))(f←v8408, pd225);
               };
SOURCE(13709, 119)
            if ((0 != dashed←v18028)) {
SOURCE(13726, 38)
               {
                  word pd226;
                  pd226 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+23) );
                  pattern←v17776 = (word) ( *( (fPt) ((*  (ptr) pd226 ))))(f←v8408, pd226);
                  };
SOURCE(13766, 30)
               {
                  word pd227;
                  pd227 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+27) );
                  offset←v17720 = (word) ( *( (fPt) ((*  (ptr) pd227 ))))(f←v8408, pd227);
                  };
SOURCE(13798, 30)
               {
                  word pd228;
                  pd228 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+27) );
                  length←v17748 = (word) ( *( (fPt) ((*  (ptr) pd228 ))))(f←v8408, pd228);
                  };
               };
            };
         }
      else {
SOURCE(13845, 13)
         dashOK←v18000 = 1;
SOURCE(13860, 14)
         dashed←v18028 = 0;
         };
      };
SOURCE(13880, 36)
   {
      W2 var←c71988;
      {
         word pd229;
         pd229 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+19) );
         (void) ( *( (fPt) ((*  (ptr) pd229 ))))((word) &var←c71988, f←v8408, pd229);
         };
      p0←v17552 = var←c71988;
      pFirst←v17524 = var←c71988;
      };
SOURCE(13918, 29)
   {
      word pd230;
      pd230 = (* (( (ptr) (* (( (ptr) gf←c75668)+177)/* var←c70676 */  ))+4) );
      slice←v8536 = (word) ( *( (fPt) ((*  (ptr) pd230 ))))(p0←v17552, pd230);
      };
SOURCE(13949, 29)
   trajData←v17608 = XR←Narrow((* (( (ptr) slice←v8536)+1) ), (* (( (ptr) gf←c75668)+11) ));
SOURCE(13980, 34)
   (* (( (ptr) trajData←v17608)+6) ) = strokeJoint←v17860;
SOURCE(14016, 1662)
   {
      register word index←v18100 = 1;
      register word noName←c72020;
      noName←c72020 = hiJoint←v17384;
      if ((index←v18100 > noName←c72020)) {
         goto lab←L100023;
         };
      lab←L100026: ;
SOURCE(14050, 25)
      {
         word pd231;
         pd231 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+10) );
         (void) ( *( (fPt) ((*  (ptr) pd231 ))))(f←v8408, 40, pd231);
         };
SOURCE(14077, 33)
      {
         word pd232;
         pd232 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+8) );
         className←v17496 = (word) ( *( (fPt) ((*  (ptr) pd232 ))))(f←v8408, pd232);
         };
SOURCE(14112, 55)
      if ((0 == widthOK←v17944)) {
SOURCE(14132, 35)
         {
            word pd233;
            pd233 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+27) );
            strokeWidth←v17692 = (word) ( *( (fPt) ((*  (ptr) pd233 ))))(f←v8408, pd233);
            };
         };
SOURCE(14169, 112)
      {
         word x234;
         word x235;
         if (((
            x234 = version←v8436,  *(float*)&x234
            ) >= (
            x235 = (*  (ptr) &fc202 ),  *(float*)&x235
            ))) {
SOURCE(14198, 57)
            if ((0 == endsOK←v17972)) {
SOURCE(14217, 38)
               {
                  word pd236;
                  pd236 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+14) );
                  strokeEnd←v17832 = (word) ( *( (fPt) ((*  (ptr) pd236 ))))(f←v8408, pd236);
                  };
               };
            }
         else {
SOURCE(14264, 17)
            strokeEnd←v17832 = 2;
            };
         };
SOURCE(14283, 129)
      {
         word x237;
         word x239;
         if (((
            x237 = version←v8436,  *(float*)&x237
            ) >= (
            x239 = (*  (ptr) &fc238 ),  *(float*)&x239
            ))) {
SOURCE(14312, 65)
            if ((0 == colorOK←v17916)) {
SOURCE(14332, 45)
               {
                  word pd240;
                  pd240 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+16) );
                  strokeColor←v17804 = (word) ( *( (fPt) ((*  (ptr) pd240 ))))(f←v8408, version←v8436, pd240);
                  };
               };
            }
         else {
SOURCE(14386, 26)
            strokeColor←v17804 = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c75668)+185)/* var←c72052 */  ))+54) ) );
            };
         };
SOURCE(14414, 172)
      if ((0 == dashOK←v18000)) {
SOURCE(14435, 30)
         {
            word pd241;
            pd241 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+24) );
            dashed←v18028 = (word) ( *( (fPt) ((*  (ptr) pd241 ))))(f←v8408, pd241);
            };
SOURCE(14467, 119)
         if ((0 != dashed←v18028)) {
SOURCE(14484, 38)
            {
               word pd242;
               pd242 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+23) );
               pattern←v17776 = (word) ( *( (fPt) ((*  (ptr) pd242 ))))(f←v8408, pd242);
               };
SOURCE(14524, 30)
            {
               word pd243;
               pd243 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+27) );
               offset←v17720 = (word) ( *( (fPt) ((*  (ptr) pd243 ))))(f←v8408, pd243);
               };
SOURCE(14556, 30)
            {
               word pd244;
               pd244 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+27) );
               length←v17748 = (word) ( *( (fPt) ((*  (ptr) pd244 ))))(f←v8408, pd244);
               };
            };
         };
SOURCE(14594, 61)
      {
         word var←c72084;
         {
            word pd245;
            pd245 = (* (( (ptr) (* (( (ptr) gf←c75668)+183)/* var←c71476 */  ))+5) );
            var←c72084 = (word) ( *( (fPt) ((*  (ptr) pd245 ))))(className←v17496, 0, 2147483647, pd245);
            };
         {
            word pd246;
            pd246 = (* (( (ptr) (* (( (ptr) gf←c75668)+186)/* var←c72116 */  ))+24) );
            class←v17664 = (word) ( *( (fPt) ((*  (ptr) pd246 ))))(var←c72084, pd246);
            };
         };
SOURCE(14657, 46)
      {
         W2 var←c72148;
         var←c72148.f0 = (*  (ptr) &fc95 );
         var←c72148.f1 = (*  (ptr) &fc95 );
         {
            word pd247;
            pd247 = (* (( (ptr) class←v17664)+13) );
            seg←v17636 = (word) ( *( (fPt) ((*  (ptr) pd247 ))))(f←v8408, p0←v17552, var←c72148, version←v8436, pd247);
            };
         };
SOURCE(14705, 256)
      {
         word x248;
         word x250;
         if (((
            x248 = version←v8436,  *(float*)&x248
            ) >= (
            x250 = (*  (ptr) &fc249 ),  *(float*)&x250
            ))) {
SOURCE(14732, 240)
            {
               word lor←v18144 = 0;
SOURCE(14758, 33)
               {
                  word pd251;
                  pd251 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+13) );
                  lor←v18144 = (word) ( *( (fPt) ((*  (ptr) pd251 ))))(f←v8408, pd251);
                  };
SOURCE(14859, 102)
               {
                  register word next←v18272;
                  next←v18272 = lor←v18144;
                  lab←L100030: ;
                  if ((next←v18272 != 0)) {
                     }
                  else {
                     goto lab←L100027;
                     };
SOURCE(14922, 39)
                  {
                     word var←c72180;
                     var←c72180 = XR←NewObject(8, (* (( (ptr) gf←c75668)+30) ));
                     (*  (ptr) var←c72180 ) = (*  (ptr) next←v18272 );
                     (* (( (ptr) var←c72180)+1) ) = (* (( (ptr) seg←v17636)+25) );
                     (* (( (ptr) seg←v17636)+25) ) = var←c72180;
                     };
                  next←v18272 = (* (( (ptr) next←v18272)+1) );
                  goto lab←L100030;
                  lab←L100027: ;
                  };
               };
            };
         };
SOURCE(14975, 25)
      {
         word pd252;
         pd252 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+10) );
         (void) ( *( (fPt) ((*  (ptr) pd252 ))))(f←v8408, 41, pd252);
         };
SOURCE(15002, 27)
      {
         word pd253;
         pd253 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+19) );
         (void) ( *( (fPt) ((*  (ptr) pd253 ))))((word) &p1←v17580, f←v8408, pd253);
         };
SOURCE(15031, 11)
      (*  (W2Pt) (( (ptr) seg←v17636)+11) ) = p1←v17580;
SOURCE(15044, 39)
      {
         word pd254;
         pd254 = (* (( (ptr) (*  (ptr) seg←v17636 ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd254 ))))(seg←v17636, 0, p1←v17580, pd254);
         };
SOURCE(15085, 29)
      (* (( (ptr) seg←v17636)+2) ) = strokeWidth←v17692;
SOURCE(15116, 25)
      (* (( (ptr) seg←v17636)+3) ) = strokeEnd←v17832;
SOURCE(15143, 23)
      (* (( (ptr) seg←v17636)+8) ) = strokeColor←v17804;
SOURCE(15168, 19)
      (* (( (ptr) seg←v17636)+4) ) = dashed←v18028;
SOURCE(15189, 21)
      (* (( (ptr) seg←v17636)+5) ) = pattern←v17776;
SOURCE(15212, 19)
      (* (( (ptr) seg←v17636)+6) ) = offset←v17720;
SOURCE(15233, 19)
      (* (( (ptr) seg←v17636)+7) ) = length←v17748;
SOURCE(15254, 388)
      if (((*  (ptr) class←v17664 ) == (* (( (ptr) gf←c75668)+38) )) || ((*  (ptr) class←v17664 ) == (* (( (ptr) gf←c75668)+40)
       ))) {
SOURCE(15301, 287)
         {
            W2 p←v18400;
            W2 newJoint←v18428;
            W2 newCp←v18456;
SOURCE(15303, 40)
            {
               word pd255;
               pd255 = (* (( (ptr) (* (( (ptr) gf←c75668)+187)/* var←c72212 */  ))+11) );
               (void) ( *( (fPt) ((*  (ptr) pd255 ))))((word) &p←v18400, (*  (W2Pt) (( (ptr) seg←v17636)+11) ), (*  (W2Pt) (( (ptr) seg←v17636)+9)
                   ), pd255);
               };
SOURCE(15345, 46)
            {
               word x256;
               word x257;
               *(float*)&newJoint←v18428.f0 = (
                  x256 = (* (( (ptr) seg←v17636)+9) ),  *(float*)&x256
                  ) - (
                  x257 = p←v18400.f0,  *(float*)&x257
                  );
               };
            {
               word x258;
               word x259;
               *(float*)&newJoint←v18428.f1 = (
                  x258 = (* (( (ptr) seg←v17636)+10) ),  *(float*)&x258
                  ) - (
                  x259 = p←v18400.f1,  *(float*)&x259
                  );
               };
SOURCE(15393, 43)
            {
               word x260;
               word x261;
               *(float*)&newCp←v18456.f0 = (
                  x260 = (* (( (ptr) seg←v17636)+9) ),  *(float*)&x260
                  ) + (
                  x261 = p←v18400.f0,  *(float*)&x261
                  );
               };
            {
               word x262;
               word x263;
               *(float*)&newCp←v18456.f1 = (
                  x262 = (* (( (ptr) seg←v17636)+10) ),  *(float*)&x262
                  ) + (
                  x263 = p←v18400.f1,  *(float*)&x263
                  );
               };
SOURCE(15438, 93)
            {
               word var←c72308;
               {
                  word pd264;
                  pd264 = (* (( (ptr) (* (( (ptr) gf←c75668)+186)/* var←c72116 */  ))+8) );
                  var←c72308 = (word) ( *( (fPt) ((*  (ptr) pd264 ))))(newJoint←v18428, newCp←v18456, newJoint←v18428, 0, pd264);
                  };
               {
                  word pd265;
                  pd265 = (* (( (ptr) (* (( (ptr) gf←c75668)+177)/* var←c70676 */  ))+6) );
                  success←v17888 = (word) ( *( (fPt) ((*  (ptr) pd265 ))))(slice←v8536, 1, var←c72308, 0, pd265);
                  };
               };
SOURCE(15533, 35)
            {
               word pd266;
               pd266 = (* (( (ptr) (* (( (ptr) gf←c75668)+177)/* var←c70676 */  ))+8) );
               (void) ( *( (fPt) ((*  (ptr) pd266 ))))(slice←v8536, 0, pd266);
               };
SOURCE(15570, 16)
            hasCircle←v17356 = 1;
            };
         }
      else {
SOURCE(15595, 47)
         {
            word pd267;
            pd267 = (* (( (ptr) (* (( (ptr) gf←c75668)+177)/* var←c70676 */  ))+6) );
            success←v17888 = (word) ( *( (fPt) ((*  (ptr) pd267 ))))(slice←v8536, 1, seg←v17636, 0, pd267);
            };
         };
SOURCE(15644, 20)
      if ((0 == success←v17888)) {
SOURCE(15664, 5)
         (void) XR←RaiseUnnamedError();
         };
SOURCE(15671, 7)
      p0←v17552 = p1←v17580;
      if ((index←v18100 >= noName←c72020)) {
         goto lab←L100023;
         };
      index←v18100 = (index←v18100 + 1);
      goto lab←L100026;
      lab←L100023: ;
      };
SOURCE(15689, 1398)
   if ((role←v17440 == 0) || (role←v17440 == 1)) {
SOURCE(15729, 25)
      {
         word pd268;
         pd268 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+10) );
         (void) ( *( (fPt) ((*  (ptr) pd268 ))))(f←v8408, 40, pd268);
         };
SOURCE(15756, 33)
      {
         word pd269;
         pd269 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+8) );
         className←v17496 = (word) ( *( (fPt) ((*  (ptr) pd269 ))))(f←v8408, pd269);
         };
SOURCE(15791, 55)
      if ((0 == widthOK←v17944)) {
SOURCE(15811, 35)
         {
            word pd270;
            pd270 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+27) );
            strokeWidth←v17692 = (word) ( *( (fPt) ((*  (ptr) pd270 ))))(f←v8408, pd270);
            };
         };
SOURCE(15848, 112)
      {
         word x271;
         word x272;
         if (((
            x271 = version←v8436,  *(float*)&x271
            ) >= (
            x272 = (*  (ptr) &fc202 ),  *(float*)&x272
            ))) {
SOURCE(15877, 57)
            if ((0 == endsOK←v17972)) {
SOURCE(15896, 38)
               {
                  word pd273;
                  pd273 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+14) );
                  strokeEnd←v17832 = (word) ( *( (fPt) ((*  (ptr) pd273 ))))(f←v8408, pd273);
                  };
               };
            }
         else {
SOURCE(15943, 17)
            strokeEnd←v17832 = 2;
            };
         };
SOURCE(15962, 129)
      {
         word x274;
         word x275;
         if (((
            x274 = version←v8436,  *(float*)&x274
            ) >= (
            x275 = (*  (ptr) &fc238 ),  *(float*)&x275
            ))) {
SOURCE(15991, 65)
            if ((0 == colorOK←v17916)) {
SOURCE(16011, 45)
               {
                  word pd276;
                  pd276 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+16) );
                  strokeColor←v17804 = (word) ( *( (fPt) ((*  (ptr) pd276 ))))(f←v8408, version←v8436, pd276);
                  };
               };
            }
         else {
SOURCE(16065, 26)
            strokeColor←v17804 = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c75668)+185)/* var←c72052 */  ))+54) ) );
            };
         };
SOURCE(16093, 172)
      if ((0 == dashOK←v18000)) {
SOURCE(16114, 30)
         {
            word pd277;
            pd277 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+24) );
            dashed←v18028 = (word) ( *( (fPt) ((*  (ptr) pd277 ))))(f←v8408, pd277);
            };
SOURCE(16146, 119)
         if ((0 != dashed←v18028)) {
SOURCE(16163, 38)
            {
               word pd278;
               pd278 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+23) );
               pattern←v17776 = (word) ( *( (fPt) ((*  (ptr) pd278 ))))(f←v8408, pd278);
               };
SOURCE(16203, 30)
            {
               word pd279;
               pd279 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+27) );
               offset←v17720 = (word) ( *( (fPt) ((*  (ptr) pd279 ))))(f←v8408, pd279);
               };
SOURCE(16235, 30)
            {
               word pd280;
               pd280 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+27) );
               length←v17748 = (word) ( *( (fPt) ((*  (ptr) pd280 ))))(f←v8408, pd280);
               };
            };
         };
SOURCE(16273, 61)
      {
         word var←c72340;
         {
            word pd281;
            pd281 = (* (( (ptr) (* (( (ptr) gf←c75668)+183)/* var←c71476 */  ))+5) );
            var←c72340 = (word) ( *( (fPt) ((*  (ptr) pd281 ))))(className←v17496, 0, 2147483647, pd281);
            };
         {
            word pd282;
            pd282 = (* (( (ptr) (* (( (ptr) gf←c75668)+186)/* var←c72116 */  ))+24) );
            class←v17664 = (word) ( *( (fPt) ((*  (ptr) pd282 ))))(var←c72340, pd282);
            };
         };
SOURCE(16336, 42)
      {
         word pd283;
         pd283 = (* (( (ptr) class←v17664)+13) );
         seg←v17636 = (word) ( *( (fPt) ((*  (ptr) pd283 ))))(f←v8408, p0←v17552, pFirst←v17524, version←v8436, pd283);
         };
SOURCE(16380, 256)
      {
         word x284;
         word x285;
         if (((
            x284 = version←v8436,  *(float*)&x284
            ) >= (
            x285 = (*  (ptr) &fc249 ),  *(float*)&x285
            ))) {
SOURCE(16407, 240)
            {
               word lor←v18500 = 0;
SOURCE(16433, 33)
               {
                  word pd286;
                  pd286 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+13) );
                  lor←v18500 = (word) ( *( (fPt) ((*  (ptr) pd286 ))))(f←v8408, pd286);
                  };
SOURCE(16534, 102)
               {
                  register word next←v18628;
                  next←v18628 = lor←v18500;
                  lab←L100034: ;
                  if ((next←v18628 != 0)) {
                     }
                  else {
                     goto lab←L100031;
                     };
SOURCE(16597, 39)
                  {
                     word var←c72372;
                     var←c72372 = XR←NewObject(8, (* (( (ptr) gf←c75668)+30) ));
                     (*  (ptr) var←c72372 ) = (*  (ptr) next←v18628 );
                     (* (( (ptr) var←c72372)+1) ) = (* (( (ptr) seg←v17636)+25) );
                     (* (( (ptr) seg←v17636)+25) ) = var←c72372;
                     };
                  next←v18628 = (* (( (ptr) next←v18628)+1) );
                  goto lab←L100034;
                  lab←L100031: ;
                  };
               };
            };
         };
SOURCE(16650, 25)
      {
         word pd287;
         pd287 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+10) );
         (void) ( *( (fPt) ((*  (ptr) pd287 ))))(f←v8408, 41, pd287);
         };
SOURCE(16677, 29)
      (* (( (ptr) seg←v17636)+2) ) = strokeWidth←v17692;
SOURCE(16708, 23)
      (* (( (ptr) seg←v17636)+8) ) = strokeColor←v17804;
SOURCE(16733, 25)
      (* (( (ptr) seg←v17636)+3) ) = strokeEnd←v17832;
SOURCE(16760, 19)
      (* (( (ptr) seg←v17636)+4) ) = dashed←v18028;
SOURCE(16781, 21)
      (* (( (ptr) seg←v17636)+5) ) = pattern←v17776;
SOURCE(16804, 19)
      (* (( (ptr) seg←v17636)+6) ) = offset←v17720;
SOURCE(16825, 19)
      (* (( (ptr) seg←v17636)+7) ) = length←v17748;
SOURCE(16846, 241)
      if (((* (( (ptr) trajData←v17608)+1) ) == 0)) {
SOURCE(16928, 47)
         {
            word pd288;
            pd288 = (* (( (ptr) (* (( (ptr) gf←c75668)+177)/* var←c70676 */  ))+6) );
            success←v17888 = (word) ( *( (fPt) ((*  (ptr) pd288 ))))(slice←v8536, 1, seg←v17636, 0, pd288);
            };
SOURCE(16977, 20)
         if ((0 == success←v17888)) {
SOURCE(16997, 5)
            (void) XR←RaiseUnnamedError();
            };
SOURCE(17004, 35)
         {
            word pd289;
            pd289 = (* (( (ptr) (* (( (ptr) gf←c75668)+177)/* var←c70676 */  ))+8) );
            (void) ( *( (fPt) ((*  (ptr) pd289 ))))(slice←v8536, 0, pd289);
            };
         }
      else {
SOURCE(17048, 39)
         {
            word pd290;
            pd290 = (* (( (ptr) (* (( (ptr) gf←c75668)+177)/* var←c70676 */  ))+7) );
            (void) ( *( (fPt) ((*  (ptr) pd290 ))))(slice←v8536, seg←v17636, 0, pd290);
            };
         };
      };
SOURCE(17092, 167)
   {
      word x291;
      word x292;
      if (((
         x291 = version←v8436,  *(float*)&x291
         ) >= (
         x292 = (*  (ptr) &fc187 ),  *(float*)&x292
         ))) {
SOURCE(17182, 29)
         {
            word pd293;
            pd293 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd293 ))))(f←v8408, (* (( (ptr) gf←c75668)+41) ), pd293);
            };
SOURCE(17213, 27)
         {
            word pd294;
            pd294 = (* (( (ptr) (* (( (ptr) gf←c75668)+184)/* var←c71956 */  ))+24) );
            fwd←v18056 = (word) ( *( (fPt) ((*  (ptr) pd294 ))))(f←v8408, pd294);
            };
         }
      else {
SOURCE(17249, 10)
         fwd←v18056 = 1;
         };
      };
SOURCE(17261, 22)
   (* (( (ptr) trajData←v17608)+9) ) = fwd←v18056;
SOURCE(17285, 50)
   if ((0 != hasCircle←v17356)) {
      (*  (ptr) trajData←v17608 ) = 3;
      }
   else {
      (*  (ptr) trajData←v17608 ) = role←v17440;
      };
SOURCE(12120, 5215)
   return(slice←v8536);
   }

static word RoleFromRope←P600(roleName←v8596)
   word roleName←v8596;
   {
   register ptr gf←c75700 =  (ptr) &globalframe;
   word role←v8640;
   /* RoleFromRope: */ 
SOURCE(17372, 227)
   {
      word pd295;
      pd295 = (* (( (ptr) (* (( (ptr) gf←c75700)+188)/* var←c72404 */  ))+8) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd295 ))))(roleName←v8596, (* (( (ptr) gf←c75700)+42) ), 1, pd295))) {
SOURCE(17497, 12)
         role←v8640 = 0;
         }
      else {
         {
            word pd296;
            pd296 = (* (( (ptr) (* (( (ptr) gf←c75700)+188)/* var←c72404 */  ))+8) );
            if ((0 != (word) ( *( (fPt) ((*  (ptr) pd296 ))))(roleName←v8596, (* (( (ptr) gf←c75700)+43) ), 1, pd296))) {
SOURCE(17543, 11)
               role←v8640 = 1;
               }
            else {
               {
                  word pd297;
                  pd297 = (* (( (ptr) (* (( (ptr) gf←c75700)+188)/* var←c72404 */  ))+8) );
                  if ((0 != (word) ( *( (fPt) ((*  (ptr) pd297 ))))(roleName←v8596, (* (( (ptr) gf←c75700)+44) ), 1, pd297))) {
SOURCE(17588, 11)
                     role←v8640 = 2;
                     }
                  else {
SOURCE(17612, 5)
                     (void) XR←RaiseUnnamedError();
                     };
                  };
               };
            };
         };
      };
SOURCE(17372, 227)
   return(role←v8640);
   }

static word RoleToRope←P660(role←v8700)
   word role←v8700;
   {
   register ptr gf←c75732 =  (ptr) &globalframe;
   word roleName←v8744;
   /* RoleToRope: */ 
SOURCE(17623, 171)
SOURCE(17623, 171)
   roleName←v8744 = 0;
SOURCE(17696, 98)
   {
      word var←c72436;
      var←c72436 = role←v8700;
      switch (var←c72436) {
         case 0: 
SOURCE(17722, 18)
            roleName←v8744 = (* (( (ptr) gf←c75732)+42) );
            break;
         case 1: 
SOURCE(17750, 17)
            roleName←v8744 = (* (( (ptr) gf←c75732)+43) );
            break;
         case 2: 
SOURCE(17777, 17)
            roleName←v8744 = (* (( (ptr) gf←c75732)+44) );
            break;
         default: 
SOURCE(17807, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(17623, 171)
   return(roleName←v8744);
   }

static word TrajPointsInDescriptor←P720(sliceD←v8972)
   word sliceD←v8972;
   {
   register ptr gf←c75764 =  (ptr) &globalframe;
   word pointGen←v9016;
   word trajData←v18756;
   word trajParts←v18784;
   word pgd←v18812 = 0;
   word jointGen←v18840 = 0;
   word cpGen←v18868 = 0;
   /* TrajPointsInDescriptor: */ 
SOURCE(18158, 508)
SOURCE(18158, 508)
   pointGen←v9016 = 0;
SOURCE(18252, 46)
   trajData←v18756 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v8972 ))+1) ), (* (( (ptr) gf←c75764)+11) ));
SOURCE(18300, 43)
   trajParts←v18784 = XR←Narrow((* (( (ptr) sliceD←v8972)+1) ), (* (( (ptr) gf←c75764)+12) ));
SOURCE(18430, 49)
   {
      word pd298;
      pd298 = (* (( (ptr) (* (( (ptr) gf←c75764)+180)/* var←c70900 */  ))+53) );
      jointGen←v18840 = (word) ( *( (fPt) ((*  (ptr) pd298 ))))(trajParts←v18784, pd298);
      };
SOURCE(18481, 63)
   {
      word pd299;
      pd299 = (* (( (ptr) (* (( (ptr) gf←c75764)+180)/* var←c70900 */  ))+48) );
      cpGen←v18868 = (word) ( *( (fPt) ((*  (ptr) pd299 ))))(trajData←v18756, trajParts←v18784, pd299);
      };
SOURCE(18546, 63)
   {
      word var←c72468;
      var←c72468 = XR←NewObject(12, (* (( (ptr) gf←c75764)+27) ));
      (* (( (ptr) var←c72468)+1) ) = jointGen←v18840;
      (* (( (ptr) var←c72468)+2) ) = cpGen←v18868;
      pgd←v18812 = var←c72468;
      };
SOURCE(18611, 55)
   {
      word var←c72500;
      var←c72500 = XR←NewObject(16, (* (( (ptr) gf←c75764)+26) ));
      (*  (ptr) var←c72500 ) = sliceD←v8972;
      (* (( (ptr) var←c72500)+3) ) = pgd←v18812;
      pointGen←v9016 = var←c72500;
      };
SOURCE(18158, 508)
   return(pointGen←v9016);
   }

static void TrajWalkPointsInDescriptor←P780(sliceD←v9076, walkProc←v9104)
   word sliceD←v9076;
   word walkProc←v9104;
   {
   register ptr gf←c75796 =  (ptr) &globalframe;
   word trajParts←v18912;
   word trajData←v18940;
   /* TrajWalkPointsInDescriptor: */ 
SOURCE(18672, 314)
SOURCE(18760, 43)
   trajParts←v18912 = XR←Narrow((* (( (ptr) sliceD←v9076)+1) ), (* (( (ptr) gf←c75796)+12) ));
SOURCE(18805, 46)
   trajData←v18940 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v9076 ))+1) ), (* (( (ptr) gf←c75796)+11) ));
SOURCE(18853, 62)
   {
      word pd300;
      pd300 = (* (( (ptr) (* (( (ptr) gf←c75796)+180)/* var←c70900 */  ))+54) );
      (void) ( *( (fPt) ((*  (ptr) pd300 ))))(trajData←v18940, trajParts←v18912, walkProc←v9104, pd300);
      };
SOURCE(18917, 69)
   {
      word pd301;
      pd301 = (* (( (ptr) (* (( (ptr) gf←c75796)+180)/* var←c70900 */  ))+49) );
      (void) ( *( (fPt) ((*  (ptr) pd301 ))))(trajData←v18940, trajParts←v18912, walkProc←v9104, pd301);
      };
   }

static word TrajPointPairsInDescriptor←P840(sliceD←v9164)
   word sliceD←v9164;
   {
   register ptr gf←c75828 =  (ptr) &globalframe;
   word pointPairGen←v9208;
   word trajData←v18984;
   word trajParts←v19012;
   word pgd←v19040 = 0;
   word segGen←v19068 = 0;
   /* TrajPointPairsInDescriptor: */ 
SOURCE(18992, 435)
SOURCE(18992, 435)
   pointPairGen←v9208 = 0;
SOURCE(19098, 46)
   trajData←v18984 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v9164 ))+1) ), (* (( (ptr) gf←c75828)+11) ));
SOURCE(19146, 43)
   trajParts←v19012 = XR←Narrow((* (( (ptr) sliceD←v9164)+1) ), (* (( (ptr) gf←c75828)+12) ));
SOURCE(19250, 59)
   {
      word pd302;
      pd302 = (* (( (ptr) (* (( (ptr) gf←c75828)+180)/* var←c70900 */  ))+42) );
      segGen←v19068 = (word) ( *( (fPt) ((*  (ptr) pd302 ))))(trajData←v18984, trajParts←v19012, pd302);
      };
SOURCE(19311, 51)
   {
      word var←c72532;
      var←c72532 = XR←NewObject(4, (* (( (ptr) gf←c75828)+25) ));
      (*  (ptr) var←c72532 ) = segGen←v19068;
      pgd←v19040 = var←c72532;
      };
SOURCE(19364, 63)
   {
      word var←c72564;
      var←c72564 = XR←NewObject(16, (* (( (ptr) gf←c75828)+24) ));
      (*  (ptr) var←c72564 ) = sliceD←v9164;
      (* (( (ptr) var←c72564)+3) ) = pgd←v19040;
      pointPairGen←v9208 = var←c72564;
      };
SOURCE(18992, 435)
   return(pointPairGen←v9208);
   }

static word TrajSegmentsInDescriptor←P900(sliceD←v9268)
   word sliceD←v9268;
   {
   register ptr gf←c75860 =  (ptr) &globalframe;
   word segGen←v9312;
   word trajData←v19112;
   word trajParts←v19140;
   /* TrajSegmentsInDescriptor: */ 
SOURCE(19433, 248)
SOURCE(19433, 248)
   segGen←v9312 = 0;
SOURCE(19529, 46)
   trajData←v19112 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v9268 ))+1) ), (* (( (ptr) gf←c75860)+11) ));
SOURCE(19577, 43)
   trajParts←v19140 = XR←Narrow((* (( (ptr) sliceD←v9268)+1) ), (* (( (ptr) gf←c75860)+12) ));
SOURCE(19622, 59)
   {
      word pd303;
      pd303 = (* (( (ptr) (* (( (ptr) gf←c75860)+180)/* var←c70900 */  ))+42) );
      segGen←v9312 = (word) ( *( (fPt) ((*  (ptr) pd303 ))))(trajData←v19112, trajParts←v19140, pd303);
      };
SOURCE(19433, 248)
   return(segGen←v9312);
   }

static word TrajWalkSegments←P960(slice←v9372, walkProc←v9400)
   word slice←v9372;
   word walkProc←v9400;
   {
   register ptr gf←c75892 =  (ptr) &globalframe;
   word sliceD←v9444;
   word trajData←v19184;
   word trajParts←v19212;
   word segGen←v19240;
   /* TrajWalkSegments: */ 
SOURCE(19687, 663)
SOURCE(19687, 663)
   sliceD←v9444 = 0;
SOURCE(19783, 39)
   trajData←v19184 = XR←Narrow((* (( (ptr) slice←v9372)+1) ), (* (( (ptr) gf←c75892)+11) ));
SOURCE(19824, 55)
   {
      word pd304;
      pd304 = (* (( (ptr) (* (( (ptr) gf←c75892)+180)/* var←c70900 */  ))+6) );
      trajParts←v19212 = (word) ( *( (fPt) ((*  (ptr) pd304 ))))(trajData←v19184, pd304);
      };
SOURCE(19881, 62)
   {
      word pd305;
      pd305 = (* (( (ptr) (* (( (ptr) gf←c75892)+180)/* var←c70900 */  ))+40) );
      segGen←v19240 = (word) ( *( (fPt) ((*  (ptr) pd305 ))))(trajData←v19184, pd305);
      };
SOURCE(19945, 258)
   {
      W2 next←v19284;
      {
         word pd306;
         pd306 = (* (( (ptr) (* (( (ptr) gf←c75892)+180)/* var←c70900 */  ))+47) );
         (void) ( *( (fPt) ((*  (ptr) pd306 ))))((word) &next←v19284, segGen←v19240, pd306);
         };
      lab←L100038: ;
      if ((next←v19284.f0 != 0)) {
         }
      else {
         goto lab←L100035;
         };
      {
         word keep←v19328;
SOURCE(20070, 36)
         keep←v19328 = (word) ( *( (fPt) ((*  (ptr) walkProc←v9400 ))))(next←v19284.f0, 0, walkProc←v9400);
SOURCE(20108, 95)
         if ((0 != keep←v19328)) {
SOURCE(20123, 37)
            {
               word var←c72596;
               var←c72596 = (*  (ptr) trajParts←v19212 );
               {
                  word idx307;
                  word limit308;
                  word xs309;
                  xs309 = (word) (
                     idx307 = (word) next←v19284.f1,
                     limit308 = (*  (ptr) var←c72596 ),
                     BCK(idx307, limit308)
                     );
                  (*  (bPt) ((( (bPt) var←c72596)+4) + ((word) xs309 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs309 & 7)+1));
                  };
               };
SOURCE(20162, 41)
            (* (( (ptr) trajParts←v19212)+3) ) = ((* (( (ptr) trajParts←v19212)+3) ) + 1);
            };
         };
      {
         word pd310;
         pd310 = (* (( (ptr) (* (( (ptr) gf←c75892)+180)/* var←c70900 */  ))+47) );
         (void) ( *( (fPt) ((*  (ptr) pd310 ))))((word) &next←v19284, segGen←v19240, pd310);
         };
      goto lab←L100038;
      lab←L100035: ;
      };
SOURCE(20217, 34)
   {
      word pd311;
      pd311 = (* (( (ptr) (* (( (ptr) gf←c75892)+180)/* var←c70900 */  ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd311 ))))(trajParts←v19212, pd311);
      };
SOURCE(20253, 41)
   {
      word pd312;
      pd312 = (* (( (ptr) (* (( (ptr) gf←c75892)+180)/* var←c70900 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd312 ))))(trajParts←v19212, pd312);
      };
SOURCE(20296, 54)
   {
      word pd313;
      pd313 = (* (( (ptr) (* (( (ptr) gf←c75892)+176)/* var←c70644 */  ))+8) );
      sliceD←v9444 = (word) ( *( (fPt) ((*  (ptr) pd313 ))))(slice←v9372, trajParts←v19212, pd313);
      };
SOURCE(19687, 663)
   return(sliceD←v9444);
   }

static void TrajNextPoint←P1020(formal←c0286, slice←v9504, pointGen←v9532)
   word formal←c0286;
   word slice←v9504;
   word pointGen←v9532;
   {
   register ptr gf←c75924 =  (ptr) &globalframe;
   W3 pointAndDone←v9576;
   word pgd←v19372;
   /* TrajNextPoint: */ 
SOURCE(20356, 501)
SOURCE(20458, 60)
   pgd←v19372 = XR←Narrow((* (( (ptr) pointGen←v9532)+3) ), (* (( (ptr) gf←c75924)+27) ));
SOURCE(20520, 276)
   if ((0 == (*  (ptr) pgd←v19372 ))) {
SOURCE(20547, 254)
      {
         word nextJoint←v19416;
SOURCE(20549, 51)
         {
            word pd314;
            pd314 = (* (( (ptr) (* (( (ptr) gf←c75924)+180)/* var←c70900 */  ))+61) );
            nextJoint←v19416 = (word) ( *( (fPt) ((*  (ptr) pd314 ))))((* ((( (ptr) pgd←v19372)+1)) ), pd314);
            };
SOURCE(20602, 194)
         if (( (int)nextJoint←v19416 ==  (int) (word) -1)) {
SOURCE(20627, 21)
            (*  (ptr) pgd←v19372 ) = 1;
            }
         else {
SOURCE(20659, 36)
            if (((*  (ptr) (*  (ptr) pointGen←v9532 ) ) != slice←v9504)) {
SOURCE(20695, 5)
               (void) XR←RaiseUnnamedError();
               };
SOURCE(20702, 59)
            {
               word pd315;
               pd315 = (* (( (ptr) (* (( (ptr) gf←c75924)+177)/* var←c70676 */  ))+32) );
               (void) ( *( (fPt) ((*  (ptr) pd315 ))))((word) &pointAndDone←v9576, slice←v9504, SGNCK(nextJoint←v19416), pd315);
               };
SOURCE(20763, 25)
            pointAndDone←v9576.f2 = 0;
SOURCE(20790, 6)
            goto lab←L100039;
            };
         };
      };
SOURCE(20804, 53)
   {
      word pd316;
      pd316 = (* (( (ptr) (* (( (ptr) gf←c75924)+180)/* var←c70900 */  ))+50) );
      (void) ( *( (fPt) ((*  (ptr) pd316 ))))((word) &pointAndDone←v9576, (* (( (ptr) pgd←v19372)+2) ), pd316);
      };
   /* removed tail goto */ 
   lab←L100039: ;
   (*  (W3Pt) formal←c0286 ) = pointAndDone←v9576;
   return;
   }

static void TrajNextPointPair←P1080(formal←c0295, slice←v9636, pointPairGen←v9664)
   word formal←c0295;
   word slice←v9636;
   word pointPairGen←v9664;
   {
   register ptr gf←c75956 =  (ptr) &globalframe;
   W5 pointPairAndDone←v9708;
   word pgd←v19460;
   word seg←v19488;
   W2 var←c0292;
   /* TrajNextPointPair: */ 
SOURCE(20863, 337)
SOURCE(20985, 68)
   pgd←v19460 = XR←Narrow((* (( (ptr) pointPairGen←v9664)+3) ), (* (( (ptr) gf←c75956)+25) ));
SOURCE(21055, 60)
   {
      word pd317;
      pd317 = (* (( (ptr) (* (( (ptr) gf←c75956)+189)/* var←c72628 */  ))+43) );
      (void) ( *( (fPt) ((*  (ptr) pd317 ))))((word) &var←c0292, slice←v9636, (*  (ptr) pgd←v19460 ), pd317);
      };
   seg←v19488 = var←c0292.f0;
SOURCE(21117, 83)
   if ((seg←v19488 == 0)) {
SOURCE(21135, 34)
      pointPairAndDone←v9708.f0 = (*  (ptr) &fc95 );
      pointPairAndDone←v9708.f1 = (*  (ptr) &fc95 );
      pointPairAndDone←v9708.f2 = (*  (ptr) &fc95 );
      pointPairAndDone←v9708.f3 = (*  (ptr) &fc95 );
      pointPairAndDone←v9708.f4 = 1;
      /* removed tail goto */ 
      }
   else {
SOURCE(21169, 31)
      (*  (W2Pt) &pointPairAndDone←v9708 ) = (*  (W2Pt) (( (ptr) seg←v19488)+9) );
      (*  (W2Pt) (( (ptr) &pointPairAndDone←v9708)+2) ) = (*  (W2Pt) (( (ptr) seg←v19488)+11) );
      pointPairAndDone←v9708.f4 = 0;
      /* removed tail goto */ 
      };
   (*  (W5Pt) formal←c0295 ) = pointPairAndDone←v9708;
   return;
   }

static void TrajNextSegment←P1140(formal←c0301, slice←v9768, segGen←v9796)
   word formal←c0301;
   word slice←v9768;
   word segGen←v9796;
   {
   register ptr gf←c75988 =  (ptr) &globalframe;
   word seg←v9840;
   word transform←v9868;
   /* TrajNextSegment: */ 
SOURCE(21206, 160)
SOURCE(21206, 160)
   seg←v9840 = 0;
SOURCE(21206, 160)
   transform←v9868 = 0;
SOURCE(21323, 43)
   {
      word var←c72788;
      {
         word pd318;
         pd318 = (* (( (ptr) (* (( (ptr) gf←c75988)+180)/* var←c70900 */  ))+46) );
         var←c72788 = (word) ( *( (fPt) ((*  (ptr) pd318 ))))(segGen←v9796, pd318);
         };
      seg←v9840 = var←c72788;
      transform←v9868 = 0;
      /* removed tail goto */ 
      };
   (*  (ptr) formal←c0301 ) = seg←v9840;
   (* (( (ptr) formal←c0301)+1) ) = transform←v9868;
   return;
   }

static void TrajClosestPoint←P1200(formal←c0333, sliceD←v9928, testPoint←v9956, tolerance←v9984)
   word formal←c0333;
   word sliceD←v9928;
   W2 testPoint←v9956;
   word tolerance←v9984;
   {
   register ptr gf←c76020 =  (ptr) &globalframe;
   W2 bestPoint←v10028;
   word bestDist←v10056;
   W2 bestNormal←v10084;
   word hitData←v10112;
   word success←v10140;
   word trajParts←v19532;
   word thisDist←v19560;
   word thisSegNum←v19588;
   word bestSegNum←v19616;
   word thisCP←v19644;
   word bestCP←v19672;
   word thisJointNum←v19700;
   word bestJointNum←v19728;
   W2 thisPoint←v19756;
   W2 thisNormal←v19784;
   word thisSuccess←v19812;
   word bestType←v19840 = 0;
   word trajHitData←v19868 = 0;
   /* TrajClosestPoint: */ 
SOURCE(21372, 1509)
SOURCE(21372, 1509)
   bestPoint←v10028.f0 = (*  (ptr) &fc95 );
   bestPoint←v10028.f1 = (*  (ptr) &fc95 );
SOURCE(21372, 1509)
   bestNormal←v10084.f0 = (*  (ptr) &fc95 );
   bestNormal←v10084.f1 = (*  (ptr) &fc90 );
SOURCE(21372, 1509)
   hitData←v10112 = 0;
SOURCE(21372, 1509)
   success←v10140 = 0;
SOURCE(21582, 43)
   trajParts←v19532 = XR←Narrow((* (( (ptr) sliceD←v9928)+1) ), (* (( (ptr) gf←c76020)+12) ));
   {
      word var←c72820;
SOURCE(21831, 33)
      bestDist←v10056 = (*  (ptr) &fc319 );
SOURCE(21866, 107)
      {
         word pd321;
         {
            word pd320;
            pd320 = (* (( (ptr) (* (( (ptr) gf←c76020)+189)/* var←c72628 */  ))+9) );
            var←c72820 = (word) ( *( (fPt) ((*  (ptr) pd320 ))))((*  (ptr) sliceD←v9928 ), 0, pd320);
            };
         pd321 = (* (( (ptr) (* (( (ptr) gf←c76020)+190)/* var←c72852 */  ))+22) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd321 ))))(testPoint←v9956, var←c72820, tolerance←v9984, pd321))) {
SOURCE(21967, 6)
            goto lab←L100042;
            };
         };
SOURCE(22002, 125)
      {
         W8 var←c72884;
         {
            word pd322;
            pd322 = (* (( (ptr) (* (( (ptr) gf←c76020)+177)/* var←c70676 */  ))+56) );
            (void) ( *( (fPt) ((*  (ptr) pd322 ))))((word) &var←c72884, testPoint←v9956, sliceD←v9928, tolerance←v9984, pd322);
            };
         thisSuccess←v19812 = var←c72884.f7;
         thisNormal←v19784 = (*  (W2Pt) (( (ptr) &var←c72884)+5) );
         thisPoint←v19756 = (*  (W2Pt) (( (ptr) &var←c72884)+3) );
         thisCP←v19644 = var←c72884.f2;
         thisSegNum←v19588 = var←c72884.f1;
         thisDist←v19560 = var←c72884.f0;
         };
SOURCE(22129, 196)
      {
         word x323;
         word x324;
         if ( ( (0 != thisSuccess←v19812) ? ((
            x323 = thisDist←v19560,  *(float*)&x323
            ) < (
            x324 = bestDist←v10056,  *(float*)&x324
            )) : 0 ) ) {
SOURCE(22175, 23)
            bestType←v19840 = 2;
SOURCE(22200, 21)
            bestPoint←v10028 = thisPoint←v19756;
SOURCE(22223, 23)
            bestNormal←v10084 = thisNormal←v19784;
SOURCE(22248, 19)
            bestDist←v10056 = thisDist←v19560;
SOURCE(22269, 23)
            bestSegNum←v19616 = thisSegNum←v19588;
SOURCE(22294, 15)
            bestCP←v19672 = thisCP←v19644;
SOURCE(22311, 14)
            success←v10140 = 1;
            };
         };
SOURCE(22330, 112)
      {
         W7 var←c72916;
         {
            word pd325;
            pd325 = (* (( (ptr) (* (( (ptr) gf←c76020)+177)/* var←c70676 */  ))+55) );
            (void) ( *( (fPt) ((*  (ptr) pd325 ))))((word) &var←c72916, testPoint←v9956, sliceD←v9928, tolerance←v9984, pd325);
            };
         thisSuccess←v19812 = var←c72916.f6;
         thisNormal←v19784 = (*  (W2Pt) (( (ptr) &var←c72916)+4) );
         thisPoint←v19756 = (*  (W2Pt) (( (ptr) &var←c72916)+2) );
         thisJointNum←v19700 = var←c72916.f1;
         thisDist←v19560 = var←c72916.f0;
         };
SOURCE(22444, 176)
      {
         word x326;
         word x327;
         if ( ( (0 != thisSuccess←v19812) ? ((
            x326 = thisDist←v19560,  *(float*)&x326
            ) < (
            x327 = bestDist←v10056,  *(float*)&x327
            )) : 0 ) ) {
SOURCE(22490, 16)
            bestType←v19840 = 1;
SOURCE(22508, 21)
            bestPoint←v10028 = thisPoint←v19756;
SOURCE(22531, 23)
            bestNormal←v10084 = thisNormal←v19784;
SOURCE(22556, 19)
            bestDist←v10056 = thisDist←v19560;
SOURCE(22577, 27)
            bestJointNum←v19728 = thisJointNum←v19700;
SOURCE(22606, 14)
            success←v10140 = 1;
            };
         };
SOURCE(22625, 256)
      if ((0 != success←v10140)) {
SOURCE(22643, 238)
         {
            word var←c72948;
            var←c72948 = bestType←v19840;
            if ((var←c72948 == 2)) {
SOURCE(22682, 96)
               {
                  word var←c72980;
                  {
                     word var←c73012;
                     var←c73012 = XR←NewObject(24, (* (( (ptr) gf←c76020)+13) ));
                     (*  (ptr) var←c73012 ) = 2;
                     (* (( (ptr) var←c73012)+1) ) = bestSegNum←v19616;
                     (* (( (ptr) var←c73012)+2) ) = bestCP←v19672;
                     (* (( (ptr) var←c73012)+3) ) =  (word) -1;
                     (*  (W2Pt) (( (ptr) var←c73012)+4) ) = bestPoint←v10028;
                     var←c72980 = var←c73012;
                     };
                  trajHitData←v19868 = var←c72980;
                  hitData←v10112 = var←c72980;
                  };
               }
            else {
               if ((var←c72948 == 1)) {
SOURCE(22794, 87)
                  {
                     word var←c73044;
                     {
                        word var←c73076;
                        var←c73076 = XR←NewObject(24, (* (( (ptr) gf←c76020)+13) ));
                        (*  (ptr) var←c73076 ) = 1;
                        (* (( (ptr) var←c73076)+1) ) =  (word) -1;
                        (* (( (ptr) var←c73076)+2) ) =  (word) -1;
                        (* (( (ptr) var←c73076)+3) ) = bestJointNum←v19728;
                        (*  (W2Pt) (( (ptr) var←c73076)+4) ) = bestPoint←v10028;
                        var←c73044 = var←c73076;
                        };
                     trajHitData←v19868 = var←c73044;
                     hitData←v10112 = var←c73044;
                     };
                  }
               else {
SOURCE(22897, 5)
                  (void) XR←RaiseUnnamedError();
                  };
               };
            };
         };
      };
   /* removed tail goto */ 
   lab←L100042: ;
   (*  (W2Pt) formal←c0333 ) = bestPoint←v10028;
   (* (( (ptr) formal←c0333)+2) ) = bestDist←v10056;
   (*  (W2Pt) (( (ptr) formal←c0333)+3) ) = bestNormal←v10084;
   (* (( (ptr) formal←c0333)+5) ) = hitData←v10112;
   (* (( (ptr) formal←c0333)+6) ) = success←v10140;
   return;
   }

static void TrajClosestJointToHitData←P1260(formal←c0387, sliceD←v10212, mapPoint←v10240, formal←c0801, formal←c0802)
   word formal←c0387;
   word sliceD←v10212;
   W2 mapPoint←v10240;
   W2 formal←c0801;
   word formal←c0802;
   {
   W16 var←c76052;
   /* declaration of testPoint←v10268 skipped */ 
   /* declaration of hitData←v10296 skipped */ 
   register ptr gf←c76084 =  (ptr) &globalframe;
   word jointD←v10352;
   /* declaration of point←v10380 skipped */ 
   W2 normal←v10408;
   /* declaration of var←c73108 skipped */ 
   /* declaration of var←c73140 skipped */ 
   word hitType←v19940;
   word segNum←v19968;
   word cpNum←v19996;
   /* declaration of jointNum←v20024 skipped */ 
   W2 hitPoint←v20052;
   word jointParts←v20080 = 0;
   /* declaration of traj←v20108 skipped */ 
   /* declaration of trajData←v20136 skipped */ 
   (*  (W2Pt) (( (ptr) &var←c76052)+4)/* testPoint←v10268 */  ) = formal←c0801;
   (* (( (ptr) &var←c76052)+6)/* hitData←v10296 */  ) = formal←c0802;
   /* TrajClosestJointToHitData: */ 
SOURCE(22911, 4402)
   {
      word tmpAddr328;
      tmpAddr328 = (word) (( (ptr) &var←c76052)+9)/* var←c73108 */ ;
      (*  (ptr) tmpAddr328 ) = ( ((word)  (fPt) NearestJointToHitData←P4296) );
      (* (( (ptr) tmpAddr328) + 1) ) = 1;
      };
   {
      word tmpAddr329;
      tmpAddr329 = (word) (( (ptr) &var←c76052)+11)/* var←c73140 */ ;
      (*  (ptr) tmpAddr329 ) = ( ((word)  (fPt) FindJointNormal←P4044) );
      (* (( (ptr) tmpAddr329) + 1) ) = 1;
      };
SOURCE(22911, 4402)
   jointD←v10352 = 0;
SOURCE(22911, 4402)
   normal←v10408.f0 = (*  (ptr) &fc95 );
   normal←v10408.f1 = (*  (ptr) &fc90 );
SOURCE(24139, 26)
   (* (( (ptr) &var←c76052)+14)/* traj←v20108 */  ) = (*  (ptr) sliceD←v10212 );
SOURCE(24167, 38)
   (* (( (ptr) &var←c76052)+15)/* trajData←v20136 */  ) = XR←Narrow((* (( (ptr) (* (( (ptr) &var←c76052)+14)/* traj←v20108 */  ))+1)
       ), (* (( (ptr) gf←c76084)+11) ));
SOURCE(24207, 76)
   {
      W6 var←c73172;
      {
         word pd330;
         pd330 = (* (( (ptr) (* (( (ptr) gf←c76084)+177)/* var←c70676 */  ))+53) );
         (void) ( *( (fPt) ((*  (ptr) pd330 ))))((word) &var←c73172, (* (( (ptr) &var←c76052)+6)/* hitData←v10296 */  ), pd330);
         };
      hitPoint←v20052 = (*  (W2Pt) (( (ptr) &var←c73172)+4) );
      (* (( (ptr) &var←c76052)+13)/* jointNum←v20024 */  ) = var←c73172.f3;
      cpNum←v19996 = var←c73172.f2;
      segNum←v19968 = var←c73172.f1;
      hitType←v19940 = var←c73172.f0;
      };
SOURCE(24285, 2945)
   {
      word var←c73204;
      var←c73204 = hitType←v19940;
      switch (var←c73204) {
         case 4: 
SOURCE(24317, 984)
            {
               word jointDist←v20240;
               word cpDist←v20268;
               word bestControlPoint←v20296;
               word bestSeg←v20324;
               W2 bestPoint←v20352;
               W2 bestCPPoint←v20380;
               W2 bestNormal←v20408;
               word jointSuccess←v20436 = 0;
               word cpSuccess←v20464 = 0;
SOURCE(24466, 106)
               {
                  W7 var←c73236;
                  {
                     word pd331;
                     pd331 = (* (( (ptr) (* (( (ptr) gf←c76084)+177)/* var←c70676 */  ))+55) );
                     (void) ( *( (fPt) ((*  (ptr) pd331 ))))((word) &var←c73236, mapPoint←v10240, sliceD←v10212, (*  (ptr) &fc332 ), pd331);
                     };
                  jointSuccess←v20436 = var←c73236.f6;
                  bestNormal←v20408 = (*  (W2Pt) (( (ptr) &var←c73236)+4) );
                  bestPoint←v20352 = (*  (W2Pt) (( (ptr) &var←c73236)+2) );
                  (* (( (ptr) &var←c76052)+13)/* jointNum←v20024 */  ) = var←c73236.f1;
                  jointDist←v20240 = var←c73236.f0;
                  };
SOURCE(24574, 126)
               {
                  W8 var←c73268;
                  {
                     word pd333;
                     pd333 = (* (( (ptr) (* (( (ptr) gf←c76084)+177)/* var←c70676 */  ))+56) );
                     (void) ( *( (fPt) ((*  (ptr) pd333 ))))((word) &var←c73268, mapPoint←v10240, sliceD←v10212, (*  (ptr) &fc332 ), pd333);
                     };
                  cpSuccess←v20464 = var←c73268.f7;
                  bestNormal←v20408 = (*  (W2Pt) (( (ptr) &var←c73268)+5) );
                  bestCPPoint←v20380 = (*  (W2Pt) (( (ptr) &var←c73268)+3) );
                  bestControlPoint←v20296 = var←c73268.f2;
                  bestSeg←v20324 = var←c73268.f1;
                  cpDist←v20268 = var←c73268.f0;
                  };
SOURCE(24702, 545)
               if ((0 != jointSuccess←v20436)) {
SOURCE(24725, 522)
                  if ((0 != cpSuccess←v20464)) {
SOURCE(24745, 382)
                     {
                        word x334;
                        word x335;
                        if (((
                           x334 = cpDist←v20268,  *(float*)&x334
                           ) < (
                           x335 = jointDist←v20240,  *(float*)&x335
                           ))) {
SOURCE(24772, 240)
                           {
/*1*/   word seg←v20508 = 0;
SOURCE(24788, 83)
/*1*/   {
/*1*/      word pd336;
/*1*/      pd336 = (* (( (ptr) (* (( (ptr) gf←c76084)+180)/* var←c70900 */  ))+11) );
/*1*/      jointParts←v20080 = (word) ( *( (fPt) ((*  (ptr) pd336 ))))((* (( (ptr) &var←c76052)+15)/* trajData←v20136 */  ), bestSeg←v20324, bestControlPoint←v20296, pd336)
/*1*/      ;
/*1*/      };
SOURCE(24873, 19)
/*1*/   (*  (W2Pt) (( (ptr) &var←c76052)+7)/* point←v10380 */  ) = bestCPPoint←v20380;
SOURCE(24894, 40)
/*1*/   {
/*1*/      word pd337;
/*1*/      pd337 = (* (( (ptr) (* (( (ptr) gf←c76084)+177)/* var←c70676 */  ))+29) );
/*1*/      seg←v20508 = (word) ( *( (fPt) ((*  (ptr) pd337 ))))((* (( (ptr) &var←c76052)+14)/* traj←v20108 */  ), bestSeg←v20324, pd337)
/*1*/      ;
/*1*/      };
SOURCE(24936, 74)
/*1*/   {
/*1*/      word pd338;
/*1*/      pd338 = (* (( (ptr) (*  (ptr) seg←v20508 ))+25) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd338 ))))((word) &normal←v10408, seg←v20508, bestControlPoint←v20296, bestCPPoint←v20380, (*  (W2Pt) (
/*1*/            ( (ptr) &var←c76052)+4)/* testPoint←v10268 */  ), pd338);
/*1*/      };
/*1*/   };
                           }
                        else {
SOURCE(25021, 59)
                           {
/*1*/   word pd339;
/*1*/   word idx340;
/*1*/   pd339 = (* (( (ptr) (* (( (ptr) gf←c76084)+180)/* var←c70900 */  ))+8) );
/*1*/   jointParts←v20080 = (word) ( *( (fPt) ((*  (ptr) pd339 ))))((* (( (ptr) &var←c76052)+15)/* trajData←v20136 */  ), (
/*1*/         idx340 = (* (( (ptr) &var←c76052)+13)/* jointNum←v20024 */  ),
/*1*/         SGNCK(idx340)
/*1*/         ), pd339);
/*1*/   };
SOURCE(25082, 17)
                           (*  (W2Pt) (( (ptr) &var←c76052)+7)/* point←v10380 */  ) = bestPoint←v20352;
SOURCE(25101, 26)
                           (void) FindJointNormal←P4044((word) &normal←v10408, (word) (( (bPt) &var←c76052)+44)/* var←c73140 */ );
                           };
                        };
                     }
                  else {
SOURCE(25141, 59)
                     {
                        word pd341;
                        word idx342;
                        pd341 = (* (( (ptr) (* (( (ptr) gf←c76084)+180)/* var←c70900 */  ))+8) );
                        jointParts←v20080 = (word) ( *( (fPt) ((*  (ptr) pd341 ))))((* (( (ptr) &var←c76052)+15)/* trajData←v20136 */  ), (
/*1*/   idx342 = (* (( (ptr) &var←c76052)+13)/* jointNum←v20024 */  ),
/*1*/   SGNCK(idx342)
/*1*/   ), pd341);
                        };
SOURCE(25202, 17)
                     (*  (W2Pt) (( (ptr) &var←c76052)+7)/* point←v10380 */  ) = bestPoint←v20352;
SOURCE(25221, 26)
                     (void) FindJointNormal←P4044((word) &normal←v10408, (word) (( (bPt) &var←c76052)+44)/* var←c73140 */ );
                     };
                  }
               else {
SOURCE(25259, 5)
                  (void) XR←RaiseUnnamedError();
                  };
               };
            break;
         case 1: 
SOURCE(25315, 59)
            {
               word pd343;
               word idx344;
               pd343 = (* (( (ptr) (* (( (ptr) gf←c76084)+180)/* var←c70900 */  ))+8) );
               jointParts←v20080 = (word) ( *( (fPt) ((*  (ptr) pd343 ))))((* (( (ptr) &var←c76052)+15)/* trajData←v20136 */  ), (
                     idx344 = (* (( (ptr) &var←c76052)+13)/* jointNum←v20024 */  ),
                     SGNCK(idx344)
                     ), pd343);
               };
SOURCE(25376, 16)
            (*  (W2Pt) (( (ptr) &var←c76052)+7)/* point←v10380 */  ) = mapPoint←v10240;
SOURCE(25394, 26)
            (void) FindJointNormal←P4044((word) &normal←v10408, (word) (( (bPt) &var←c76052)+44)/* var←c73140 */ );
            break;
         case 2: 
SOURCE(25441, 207)
            {
               word seg←v20552 = 0;
SOURCE(25457, 71)
               {
                  word pd345;
                  pd345 = (* (( (ptr) (* (( (ptr) gf←c76084)+180)/* var←c70900 */  ))+11) );
                  jointParts←v20080 = (word) ( *( (fPt) ((*  (ptr) pd345 ))))((* (( (ptr) &var←c76052)+15)/* trajData←v20136 */  ), SGNCK(segNum←v19968)
                     , SGNCK(cpNum←v19996), pd345);
                  };
SOURCE(25530, 16)
               (*  (W2Pt) (( (ptr) &var←c76052)+7)/* point←v10380 */  ) = mapPoint←v10240;
SOURCE(25548, 39)
               {
                  word pd346;
                  pd346 = (* (( (ptr) (* (( (ptr) gf←c76084)+177)/* var←c70676 */  ))+29) );
                  seg←v20552 = (word) ( *( (fPt) ((*  (ptr) pd346 ))))((* (( (ptr) &var←c76052)+14)/* traj←v20108 */  ), SGNCK(segNum←v19968)
                     , pd346);
                  };
SOURCE(25589, 57)
               {
                  word pd347;
                  pd347 = (* (( (ptr) (*  (ptr) seg←v20552 ))+25) );
                  (void) ( *( (fPt) ((*  (ptr) pd347 ))))((word) &normal←v10408, seg←v20552, SGNCK(cpNum←v19996), (*  (W2Pt) (( (ptr) &var←c76052)+7)
                     /* point←v10380 */  ), (*  (W2Pt) (( (ptr) &var←c76052)+4)/* testPoint←v10268 */  ), pd347);
                  };
               };
            break;
         case 3: 
SOURCE(25662, 1576)
            {
               word success←v20624 = 0;
               W2 jointPoint←v20652;
               W2 cpPoint←v20680;
               W2 cpNormal←v20708;
               word seg←v20736 = 0;
SOURCE(26365, 39)
               {
                  word pd348;
                  pd348 = (* (( (ptr) (* (( (ptr) gf←c76084)+177)/* var←c70676 */  ))+29) );
                  seg←v20736 = (word) ( *( (fPt) ((*  (ptr) pd348 ))))((* (( (ptr) &var←c76052)+14)/* traj←v20108 */  ), SGNCK(segNum←v19968)
                     , pd348);
                  };
SOURCE(26406, 34)
               (* (( (ptr) &var←c76052)+13)/* jointNum←v20024 */  ) = (word) NearestJointToHitData←P4296((word) ((( (bPt) &var←c76052)+36)
                  /* var←c73108 */ ));
SOURCE(26442, 49)
               {
                  word pd349;
                  word idx350;
                  pd349 = (* (( (ptr) (* (( (ptr) gf←c76084)+177)/* var←c70676 */  ))+32) );
                  (void) ( *( (fPt) ((*  (ptr) pd349 ))))((word) &jointPoint←v20652, (* (( (ptr) &var←c76052)+14)/* traj←v20108 */  ), (
                        idx350 = (* (( (ptr) &var←c76052)+13)/* jointNum←v20024 */  ),
                        SGNCK(idx350)
                        ), pd349);
                  };
SOURCE(26493, 106)
               {
                  W6 var←c73300;
                  {
                     word pd351;
                     pd351 = (* (( (ptr) (*  (ptr) seg←v20736 ))+19) );
                     (void) ( *( (fPt) ((*  (ptr) pd351 ))))((word) &var←c73300, seg←v20736, mapPoint←v10240, (*  (ptr) &fc319 ), pd351);
                     };
                  success←v20624 = var←c73300.f5;
                  cpNum←v19996 = var←c73300.f4;
                  cpNormal←v20708 = (*  (W2Pt) (( (ptr) &var←c73300)+2) );
                  cpPoint←v20680 = (*  (W2Pt) &var←c73300 );
                  };
SOURCE(26601, 629)
               if ((0 == success←v20624)) {
SOURCE(26664, 59)
                  {
                     word pd352;
                     word idx353;
                     pd352 = (* (( (ptr) (* (( (ptr) gf←c76084)+180)/* var←c70900 */  ))+8) );
                     jointParts←v20080 = (word) ( *( (fPt) ((*  (ptr) pd352 ))))((* (( (ptr) &var←c76052)+15)/* trajData←v20136 */  ), (
                           idx353 = (* (( (ptr) &var←c76052)+13)/* jointNum←v20024 */  ),
                           SGNCK(idx353)
                           ), pd352);
                     };
SOURCE(26725, 18)
                  (*  (W2Pt) (( (ptr) &var←c76052)+7)/* point←v10380 */  ) = jointPoint←v20652;
SOURCE(26745, 26)
                  (void) FindJointNormal←P4044((word) &normal←v10408, (word) (( (bPt) &var←c76052)+44)/* var←c73140 */ );
                  }
               else {
SOURCE(26780, 455)
                  {
                     word cpDist←v20840;
                     word jointDist←v20868;
                     word tisAJoint←v20896;
SOURCE(26818, 59)
                     {
                        word pd354;
                        pd354 = (* (( (ptr) (* (( (ptr) gf←c76084)+187)/* var←c72212 */  ))+21) );
                        cpDist←v20840 = (word) ( *( (fPt) ((*  (ptr) pd354 ))))(cpPoint←v20680, mapPoint←v10240, pd354);
                        };
SOURCE(26879, 65)
                     {
                        word pd355;
                        pd355 = (* (( (ptr) (* (( (ptr) gf←c76084)+187)/* var←c72212 */  ))+21) );
                        jointDist←v20868 = (word) ( *( (fPt) ((*  (ptr) pd355 ))))(jointPoint←v20652, mapPoint←v10240, pd355);
                        };
SOURCE(26946, 37)
                     {
                        word x356;
                        word x357;
                        tisAJoint←v20896 =  (unsigned) ((
                           x356 = jointDist←v20868,  *(float*)&x356
                           ) <= (
                           x357 = cpDist←v20840,  *(float*)&x357
                           ));
                        };
SOURCE(26985, 245)
                     if ((0 != tisAJoint←v20896)) {
SOURCE(27005, 59)
                        {
                           word pd358;
                           word idx359;
                           pd358 = (* (( (ptr) (* (( (ptr) gf←c76084)+180)/* var←c70900 */  ))+8) );
                           jointParts←v20080 = (word) ( *( (fPt) ((*  (ptr) pd358 ))))((* (( (ptr) &var←c76052)+15)/* trajData←v20136 */  ), (
/*1*/      idx359 = (* (( (ptr) &var←c76052)+13)/* jointNum←v20024 */  ),
/*1*/      SGNCK(idx359)
/*1*/      ), pd358);
                           };
SOURCE(27066, 18)
                        (*  (W2Pt) (( (ptr) &var←c76052)+7)/* point←v10380 */  ) = jointPoint←v20652;
SOURCE(27086, 26)
                        (void) FindJointNormal←P4044((word) &normal←v10408, (word) (( (bPt) &var←c76052)+44)/* var←c73140 */ );
                        }
                     else {
SOURCE(27123, 71)
                        {
                           word pd360;
                           pd360 = (* (( (ptr) (* (( (ptr) gf←c76084)+180)/* var←c70900 */  ))+11) );
                           jointParts←v20080 = (word) ( *( (fPt) ((*  (ptr) pd360 ))))((* (( (ptr) &var←c76052)+15)/* trajData←v20136 */  ), SGNCK(segNum←v19968)
/*1*/   , SGNCK(cpNum←v19996), pd360);
                           };
SOURCE(27196, 15)
                        (*  (W2Pt) (( (ptr) &var←c76052)+7)/* point←v10380 */  ) = cpPoint←v20680;
SOURCE(27213, 17)
                        normal←v10408 = cpNormal←v20708;
                        };
                     };
                  };
               };
            break;
         default: 
SOURCE(27252, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(27259, 54)
   {
      word pd361;
      pd361 = (* (( (ptr) (* (( (ptr) gf←c76084)+176)/* var←c70644 */  ))+8) );
      jointD←v10352 = (word) ( *( (fPt) ((*  (ptr) pd361 ))))((* (( (ptr) &var←c76052)+14)/* traj←v20108 */  ), jointParts←v20080, pd361)
      ;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0387 ) = jointD←v10352;
   (*  (W2Pt) (( (ptr) formal←c0387)+1) ) = (*  (W2Pt) (( (ptr) &var←c76052)+7)/* point←v10380 */  );
   (*  (W2Pt) (( (ptr) formal←c0387)+3) ) = normal←v10408;
   return;
   }

static void FindJointNormal←P4044(formal←c0405, formal←c76148)
   word formal←c0405;
   word formal←c76148;
   {
   register ptr gf←c76116 =  (ptr) &globalframe;
   W2 normal←v20212;
   word seg1←v21124 = 0;
   word seg2←v21152 = 0;
   W2 normal1←v21180;
   W2 normal2←v21208;
   W2 tangent1←v21236;
   W2 tangent2←v21264;
   W2 direction←v21292;
   formal←c76148 = (formal←c76148 - 44);
   /* FindJointNormal: */ 
SOURCE(23092, 950)
SOURCE(23224, 164)
   {
      word pd362;
      pd362 = (* (( (ptr) (* (( (ptr) gf←c76116)+177)/* var←c70676 */  ))+37) );
      if (( (int)(word) ( *( (fPt) ((*  (ptr) pd362 ))))((* ((( (ptr) formal←c76148)+14)) ), pd362) <  (int)(* (( (ptr) formal←c76148)+13)
       ))) {
SOURCE(23266, 80)
         {
            word pd363;
            if (((*  (ptr) (* (( (ptr) formal←c76148)+15) ) ) == 2)) {
               seg2←v21152 = 0;
               }
            else {
               pd363 = (* (( (ptr) (* (( (ptr) gf←c76116)+177)/* var←c70676 */  ))+29) );
               seg2←v21152 = (word) ( *( (fPt) ((*  (ptr) pd363 ))))((* (( (ptr) formal←c76148)+14) ), 0, pd363);
               };
            };
         }
      else {
SOURCE(23346, 42)
         {
            word pd364;
            word idx365;
            pd364 = (* (( (ptr) (* (( (ptr) gf←c76116)+177)/* var←c70676 */  ))+29) );
            seg2←v21152 = (word) ( *( (fPt) ((*  (ptr) pd364 ))))((* (( (ptr) formal←c76148)+14) ), (
                  idx365 = (* (( (ptr) formal←c76148)+13) ),
                  SGNCK(idx365)
                  ), pd364);
            };
         };
      };
SOURCE(23390, 45)
   {
      word pd366;
      word idx367;
      pd366 = (* (( (ptr) (* (( (ptr) gf←c76116)+177)/* var←c70676 */  ))+41) );
      seg1←v21124 = (word) ( *( (fPt) ((*  (ptr) pd366 ))))((* (( (ptr) formal←c76148)+14) ), (
            idx367 = (* (( (ptr) formal←c76148)+13) ),
            SGNCK(idx367)
            ), pd366);
      };
SOURCE(23437, 605)
   if ( ( (seg1←v21124 != 0) ? (seg2←v21152 != 0) : 0 ) ) {
SOURCE(23473, 75)
      {
         W4 var←c73332;
         {
            word pd368;
            pd368 = (* (( (ptr) (*  (ptr) seg2←v21152 ))+26) );
            (void) ( *( (fPt) ((*  (ptr) pd368 ))))((word) &var←c73332, seg2←v21152, (*  (W2Pt) (( (ptr) formal←c76148)+7) ), (*  (W2Pt) (
                  ( (ptr) formal←c76148)+4) ), 0, pd368);
            };
         tangent2←v21264 = (*  (W2Pt) (( (ptr) &var←c73332)+2) );
         normal2←v21208 = (*  (W2Pt) &var←c73332 );
         };
SOURCE(23550, 74)
      {
         W4 var←c73364;
         {
            word pd369;
            pd369 = (* (( (ptr) (*  (ptr) seg1←v21124 ))+26) );
            (void) ( *( (fPt) ((*  (ptr) pd369 ))))((word) &var←c73364, seg1←v21124, (*  (W2Pt) (( (ptr) formal←c76148)+7) ), (*  (W2Pt) (
                  ( (ptr) formal←c76148)+4) ), 1, pd369);
            };
         tangent1←v21236 = (*  (W2Pt) (( (ptr) &var←c73364)+2) );
         normal1←v21180 = (*  (W2Pt) &var←c73364 );
         };
SOURCE(23626, 56)
      {
         word pd370;
         pd370 = (* (( (ptr) (* (( (ptr) gf←c76116)+187)/* var←c72212 */  ))+22) );
         (void) ( *( (fPt) ((*  (ptr) pd370 ))))((word) &direction←v21292, (*  (W2Pt) (( (ptr) formal←c76148)+7) ), (*  (W2Pt) (( (ptr) formal←c76148)+4)
             ), pd370);
         };
SOURCE(23684, 168)
      {
         float tf371;
         word pd372;
         word x373;
         float tf374;
         word pd375;
         word x376;
         pd372 = (* (( (ptr) (* (( (ptr) gf←c76116)+187)/* var←c72212 */  ))+9) );
         pd375 = (* (( (ptr) (* (( (ptr) gf←c76116)+187)/* var←c72212 */  ))+9) );
         if ((FABS((
               x373 = (word) ( *( (fPt) ((*  (ptr) pd372 ))))(tangent1←v21236, direction←v21292, pd372),  *(float*)&x373
               ), tf371) < FABS((
               x376 = (word) ( *( (fPt) ((*  (ptr) pd375 ))))(tangent2←v21264, direction←v21292, pd375),  *(float*)&x376
               ), tf374))) {
            normal←v20212 = normal1←v21180;
            }
         else {
            normal←v20212 = normal2←v21208;
            };
         };
      }
   else {
SOURCE(23863, 88)
      if ((seg1←v21124 != 0)) {
SOURCE(23882, 69)
         {
            W4 var←c73396;
            {
               word pd377;
               pd377 = (* (( (ptr) (*  (ptr) seg1←v21124 ))+26) );
               (void) ( *( (fPt) ((*  (ptr) pd377 ))))((word) &var←c73396, seg1←v21124, (*  (W2Pt) (( (ptr) formal←c76148)+7) ), (*  (W2Pt) (
                     ( (ptr) formal←c76148)+4) ), 1, pd377);
               };
            normal←v20212 = (*  (W2Pt) &var←c73396 );
            };
         };
SOURCE(23953, 89)
      if ((seg2←v21152 != 0)) {
SOURCE(23972, 70)
         {
            W4 var←c73428;
            {
               word pd378;
               pd378 = (* (( (ptr) (*  (ptr) seg2←v21152 ))+26) );
               (void) ( *( (fPt) ((*  (ptr) pd378 ))))((word) &var←c73428, seg2←v21152, (*  (W2Pt) (( (ptr) formal←c76148)+7) ), (*  (W2Pt) (
                     ( (ptr) formal←c76148)+4) ), 0, pd378);
               };
            normal←v20212 = (*  (W2Pt) &var←c73428 );
            };
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0405 ) = normal←v20212;
   return;
   }

static word NearestJointToHitData←P4296(formal←c76212)
   word formal←c76212;
   {
   register ptr gf←c76180 =  (ptr) &globalframe;
   word jointNum←v20812;
   word nextNum←v20940;
   W2 p1←v20968;
   W2 p2←v20996;
   word d1←v21024;
   word d2←v21052;
   word trajHitData←v21080;
   formal←c76212 = (formal←c76212 - 36);
   /* NearestJointToHitData: */ 
SOURCE(25664, 40)
SOURCE(25766, 42)
   trajHitData←v21080 = XR←Narrow((* (( (ptr) formal←c76212)+6) ), (* (( (ptr) gf←c76180)+13) ));
SOURCE(25810, 446)
   {
      word var←c73460;
      var←c73460 = (*  (ptr) trajHitData←v21080 );
      switch (var←c73460) {
         case 1: 
SOURCE(25853, 31)
            {
               word idx379;
               jointNum←v20812 = (
                  idx379 = (* (( (ptr) trajHitData←v21080)+3) ),
                  SGNCK(idx379)
                  );
               };
            break;
         case 3: case 2: 
SOURCE(25916, 57)
            {
               word pd380;
               word idx381;
               word idx382;
               pd380 = (* (( (ptr) (* (( (ptr) gf←c76180)+177)/* var←c70676 */  ))+44) );
               nextNum←v20940 = (
                  idx382 = (word) ( *( (fPt) ((*  (ptr) pd380 ))))((* (( (ptr) formal←c76212)+14) ), (
                        idx381 = (* (( (ptr) trajHitData←v21080)+1) ),
                        SGNCK(idx381)
                        ), pd380),
                  SGNCK(idx382)
                  );
               };
SOURCE(25975, 51)
            {
               word pd383;
               word idx384;
               pd383 = (* (( (ptr) (* (( (ptr) gf←c76180)+177)/* var←c70676 */  ))+32) );
               (void) ( *( (fPt) ((*  (ptr) pd383 ))))((word) &p1←v20968, (* (( (ptr) formal←c76212)+14) ), (
                     idx384 = (* (( (ptr) trajHitData←v21080)+1) ),
                     SGNCK(idx384)
                     ), pd383);
               };
SOURCE(26028, 40)
            {
               word pd385;
               pd385 = (* (( (ptr) (* (( (ptr) gf←c76180)+177)/* var←c70676 */  ))+32) );
               (void) ( *( (fPt) ((*  (ptr) pd385 ))))((word) &p2←v20996, (* (( (ptr) formal←c76212)+14) ), nextNum←v20940, pd385);
               };
SOURCE(26070, 56)
            {
               word pd386;
               pd386 = (* (( (ptr) (* (( (ptr) gf←c76180)+187)/* var←c72212 */  ))+21) );
               d1←v21024 = (word) ( *( (fPt) ((*  (ptr) pd386 ))))(p1←v20968, (*  (W2Pt) (( (ptr) trajHitData←v21080)+4) ), pd386);
               };
SOURCE(26128, 56)
            {
               word pd387;
               pd387 = (* (( (ptr) (* (( (ptr) gf←c76180)+187)/* var←c72212 */  ))+21) );
               d2←v21052 = (word) ( *( (fPt) ((*  (ptr) pd387 ))))(p2←v20996, (*  (W2Pt) (( (ptr) trajHitData←v21080)+4) ), pd387);
               };
SOURCE(26186, 70)
            {
               word x388;
               word x389;
               if (((
                  x388 = d1←v21024,  *(float*)&x388
                  ) <= (
                  x389 = d2←v21052,  *(float*)&x389
                  ))) {
SOURCE(26203, 35)
                  {
                     word idx390;
                     jointNum←v20812 = (
                        idx390 = (* (( (ptr) trajHitData←v21080)+1) ),
                        SGNCK(idx390)
                        );
                     };
                  }
               else {
SOURCE(26238, 18)
                  jointNum←v20812 = nextNum←v20940;
                  };
               };
            break;
         default: 
SOURCE(26272, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(25664, 40)
   return(jointNum←v20812);
   }

static void TrajClosestPointAndTangent←P1320(formal←c0424, sliceD←v10468, testPoint←v10496, tolerance←v10524)
   word formal←c0424;
   word sliceD←v10468;
   W2 testPoint←v10496;
   word tolerance←v10524;
   {
   W2 bestPoint←v10568;
   word bestDist←v10596;
   W2 tangent←v10624;
   word hitData←v10652;
   word success←v10680;
   /* TrajClosestPointAndTangent: */ 
SOURCE(27318, 34)
SOURCE(27318, 34)
   bestPoint←v10568.f0 = (*  (ptr) &fc95 );
   bestPoint←v10568.f1 = (*  (ptr) &fc95 );
SOURCE(27318, 34)
   bestDist←v10596 = (*  (ptr) &fc95 );
SOURCE(27318, 34)
   tangent←v10624.f0 = (*  (ptr) &fc95 );
   tangent←v10624.f1 = (*  (ptr) &fc90 );
SOURCE(27318, 34)
   hitData←v10652 = 0;
SOURCE(27318, 34)
   success←v10680 = 0;
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0424 ) = bestPoint←v10568;
   (* (( (ptr) formal←c0424)+2) ) = bestDist←v10596;
   (*  (W2Pt) (( (ptr) formal←c0424)+3) ) = tangent←v10624;
   (* (( (ptr) formal←c0424)+5) ) = hitData←v10652;
   (* (( (ptr) formal←c0424)+6) ) = success←v10680;
   return;
   }

static void TrajClosestSegment←P1380(formal←c0439, sliceD←v10752, testPoint←v10780, tolerance←v10808)
   word formal←c0439;
   word sliceD←v10752;
   W2 testPoint←v10780;
   word tolerance←v10808;
   {
   register ptr gf←c76244 =  (ptr) &globalframe;
   W2 bestPoint←v10852;
   word bestDist←v10880;
   W2 bestNormal←v10908;
   word hitData←v10936;
   word success←v10964;
   word bestSegNum←v21336;
   word trajHitData←v21364 = 0;
   /* TrajClosestSegment: */ 
SOURCE(27549, 461)
SOURCE(27549, 461)
   bestNormal←v10908.f0 = (*  (ptr) &fc95 );
   bestNormal←v10908.f1 = (*  (ptr) &fc90 );
SOURCE(27549, 461)
   hitData←v10936 = 0;
SOURCE(27549, 461)
   success←v10964 = 0;
SOURCE(27795, 108)
   {
      W7 var←c73492;
      {
         word pd391;
         pd391 = (* (( (ptr) (* (( (ptr) gf←c76244)+177)/* var←c70676 */  ))+54) );
         (void) ( *( (fPt) ((*  (ptr) pd391 ))))((word) &var←c73492, testPoint←v10780, sliceD←v10752, tolerance←v10808, pd391);
         };
      success←v10964 = var←c73492.f6;
      bestNormal←v10908 = (*  (W2Pt) (( (ptr) &var←c73492)+4) );
      bestPoint←v10852 = (*  (W2Pt) (( (ptr) &var←c73492)+2) );
      bestSegNum←v21336 = var←c73492.f1;
      bestDist←v10880 = var←c73492.f0;
      };
SOURCE(27905, 105)
   if ((0 != success←v10964)) {
SOURCE(27923, 87)
      {
         word var←c73524;
         {
            word var←c73556;
            var←c73556 = XR←NewObject(24, (* (( (ptr) gf←c76244)+13) ));
            (*  (ptr) var←c73556 ) = 3;
            (* (( (ptr) var←c73556)+1) ) = bestSegNum←v21336;
            (* (( (ptr) var←c73556)+2) ) =  (word) -1;
            (* (( (ptr) var←c73556)+3) ) =  (word) -1;
            (*  (W2Pt) (( (ptr) var←c73556)+4) ) = bestPoint←v10852;
            var←c73524 = var←c73556;
            };
         trajHitData←v21364 = var←c73524;
         hitData←v10936 = var←c73524;
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0439 ) = bestPoint←v10852;
   (* (( (ptr) formal←c0439)+2) ) = bestDist←v10880;
   (*  (W2Pt) (( (ptr) formal←c0439)+3) ) = bestNormal←v10908;
   (* (( (ptr) formal←c0439)+5) ) = hitData←v10936;
   (* (( (ptr) formal←c0439)+6) ) = success←v10964;
   return;
   }

static word InsideContour←P1440(p←v11136, pairs←v11164)
   W2 p←v11136;
   word pairs←v11164;
   {
   word var←c11208;
   /* InsideContour: */ 
SOURCE(28050, 132)
SOURCE(28136, 46)
   return( (unsigned) ((word) HanrahanInsideContour←P1500(p←v11136, pairs←v11164) != 1));
   }

static word HanrahanInsideContour←P1500(p←v11268, pairs←v11296)
   W2 p←v11268;
   word pairs←v11296;
   {
   word var←c11340;
   word zcross←v21408;
   word odd←v21436 = 0;
   W2 d2←v21464;
   /* HanrahanInsideContour: */ 
SOURCE(28186, 600)
SOURCE(28316, 70)
   {
      word var←c73652;
      word var←c0787;
      {
         word limit392;
         var←c73652 = ((*  (ptr) pairs←v11296 ) - 1);
         var←c0787 = (* (( (W2Pt) (( (ptr) pairs←v11296)+2))+(
               limit392 = (* (( (ptr) pairs←v11296)+1) ),
               BCK(var←c73652, limit392)
               )) ).f0;
         };
      {
         word x393;
         word x394;
         *(float*)&d2←v21464.f0 = (
            x393 = var←c0787,  *(float*)&x393
            ) - (
            x394 = p←v11268.f0,  *(float*)&x394
            );
         };
      };
   {
      word var←c73684;
      word var←c0788;
      {
         word limit395;
         var←c73684 = ((*  (ptr) pairs←v11296 ) - 1);
         var←c0788 = (* (( (W2Pt) (( (ptr) pairs←v11296)+2))+(
               limit395 = (* (( (ptr) pairs←v11296)+1) ),
               BCK(var←c73684, limit395)
               )) ).f1;
         };
      {
         word x396;
         word x397;
         *(float*)&d2←v21464.f1 = (
            x396 = var←c0788,  *(float*)&x396
            ) - (
            x397 = p←v11268.f1,  *(float*)&x397
            );
         };
      };
SOURCE(28388, 356)
   {
      register word n←v21508 = 0;
      register word noName←c73716;
      noName←c73716 = (*  (ptr) pairs←v11296 );
      if ((n←v21508 >= noName←c73716)) {
         goto lab←L100047;
         };
      lab←L100050: ;
      {
         W2 d1←v21552;
SOURCE(28423, 14)
         d1←v21552 = d2←v21464;
SOURCE(28439, 37)
         {
            word limit398;
            word x399;
            word x400;
            *(float*)&d2←v21464.f0 = (
               x399 = (* (( (W2Pt) (( (ptr) pairs←v11296)+2))+(
                     limit398 = (* (( (ptr) pairs←v11296)+1) ),
                     BCK(n←v21508, limit398)
                     )) ).f0,  *(float*)&x399
               ) - (
               x400 = p←v11268.f0,  *(float*)&x400
               );
            };
         {
            word limit401;
            word x402;
            word x403;
            *(float*)&d2←v21464.f1 = (
               x402 = (* (( (W2Pt) (( (ptr) pairs←v11296)+2))+(
                     limit401 = (* (( (ptr) pairs←v11296)+1) ),
                     BCK(n←v21508, limit401)
                     )) ).f1,  *(float*)&x402
               ) - (
               x403 = p←v11268.f1,  *(float*)&x403
               );
            };
SOURCE(28478, 86)
         {
            word x404;
            word x405;
            word x406;
            word x407;
            word x408;
            word x409;
            word x410;
            word x411;
            word x412;
            word x413;
            word x414;
            word x415;
            if (( ( ((
               x404 = d1←v21552.f1,  *(float*)&x404
               ) > (
               x405 = (*  (ptr) &fc95 ),  *(float*)&x405
               )) ? ((
               x406 = d2←v21464.f1,  *(float*)&x406
               ) > (
               x407 = (*  (ptr) &fc95 ),  *(float*)&x407
               )) : 0 )  ||  ( ((
               x408 = d1←v21552.f1,  *(float*)&x408
               ) < (
               x409 = (*  (ptr) &fc95 ),  *(float*)&x409
               )) ? ((
               x410 = d2←v21464.f1,  *(float*)&x410
               ) < (
               x411 = (*  (ptr) &fc95 ),  *(float*)&x411
               )) : 0 ) ) ||  ( ((
               x412 = d1←v21552.f0,  *(float*)&x412
               ) < (
               x413 = (*  (ptr) &fc95 ),  *(float*)&x413
               )) ? ((
               x414 = d2←v21464.f0,  *(float*)&x414
               ) < (
               x415 = (*  (ptr) &fc95 ),  *(float*)&x415
               )) : 0 ) ) {
SOURCE(28564, 4)
               goto lab←L100049;
               };
            };
SOURCE(28593, 55)
         {
            word x420;
            word x421;
            {
               word x416;
               word x417;
               word x418;
               word x419;
               *(float*)&zcross←v21408 = ((
                  x416 = d2←v21464.f1,  *(float*)&x416
                  ) * (
                  x417 = d1←v21552.f0,  *(float*)&x417
                  )) - ((
                  x418 = d1←v21552.f1,  *(float*)&x418
                  ) * (
                  x419 = d2←v21464.f0,  *(float*)&x419
                  ));
               };
            if (((
               x420 = zcross←v21408,  *(float*)&x420
               ) == (
               x421 = (*  (ptr) &fc95 ),  *(float*)&x421
               ))) {
SOURCE(28638, 10)
               return(2);
               };
            };
SOURCE(28665, 79)
         {
            word tc422;
            word x423;
            word x424;
            word x425;
            word x426;
            word x427;
            word x428;
            word x429;
            word x430;
            word x431;
            if (((
               x423 = d1←v21552.f1,  *(float*)&x423
               ) > (
               x424 = (*  (ptr) &fc95 ),  *(float*)&x424
               )) || ((
               x425 = d2←v21464.f1,  *(float*)&x425
               ) > (
               x426 = (*  (ptr) &fc95 ),  *(float*)&x426
               ))) {
               tc422 =  (word) ( (unsigned) ((
                  x427 = zcross←v21408,  *(float*)&x427
                  ) < (
                  x428 = (*  (ptr) &fc95 ),  *(float*)&x428
                  )) !=  (unsigned) ((
                  x429 = d1←v21552.f1,  *(float*)&x429
                  ) - (
                  x430 = d2←v21464.f1,  *(float*)&x430
                  ) < (
                  x431 = (*  (ptr) &fc95 ),  *(float*)&x431
                  )));
               }
            else {
               tc422 =  (word) 0;
               };
            if (tc422) {
SOURCE(28731, 13)
               odd←v21436 =  (unsigned) (0 == odd←v21436);
               };
            };
         };
      lab←L100049: ;
      n←v21508 = (n←v21508 + 1);
      if ((n←v21508 < noName←c73716)) {
         goto lab←L100050;
         };
      lab←L100047: ;
      };
SOURCE(28755, 31)
   if ((0 != odd←v21436)) {
      return(0);
      }
   else {
      return(1);
      };
   }

static void PolylineOfTraj←P1560(formal←c0468, trajData←v11400, formal←c0803)
   word formal←c0468;
   word trajData←v11400;
   word formal←c0803;
   {
   W9 var←c76276;
   /* declaration of tolerance←v11428 skipped */ 
   register ptr gf←c76308 =  (ptr) &globalframe;
   word wholePolyline←v11472;
   word success←v11500;
   /* declaration of var←c73748 skipped */ 
   /* declaration of polyList←v21596 skipped */ 
   /* declaration of segCount←v21624 skipped */ 
   (* (( (ptr) &var←c76276)+4)/* tolerance←v11428 */  ) = formal←c0803;
   /* PolylineOfTraj: */ 
SOURCE(28792, 899)
   {
      word tmpAddr432;
      tmpAddr432 = (word) (( (ptr) &var←c76276)+5)/* var←c73748 */ ;
      (*  (ptr) tmpAddr432 ) = ( ((word)  (fPt) GetPolyline←P4500) );
      (* (( (ptr) tmpAddr432) + 1) ) = 1;
      };
SOURCE(28792, 899)
   wholePolyline←v11472 = 0;
SOURCE(28792, 899)
   success←v11500 = 1;
SOURCE(28930, 10)
   (* (( (ptr) &var←c76276)+7)/* polyList←v21596 */  ) = 0;
SOURCE(28977, 17)
   (* (( (ptr) &var←c76276)+8)/* segCount←v21624 */  ) = 0;
SOURCE(29261, 57)
   {
      word var←c73780;
      word pd433;
      pd433 = (* (( (ptr) (* (( (ptr) gf←c76308)+180)/* var←c70900 */  ))+41) );
      var←c73780 = (word) ( *( (fPt) ((*  (ptr) pd433 ))))(trajData←v11400, (word) (( (bPt) &var←c76276)+20)/* var←c73748 */ , pd433)
      ;
      };
SOURCE(29320, 371)
   if (((* (( (ptr) &var←c76276)+7)/* polyList←v21596 */  ) == 0)) {
SOURCE(29343, 24)
      wholePolyline←v11472 = 0;
      success←v11500 = 0;
      goto lab←L100051;
      }
   else {
SOURCE(29367, 344)
      {
         word index←v21940 = 0;
SOURCE(29385, 14)
         success←v11500 = 1;
SOURCE(29401, 61)
         {
            word var←c73812;
            word var←c73844;
            var←c73812 = ((* (( (ptr) &var←c76276)+8)/* segCount←v21624 */  ) << 3);
            var←c73844 = XR←NewObject((8 + var←c73812), (* (( (ptr) gf←c76308)+23) ));
            (* (( (ptr) var←c73844)+1) ) = (* (( (ptr) &var←c76276)+8)/* segCount←v21624 */  );
            wholePolyline←v11472 = var←c73844;
            };
SOURCE(29464, 31)
         (*  (ptr) wholePolyline←v11472 ) = (* (( (ptr) &var←c76276)+8)/* segCount←v21624 */  );
SOURCE(29497, 194)
         {
            register word list←v21984;
            list←v21984 = (* (( (ptr) &var←c76276)+7)/* polyList←v21596 */  );
            lab←L100055: ;
            if ((list←v21984 != 0)) {
               }
            else {
               goto lab←L100052;
               };
SOURCE(29585, 106)
            {
               register word j←v22112;
               j←v22112 = (*  (ptr) (*  (ptr) list←v21984 ) );
               if ((1 >= j←v22112)) {
                  goto lab←L100056;
                  };
               j←v22112 = (j←v22112 - 1);
               lab←L100059: ;
SOURCE(29636, 36)
               {
                  word var←c73876;
                  var←c73876 = (*  (ptr) list←v21984 );
                  {
                     word limit434;
                     word limit435;
                     (* (( (W2Pt) (( (ptr) wholePolyline←v11472)+2))+(
                           limit434 = (* (( (ptr) wholePolyline←v11472)+1) ),
                           BCK(index←v21940, limit434)
                           )) ) = (* (( (W2Pt) (( (ptr) var←c73876)+2))+(
                           limit435 = (* (( (ptr) var←c73876)+1) ),
                           BCK(j←v22112, limit435)
                           )) );
                     };
                  };
SOURCE(29674, 17)
               index←v21940 = (index←v21940 + 1);
               if ((1 >= j←v22112)) {
                  goto lab←L100056;
                  };
               j←v22112 = (j←v22112 - 1);
               goto lab←L100059;
               lab←L100056: ;
               };
            list←v21984 = (* (( (ptr) list←v21984)+1) );
            goto lab←L100055;
            lab←L100052: ;
            };
         };
      };
   /* removed tail goto */ 
   lab←L100051: ;
   (*  (ptr) formal←c0468 ) = wholePolyline←v11472;
   (* (( (ptr) formal←c0468)+1) ) = success←v11500;
   return;
   }

static word GetPolyline←P4500(traj←v21812, seg←v21840, index←v21868, formal←c76372)
   word traj←v21812;
   word seg←v21840;
   word index←v21868;
   word formal←c76372;
   {
   register ptr gf←c76340 =  (ptr) &globalframe;
   word done←v21912;
   word thisPolyline←v22156;
   formal←c76372 = (formal←c76372 - 20);
   /* GetPolyline: */ 
SOURCE(28996, 260)
SOURCE(28996, 260)
   done←v21912 = 0;
SOURCE(29090, 80)
   {
      word pd436;
      pd436 = (* (( (ptr) (*  (ptr) seg←v21840 ))+24) );
      thisPolyline←v22156 = (word) ( *( (fPt) ((*  (ptr) pd436 ))))(seg←v21840, (* (( (ptr) formal←c76372)+4) ), pd436);
      };
SOURCE(29172, 43)
   {
      word idx437;
      (* (( (ptr) formal←c76372)+8) ) = (
         idx437 = (word) ((* (( (ptr) formal←c76372)+8) ) + ((*  (ptr) thisPolyline←v22156 ) - 1)),
         SGNCK(idx437)
         );
      };
SOURCE(29217, 39)
   {
      word var←c73908;
      var←c73908 = XR←NewObject(8, (* (( (ptr) gf←c76340)+22) ));
      (*  (ptr) var←c73908 ) = thisPolyline←v22156;
      (* (( (ptr) var←c73908)+1) ) = (* (( (ptr) formal←c76372)+7) );
      (* (( (ptr) formal←c76372)+7) ) = var←c73908;
      };
SOURCE(28996, 260)
   return(done←v21912);
   }

static void TrajFilledPathsUnderPoint←P1620(formal←c0487, slice←v11560, point←v11588, tolerance←v11616)
   word formal←c0487;
   word slice←v11560;
   W2 point←v11588;
   word tolerance←v11616;
   {
   register ptr gf←c76404 =  (ptr) &globalframe;
   word hitData←v11660;
   word moreHitDatas←v11688;
   word trajData←v22200;
   word wholePolyline←v22228 = 0;
   word success←v22256 = 1;
   /* TrajFilledPathsUnderPoint: */ 
SOURCE(29718, 836)
SOURCE(29718, 836)
   hitData←v11660 = 0;
SOURCE(29718, 836)
   moreHitDatas←v11688 = 0;
SOURCE(29870, 39)
   trajData←v22200 = XR←Narrow((* (( (ptr) slice←v11560)+1) ), (* (( (ptr) gf←c76404)+11) ));
   {
      word var←c73940;
SOURCE(29978, 96)
      {
         word pd439;
         {
            word pd438;
            pd438 = (* (( (ptr) (* (( (ptr) gf←c76404)+189)/* var←c72628 */  ))+9) );
            var←c73940 = (word) ( *( (fPt) ((*  (ptr) pd438 ))))(slice←v11560, 0, pd438);
            };
         pd439 = (* (( (ptr) (* (( (ptr) gf←c76404)+190)/* var←c72852 */  ))+22) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd439 ))))(point←v11588, var←c73940, tolerance←v11616, pd439))) {
SOURCE(30068, 6)
            goto lab←L100060;
            };
         };
SOURCE(30076, 35)
      if (((*  (ptr) trajData←v22200 ) == 2)) {
SOURCE(30105, 6)
         goto lab←L100060;
         };
SOURCE(30114, 328)
      {
         word x440;
         word x441;
         if ( ( ((* (( (ptr) trajData←v22200)+14) ) != 0) ? ((
            x440 = (* (( (ptr) trajData←v22200)+15) ),  *(float*)&x440
            ) <= (
            x441 = tolerance←v11616,  *(float*)&x441
            )) : 0 ) ) {
SOURCE(30190, 39)
            wholePolyline←v22228 = (* (( (ptr) trajData←v22200)+14) );
            }
         else {
SOURCE(30231, 62)
            {
               W2 var←c73972;
               (void) PolylineOfTraj←P1560((word) &var←c73972, trajData←v22200, tolerance←v11616);
               success←v22256 = var←c73972.f1;
               wholePolyline←v22228 = var←c73972.f0;
               };
SOURCE(30295, 36)
            if ((0 == success←v22256)) {
SOURCE(30315, 16)
               hitData←v11660 = 0;
               moreHitDatas←v11688 = 0;
               goto lab←L100060;
               };
SOURCE(30333, 33)
            (* (( (ptr) trajData←v22200)+14) ) = wholePolyline←v22228;
SOURCE(30404, 38)
            (* (( (ptr) trajData←v22200)+15) ) = tolerance←v11616;
            };
         };
SOURCE(30447, 107)
      if ((0 != (word) InsideContour←P1440(point←v11588, wholePolyline←v22228))) {
SOURCE(30493, 61)
         {
            word var←c74004;
            var←c74004 = XR←NewObject(24, (* (( (ptr) gf←c76404)+13) ));
            (*  (ptr) var←c74004 ) = 4;
            (* (( (ptr) var←c74004)+1) ) =  (word) -1;
            (* (( (ptr) var←c74004)+2) ) =  (word) -1;
            (* (( (ptr) var←c74004)+3) ) =  (word) -1;
            (*  (W2Pt) (( (ptr) var←c74004)+4) ) = point←v11588;
            hitData←v11660 = var←c74004;
            };
         };
      };
   /* removed tail goto */ 
   lab←L100060: ;
   (*  (ptr) formal←c0487 ) = hitData←v11660;
   (* (( (ptr) formal←c0487)+1) ) = moreHitDatas←v11688;
   return;
   }

static void TrajLineIntersection←P1680(formal←c0502, sliceD←v11856, line←v11884)
   word formal←c0502;
   word sliceD←v11856;
   word line←v11884;
   {
   register ptr gf←c76436 =  (ptr) &globalframe;
   word points←v11928;
   word pointCount←v11956;
   word segGen←v22300 = 0;
   word thesePoints←v22328 = 0;
   word thisCount←v22356 = 0;
   word trajParts←v22384;
   word trajData←v22412;
   /* TrajLineIntersection: */ 
SOURCE(30563, 666)
SOURCE(30563, 666)
   points←v11928 = 0;
SOURCE(30563, 666)
   pointCount←v11956 = 0;
SOURCE(30760, 43)
   trajParts←v22384 = XR←Narrow((* (( (ptr) sliceD←v11856)+1) ), (* (( (ptr) gf←c76436)+12) ));
SOURCE(30805, 46)
   trajData←v22412 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v11856 ))+1) ), (* (( (ptr) gf←c76436)+11) ));
SOURCE(30853, 59)
   {
      word pd442;
      pd442 = (* (( (ptr) (* (( (ptr) gf←c76436)+180)/* var←c70900 */  ))+42) );
      segGen←v22300 = (word) ( *( (fPt) ((*  (ptr) pd442 ))))(trajData←v22412, trajParts←v22384, pd442);
      };
SOURCE(30914, 315)
   {
      register word seg←v22540;
      {
         word pd443;
         pd443 = (* (( (ptr) (* (( (ptr) gf←c76436)+180)/* var←c70900 */  ))+46) );
         seg←v22540 = (word) ( *( (fPt) ((*  (ptr) pd443 ))))(segGen←v22300, pd443);
         };
      lab←L100065: ;
      if ((seg←v22540 != 0)) {
         }
      else {
         goto lab←L100062;
         };
SOURCE(31015, 64)
      {
         W2 var←c74036;
         {
            word pd444;
            pd444 = (* (( (ptr) (*  (ptr) seg←v22540 ))+21) );
            (void) ( *( (fPt) ((*  (ptr) pd444 ))))((word) &var←c74036, seg←v22540, line←v11884, pd444);
            };
         thisCount←v22356 = var←c74036.f1;
         thesePoints←v22328 = var←c74036.f0;
         };
SOURCE(31081, 102)
      {
         register word list←v22584;
         list←v22584 = thesePoints←v22328;
         lab←L100069: ;
         if ((list←v22584 != 0)) {
            }
         else {
            goto lab←L100066;
            };
SOURCE(31150, 33)
         {
            word var←c74068;
            var←c74068 = XR←NewObject(12, (* (( (ptr) gf←c76436)+21) ));
            (*  (W2Pt) var←c74068 ) = (*  (W2Pt) list←v22584 );
            (* (( (ptr) var←c74068)+2) ) = points←v11928;
            points←v11928 = var←c74068;
            };
         list←v22584 = (* (( (ptr) list←v22584)+2) );
         goto lab←L100069;
         lab←L100066: ;
         };
SOURCE(31194, 35)
      pointCount←v11956 = SGNCK((pointCount←v11956 + thisCount←v22356));
      {
         word pd445;
         pd445 = (* (( (ptr) (* (( (ptr) gf←c76436)+180)/* var←c70900 */  ))+46) );
         seg←v22540 = (word) ( *( (fPt) ((*  (ptr) pd445 ))))(segGen←v22300, pd445);
         };
      goto lab←L100065;
      lab←L100062: ;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0502 ) = points←v11928;
   (* (( (ptr) formal←c0502)+1) ) = pointCount←v11956;
   return;
   }

static void TrajCircleIntersection←P1740(formal←c0517, sliceD←v12100, circle←v12128)
   word formal←c0517;
   word sliceD←v12100;
   word circle←v12128;
   {
   register ptr gf←c76468 =  (ptr) &globalframe;
   word points←v12172;
   word pointCount←v12200;
   word segGen←v22712 = 0;
   word thesePoints←v22740 = 0;
   word thisCount←v22768 = 0;
   word trajParts←v22796;
   word trajData←v22824;
   /* TrajCircleIntersection: */ 
SOURCE(31244, 676)
SOURCE(31244, 676)
   points←v12172 = 0;
SOURCE(31244, 676)
   pointCount←v12200 = 0;
SOURCE(31447, 43)
   trajParts←v22796 = XR←Narrow((* (( (ptr) sliceD←v12100)+1) ), (* (( (ptr) gf←c76468)+12) ));
SOURCE(31492, 46)
   trajData←v22824 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v12100 ))+1) ), (* (( (ptr) gf←c76468)+11) ));
SOURCE(31540, 59)
   {
      word pd446;
      pd446 = (* (( (ptr) (* (( (ptr) gf←c76468)+180)/* var←c70900 */  ))+42) );
      segGen←v22712 = (word) ( *( (fPt) ((*  (ptr) pd446 ))))(trajData←v22824, trajParts←v22796, pd446);
      };
SOURCE(31601, 319)
   {
      register word seg←v22952;
      {
         word pd447;
         pd447 = (* (( (ptr) (* (( (ptr) gf←c76468)+180)/* var←c70900 */  ))+46) );
         seg←v22952 = (word) ( *( (fPt) ((*  (ptr) pd447 ))))(segGen←v22712, pd447);
         };
      lab←L100074: ;
      if ((seg←v22952 != 0)) {
         }
      else {
         goto lab←L100071;
         };
SOURCE(31702, 68)
      {
         W2 var←c74100;
         {
            word pd448;
            pd448 = (* (( (ptr) (*  (ptr) seg←v22952 ))+22) );
            (void) ( *( (fPt) ((*  (ptr) pd448 ))))((word) &var←c74100, seg←v22952, circle←v12128, pd448);
            };
         thisCount←v22768 = var←c74100.f1;
         thesePoints←v22740 = var←c74100.f0;
         };
SOURCE(31772, 102)
      {
         register word list←v22996;
         list←v22996 = thesePoints←v22740;
         lab←L100078: ;
         if ((list←v22996 != 0)) {
            }
         else {
            goto lab←L100075;
            };
SOURCE(31841, 33)
         {
            word var←c74132;
            var←c74132 = XR←NewObject(12, (* (( (ptr) gf←c76468)+21) ));
            (*  (W2Pt) var←c74132 ) = (*  (W2Pt) list←v22996 );
            (* (( (ptr) var←c74132)+2) ) = points←v12172;
            points←v12172 = var←c74132;
            };
         list←v22996 = (* (( (ptr) list←v22996)+2) );
         goto lab←L100078;
         lab←L100075: ;
         };
SOURCE(31885, 35)
      pointCount←v12200 = SGNCK((pointCount←v12200 + thisCount←v22768));
      {
         word pd449;
         pd449 = (* (( (ptr) (* (( (ptr) gf←c76468)+180)/* var←c70900 */  ))+46) );
         seg←v22952 = (word) ( *( (fPt) ((*  (ptr) pd449 ))))(segGen←v22712, pd449);
         };
      goto lab←L100074;
      lab←L100071: ;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0517 ) = points←v12172;
   (* (( (ptr) formal←c0517)+1) ) = pointCount←v12200;
   return;
   }

static word TrajHitDataAsSimpleCurve←P1800(slice←v12344, hitData←v12372)
   word slice←v12344;
   word hitData←v12372;
   {
   register ptr gf←c76500 =  (ptr) &globalframe;
   word simpleCurve←v12428;
   word trajHitData←v23124;
   /* TrajHitDataAsSimpleCurve: */ 
SOURCE(31935, 383)
SOURCE(31935, 383)
   simpleCurve←v12428 = 0;
SOURCE(32034, 42)
   trajHitData←v23124 = XR←Narrow(hitData←v12372, (* (( (ptr) gf←c76500)+13) ));
SOURCE(32078, 240)
   {
      word var←c74164;
      var←c74164 = (*  (ptr) trajHitData←v23124 );
      switch (var←c74164) {
         case 1: case 2: case 4: 
SOURCE(32143, 11)
            return(0);
         case 3: 
SOURCE(32167, 153)
            {
               word segNum←v23168;
               word seg←v23196;
SOURCE(32169, 32)
               segNum←v23168 = (* (( (ptr) trajHitData←v23124)+1) );
SOURCE(32203, 49)
               {
                  word pd450;
                  pd450 = (* (( (ptr) (* (( (ptr) gf←c76500)+177)/* var←c70676 */  ))+29) );
                  seg←v23196 = (word) ( *( (fPt) ((*  (ptr) pd450 ))))(slice←v12344, SGNCK(segNum←v23168), pd450);
                  };
SOURCE(32254, 64)
               {
                  word pd451;
                  pd451 = (* (( (ptr) (*  (ptr) seg←v23196 ))+23) );
                  simpleCurve←v12428 = (word) ( *( (fPt) ((*  (ptr) pd451 ))))(seg←v23196, (*  (W2Pt) (( (ptr) trajHitData←v23124)+4) ), pd451)
                  ;
                  };
               };
            break;
         default: 
SOURCE(32334, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(31935, 383)
   return(simpleCurve←v12428);
   }

static void TrajSetDefaults←P1860(slice←v12500, parts←v12528, defaults←v12556, history←v12584)
   word slice←v12500;
   word parts←v12528;
   word defaults←v12556;
   word history←v12584;
   {
   register ptr gf←c76532 =  (ptr) &globalframe;
   /* TrajSetDefaults: */ 
SOURCE(32345, 516)
SOURCE(32451, 71)
   {
      word var←c74196;
      word pd452;
      pd452 = (* (( (ptr) (* (( (ptr) gf←c76532)+189)/* var←c72628 */  ))+53) );
      var←c74196 = (word) ( *( (fPt) ((*  (ptr) pd452 ))))(slice←v12500, parts←v12528, (*  (ptr) defaults←v12556 ), 0, pd452);
      };
SOURCE(32524, 66)
   {
      word pd453;
      pd453 = (* (( (ptr) (* (( (ptr) gf←c76532)+189)/* var←c72628 */  ))+57) );
      (void) ( *( (fPt) ((*  (ptr) pd453 ))))(slice←v12500, parts←v12528, (* (( (ptr) defaults←v12556)+1) ), 0, pd453);
      };
SOURCE(32592, 62)
   {
      word pd454;
      pd454 = (* (( (ptr) (* (( (ptr) gf←c76532)+189)/* var←c72628 */  ))+55) );
      (void) ( *( (fPt) ((*  (ptr) pd454 ))))(slice←v12500, parts←v12528, (* (( (ptr) defaults←v12556)+2) ), 0, pd454);
      };
SOURCE(32656, 131)
   {
      word var←c74228;
      {
         word pd455;
         pd455 = (* (( (ptr) (* (( (ptr) gf←c76532)+179)/* var←c70868 */  ))+37) );
         var←c74228 = (word) ( *( (fPt) ((*  (ptr) pd455 ))))((* ((( (ptr) defaults←v12556)+4)) ), pd455);
         };
      {
         word pd456;
         pd456 = (* (( (ptr) (* (( (ptr) gf←c76532)+189)/* var←c72628 */  ))+65) );
         (void) ( *( (fPt) ((*  (ptr) pd456 ))))(slice←v12500, parts←v12528, (* (( (ptr) defaults←v12556)+3) ), var←c74228, (* (( (ptr) defaults←v12556)+5)
             ), (* (( (ptr) defaults←v12556)+6) )
            , 0, pd456);
         };
      };
SOURCE(32789, 72)
   {
      word pd457;
      pd457 = (* (( (ptr) (* (( (ptr) gf←c76532)+189)/* var←c72628 */  ))+59) );
      (void) ( *( (fPt) ((*  (ptr) pd457 ))))(slice←v12500, parts←v12528, (* (( (ptr) defaults←v12556)+7) ), (* (( (ptr) gf←c76532)+52)
          ), 0, pd457);
      };
   }

static word TrajSetStrokeWidth←P1920(slice←v12644, parts←v12672, strokeWidth←v12700, history←v12728)
   word slice←v12644;
   word parts←v12672;
   word strokeWidth←v12700;
   word history←v12728;
   {
   register ptr gf←c76564 =  (ptr) &globalframe;
   word box←v12772;
   word bBoxes←v23240 = 0;
   word thisBox←v23268 = 0;
   word trajParts←v23296;
   word trajData←v23324;
   word segGen←v23352;
   /* TrajSetStrokeWidth: */ 
SOURCE(32867, 705)
SOURCE(32867, 705)
   box←v12772 = 0;
SOURCE(33041, 36)
   trajParts←v23296 = XR←Narrow(parts←v12672, (* (( (ptr) gf←c76564)+12) ));
SOURCE(33079, 39)
   trajData←v23324 = XR←Narrow((* (( (ptr) slice←v12644)+1) ), (* (( (ptr) gf←c76564)+11) ));
SOURCE(33120, 136)
   {
      word tc458;
      word pd459;
      word pd460;
      if ((parts←v12672 != 0)) {
         pd459 = (* (( (ptr) (* (( (ptr) gf←c76564)+180)/* var←c70900 */  ))+42) );
         tc458 =  (word) ( *( (fPt) ((*  (ptr) pd459 ))))(trajData←v23324, trajParts←v23296, pd459);
         }
      else {
         pd460 = (* (( (ptr) (* (( (ptr) gf←c76564)+180)/* var←c70900 */  ))+40) );
         tc458 =  (word) ( *( (fPt) ((*  (ptr) pd460 ))))(trajData←v23324, pd460);
         };
      segGen←v23352 = tc458;
      };
SOURCE(33258, 230)
   {
      register word seg←v23480;
      {
         word pd461;
         pd461 = (* (( (ptr) (* (( (ptr) gf←c76564)+180)/* var←c70900 */  ))+46) );
         seg←v23480 = (word) ( *( (fPt) ((*  (ptr) pd461 ))))(segGen←v23352, pd461);
         };
      lab←L100082: ;
      if ((seg←v23480 != 0)) {
         }
      else {
         goto lab←L100079;
         };
SOURCE(33359, 42)
      {
         word pd462;
         pd462 = (* (( (ptr) (*  (ptr) seg←v23480 ))+28) );
         (void) ( *( (fPt) ((*  (ptr) pd462 ))))(seg←v23480, strokeWidth←v12700, pd462);
         };
SOURCE(33403, 33)
      {
         word pd463;
         pd463 = (* (( (ptr) (*  (ptr) seg←v23480 ))+1) );
         thisBox←v23268 = (word) ( *( (fPt) ((*  (ptr) pd463 ))))(seg←v23480, pd463);
         };
SOURCE(33438, 50)
      if ((thisBox←v23268 != 0)) {
SOURCE(33458, 30)
         {
            word var←c74260;
            var←c74260 = XR←NewObject(8, (* (( (ptr) gf←c76564)+20) ));
            (*  (ptr) var←c74260 ) = thisBox←v23268;
            (* (( (ptr) var←c74260)+1) ) = bBoxes←v23240;
            bBoxes←v23240 = var←c74260;
            };
         };
      {
         word pd464;
         pd464 = (* (( (ptr) (* (( (ptr) gf←c76564)+180)/* var←c70900 */  ))+46) );
         seg←v23480 = (word) ( *( (fPt) ((*  (ptr) pd464 ))))(segGen←v23352, pd464);
         };
      goto lab←L100082;
      lab←L100079: ;
      };
SOURCE(33499, 40)
   {
      word pd465;
      pd465 = (* (( (ptr) (* (( (ptr) gf←c76564)+190)/* var←c72852 */  ))+8) );
      box←v12772 = (word) ( *( (fPt) ((*  (ptr) pd465 ))))(bBoxes←v23240, pd465);
      };
SOURCE(33541, 31)
   {
      word pd466;
      pd466 = (* (( (ptr) (* (( (ptr) gf←c76564)+176)/* var←c70644 */  ))+69) );
      (void) ( *( (fPt) ((*  (ptr) pd466 ))))(slice←v12644, pd466);
      };
SOURCE(32867, 705)
   return(box←v12772);
   }

static void TrajGetStrokeWidth←P1980(formal←c0552, slice←v12832, parts←v12860)
   word formal←c0552;
   word slice←v12832;
   word parts←v12860;
   {
   W8 var←c76596;
   register ptr gf←c76628 =  (ptr) &globalframe;
   /* declaration of strokeWidth←v12904 skipped */ 
   word isUnique←v12932;
   /* declaration of var←c74292 skipped */ 
   word trajParts←v23524;
   word trajData←v23552;
   /* declaration of found←v23580 skipped */ 
   word aborted←v23608 = 0;
   /* TrajGetStrokeWidth: */ 
SOURCE(33578, 753)
   {
      word tmpAddr467;
      tmpAddr467 = (word) (( (ptr) &var←c76596)+5)/* var←c74292 */ ;
      (*  (ptr) tmpAddr467 ) = ( ((word)  (fPt) DoCheckWidth←P5040) );
      (* (( (ptr) tmpAddr467) + 1) ) = 1;
      };
SOURCE(33578, 753)
   var←c76596.f4/* strokeWidth←v12904 */  = (*  (ptr) &fc90 );
SOURCE(33578, 753)
   isUnique←v12932 = 1;
SOURCE(33699, 36)
   trajParts←v23524 = XR←Narrow(parts←v12860, (* (( (ptr) gf←c76628)+12) ));
SOURCE(33737, 39)
   trajData←v23552 = XR←Narrow((* (( (ptr) slice←v12832)+1) ), (* (( (ptr) gf←c76628)+11) ));
SOURCE(33778, 28)
   var←c76596.f7/* found←v23580 */  = 0;
SOURCE(33808, 523)
   {
      word pd469;
      if ((parts←v12860 == 0)) { goto then0468;};
      pd469 = (* (( (ptr) (* (( (ptr) gf←c76628)+180)/* var←c70900 */  ))+44) );
      if (((word) ( *( (fPt) ((*  (ptr) pd469 ))))(trajData←v23552, trajParts←v23524, pd469) > 0)) {
         then0468: ;
SOURCE(33891, 415)
SOURCE(34115, 165)
         if ((parts←v12860 != 0)) {
SOURCE(34133, 84)
            {
               word pd470;
               pd470 = (* (( (ptr) (* (( (ptr) gf←c76628)+180)/* var←c70900 */  ))+43) );
               aborted←v23608 = (word) ( *( (fPt) ((*  (ptr) pd470 ))))(trajData←v23552, trajParts←v23524, (word) (( (bPt) &var←c76596)+20)
                  /* var←c74292 */ , pd470);
               };
            }
         else {
SOURCE(34217, 63)
            {
               word pd471;
               pd471 = (* (( (ptr) (* (( (ptr) gf←c76628)+180)/* var←c70900 */  ))+41) );
               aborted←v23608 = (word) ( *( (fPt) ((*  (ptr) pd471 ))))(trajData←v23552, (word) (( (bPt) &var←c76596)+20)/* var←c74292 */ , pd471)
               ;
               };
            };
SOURCE(34282, 22)
         isUnique←v12932 =  (unsigned) (0 == aborted←v23608);
         }
      else {
SOURCE(34315, 16)
         isUnique←v12932 = 0;
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0552 ) = var←c76596.f4/* strokeWidth←v12904 */ ;
   (* (( (ptr) formal←c0552)+1) ) = isUnique←v12932;
   return;
   }

static word DoCheckWidth←P5040(traj←v23728, seg←v23756, index←v23784, formal←c76660)
   word traj←v23728;
   word seg←v23756;
   word index←v23784;
   word formal←c76660;
   {
   word done←v23828;
   formal←c76660 = (formal←c76660 - 20);
   /* DoCheckWidth: */ 
SOURCE(33893, 20)
SOURCE(33893, 20)
   done←v23828 = 0;
SOURCE(33988, 119)
   if ((0 != (* (( (ptr) formal←c76660)+7) ))) {
SOURCE(34004, 49)
      {
         word x472;
         word x473;
         if (((
            x472 = (* (( (ptr) seg←v23756)+2) ),  *(float*)&x472
            ) != (
            x473 = (* (( (ptr) formal←c76660)+4) ),  *(float*)&x473
            ))) {
SOURCE(34042, 11)
            done←v23828 = 1;
            };
         };
      }
   else {
SOURCE(34064, 12)
      (* (( (ptr) formal←c76660)+7) ) = 1;
SOURCE(34078, 29)
      (* (( (ptr) formal←c76660)+4) ) = (* (( (ptr) seg←v23756)+2) );
      };
SOURCE(33893, 20)
   return(done←v23828);
   }

static void TrajSetStrokeEnd←P2040(slice←v12992, parts←v13020, strokeEnd←v13048, history←v13076)
   word slice←v12992;
   word parts←v13020;
   word strokeEnd←v13048;
   word history←v13076;
   {
   register ptr gf←c76692 =  (ptr) &globalframe;
   word trajParts←v23856;
   word trajData←v23884;
   word segGen←v23912;
   /* TrajSetStrokeEnd: */ 
SOURCE(34340, 449)
SOURCE(34446, 36)
   trajParts←v23856 = XR←Narrow(parts←v13020, (* (( (ptr) gf←c76692)+12) ));
SOURCE(34484, 39)
   trajData←v23884 = XR←Narrow((* (( (ptr) slice←v12992)+1) ), (* (( (ptr) gf←c76692)+11) ));
SOURCE(34525, 136)
   {
      word tc474;
      word pd475;
      word pd476;
      if ((parts←v13020 != 0)) {
         pd475 = (* (( (ptr) (* (( (ptr) gf←c76692)+180)/* var←c70900 */  ))+42) );
         tc474 =  (word) ( *( (fPt) ((*  (ptr) pd475 ))))(trajData←v23884, trajParts←v23856, pd475);
         }
      else {
         pd476 = (* (( (ptr) (* (( (ptr) gf←c76692)+180)/* var←c70900 */  ))+40) );
         tc474 =  (word) ( *( (fPt) ((*  (ptr) pd476 ))))(trajData←v23884, pd476);
         };
      segGen←v23912 = tc474;
      };
SOURCE(34663, 126)
   {
      register word seg←v23956;
      {
         word pd477;
         pd477 = (* (( (ptr) (* (( (ptr) gf←c76692)+180)/* var←c70900 */  ))+46) );
         seg←v23956 = (word) ( *( (fPt) ((*  (ptr) pd477 ))))(segGen←v23912, pd477);
         };
      lab←L100087: ;
      if ((seg←v23956 != 0)) {
         }
      else {
         goto lab←L100084;
         };
SOURCE(34764, 25)
      (* (( (ptr) seg←v23956)+3) ) = strokeEnd←v13048;
      {
         word pd478;
         pd478 = (* (( (ptr) (* (( (ptr) gf←c76692)+180)/* var←c70900 */  ))+46) );
         seg←v23956 = (word) ( *( (fPt) ((*  (ptr) pd478 ))))(segGen←v23912, pd478);
         };
      goto lab←L100087;
      lab←L100084: ;
      };
   }

static void TrajGetStrokeEnd←P2100(formal←c0574, slice←v13136, parts←v13164)
   word formal←c0574;
   word slice←v13136;
   word parts←v13164;
   {
   W8 var←c76724;
   register ptr gf←c76756 =  (ptr) &globalframe;
   /* declaration of strokeEnd←v13208 skipped */ 
   word isUnique←v13236;
   /* declaration of var←c74324 skipped */ 
   word trajParts←v24000;
   word trajData←v24028;
   /* declaration of found←v24056 skipped */ 
   word aborted←v24084 = 0;
   /* TrajGetStrokeEnd: */ 
SOURCE(34804, 741)
   {
      word tmpAddr479;
      tmpAddr479 = (word) (( (ptr) &var←c76724)+5)/* var←c74324 */ ;
      (*  (ptr) tmpAddr479 ) = ( ((word)  (fPt) DoCheckEnd←P5196) );
      (* (( (ptr) tmpAddr479) + 1) ) = 1;
      };
SOURCE(34804, 741)
   var←c76724.f4/* strokeEnd←v13208 */  = 2;
SOURCE(34804, 741)
   isUnique←v13236 = 1;
SOURCE(34927, 36)
   trajParts←v24000 = XR←Narrow(parts←v13164, (* (( (ptr) gf←c76756)+12) ));
SOURCE(34965, 39)
   trajData←v24028 = XR←Narrow((* (( (ptr) slice←v13136)+1) ), (* (( (ptr) gf←c76756)+11) ));
SOURCE(35006, 28)
   var←c76724.f7/* found←v24056 */  = 0;
SOURCE(35036, 509)
   {
      word pd481;
      if ((parts←v13164 == 0)) { goto then0480;};
      pd481 = (* (( (ptr) (* (( (ptr) gf←c76756)+180)/* var←c70900 */  ))+44) );
      if (((word) ( *( (fPt) ((*  (ptr) pd481 ))))(trajData←v24028, trajParts←v24000, pd481) > 0)) {
         then0480: ;
SOURCE(35119, 401)
SOURCE(35333, 161)
         if ((parts←v13164 != 0)) {
SOURCE(35351, 82)
            {
               word pd482;
               pd482 = (* (( (ptr) (* (( (ptr) gf←c76756)+180)/* var←c70900 */  ))+43) );
               aborted←v24084 = (word) ( *( (fPt) ((*  (ptr) pd482 ))))(trajData←v24028, trajParts←v24000, (word) (( (bPt) &var←c76724)+20)
                  /* var←c74324 */ , pd482);
               };
            }
         else {
SOURCE(35433, 61)
            {
               word pd483;
               pd483 = (* (( (ptr) (* (( (ptr) gf←c76756)+180)/* var←c70900 */  ))+41) );
               aborted←v24084 = (word) ( *( (fPt) ((*  (ptr) pd483 ))))(trajData←v24028, (word) (( (bPt) &var←c76724)+20)/* var←c74324 */ , pd483)
               ;
               };
            };
SOURCE(35496, 22)
         isUnique←v13236 =  (unsigned) (0 == aborted←v24084);
         }
      else {
SOURCE(35529, 16)
         isUnique←v13236 = 0;
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0574 ) = var←c76724.f4/* strokeEnd←v13208 */ ;
   (* (( (ptr) formal←c0574)+1) ) = isUnique←v13236;
   return;
   }

static word DoCheckEnd←P5196(traj←v24204, seg←v24232, index←v24260, formal←c76788)
   word traj←v24204;
   word seg←v24232;
   word index←v24260;
   word formal←c76788;
   {
   word done←v24304;
   formal←c76788 = (formal←c76788 - 20);
   /* DoCheckEnd: */ 
SOURCE(35121, 18)
SOURCE(35121, 18)
   done←v24304 = 0;
SOURCE(35214, 111)
   if ((0 != (* (( (ptr) formal←c76788)+7) ))) {
SOURCE(35230, 45)
      if (((* (( (ptr) seg←v24232)+3) ) != (* (( (ptr) formal←c76788)+4) ))) {
SOURCE(35264, 11)
         done←v24304 = 1;
         };
      }
   else {
SOURCE(35286, 12)
      (* (( (ptr) formal←c76788)+7) ) = 1;
SOURCE(35300, 25)
      (* (( (ptr) formal←c76788)+4) ) = (* (( (ptr) seg←v24232)+3) );
      };
SOURCE(35121, 18)
   return(done←v24304);
   }

static void TrajSetStrokeJoint←P2160(slice←v13296, parts←v13324, strokeJoint←v13352, history←v13380)
   word slice←v13296;
   word parts←v13324;
   word strokeJoint←v13352;
   word history←v13380;
   {
   register ptr gf←c76820 =  (ptr) &globalframe;
   word trajData←v24332;
   /* TrajSetStrokeJoint: */ 
SOURCE(35554, 187)
SOURCE(35666, 39)
   trajData←v24332 = XR←Narrow((* (( (ptr) slice←v13296)+1) ), (* (( (ptr) gf←c76820)+11) ));
SOURCE(35707, 34)
   (* (( (ptr) trajData←v24332)+6) ) = strokeJoint←v13352;
   }

static void TrajGetStrokeJoint←P2220(formal←c0590, slice←v13440, parts←v13468)
   word formal←c0590;
   word slice←v13440;
   word parts←v13468;
   {
   register ptr gf←c76852 =  (ptr) &globalframe;
   word strokeJoint←v13512;
   word isUnique←v13540;
   word trajData←v24376;
   /* TrajGetStrokeJoint: */ 
SOURCE(35747, 190)
SOURCE(35747, 190)
   isUnique←v13540 = 1;
SOURCE(35868, 39)
   trajData←v24376 = XR←Narrow((* (( (ptr) slice←v13440)+1) ), (* (( (ptr) gf←c76852)+11) ));
SOURCE(35909, 28)
   strokeJoint←v13512 = (* (( (ptr) trajData←v24376)+6) );
   isUnique←v13540 = 1;
   /* removed tail goto */ 
   (*  (ptr) formal←c0590 ) = strokeJoint←v13512;
   (* (( (ptr) formal←c0590)+1) ) = isUnique←v13540;
   return;
   }

static void TrajSetStrokeColor←P2280(slice←v13600, parts←v13628, color←v13656, setHow←v13684, history←v13712)
   word slice←v13600;
   word parts←v13628;
   word color←v13656;
   word setHow←v13684;
   word history←v13712;
   {
   register ptr gf←c76884 =  (ptr) &globalframe;
   word trajParts←v24420;
   word trajData←v24448;
   word segGen←v24476;
   /* TrajSetStrokeColor: */ 
SOURCE(35943, 571)
SOURCE(36057, 36)
   trajParts←v24420 = XR←Narrow(parts←v13628, (* (( (ptr) gf←c76884)+12) ));
SOURCE(36095, 39)
   trajData←v24448 = XR←Narrow((* (( (ptr) slice←v13600)+1) ), (* (( (ptr) gf←c76884)+11) ));
SOURCE(36136, 136)
   {
      word tc484;
      word pd485;
      word pd486;
      if ((parts←v13628 != 0)) {
         pd485 = (* (( (ptr) (* (( (ptr) gf←c76884)+180)/* var←c70900 */  ))+42) );
         tc484 =  (word) ( *( (fPt) ((*  (ptr) pd485 ))))(trajData←v24448, trajParts←v24420, pd485);
         }
      else {
         pd486 = (* (( (ptr) (* (( (ptr) gf←c76884)+180)/* var←c70900 */  ))+40) );
         tc484 =  (word) ( *( (fPt) ((*  (ptr) pd486 ))))(trajData←v24448, pd486);
         };
      segGen←v24476 = tc484;
      };
SOURCE(36274, 240)
   {
      register word seg←v24520;
      {
         word pd487;
         pd487 = (* (( (ptr) (* (( (ptr) gf←c76884)+180)/* var←c70900 */  ))+46) );
         seg←v24520 = (word) ( *( (fPt) ((*  (ptr) pd487 ))))(segGen←v24476, pd487);
         };
      lab←L100093: ;
      if ((seg←v24520 != 0)) {
         }
      else {
         goto lab←L100090;
         };
SOURCE(36375, 139)
      {
         word var←c74388;
         var←c74388 = setHow←v13684;
         if ((var←c74388 == (* (( (ptr) gf←c76884)+52) ))) {
SOURCE(36402, 17)
            (* (( (ptr) seg←v24520)+8) ) = color←v13656;
            }
         else {
            if ((var←c74388 == (* (( (ptr) gf←c76884)+54) ))) {
SOURCE(36435, 81)
               {
                  word newColor←v24564;
SOURCE(36437, 55)
                  {
                     word pd488;
                     pd488 = (* (( (ptr) (* (( (ptr) gf←c76884)+179)/* var←c70868 */  ))+36) );
                     newColor←v24564 = (word) ( *( (fPt) ((*  (ptr) pd488 ))))((* (( (ptr) seg←v24520)+8) ), color←v13656, pd488);
                     };
SOURCE(36494, 20)
                  (* (( (ptr) seg←v24520)+8) ) = newColor←v24564;
                  };
               }
            else {
SOURCE(36530, 5)
               (void) XR←RaiseUnnamedError();
               };
            };
         };
      {
         word pd489;
         pd489 = (* (( (ptr) (* (( (ptr) gf←c76884)+180)/* var←c70900 */  ))+46) );
         seg←v24520 = (word) ( *( (fPt) ((*  (ptr) pd489 ))))(segGen←v24476, pd489);
         };
      goto lab←L100093;
      lab←L100090: ;
      };
   }

static void TrajGetStrokeColor←P2340(formal←c0618, slice←v13772, parts←v13800)
   word formal←c0618;
   word slice←v13772;
   word parts←v13800;
   {
   W8 var←c76916;
   register ptr gf←c76948 =  (ptr) &globalframe;
   /* declaration of color←v13844 skipped */ 
   word isUnique←v13872;
   /* declaration of var←c74420 skipped */ 
   word trajParts←v24608;
   word trajData←v24636;
   /* declaration of found←v24664 skipped */ 
   word aborted←v24692 = 0;
   /* TrajGetStrokeColor: */ 
SOURCE(36550, 1262)
   {
      word tmpAddr490;
      tmpAddr490 = (word) (( (ptr) &var←c76916)+5)/* var←c74420 */ ;
      (*  (ptr) tmpAddr490 ) = ( ((word)  (fPt) DoCheckColor←P5400) );
      (* (( (ptr) tmpAddr490) + 1) ) = 1;
      };
SOURCE(36550, 1262)
   var←c76916.f4/* color←v13844 */  = 0;
SOURCE(36550, 1262)
   isUnique←v13872 = 1;
SOURCE(36659, 36)
   trajParts←v24608 = XR←Narrow(parts←v13800, (* (( (ptr) gf←c76948)+12) ));
SOURCE(36697, 39)
   trajData←v24636 = XR←Narrow((* (( (ptr) slice←v13772)+1) ), (* (( (ptr) gf←c76948)+11) ));
SOURCE(36738, 28)
   var←c76916.f7/* found←v24664 */  = 0;
SOURCE(36768, 1044)
   {
      word pd492;
      if ((parts←v13800 == 0)) { goto then0491;};
      pd492 = (* (( (ptr) (* (( (ptr) gf←c76948)+180)/* var←c70900 */  ))+44) );
      if (((word) ( *( (fPt) ((*  (ptr) pd492 ))))(trajData←v24636, trajParts←v24608, pd492) > 0)) {
         then0491: ;
SOURCE(36851, 422)
SOURCE(37082, 165)
         if ((parts←v13800 != 0)) {
SOURCE(37100, 84)
            {
               word pd493;
               pd493 = (* (( (ptr) (* (( (ptr) gf←c76948)+180)/* var←c70900 */  ))+43) );
               aborted←v24692 = (word) ( *( (fPt) ((*  (ptr) pd493 ))))(trajData←v24636, trajParts←v24608, (word) (( (bPt) &var←c76916)+20)
                  /* var←c74420 */ , pd493);
               };
            }
         else {
SOURCE(37184, 63)
            {
               word pd494;
               pd494 = (* (( (ptr) (* (( (ptr) gf←c76948)+180)/* var←c70900 */  ))+41) );
               aborted←v24692 = (word) ( *( (fPt) ((*  (ptr) pd494 ))))(trajData←v24636, (word) (( (bPt) &var←c76916)+20)/* var←c74420 */ , pd494)
               ;
               };
            };
SOURCE(37249, 22)
         isUnique←v13872 =  (unsigned) (0 == aborted←v24692);
         }
      else {
SOURCE(37280, 549)
         {
            word success←v24940 = 0;
            word partType←v24968;
            word jointNum←v24996;
            word seg←v25024 = 0;
SOURCE(37358, 454)
            if (((* (( (ptr) trajParts←v24608)+4) ) > 0)) {
SOURCE(37393, 112)
               {
                  W10 var←c74452;
                  {
                     word pd495;
                     pd495 = (* (( (ptr) (* (( (ptr) gf←c76948)+180)/* var←c70900 */  ))+36) );
                     (void) ( *( (fPt) ((*  (ptr) pd495 ))))((word) &var←c74452, slice←v13772, parts←v13800, pd495);
                     };
                  seg←v25024 = (* (( (ptr) &var←c74452)+8) );
                  jointNum←v24996 = (* (( (ptr) &var←c74452)+4) );
                  partType←v24968 = (* (( (ptr) &var←c74452)+1) );
                  success←v24940 = (*  (ptr) &var←c74452 );
                  };
SOURCE(37507, 305)
               if ((0 != success←v24940)) {
SOURCE(37525, 287)
                  {
                     word var←c74484;
                     var←c74484 = partType←v24968;
                     switch (var←c74484) {
                        case 1: 
SOURCE(37557, 205)
                           if (((* (( (ptr) trajData←v24636)+1) ) > 0)) {
SOURCE(37589, 173)
/*1*/   {
/*1*/      word pd496;
/*1*/      pd496 = (* (( (ptr) (* (( (ptr) gf←c76948)+177)/* var←c70676 */  ))+38) );
/*1*/      if ((jointNum←v24996 <= (word) ( *( (fPt) ((*  (ptr) pd496 ))))(trajData←v24636, pd496))) {
SOURCE(37640, 63)
/*1*/         {
/*1*/            word pd497;
/*1*/            pd497 = (* (( (ptr) (* (( (ptr) gf←c76948)+177)/* var←c70676 */  ))+30) );
/*1*/            var←c76916.f4/* color←v13844 */  = (* (( (ptr) ( *( (fPt) ((*  (ptr) pd497 ))))(trajData←v24636, jointNum←v24996, pd497))+8)
/*1*/             );
/*1*/            };
/*1*/         }
/*1*/      else {
SOURCE(37703, 59)
/*1*/         {
/*1*/            word pd498;
/*1*/            pd498 = (* (( (ptr) (* (( (ptr) gf←c76948)+177)/* var←c70676 */  ))+30) );
/*1*/            var←c76916.f4/* color←v13844 */  = (* (( (ptr) ( *( (fPt) ((*  (ptr) pd498 ))))(trajData←v24636, SGNCK((jointNum←v24996 - 1))
/*1*/                  , pd498))+8) );
/*1*/            };
/*1*/         };
/*1*/      };
/*1*/   };
                           break;
                        case 2: case 3: 
SOURCE(37795, 17)
                           var←c76916.f4/* color←v13844 */  = (* (( (ptr) seg←v25024)+8) );
                           break;
                        };
                     };
                  };
               };
            };
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0618 ) = var←c76916.f4/* color←v13844 */ ;
   (* (( (ptr) formal←c0618)+1) ) = isUnique←v13872;
   return;
   }

static word DoCheckColor←P5400(traj←v24812, seg←v24840, index←v24868, formal←c77012)
   word traj←v24812;
   word seg←v24840;
   word index←v24868;
   word formal←c77012;
   {
   register ptr gf←c76980 =  (ptr) &globalframe;
   word done←v24912;
   formal←c77012 = (formal←c77012 - 20);
   /* DoCheckColor: */ 
SOURCE(36853, 20)
SOURCE(36853, 20)
   done←v24912 = 0;
SOURCE(36948, 126)
   if ((0 != (* (( (ptr) formal←c77012)+7) ))) {
SOURCE(36964, 68)
      {
         word pd499;
         pd499 = (* (( (ptr) (* (( (ptr) gf←c76980)+178)/* var←c70804 */  ))+35) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd499 ))))((* (( (ptr) seg←v24840)+8) ), (* (( (ptr) formal←c77012)+4) ), pd499))) {
SOURCE(37021, 11)
            done←v24912 = 1;
            };
         };
      }
   else {
SOURCE(37043, 12)
      (* (( (ptr) formal←c77012)+7) ) = 1;
SOURCE(37057, 17)
      (* (( (ptr) formal←c77012)+4) ) = (* (( (ptr) seg←v24840)+8) );
      };
SOURCE(36853, 20)
   return(done←v24912);
   }

static void TrajSetArrows←P2400(slice←v13932, parts←v13960, leftDown←v13988, rightUp←v14016, history←v14044)
   word slice←v13932;
   word parts←v13960;
   word leftDown←v13988;
   word rightUp←v14016;
   word history←v14044;
   {
   register ptr gf←c77044 =  (ptr) &globalframe;
   word trajData←v25068;
   /* TrajSetArrows: */ 
SOURCE(37836, 202)
SOURCE(37942, 39)
   trajData←v25068 = XR←Narrow((* (( (ptr) slice←v13932)+1) ), (* (( (ptr) gf←c77044)+11) ));
SOURCE(37983, 27)
   (* (( (ptr) trajData←v25068)+7) ) = leftDown←v13988;
SOURCE(38012, 26)
   (* (( (ptr) trajData←v25068)+8) ) = rightUp←v14016;
   }

static void TrajGetArrows←P2460(formal←c0635, slice←v14104)
   word formal←c0635;
   word slice←v14104;
   {
   register ptr gf←c77076 =  (ptr) &globalframe;
   word leftDown←v14148;
   word rightUp←v14176;
   word trajData←v25112;
   /* TrajGetArrows: */ 
SOURCE(38044, 164)
SOURCE(38044, 164)
   leftDown←v14148 = 0;
SOURCE(38044, 164)
   rightUp←v14176 = 0;
SOURCE(38125, 39)
   trajData←v25112 = XR←Narrow((* (( (ptr) slice←v14104)+1) ), (* (( (ptr) gf←c77076)+11) ));
SOURCE(38166, 42)
   leftDown←v14148 = (* (( (ptr) trajData←v25112)+7) );
   rightUp←v14176 = (* (( (ptr) trajData←v25112)+8) );
   /* removed tail goto */ 
   (*  (ptr) formal←c0635 ) = leftDown←v14148;
   (* (( (ptr) formal←c0635)+1) ) = rightUp←v14176;
   return;
   }

static void TrajSetDashed←P2520(slice←v14236, parts←v14264, dashed←v14292, pattern←v14320, offset←v14348, length←v14376, history←v14404)
   word slice←v14236;
   word parts←v14264;
   word dashed←v14292;
   word pattern←v14320;
   word offset←v14348;
   word length←v14376;
   word history←v14404;
   {
   register ptr gf←c77108 =  (ptr) &globalframe;
   word trajParts←v25156;
   word trajData←v25184;
   word segGen←v25212;
   /* TrajSetDashed: */ 
SOURCE(38213, 569)
SOURCE(38380, 36)
   trajParts←v25156 = XR←Narrow(parts←v14264, (* (( (ptr) gf←c77108)+12) ));
SOURCE(38418, 39)
   trajData←v25184 = XR←Narrow((* (( (ptr) slice←v14236)+1) ), (* (( (ptr) gf←c77108)+11) ));
SOURCE(38459, 136)
   {
      word tc500;
      word pd501;
      word pd502;
      if ((parts←v14264 != 0)) {
         pd501 = (* (( (ptr) (* (( (ptr) gf←c77108)+180)/* var←c70900 */  ))+42) );
         tc500 =  (word) ( *( (fPt) ((*  (ptr) pd501 ))))(trajData←v25184, trajParts←v25156, pd501);
         }
      else {
         pd502 = (* (( (ptr) (* (( (ptr) gf←c77108)+180)/* var←c70900 */  ))+40) );
         tc500 =  (word) ( *( (fPt) ((*  (ptr) pd502 ))))(trajData←v25184, pd502);
         };
      segGen←v25212 = tc500;
      };
SOURCE(38597, 185)
   {
      register word seg←v25256;
      {
         word pd503;
         pd503 = (* (( (ptr) (* (( (ptr) gf←c77108)+180)/* var←c70900 */  ))+46) );
         seg←v25256 = (word) ( *( (fPt) ((*  (ptr) pd503 ))))(segGen←v25212, pd503);
         };
      lab←L100099: ;
      if ((seg←v25256 != 0)) {
         }
      else {
         goto lab←L100096;
         };
SOURCE(38698, 19)
      (* (( (ptr) seg←v25256)+4) ) = dashed←v14292;
SOURCE(38719, 21)
      (* (( (ptr) seg←v25256)+5) ) = pattern←v14320;
SOURCE(38742, 19)
      (* (( (ptr) seg←v25256)+6) ) = offset←v14348;
SOURCE(38763, 19)
      (* (( (ptr) seg←v25256)+7) ) = length←v14376;
      {
         word pd504;
         pd504 = (* (( (ptr) (* (( (ptr) gf←c77108)+180)/* var←c70900 */  ))+46) );
         seg←v25256 = (word) ( *( (fPt) ((*  (ptr) pd504 ))))(segGen←v25212, pd504);
         };
      goto lab←L100099;
      lab←L100096: ;
      };
   }

static void TrajGetDashed←P2580(formal←c0660, slice←v14464, parts←v14492)
   word formal←c0660;
   word slice←v14464;
   word parts←v14492;
   {
   W11 var←c77140;
   register ptr gf←c77172 =  (ptr) &globalframe;
   /* declaration of dashed←v14536 skipped */ 
   /* declaration of pattern←v14564 skipped */ 
   /* declaration of offset←v14592 skipped */ 
   /* declaration of length←v14620 skipped */ 
   word isUnique←v14648;
   /* declaration of var←c74580 skipped */ 
   word trajParts←v25300;
   word trajData←v25328;
   word segCount←v25356;
   /* declaration of found←v25384 skipped */ 
   word aborted←v25412 = 0;
   /* TrajGetDashed: */ 
SOURCE(38797, 978)
   {
      word tmpAddr505;
      tmpAddr505 = (word) (( (ptr) &var←c77140)+8)/* var←c74580 */ ;
      (*  (ptr) tmpAddr505 ) = ( ((word)  (fPt) DoCheckDashes←P5604) );
      (* (( (ptr) tmpAddr505) + 1) ) = 1;
      };
SOURCE(38797, 978)
   (* (( (ptr) &var←c77140)+4)/* dashed←v14536 */  ) = 0;
SOURCE(38797, 978)
   (* (( (ptr) &var←c77140)+5)/* pattern←v14564 */  ) = 0;
SOURCE(38797, 978)
   (* (( (ptr) &var←c77140)+6)/* offset←v14592 */  ) = (*  (ptr) &fc95 );
SOURCE(38797, 978)
   (* (( (ptr) &var←c77140)+7)/* length←v14620 */  ) = (*  (ptr) &fc95 );
SOURCE(38797, 978)
   isUnique←v14648 = 1;
SOURCE(38962, 36)
   trajParts←v25300 = XR←Narrow(parts←v14492, (* (( (ptr) gf←c77172)+12) ));
SOURCE(39000, 39)
   trajData←v25328 = XR←Narrow((* (( (ptr) slice←v14464)+1) ), (* (( (ptr) gf←c77172)+11) ));
SOURCE(39041, 71)
   {
      word pd506;
      pd506 = (* (( (ptr) (* (( (ptr) gf←c77172)+180)/* var←c70900 */  ))+44) );
      segCount←v25356 = (word) ( *( (fPt) ((*  (ptr) pd506 ))))(trajData←v25328, trajParts←v25300, pd506);
      };
SOURCE(39114, 28)
   (* (( (ptr) &var←c77140)+10)/* found←v25384 */  ) = 0;
SOURCE(39144, 631)
   if ((segCount←v25356 > 0)) {
SOURCE(39165, 568)
SOURCE(39540, 167)
      if ((parts←v14492 != 0)) {
SOURCE(39558, 85)
         {
            word pd507;
            pd507 = (* (( (ptr) (* (( (ptr) gf←c77172)+180)/* var←c70900 */  ))+43) );
            aborted←v25412 = (word) ( *( (fPt) ((*  (ptr) pd507 ))))(trajData←v25328, trajParts←v25300, (word) (( (bPt) &var←c77140)+32)
               /* var←c74580 */ , pd507);
            };
         }
      else {
SOURCE(39643, 64)
         {
            word pd508;
            pd508 = (* (( (ptr) (* (( (ptr) gf←c77172)+180)/* var←c70900 */  ))+41) );
            aborted←v25412 = (word) ( *( (fPt) ((*  (ptr) pd508 ))))(trajData←v25328, (word) (( (bPt) &var←c77140)+32)/* var←c74580 */ , pd508)
            ;
            };
         };
SOURCE(39709, 22)
      isUnique←v14648 =  (unsigned) (0 == aborted←v25412);
      }
   else {
SOURCE(39740, 35)
      (* (( (ptr) &var←c77140)+4)/* dashed←v14536 */  ) = 0;
      (* (( (ptr) &var←c77140)+5)/* pattern←v14564 */  ) = 0;
      (* (( (ptr) &var←c77140)+6)/* offset←v14592 */  ) = (*  (ptr) &fc95 );
      (* (( (ptr) &var←c77140)+7)/* length←v14620 */  ) = (*  (ptr) &fc95 );
      isUnique←v14648 = 0;
      goto lab←L100100;
      };
   /* removed tail goto */ 
   lab←L100100: ;
   (*  (ptr) formal←c0660 ) = (* (( (ptr) &var←c77140)+4)/* dashed←v14536 */  );
   (* (( (ptr) formal←c0660)+1) ) = (* (( (ptr) &var←c77140)+5)/* pattern←v14564 */  );
   (* (( (ptr) formal←c0660)+2) ) = (* (( (ptr) &var←c77140)+6)/* offset←v14592 */  );
   (* (( (ptr) formal←c0660)+3) ) = (* (( (ptr) &var←c77140)+7)/* length←v14620 */  );
   (* (( (ptr) formal←c0660)+4) ) = isUnique←v14648;
   return;
   }

static word DoCheckDashes←P5604(traj←v25532, seg←v25560, index←v25588, formal←c77236)
   word traj←v25532;
   word seg←v25560;
   word index←v25588;
   word formal←c77236;
   {
   register ptr gf←c77204 =  (ptr) &globalframe;
   word done←v25632;
   formal←c77236 = (formal←c77236 - 32);
   /* DoCheckDashes: */ 
SOURCE(39167, 21)
SOURCE(39167, 21)
   done←v25632 = 0;
SOURCE(39263, 269)
   if ((0 != (* (( (ptr) formal←c77236)+10) ))) {
SOURCE(39277, 155)
      {
         word x509;
         word x510;
         word x511;
         word x512;
         word pd513;
         if (((* (( (ptr) seg←v25560)+4) ) != (* (( (ptr) formal←c77236)+4) ))) {
            done←v25632 =  (unsigned) 1;
            }
         else {
            if ((0 != (* (( (ptr) seg←v25560)+4) ))) {
               if (((
                  x509 = (* (( (ptr) seg←v25560)+6) ),  *(float*)&x509
                  ) != (
                  x510 = (* (( (ptr) formal←c77236)+6) ),  *(float*)&x510
                  )) || ((
                  x511 = (* (( (ptr) seg←v25560)+7) ),  *(float*)&x511
                  ) != (
                  x512 = (* (( (ptr) formal←c77236)+7) ),  *(float*)&x512
                  ))) {
                  done←v25632 =  (unsigned) 1;
                  }
               else {
                  pd513 = (* (( (ptr) (* (( (ptr) gf←c77204)+179)/* var←c70868 */  ))+38) );
                  done←v25632 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd513 ))))((* (( (ptr) seg←v25560)+5) ), (* (( (ptr) formal←c77236)+5)
                      ), pd513));
                  };
               }
            else {
               done←v25632 =  (unsigned) 0;
               };
            };
         };
      }
   else {
SOURCE(39434, 12)
      (* (( (ptr) formal←c77236)+10) ) = 1;
SOURCE(39448, 19)
      (* (( (ptr) formal←c77236)+4) ) = (* (( (ptr) seg←v25560)+4) );
SOURCE(39469, 19)
      (* (( (ptr) formal←c77236)+6) ) = (* (( (ptr) seg←v25560)+6) );
SOURCE(39490, 19)
      (* (( (ptr) formal←c77236)+7) ) = (* (( (ptr) seg←v25560)+7) );
SOURCE(39511, 21)
      (* (( (ptr) formal←c77236)+5) ) = (* (( (ptr) seg←v25560)+5) );
      };
SOURCE(39167, 21)
   return(done←v25632);
   }

static word TrajSetOrientation←P2640(slice←v14708, parts←v14736, orientation←v14764, history←v14792)
   word slice←v14708;
   word parts←v14736;
   word orientation←v14764;
   word history←v14792;
   {
   register ptr gf←c77268 =  (ptr) &globalframe;
   word success←v14836;
   word trajData←v25660;
   /* TrajSetOrientation: */ 
SOURCE(39781, 579)
SOURCE(39781, 579)
   success←v14836 = 1;
SOURCE(39924, 39)
   trajData←v25660 = XR←Narrow((* (( (ptr) slice←v14708)+1) ), (* (( (ptr) gf←c77268)+11) ));
SOURCE(39965, 395)
   {
      word var←c74612;
      var←c74612 = orientation←v14764;
      switch (var←c74612) {
         case 0: 
SOURCE(39997, 67)
            {
               word pd514;
               pd514 = (* (( (ptr) (* (( (ptr) gf←c77268)+177)/* var←c70676 */  ))+22) );
               if ((0 == (word) ( *( (fPt) ((*  (ptr) pd514 ))))(slice←v14708, pd514))) {
SOURCE(40039, 25)
                  {
                     word pd515;
                     pd515 = (* (( (ptr) (* (( (ptr) gf←c77268)+177)/* var←c70676 */  ))+21) );
                     (void) ( *( (fPt) ((*  (ptr) pd515 ))))(slice←v14708, pd515);
                     };
                  };
               };
SOURCE(40066, 23)
            (* (( (ptr) trajData←v25660)+9) ) = 1;
            break;
         case 1: 
SOURCE(40145, 63)
            {
               word pd516;
               pd516 = (* (( (ptr) (* (( (ptr) gf←c77268)+177)/* var←c70676 */  ))+22) );
               if ((0 != (word) ( *( (fPt) ((*  (ptr) pd516 ))))(slice←v14708, pd516))) {
SOURCE(40183, 25)
                  {
                     word pd517;
                     pd517 = (* (( (ptr) (* (( (ptr) gf←c77268)+177)/* var←c70676 */  ))+21) );
                     (void) ( *( (fPt) ((*  (ptr) pd517 ))))(slice←v14708, pd517);
                     };
                  };
               };
SOURCE(40210, 24)
            (* (( (ptr) trajData←v25660)+9) ) = 0;
            break;
         case 2: 
SOURCE(40294, 25)
            {
               word pd518;
               pd518 = (* (( (ptr) (* (( (ptr) gf←c77268)+177)/* var←c70676 */  ))+21) );
               (void) ( *( (fPt) ((*  (ptr) pd518 ))))(slice←v14708, pd518);
               };
SOURCE(40321, 39)
            (* (( (ptr) trajData←v25660)+9) ) =  (unsigned) (0 == (* (( (ptr) trajData←v25660)+9) ));
            break;
         default: 
SOURCE(40376, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(39781, 579)
   return(success←v14836);
   }

static void TrajGetOrientation←P2700(formal←c0678, slice←v14896, parts←v14924)
   word formal←c0678;
   word slice←v14896;
   word parts←v14924;
   {
   register ptr gf←c77300 =  (ptr) &globalframe;
   word orientation←v14968;
   word isUnique←v14996;
   word trajData←v25704;
   /* TrajGetOrientation: */ 
SOURCE(40387, 206)
SOURCE(40387, 206)
   isUnique←v14996 = 1;
SOURCE(40508, 39)
   trajData←v25704 = XR←Narrow((* (( (ptr) slice←v14896)+1) ), (* (( (ptr) gf←c77300)+11) ));
SOURCE(40549, 44)
   if ((0 != (* (( (ptr) trajData←v25704)+9) ))) {
      orientation←v14968 = 0;
      }
   else {
      orientation←v14968 = 1;
      };
   isUnique←v14996 = 1;
   /* removed tail goto */ 
   (*  (ptr) formal←c0678 ) = orientation←v14968;
   (* (( (ptr) formal←c0678)+1) ) = isUnique←v14996;
   return;
   }

static word FetchSliceClass←P2760(type←v15056)
   word type←v15056;
   {
   register ptr gf←c77332 =  (ptr) &globalframe;
   word class←v15100;
   /* FetchSliceClass: */ 
SOURCE(40599, 257)
SOURCE(40599, 257)
   class←v15100 = 0;
SOURCE(40673, 114)
   {
      register word l←v25748;
      l←v25748 = (* (( (ptr) gf←c77332)+7)/* sliceClasses←v7144 */  );
      lab←L100105: ;
      if ((l←v25748 != 0)) {
         }
      else {
         goto lab←L100102;
         };
SOURCE(40740, 47)
      if (((*  (ptr) (*  (ptr) l←v25748 ) ) == type←v15056)) {
SOURCE(40766, 21)
         return((* (( (ptr) (*  (ptr) l←v25748 ))+1) ));
         };
      l←v25748 = (* (( (ptr) l←v25748)+1) );
      goto lab←L100105;
      lab←L100102: ;
      };
SOURCE(40798, 45)
   {
      word var←c0682;
      var←c0682 = (* (( (ptr) gf←c77332)+55) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c77332)+4)/* Problem←v5464 */  ), 0, (word) &var←c0682));
      };
SOURCE(40845, 11)
   return(0);
   }

static void RegisterSliceClass←P2820(class←v15160)
   word class←v15160;
   {
   register ptr gf←c77364 =  (ptr) &globalframe;
   word classDef←v25876;
   /* RegisterSliceClass: */ 
SOURCE(40862, 183)
SOURCE(40918, 82)
   classDef←v25876 = XR←NewObject(8, (* (( (ptr) gf←c77364)+19) ));
   (*  (ptr) classDef←v25876 ) = (*  (ptr) class←v15160 );
   (* (( (ptr) classDef←v25876)+1) ) = class←v15160;
SOURCE(41002, 43)
   {
      word var←c74708;
      var←c74708 = XR←NewObject(8, (* (( (ptr) gf←c77364)+18) ));
      (*  (ptr) var←c74708 ) = classDef←v25876;
      (* (( (ptr) var←c74708)+1) ) = (* (( (ptr) gf←c77364)+7)/* sliceClasses←v7144 */  );
      (* (( (ptr) gf←c77364)+7)/* sliceClasses←v7144 */  ) = var←c74708;
      };
   }

static word DescriptorFromParts←P2880(slice←v15220, parts←v15248)
   word slice←v15220;
   word parts←v15248;
   {
   register ptr gf←c77396 =  (ptr) &globalframe;
   word sliceD←v15292;
   /* DescriptorFromParts: */ 
SOURCE(41051, 213)
SOURCE(41051, 213)
   sliceD←v15292 = 0;
SOURCE(41156, 49)
   {
      word var←c74740;
      var←c74740 = XR←NewObject(8, (* (( (ptr) gf←c77396)+17) ));
      (*  (ptr) var←c74740 ) = slice←v15220;
      (* (( (ptr) var←c74740)+1) ) = parts←v15248;
      sliceD←v15292 = var←c74740;
      };
SOURCE(41207, 57)
   if ((0 != (* (( (ptr) gf←c77396)+5)/* testing←v6976 */  ))) {
SOURCE(41223, 41)
      {
         word var←c74772;
         var←c74772 = XR←NewObject(8, (* (( (ptr) gf←c77396)+16) ));
         (*  (ptr) var←c74772 ) = sliceD←v15292;
         (* (( (ptr) var←c74772)+1) ) = (* (( (ptr) gf←c77396)+6)/* masterSDlist←v7004 */  );
         (* (( (ptr) gf←c77396)+6)/* masterSDlist←v7004 */  ) = var←c74772;
         };
      };
SOURCE(41051, 213)
   return(sliceD←v15292);
   }

static void UnlinkAllSliceDescriptors←P2940(list←v15436)
   word list←v15436;
   {
   register ptr gf←c77428 =  (ptr) &globalframe;
   /* UnlinkAllSliceDescriptors: */ 
SOURCE(41376, 319)
SOURCE(41444, 222)
   {
      register word sdList←v25920;
      sdList←v25920 = (* (( (ptr) gf←c77428)+6)/* masterSDlist←v7004 */  );
      lab←L100109: ;
      if ((sdList←v25920 != 0)) {
         }
      else {
         goto lab←L100106;
         };
SOURCE(41528, 31)
      if (((*  (ptr) (*  (ptr) sdList←v25920 ) ) == 0)) {
SOURCE(41559, 4)
         goto lab←L100108;
         };
SOURCE(41565, 75)
      if (((* (( (ptr) (*  (ptr) (*  (ptr) sdList←v25920 ) ))+1) ) != 0)) {
SOURCE(41601, 39)
         {
            word pd519;
            pd519 = (* (( (ptr) (* (( (ptr) gf←c77428)+176)/* var←c70644 */  ))+71) );
            (void) ( *( (fPt) ((*  (ptr) pd519 ))))((*  (ptr) ((*  (ptr) sdList←v25920 )) ), pd519);
            };
         };
SOURCE(41642, 24)
      (*  (ptr) (*  (ptr) sdList←v25920 ) ) = 0;
      lab←L100108: ;
      sdList←v25920 = (* (( (ptr) sdList←v25920)+1) );
      goto lab←L100109;
      lab←L100106: ;
      };
SOURCE(41677, 18)
   (* (( (ptr) gf←c77428)+6)/* masterSDlist←v7004 */  ) = 0;
   }

static void UnlinkSlice←P3000(slice←v15580)
   word slice←v15580;
   {
   /* UnlinkSlice: */ 
SOURCE(41758, 815)
SOURCE(41802, 771)
   if ( ( (slice←v15580 != 0) ? ((* (( (ptr) slice←v15580)+1) ) != 0) : 0 ) ) {
SOURCE(41875, 75)
      if (((* (( (ptr) slice←v15580)+7) ) != 0)) {
SOURCE(41913, 37)
         (*  (ptr) (* (( (ptr) slice←v15580)+7) ) ) = 0;
         };
SOURCE(41952, 69)
      if (((* (( (ptr) slice←v15580)+8) ) != 0)) {
SOURCE(41987, 34)
         (*  (ptr) (* (( (ptr) slice←v15580)+8) ) ) = 0;
         };
SOURCE(42023, 75)
      if (((* (( (ptr) slice←v15580)+9) ) != 0)) {
SOURCE(42061, 37)
         (*  (ptr) (* (( (ptr) slice←v15580)+9) ) ) = 0;
         };
SOURCE(42100, 73)
      if (((* (( (ptr) slice←v15580)+10) ) != 0)) {
SOURCE(42137, 36)
         (*  (ptr) (* (( (ptr) slice←v15580)+10) ) ) = 0;
         };
SOURCE(42175, 65)
      if (((* (( (ptr) slice←v15580)+11) ) != 0)) {
SOURCE(42208, 32)
         (*  (ptr) (* (( (ptr) slice←v15580)+11) ) ) = 0;
         };
SOURCE(42242, 65)
      if (((* (( (ptr) slice←v15580)+12) ) != 0)) {
SOURCE(42275, 32)
         (*  (ptr) (* (( (ptr) slice←v15580)+12) ) ) = 0;
         };
SOURCE(42309, 157)
      (* (( (ptr) slice←v15580)+12) ) = 0;
      (* (( (ptr) slice←v15580)+11) ) = 0;
      (* (( (ptr) slice←v15580)+10) ) = 0;
      (* (( (ptr) slice←v15580)+9) ) = 0;
      (* (( (ptr) slice←v15580)+8) ) = 0;
      (* (( (ptr) slice←v15580)+7) ) = 0;
SOURCE(42468, 17)
      (*  (ptr) slice←v15580 ) = 0;
SOURCE(42488, 16)
      (* (( (ptr) slice←v15580)+1) ) = 0;
SOURCE(42507, 18)
      (* (( (ptr) slice←v15580)+2) ) = 0;
SOURCE(42528, 20)
      (* (( (ptr) slice←v15580)+15) ) = 0;
SOURCE(42553, 20)
      (* (( (ptr) slice←v15580)+13) ) = 0;
      };
   }

static word EntitiesInSlice←P3060(slice←v15640)
   word slice←v15640;
   {
   register ptr gf←c77460 =  (ptr) &globalframe;
   word entityGenerator←v15684;
   /* EntitiesInSlice: */ 
SOURCE(42584, 140)
SOURCE(42584, 140)
   entityGenerator←v15684 = 0;
SOURCE(42674, 50)
   {
      word var←c0696;
      var←c0696 = (* (( (ptr) gf←c77460)+60) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c77460)+4)/* Problem←v5464 */  ), 0, (word) &var←c0696));
      };
SOURCE(42584, 140)
   return(entityGenerator←v15684);
   }

static void Init←P3120()
   {
   register ptr gf←c77492 =  (ptr) &globalframe;
   word textDef←v26048;
   word ipDef←v26076;
   word boxDef←v26104;
   word circleDef←v26132;
   word outlineDef←v26160;
   word clusterDef←v26188;
   word trajDef←v26216;
   /* Init: */ 
SOURCE(42730, 936)
SOURCE(42748, 100)
   {
      word var←c74804;
      word var←c74836;
      {
         word pd520;
         pd520 = (* (( (ptr) (* (( (ptr) gf←c77492)+176)/* var←c70644 */  ))+19) );
         var←c74804 = (word) ( *( (fPt) ((*  (ptr) pd520 ))))(pd520);
         };
      var←c74836 = XR←NewObject(8, (* (( (ptr) gf←c77492)+19) ));
      (*  (ptr) var←c74836 ) = (* (( (ptr) gf←c77492)+61) );
      (* (( (ptr) var←c74836)+1) ) = var←c74804;
      textDef←v26048 = var←c74836;
      };
SOURCE(42850, 94)
   {
      word var←c74868;
      word var←c74900;
      {
         word pd521;
         pd521 = (* (( (ptr) (* (( (ptr) gf←c77492)+176)/* var←c70644 */  ))+54) );
         var←c74868 = (word) ( *( (fPt) ((*  (ptr) pd521 ))))(pd521);
         };
      var←c74900 = XR←NewObject(8, (* (( (ptr) gf←c77492)+19) ));
      (*  (ptr) var←c74900 ) = (* (( (ptr) gf←c77492)+62) );
      (* (( (ptr) var←c74900)+1) ) = var←c74868;
      ipDef←v26076 = var←c74900;
      };
SOURCE(42946, 97)
   {
      word var←c74932;
      word var←c74964;
      {
         word pd522;
         pd522 = (* (( (ptr) (* (( (ptr) gf←c77492)+176)/* var←c70644 */  ))+43) );
         var←c74932 = (word) ( *( (fPt) ((*  (ptr) pd522 ))))(pd522);
         };
      var←c74964 = XR←NewObject(8, (* (( (ptr) gf←c77492)+19) ));
      (*  (ptr) var←c74964 ) = (* (( (ptr) gf←c77492)+63) );
      (* (( (ptr) var←c74964)+1) ) = var←c74932;
      boxDef←v26104 = var←c74964;
      };
SOURCE(43045, 106)
   {
      word var←c74996;
      word var←c75028;
      {
         word pd523;
         pd523 = (* (( (ptr) (* (( (ptr) gf←c77492)+176)/* var←c70644 */  ))+51) );
         var←c74996 = (word) ( *( (fPt) ((*  (ptr) pd523 ))))(pd523);
         };
      var←c75028 = XR←NewObject(8, (* (( (ptr) gf←c77492)+19) ));
      (*  (ptr) var←c75028 ) = (* (( (ptr) gf←c77492)+38) );
      (* (( (ptr) var←c75028)+1) ) = var←c74996;
      circleDef←v26132 = var←c75028;
      };
SOURCE(43153, 109)
   {
      word var←c75060;
      word var←c75092;
      {
         word pd524;
         pd524 = (* (( (ptr) (* (( (ptr) gf←c77492)+176)/* var←c70644 */  ))+64) );
         var←c75060 = (word) ( *( (fPt) ((*  (ptr) pd524 ))))(pd524);
         };
      var←c75092 = XR←NewObject(8, (* (( (ptr) gf←c77492)+19) ));
      (*  (ptr) var←c75092 ) = (* (( (ptr) gf←c77492)+64) );
      (* (( (ptr) var←c75092)+1) ) = var←c75060;
      outlineDef←v26160 = var←c75092;
      };
SOURCE(43264, 109)
   {
      word var←c75124;
      word var←c75156;
      {
         word pd525;
         pd525 = (* (( (ptr) (* (( (ptr) gf←c77492)+176)/* var←c70644 */  ))+17) );
         var←c75124 = (word) ( *( (fPt) ((*  (ptr) pd525 ))))(pd525);
         };
      var←c75156 = XR←NewObject(8, (* (( (ptr) gf←c77492)+19) ));
      (*  (ptr) var←c75156 ) = (* (( (ptr) gf←c77492)+65) );
      (* (( (ptr) var←c75156)+1) ) = var←c75124;
      clusterDef←v26188 = var←c75156;
      };
SOURCE(43375, 100)
   {
      word var←c75188;
      word var←c75220;
      {
         word pd526;
         pd526 = (* (( (ptr) (* (( (ptr) gf←c77492)+176)/* var←c70644 */  ))+62) );
         var←c75188 = (word) ( *( (fPt) ((*  (ptr) pd526 ))))(pd526);
         };
      var←c75220 = XR←NewObject(8, (* (( (ptr) gf←c77492)+19) ));
      (*  (ptr) var←c75220 ) = (* (( (ptr) gf←c77492)+66) );
      (* (( (ptr) var←c75220)+1) ) = var←c75188;
      trajDef←v26216 = var←c75220;
      };
SOURCE(43477, 87)
   {
      word var←c75252;
      word var←c75284;
      var←c75252 = XR←NewObject(8, (* (( (ptr) gf←c77492)+18) ));
      var←c75284 = var←c75252;
      (*  (ptr) var←c75284 ) = trajDef←v26216;
      (* (( (ptr) var←c75284)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c77492)+18) ));
      var←c75284 = (* (( (ptr) var←c75284)+1) );
      (*  (ptr) var←c75284 ) = outlineDef←v26160;
      (* (( (ptr) var←c75284)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c77492)+18) ));
      var←c75284 = (* (( (ptr) var←c75284)+1) );
      (*  (ptr) var←c75284 ) = clusterDef←v26188;
      (* (( (ptr) var←c75284)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c77492)+18) ));
      var←c75284 = (* (( (ptr) var←c75284)+1) );
      (*  (ptr) var←c75284 ) = circleDef←v26132;
      (* (( (ptr) var←c75284)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c77492)+18) ));
      var←c75284 = (* (( (ptr) var←c75284)+1) );
      (*  (ptr) var←c75284 ) = boxDef←v26104;
      (* (( (ptr) var←c75284)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c77492)+18) ));
      var←c75284 = (* (( (ptr) var←c75284)+1) );
      (*  (ptr) var←c75284 ) = ipDef←v26076;
      (* (( (ptr) var←c75284)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c77492)+18) ));
      var←c75284 = (* (( (ptr) var←c75284)+1) );
      (*  (ptr) var←c75284 ) = textDef←v26048;
      (* (( (ptr) gf←c77492)+7)/* sliceClasses←v7144 */  ) = var←c75252;
      };
SOURCE(43567, 48)
   {
      word pd527;
      pd527 = (* (( (ptr) (* (( (ptr) gf←c77492)+183)/* var←c71476 */  ))+5) );
      (* (( (ptr) gf←c77492)+8)/* printPrefix←v7172 */  ) = (word) ( *( (fPt) ((*  (ptr) pd527 ))))((* (( (ptr) gf←c77492)+67) ), 0, 2147483647, pd527)
      ;
      };
SOURCE(43617, 49)
   {
      word pd528;
      pd528 = (* (( (ptr) (* (( (ptr) gf←c77492)+183)/* var←c71476 */  ))+5) );
      (* (( (ptr) gf←c77492)+9)/* screenPrefix←v7200 */  ) = (word) ( *( (fPt) ((*  (ptr) pd528 ))))((* (( (ptr) gf←c77492)+68)
          ), 0, 2147483647, pd528);
      };
   }

/* file: GGSliceImplE, module: GGSliceImplE, compiled at: July 11, 1993 8:18:34 pm PDT */ 
extern void XR←install←GGSliceImplE() {
   NoName←Q5760();
   }
extern void XR←run←GGSliceImplE() { XR←Start(&globalframe); }