/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 11, 1993 8:05:05 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: GGSliceOpsImpl, module: GGSliceOpsImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2199996704,780654301] GGSliceOpsImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef struct {word f0, f1, f2, f3;} W4;
typedef struct {word f0, f1, f2;} W3;
typedef W3 *W3Pt;
typedef W5 *W5Pt;
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {W8 f; W2 r;} W10;
#define SOURCE(p, l) /* source p, l */
static float fc113 = 0.0;
static float fc156 = 8705.14;
static float fc170 = 8906.16;
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static float fc206 = 0.072;
static void NoName←Q6588();
static void GGSliceOpsImpl←P0();
static word GetType←P60();
static word GetBoundBox←P120();
static word GetTransformedBoundBox←P180();
static word GetTightBox←P240();
static word Copy←P300();
static void Restore←P360();
static void Unlink←P420();
static void BuildPath←P480();
static void DrawBorder←P540();
static void DrawParts←P600();
static void DrawTransform←P660();
static void DrawSelectionFeedback←P720();
static void DrawAttractorFeedback←P780();
static word AttractorFeedbackBoundBox←P840();
static void SaveSelections←P900();
static word RemakeSelections←P960();
static void Transform←P1020();
static word Describe←P1080();
static word DescribeHit←P1140();
static void Fileout←P1200();
static word Filein←P1260();
static word IsEmptyParts←P1320();
static word IsCompleteParts←P1380();
static word NewParts←P1440();
static word UnionParts←P1500();
static word DifferenceParts←P1560();
static void MovingParts←P1620();
static word AugmentParts←P1680();
static word AlterParts←P1740();
static void SetSelectedFields←P1800();
static word PointsInDescriptor←P1860();
static void WalkPointsInDescriptor←P1920();
static word PointPairsInDescriptor←P1980();
static word SegmentsInDescriptor←P2040();
static word WalkSegments←P2100();
static void NextPoint←P2160();
static void NextPointPair←P2220();
static void NextSegment←P2280();
static void ClosestPoint←P2340();
static void ClosestJointToHitData←P2400();
static void ClosestPointAndTangent←P2460();
static void ClosestSegment←P2520();
static void FilledPathsUnderPoint←P2580();
static void LineIntersection←P2640();
static void CircleIntersection←P2700();
static word HitDataAsSimpleCurve←P2760();
static void SetDefaults←P2820();
static word SetStrokeWidth←P2880();
static void GetStrokeWidth←P2940();
static void SetStrokeEnd←P3000();
static void GetStrokeEnd←P3060();
static void SetStrokeJoint←P3120();
static void GetStrokeJoint←P3180();
static void SetStrokeColor←P3240();
static void GetStrokeColor←P3300();
static void SetFillColor←P3360();
static void GetFillColor←P3420();
static void SetArrows←P3480();
static void GetArrows←P3540();
static void SetDashed←P3600();
static void GetDashed←P3660();
static word SetOrientation←P3720();
static void GetOrientation←P3780();
static void FileoutSlice←P3840();
static void FileoutPList←P3900();
static word FileoutProp←P4800();
static word FileinSlice←P3960();
static word SliceClassFromRope←P4020();
static void FileinPList←P4080();
static word ReadRopeInBoxcarAndBell←P4140();
static word PartsInBoundBox←P4200();
static word WithinBoundBox←P4260();
static word Within←P5004();
static word IsOpen←P4320();
static void GenericPropsUndo←P4380();
static void Note←P4440();
static void UndoProps←P4500();
static word FixBogusParts←P4560();
static word IsDescriptorOfEnd←P4620();
static void UnpackJoint←P4680();
static void UnpackSegment←P4740();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\122\207\370\054\300\315\202\135\375\100\200\000\000"};
static struct {unsigned f; char r[12];} string2 = {589833, "\007\000\040\003\004\036\004\016\014\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\203\041\111\040\300\056\207\326\335\100\274\000\000"};
static struct {unsigned f; char r[4];} string4 = {65537, "\001\000\000"};
static struct {unsigned f; char r[4];} string5 = {131076, "\216\251\000"};
static struct {unsigned f; char r[4];} string6 = {65540, "\256\000\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300ZT?\010\300\370;=;@t\000\000"};
static struct {unsigned f; char r[20];} string8 = {1048592, "\007\000\040\003\007\040\040\002\003\002\004\074\004\016\004\006\000\000\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\203\041\111\040\300\056\207\326\335\100\200\000\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\252\043\023\037\300\070\056\113\065\100\214\000\000"};
static struct {unsigned f; char r[4];} string11 = {131074, "\003\001\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\203\041\111\040\300\056\207\326\335\100\214\000\000"};
static struct {unsigned f; char r[48];} string13 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\252\043\023\037\300\070\056\113\065\100\214\005\004\162\145\163\164\214\216\257\300\252\043\023\037\300\070\056\113\065\100\214\261\000\000\000"};
static struct {unsigned f; char r[4];} string14 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string15 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[16];} string16 = {851984, "\257\300\203\041\111\040\300\056\207\326\335\100\244\000\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\203\041\111\040\300\056\207\326\335\100\230\000\000"};
static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\203\041\111\040\300\056\207\326\335\100\260\000\000"};
static struct {unsigned f; char r[12];} string19 = {589836, "SetDashed\000\000"};
static struct {unsigned f; char r[16];} string20 = {917520, "SetOrientation\000"};
static struct {unsigned f; char r[12];} string21 = {589836, "SetArrows\000\000"};
static struct {unsigned f; char r[16];} string22 = {786448, "SetFillColor\000\000\000"};
static struct {unsigned f; char r[4];} string23 = {196612, "%g "};
static struct {unsigned f; char r[12];} string24 = {655372, " pList: ( \000"};
static struct {unsigned f; char r[4];} string25 = {131076, ")\012\000"};
static struct {unsigned f; char r[8];} string26 = {262152, "(%g \000\000\000"};
static struct {unsigned f; char r[12];} string27 = {524300, "%g%g%g) \000\000\000"};
static struct {unsigned f; char r[12];} string28 = {589836, "[%g] %g) \000\000"};
static struct {unsigned f; char r[8];} string29 = {262152, "Traj\000\000\000"};
static struct {unsigned f; char r[8];} string30 = {458760, "(class:"};
static struct {unsigned f; char r[4];} string31 = {131076, "]:\000"};
static struct {unsigned f; char r[8];} string32 = {327688, "Data:\000\000"};
static struct {unsigned f; char r[12];} string33 = {524300, "pList: (\000\000\000"};
static struct {unsigned f; char r[4];} string34 = {131076, "] \000"};
static struct {unsigned f; char r[20];} string35 = {1245204, "Not yet implemented"};
static struct {unsigned f; char r[16];} string36 = {917520, "SetStrokeColor\000"};
static struct {unsigned f; char r[16];} string37 = {917520, "SetStrokeJoint\000"};
static struct {unsigned f; char r[16];} string38 = {786448, "SetStrokeEnd\000\000\000"};
static struct {unsigned f; char r[16];} string39 = {917520, "SetStrokeWidth\000"};
static struct {unsigned f; char r[4];} string40 = {196612, "Set"};
static struct {unsigned f; char r[8];} string41 = {458760, "Cluster"};
static struct {unsigned f; char r[8];} string42 = {458760, "Outline"};
static struct {unsigned f; char r[12];} string43 = {589836, "Transform\000\000"};
static struct {unsigned f; char r[16];} string44 = {851984, "\257\300\203\041\111\040\300\056\207\326\335\100\164\000\000"};
static struct {unsigned f; char r[12];} string45 = {589833, "\006\001\100\140\010\000\004\032\001\000\000"};
static struct {unsigned f; char r[16];} string46 = {851984, "\257\300\055\153\222\376\300\327\164\352\142\100\150\000\000"};
static struct {unsigned f; char r[16];} string47 = {851984, "\257\300\322\334\347\304\300\124\107\000\027\100\150\000\000"};
static struct {unsigned f; char r[16];} string48 = {851984, "\257\300\311\023\117\300\300\337\236\305\170\100\150\000\000"};
static struct {unsigned f; char r[16];} string49 = {851984, "\257\300\301\241\007\150\300\032\111\265\237\100\150\000\000"};
static struct {unsigned f; char r[16];} string50 = {851984, "\257\300\236\155\220\261\300\040\017\026\014\100\150\000\000"};
static struct {unsigned f; char r[16];} string51 = {851984, "\257\300\317\075\344\275\300\105\331\241\110\100\150\000\000"};
static struct {unsigned f; char r[16];} string52 = {851984, "\257\300U$)\337\300Xo9\243@t\000\000"};
static struct {unsigned f; char r[8];} string53 = {1195856748, "iceOps"};
static struct {unsigned f; char r[16];} string54 = {851984, "\257\300\336\025\013\356\300\216\115\352\271\100\150\000\000"};
static struct {unsigned f; char r[16];} string55 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\150\000\000"};
static struct {unsigned f; char r[16];} string56 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"};
static struct {unsigned f; char r[16];} string57 = {851984, "\257\300\015\277\004\146\300\034\367\146\045\100\164\000\000"};
static struct {unsigned f; char r[16];} string58 = {851984, "\257\300\332\223\177\020\300\304\076\102\260\100\164\000\000"};
static struct {unsigned f; char r[16];} string59 = {851984, "\257\300\353\320\266\116\300\006\152\040\366\100\150\000\000"};
static struct {unsigned f; char r[16];} string60 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {unsigned f; char r[16];} string61 = {851984, "\257\300\252\043\023\037\300\070\056\113\065\100\150\000\000"};
static struct {unsigned f; char r[20];} string62 = {1245204, "\211\007\006Change\300\252#\023\037\3008.K5"};
static struct {
   word f0[4]; word f4; word f5; word f6; 
   word f7[44]; word f51; word f52; word f53; 
   word f54; word f55; word f56; word f57; 
   word f58; word f59; word f60; word f61; 
   word f62; word f63; word f64; word f65; 
   word f66; word f67; word f68; word f69; 
   word f70; word f71; word f72; word f73; 
   word f74; word f75; word f76; word f77; 
   word f78; word f79; word f80; word f81; 
   word f82; word f83; word f84; word f85; 
   word f86; word f87; word f88; word f89; 
   word f90; word f91; word f92; word f93; 
   word f94; word f95; word f96; word f97; 
   word f98; word f99; word f100; word f101; 
   word f102; word f103; word f104; word f105; 
   word f106; word f107; word f108; word f109; 
   word f110; word f111; word f112; word f113; 
   word f114; word f115; word f116; word f117; 
   word f118; word f119; word f120; word f121; 
   word f122; word f123; word f124; word f125; 
   word f126; word f127; word f128; word f129; 
   word f130; word f131; word f132; word f133; 
   word f134; word f135; word f136; word f137; 
   word f138; word f139; word f140; word f141; 
   word f142; word f143; word f144; word f145; 
   word f146; word f147; word f148; word f149; 
   word f150; word f151; word f152; word f153; 
   word f154; word f155; word f156; word f157; 
   word f158; word f159; word f160; word f161; 
   word f162; word f163; word f164; word f165; 
   word f166; word f167; word f168; word f169; 
   word f170; word f171; word f172; word f173; 
   word f174; word f175; word f176; word f177; 
   word f178; word f179; word f180; word f181; 
   word f182; word f183; word f184; word f185; 
   word f186; word f187; word f188; word f189; 
   word f190; word f191; word f192; word f193; 
   word f194; word f195; word f196; word f197; 
   word f198; word f199; word f200; word f201; 
   word f202; word f203; word f204; word f205; 
   word f206; word f207; word f208; word f209; 
   word f210[17]; 
   } globalframe = {
   {0}, (word) 1, 0, (word) 1, 
   {0}, (word) UnpackSegment←P4740, 0, (word) UnpackJoint←P4680, 
   0, (word) IsDescriptorOfEnd←P4620, 0, (word) FixBogusParts←P4560, 
   0, (word) UndoProps←P4500, 0, (word) Note←P4440, 
   0, (word) GenericPropsUndo←P4380, 0, (word) IsOpen←P4320, 
   0, (word) WithinBoundBox←P4260, 0, (word) PartsInBoundBox←P4200, 
   0, (word) ReadRopeInBoxcarAndBell←P4140, 0, (word) FileinPList←P4080, 
   0, (word) SliceClassFromRope←P4020, 0, (word) FileinSlice←P3960, 
   0, (word) FileoutPList←P3900, 0, (word) FileoutSlice←P3840, 
   0, (word) GetOrientation←P3780, 0, (word) SetOrientation←P3720, 
   0, (word) GetDashed←P3660, 0, (word) SetDashed←P3600, 
   0, (word) GetArrows←P3540, 0, (word) SetArrows←P3480, 
   0, (word) GetFillColor←P3420, 0, (word) SetFillColor←P3360, 
   0, (word) GetStrokeColor←P3300, 0, (word) SetStrokeColor←P3240, 
   0, (word) GetStrokeJoint←P3180, 0, (word) SetStrokeJoint←P3120, 
   0, (word) GetStrokeEnd←P3060, 0, (word) SetStrokeEnd←P3000, 
   0, (word) GetStrokeWidth←P2940, 0, (word) SetStrokeWidth←P2880, 
   0, (word) SetDefaults←P2820, 0, (word) HitDataAsSimpleCurve←P2760, 
   0, (word) CircleIntersection←P2700, 0, (word) LineIntersection←P2640, 
   0, (word) FilledPathsUnderPoint←P2580, 0, (word) ClosestSegment←P2520, 
   0, (word) ClosestPointAndTangent←P2460, 0, (word) ClosestJointToHitData←P2400, 
   0, (word) ClosestPoint←P2340, 0, (word) NextSegment←P2280, 
   0, (word) NextPointPair←P2220, 0, (word) NextPoint←P2160, 
   0, (word) WalkSegments←P2100, 0, (word) SegmentsInDescriptor←P2040, 
   0, (word) PointPairsInDescriptor←P1980, 0, (word) WalkPointsInDescriptor←P1920, 
   0, (word) PointsInDescriptor←P1860, 0, (word) SetSelectedFields←P1800, 
   0, (word) AlterParts←P1740, 0, (word) AugmentParts←P1680, 
   0, (word) MovingParts←P1620, 0, (word) DifferenceParts←P1560, 
   0, (word) UnionParts←P1500, 0, (word) NewParts←P1440, 
   0, (word) IsCompleteParts←P1380, 0, (word) IsEmptyParts←P1320, 
   0, (word) Filein←P1260, 0, (word) Fileout←P1200, 
   0, (word) DescribeHit←P1140, 0, (word) Describe←P1080, 
   0, (word) Transform←P1020, 0, (word) RemakeSelections←P960, 
   0, (word) SaveSelections←P900, 0, (word) AttractorFeedbackBoundBox←P840, 
   0, (word) DrawAttractorFeedback←P780, 0, (word) DrawSelectionFeedback←P720, 
   0, (word) DrawTransform←P660, 0, (word) DrawParts←P600, 
   0, (word) DrawBorder←P540, 0, (word) BuildPath←P480, 
   0, (word) Unlink←P420, 0, (word) Restore←P360, 
   0, (word) Copy←P300, 0, (word) GetTightBox←P240, 
   0, (word) GetTransformedBoundBox←P180, 0, (word) GetBoundBox←P120, 
   0, (word) GetType←P60, 0, (word) GGSliceOpsImpl←P0, 
   {0}
   };

static void NoName←Q6588()
   {
   register ptr gf←c0638 =  (ptr) &globalframe;
   word var←c65360;
   (* (( (ptr) gf←c0638)+7) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0638)+8) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c0638)+9) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string4);
   (* (( (ptr) gf←c0638)+12) ) = (word) XR←GetTypeIndexS((word) (&string6));
   (* (( (ptr) gf←c0638)+13) ) = (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8);
   (* (( (ptr) gf←c0638)+14) ) = (word) XR←GetTypeIndexS((word) (&string9));
   (* (( (ptr) gf←c0638)+15) ) = (word) XR←GetTypeIndex((word) &string10, 0, (word) &string11);
   (* (( (ptr) gf←c0638)+16) ) = (word) XR←GetTypeIndexS((word) (&string12));
   (* (( (ptr) gf←c0638)+17) ) = (word) XR←GetTypeIndex((word) &string13, 0, (word) &string14);
   (* (( (ptr) gf←c0638)+19) ) = (word) XR←GetTypeIndex((word) &string15, 0, (word) &string4);
   (* (( (ptr) gf←c0638)+20) ) = (word) XR←GetTypeIndexS((word) (&string16));
   (* (( (ptr) gf←c0638)+22) ) = (word) XR←GetTypeIndex((word) &string17, 0, (word) &string11);
   (* (( (ptr) gf←c0638)+23) ) = (word) XR←GetTypeIndexS((word) (&string18));
   (*  (ptr) (( (bPt) gf←c0638)+96) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string19);
   (*  (ptr) (( (bPt) gf←c0638)+100) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string20);
   (*  (ptr) (( (bPt) gf←c0638)+104) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string21);
   (*  (ptr) (( (bPt) gf←c0638)+108) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string22);
   (*  (ptr) (( (bPt) gf←c0638)+112) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string23);
   (*  (ptr) (( (bPt) gf←c0638)+116) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string24);
   (*  (ptr) (( (bPt) gf←c0638)+120) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string25);
   (*  (ptr) (( (bPt) gf←c0638)+124) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string26);
   (*  (ptr) (( (bPt) gf←c0638)+128) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string27);
   (*  (ptr) (( (bPt) gf←c0638)+132) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string28);
   (*  (ptr) (( (bPt) gf←c0638)+136) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string29);
   (*  (ptr) (( (bPt) gf←c0638)+140) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string30);
   (*  (ptr) (( (bPt) gf←c0638)+144) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string31);
   (*  (ptr) (( (bPt) gf←c0638)+148) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string32);
   (*  (ptr) (( (bPt) gf←c0638)+152) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string33);
   (*  (ptr) (( (bPt) gf←c0638)+156) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string34);
   (*  (ptr) (( (bPt) gf←c0638)+160) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+19) ), (word) &string35);
   (*  (ptr) (( (bPt) gf←c0638)+164) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string29);
   (*  (ptr) (( (bPt) gf←c0638)+168) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string36);
   (*  (ptr) (( (bPt) gf←c0638)+172) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string37);
   (*  (ptr) (( (bPt) gf←c0638)+176) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string38);
   (*  (ptr) (( (bPt) gf←c0638)+180) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string39);
   (*  (ptr) (( (bPt) gf←c0638)+184) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string40);
   (*  (ptr) (( (bPt) gf←c0638)+188) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string41);
   (*  (ptr) (( (bPt) gf←c0638)+192) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string42);
   (*  (ptr) (( (bPt) gf←c0638)+196) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0638)+9) ), (word) &string43);
   (void) XR←DeclareGlobalFrame((word) "GGSliceOpsImpl", &globalframe, (word) XR←GetTypeIndex((word) &string44, 0, (word) &string45)
      , (word) (( (bPt) gf←c0638)+836)/* var←c61008 */ );
   var←c65360 = (word) XR←ImportInterface((word) "Atom", (word) XR←GetTypeIndexS((word) (&string46)), 16);
   (* (( (ptr) gf←c0638)+213)/* var←c62768 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 67895555);
   (void) XR←ImportProcS(var←c65360, 67372289);
   var←c65360 = (word) XR←ImportInterface((word) "Feedback", (word) XR←GetTypeIndexS((word) (&string47)), 25);
   (* (( (ptr) gf←c0638)+221)/* var←c64272 */  ) = var←c65360;
   var←c65360 = (word) XR←ImportInterface((word) "GGOutline", (word) XR←GetTypeIndexS((word) (&string48)), 19);
   (* (( (ptr) gf←c0638)+224)/* var←c64976 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 671354113);
   var←c65360 = (word) XR←ImportInterface((word) "GGParent", (word) XR←GetTypeIndexS((word) (&string49)), 83);
   (* (( (ptr) gf←c0638)+215)/* var←c62864 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 68176388);
   (void) XR←ImportProcS(var←c65360, 67386113);
   var←c65360 = (word) XR←ImportInterface((word) "GGParseIn", (word) XR←GetTypeIndexS((word) (&string50)), 26);
   (* (( (ptr) gf←c0638)+218)/* var←c63408 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 262401);
   (void) XR←ImportProcS(var←c65360, 67376385);
   (void) XR←ImportProcS(var←c65360, 525826);
   (void) XR←ImportProcS(var←c65360, 525570);
   (void) XR←ImportProcS(var←c65360, 67372033);
   var←c65360 = (word) XR←ImportInterface((word) "GGProps", (word) XR←GetTypeIndexS((word) (&string51)), 11);
   (* (( (ptr) gf←c0638)+216)/* var←c62960 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 1048580);
   (void) XR←ImportProcS(var←c65360, 67635202);
   (void) XR←ImportProcS(var←c65360, 134743810);
   (void) XR←ImportProcS(var←c65360, 67896323);
   var←c65360 = (word) XR←ImportInterface((word) "GGSlice", (word) XR←GetTypeIndexS((word) (&string52)), 128);
   (* (( (ptr) gf←c0638)+211)/* var←c61168 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 67371777);
   (void) XR←ImportProcS(var←c65360, 135293443);
   (void) XR←ImportProcS(var←c65360, 68701702);
   var←c65360 = (word) XR←ImportInterface((word) &string53, (word) XR←GetTypeIndexS((word) (&string54)), 73);
   (* (( (ptr) gf←c0638)+212)/* var←c62704 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 1315333);
   (void) XR←ImportProcS(var←c65360, 68173572);
   (void) XR←ImportProcS(var←c65360, 1850631);
   (void) XR←ImportProcS(var←c65360, 1325829);
   (void) XR←ImportProcS(var←c65360, 1325317);
   (void) XR←ImportProcS(var←c65360, 1324805);
   (void) XR←ImportProcS(var←c65360, 1062148);
   (void) XR←ImportProcS(var←c65360, 1061636);
   (void) XR←ImportProcS(var←c65360, 68169988);
   (void) XR←ImportProcS(var←c65360, 67901699);
   (void) XR←ImportProcS(var←c65360, 529666);
   (void) XR←ImportProcS(var←c65360, 67371521);
   var←c65360 = (word) XR←ImportInterface((word) "GGTraj", (word) XR←GetTypeIndexS((word) (&string55)), 55);
   (* (( (ptr) gf←c0638)+222)/* var←c64368 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 671625218);
   (void) XR←ImportProcS(var←c65360, 67643650);
   (void) XR←ImportProcS(var←c65360, 67374081);
   var←c65360 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string56)), 55);
   (* (( (ptr) gf←c0638)+223)/* var←c64848 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 67383041);
   var←c65360 = (word) XR←ImportInterface((word) "IO", (word) XR←GetTypeIndexS((word) (&string57)), 103);
   (* (( (ptr) gf←c0638)+214)/* var←c62832 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 67917827);
   (void) XR←ImportProcS(var←c65360, 67388417);
   (void) XR←ImportProcS(var←c65360, 2111493);
   (void) XR←ImportProcS(var←c65360, 1071364);
   (void) XR←ImportProcS(var←c65360, 1063171);
   var←c65360 = (word) XR←ImportInterface((word) "RefText", (word) XR←GetTypeIndexS((word) (&string58)), 26);
   (* (( (ptr) gf←c0638)+220)/* var←c64176 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 67634946);
   var←c65360 = (word) XR←ImportInterface((word) "RefTextExtras", (word) XR←GetTypeIndexS((word) (&string59)), 16);
   (* (( (ptr) gf←c0638)+219)/* var←c63952 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 528130);
   (void) XR←ImportProcS(var←c65360, 67374593);
   var←c65360 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string60)), 43);
   (* (( (ptr) gf←c0638)+217)/* var←c63056 */  ) = var←c65360;
   (void) XR←ImportProcS(var←c65360, 67903235);
   (void) XR←ImportProcS(var←c65360, 67373569);
   var←c65360 = (word) XR←ExportInterface((word) &string53, (word) XR←GetTypeIndexS((word) (&string54)), 73);
   (* (( (ptr) gf←c0638)+225)/* var←c65392 */  ) = var←c65360;
   (void) XR←ExportVar(var←c65360, 0, (word) (( (bPt) gf←c0638)+16)/* noteNoMore←v3336 */ );
   (void) XR←ExportVar(var←c65360, 1, (word) (( (bPt) gf←c0638)+20)/* debugHalt←v3364 */ );
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+828)/* var←c60976 */ , 67371521, (word) "GetType");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+820)/* var←c60944 */ , 67633922, (word) "GetBoundBox");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+812)/* var←c60912 */ , 68158468, (word) "GetTransformedBoundBox")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+804)/* var←c60880 */ , 67634434, (word) "GetTightBox");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+796)/* var←c60848 */ , 67634690, (word) "Copy");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+788)/* var←c60816 */ , 526082, (word) "Restore");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+780)/* var←c60784 */ , 264193, (word) "Unlink");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+772)/* var←c60752 */ , 2361609, (word) "BuildPath");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+764)/* var←c60720 */ , 2099720, (word) "DrawBorder");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+756)/* var←c60688 */ , 1313541, (word) "DrawParts");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+748)/* var←c60656 */ , 1575942, (word) "DrawTransform");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+740)/* var←c60624 */ , 2362633, (word) "DrawSelectionFeedback")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+732)/* var←c60592 */ , 1838599, (word) "DrawAttractorFeedback")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+724)/* var←c60560 */ , 68685574, (word) "AttractorFeedbackBoundBox")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+716)/* var←c60528 */ , 790531, (word) "SaveSelections");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+708)/* var←c60496 */ , 67637506, (word) "RemakeSelections");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+700)/* var←c60464 */ , 1315333, (word) "Transform");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+692)/* var←c60432 */ , 67375873, (word) "Describe");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+684)/* var←c60400 */ , 67638274, (word) "DescribeHit");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+676)/* var←c60368 */ , 529666, (word) "Fileout");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+668)/* var←c60336 */ , 68163076, (word) "Filein");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+660)/* var←c60304 */ , 67376897, (word) "IsEmptyParts");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+652)/* var←c60272 */ , 67377153, (word) "IsCompleteParts");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+644)/* var←c60240 */ , 67901699, (word) "NewParts");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+636)/* var←c60208 */ , 67639810, (word) "UnionParts");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+628)/* var←c60176 */ , 67640066, (word) "DifferenceParts");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+620)/* var←c60144 */ , 270539780, (word) "MovingParts");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+612)/* var←c60112 */ , 67640578, (word) "AugmentParts");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+604)/* var←c60080 */ , 67640834, (word) "AlterParts");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+596)/* var←c60048 */ , 794371, (word) "SetSelectedFields");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+588)/* var←c60016 */ , 67379201, (word) "PointsInDescriptor")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+580)/* var←c59984 */ , 532738, (word) "WalkPointsInDescriptor")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+572)/* var←c59952 */ , 67379713, (word) "PointPairsInDescriptor")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+564)/* var←c59920 */ , 67379969, (word) "SegmentsInDescriptor")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+556)/* var←c59888 */ , 67642370, (word) "WalkSegments");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+548)/* var←c59856 */ , 201860354, (word) "NextPoint");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+540)/* var←c59824 */ , 336078338, (word) "NextPointPair");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+532)/* var←c59792 */ , 134752002, (word) "NextSegment");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+524)/* var←c59760 */ , 470820867, (word) "ClosestPoint");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+516)/* var←c59728 */ , 337127684, (word) "ClosestJointToHitData")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+508)/* var←c59696 */ , 470821379, (word) "ClosestPointAndTangent")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+500)/* var←c59664 */ , 470821635, (word) "ClosestSegment");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+492)/* var←c59632 */ , 135277571, (word) "FilledPathsUnderPoint")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+484)/* var←c59600 */ , 134753538, (word) "LineIntersection");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+476)/* var←c59568 */ , 134753794, (word) "CircleIntersection")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+468)/* var←c59536 */ , 67645186, (word) "HitDataAsSimpleCurve")
   ;
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+460)/* var←c59504 */ , 1060868, (word) "SetDefaults");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+452)/* var←c59472 */ , 68169988, (word) "SetStrokeWidth");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+444)/* var←c59440 */ , 134754818, (word) "GetStrokeWidth");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+436)/* var←c59408 */ , 1061636, (word) "SetStrokeEnd");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+428)/* var←c59376 */ , 134755330, (word) "GetStrokeEnd");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+420)/* var←c59344 */ , 1062148, (word) "SetStrokeJoint");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+412)/* var←c59312 */ , 134755842, (word) "GetStrokeJoint");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+404)/* var←c59280 */ , 1324805, (word) "SetStrokeColor");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+396)/* var←c59248 */ , 134756354, (word) "GetStrokeColor");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+388)/* var←c59216 */ , 1325317, (word) "SetFillColor");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+380)/* var←c59184 */ , 134756866, (word) "GetFillColor");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+372)/* var←c59152 */ , 1325829, (word) "SetArrows");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+364)/* var←c59120 */ , 134495233, (word) "GetArrows");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+356)/* var←c59088 */ , 1850631, (word) "SetDashed");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+348)/* var←c59056 */ , 336084482, (word) "GetDashed");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+340)/* var←c59024 */ , 68173572, (word) "SetOrientation");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+332)/* var←c58992 */ , 134758402, (word) "GetOrientation");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+324)/* var←c58960 */ , 540930, (word) "FileoutSlice");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+308)/* var←c58896 */ , 68436485, (word) "FileinSlice");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+276)/* var←c58768 */ , 67650306, (word) "PartsInBoundBox");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+268)/* var←c58736 */ , 67650562, (word) "WithinBoundBox");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+260)/* var←c58704 */ , 67388673, (word) "IsOpen");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+220)/* var←c58544 */ , 67388929, (word) "IsDescriptorOfEnd");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+212)/* var←c58512 */ , 201606913, (word) "UnpackJoint");
   (void) XR←ExportProcS(var←c65360, (word) (( (bPt) gf←c0638)+204)/* var←c58480 */ , 335824897, (word) "UnpackSegment");
   var←c65360 = (word) XR←ExportInterface((word) "GGHistoryTypes", (word) XR←GetTypeIndexS((word) (&string61)), 2);
   (* (( (ptr) gf←c0638)+226)/* var←c65424 */  ) = var←c65360;
   (void) XR←ExportType((word) "Change", (word) XR←GetTypeIndexS((word) (&string62)), (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2)
      );
   }

static void GGSliceOpsImpl←P0(formal←c0105, formal←c0104)
   word formal←c0105;
   word formal←c0104;
   {
   /* GGSliceOpsImpl: */ 
SOURCE(241, 21568)
   /* moved to installation proc */ 
   /* moved to installation proc */ 
   }

static word GetType←P60(slice←v6636)
   word slice←v6636;
   {
   word type←v6680;
   /* GetType: */ 
SOURCE(1436, 85)
SOURCE(1436, 85)
   type←v6680 = 0;
SOURCE(1497, 24)
   return((*  (ptr) (*  (ptr) slice←v6636 ) ));
   }

static word GetBoundBox←P120(slice←v30376, parts←v30404)
   word slice←v30376;
   word parts←v30404;
   {
   word box←v30448;
   /* GetBoundBox: */ 
SOURCE(1524, 87)
SOURCE(1524, 87)
   box←v30448 = 0;
SOURCE(1566, 45)
   {
      word pd63;
      pd63 = (* (( (ptr) (*  (ptr) slice←v30376 ))+1) );
      return((word) ( *( (fPt) ((*  (ptr) pd63 ))))(slice←v30376, parts←v30404, pd63));
      };
   }

static word GetTransformedBoundBox←P180(slice←v30508, selectedParts←v30536, movingParts←v30564, transform←v30592)
   word slice←v30508;
   word selectedParts←v30536;
   word movingParts←v30564;
   word transform←v30592;
   {
   word box←v30636;
   /* GetTransformedBoundBox: */ 
SOURCE(1615, 152)
SOURCE(1615, 152)
   box←v30636 = 0;
SOURCE(1679, 88)
   {
      word pd64;
      pd64 = (* (( (ptr) (*  (ptr) slice←v30508 ))+2) );
      return((word) ( *( (fPt) ((*  (ptr) pd64 ))))(slice←v30508, selectedParts←v30536, movingParts←v30564, transform←v30592, pd64)
      );
      };
   }

static word GetTightBox←P240(slice←v30696, parts←v30724)
   word slice←v30696;
   word parts←v30724;
   {
   word box←v30768;
   /* GetTightBox: */ 
SOURCE(1771, 87)
SOURCE(1771, 87)
   box←v30768 = 0;
SOURCE(1813, 45)
   {
      word pd65;
      pd65 = (* (( (ptr) (*  (ptr) slice←v30696 ))+3) );
      return((word) ( *( (fPt) ((*  (ptr) pd65 ))))(slice←v30696, parts←v30724, pd65));
      };
   }

static word Copy←P300(slice←v30828, parts←v30856)
   word slice←v30828;
   word parts←v30856;
   {
   word copy←v30900;
   /* Copy: */ 
SOURCE(1862, 69)
SOURCE(1862, 69)
   copy←v30900 = 0;
SOURCE(1893, 38)
   {
      word pd66;
      pd66 = (* (( (ptr) (*  (ptr) slice←v30828 ))+4) );
      return((word) ( *( (fPt) ((*  (ptr) pd66 ))))(slice←v30828, parts←v30856, pd66));
      };
   }

static void Restore←P360(from←v30960, to←v30988)
   word from←v30960;
   word to←v30988;
   {
   /* Restore: */ 
SOURCE(1935, 75)
SOURCE(1972, 38)
   {
      word pd67;
      pd67 = (* (( (ptr) (*  (ptr) from←v30960 ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd67 ))))(from←v30960, to←v30988, pd67);
      };
   }

static void Unlink←P420(slice←v31048)
   word slice←v31048;
   {
   /* Unlink: */ 
SOURCE(2014, 60)
SOURCE(2049, 25)
   {
      word pd68;
      pd68 = (* (( (ptr) (*  (ptr) slice←v31048 ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd68 ))))(slice←v31048, pd68);
      };
   }

static void BuildPath←P480(slice←v31108, transformParts←v31136, transform←v31164, moveTo←v31192, lineTo←v31220, curveTo←v31248, conicTo←v31276, arcTo←v31304, editConstraints←v31332)
   word slice←v31108;
   word transformParts←v31136;
   word transform←v31164;
   word moveTo←v31192;
   word lineTo←v31220;
   word curveTo←v31248;
   word conicTo←v31276;
   word arcTo←v31304;
   word editConstraints←v31332;
   {
   /* BuildPath: */ 
SOURCE(2078, 154)
SOURCE(2119, 113)
   {
      word pd69;
      pd69 = (* (( (ptr) (*  (ptr) slice←v31108 ))+7) );
      (void) ( *( (fPt) ((*  (ptr) pd69 ))))(slice←v31108, transformParts←v31136, transform←v31164, moveTo←v31192, lineTo←v31220, curveTo←v31248
         , conicTo←v31276, arcTo←v31304, editConstraints←v31332, pd69);
      };
   }

static void DrawBorder←P540(slice←v31392, drawParts←v31420, transformParts←v31448, transform←v31476, dc←v31504, camera←v31532, quick←v31560, editConstraints←v31588)
   word slice←v31392;
   word drawParts←v31420;
   word transformParts←v31448;
   word transform←v31476;
   word dc←v31504;
   word camera←v31532;
   word quick←v31560;
   word editConstraints←v31588;
   {
   /* DrawBorder: */ 
SOURCE(2236, 146)
SOURCE(2279, 103)
   {
      word pd70;
      pd70 = (* (( (ptr) (*  (ptr) slice←v31392 ))+8) );
      (void) ( *( (fPt) ((*  (ptr) pd70 ))))(slice←v31392, drawParts←v31420, transformParts←v31448, transform←v31476, dc←v31504, camera←v31532
         , quick←v31560, editConstraints←v31588, pd70);
      };
   }

static void DrawParts←P600(slice←v31648, parts←v31676, dc←v31704, camera←v31732, quick←v31760)
   word slice←v31648;
   word parts←v31676;
   word dc←v31704;
   word camera←v31732;
   word quick←v31760;
   {
   /* DrawParts: */ 
SOURCE(2386, 95)
SOURCE(2427, 54)
   {
      word pd71;
      pd71 = (* (( (ptr) (*  (ptr) slice←v31648 ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd71 ))))(slice←v31648, parts←v31676, dc←v31704, camera←v31732, quick←v31760, pd71);
      };
   }

static void DrawTransform←P660(slice←v31820, parts←v31848, dc←v31876, camera←v31904, transform←v31932, editConstraints←v31960)
   word slice←v31820;
   word parts←v31848;
   word dc←v31876;
   word camera←v31904;
   word transform←v31932;
   word editConstraints←v31960;
   {
   /* DrawTransform: */ 
SOURCE(2485, 129)
SOURCE(2534, 80)
   {
      word pd72;
      pd72 = (* (( (ptr) (*  (ptr) slice←v31820 ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd72 ))))(slice←v31820, parts←v31848, dc←v31876, camera←v31904, transform←v31932, editConstraints←v31960, pd72)
      ;
      };
   }

static void DrawSelectionFeedback←P720(slice←v32020, selectedParts←v32048, hotParts←v32076, dc←v32104, camera←v32132, dragInProgress←v32160, caretIsMoving←v32188, hideHot←v32216, quick←v32244)
   word slice←v32020;
   word selectedParts←v32048;
   word hotParts←v32076;
   word dc←v32104;
   word camera←v32132;
   word dragInProgress←v32160;
   word caretIsMoving←v32188;
   word hideHot←v32216;
   word quick←v32244;
   {
   /* DrawSelectionFeedback: */ 
SOURCE(2618, 189)
SOURCE(2683, 124)
   {
      word pd73;
      pd73 = (* (( (ptr) (*  (ptr) slice←v32020 ))+11) );
      (void) ( *( (fPt) ((*  (ptr) pd73 ))))(slice←v32020, selectedParts←v32048, hotParts←v32076, dc←v32104, camera←v32132, dragInProgress←v32160
         , caretIsMoving←v32188, hideHot←v32216, quick←v32244, pd73);
      };
   }

static void DrawAttractorFeedback←P780(slice←v32304, attractorParts←v32332, selectedParts←v32360, dragInProgress←v32388, dc←v32416, camera←v32444, editConstraints←v32472)
   word slice←v32304;
   word attractorParts←v32332;
   word selectedParts←v32360;
   word dragInProgress←v32388;
   word dc←v32416;
   word camera←v32444;
   word editConstraints←v32472;
   {
   /* DrawAttractorFeedback: */ 
SOURCE(2811, 181)
SOURCE(2876, 116)
   {
      word pd74;
      pd74 = (* (( (ptr) (*  (ptr) slice←v32304 ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd74 ))))(slice←v32304, attractorParts←v32332, selectedParts←v32360, dragInProgress←v32388, dc←v32416, camera←v32444
         , editConstraints←v32472, pd74);
      };
   }

static word AttractorFeedbackBoundBox←P840(slice←v32532, attractorParts←v32560, selectedParts←v32588, dragInProgress←v32616, camera←v32644, editConstraints←v32672)
   word slice←v32532;
   word attractorParts←v32560;
   word selectedParts←v32588;
   word dragInProgress←v32616;
   word camera←v32644;
   word editConstraints←v32672;
   {
   register ptr gf←c65456 =  (ptr) &globalframe;
   word box←v32716;
   /* AttractorFeedbackBoundBox: */ 
SOURCE(2996, 377)
SOURCE(2996, 377)
   box←v32716 = 0;
SOURCE(3069, 304)
   if (((* (( (ptr) (*  (ptr) slice←v32532 ))+13) ) == 0)) {
SOURCE(3121, 129)
      {
         word pd75;
         pd75 = (* (( (ptr) (* (( (ptr) gf←c65456)+211)/* var←c61168 */  ))+82) );
         return((word) ( *( (fPt) ((*  (ptr) pd75 ))))(slice←v32532, attractorParts←v32560, selectedParts←v32588, dragInProgress←v32616, camera←v32644, editConstraints←v32672, pd75)
         );
         };
      }
   else {
SOURCE(3250, 123)
      {
         word pd76;
         pd76 = (* (( (ptr) (*  (ptr) slice←v32532 ))+13) );
         return((word) ( *( (fPt) ((*  (ptr) pd76 ))))(slice←v32532, attractorParts←v32560, selectedParts←v32588, dragInProgress←v32616, camera←v32644, editConstraints←v32672, pd76)
         );
         };
      };
   }

static void SaveSelections←P900(slice←v32776, parts←v32804, selectClass←v32832)
   word slice←v32776;
   word parts←v32804;
   word selectClass←v32832;
   {
   /* SaveSelections: */ 
SOURCE(3378, 104)
SOURCE(3429, 53)
   {
      word pd77;
      pd77 = (* (( (ptr) (*  (ptr) slice←v32776 ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd77 ))))(slice←v32776, parts←v32804, selectClass←v32832, pd77);
      };
   }

static word RemakeSelections←P960(slice←v32892, selectClass←v32920)
   word slice←v32892;
   word selectClass←v32920;
   {
   word parts←v32964;
   /* RemakeSelections: */ 
SOURCE(3486, 111)
SOURCE(3486, 111)
   parts←v32964 = 0;
SOURCE(3541, 56)
   {
      word pd78;
      pd78 = (* (( (ptr) (*  (ptr) slice←v32892 ))+15) );
      parts←v32964 = (word) ( *( (fPt) ((*  (ptr) pd78 ))))(slice←v32892, selectClass←v32920, pd78);
      };
SOURCE(3486, 111)
   return(parts←v32964);
   }

static void Transform←P1020(slice←v33024, parts←v33052, transform←v33080, editConstraints←v33108, history←v33136)
   word slice←v33024;
   word parts←v33052;
   word transform←v33080;
   word editConstraints←v33108;
   word history←v33136;
   {
   register ptr gf←c65488 =  (ptr) &globalframe;
   word oldValue←v8848;
   /* Transform: */ 
SOURCE(3602, 390)
SOURCE(3644, 46)
   oldValue←v8848 = XR←NewObject(8, (* (( (ptr) gf←c65488)+8) ));
SOURCE(3692, 30)
   (*  (ptr) oldValue←v8848 ) = transform←v33080;
SOURCE(3781, 42)
   (* (( (ptr) oldValue←v8848)+1) ) = editConstraints←v33108;
SOURCE(3825, 72)
   {
      word pd79;
      pd79 = (* (( (ptr) (*  (ptr) slice←v33024 ))+16) );
      (void) ( *( (fPt) ((*  (ptr) pd79 ))))(slice←v33024, parts←v33052, transform←v33080, editConstraints←v33108, history←v33136, pd79)
      ;
      };
SOURCE(3899, 93)
   (void) GenericPropsUndo←P4380((* (( (ptr) gf←c65488)+49) ), slice←v33024, parts←v33052, oldValue←v8848, history←v33136);
   }

static word Describe←P1080(sliceD←v33196)
   word sliceD←v33196;
   {
   word rope←v33240;
   /* Describe: */ 
SOURCE(3997, 82)
SOURCE(3997, 82)
   rope←v33240 = 0;
SOURCE(4036, 43)
   {
      word pd80;
      pd80 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v33196 ) ))+17) );
      return((word) ( *( (fPt) ((*  (ptr) pd80 ))))(sliceD←v33196, pd80));
      };
   }

static word DescribeHit←P1140(slice←v33300, hitData←v33328)
   word slice←v33300;
   word hitData←v33328;
   {
   word rope←v33372;
   /* DescribeHit: */ 
SOURCE(4083, 92)
SOURCE(4083, 92)
   rope←v33372 = 0;
SOURCE(4128, 47)
   {
      word pd81;
      pd81 = (* (( (ptr) (*  (ptr) slice←v33300 ))+18) );
      return((word) ( *( (fPt) ((*  (ptr) pd81 ))))(slice←v33300, hitData←v33328, pd81));
      };
   }

static void Fileout←P1200(slice←v33432, f←v33460)
   word slice←v33432;
   word f←v33460;
   {
   /* Fileout: */ 
SOURCE(4179, 66)
SOURCE(4216, 29)
   {
      word pd82;
      pd82 = (* (( (ptr) (*  (ptr) slice←v33432 ))+19) );
      (void) ( *( (fPt) ((*  (ptr) pd82 ))))(slice←v33432, f←v33460, pd82);
      };
   }

static word Filein←P1260(f←v33520, version←v33548, router←v33576, camera←v33604)
   word f←v33520;
   word version←v33548;
   word router←v33576;
   word camera←v33604;
   {
   word slice←v33648;
   /* Filein: */ 
SOURCE(4249, 89)
SOURCE(4249, 89)
   slice←v33648 = 0;
SOURCE(4284, 54)
   {
      word pd83;
      pd83 = (* (( (ptr) (*  (ptr) slice←v33648 ))+20) );
      return((word) ( *( (fPt) ((*  (ptr) pd83 ))))(f←v33520, version←v33548, router←v33576, camera←v33604, pd83));
      };
   }

static word IsEmptyParts←P1320(sliceD←v33708)
   word sliceD←v33708;
   {
   word var←c33752;
   /* IsEmptyParts: */ 
SOURCE(4342, 95)
SOURCE(4390, 47)
   {
      word pd84;
      pd84 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v33708 ) ))+21) );
      return((word) ( *( (fPt) ((*  (ptr) pd84 ))))(sliceD←v33708, pd84));
      };
   }

static word IsCompleteParts←P1380(sliceD←v33812)
   word sliceD←v33812;
   {
   word var←c33856;
   /* IsCompleteParts: */ 
SOURCE(4441, 104)
SOURCE(4495, 50)
   {
      word pd85;
      pd85 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v33812 ) ))+22) );
      return((word) ( *( (fPt) ((*  (ptr) pd85 ))))(sliceD←v33812, pd85));
      };
   }

static word NewParts←P1440(slice←v33916, hitData←v33944, mode←v33972)
   word slice←v33916;
   word hitData←v33944;
   word mode←v33972;
   {
   word sliceD←v34016;
   /* NewParts: */ 
SOURCE(4549, 89)
SOURCE(4549, 89)
   sliceD←v34016 = 0;
SOURCE(4588, 50)
   {
      word pd86;
      pd86 = (* (( (ptr) (*  (ptr) slice←v33916 ))+23) );
      return((word) ( *( (fPt) ((*  (ptr) pd86 ))))(slice←v33916, hitData←v33944, mode←v33972, pd86));
      };
   }

static word UnionParts←P1500(partsA←v34076, partsB←v34104)
   word partsA←v34076;
   word partsB←v34104;
   {
   word aPlusB←v34148;
   /* UnionParts: */ 
SOURCE(4642, 96)
SOURCE(4642, 96)
   aPlusB←v34148 = 0;
SOURCE(4685, 53)
   {
      word pd87;
      pd87 = (* (( (ptr) (*  (ptr) (*  (ptr) partsA←v34076 ) ))+24) );
      return((word) ( *( (fPt) ((*  (ptr) pd87 ))))(partsA←v34076, partsB←v34104, pd87));
      };
   }

static word DifferenceParts←P1560(partsA←v34208, partsB←v34236)
   word partsA←v34208;
   word partsB←v34236;
   {
   word aMinusB←v34280;
   /* DifferenceParts: */ 
SOURCE(4742, 111)
SOURCE(4742, 111)
   aMinusB←v34280 = 0;
SOURCE(4795, 58)
   {
      word pd88;
      pd88 = (* (( (ptr) (*  (ptr) (*  (ptr) partsA←v34208 ) ))+25) );
      return((word) ( *( (fPt) ((*  (ptr) pd88 ))))(partsA←v34208, partsB←v34236, pd88));
      };
   }

static void MovingParts←P1620(formal←c0224, slice←v34340, selectedParts←v34368, editConstraints←v34396, bezierDrag←v34424)
   word formal←c0224;
   word slice←v34340;
   word selectedParts←v34368;
   word editConstraints←v34396;
   W5 bezierDrag←v34424;
   {
   word background←v34468;
   word overlay←v34496;
   word rubber←v34524;
   word drag←v34552;
   /* MovingParts: */ 
SOURCE(4857, 156)
SOURCE(4857, 156)
   background←v34468 = 0;
SOURCE(4857, 156)
   overlay←v34496 = 0;
SOURCE(4857, 156)
   rubber←v34524 = 0;
SOURCE(4857, 156)
   drag←v34552 = 0;
SOURCE(4901, 112)
   {
      W4 var←c61488;
      {
         word pd89;
         pd89 = (* (( (ptr) (*  (ptr) slice←v34340 ))+26) );
         (void) ( *( (fPt) ((*  (ptr) pd89 ))))((word) &var←c61488, slice←v34340, selectedParts←v34368, editConstraints←v34396, bezierDrag←v34424, pd89)
         ;
         };
      drag←v34552 = var←c61488.f3;
      rubber←v34524 = var←c61488.f2;
      overlay←v34496 = var←c61488.f1;
      background←v34468 = var←c61488.f0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0224 ) = background←v34468;
   (* (( (ptr) formal←c0224)+1) ) = overlay←v34496;
   (* (( (ptr) formal←c0224)+2) ) = rubber←v34524;
   (* (( (ptr) formal←c0224)+3) ) = drag←v34552;
   return;
   }

static word AugmentParts←P1680(sliceD←v34612, selectClass←v34640)
   word sliceD←v34612;
   word selectClass←v34640;
   {
   word more←v34684;
   /* AugmentParts: */ 
SOURCE(5017, 107)
SOURCE(5017, 107)
   more←v34684 = 0;
SOURCE(5064, 60)
   {
      word pd90;
      pd90 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v34612 ) ))+27) );
      return((word) ( *( (fPt) ((*  (ptr) pd90 ))))(sliceD←v34612, selectClass←v34640, pd90));
      };
   }

static word AlterParts←P1740(sliceD←v34744, action←v34772)
   word sliceD←v34744;
   word action←v34772;
   {
   word alteredD←v34816;
   /* AlterParts: */ 
SOURCE(5128, 96)
SOURCE(5128, 96)
   alteredD←v34816 = 0;
SOURCE(5171, 53)
   {
      word pd91;
      pd91 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v34744 ) ))+28) );
      return((word) ( *( (fPt) ((*  (ptr) pd91 ))))(sliceD←v34744, action←v34772, pd91));
      };
   }

static void SetSelectedFields←P1800(sliceD←v34876, selected←v34904, selectClass←v34932)
   word sliceD←v34876;
   word selected←v34904;
   word selectClass←v34932;
   {
   /* SetSelectedFields: */ 
SOURCE(5228, 123)
SOURCE(5284, 67)
   {
      word pd92;
      pd92 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v34876 ) ))+29) );
      (void) ( *( (fPt) ((*  (ptr) pd92 ))))(sliceD←v34876, selected←v34904, selectClass←v34932, pd92);
      };
   }

static word PointsInDescriptor←P1860(sliceD←v34992)
   word sliceD←v34992;
   {
   word pointGen←v35036;
   /* PointsInDescriptor: */ 
SOURCE(5355, 112)
SOURCE(5355, 112)
   pointGen←v35036 = 0;
SOURCE(5414, 53)
   {
      word pd93;
      pd93 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v34992 ) ))+30) );
      return((word) ( *( (fPt) ((*  (ptr) pd93 ))))(sliceD←v34992, pd93));
      };
   }

static void WalkPointsInDescriptor←P1920(sliceD←v35096, walkProc←v35124)
   word sliceD←v35096;
   word walkProc←v35124;
   {
   /* WalkPointsInDescriptor: */ 
SOURCE(5471, 126)
SOURCE(5538, 59)
   {
      word pd94;
      pd94 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v35096 ) ))+31) );
      (void) ( *( (fPt) ((*  (ptr) pd94 ))))(sliceD←v35096, walkProc←v35124, pd94);
      };
   }

static word PointPairsInDescriptor←P1980(sliceD←v35184)
   word sliceD←v35184;
   {
   word pointPairGen←v35228;
   /* PointPairsInDescriptor: */ 
SOURCE(5601, 124)
SOURCE(5601, 124)
   pointPairGen←v35228 = 0;
SOURCE(5668, 57)
   {
      word pd95;
      pd95 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v35184 ) ))+32) );
      return((word) ( *( (fPt) ((*  (ptr) pd95 ))))(sliceD←v35184, pd95));
      };
   }

static word SegmentsInDescriptor←P2040(sliceD←v35288)
   word sliceD←v35288;
   {
   word segGen←v35332;
   /* SegmentsInDescriptor: */ 
SOURCE(5729, 118)
SOURCE(5729, 118)
   segGen←v35332 = 0;
SOURCE(5792, 55)
   {
      word pd96;
      pd96 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v35288 ) ))+33) );
      return((word) ( *( (fPt) ((*  (ptr) pd96 ))))(sliceD←v35288, pd96));
      };
   }

static word WalkSegments←P2100(slice←v35392, walkProc←v35420)
   word slice←v35392;
   word walkProc←v35420;
   {
   word sliceD←v35464;
   /* WalkSegments: */ 
SOURCE(5851, 96)
SOURCE(5851, 96)
   sliceD←v35464 = 0;
SOURCE(5898, 49)
   {
      word pd97;
      pd97 = (* (( (ptr) (*  (ptr) slice←v35392 ))+34) );
      return((word) ( *( (fPt) ((*  (ptr) pd97 ))))(slice←v35392, walkProc←v35420, pd97));
      };
   }

static void NextPoint←P2160(formal←c0250, slice←v35524, pointGen←v35552)
   word formal←c0250;
   word slice←v35524;
   word pointGen←v35552;
   {
   W3 pointAndDone←v35596;
   /* NextPoint: */ 
SOURCE(5951, 87)
SOURCE(5992, 46)
   {
      W3 var←c61744;
      {
         word pd98;
         pd98 = (* (( (ptr) (*  (ptr) slice←v35524 ))+35) );
         (void) ( *( (fPt) ((*  (ptr) pd98 ))))((word) &var←c61744, slice←v35524, pointGen←v35552, pd98);
         };
      pointAndDone←v35596 = var←c61744;
      /* removed tail goto */ 
      };
   (*  (W3Pt) formal←c0250 ) = pointAndDone←v35596;
   return;
   }

static void NextPointPair←P2220(formal←c0256, slice←v35656, pointPairGen←v35684)
   word formal←c0256;
   word slice←v35656;
   word pointPairGen←v35684;
   {
   W5 pointPairAndDone←v35728;
   /* NextPointPair: */ 
SOURCE(6042, 103)
SOURCE(6091, 54)
   {
      W5 var←c61808;
      {
         word pd99;
         pd99 = (* (( (ptr) (*  (ptr) slice←v35656 ))+36) );
         (void) ( *( (fPt) ((*  (ptr) pd99 ))))((word) &var←c61808, slice←v35656, pointPairGen←v35684, pd99);
         };
      pointPairAndDone←v35728 = var←c61808;
      /* removed tail goto */ 
      };
   (*  (W5Pt) formal←c0256 ) = pointPairAndDone←v35728;
   return;
   }

static void NextSegment←P2280(formal←c0263, slice←v35788, segGen←v35816)
   word formal←c0263;
   word slice←v35788;
   word segGen←v35816;
   {
   word seg←v35860;
   word transform←v35888;
   /* NextSegment: */ 
SOURCE(6149, 102)
SOURCE(6149, 102)
   seg←v35860 = 0;
SOURCE(6149, 102)
   transform←v35888 = 0;
SOURCE(6194, 57)
   {
      W2 var←c61840;
      {
         word pd100;
         pd100 = (* (( (ptr) (*  (ptr) slice←v35788 ))+37) );
         (void) ( *( (fPt) ((*  (ptr) pd100 ))))((word) &var←c61840, slice←v35788, segGen←v35816, pd100);
         };
      transform←v35888 = var←c61840.f1;
      seg←v35860 = var←c61840.f0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0263 ) = seg←v35860;
   (* (( (ptr) formal←c0263)+1) ) = transform←v35888;
   return;
   }

static void ClosestPoint←P2340(formal←c0274, sliceD←v35948, testPoint←v35976, tolerance←v36004)
   word formal←c0274;
   word sliceD←v35948;
   W2 testPoint←v35976;
   word tolerance←v36004;
   {
   W2 bestPoint←v36048;
   word bestDist←v36076;
   W2 bestNormal←v36104;
   word hitData←v36132;
   word success←v36160;
   /* ClosestPoint: */ 
SOURCE(6255, 162)
SOURCE(6255, 162)
   hitData←v36132 = 0;
SOURCE(6302, 115)
   {
      W7 var←c61872;
      {
         word pd101;
         pd101 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v35948 ) ))+38) );
         (void) ( *( (fPt) ((*  (ptr) pd101 ))))((word) &var←c61872, sliceD←v35948, testPoint←v35976, tolerance←v36004, pd101);
         };
      success←v36160 = var←c61872.f6;
      hitData←v36132 = var←c61872.f5;
      bestNormal←v36104 = (*  (W2Pt) (( (ptr) &var←c61872)+3) );
      bestDist←v36076 = var←c61872.f2;
      bestPoint←v36048 = (*  (W2Pt) &var←c61872 );
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0274 ) = bestPoint←v36048;
   (* (( (ptr) formal←c0274)+2) ) = bestDist←v36076;
   (*  (W2Pt) (( (ptr) formal←c0274)+3) ) = bestNormal←v36104;
   (* (( (ptr) formal←c0274)+5) ) = hitData←v36132;
   (* (( (ptr) formal←c0274)+6) ) = success←v36160;
   return;
   }

static void ClosestJointToHitData←P2400(formal←c0284, sliceD←v36220, mapPoint←v36248, testPoint←v36276, hitData←v36304)
   word formal←c0284;
   word sliceD←v36220;
   W2 mapPoint←v36248;
   W2 testPoint←v36276;
   word hitData←v36304;
   {
   word jointD←v36348;
   W2 point←v36376;
   W2 normal←v36404;
   /* ClosestJointToHitData: */ 
SOURCE(6421, 169)
SOURCE(6421, 169)
   jointD←v36348 = 0;
SOURCE(6486, 104)
   {
      W5 var←c61904;
      {
         word pd102;
         pd102 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v36220 ) ))+39) );
         (void) ( *( (fPt) ((*  (ptr) pd102 ))))((word) &var←c61904, sliceD←v36220, mapPoint←v36248, testPoint←v36276, hitData←v36304, pd102)
         ;
         };
      normal←v36404 = (*  (W2Pt) (( (ptr) &var←c61904)+3) );
      point←v36376 = (*  (W2Pt) (( (ptr) &var←c61904)+1) );
      jointD←v36348 = var←c61904.f0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0284 ) = jointD←v36348;
   (*  (W2Pt) (( (ptr) formal←c0284)+1) ) = point←v36376;
   (*  (W2Pt) (( (ptr) formal←c0284)+3) ) = normal←v36404;
   return;
   }

static void ClosestPointAndTangent←P2460(formal←c0295, sliceD←v36464, testPoint←v36492, tolerance←v36520)
   word formal←c0295;
   word sliceD←v36464;
   W2 testPoint←v36492;
   word tolerance←v36520;
   {
   W2 bestPoint←v36564;
   word bestDist←v36592;
   W2 tangent←v36620;
   word hitData←v36648;
   word success←v36676;
   /* ClosestPointAndTangent: */ 
SOURCE(6594, 189)
SOURCE(6594, 189)
   hitData←v36648 = 0;
SOURCE(6661, 122)
   {
      W7 var←c61936;
      {
         word pd103;
         pd103 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v36464 ) ))+40) );
         (void) ( *( (fPt) ((*  (ptr) pd103 ))))((word) &var←c61936, sliceD←v36464, testPoint←v36492, tolerance←v36520, pd103);
         };
      success←v36676 = var←c61936.f6;
      hitData←v36648 = var←c61936.f5;
      tangent←v36620 = (*  (W2Pt) (( (ptr) &var←c61936)+3) );
      bestDist←v36592 = var←c61936.f2;
      bestPoint←v36564 = (*  (W2Pt) &var←c61936 );
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0295 ) = bestPoint←v36564;
   (* (( (ptr) formal←c0295)+2) ) = bestDist←v36592;
   (*  (W2Pt) (( (ptr) formal←c0295)+3) ) = tangent←v36620;
   (* (( (ptr) formal←c0295)+5) ) = hitData←v36648;
   (* (( (ptr) formal←c0295)+6) ) = success←v36676;
   return;
   }

static void ClosestSegment←P2520(formal←c0306, sliceD←v36736, testPoint←v36764, tolerance←v36792)
   word formal←c0306;
   word sliceD←v36736;
   W2 testPoint←v36764;
   word tolerance←v36792;
   {
   W2 bestPoint←v36836;
   word bestDist←v36864;
   W2 bestNormal←v36892;
   word hitData←v36920;
   word success←v36948;
   /* ClosestSegment: */ 
SOURCE(6787, 169)
SOURCE(6787, 169)
   hitData←v36920 = 0;
SOURCE(6838, 118)
   {
      W7 var←c61968;
      {
         word pd104;
         pd104 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v36736 ) ))+41) );
         (void) ( *( (fPt) ((*  (ptr) pd104 ))))((word) &var←c61968, sliceD←v36736, testPoint←v36764, tolerance←v36792, pd104);
         };
      success←v36948 = var←c61968.f6;
      hitData←v36920 = var←c61968.f5;
      bestNormal←v36892 = (*  (W2Pt) (( (ptr) &var←c61968)+3) );
      bestDist←v36864 = var←c61968.f2;
      bestPoint←v36836 = (*  (W2Pt) &var←c61968 );
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0306 ) = bestPoint←v36836;
   (* (( (ptr) formal←c0306)+2) ) = bestDist←v36864;
   (*  (W2Pt) (( (ptr) formal←c0306)+3) ) = bestNormal←v36892;
   (* (( (ptr) formal←c0306)+5) ) = hitData←v36920;
   (* (( (ptr) formal←c0306)+6) ) = success←v36948;
   return;
   }

static void FilledPathsUnderPoint←P2580(formal←c0316, slice←v37008, point←v37036, tolerance←v37064)
   word formal←c0316;
   word slice←v37008;
   W2 point←v37036;
   word tolerance←v37064;
   {
   register ptr gf←c65520 =  (ptr) &globalframe;
   word hitData←v37108;
   word moreHitDatas←v37136;
   /* FilledPathsUnderPoint: */ 
SOURCE(6960, 251)
SOURCE(6960, 251)
   hitData←v37108 = 0;
SOURCE(6960, 251)
   moreHitDatas←v37136 = 0;
SOURCE(7025, 186)
   if (((* (( (ptr) (*  (ptr) slice←v37008 ))+42) ) == 0)) {
SOURCE(7073, 71)
      {
         W2 var←c62000;
         {
            word pd105;
            pd105 = (* (( (ptr) (* (( (ptr) gf←c65520)+211)/* var←c61168 */  ))+110) );
            (void) ( *( (fPt) ((*  (ptr) pd105 ))))((word) &var←c62000, slice←v37008, point←v37036, tolerance←v37064, pd105);
            };
         hitData←v37108 = var←c62000.f0;
         moreHitDatas←v37136 = var←c62000.f1;
         /* removed tail goto */ 
         };
      }
   else {
SOURCE(7146, 65)
      {
         W2 var←c62032;
         {
            word pd106;
            pd106 = (* (( (ptr) (*  (ptr) slice←v37008 ))+42) );
            (void) ( *( (fPt) ((*  (ptr) pd106 ))))((word) &var←c62032, slice←v37008, point←v37036, tolerance←v37064, pd106);
            };
         hitData←v37108 = var←c62032.f0;
         moreHitDatas←v37136 = var←c62032.f1;
         /* removed tail goto */ 
         };
      };
   (*  (ptr) formal←c0316 ) = hitData←v37108;
   (* (( (ptr) formal←c0316)+1) ) = moreHitDatas←v37136;
   return;
   }

static void LineIntersection←P2640(formal←c0323, sliceD←v37196, line←v37224)
   word formal←c0323;
   word sliceD←v37196;
   word line←v37224;
   {
   word points←v37268;
   word pointCount←v37296;
   /* LineIntersection: */ 
SOURCE(7220, 127)
SOURCE(7220, 127)
   points←v37268 = 0;
SOURCE(7275, 72)
   {
      W2 var←c62064;
      {
         word pd107;
         pd107 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v37196 ) ))+43) );
         (void) ( *( (fPt) ((*  (ptr) pd107 ))))((word) &var←c62064, sliceD←v37196, line←v37224, pd107);
         };
      pointCount←v37296 = var←c62064.f1;
      points←v37268 = var←c62064.f0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0323 ) = points←v37268;
   (* (( (ptr) formal←c0323)+1) ) = pointCount←v37296;
   return;
   }

static void CircleIntersection←P2700(formal←c0330, sliceD←v37356, circle←v37384)
   word formal←c0330;
   word sliceD←v37356;
   word circle←v37384;
   {
   word points←v37428;
   word pointCount←v37456;
   /* CircleIntersection: */ 
SOURCE(7351, 135)
SOURCE(7351, 135)
   points←v37428 = 0;
SOURCE(7410, 76)
   {
      W2 var←c62096;
      {
         word pd108;
         pd108 = (* (( (ptr) (*  (ptr) (*  (ptr) sliceD←v37356 ) ))+44) );
         (void) ( *( (fPt) ((*  (ptr) pd108 ))))((word) &var←c62096, sliceD←v37356, circle←v37384, pd108);
         };
      pointCount←v37456 = var←c62096.f1;
      points←v37428 = var←c62096.f0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0330 ) = points←v37428;
   (* (( (ptr) formal←c0330)+1) ) = pointCount←v37456;
   return;
   }

static word HitDataAsSimpleCurve←P2760(slice←v37516, hitData←v37544)
   word slice←v37516;
   word hitData←v37544;
   {
   word simpleCurve←v37588;
   /* HitDataAsSimpleCurve: */ 
SOURCE(7490, 119)
SOURCE(7490, 119)
   simpleCurve←v37588 = 0;
SOURCE(7553, 56)
   {
      word pd109;
      pd109 = (* (( (ptr) (*  (ptr) slice←v37516 ))+45) );
      return((word) ( *( (fPt) ((*  (ptr) pd109 ))))(slice←v37516, hitData←v37544, pd109));
      };
   }

static void SetDefaults←P2820(slice←v37648, parts←v37676, defaults←v37704, history←v37732)
   word slice←v37648;
   word parts←v37676;
   word defaults←v37704;
   word history←v37732;
   {
   /* SetDefaults: */ 
SOURCE(7613, 102)
SOURCE(7659, 56)
   {
      word pd110;
      pd110 = (* (( (ptr) (*  (ptr) slice←v37648 ))+46) );
      (void) ( *( (fPt) ((*  (ptr) pd110 ))))(slice←v37648, parts←v37676, defaults←v37704, history←v37732, pd110);
      };
   }

static word SetStrokeWidth←P2880(slice←v37792, parts←v37820, strokeWidth←v37848, history←v37876)
   word slice←v37792;
   word parts←v37820;
   word strokeWidth←v37848;
   word history←v37876;
   {
   register ptr gf←c65552 =  (ptr) &globalframe;
   word box←v37920;
   word oldValue←v8904;
   /* SetStrokeWidth: */ 
SOURCE(7720, 320)
SOURCE(7720, 320)
   box←v37920 = 0;
SOURCE(7772, 85)
   {
      W2 var←c0345;
      word var←c62160;
      word var←c62192;
      {
         word pd111;
         pd111 = (* (( (ptr) (*  (ptr) slice←v37792 ))+48) );
         (void) ( *( (fPt) ((*  (ptr) pd111 ))))((word) &var←c0345, slice←v37792, parts←v37820, pd111);
         };
      var←c62160 = var←c0345.f0;
      var←c62192 = XR←NewObject(4, (* (( (ptr) gf←c65552)+12) ));
      (*  (ptr) var←c62192 ) = var←c62160;
      oldValue←v8904 = var←c62192;
      };
SOURCE(7859, 68)
   {
      word pd112;
      pd112 = (* (( (ptr) (*  (ptr) slice←v37792 ))+47) );
      box←v37920 = (word) ( *( (fPt) ((*  (ptr) pd112 ))))(slice←v37792, parts←v37820, strokeWidth←v37848, history←v37876, pd112)
      ;
      };
SOURCE(7929, 98)
   (void) GenericPropsUndo←P4380((* (( (ptr) gf←c65552)+45) ), slice←v37792, parts←v37820, oldValue←v8904, history←v37876);
SOURCE(8029, 11)
   return(box←v37920);
   }

static void GetStrokeWidth←P2940(formal←c0353, slice←v37980, parts←v38008)
   word formal←c0353;
   word slice←v37980;
   word parts←v38008;
   {
   word strokeWidth←v38052;
   word isUnique←v38080;
   /* GetStrokeWidth: */ 
SOURCE(8045, 99)
SOURCE(8045, 99)
   strokeWidth←v38052 = (*  (ptr) &fc113 );
SOURCE(8045, 99)
   isUnique←v38080 = 1;
SOURCE(8097, 47)
   {
      W2 var←c62224;
      {
         word pd114;
         pd114 = (* (( (ptr) (*  (ptr) slice←v37980 ))+48) );
         (void) ( *( (fPt) ((*  (ptr) pd114 ))))((word) &var←c62224, slice←v37980, parts←v38008, pd114);
         };
      strokeWidth←v38052 = var←c62224.f0;
      isUnique←v38080 = var←c62224.f1;
      /* removed tail goto */ 
      };
   (*  (ptr) formal←c0353 ) = strokeWidth←v38052;
   (* (( (ptr) formal←c0353)+1) ) = isUnique←v38080;
   return;
   }

static void SetStrokeEnd←P3000(slice←v38140, parts←v38168, strokeEnd←v38196, history←v38224)
   word slice←v38140;
   word parts←v38168;
   word strokeEnd←v38196;
   word history←v38224;
   {
   register ptr gf←c65584 =  (ptr) &globalframe;
   word oldValue←v8960;
   /* SetStrokeEnd: */ 
SOURCE(8149, 317)
SOURCE(8197, 46)
   oldValue←v8960 = XR←NewObject(4, (* (( (ptr) gf←c65584)+14) ));
SOURCE(8245, 63)
   {
      word var←c62256;
      W2 var←c0360;
      {
         word pd115;
         pd115 = (* (( (ptr) (*  (ptr) slice←v38140 ))+50) );
         (void) ( *( (fPt) ((*  (ptr) pd115 ))))((word) &var←c0360, slice←v38140, parts←v38168, pd115);
         };
      var←c62256 = var←c0360.f0;
      (*  (ptr) oldValue←v8960 ) = var←c62256;
      };
SOURCE(8310, 58)
   {
      word pd116;
      pd116 = (* (( (ptr) (*  (ptr) slice←v38140 ))+49) );
      (void) ( *( (fPt) ((*  (ptr) pd116 ))))(slice←v38140, parts←v38168, strokeEnd←v38196, history←v38224, pd116);
      };
SOURCE(8370, 96)
   (void) GenericPropsUndo←P4380((* (( (ptr) gf←c65584)+44) ), slice←v38140, parts←v38168, oldValue←v8960, history←v38224);
   }

static void GetStrokeEnd←P3060(formal←c0367, slice←v38284, parts←v38312)
   word formal←c0367;
   word slice←v38284;
   word parts←v38312;
   {
   word strokeEnd←v38356;
   word isUnique←v38384;
   /* GetStrokeEnd: */ 
SOURCE(8471, 93)
SOURCE(8471, 93)
   strokeEnd←v38356 = 2;
SOURCE(8471, 93)
   isUnique←v38384 = 1;
SOURCE(8519, 45)
   {
      W2 var←c62288;
      {
         word pd117;
         pd117 = (* (( (ptr) (*  (ptr) slice←v38284 ))+50) );
         (void) ( *( (fPt) ((*  (ptr) pd117 ))))((word) &var←c62288, slice←v38284, parts←v38312, pd117);
         };
      strokeEnd←v38356 = var←c62288.f0;
      isUnique←v38384 = var←c62288.f1;
      /* removed tail goto */ 
      };
   (*  (ptr) formal←c0367 ) = strokeEnd←v38356;
   (* (( (ptr) formal←c0367)+1) ) = isUnique←v38384;
   return;
   }

static void SetStrokeJoint←P3120(slice←v38444, parts←v38472, strokeJoint←v38500, history←v38528)
   word slice←v38444;
   word parts←v38472;
   word strokeJoint←v38500;
   word history←v38528;
   {
   register ptr gf←c65616 =  (ptr) &globalframe;
   word oldValue←v9016;
   /* SetStrokeJoint: */ 
SOURCE(8569, 337)
SOURCE(8621, 50)
   oldValue←v9016 = XR←NewObject(4, (* (( (ptr) gf←c65616)+16) ));
SOURCE(8673, 69)
   {
      word var←c62320;
      W2 var←c0374;
      {
         word pd118;
         pd118 = (* (( (ptr) (*  (ptr) slice←v38444 ))+52) );
         (void) ( *( (fPt) ((*  (ptr) pd118 ))))((word) &var←c0374, slice←v38444, parts←v38472, pd118);
         };
      var←c62320 = var←c0374.f0;
      (*  (ptr) oldValue←v9016 ) = var←c62320;
      };
SOURCE(8744, 62)
   {
      word pd119;
      pd119 = (* (( (ptr) (*  (ptr) slice←v38444 ))+51) );
      (void) ( *( (fPt) ((*  (ptr) pd119 ))))(slice←v38444, parts←v38472, strokeJoint←v38500, history←v38528, pd119);
      };
SOURCE(8808, 98)
   (void) GenericPropsUndo←P4380((* (( (ptr) gf←c65616)+43) ), slice←v38444, parts←v38472, oldValue←v9016, history←v38528);
   }

static void GetStrokeJoint←P3180(formal←c0381, slice←v38588, parts←v38616)
   word formal←c0381;
   word slice←v38588;
   word parts←v38616;
   {
   word strokeJoint←v38660;
   word isUnique←v38688;
   /* GetStrokeJoint: */ 
SOURCE(8911, 99)
SOURCE(8911, 99)
   strokeJoint←v38660 = 2;
SOURCE(8911, 99)
   isUnique←v38688 = 1;
SOURCE(8963, 47)
   {
      W2 var←c62352;
      {
         word pd120;
         pd120 = (* (( (ptr) (*  (ptr) slice←v38588 ))+52) );
         (void) ( *( (fPt) ((*  (ptr) pd120 ))))((word) &var←c62352, slice←v38588, parts←v38616, pd120);
         };
      strokeJoint←v38660 = var←c62352.f0;
      isUnique←v38688 = var←c62352.f1;
      /* removed tail goto */ 
      };
   (*  (ptr) formal←c0381 ) = strokeJoint←v38660;
   (* (( (ptr) formal←c0381)+1) ) = isUnique←v38688;
   return;
   }

static void SetStrokeColor←P3240(slice←v38748, parts←v38776, color←v38804, setHow←v38832, history←v38860)
   word slice←v38748;
   word parts←v38776;
   word color←v38804;
   word setHow←v38832;
   word history←v38860;
   {
   register ptr gf←c65648 =  (ptr) &globalframe;
   word oldValue←v9072;
   W2 var←c0388;
   /* SetStrokeColor: */ 
SOURCE(9015, 289)
SOURCE(9067, 71)
   {
      word pd121;
      pd121 = (* (( (ptr) (*  (ptr) slice←v38748 ))+54) );
      (void) ( *( (fPt) ((*  (ptr) pd121 ))))((word) &var←c0388, slice←v38748, parts←v38776, pd121);
      };
   oldValue←v9072 = var←c0388.f0;
SOURCE(9140, 64)
   {
      word pd122;
      pd122 = (* (( (ptr) (*  (ptr) slice←v38748 ))+53) );
      (void) ( *( (fPt) ((*  (ptr) pd122 ))))(slice←v38748, parts←v38776, color←v38804, setHow←v38832, history←v38860, pd122);
      };
SOURCE(9206, 98)
   (void) GenericPropsUndo←P4380((* (( (ptr) gf←c65648)+42) ), slice←v38748, parts←v38776, oldValue←v9072, history←v38860);
   }

static void GetStrokeColor←P3300(formal←c0395, slice←v38920, parts←v38948)
   word formal←c0395;
   word slice←v38920;
   word parts←v38948;
   {
   word color←v38992;
   word isUnique←v39020;
   /* GetStrokeColor: */ 
SOURCE(9309, 99)
SOURCE(9309, 99)
   color←v38992 = 0;
SOURCE(9309, 99)
   isUnique←v39020 = 1;
SOURCE(9361, 47)
   {
      W2 var←c62384;
      {
         word pd123;
         pd123 = (* (( (ptr) (*  (ptr) slice←v38920 ))+54) );
         (void) ( *( (fPt) ((*  (ptr) pd123 ))))((word) &var←c62384, slice←v38920, parts←v38948, pd123);
         };
      color←v38992 = var←c62384.f0;
      isUnique←v39020 = var←c62384.f1;
      /* removed tail goto */ 
      };
   (*  (ptr) formal←c0395 ) = color←v38992;
   (* (( (ptr) formal←c0395)+1) ) = isUnique←v39020;
   return;
   }

static void SetFillColor←P3360(slice←v39080, parts←v39108, color←v39136, setHow←v39164, history←v39192)
   word slice←v39080;
   word parts←v39108;
   word color←v39136;
   word setHow←v39164;
   word history←v39192;
   {
   register ptr gf←c65680 =  (ptr) &globalframe;
   word oldValue←v9116;
   W2 var←c0402;
   /* SetFillColor: */ 
SOURCE(9413, 279)
SOURCE(9461, 69)
   {
      word pd124;
      pd124 = (* (( (ptr) (*  (ptr) slice←v39080 ))+56) );
      (void) ( *( (fPt) ((*  (ptr) pd124 ))))((word) &var←c0402, slice←v39080, parts←v39108, pd124);
      };
   oldValue←v9116 = var←c0402.f0;
SOURCE(9532, 62)
   {
      word pd125;
      pd125 = (* (( (ptr) (*  (ptr) slice←v39080 ))+55) );
      (void) ( *( (fPt) ((*  (ptr) pd125 ))))(slice←v39080, parts←v39108, color←v39136, setHow←v39164, history←v39192, pd125);
      };
SOURCE(9596, 96)
   (void) GenericPropsUndo←P4380((* (( (ptr) gf←c65680)+27) ), slice←v39080, parts←v39108, oldValue←v9116, history←v39192);
   }

static void GetFillColor←P3420(formal←c0409, slice←v39252, parts←v39280)
   word formal←c0409;
   word slice←v39252;
   word parts←v39280;
   {
   word color←v39324;
   word isUnique←v39352;
   /* GetFillColor: */ 
SOURCE(9697, 93)
SOURCE(9697, 93)
   color←v39324 = 0;
SOURCE(9697, 93)
   isUnique←v39352 = 1;
SOURCE(9745, 45)
   {
      W2 var←c62416;
      {
         word pd126;
         pd126 = (* (( (ptr) (*  (ptr) slice←v39252 ))+56) );
         (void) ( *( (fPt) ((*  (ptr) pd126 ))))((word) &var←c62416, slice←v39252, parts←v39280, pd126);
         };
      color←v39324 = var←c62416.f0;
      isUnique←v39352 = var←c62416.f1;
      /* removed tail goto */ 
      };
   (*  (ptr) formal←c0409 ) = color←v39324;
   (* (( (ptr) formal←c0409)+1) ) = isUnique←v39352;
   return;
   }

static void SetArrows←P3480(slice←v39412, parts←v39440, leftDown←v39468, rightUp←v39496, history←v39524)
   word slice←v39412;
   word parts←v39440;
   word leftDown←v39468;
   word rightUp←v39496;
   word history←v39524;
   {
   register ptr gf←c65712 =  (ptr) &globalframe;
   word oldValue←v9160;
   /* SetArrows: */ 
SOURCE(9795, 310)
SOURCE(9837, 38)
   oldValue←v9160 = XR←NewObject(8, (* (( (ptr) gf←c65712)+20) ));
SOURCE(9877, 68)
   {
      W2 var←c62480;
      {
         word pd127;
         pd127 = (* (( (ptr) (*  (ptr) slice←v39412 ))+58) );
         (void) ( *( (fPt) ((*  (ptr) pd127 ))))((word) &var←c62480, slice←v39412, pd127);
         };
      (* (( (ptr) oldValue←v9160)+1) ) = var←c62480.f1;
      (*  (ptr) oldValue←v9160 ) = var←c62480.f0;
      };
SOURCE(9947, 63)
   {
      word pd128;
      pd128 = (* (( (ptr) (*  (ptr) slice←v39412 ))+57) );
      (void) ( *( (fPt) ((*  (ptr) pd128 ))))(slice←v39412, parts←v39440, leftDown←v39468, rightUp←v39496, history←v39524, pd128)
      ;
      };
SOURCE(10012, 93)
   (void) GenericPropsUndo←P4380((* (( (ptr) gf←c65712)+26) ), slice←v39412, parts←v39440, oldValue←v9160, history←v39524);
   }

static void GetArrows←P3540(formal←c0423, slice←v39584)
   word formal←c0423;
   word slice←v39584;
   {
   word leftDown←v39628;
   word rightUp←v39656;
   /* GetArrows: */ 
SOURCE(10110, 77)
SOURCE(10110, 77)
   leftDown←v39628 = 0;
SOURCE(10110, 77)
   rightUp←v39656 = 0;
SOURCE(10152, 35)
   {
      W2 var←c62512;
      {
         word pd129;
         pd129 = (* (( (ptr) (*  (ptr) slice←v39584 ))+58) );
         (void) ( *( (fPt) ((*  (ptr) pd129 ))))((word) &var←c62512, slice←v39584, pd129);
         };
      leftDown←v39628 = var←c62512.f0;
      rightUp←v39656 = var←c62512.f1;
      /* removed tail goto */ 
      };
   (*  (ptr) formal←c0423 ) = leftDown←v39628;
   (* (( (ptr) formal←c0423)+1) ) = rightUp←v39656;
   return;
   }

static void SetDashed←P3600(slice←v39716, parts←v39744, dashed←v39772, pattern←v39800, offset←v39828, length←v39856, history←v39884)
   word slice←v39716;
   word parts←v39744;
   word dashed←v39772;
   word pattern←v39800;
   word offset←v39828;
   word length←v39856;
   word history←v39884;
   {
   register ptr gf←c65744 =  (ptr) &globalframe;
   word oldValue←v9216;
   /* SetDashed: */ 
SOURCE(10192, 365)
SOURCE(10234, 40)
   oldValue←v9216 = XR←NewObject(16, (* (( (ptr) gf←c65744)+22) ));
SOURCE(10276, 107)
   {
      W5 var←c62576;
      {
         word pd130;
         pd130 = (* (( (ptr) (*  (ptr) slice←v39716 ))+60) );
         (void) ( *( (fPt) ((*  (ptr) pd130 ))))((word) &var←c62576, slice←v39716, parts←v39744, pd130);
         };
      (* (( (ptr) oldValue←v9216)+3) ) = var←c62576.f3;
      (* (( (ptr) oldValue←v9216)+2) ) = var←c62576.f2;
      (* (( (ptr) oldValue←v9216)+1) ) = var←c62576.f1;
      (*  (ptr) oldValue←v9216 ) = var←c62576.f0;
      };
SOURCE(10385, 77)
   {
      word pd131;
      pd131 = (* (( (ptr) (*  (ptr) slice←v39716 ))+59) );
      (void) ( *( (fPt) ((*  (ptr) pd131 ))))(slice←v39716, parts←v39744, dashed←v39772, pattern←v39800, offset←v39828, length←v39856
         , history←v39884, pd131);
      };
SOURCE(10464, 93)
   (void) GenericPropsUndo←P4380((* (( (ptr) gf←c65744)+24) ), slice←v39716, parts←v39744, oldValue←v9216, history←v39884);
   }

static void GetDashed←P3660(formal←c0443, slice←v39944, parts←v39972)
   word formal←c0443;
   word slice←v39944;
   word parts←v39972;
   {
   word dashed←v40016;
   word pattern←v40044;
   word offset←v40072;
   word length←v40100;
   word isUnique←v40128;
   /* GetDashed: */ 
SOURCE(10562, 84)
SOURCE(10562, 84)
   dashed←v40016 = 0;
SOURCE(10562, 84)
   pattern←v40044 = 0;
SOURCE(10562, 84)
   offset←v40072 = (*  (ptr) &fc113 );
SOURCE(10562, 84)
   length←v40100 = (*  (ptr) &fc113 );
SOURCE(10562, 84)
   isUnique←v40128 = 1;
SOURCE(10604, 42)
   {
      W5 var←c62608;
      {
         word pd132;
         pd132 = (* (( (ptr) (*  (ptr) slice←v39944 ))+60) );
         (void) ( *( (fPt) ((*  (ptr) pd132 ))))((word) &var←c62608, slice←v39944, parts←v39972, pd132);
         };
      dashed←v40016 = var←c62608.f0;
      pattern←v40044 = var←c62608.f1;
      offset←v40072 = var←c62608.f2;
      length←v40100 = var←c62608.f3;
      isUnique←v40128 = var←c62608.f4;
      /* removed tail goto */ 
      };
   (*  (ptr) formal←c0443 ) = dashed←v40016;
   (* (( (ptr) formal←c0443)+1) ) = pattern←v40044;
   (* (( (ptr) formal←c0443)+2) ) = offset←v40072;
   (* (( (ptr) formal←c0443)+3) ) = length←v40100;
   (* (( (ptr) formal←c0443)+4) ) = isUnique←v40128;
   return;
   }

static word SetOrientation←P3720(slice←v40188, parts←v40216, orientation←v40244, history←v40272)
   word slice←v40188;
   word parts←v40216;
   word orientation←v40244;
   word history←v40272;
   {
   register ptr gf←c65776 =  (ptr) &globalframe;
   word success←v40316;
   word oldValue←v9272;
   /* SetOrientation: */ 
SOURCE(10651, 342)
SOURCE(10703, 50)
   oldValue←v9272 = XR←NewObject(4, (* (( (ptr) gf←c65776)+23) ));
SOURCE(10755, 66)
   {
      word var←c62640;
      W2 var←c0451;
      {
         word pd133;
         pd133 = (* (( (ptr) (*  (ptr) slice←v40188 ))+62) );
         (void) ( *( (fPt) ((*  (ptr) pd133 ))))((word) &var←c0451, slice←v40188, parts←v40216, pd133);
         };
      var←c62640 = var←c0451.f0;
      (*  (ptr) oldValue←v9272 ) = var←c62640;
      };
SOURCE(10823, 72)
   {
      word pd134;
      pd134 = (* (( (ptr) (*  (ptr) slice←v40188 ))+61) );
      success←v40316 = (word) ( *( (fPt) ((*  (ptr) pd134 ))))(slice←v40188, parts←v40216, orientation←v40244, history←v40272, pd134)
      ;
      };
SOURCE(10897, 96)
   (void) GenericPropsUndo←P4380((* (( (ptr) gf←c65776)+25) ), slice←v40188, 0, oldValue←v9272, history←v40272);
SOURCE(10651, 342)
   return(success←v40316);
   }

static void GetOrientation←P3780(formal←c0458, slice←v40376, parts←v40404)
   word formal←c0458;
   word slice←v40376;
   word parts←v40404;
   {
   word orientation←v40448;
   word isUnique←v40476;
   /* GetOrientation: */ 
SOURCE(10999, 99)
SOURCE(10999, 99)
   isUnique←v40476 = 1;
SOURCE(11051, 47)
   {
      W2 var←c62672;
      {
         word pd135;
         pd135 = (* (( (ptr) (*  (ptr) slice←v40376 ))+62) );
         (void) ( *( (fPt) ((*  (ptr) pd135 ))))((word) &var←c62672, slice←v40376, parts←v40404, pd135);
         };
      orientation←v40448 = var←c62672.f0;
      isUnique←v40476 = var←c62672.f1;
      /* removed tail goto */ 
      };
   (*  (ptr) formal←c0458 ) = orientation←v40448;
   (* (( (ptr) formal←c0458)+1) ) = isUnique←v40476;
   return;
   }

static void FileoutSlice←P3840(f←v6740, slice←v6768)
   word f←v6740;
   word slice←v6768;
   {
   register ptr gf←c65808 =  (ptr) &globalframe;
   word type←v9328;
   /* FileoutSlice: */ 
SOURCE(11259, 237)
SOURCE(11318, 38)
   {
      word pd136;
      pd136 = (* (( (ptr) (* (( (ptr) gf←c65808)+212)/* var←c62704 */  ))+6) );
      type←v9328 = (word) ( *( (fPt) ((*  (ptr) pd136 ))))(slice←v6768, pd136);
      };
SOURCE(11358, 44)
   {
      word var←c62736;
      {
         word pd137;
         pd137 = (* (( (ptr) (* (( (ptr) gf←c65808)+213)/* var←c62768 */  ))+9) );
         var←c62736 = (word) ( *( (fPt) ((*  (ptr) pd137 ))))(type←v9328, pd137);
         };
      {
         W2 var←c62800;
         var←c62800.f0 = 11;
         var←c62800.f1 = var←c62736;
         {
            word pd138;
            pd138 = (* (( (ptr) (* (( (ptr) gf←c65808)+214)/* var←c62832 */  ))+61) );
            (void) ( *( (fPt) ((*  (ptr) pd138 ))))(f←v6740, (* (( (ptr) gf←c65808)+28) ), var←c62800, pd138);
            };
         };
      };
SOURCE(11404, 28)
   {
      word pd139;
      pd139 = (* (( (ptr) (* (( (ptr) gf←c65808)+212)/* var←c62704 */  ))+25) );
      (void) ( *( (fPt) ((*  (ptr) pd139 ))))(slice←v6768, f←v6740, pd139);
      };
SOURCE(11434, 62)
   {
      word pd140;
      pd140 = (* (( (ptr) (* (( (ptr) gf←c65808)+215)/* var←c62864 */  ))+63) );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd140 ))))(type←v9328, pd140))) {
SOURCE(11474, 22)
         (void) FileoutPList←P3900(f←v6740, slice←v6768);
         };
      };
   }

static void FileoutPList←P3900(formal←c0673, slice←v6856)
   word formal←c0673;
   word slice←v6856;
   {
   W7 var←c65840;
   /* declaration of f←v6828 skipped */ 
   register ptr gf←c65872 =  (ptr) &globalframe;
   /* declaration of var←c62896 skipped */ 
   word buttonClassName←v9400 = 0;
   word success←v9428 = 1;
   var←c65840.f4/* f←v6828 */  = formal←c0673;
   /* FileoutPList: */ 
SOURCE(11502, 983)
   {
      word tmpAddr141;
      tmpAddr141 = (word) (( (ptr) &var←c65840)+5)/* var←c62896 */ ;
      (*  (ptr) tmpAddr141 ) = ( ((word)  (fPt) FileoutProp←P4800) );
      (* (( (ptr) tmpAddr141) + 1) ) = 1;
      };
SOURCE(12234, 23)
   {
      word pd142;
      pd142 = (* (( (ptr) (* (( (ptr) gf←c65872)+214)/* var←c62832 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd142 ))))(var←c65840.f4/* f←v6828 */ , (* (( (ptr) gf←c65872)+29) ), 0, 2147483647, pd142);
      };
SOURCE(12321, 101)
   if (((* (( (ptr) slice←v6856)+22) ) != 0)) {
SOURCE(12345, 77)
      {
         word var←c62992;
         {
            word var←c62928;
            {
               word pd143;
               pd143 = (* (( (ptr) (* (( (ptr) gf←c65872)+212)/* var←c62704 */  ))+29) );
               var←c62928 = (word) ( *( (fPt) ((*  (ptr) pd143 ))))(slice←v6856, 0, 6, pd143);
               };
            {
               word pd144;
               pd144 = (* (( (ptr) (* (( (ptr) gf←c65872)+216)/* var←c62960 */  ))+8) );
               var←c62992 = (word) ( *( (fPt) ((*  (ptr) pd144 ))))(slice←v6856, var←c62928, (word) (( (bPt) &var←c65840)+20)/* var←c62896 */ , pd144)
               ;
               };
            };
         };
      };
SOURCE(12424, 61)
   {
      word pd145;
      pd145 = (* (( (ptr) (* (( (ptr) gf←c65872)+214)/* var←c62832 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd145 ))))(var←c65840.f4/* f←v6828 */ , (* (( (ptr) gf←c65872)+30) ), 0, 2147483647, pd145);
      };
   }

static word FileoutProp←P4800(key←v9504, val←v9532, formal←c65936)
   word key←v9504;
   word val←v9532;
   word formal←c65936;
   {
   register ptr gf←c65904 =  (ptr) &globalframe;
   word done←v9588;
   word r←v9616 = 0;
   word vf←v9644;
   formal←c65936 = (formal←c65936 - 20);
   /* FileoutProp: */ 
SOURCE(11556, 600)
SOURCE(11556, 600)
   done←v9588 = 0;
SOURCE(11658, 34)
   {
      W2 var←c63024;
      {
         word pd146;
         pd146 = (* (( (ptr) (* (( (ptr) gf←c65904)+216)/* var←c62960 */  ))+11) );
         (void) ( *( (fPt) ((*  (ptr) pd146 ))))((word) &var←c63024, key←v9504, val←v9532, pd146);
         };
      vf←v9644 = var←c63024.f1;
      r←v9616 = var←c63024.f0;
      };
   {
      word pd147;
      pd147 = (* (( (ptr) (* (( (ptr) gf←c65904)+217)/* var←c63056 */  ))+14) );
      if (( (int)(word) ( *( (fPt) ((*  (ptr) pd147 ))))(r←v9616, pd147) ==  (int)0)) {
SOURCE(11769, 6)
         return(done←v9588);
         }
      else {
         if ((vf←v9644 == 1)) {
SOURCE(11835, 44)
            {
               word var←c63088;
               {
                  word pd148;
                  pd148 = (* (( (ptr) (* (( (ptr) gf←c65904)+213)/* var←c62768 */  ))+9) );
                  var←c63088 = (word) ( *( (fPt) ((*  (ptr) pd148 ))))(key←v9504, pd148);
                  };
               {
                  W2 var←c63120;
                  var←c63120.f0 = 11;
                  var←c63120.f1 = var←c63088;
                  {
                     word pd149;
                     pd149 = (* (( (ptr) (* (( (ptr) gf←c65904)+214)/* var←c62832 */  ))+61) );
                     (void) ( *( (fPt) ((*  (ptr) pd149 ))))((* (( (ptr) formal←c65936)+4) ), (* (( (ptr) gf←c65904)+31) ), var←c63120, pd149)
                     ;
                     };
                  };
               };
SOURCE(11906, 87)
            {
               W2 var←c63152;
               W2 var←c63184;
               W2 var←c63216;
               var←c63152.f0 = 3;
               var←c63152.f1 = 26;
               var←c63184.f0 = 11;
               var←c63184.f1 = r←v9616;
               var←c63216.f0 = 3;
               var←c63216.f1 = 7;
               {
                  word pd150;
                  pd150 = (* (( (ptr) (* (( (ptr) gf←c65904)+214)/* var←c62832 */  ))+60) );
                  (void) ( *( (fPt) ((*  (ptr) pd150 ))))((* (( (ptr) formal←c65936)+4) ), (* (( (ptr) gf←c65904)+32) ), var←c63152, var←c63184, var←c63216, pd150)
                  ;
                  };
               };
            }
         else {
            if ((vf←v9644 == 0)) {
SOURCE(12013, 145)
               {
                  word c←v9688;
SOURCE(12015, 23)
                  {
                     word pd151;
                     pd151 = (* (( (ptr) (* (( (ptr) gf←c65904)+217)/* var←c63056 */  ))+14) );
                     c←v9688 = (word) ( *( (fPt) ((*  (ptr) pd151 ))))(r←v9616, pd151);
                     };
SOURCE(12040, 44)
                  {
                     word var←c63248;
                     {
                        word pd152;
                        pd152 = (* (( (ptr) (* (( (ptr) gf←c65904)+213)/* var←c62768 */  ))+9) );
                        var←c63248 = (word) ( *( (fPt) ((*  (ptr) pd152 ))))(key←v9504, pd152);
                        };
                     {
                        W2 var←c63280;
                        var←c63280.f0 = 11;
                        var←c63280.f1 = var←c63248;
                        {
                           word pd153;
                           pd153 = (* (( (ptr) (* (( (ptr) gf←c65904)+214)/* var←c62832 */  ))+61) );
                           (void) ( *( (fPt) ((*  (ptr) pd153 ))))((* (( (ptr) formal←c65936)+4) ), (* (( (ptr) gf←c65904)+31) ), var←c63280, pd153)
                           ;
                           };
                        };
                     };
SOURCE(12111, 45)
                  {
                     W2 var←c63312;
                     W2 var←c63344;
                     W2 var←c0668;
                     var←c63312.f0 = 5;
                     var←c63312.f1 = c←v9688;
                     var←c63344.f0 = 11;
                     var←c63344.f1 = r←v9616;
                     (*  (ptr) (word) &var←c0668 ) = 0;
                     (* (( (ptr) (word) &var←c0668) + 1) ) = 0;
                     {
                        word pd154;
                        pd154 = (* (( (ptr) (* (( (ptr) gf←c65904)+214)/* var←c62832 */  ))+60) );
                        (void) ( *( (fPt) ((*  (ptr) pd154 ))))((* (( (ptr) formal←c65936)+4) ), (* (( (ptr) gf←c65904)+33) ), var←c63312, var←c63344, var←c0668, pd154)
                        ;
                        };
                     };
                  };
               }
            else {
SOURCE(12172, 5)
               (void) XR←RaiseUnnamedError();
               };
            };
         };
      };
SOURCE(11556, 600)
   return(done←v9588);
   }

static word FileinSlice←P3960(f←v6916, version←v6944, router←v6972, camera←v7000, class←v7028)
   word f←v6916;
   word version←v6944;
   word router←v6972;
   word camera←v7000;
   word class←v7028;
   {
   register ptr gf←c65968 =  (ptr) &globalframe;
   word slice←v7072;
   word className←v9732;
   word type←v9760 = 0;
   /* FileinSlice: */ 
SOURCE(12489, 876)
SOURCE(12489, 876)
   slice←v7072 = 0;
SOURCE(12659, 29)
   className←v9732 = (* (( (ptr) gf←c65968)+34) );
   {
      word var←c63440;
SOURCE(12744, 350)
      if ((class←v7028 == 0)) {
SOURCE(12787, 307)
         {
            word x155;
            word x157;
            if (((
               x155 = version←v6944,  *(float*)&x155
               ) >= (
               x157 = (*  (ptr) &fc156 ),  *(float*)&x157
               ))) {
SOURCE(12816, 33)
               {
                  word pd158;
                  pd158 = (* (( (ptr) (* (( (ptr) gf←c65968)+218)/* var←c63408 */  ))+8) );
                  className←v9732 = (word) ( *( (fPt) ((*  (ptr) pd158 ))))(f←v6916, pd158);
                  };
               }
            else {
SOURCE(12858, 238)
               {
                  word childCount←v9804;
SOURCE(12877, 32)
                  {
                     word pd159;
                     pd159 = (* (( (ptr) (* (( (ptr) gf←c65968)+218)/* var←c63408 */  ))+9) );
                     (void) ( *( (fPt) ((*  (ptr) pd159 ))))(f←v6916, (* (( (ptr) gf←c65968)+35) ), pd159);
                     };
SOURCE(12911, 33)
                  {
                     word pd160;
                     pd160 = (* (( (ptr) (* (( (ptr) gf←c65968)+218)/* var←c63408 */  ))+8) );
                     className←v9732 = (word) ( *( (fPt) ((*  (ptr) pd160 ))))(f←v6916, pd160);
                     };
SOURCE(12946, 25)
                  {
                     word pd161;
                     pd161 = (* (( (ptr) (* (( (ptr) gf←c65968)+218)/* var←c63408 */  ))+10) );
                     (void) ( *( (fPt) ((*  (ptr) pd161 ))))(f←v6916, 41, pd161);
                     };
SOURCE(12973, 25)
                  {
                     word pd162;
                     pd162 = (* (( (ptr) (* (( (ptr) gf←c65968)+218)/* var←c63408 */  ))+10) );
                     (void) ( *( (fPt) ((*  (ptr) pd162 ))))(f←v6916, 91, pd162);
                     };
SOURCE(13000, 33)
                  {
                     word pd163;
                     pd163 = (* (( (ptr) (* (( (ptr) gf←c65968)+218)/* var←c63408 */  ))+25) );
                     childCount←v9804 = (word) ( *( (fPt) ((*  (ptr) pd163 ))))(f←v6916, pd163);
                     };
SOURCE(13035, 27)
                  {
                     word pd164;
                     pd164 = (* (( (ptr) (* (( (ptr) gf←c65968)+218)/* var←c63408 */  ))+9) );
                     (void) ( *( (fPt) ((*  (ptr) pd164 ))))(f←v6916, (* (( (ptr) gf←c65968)+36) ), pd164);
                     };
SOURCE(13064, 30)
                  {
                     word pd165;
                     pd165 = (* (( (ptr) (* (( (ptr) gf←c65968)+218)/* var←c63408 */  ))+9) );
                     (void) ( *( (fPt) ((*  (ptr) pd165 ))))(f←v6916, (* (( (ptr) gf←c65968)+37) ), pd165);
                     };
                  };
               };
            };
         };
SOURCE(13102, 36)
      type←v9760 = (word) SliceClassFromRope←P4020(className←v9732);
SOURCE(13140, 37)
      {
         word pd166;
         pd166 = (* (( (ptr) (* (( (ptr) gf←c65968)+211)/* var←c61168 */  ))+7) );
         class←v7028 = (word) ( *( (fPt) ((*  (ptr) pd166 ))))(type←v9760, pd166);
         };
SOURCE(13179, 48)
      {
         word pd167;
         pd167 = (* (( (ptr) class←v7028)+20) );
         slice←v7072 = (word) ( *( (fPt) ((*  (ptr) pd167 ))))(f←v6916, version←v6944, router←v6972, camera←v7000, pd167);
         };
SOURCE(13229, 136)
      {
         word tc168;
         word x169;
         word x171;
         word pd173;
         if ( ( ((
            x169 = version←v6944,  *(float*)&x169
            ) >= (
            x171 = (*  (ptr) &fc170 ),  *(float*)&x171
            )) ? (slice←v7072 != 0) : 0 ) ) {
            {
               word pd172;
               pd172 = (* (( (ptr) (* (( (ptr) gf←c65968)+212)/* var←c62704 */  ))+6) );
               var←c63440 = (word) ( *( (fPt) ((*  (ptr) pd172 ))))(slice←v7072, pd172);
               };
            pd173 = (* (( (ptr) (* (( (ptr) gf←c65968)+215)/* var←c62864 */  ))+63) );
            tc168 =  (word) (0 == (word) ( *( (fPt) ((*  (ptr) pd173 ))))(var←c63440, pd173));
            }
         else {
            tc168 =  (word) 0;
            };
         if (tc168) {
SOURCE(13327, 38)
            (void) FileinPList←P4080(f←v6916, version←v6944, router←v6972, slice←v7072);
            };
         };
      };
SOURCE(12489, 876)
   return(slice←v7072);
   }

static word SliceClassFromRope←P4020(className←v7132)
   word className←v7132;
   {
   register ptr gf←c66000 =  (ptr) &globalframe;
   word type←v7176;
   /* SliceClassFromRope: */ 
SOURCE(13371, 106)
SOURCE(13371, 106)
   type←v7176 = 0;
SOURCE(13444, 33)
   {
      word pd174;
      pd174 = (* (( (ptr) (* (( (ptr) gf←c66000)+213)/* var←c62768 */  ))+5) );
      return((word) ( *( (fPt) ((*  (ptr) pd174 ))))(className←v7132, 0, 2147483647, pd174));
      };
   }

static void FileinPList←P4080(f←v7236, version←v7264, router←v7292, slice←v7320)
   word f←v7236;
   word version←v7264;
   word router←v7292;
   word slice←v7320;
   {
   register ptr gf←c66032 =  (ptr) &globalframe;
   word key←v9848 = 0;
   word val←v9876 = 0;
   word nextChar←v9904;
   word keyName←v9932 = 0;
   word valRope←v9960 = 0;
   word success←v9988 = 1;
   /* FileinPList: */ 
SOURCE(13483, 1432)
SOURCE(13671, 33)
   {
      word pd175;
      pd175 = (* (( (ptr) (* (( (ptr) gf←c66032)+218)/* var←c63408 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd175 ))))(f←v7236, (* (( (ptr) gf←c66032)+38) ), pd175);
      };
SOURCE(13765, 1150)
   lab←L100021: ;
SOURCE(13803, 22)
   {
      word pd176;
      pd176 = (* (( (ptr) (* (( (ptr) gf←c66032)+218)/* var←c63408 */  ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd176 ))))(f←v7236, pd176);
      };
SOURCE(13871, 30)
   {
      word var←c63504;
      word self←v58384;
      self←v58384 = f←v7236;
      {
         word i←v49128;
         i←v49128 = (* (( (ptr) self←v58384)+7) );
         {
            word pd177;
            if ((i←v49128 < (* (( (ptr) self←v58384)+5) ))) {
               (* (( (ptr) self←v58384)+7) ) = (i←v49128 + 1);
               {
                  word var←c63568;
                  word buffer←v49748;
                  buffer←v49748 = (* (( (ptr) self←v58384)+4) );
                  var←c63568 =  (unsigned) (word) (* ((( (bPt) buffer←v49748)+4)+i←v49128) );
                  var←c63504 = var←c63568;
                  };
               }
            else {
               pd177 = (*  (ptr) (*  (ptr) self←v58384 ) );
               var←c63504 = (word) ( *( (fPt) ((*  (ptr) pd177 ))))(self←v58384, pd177);
               };
            };
         };
      nextChar←v9904 = var←c63504;
      };
SOURCE(13903, 20)
   if ((nextChar←v9904 == 41)) {
SOURCE(13923, 4)
      goto lab←L100020;
      };
SOURCE(13953, 20)
   if ((nextChar←v9904 != 40)) {
SOURCE(13973, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(14010, 31)
   {
      word pd178;
      pd178 = (* (( (ptr) (* (( (ptr) gf←c66032)+218)/* var←c63408 */  ))+8) );
      keyName←v9932 = (word) ( *( (fPt) ((*  (ptr) pd178 ))))(f←v7236, pd178);
      };
SOURCE(14043, 28)
   {
      word pd179;
      pd179 = (* (( (ptr) (* (( (ptr) gf←c66032)+213)/* var←c62768 */  ))+5) );
      key←v9848 = (word) ( *( (fPt) ((*  (ptr) pd179 ))))(keyName←v9932, 0, 2147483647, pd179);
      };
SOURCE(14073, 30)
   {
      word var←c63632;
      word self←v58264;
      self←v58264 = f←v7236;
      {
         word i←v58296;
         i←v58296 = (* (( (ptr) self←v58264)+7) );
         {
            word pd180;
            if ((i←v58296 < (* (( (ptr) self←v58264)+5) ))) {
               (* (( (ptr) self←v58264)+7) ) = (i←v58296 + 1);
               {
                  word var←c63696;
                  word buffer←v58340;
                  buffer←v58340 = (* (( (ptr) self←v58264)+4) );
                  var←c63696 =  (unsigned) (word) (* ((( (bPt) buffer←v58340)+4)+i←v58296) );
                  var←c63632 = var←c63696;
                  };
               }
            else {
               pd180 = (*  (ptr) (*  (ptr) self←v58264 ) );
               var←c63632 = (word) ( *( (fPt) ((*  (ptr) pd180 ))))(self←v58264, pd180);
               };
            };
         };
      nextChar←v9904 = var←c63632;
      };
SOURCE(14214, 30)
   {
      word var←c63760;
      word self←v58144;
      self←v58144 = f←v7236;
      {
         word i←v58176;
         i←v58176 = (* (( (ptr) self←v58144)+7) );
         {
            word pd181;
            if ((i←v58176 < (* (( (ptr) self←v58144)+5) ))) {
               (* (( (ptr) self←v58144)+7) ) = (i←v58176 + 1);
               {
                  word var←c63824;
                  word buffer←v58220;
                  buffer←v58220 = (* (( (ptr) self←v58144)+4) );
                  var←c63824 =  (unsigned) (word) (* ((( (bPt) buffer←v58220)+4)+i←v58176) );
                  var←c63760 = var←c63824;
                  };
               }
            else {
               pd181 = (*  (ptr) (*  (ptr) self←v58144 ) );
               var←c63760 = (word) ( *( (fPt) ((*  (ptr) pd181 ))))(self←v58144, pd181);
               };
            };
         };
      nextChar←v9904 = var←c63760;
      };
SOURCE(14284, 450)
   {
      word var←c63888;
      var←c63888 = nextChar←v9904;
      switch (var←c63888) {
         case 26: 
SOURCE(14358, 36)
            valRope←v9960 = (word) ReadRopeInBoxcarAndBell←P4140(f←v7236);
SOURCE(14396, 25)
            {
               word pd182;
               pd182 = (* (( (ptr) (* (( (ptr) gf←c66032)+218)/* var←c63408 */  ))+10) );
               (void) ( *( (fPt) ((*  (ptr) pd182 ))))(f←v7236, 41, pd182);
               };
            break;
         case 91: 
SOURCE(14463, 249)
            {
               word c←v10044;
SOURCE(14518, 19)
               {
                  word pd183;
                  pd183 = (* (( (ptr) (* (( (ptr) gf←c66032)+214)/* var←c62832 */  ))+72) );
                  c←v10044 = (word) ( *( (fPt) ((*  (ptr) pd183 ))))(f←v7236, pd183);
                  };
SOURCE(14539, 28)
               {
                  word pd184;
                  pd184 = (* (( (ptr) (* (( (ptr) gf←c66032)+218)/* var←c63408 */  ))+9) );
                  (void) ( *( (fPt) ((*  (ptr) pd184 ))))(f←v7236, (* (( (ptr) gf←c66032)+39) ), pd184);
                  };
SOURCE(14611, 41)
               {
                  word pd185;
                  pd185 = (* (( (ptr) (* (( (ptr) gf←c66032)+214)/* var←c62832 */  ))+92) );
                  valRope←v9960 = (word) ( *( (fPt) ((*  (ptr) pd185 ))))(f←v7236, c←v10044, 1, pd185);
                  };
SOURCE(14654, 25)
               {
                  word pd186;
                  pd186 = (* (( (ptr) (* (( (ptr) gf←c66032)+218)/* var←c63408 */  ))+10) );
                  (void) ( *( (fPt) ((*  (ptr) pd186 ))))(f←v7236, 41, pd186);
                  };
               };
            break;
         case 41: 
SOURCE(14721, 13)
            valRope←v9960 = 0;
            break;
         default: 
SOURCE(14778, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(14815, 65)
   {
      word pd187;
      if ((valRope←v9960 == 0)) {
         val←v9876 = 0;
         }
      else {
         pd187 = (* (( (ptr) (* (( (ptr) gf←c66032)+216)/* var←c62960 */  ))+12) );
         val←v9876 = (word) ( *( (fPt) ((*  (ptr) pd187 ))))(key←v9848, valRope←v9960, pd187);
         };
      };
SOURCE(14882, 33)
   {
      word pd188;
      pd188 = (* (( (ptr) (* (( (ptr) gf←c66032)+216)/* var←c62960 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd188 ))))(slice←v7320, 0, key←v9848, val←v9876, pd188);
      };
   goto lab←L100021;
   lab←L100020: ;
   }

static word ReadRopeInBoxcarAndBell←P4140(stream←v7380)
   word stream←v7380;
   {
   register ptr gf←c66064 =  (ptr) &globalframe;
   word rope←v7424;
   word level←v10088 = 1;
   word scratch←v10116 = 0;
   word text←v10144 = 0;
   word c←v10172;
   /* ReadRopeInBoxcarAndBell: */ 
SOURCE(14930, 541)
SOURCE(14930, 541)
   rope←v7424 = 0;
SOURCE(15069, 50)
   {
      word var←c63920;
      {
         word pd189;
         pd189 = (* (( (ptr) (* (( (ptr) gf←c66064)+219)/* var←c63952 */  ))+18) );
         var←c63920 = (word) ( *( (fPt) ((*  (ptr) pd189 ))))((*  (ptr) ((* (( (ptr) (* (( (ptr) gf←c66064)+219)/* var←c63952 */  ))+17)
             )) ), pd189);
         };
      text←v10144 = var←c63920;
      scratch←v10116 = var←c63920;
      };
SOURCE(15121, 210)
   lab←L100030: ;
   {
      word tc190;
      word pd191;
      if ((level←v10088 != 0)) {
         if (((* (( (ptr) stream←v7380)+7) ) < (* (( (ptr) stream←v7380)+5) ))) {
            tc190 =  (word) 1;
            }
         else {
            pd191 = (* (( (ptr) (*  (ptr) stream←v7380 ))+3) );
            tc190 =  (word) (0 == (word) ( *( (fPt) ((*  (ptr) pd191 ))))(stream←v7380, pd191));
            };
         }
      else {
         tc190 =  (word) 0;
         };
      if (tc190) {
         }
      else {
         goto lab←L100028;
         };
      };
SOURCE(15166, 28)
   {
      word var←c63984;
      word self←v58024;
      self←v58024 = stream←v7380;
      {
         word i←v58056;
         i←v58056 = (* (( (ptr) self←v58024)+7) );
         {
            word pd192;
            if ((i←v58056 < (* (( (ptr) self←v58024)+5) ))) {
               (* (( (ptr) self←v58024)+7) ) = (i←v58056 + 1);
               {
                  word var←c64048;
                  word buffer←v58100;
                  buffer←v58100 = (* (( (ptr) self←v58024)+4) );
                  var←c64048 =  (unsigned) (word) (* ((( (bPt) buffer←v58100)+4)+i←v58056) );
                  var←c63984 = var←c64048;
                  };
               }
            else {
               pd192 = (*  (ptr) (*  (ptr) self←v58024 ) );
               var←c63984 = (word) ( *( (fPt) ((*  (ptr) pd192 ))))(self←v58024, pd192);
               };
            };
         };
      c←v10172 = var←c63984;
      };
SOURCE(15196, 40)
   {
      word var←c64112;
      word to←v57948;
      word from←v57976;
      to←v57948 = text←v10144;
      from←v57976 = c←v10172;
      if (( (unsigned) (*  (hPt) to←v57948 ) >=  (unsigned) (* (( (hPt) to←v57948)+1) ))) {
         {
            word pd193;
            pd193 = (* (( (ptr) (* (( (ptr) gf←c66064)+220)/* var←c64176 */  ))+11) );
            var←c64112 = (word) ( *( (fPt) ((*  (ptr) pd193 ))))(to←v57948, from←v57976, pd193);
            };
         goto lab←L100033;
         };
      {
         word idx194;
         word limit195;
         (* ((( (bPt) to←v57948)+4)+(
               idx194 = (word)  (unsigned) (*  (hPt) to←v57948 ),
               limit195 = (word)  (unsigned) (* (( (hPt) to←v57948)+1) ),
               BCK(idx194, limit195)
               )) ) = from←v57976;
         };
      {
         word idx196;
         (*  (hPt) to←v57948 ) = (
            idx196 = (word) ( (unsigned) (*  (hPt) to←v57948 ) + 1),
            BCK(idx196, 32768)
            );
         };
      var←c64112 = to←v57948;
      lab←L100033: ;
      text←v10144 = var←c64112;
      };
SOURCE(15238, 93)
   if ((c←v10172 == 26)) {
SOURCE(15264, 23)
      level←v10088 = (level←v10088 + 1);
      }
   else {
SOURCE(15287, 44)
      if ((c←v10172 == 7)) {
SOURCE(15314, 17)
         level←v10088 = SGNCK((level←v10088 - 1));
         };
      };
   goto lab←L100030;
   lab←L100028: ;
SOURCE(15342, 56)
   {
      word var←c64208;
      {
         word var←c64240;
         word base←v57900;
         base←v57900 = text←v10144;
         {
            word tc197;
            word idx198;
            if ((base←v57900 == 0)) {
               tc197 =  (word) 0;
               }
            else {
               tc197 =  (word)  (unsigned) (*  (hPt) base←v57900 );
               };
            var←c64240 = (
               idx198 = (word) tc197,
               BCK(idx198, 32768)
               );
            };
         var←c64208 = BCK((var←c64240 - 1), 32768);
         };
      {
         word pd199;
         pd199 = (* (( (ptr) (* (( (ptr) gf←c66064)+217)/* var←c63056 */  ))+35) );
         rope←v7424 = (word) ( *( (fPt) ((*  (ptr) pd199 ))))(text←v10144, 0, var←c64208, pd199);
         };
      };
SOURCE(15430, 41)
   {
      word t←v57852;
      t←v57852 = scratch←v10116;
      {
         word pd200;
         pd200 = (* (( (ptr) (* (( (ptr) gf←c66064)+219)/* var←c63952 */  ))+19) );
         (void) ( *( (fPt) ((*  (ptr) pd200 ))))((*  (ptr) (* (( (ptr) (* (( (ptr) gf←c66064)+219)/* var←c63952 */  ))+17) ) ), t←v57852, pd200)
         ;
         };
      };
SOURCE(14930, 541)
   return(rope←v7424);
   }

static word PartsInBoundBox←P4200(slice←v7484, box←v7512)
   word slice←v7484;
   word box←v7512;
   {
   register ptr gf←c66096 =  (ptr) &globalframe;
   word inParts←v7556;
   /* PartsInBoundBox: */ 
SOURCE(15477, 149)
SOURCE(15477, 149)
   inParts←v7556 = 0;
SOURCE(15575, 51)
   {
      word var←c0549;
      var←c0549 = (* (( (ptr) gf←c66096)+40) );
      (void) (XR←RaiseSignal((*  (ptr) (* (( (ptr) (* (( (ptr) gf←c66096)+221)/* var←c64272 */  ))+28) ) ), 0, (word) &var←c0549)
      );
      };
SOURCE(15477, 149)
   return(inParts←v7556);
   }

static word WithinBoundBox←P4260(slice←v7616, box←v7644)
   word slice←v7616;
   word box←v7644;
   {
   W6 var←c66128;
   word in←v7688;
   /* declaration of var←c64304 skipped */ 
   word sliceBox←v10284;
   /* WithinBoundBox: */ 
SOURCE(15632, 405)
   {
      word tmpAddr201;
      tmpAddr201 = (word) (( (ptr) &var←c66128)+4)/* var←c64304 */ ;
      (*  (ptr) tmpAddr201 ) = ( ((word)  (fPt) Within←P5004) );
      (* (( (ptr) tmpAddr201) + 1) ) = 1;
      };
SOURCE(15953, 56)
   {
      word pd202;
      pd202 = (* (( (ptr) (*  (ptr) slice←v7616 ))+3) );
      sliceBox←v10284 = (word) ( *( (fPt) ((*  (ptr) pd202 ))))(slice←v7616, 0, pd202);
      };
SOURCE(16011, 26)
   in←v7688 = (word) Within←P5004(sliceBox←v10284, box←v7644, (word) (( (bPt) &var←c66128)+16)/* var←c64304 */ );
SOURCE(15632, 405)
   return(in←v7688);
   }

static word Within←P5004(test←v10360, bound←v10388, formal←c66160)
   word test←v10360;
   word bound←v10388;
   word formal←c66160;
   {
   word var←c10432;
   formal←c66160 = (formal←c66160 - 16);
   /* Within: */ 
SOURCE(15752, 196)
SOURCE(15808, 140)
   {
      word tc203;
      word x204;
      word x205;
      word x207;
      word x208;
      word x209;
      word x210;
      word x211;
      word x212;
      word x213;
      word x214;
      word x215;
      word x216;
      if ( (  ( ((
         x204 = (* (( (ptr) test←v10360)+2) ),  *(float*)&x204
         ) <= (
         x205 = (* (( (ptr) bound←v10388)+2) ),  *(float*)&x205
         ) + (
         x207 = (*  (ptr) &fc206 ),  *(float*)&x207
         )) ? ((
         x208 = (*  (ptr) test←v10360 ),  *(float*)&x208
         ) >= (
         x209 = (*  (ptr) bound←v10388 ),  *(float*)&x209
         ) - (
         x210 = (*  (ptr) &fc206 ),  *(float*)&x210
         )) : 0 )  ? ((
         x211 = (* (( (ptr) test←v10360)+3) ),  *(float*)&x211
         ) <= (
         x212 = (* (( (ptr) bound←v10388)+3) ),  *(float*)&x212
         ) + (
         x213 = (*  (ptr) &fc206 ),  *(float*)&x213
         )) : 0 ) ) {
         tc203 =  (word)  (unsigned) ((
            x214 = (* (( (ptr) test←v10360)+1) ),  *(float*)&x214
            ) >= (
            x215 = (* (( (ptr) bound←v10388)+1) ),  *(float*)&x215
            ) - (
            x216 = (*  (ptr) &fc206 ),  *(float*)&x216
            ));
         }
      else {
         tc203 =  (word)  (unsigned) 0;
         };
      return(tc203);
      };
   }

static word IsOpen←P4320(slice←v7748)
   word slice←v7748;
   {
   register ptr gf←c66192 =  (ptr) &globalframe;
   word isOpen←v7792;
   /* IsOpen: */ 
SOURCE(16043, 156)
SOURCE(16043, 156)
   isOpen←v7792 = 0;
SOURCE(16113, 44)
   if (((word) GetType←P60(slice←v7748) != (* (( (ptr) gf←c66192)+41) ))) {
SOURCE(16144, 13)
      return(0);
      };
SOURCE(16159, 40)
   {
      word pd217;
      pd217 = (* (( (ptr) (* (( (ptr) gf←c66192)+222)/* var←c64368 */  ))+16) );
      return( (unsigned) ((word) ( *( (fPt) ((*  (ptr) pd217 ))))(slice←v7748, pd217) == 2));
      };
   }

static void GenericPropsUndo←P4380(op←v7852, slice←v7880, parts←v7908, val←v7936, history←v7964)
   word op←v7852;
   word slice←v7880;
   word parts←v7908;
   word val←v7936;
   word history←v7964;
   {
   register ptr gf←c66224 =  (ptr) &globalframe;
   /* GenericPropsUndo: */ 
SOURCE(16205, 269)
SOURCE(16309, 165)
   if ((history←v7964 != 0)) {
SOURCE(16329, 147)
      {
         word changeRef←v10460;
SOURCE(16331, 106)
         changeRef←v10460 = XR←NewObject(20, (* (( (ptr) gf←c66224)+7) ));
         (* (( (ptr) changeRef←v10460)+1) ) = op←v7852;
         (* (( (ptr) changeRef←v10460)+2) ) = slice←v7880;
         (* (( (ptr) changeRef←v10460)+3) ) = parts←v7908;
         (* (( (ptr) changeRef←v10460)+4) ) = val←v7936;
SOURCE(16439, 35)
         (void) Note←P4440(history←v7964, (word) (( (bPt) gf←c66224)+236)/* var←c58608 */ , changeRef←v10460);
         };
      };
   }

static void Note←P4440(event←v8040, historyProc←v8068, historyData←v8096)
   word event←v8040;
   word historyProc←v8068;
   word historyData←v8096;
   {
   register ptr gf←c66256 =  (ptr) &globalframe;
   /* Note: */ 
SOURCE(16483, 377)
SOURCE(16578, 26)
   if ((event←v8040 == 0)) {
SOURCE(16598, 6)
      return;
      };
SOURCE(16606, 34)
   if ((0 != (* (( (ptr) gf←c66256)+5)/* debugHalt←v3364 */  ))) {
SOURCE(16624, 16)
      (void) (XR←RaiseSignal((word) (( (bPt) gf←c66256)+200)/* var←c58448 */ , 0, 0));
      };
SOURCE(16642, 130)
   if ( (  (  ( (0 != (* (( (ptr) gf←c66256)+4)/* noteNoMore←v3336 */  )) ? ((* (( (ptr) event←v8040)+2) ) != 0) : 0 )  ? ((*  (ptr) (* (
      ( (ptr) event←v8040)+2) ) ) != 0) : 0 )  ? ((*  (ptr) (* (( (ptr) (*  (ptr) (* (( (ptr) event←v8040)+2) ) ))+1) ) ) == 2) : 0 ) ) {
SOURCE(16766, 6)
      return;
      };
SOURCE(16774, 86)
   {
      word var←c64432;
      word var←c64496;
      {
         word var←c64464;
         var←c64464 = XR←NewObject(8, (* (( (ptr) gf←c66256)+15) ));
         (*  (ptr) var←c64464 ) = XR←CheckProc(historyProc←v8068);
         (* (( (ptr) var←c64464)+1) ) = historyData←v8096;
         var←c64432 = var←c64464;
         };
      var←c64496 = XR←NewObject(8, (* (( (ptr) gf←c66256)+17) ));
      (*  (ptr) var←c64496 ) = var←c64432;
      (* (( (ptr) var←c64496)+1) ) = (* (( (ptr) event←v8040)+2) );
      (* (( (ptr) event←v8040)+2) ) = var←c64496;
      };
   }

static void UndoProps←P4500(historyData←v8168, currentEvent←v8196)
   word historyData←v8168;
   word currentEvent←v8196;
   {
   register ptr gf←c66288 =  (ptr) &globalframe;
   word propsData←v10516;
   word slice←v10544;
   word parts←v10572;
   /* UndoProps: */ 
SOURCE(16866, 1972)
SOURCE(16940, 57)
   if ((historyData←v8168 == 0)) {
      goto lab←L100035;
      };
   if (((*  (ptr) historyData←v8168 ) == 0)) {
      goto lab←L100035;
      };
   (void) XR←RaiseError(XR←NarrowFault, 0);
   lab←L100035: ;
   propsData←v10516 = historyData←v8168;
SOURCE(16999, 30)
   slice←v10544 = (* (( (ptr) propsData←v10516)+2) );
SOURCE(17031, 35)
   parts←v10572 = (* (( (ptr) propsData←v10516)+3) );
SOURCE(17068, 1770)
   if (((*  (ptr) slice←v10544 ) != 0)) {
SOURCE(17094, 1744)
      {
         word var←c64528;
         var←c64528 = (* (( (ptr) propsData←v10516)+1) );
         if ((var←c64528 == (* (( (ptr) gf←c66288)+45) ))) {
SOURCE(17138, 165)
            {
               word oldValue←v10628;
SOURCE(17140, 47)
               oldValue←v10628 = XR←Narrow((* (( (ptr) propsData←v10516)+4) ), (* (( (ptr) gf←c66288)+12) ));
SOURCE(17189, 91)
               {
                  word var←c64592;
                  {
                     word var←c64560;
                     var←c64560 = (word) FixBogusParts←P4560(slice←v10544, parts←v10572);
                     {
                        word pd219;
                        pd219 = (* (( (ptr) (* (( (ptr) gf←c66288)+212)/* var←c62704 */  ))+53) );
                        var←c64592 = (word) ( *( (fPt) ((*  (ptr) pd219 ))))(slice←v10544, var←c64560, (*  (ptr) oldValue←v10628 ), currentEvent←v8196, pd219)
                        ;
                        };
                     };
                  };
               };
            goto endif0218;
            };
         if ((var←c64528 == (* (( (ptr) gf←c66288)+44) ))) {
SOURCE(17323, 148)
            {
               word oldValue←v10684;
SOURCE(17325, 55)
               oldValue←v10684 = XR←Narrow((* (( (ptr) propsData←v10516)+4) ), (* (( (ptr) gf←c66288)+14) ));
SOURCE(17382, 87)
               {
                  word var←c64624;
                  var←c64624 = (word) FixBogusParts←P4560(slice←v10544, parts←v10572);
                  {
                     word pd220;
                     pd220 = (* (( (ptr) (* (( (ptr) gf←c66288)+212)/* var←c62704 */  ))+55) );
                     (void) ( *( (fPt) ((*  (ptr) pd220 ))))(slice←v10544, var←c64624, (*  (ptr) oldValue←v10684 ), currentEvent←v8196, pd220)
                     ;
                     };
                  };
               };
            goto endif0218;
            };
         if ((var←c64528 == (* (( (ptr) gf←c66288)+43) ))) {
SOURCE(17493, 154)
            {
               word oldValue←v10740;
SOURCE(17495, 57)
               oldValue←v10740 = XR←Narrow((* (( (ptr) propsData←v10516)+4) ), (* (( (ptr) gf←c66288)+16) ));
SOURCE(17554, 91)
               {
                  word var←c64656;
                  var←c64656 = (word) FixBogusParts←P4560(slice←v10544, parts←v10572);
                  {
                     word pd221;
                     pd221 = (* (( (ptr) (* (( (ptr) gf←c66288)+212)/* var←c62704 */  ))+57) );
                     (void) ( *( (fPt) ((*  (ptr) pd221 ))))(slice←v10544, var←c64656, (*  (ptr) oldValue←v10740 ), currentEvent←v8196, pd221)
                     ;
                     };
                  };
               };
            goto endif0218;
            };
         if ((var←c64528 == (* (( (ptr) gf←c66288)+42) ))) {
SOURCE(17669, 148)
            {
               word oldValue←v10796;
SOURCE(17671, 51)
               oldValue←v10796 = XR←Narrow((* (( (ptr) propsData←v10516)+4) ), (* (( (ptr) gf←c66288)+13) ));
SOURCE(17724, 91)
               {
                  word var←c64688;
                  var←c64688 = (word) FixBogusParts←P4560(slice←v10544, parts←v10572);
                  {
                     word pd222;
                     pd222 = (* (( (ptr) (* (( (ptr) gf←c66288)+212)/* var←c62704 */  ))+59) );
                     (void) ( *( (fPt) ((*  (ptr) pd222 ))))(slice←v10544, var←c64688, oldValue←v10796, (* (( (ptr) gf←c66288)+46) ), currentEvent←v8196, pd222)
                     ;
                     };
                  };
               };
            goto endif0218;
            };
         if ((var←c64528 == (* (( (ptr) gf←c66288)+27) ))) {
SOURCE(17837, 124)
            {
               word oldValue←v10840;
SOURCE(17839, 51)
               oldValue←v10840 = XR←Narrow((* (( (ptr) propsData←v10516)+4) ), (* (( (ptr) gf←c66288)+13) ));
SOURCE(17892, 67)
               {
                  word pd223;
                  pd223 = (* (( (ptr) (* (( (ptr) gf←c66288)+212)/* var←c62704 */  ))+61) );
                  (void) ( *( (fPt) ((*  (ptr) pd223 ))))(slice←v10544, parts←v10572, oldValue←v10840, (* (( (ptr) gf←c66288)+46) ), currentEvent←v8196, pd223)
                  ;
                  };
               };
            goto endif0218;
            };
         if ((var←c64528 == (* (( (ptr) gf←c66288)+26) ))) {
SOURCE(17978, 165)
            {
               word oldValue←v10884;
SOURCE(17980, 51)
               oldValue←v10884 = XR←Narrow((* (( (ptr) propsData←v10516)+4) ), (* (( (ptr) gf←c66288)+20) ));
SOURCE(18033, 107)
               {
                  word var←c64720;
                  var←c64720 = (word) FixBogusParts←P4560(slice←v10544, parts←v10572);
                  {
                     word pd224;
                     pd224 = (* (( (ptr) (* (( (ptr) gf←c66288)+212)/* var←c62704 */  ))+63) );
                     (void) ( *( (fPt) ((*  (ptr) pd224 ))))(slice←v10544, var←c64720, (*  (ptr) oldValue←v10884 ), (* (( (ptr) oldValue←v10884)+1)
                         ), currentEvent←v8196, pd224);
                     };
                  };
               };
            goto endif0218;
            };
         if ((var←c64528 == (* (( (ptr) gf←c66288)+24) ))) {
SOURCE(18160, 197)
            {
               word oldValue←v10940;
SOURCE(18162, 52)
               oldValue←v10940 = XR←Narrow((* (( (ptr) propsData←v10516)+4) ), (* (( (ptr) gf←c66288)+22) ));
SOURCE(18216, 139)
               {
                  word var←c64752;
                  var←c64752 = (word) FixBogusParts←P4560(slice←v10544, parts←v10572);
                  {
                     word pd225;
                     pd225 = (* (( (ptr) (* (( (ptr) gf←c66288)+212)/* var←c62704 */  ))+65) );
                     (void) ( *( (fPt) ((*  (ptr) pd225 ))))(slice←v10544, var←c64752, (*  (ptr) oldValue←v10940 ), (* (( (ptr) oldValue←v10940)+1)
                         ), (* (( (ptr) oldValue←v10940)+2) ), (* (( (ptr) oldValue←v10940)+3) )
                        , currentEvent←v8196, pd225);
                     };
                  };
               };
            goto endif0218;
            };
         if ((var←c64528 == (* (( (ptr) gf←c66288)+25) ))) {
SOURCE(18379, 156)
            {
               word oldValue←v10996;
SOURCE(18381, 57)
               oldValue←v10996 = XR←Narrow((* (( (ptr) propsData←v10516)+4) ), (* (( (ptr) gf←c66288)+23) ));
SOURCE(18440, 93)
               {
                  word var←c64816;
                  {
                     word var←c64784;
                     var←c64784 = (word) FixBogusParts←P4560(slice←v10544, parts←v10572);
                     {
                        word pd226;
                        pd226 = (* (( (ptr) (* (( (ptr) gf←c66288)+212)/* var←c62704 */  ))+67) );
                        var←c64816 = (word) ( *( (fPt) ((*  (ptr) pd226 ))))(slice←v10544, var←c64784, (*  (ptr) oldValue←v10996 ), currentEvent←v8196, pd226)
                        ;
                        };
                     };
                  };
               };
            goto endif0218;
            };
         if ((var←c64528 == (* (( (ptr) gf←c66288)+49) ))) {
SOURCE(18552, 288)
            {
               word oldValue←v11052;
               word transform←v11080;
SOURCE(18554, 55)
               oldValue←v11052 = XR←Narrow((* (( (ptr) propsData←v10516)+4) ), (* (( (ptr) gf←c66288)+8) ));
SOURCE(18611, 82)
               {
                  word pd227;
                  pd227 = (* (( (ptr) (* (( (ptr) gf←c66288)+223)/* var←c64848 */  ))+51) );
                  transform←v11080 = (word) ( *( (fPt) ((*  (ptr) pd227 ))))((*  (ptr) (oldValue←v11052) ), pd227);
                  };
SOURCE(18726, 112)
               {
                  word var←c64880;
                  var←c64880 = (word) FixBogusParts←P4560(slice←v10544, parts←v10572);
                  {
                     word pd228;
                     pd228 = (* (( (ptr) (* (( (ptr) gf←c66288)+212)/* var←c62704 */  ))+22) );
                     (void) ( *( (fPt) ((*  (ptr) pd228 ))))(slice←v10544, var←c64880, transform←v11080, (* (( (ptr) oldValue←v11052)+1) ), currentEvent←v8196, pd228)
                     ;
                     };
                  };
               };
            goto endif0218;
            };
         endif0218: ;
         };
      };
   }

static word FixBogusParts←P4560(slice←v8268, bogusParts←v8296)
   word slice←v8268;
   word bogusParts←v8296;
   {
   register ptr gf←c66320 =  (ptr) &globalframe;
   word goodParts←v8340;
   /* FixBogusParts: */ 
SOURCE(18859, 174)
SOURCE(18859, 174)
   goodParts←v8340 = 0;
SOURCE(18953, 22)
   goodParts←v8340 = bogusParts←v8296;
SOURCE(19002, 31)
   if ((0 != (* (( (ptr) gf←c66320)+6)/* forgetBogusParts←v6052 */  ))) {
SOURCE(19027, 6)
      return(goodParts←v8340);
      };
SOURCE(19035, 5)
   (void) XR←RaiseUnnamedError();
   }

static word IsDescriptorOfEnd←P4620(sliceD←v8400)
   word sliceD←v8400;
   {
   register ptr gf←c66352 =  (ptr) &globalframe;
   word var←c8444;
   word jointNum←v11136;
   word partType←v11164;
   word success←v11192 = 0;
   /* IsDescriptorOfEnd: */ 
SOURCE(19707, 844)
SOURCE(19845, 34)
   if ((sliceD←v8400 == 0)) {
SOURCE(19866, 13)
      return(0);
      };
SOURCE(19881, 670)
   {
      word var←c64912;
      {
         word pd229;
         pd229 = (* (( (ptr) (* (( (ptr) gf←c66352)+212)/* var←c62704 */  ))+6) );
         var←c64912 = (word) ( *( (fPt) ((*  (ptr) pd229 ))))((*  (ptr) (sliceD←v8400) ), pd229);
         };
      if ((var←c64912 == (* (( (ptr) gf←c66352)+47) ))) {
SOURCE(19938, 138)
         {
            word trajD←v11236 = 0;
SOURCE(19964, 76)
            {
               word pd231;
               pd231 = (* (( (ptr) (* (( (ptr) gf←c66352)+215)/* var←c62864 */  ))+78) );
               trajD←v11236 = (word) ( *( (fPt) ((*  (ptr) pd231 ))))((*  (ptr) sliceD←v8400 ), (* (( (ptr) sliceD←v8400)+1) ), 1, (* (( (ptr) gf←c66352)+41)
                   ), pd231);
               };
SOURCE(20042, 32)
            return((word) IsDescriptorOfEnd←P4620(trajD←v11236));
            };
         };
      if ((var←c64912 == (* (( (ptr) gf←c66352)+48) ))) {
SOURCE(20091, 214)
         {
            word trajD←v11280 = 0;
SOURCE(20117, 85)
            {
               W10 var←c65008;
               {
                  word pd232;
                  pd232 = (* (( (ptr) (* (( (ptr) gf←c66352)+224)/* var←c64976 */  ))+17) );
                  (void) ( *( (fPt) ((*  (ptr) pd232 ))))((word) &var←c65008, sliceD←v8400, pd232);
                  };
               jointNum←v11136 = (* (( (ptr) &var←c65008)+4) );
               trajD←v11280 = (* (( (ptr) &var←c65008)+2) );
               partType←v11164 = (* (( (ptr) &var←c65008)+1) );
               success←v11192 = (*  (ptr) &var←c65008 );
               };
SOURCE(20204, 99)
            {
               word pd233;
               if ((0 == success←v11192) || (partType←v11164 != 1)) {
                  return(0);
                  }
               else {
                  pd233 = (* (( (ptr) (* (( (ptr) gf←c66352)+222)/* var←c64368 */  ))+45) );
                  return((word) ( *( (fPt) ((*  (ptr) pd233 ))))((*  (ptr) trajD←v11280 ), jointNum←v11136, pd233));
                  };
               };
            };
         };
      if ((var←c64912 == (* (( (ptr) gf←c66352)+41) ))) {
SOURCE(20319, 101)
         {
            W10 var←c65072;
            {
               word pd234;
               pd234 = (* (( (ptr) (* (( (ptr) gf←c66352)+222)/* var←c64368 */  ))+52) );
               (void) ( *( (fPt) ((*  (ptr) pd234 ))))((word) &var←c65072, (*  (ptr) sliceD←v8400 ), (* (( (ptr) sliceD←v8400)+1) ), pd234)
               ;
               };
            jointNum←v11136 = (* (( (ptr) &var←c65072)+4) );
            partType←v11164 = (* (( (ptr) &var←c65072)+1) );
            success←v11192 = (*  (ptr) &var←c65072 );
            };
SOURCE(20422, 100)
         {
            word pd235;
            if ((0 == success←v11192) || (partType←v11164 != 1)) {
               return(0);
               }
            else {
               pd235 = (* (( (ptr) (* (( (ptr) gf←c66352)+222)/* var←c64368 */  ))+45) );
               return((word) ( *( (fPt) ((*  (ptr) pd235 ))))((*  (ptr) sliceD←v8400 ), jointNum←v11136, pd235));
               };
            };
         };
SOURCE(20538, 13)
      return(0);
      };
   }

static void UnpackJoint←P4680(formal←c0622, sliceD←v8504)
   word formal←c0622;
   word sliceD←v8504;
   {
   register ptr gf←c66384 =  (ptr) &globalframe;
   word success←v8548;
   word trajD←v8576;
   word jointNum←v8604;
   /* UnpackJoint: */ 
SOURCE(20557, 474)
SOURCE(20557, 474)
   trajD←v8576 = 0;
SOURCE(20675, 356)
   {
      word var←c65136;
      {
         word pd236;
         pd236 = (* (( (ptr) (* (( (ptr) gf←c66384)+212)/* var←c62704 */  ))+6) );
         var←c65136 = (word) ( *( (fPt) ((*  (ptr) pd236 ))))((*  (ptr) (sliceD←v8504) ), pd236);
         };
      if ((var←c65136 == (* (( (ptr) gf←c66384)+47) ))) {
SOURCE(20734, 80)
         {
            word pd237;
            pd237 = (* (( (ptr) (* (( (ptr) gf←c66384)+215)/* var←c62864 */  ))+78) );
            sliceD←v8504 = (word) ( *( (fPt) ((*  (ptr) pd237 ))))((*  (ptr) sliceD←v8504 ), (* (( (ptr) sliceD←v8504)+1) ), 1, (* (( (ptr) gf←c66384)+48)
                ), pd237);
            };
SOURCE(20816, 81)
         {
            W10 var←c65168;
            {
               word pd238;
               pd238 = (* (( (ptr) (* (( (ptr) gf←c66384)+224)/* var←c64976 */  ))+17) );
               (void) ( *( (fPt) ((*  (ptr) pd238 ))))((word) &var←c65168, sliceD←v8504, pd238);
               };
            jointNum←v8604 = (* (( (ptr) &var←c65168)+4) );
            trajD←v8576 = (* (( (ptr) &var←c65168)+2) );
            success←v8548 = (*  (ptr) &var←c65168 );
            };
         }
      else {
         if ((var←c65136 == (* (( (ptr) gf←c66384)+48) ))) {
SOURCE(20914, 81)
            {
               W10 var←c65200;
               {
                  word pd239;
                  pd239 = (* (( (ptr) (* (( (ptr) gf←c66384)+224)/* var←c64976 */  ))+17) );
                  (void) ( *( (fPt) ((*  (ptr) pd239 ))))((word) &var←c65200, sliceD←v8504, pd239);
                  };
               jointNum←v8604 = (* (( (ptr) &var←c65200)+4) );
               trajD←v8576 = (* (( (ptr) &var←c65200)+2) );
               success←v8548 = (*  (ptr) &var←c65200 );
               };
            }
         else {
SOURCE(21008, 23)
            success←v8548 = 0;
            trajD←v8576 = 0;
            jointNum←v8604 =  (word) -1;
            goto lab←L100036;
            };
         };
      };
   /* removed tail goto */ 
   lab←L100036: ;
   (*  (ptr) formal←c0622 ) = success←v8548;
   (* (( (ptr) formal←c0622)+1) ) = trajD←v8576;
   (* (( (ptr) formal←c0622)+2) ) = jointNum←v8604;
   return;
   }

static void UnpackSegment←P4740(formal←c0637, sliceD←v8664)
   word formal←c0637;
   word sliceD←v8664;
   {
   register ptr gf←c66416 =  (ptr) &globalframe;
   word success←v8708;
   word hitType←v8736;
   word traj←v8764;
   word seg←v8792;
   word segNum←v8820;
   word trajD←v11324 = 0;
   /* UnpackSegment: */ 
SOURCE(21037, 772)
SOURCE(21037, 772)
   traj←v8764 = 0;
SOURCE(21037, 772)
   seg←v8792 = 0;
SOURCE(21037, 772)
   segNum←v8820 = 999;
SOURCE(21211, 598)
   {
      word var←c65232;
      {
         word pd240;
         pd240 = (* (( (ptr) (* (( (ptr) gf←c66416)+212)/* var←c62704 */  ))+6) );
         var←c65232 = (word) ( *( (fPt) ((*  (ptr) pd240 ))))((*  (ptr) (sliceD←v8664) ), pd240);
         };
      if ((var←c65232 == (* (( (ptr) gf←c66416)+47) ))) {
SOURCE(21270, 80)
         {
            word pd242;
            pd242 = (* (( (ptr) (* (( (ptr) gf←c66416)+215)/* var←c62864 */  ))+78) );
            sliceD←v8664 = (word) ( *( (fPt) ((*  (ptr) pd242 ))))((*  (ptr) sliceD←v8664 ), (* (( (ptr) sliceD←v8664)+1) ), 1, (* (( (ptr) gf←c66416)+48)
                ), pd242);
            };
SOURCE(21352, 105)
         {
            W10 var←c65264;
            {
               word pd243;
               pd243 = (* (( (ptr) (* (( (ptr) gf←c66416)+224)/* var←c64976 */  ))+17) );
               (void) ( *( (fPt) ((*  (ptr) pd243 ))))((word) &var←c65264, sliceD←v8664, pd243);
               };
            segNum←v8820 = (* (( (ptr) &var←c65264)+9) );
            seg←v8792 = (* (( (ptr) &var←c65264)+8) );
            trajD←v11324 = (* (( (ptr) &var←c65264)+2) );
            hitType←v8736 = (* (( (ptr) &var←c65264)+1) );
            success←v8708 = (*  (ptr) &var←c65264 );
            };
SOURCE(21459, 18)
         traj←v8764 = (*  (ptr) trajD←v11324 );
         goto endif0241;
         };
      if ((var←c65232 == (* (( (ptr) gf←c66416)+48) ))) {
SOURCE(21496, 105)
         {
            W10 var←c65296;
            {
               word pd244;
               pd244 = (* (( (ptr) (* (( (ptr) gf←c66416)+224)/* var←c64976 */  ))+17) );
               (void) ( *( (fPt) ((*  (ptr) pd244 ))))((word) &var←c65296, sliceD←v8664, pd244);
               };
            segNum←v8820 = (* (( (ptr) &var←c65296)+9) );
            seg←v8792 = (* (( (ptr) &var←c65296)+8) );
            trajD←v11324 = (* (( (ptr) &var←c65296)+2) );
            hitType←v8736 = (* (( (ptr) &var←c65296)+1) );
            success←v8708 = (*  (ptr) &var←c65296 );
            };
SOURCE(21603, 18)
         traj←v8764 = (*  (ptr) trajD←v11324 );
         goto endif0241;
         };
      if ((var←c65232 == (* (( (ptr) gf←c66416)+41) ))) {
SOURCE(21637, 121)
         {
            W10 var←c65328;
            {
               word pd245;
               pd245 = (* (( (ptr) (* (( (ptr) gf←c66416)+222)/* var←c64368 */  ))+52) );
               (void) ( *( (fPt) ((*  (ptr) pd245 ))))((word) &var←c65328, (*  (ptr) sliceD←v8664 ), (* (( (ptr) sliceD←v8664)+1) ), pd245)
               ;
               };
            segNum←v8820 = (* (( (ptr) &var←c65328)+9) );
            seg←v8792 = (* (( (ptr) &var←c65328)+8) );
            hitType←v8736 = (* (( (ptr) &var←c65328)+1) );
            success←v8708 = (*  (ptr) &var←c65328 );
            };
         goto endif0241;
         };
SOURCE(21774, 35)
      success←v8708 = 0;
      hitType←v8736 = 0;
      traj←v8764 = 0;
      seg←v8792 = 0;
      segNum←v8820 = 999;
      goto lab←L100037;
      endif0241: ;
      };
   /* removed tail goto */ 
   lab←L100037: ;
   (*  (ptr) formal←c0637 ) = success←v8708;
   (* (( (ptr) formal←c0637)+1) ) = hitType←v8736;
   (* (( (ptr) formal←c0637)+2) ) = traj←v8764;
   (* (( (ptr) formal←c0637)+3) ) = seg←v8792;
   (* (( (ptr) formal←c0637)+4) ) = segNum←v8820;
   return;
   }

/* file: GGSliceOpsImpl, module: GGSliceOpsImpl, compiled at: July 11, 1993 8:05:02 pm PDT */ 
extern void XR←install←GGSliceOpsImpl() {
   NoName←Q6588();
   }
extern void XR←run←GGSliceOpsImpl() { XR←Start(&globalframe); }