/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 11, 1993 8:19:11 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: GGOutlineImplB, module: GGOutlineImplB */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2079818077,1001739096] GGOutlineImplB";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1;} W2;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1, f2;} W3;
typedef struct {W8 f; W3 r;} W11;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {W8 f; W6 r;} W14;
typedef struct {W8 f; W2 r;} W10;
typedef struct {W8 f; word r;} W9;
#define SOURCE(p, l) /* source p, l */
static float fc48 = 0.0;
static float fc49 = -1.0;
static float fc52 = 1E16;
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static void NoName←Q10788();
static void GGOutlineImplB←P0();
static void BuildMoreOutlineSliceClass←P60();
static void BuildMoreClusterSliceClass←P120();
static void ClosestPoint←P180();
static void ClosestJointToHitData←P240();
static void ClosestSegment←P300();
static void ClusterFilledPathsUnderPoint←P360();
static void OutlineFilledPathsUnderPoint←P420();
static void LineIntersection←P480();
static void CircleIntersection←P540();
static word HitDataAsSimpleCurve←P600();
static void PathOfHitData←P660();
static void SetDefaults←P720();
static void ChildSetDefaults←P5988();
static word SetStrokeWidth←P780();
static void GetStrokeWidth←P840();
static word DoCheckStrokeWidth←P6240();
static void SetStrokeEnd←P900();
static void GetStrokeEnd←P960();
static word DoCheckStrokeEnd←P6396();
static void SetStrokeJoint←P1020();
static void GetStrokeJoint←P1080();
static word DoCheckStrokeJoint←P6552();
static void SetStrokeColor←P1140();
static void GetStrokeColor←P1200();
static word DoCheckStrokeColor←P6708();
static void SetFillColor←P1260();
static void OutlineGetFillColor←P1320();
static void GetFillColor←P1380();
static word DoCheckFillColor←P6912();
static void SetDashed←P1440();
static void GetDashed←P1500();
static word DoCheckDashes←P7068();
static word SetOrientation←P1560();
static void GetOrientation←P1620();
static word DoCheckOrientation←P7224();
static word CreateOutline←P1680();
static word AddChild←P1740();
static word ReplaceFirstChild←P1800();
static word ReplaceChild←P1860();
static word ReplaceRunsInOutline←P1920();
static void SetWrapRule←P1980();
static word GetWrapRule←P2040();
static void SetFillText←P2100();
static word PutTextInBox←P7716();
static word DescriptorFromChildDescriptor←P2160();
static word DescriptorFromChild←P2220();
static word TopLevelDescriptorFromChildDescriptor←P2280();
static word ChildDescriptorFromDescriptor←P2340();
static word RemoveTraj←P2400();
static word OutlineRemoveTraj←P2460();
static word DeleteControlPoints←P2520();
static word DoDelete←P8112();
static void SaveSelectionsInOutlineAllClasses←P2580();
static void SaveSelectionsAux←P8172();
static word DoSaveSelections←P8376();
static void UnpackHitData←P2640();
static void UnpackOneSegmentDescriptor←P2700();
static void UnpackSimpleDescriptor←P2760();
static word FindTrajShapeInOutline←P2820();
static word MatchTraj←P8532();
static word TrajsInOutline←P2880();
static word TrajectoriesOfOutline←P2940();
static word ListHoles←P3000();
static word HasHoles←P3060();
static word Parts←P3120();
static word PartsList←P3180();
static word Parts2←P3240();
static word Children←P3300();
static word ChildList←P3360();
static word WalkChildren←P3420();
static word WalkIncludedChildren←P3480();
static word WalkIncludedParts←P3540();
static word ListChildren←P3600();
static word DoAppendSlice←P9456();
static word ListIncludedChildren←P3660();
static word DoAppendSlice←P9516();
static word FirstChild←P3720();
static word StopAtFirstSlice←P9576();
static word FirstIncludedChild←P3780();
static word StopAtFirstSlice←P9636();
static void TallyChildren←P3840();
static void TallyIncludedChildren←P3900();
static word IsParent←P3960();
static word IsParentType←P4020();
static word GetParent←P4080();
static word GetTopLevelAncestor←P4140();
static word IsLeafOfClass←P4200();
static word NoteSameClassChild←P9984();
static word CreateCluster←P4260();
static void AddChildToCluster←P4320();
static void AddChildrenToCluster←P4380();
static word RemoveChild←P4440();
static void PruneNullClusters←P4500();
static void SetFrozen←P4560();
static word GetFrozen←P4620();
static void AppendSlice←P4680();
static word TopPriority←P4740();
static void PutInFront←P4800();
static void PutBehind←P4860();
static word GetAtPriority←P4920();
static word GetChildPriority←P4980();
static word ComparePriorities←P5040();
static void UpdatePriorities←P5100();
static word DoUpdate←P10572();
static void UpdatePtr←P5160();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\311\023\117\300\300\337\236\305\170\100\214\000\000"};
static struct {unsigned f; char r[4];} string2 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\311\023\117\300\300\337\236\305\170\100\244\000\000"};
static struct {unsigned f; char r[4];} string4 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\311\023\117\300\300\337\236\305\170\100\164\000\000"};
static struct {unsigned f; char r[4];} string6 = {196611, "\004A6"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\125\044\051\337\300\130\157\071\243\100\324\000\000"};
static struct {unsigned f; char r[20];} string8 = {1179668, "\260\006\005\146\151\162\163\164\217\005\004\162\145\163\164\214\217\261\000"};
static struct {unsigned f; char r[44];} string9 = {2752556, "\260\006\005\146\151\162\163\164\257\300\247\031\224\326\300\123\162\224\023\100\164\005\004\162\145\163\164\214\257\300\247\031\224\326\300\123\162\224\023\100\164\261\000"};
static struct {unsigned f; char r[4];} string10 = {131074, "\003\002\000"};
static struct {unsigned f; char r[4];} string11 = {131076, "\216\251\000"};
static struct {unsigned f; char r[20];} string12 = {1179668, "\260\006\005\146\151\162\163\164\242\005\004\162\145\163\164\214\242\261\000"};
static struct {unsigned f; char r[4];} string13 = {131074, "\003\001\000"};
static struct {unsigned f; char r[48];} string14 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\247\365\203\234\300\047\265\225\046\100\324\005\004\162\145\163\164\214\216\257\300\247\365\203\234\300\047\265\225\046\100\324\261\000\000\000"};
static struct {unsigned f; char r[16];} string15 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\100\324\000\000"};
static struct {unsigned f; char r[32];} string16 = {1966110, "\006\015\000\001\004\001\010\001\034\001\040\001\044\001\050\001\054\001\060\001\064\001\074\001\100\110\001\100\130\001\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\114\000\000"};
static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\064\000\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\106\354\000\000"};
static struct {unsigned f; char r[8];} string20 = {262148, "\004\200@\034\000\000\000"};
static struct {unsigned f; char r[16];} string21 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\050\000\000"};
static struct {unsigned f; char r[4];} string22 = {131074, "\004\007\000"};
static struct {unsigned f; char r[8];} string23 = {458760, "Cluster"};
static struct {unsigned f; char r[4];} string24 = {196612, "Box"};
static struct {unsigned f; char r[8];} string25 = {262152, "Traj\000\000\000"};
static struct {unsigned f; char r[8];} string26 = {458760, "Outline"};
static struct {unsigned f; char r[12];} string27 = {589836, "ChangeHue\000\000"};
static struct {unsigned f; char r[4];} string28 = {196612, "Set"};
static struct {unsigned f; char r[16];} string29 = {851984, "\257\300\173\367\201\135\300\073\265\123\130\100\164\000\000"};
static struct {unsigned f; char r[8];} string30 = {393222, "\006\001@X\004?\000"};
static struct {unsigned f; char r[16];} string31 = {851984, "\257\300\322\334\347\304\300\124\107\000\027\100\150\000\000"};
static struct {unsigned f; char r[16];} string32 = {851984, "\257\300\265\217\206\011\300\172\271\371\033\100\150\000\000"};
static struct {unsigned f; char r[16];} string33 = {851984, "\257\300\231\005\151\136\300\275\231\323\274\100\150\000\000"};
static struct {unsigned f; char r[8];} string34 = {1195855733, "tline"};
static struct {unsigned f; char r[16];} string35 = {851984, "\257\300\311\023\117\300\300\337\236\305\170\100\150\000\000"};
static struct {unsigned f; char r[8];} string36 = {1195855969, "rent"};
static struct {unsigned f; char r[16];} string37 = {851984, "\257\300\301\241\007\150\300\032\111\265\237\100\150\000\000"};
static struct {unsigned f; char r[16];} string38 = {851984, "\257\300\347\101\365\007\300\150\102\366\020\100\150\000\000"};
static struct {unsigned f; char r[16];} string39 = {851984, "\257\300\011\245\206\305\300\112\326\356\245\100\150\000\000"};
static struct {unsigned f; char r[16];} string40 = {851984, "\257\300\261\002\056\176\300\055\321\222\125\100\150\000\000"};
static struct {unsigned f; char r[4];} string41 = {1195856748, "ice"};
static struct {unsigned f; char r[16];} string42 = {851984, "\257\300U$)\337\300Xo9\243@t\000\000"};
static struct {unsigned f; char r[16];} string43 = {851984, "\257\300\336\025\013\356\300\216\115\352\271\100\150\000\000"};
static struct {unsigned f; char r[16];} string44 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\150\000\000"};
static struct {unsigned f; char r[16];} string45 = {851984, "\257\300\370\132\042\205\300\045\133\011\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string46 = {851984, "\257\300\144\364\322\150\300\206\136\277\046\100\150\000\000"};
static struct {unsigned f; char r[16];} string47 = {851984, "\257\300\042\224\360\026\300\243\254\175\360\100\150\000\000"};
static struct {
   word f0[28]; word f28; word f29; word f30; 
   word f31; word f32; word f33; word f34; 
   word f35; word f36; word f37; word f38; 
   word f39; word f40; word f41; word f42; 
   word f43; word f44; word f45; word f46; 
   word f47; word f48; word f49; word f50; 
   word f51; word f52; word f53; word f54; 
   word f55; word f56; word f57; word f58; 
   word f59; word f60; word f61; word f62; 
   word f63; word f64; word f65; word f66; 
   word f67; word f68; word f69; word f70; 
   word f71; word f72; word f73; word f74; 
   word f75; word f76; word f77; word f78; 
   word f79; word f80; word f81; word f82; 
   word f83; word f84; word f85; word f86; 
   word f87; word f88; word f89; word f90; 
   word f91; word f92; word f93; word f94; 
   word f95; word f96; word f97; word f98; 
   word f99; word f100; word f101; word f102; 
   word f103; word f104; word f105; word f106; 
   word f107; word f108; word f109; word f110; 
   word f111; word f112; word f113; word f114; 
   word f115; word f116; word f117; word f118; 
   word f119; word f120; word f121; word f122; 
   word f123; word f124; word f125; word f126; 
   word f127; word f128; word f129; word f130; 
   word f131; word f132; word f133; word f134; 
   word f135; word f136; word f137; word f138; 
   word f139; word f140; word f141; word f142; 
   word f143; word f144; word f145; word f146; 
   word f147; word f148; word f149; word f150; 
   word f151; word f152; word f153; word f154; 
   word f155; word f156; word f157; word f158; 
   word f159; word f160; word f161; word f162; 
   word f163; word f164; word f165; word f166; 
   word f167; word f168; word f169; word f170; 
   word f171; word f172; word f173; word f174; 
   word f175; word f176; word f177; word f178; 
   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[20]; 
   } globalframe = {
   {0}, (word) UpdatePtr←P5160, 0, (word) UpdatePriorities←P5100, 
   0, (word) ComparePriorities←P5040, 0, (word) GetChildPriority←P4980, 
   0, (word) GetAtPriority←P4920, 0, (word) PutBehind←P4860, 
   0, (word) PutInFront←P4800, 0, (word) TopPriority←P4740, 
   0, (word) AppendSlice←P4680, 0, (word) GetFrozen←P4620, 
   0, (word) SetFrozen←P4560, 0, (word) PruneNullClusters←P4500, 
   0, (word) RemoveChild←P4440, 0, (word) AddChildrenToCluster←P4380, 
   0, (word) AddChildToCluster←P4320, 0, (word) CreateCluster←P4260, 
   0, (word) IsLeafOfClass←P4200, 0, (word) GetTopLevelAncestor←P4140, 
   0, (word) GetParent←P4080, 0, (word) IsParentType←P4020, 
   0, (word) IsParent←P3960, 0, (word) TallyIncludedChildren←P3900, 
   0, (word) TallyChildren←P3840, 0, (word) FirstIncludedChild←P3780, 
   0, (word) FirstChild←P3720, 0, (word) ListIncludedChildren←P3660, 
   0, (word) ListChildren←P3600, 0, (word) WalkIncludedParts←P3540, 
   0, (word) WalkIncludedChildren←P3480, 0, (word) WalkChildren←P3420, 
   0, (word) ChildList←P3360, 0, (word) Children←P3300, 
   0, (word) Parts2←P3240, 0, (word) PartsList←P3180, 
   0, (word) Parts←P3120, 0, (word) HasHoles←P3060, 
   0, (word) ListHoles←P3000, 0, (word) TrajectoriesOfOutline←P2940, 
   0, (word) TrajsInOutline←P2880, 0, (word) FindTrajShapeInOutline←P2820, 
   0, (word) UnpackSimpleDescriptor←P2760, 0, (word) UnpackOneSegmentDescriptor←P2700, 
   0, (word) UnpackHitData←P2640, 0, (word) SaveSelectionsInOutlineAllClasses←P2580, 
   0, (word) DeleteControlPoints←P2520, 0, (word) OutlineRemoveTraj←P2460, 
   0, (word) RemoveTraj←P2400, 0, (word) ChildDescriptorFromDescriptor←P2340, 
   0, (word) TopLevelDescriptorFromChildDescriptor←P2280, 0, (word) DescriptorFromChild←P2220, 
   0, (word) DescriptorFromChildDescriptor←P2160, 0, (word) SetFillText←P2100, 
   0, (word) GetWrapRule←P2040, 0, (word) SetWrapRule←P1980, 
   0, (word) ReplaceRunsInOutline←P1920, 0, (word) ReplaceChild←P1860, 
   0, (word) ReplaceFirstChild←P1800, 0, (word) AddChild←P1740, 
   0, (word) CreateOutline←P1680, 0, (word) GetOrientation←P1620, 
   0, (word) SetOrientation←P1560, 0, (word) GetDashed←P1500, 
   0, (word) SetDashed←P1440, 0, (word) GetFillColor←P1380, 
   0, (word) OutlineGetFillColor←P1320, 0, (word) SetFillColor←P1260, 
   0, (word) GetStrokeColor←P1200, 0, (word) SetStrokeColor←P1140, 
   0, (word) GetStrokeJoint←P1080, 0, (word) SetStrokeJoint←P1020, 
   0, (word) GetStrokeEnd←P960, 0, (word) SetStrokeEnd←P900, 
   0, (word) GetStrokeWidth←P840, 0, (word) SetStrokeWidth←P780, 
   0, (word) SetDefaults←P720, 0, (word) PathOfHitData←P660, 
   0, (word) HitDataAsSimpleCurve←P600, 0, (word) CircleIntersection←P540, 
   0, (word) LineIntersection←P480, 0, (word) OutlineFilledPathsUnderPoint←P420, 
   0, (word) ClusterFilledPathsUnderPoint←P360, 0, (word) ClosestSegment←P300, 
   0, (word) ClosestJointToHitData←P240, 0, (word) ClosestPoint←P180, 
   0, (word) BuildMoreClusterSliceClass←P120, 0, (word) BuildMoreOutlineSliceClass←P60, 
   0, (word) GGOutlineImplB←P0, {0}
   };

static void NoName←Q10788()
   {
   register ptr gf←c0949 =  (ptr) &globalframe;
   word var←c87716;
   (* (( (ptr) gf←c0949)+5) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0949)+6) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c0949)+7) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
   (* (( (ptr) gf←c0949)+8) ) = (word) XR←GetTypeIndexS((word) (&string7));
   (* (( (ptr) gf←c0949)+9) ) = (word) XR←GetTypeIndex((word) &string8, 0, (word) &string4);
   (* (( (ptr) gf←c0949)+10) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
   (* (( (ptr) gf←c0949)+11) ) = (word) XR←GetTypeIndex((word) &string11, 0, (word) &string2);
   (* (( (ptr) gf←c0949)+14) ) = (word) XR←GetTypeIndex((word) &string12, 0, (word) &string13);
   (* (( (ptr) gf←c0949)+15) ) = (word) XR←GetTypeIndex((word) &string14, 0, (word) &string4);
   (* (( (ptr) gf←c0949)+16) ) = (word) XR←GetTypeIndex((word) &string15, 0, (word) &string16);
   (* (( (ptr) gf←c0949)+17) ) = (word) XR←GetTypeIndex((word) &string17, 0, (word) &string2);
   (* (( (ptr) gf←c0949)+19) ) = (word) XR←GetTypeIndex((word) &string18, 0, (word) &string2);
   (* (( (ptr) gf←c0949)+20) ) = (word) XR←GetTypeIndex((word) &string19, 0, (word) &string20);
   (* (( (ptr) gf←c0949)+21) ) = (word) XR←GetTypeIndex((word) &string21, 0, (word) &string22);
   (*  (ptr) (( (bPt) gf←c0949)+88) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0949)+11) ), (word) &string23);
   (*  (ptr) (( (bPt) gf←c0949)+92) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0949)+11) ), (word) &string24);
   (*  (ptr) (( (bPt) gf←c0949)+96) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0949)+11) ), (word) &string25);
   (*  (ptr) (( (bPt) gf←c0949)+100) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0949)+11) ), (word) &string26);
   (*  (ptr) (( (bPt) gf←c0949)+104) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0949)+11) ), (word) &string27);
   (*  (ptr) (( (bPt) gf←c0949)+108) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0949)+11) ), (word) &string28);
   (void) XR←DeclareGlobalFrame((word) "GGOutlineImplB", &globalframe, (word) XR←GetTypeIndex((word) &string29, 0, (word) &string30)
      , (word) (( (bPt) gf←c0949)+800)/* var←c82052 */ );
   var←c87716 = (word) XR←ImportInterface((word) "Feedback", (word) XR←GetTypeIndexS((word) (&string31)), 25);
   (* (( (ptr) gf←c0949)+206)/* var←c82148 */  ) = var←c87716;
   var←c87716 = (word) XR←ImportInterface((word) "GGBoundBox", (word) XR←GetTypeIndexS((word) (&string32)), 24);
   (* (( (ptr) gf←c0949)+210)/* var←c82308 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 526850);
   (void) XR←ImportProcS(var←c87716, 67109376);
   (void) XR←ImportProcS(var←c87716, 67371777);
   (void) XR←ImportProcS(var←c87716, 68162051);
   var←c87716 = (word) XR←ImportInterface((word) "GGCoreOps", (word) XR←GetTypeIndexS((word) (&string33)), 37);
   (* (( (ptr) gf←c0949)+213)/* var←c83620 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 67641090);
   var←c87716 = (word) XR←ImportInterface((word) &string34, (word) XR←GetTypeIndexS((word) (&string35)), 19);
   (* (( (ptr) gf←c0949)+215)/* var←c84324 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 67633410);
   (void) XR←ImportProcS(var←c87716, 67375361);
   var←c87716 = (word) XR←ImportInterface((word) &string36, (word) XR←GetTypeIndexS((word) (&string37)), 83);
   (* (( (ptr) gf←c0949)+207)/* var←c82180 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 67649026);
   (void) XR←ImportProcS(var←c87716, 67650306);
   (void) XR←ImportProcS(var←c87716, 803331);
   (void) XR←ImportProcS(var←c87716, 67387393);
   (void) XR←ImportProcS(var←c87716, 67386113);
   (void) XR←ImportProcS(var←c87716, 67650562);
   (void) XR←ImportProcS(var←c87716, 68437509);
   (void) XR←ImportProcS(var←c87716, 67386369);
   (void) XR←ImportProcS(var←c87716, 68175108);
   (void) XR←ImportProcS(var←c87716, 67913987);
   (void) XR←ImportProcS(var←c87716, 68176388);
   (void) XR←ImportProcS(var←c87716, 67385857);
   (void) XR←ImportProcS(var←c87716, 67653122);
   (void) XR←ImportProcS(var←c87716, 67653890);
   (void) XR←ImportProcS(var←c87716, 134755330);
   (void) XR←ImportProcS(var←c87716, 134756354);
   (void) XR←ImportProcS(var←c87716, 68171524);
   (void) XR←ImportProcS(var←c87716, 336082434);
   (void) XR←ImportProcS(var←c87716, 1848583);
   (void) XR←ImportProcS(var←c87716, 1323781);
   (void) XR←ImportProcS(var←c87716, 134754818);
   (void) XR←ImportProcS(var←c87716, 1323269);
   (void) XR←ImportProcS(var←c87716, 134754306);
   (void) XR←ImportProcS(var←c87716, 1060612);
   (void) XR←ImportProcS(var←c87716, 134753794);
   (void) XR←ImportProcS(var←c87716, 1060100);
   (void) XR←ImportProcS(var←c87716, 134753282);
   (void) XR←ImportProcS(var←c87716, 68168452);
   (void) XR←ImportProcS(var←c87716, 1059332);
   (void) XR←ImportProcS(var←c87716, 67643394);
   (void) XR←ImportProcS(var←c87716, 134752002);
   (void) XR←ImportProcS(var←c87716, 134751746);
   (void) XR←ImportProcS(var←c87716, 470820099);
   (void) XR←ImportProcS(var←c87716, 337126404);
   (void) XR←ImportProcS(var←c87716, 470819587);
   var←c87716 = (word) XR←ImportInterface((word) "GGScene", (word) XR←GetTypeIndexS((word) (&string38)), 50);
   (* (( (ptr) gf←c0949)+217)/* var←c85028 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 526594);
   (void) XR←ImportProcS(var←c87716, 67379969);
   var←c87716 = (word) XR←ImportInterface((word) "GGSelect", (word) XR←GetTypeIndexS((word) (&string39)), 23);
   (* (( (ptr) gf←c0949)+218)/* var←c85508 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 67637250);
   var←c87716 = (word) XR←ImportInterface((word) "GGSequence", (word) XR←GetTypeIndexS((word) (&string40)), 58);
   (* (( (ptr) gf←c0949)+219)/* var←c85636 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 671621122);
   (void) XR←ImportProcS(var←c87716, 67378945);
   var←c87716 = (word) XR←ImportInterface((word) &string41, (word) XR←GetTypeIndexS((word) (&string42)), 128);
   (* (( (ptr) gf←c0949)+208)/* var←c82212 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 1321732);
   (void) XR←ImportProcS(var←c87716, 201600257);
   (void) XR←ImportProcS(var←c87716, 278529);
   (void) XR←ImportProcS(var←c87716, 67634178);
   (void) XR←ImportProcS(var←c87716, 67371777);
   (void) XR←ImportProcS(var←c87716, 134511105);
   (void) XR←ImportProcS(var←c87716, 1341701);
   (void) XR←ImportProcS(var←c87716, 470837251);
   var←c87716 = (word) XR←ImportInterface((word) "GGSliceOps", (word) XR←GetTypeIndexS((word) (&string43)), 73);
   (* (( (ptr) gf←c0949)+209)/* var←c82276 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 67901699);
   (void) XR←ImportProcS(var←c87716, 790531);
   (void) XR←ImportProcS(var←c87716, 67637506);
   (void) XR←ImportProcS(var←c87716, 67376897);
   (void) XR←ImportProcS(var←c87716, 67634690);
   (void) XR←ImportProcS(var←c87716, 67371521);
   (void) XR←ImportProcS(var←c87716, 134758402);
   (void) XR←ImportProcS(var←c87716, 68173572);
   (void) XR←ImportProcS(var←c87716, 336084482);
   (void) XR←ImportProcS(var←c87716, 134756866);
   (void) XR←ImportProcS(var←c87716, 134756354);
   (void) XR←ImportProcS(var←c87716, 134755842);
   (void) XR←ImportProcS(var←c87716, 134755330);
   (void) XR←ImportProcS(var←c87716, 134754818);
   (void) XR←ImportProcS(var←c87716, 67633922);
   (void) XR←ImportProcS(var←c87716, 1325317);
   (void) XR←ImportProcS(var←c87716, 1324805);
   (void) XR←ImportProcS(var←c87716, 1850631);
   (void) XR←ImportProcS(var←c87716, 1062148);
   (void) XR←ImportProcS(var←c87716, 1061636);
   (void) XR←ImportProcS(var←c87716, 68169988);
   (void) XR←ImportProcS(var←c87716, 67645186);
   (void) XR←ImportProcS(var←c87716, 134752002);
   (void) XR←ImportProcS(var←c87716, 67379969);
   (void) XR←ImportProcS(var←c87716, 135277571);
   (void) XR←ImportProcS(var←c87716, 337127684);
   (void) XR←ImportProcS(var←c87716, 67634434);
   var←c87716 = (word) XR←ImportInterface((word) "GGTraj", (word) XR←GetTypeIndexS((word) (&string44)), 55);
   (* (( (ptr) gf←c0949)+214)/* var←c84292 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 67639298);
   (void) XR←ImportProcS(var←c87716, 402927873);
   (void) XR←ImportProcS(var←c87716, 67634434);
   (void) XR←ImportProcS(var←c87716, 68159236);
   (void) XR←ImportProcS(var←c87716, 527106);
   var←c87716 = (word) XR←ImportInterface((word) "GGUtility", (word) XR←GetTypeIndexS((word) (&string45)), 42);
   (* (( (ptr) gf←c0949)+212)/* var←c83236 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 268964866);
   (void) XR←ImportProcS(var←c87716, 67638018);
   (void) XR←ImportProcS(var←c87716, 67376385);
   (void) XR←ImportProcS(var←c87716, 134221824);
   (void) XR←ImportProcS(var←c87716, 135008515);
   (void) XR←ImportProcS(var←c87716, 67897859);
   (void) XR←ImportProcS(var←c87716, 135007235);
   (void) XR←ImportProcS(var←c87716, 134220544);
   (void) XR←ImportProcS(var←c87716, 67637762);
   (void) XR←ImportProcS(var←c87716, 67641858);
   (void) XR←ImportProcS(var←c87716, 67641346);
   (void) XR←ImportProcS(var←c87716, 67379457);
   var←c87716 = (word) XR←ImportInterface((word) "List", (word) XR←GetTypeIndexS((word) (&string46)), 28);
   (* (( (ptr) gf←c0949)+211)/* var←c82628 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 67374081);
   var←c87716 = (word) XR←ImportInterface((word) "TextNode", (word) XR←GetTypeIndexS((word) (&string47)), 34);
   (* (( (ptr) gf←c0949)+216)/* var←c84868 */  ) = var←c87716;
   (void) XR←ImportProcS(var←c87716, 67377153);
   var←c87716 = (word) XR←ExportInterface((word) &string41, (word) XR←GetTypeIndexS((word) (&string42)), 128);
   (* (( (ptr) gf←c0949)+220)/* var←c87748 */  ) = var←c87716;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+232)/* var←c79780 */ , 67372545, (word) "CreateCluster");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+224)/* var←c79748 */ , 788227, (word) "AddChildToCluster");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+216)/* var←c79716 */ , 788483, (word) "AddChildrenToCluster")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+208)/* var←c79684 */ , 67635458, (word) "RemoveChild");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+200)/* var←c79652 */ , 526850, (word) "PruneNullClusters");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+192)/* var←c79620 */ , 527106, (word) "SetFrozen");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+184)/* var←c79588 */ , 67374081, (word) "GetFrozen");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+784)/* var←c81988 */ , 265729, (word) "BuildMoreClusterSliceClass")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+792)/* var←c82020 */ , 277761, (word) "BuildMoreOutlineSliceClass")
   ;
   var←c87716 = (word) XR←ExportInterface((word) &string34, (word) XR←GetTypeIndexS((word) (&string35)), 19);
   (* (( (ptr) gf←c0949)+220)/* var←c87748 */  ) = var←c87716;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+576)/* var←c81156 */ , 67633410, (word) "CreateOutline");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+568)/* var←c81124 */ , 67633666, (word) "AddChild");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+560)/* var←c81092 */ , 67633922, (word) "ReplaceFirstChild");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+552)/* var←c81060 */ , 67896323, (word) "ReplaceChild");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+544)/* var←c81028 */ , 68158724, (word) "ReplaceRunsInOutline")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+536)/* var←c80996 */ , 525826, (word) "SetWrapRule");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+528)/* var←c80964 */ , 67372801, (word) "GetWrapRule");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+520)/* var←c80932 */ , 1050628, (word) "SetFillText");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+464)/* var←c80708 */ , 67635458, (word) "DeleteControlPoints")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+456)/* var←c80676 */ , 264705, (word) "SaveSelectionsInOutlineAllClasses")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+448)/* var←c80644 */ , 470027009, (word) "UnpackHitData");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+440)/* var←c80612 */ , 134482945, (word) "UnpackOneSegmentDescriptor")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+432)/* var←c80580 */ , 671354113, (word) "UnpackSimpleDescriptor")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+424)/* var←c80548 */ , 67636738, (word) "FindTrajShapeInOutline")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+416)/* var←c80516 */ , 67374849, (word) "TrajsInOutline");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+408)/* var←c80484 */ , 67375105, (word) "TrajectoriesOfOutline")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+400)/* var←c80452 */ , 67375361, (word) "ListHoles");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+392)/* var←c80420 */ , 67375617, (word) "HasHoles");
   var←c87716 = (word) XR←ExportInterface((word) &string36, (word) XR←GetTypeIndexS((word) (&string37)), 83);
   (* (( (ptr) gf←c0949)+220)/* var←c87748 */  ) = var←c87716;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+776)/* var←c81956 */ , 470819587, (word) "ClosestPoint");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+768)/* var←c81924 */ , 337126404, (word) "ClosestJointToHitData")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+760)/* var←c81892 */ , 470820099, (word) "ClosestSegment");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+736)/* var←c81796 */ , 134751746, (word) "LineIntersection");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+728)/* var←c81764 */ , 134752002, (word) "CircleIntersection")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+720)/* var←c81732 */ , 67643394, (word) "HitDataAsSimpleCurve")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+712)/* var←c81700 */ , 134752514, (word) "PathOfHitData");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+704)/* var←c81668 */ , 1059332, (word) "SetDefaults");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+696)/* var←c81636 */ , 68168452, (word) "SetStrokeWidth");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+688)/* var←c81604 */ , 134753282, (word) "GetStrokeWidth");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+680)/* var←c81572 */ , 1060100, (word) "SetStrokeEnd");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+672)/* var←c81540 */ , 134753794, (word) "GetStrokeEnd");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+664)/* var←c81508 */ , 1060612, (word) "SetStrokeJoint");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+656)/* var←c81476 */ , 134754306, (word) "GetStrokeJoint");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+648)/* var←c81444 */ , 1323269, (word) "SetStrokeColor");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+640)/* var←c81412 */ , 134754818, (word) "GetStrokeColor");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+632)/* var←c81380 */ , 1323781, (word) "SetFillColor");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+616)/* var←c81316 */ , 134755330, (word) "GetFillColor");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+608)/* var←c81284 */ , 1848583, (word) "SetDashed");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+600)/* var←c81252 */ , 336082434, (word) "GetDashed");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+592)/* var←c81220 */ , 68171524, (word) "SetOrientation");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+584)/* var←c81188 */ , 134756354, (word) "GetOrientation");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+272)/* var←c79940 */ , 67385857, (word) "IsParent");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+264)/* var←c79908 */ , 67386113, (word) "IsParentType");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+256)/* var←c79876 */ , 67386369, (word) "GetParent");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+248)/* var←c79844 */ , 67386625, (word) "GetTopLevelAncestor")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+136)/* var←c79396 */ , 67649026, (word) "GetChildPriority");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+128)/* var←c79364 */ , 67649282, (word) "ComparePriorities");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+168)/* var←c79524 */ , 67387393, (word) "TopPriority");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+160)/* var←c79492 */ , 803075, (word) "PutInFront");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+152)/* var←c79460 */ , 803331, (word) "PutBehind");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+144)/* var←c79428 */ , 67650306, (word) "GetAtPriority");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+240)/* var←c79812 */ , 67650562, (word) "IsLeafOfClass");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+344)/* var←c80228 */ , 68175108, (word) "WalkChildren");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+336)/* var←c80196 */ , 68437509, (word) "WalkIncludedChildren")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+320)/* var←c80132 */ , 67913475, (word) "ListChildren");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+312)/* var←c80100 */ , 68175876, (word) "ListIncludedChildren")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+304)/* var←c80068 */ , 67913987, (word) "FirstChild");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+296)/* var←c80036 */ , 68176388, (word) "FirstIncludedChild")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+288)/* var←c80004 */ , 134761474, (word) "TallyChildren");
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+280)/* var←c79972 */ , 135023875, (word) "TallyIncludedChildren")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+512)/* var←c80900 */ , 67653122, (word) "DescriptorFromChildDescriptor")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+504)/* var←c80868 */ , 67653378, (word) "DescriptorFromChild")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+496)/* var←c80836 */ , 67391489, (word) "TopLevelDescriptorFromChildDescriptor")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+488)/* var←c80804 */ , 67653890, (word) "ChildDescriptorFromDescriptor")
   ;
   (void) XR←ExportProcS(var←c87716, (word) (( (bPt) gf←c0949)+480)/* var←c80772 */ , 67654146, (word) "RemoveTraj");
   }

static void GGOutlineImplB←P0(formal←c0109, formal←c0108)
   word formal←c0109;
   word formal←c0108;
   {
   register ptr gf←c87780 =  (ptr) &globalframe;
   /* GGOutlineImplB: */ 
SOURCE(291, 55913)
SOURCE(3404, 24)
   (* (( (ptr) gf←c87780)+4)/* Problem←v5184 */  ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c87780)+206)/* var←c82148 */  ))+28)
    ) );
   }

static void BuildMoreOutlineSliceClass←P60(class←v7800)
   word class←v7800;
   {
   register ptr gf←c87812 =  (ptr) &globalframe;
   /* BuildMoreOutlineSliceClass: */ 
SOURCE(3552, 1270)
SOURCE(3617, 42)
   (* (( (ptr) class←v7800)+38) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+39) );
SOURCE(3661, 60)
   (* (( (ptr) class←v7800)+39) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+40) );
SOURCE(3723, 65)
   (* (( (ptr) class←v7800)+40) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+208)/* var←c82212 */  ))+108) );
SOURCE(3790, 46)
   (* (( (ptr) class←v7800)+41) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+41) );
SOURCE(3838, 58)
   (* (( (ptr) class←v7800)+42) ) = (word) (( (bPt) gf←c87812)+744)/* var←c81828 */ ;
SOURCE(3898, 50)
   (* (( (ptr) class←v7800)+43) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+42) );
SOURCE(3950, 54)
   (* (( (ptr) class←v7800)+44) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+43) );
SOURCE(4006, 58)
   (* (( (ptr) class←v7800)+45) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+44) );
SOURCE(4066, 40)
   (* (( (ptr) class←v7800)+46) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+46) );
SOURCE(4108, 46)
   (* (( (ptr) class←v7800)+47) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+47) );
SOURCE(4156, 46)
   (* (( (ptr) class←v7800)+48) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+48) );
SOURCE(4204, 42)
   (* (( (ptr) class←v7800)+49) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+49) );
SOURCE(4248, 42)
   (* (( (ptr) class←v7800)+50) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+50) );
SOURCE(4292, 46)
   (* (( (ptr) class←v7800)+51) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+51) );
SOURCE(4340, 46)
   (* (( (ptr) class←v7800)+52) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+52) );
SOURCE(4388, 46)
   (* (( (ptr) class←v7800)+53) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+53) );
SOURCE(4436, 46)
   (* (( (ptr) class←v7800)+54) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+54) );
SOURCE(4484, 42)
   (* (( (ptr) class←v7800)+55) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+55) );
SOURCE(4528, 40)
   (* (( (ptr) class←v7800)+56) ) = (word) (( (bPt) gf←c87812)+624)/* var←c81348 */ ;
SOURCE(4570, 39)
   (* (( (ptr) class←v7800)+57) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+208)/* var←c82212 */  ))+125) );
SOURCE(4611, 39)
   (* (( (ptr) class←v7800)+58) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+208)/* var←c82212 */  ))+126) );
SOURCE(4652, 36)
   (* (( (ptr) class←v7800)+59) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+57) );
SOURCE(4690, 36)
   (* (( (ptr) class←v7800)+60) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+58) );
SOURCE(4728, 46)
   (* (( (ptr) class←v7800)+61) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+59) );
SOURCE(4776, 46)
   (* (( (ptr) class←v7800)+62) ) = (* (( (ptr) (* (( (ptr) gf←c87812)+207)/* var←c82180 */  ))+60) );
   }

static void BuildMoreClusterSliceClass←P120(class←v7860)
   word class←v7860;
   {
   register ptr gf←c87844 =  (ptr) &globalframe;
   /* BuildMoreClusterSliceClass: */ 
SOURCE(4828, 1272)
SOURCE(4893, 42)
   (* (( (ptr) class←v7860)+38) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+39) );
SOURCE(4937, 60)
   (* (( (ptr) class←v7860)+39) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+40) );
SOURCE(4999, 65)
   (* (( (ptr) class←v7860)+40) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+208)/* var←c82212 */  ))+108) );
SOURCE(5066, 46)
   (* (( (ptr) class←v7860)+41) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+41) );
SOURCE(5114, 58)
   (* (( (ptr) class←v7860)+42) ) = (word) (( (bPt) gf←c87844)+752)/* var←c81860 */ ;
SOURCE(5174, 50)
   (* (( (ptr) class←v7860)+43) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+42) );
SOURCE(5226, 54)
   (* (( (ptr) class←v7860)+44) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+43) );
SOURCE(5282, 58)
   (* (( (ptr) class←v7860)+45) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+44) );
SOURCE(5342, 40)
   (* (( (ptr) class←v7860)+46) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+46) );
SOURCE(5384, 46)
   (* (( (ptr) class←v7860)+47) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+47) );
SOURCE(5432, 46)
   (* (( (ptr) class←v7860)+48) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+48) );
SOURCE(5480, 42)
   (* (( (ptr) class←v7860)+49) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+49) );
SOURCE(5524, 42)
   (* (( (ptr) class←v7860)+50) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+50) );
SOURCE(5568, 46)
   (* (( (ptr) class←v7860)+51) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+51) );
SOURCE(5616, 46)
   (* (( (ptr) class←v7860)+52) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+52) );
SOURCE(5664, 46)
   (* (( (ptr) class←v7860)+53) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+53) );
SOURCE(5712, 46)
   (* (( (ptr) class←v7860)+54) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+54) );
SOURCE(5760, 42)
   (* (( (ptr) class←v7860)+55) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+55) );
SOURCE(5804, 42)
   (* (( (ptr) class←v7860)+56) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+56) );
SOURCE(5848, 39)
   (* (( (ptr) class←v7860)+57) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+208)/* var←c82212 */  ))+125) );
SOURCE(5889, 39)
   (* (( (ptr) class←v7860)+58) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+208)/* var←c82212 */  ))+126) );
SOURCE(5930, 36)
   (* (( (ptr) class←v7860)+59) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+57) );
SOURCE(5968, 36)
   (* (( (ptr) class←v7860)+60) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+58) );
SOURCE(6006, 46)
   (* (( (ptr) class←v7860)+61) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+59) );
SOURCE(6054, 46)
   (* (( (ptr) class←v7860)+62) ) = (* (( (ptr) (* (( (ptr) gf←c87844)+207)/* var←c82180 */  ))+60) );
   }

static void ClosestPoint←P180(formal←c0135, sliceD←v7920, testPoint←v7948, tolerance←v7976)
   word formal←c0135;
   word sliceD←v7920;
   W2 testPoint←v7948;
   word tolerance←v7976;
   {
   register ptr gf←c87876 =  (ptr) &globalframe;
   W2 bestPoint←v8020;
   word bestDist←v8048;
   W2 bestNormal←v8076;
   word hitData←v8104;
   word success←v8132;
   /* ClosestPoint: */ 
SOURCE(6106, 1154)
SOURCE(6106, 1154)
   bestPoint←v8020.f0 = (*  (ptr) &fc48 );
   bestPoint←v8020.f1 = (*  (ptr) &fc48 );
SOURCE(6106, 1154)
   bestDist←v8048 = (*  (ptr) &fc48 );
SOURCE(6106, 1154)
   bestNormal←v8076.f0 = (*  (ptr) &fc48 );
   bestNormal←v8076.f1 = (*  (ptr) &fc49 );
SOURCE(6106, 1154)
   hitData←v8104 = 0;
SOURCE(6106, 1154)
   success←v8132 = 0;
SOURCE(6329, 931)
   if ((sliceD←v7920 == 0)) {
SOURCE(6348, 12)
      goto lab←L100000;
      }
   else {
SOURCE(6360, 905)
      {
         word parts←v21468;
         word outlineHitData←v21496 = 0;
         W2 thisPoint←v21524;
         word thisDist←v21552;
         W2 thisNormal←v21580;
         word thisHitData←v21608 = 0;
         word bestHitData←v21636 = 0;
         word thisSuccess←v21664 = 0;
         word bestChild←v21692 = 0;
         word var←c82244;
SOURCE(6362, 42)
         parts←v21468 = XR←Narrow((* (( (ptr) sliceD←v7920)+1) ), (* (( (ptr) gf←c87876)+5) ));
SOURCE(6573, 107)
         {
            word pd51;
            {
               word pd50;
               pd50 = (* (( (ptr) (* (( (ptr) gf←c87876)+209)/* var←c82276 */  ))+9) );
               var←c82244 = (word) ( *( (fPt) ((*  (ptr) pd50 ))))((*  (ptr) sliceD←v7920 ), 0, pd50);
               };
            pd51 = (* (( (ptr) (* (( (ptr) gf←c87876)+210)/* var←c82308 */  ))+22) );
            if ((0 == (word) ( *( (fPt) ((*  (ptr) pd51 ))))(testPoint←v7948, var←c82244, tolerance←v7976, pd51))) {
SOURCE(6674, 6)
               goto lab←L100000;
               };
            };
SOURCE(6683, 33)
         bestDist←v8048 = (*  (ptr) &fc52 );
SOURCE(6718, 433)
         {
            register word list←v21748;
            list←v21748 = (*  (ptr) parts←v21468 );
            lab←L100004: ;
            if ((list←v21748 != 0)) {
               }
            else {
               goto lab←L100001;
               };
SOURCE(6803, 23)
            if (((*  (ptr) list←v21748 ) == 0)) {
SOURCE(6826, 4)
               goto lab←L100003;
               };
SOURCE(6832, 131)
            {
               W7 var←c82340;
               {
                  word pd53;
                  pd53 = (* (( (ptr) (*  (ptr) (*  (ptr) (*  (ptr) list←v21748 ) ) ))+38) );
                  (void) ( *( (fPt) ((*  (ptr) pd53 ))))((word) &var←c82340, (*  (ptr) list←v21748 ), testPoint←v7948, tolerance←v7976, pd53)
                  ;
                  };
               thisSuccess←v21664 = var←c82340.f6;
               thisHitData←v21608 = var←c82340.f5;
               thisNormal←v21580 = (*  (W2Pt) (( (ptr) &var←c82340)+3) );
               thisDist←v21552 = var←c82340.f2;
               thisPoint←v21524 = (*  (W2Pt) &var←c82340 );
               };
SOURCE(6965, 186)
            {
               word x54;
               word x55;
               if ( ( (0 != thisSuccess←v21664) ? ((
                  x54 = thisDist←v21552,  *(float*)&x54
                  ) < (
                  x55 = bestDist←v8048,  *(float*)&x55
                  )) : 0 ) ) {
SOURCE(7011, 28)
                  bestChild←v21692 = (*  (ptr) (*  (ptr) list←v21748 ) );
SOURCE(7041, 21)
                  bestPoint←v8020 = thisPoint←v21524;
SOURCE(7064, 19)
                  bestDist←v8048 = thisDist←v21552;
SOURCE(7085, 23)
                  bestNormal←v8076 = thisNormal←v21580;
SOURCE(7110, 25)
                  bestHitData←v21636 = thisHitData←v21608;
SOURCE(7137, 14)
                  success←v8132 = 1;
                  };
               };
            lab←L100003: ;
            list←v21748 = (* (( (ptr) list←v21748)+1) );
            goto lab←L100004;
            lab←L100001: ;
            };
SOURCE(7165, 95)
         if ((0 != success←v8132)) {
SOURCE(7183, 77)
            {
               word var←c82372;
               {
                  word var←c82404;
                  var←c82404 = XR←NewObject(8, (* (( (ptr) gf←c87876)+6) ));
                  (*  (ptr) var←c82404 ) = bestChild←v21692;
                  (* (( (ptr) var←c82404)+1) ) = bestHitData←v21636;
                  var←c82372 = var←c82404;
                  };
               outlineHitData←v21496 = var←c82372;
               hitData←v8104 = var←c82372;
               };
            };
         };
      };
   /* removed tail goto */ 
   lab←L100000: ;
   (*  (W2Pt) formal←c0135 ) = bestPoint←v8020;
   (* (( (ptr) formal←c0135)+2) ) = bestDist←v8048;
   (*  (W2Pt) (( (ptr) formal←c0135)+3) ) = bestNormal←v8076;
   (* (( (ptr) formal←c0135)+5) ) = hitData←v8104;
   (* (( (ptr) formal←c0135)+6) ) = success←v8132;
   return;
   }

static void ClosestJointToHitData←P240(formal←c0150, sliceD←v8208, mapPoint←v8236, testPoint←v8264, hitData←v8292)
   word formal←c0150;
   word sliceD←v8208;
   W2 mapPoint←v8236;
   W2 testPoint←v8264;
   word hitData←v8292;
   {
   register ptr gf←c87908 =  (ptr) &globalframe;
   word jointD←v8348;
   W2 point←v8376;
   W2 normal←v8404;
   word outlineHitData←v21876;
   word child←v21904;
   word childHitData←v21932;
   word childD←v21960;
   word newChildD←v21988 = 0;
   /* ClosestJointToHitData: */ 
SOURCE(7272, 611)
SOURCE(7272, 611)
   jointD←v8348 = 0;
SOURCE(7272, 611)
   normal←v8404.f0 = (*  (ptr) &fc48 );
   normal←v8404.f1 = (*  (ptr) &fc49 );
SOURCE(7456, 48)
   outlineHitData←v21876 = XR←Narrow(hitData←v8292, (* (( (ptr) gf←c87908)+6) ));
SOURCE(7506, 35)
   child←v21904 = (*  (ptr) outlineHitData←v21876 );
SOURCE(7543, 51)
   childHitData←v21932 = (* (( (ptr) outlineHitData←v21876)+1) );
SOURCE(7596, 79)
   {
      word pd56;
      pd56 = (* (( (ptr) (* (( (ptr) gf←c87908)+207)/* var←c82180 */  ))+85) );
      childD←v21960 = (word) ( *( (fPt) ((*  (ptr) pd56 ))))(sliceD←v8208, child←v21904, pd56);
      };
SOURCE(7705, 104)
   {
      W5 var←c82436;
      {
         word pd57;
         pd57 = (* (( (ptr) (* (( (ptr) gf←c87908)+209)/* var←c82276 */  ))+45) );
         (void) ( *( (fPt) ((*  (ptr) pd57 ))))((word) &var←c82436, childD←v21960, mapPoint←v8236, testPoint←v8264, childHitData←v21932, pd57)
         ;
         };
      normal←v8404 = (*  (W2Pt) (( (ptr) &var←c82436)+3) );
      point←v8376 = (*  (W2Pt) (( (ptr) &var←c82436)+1) );
      newChildD←v21988 = var←c82436.f0;
      };
SOURCE(7811, 72)
   {
      word pd58;
      pd58 = (* (( (ptr) (* (( (ptr) gf←c87908)+207)/* var←c82180 */  ))+82) );
      jointD←v8348 = (word) ( *( (fPt) ((*  (ptr) pd58 ))))((*  (ptr) sliceD←v8208 ), newChildD←v21988, pd58);
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0150 ) = jointD←v8348;
   (*  (W2Pt) (( (ptr) formal←c0150)+1) ) = point←v8376;
   (*  (W2Pt) (( (ptr) formal←c0150)+3) ) = normal←v8404;
   return;
   }

static void ClosestSegment←P300(formal←c0174, sliceD←v8464, testPoint←v8492, tolerance←v8520)
   word formal←c0174;
   word sliceD←v8464;
   W2 testPoint←v8492;
   word tolerance←v8520;
   {
   register ptr gf←c87940 =  (ptr) &globalframe;
   W2 bestPoint←v8564;
   word bestDist←v8592;
   W2 bestNormal←v8620;
   word hitData←v8648;
   word success←v8676;
   /* ClosestSegment: */ 
SOURCE(7889, 1208)
SOURCE(7889, 1208)
   bestPoint←v8564.f0 = (*  (ptr) &fc48 );
   bestPoint←v8564.f1 = (*  (ptr) &fc48 );
SOURCE(7889, 1208)
   bestDist←v8592 = (*  (ptr) &fc48 );
SOURCE(7889, 1208)
   bestNormal←v8620.f0 = (*  (ptr) &fc48 );
   bestNormal←v8620.f1 = (*  (ptr) &fc49 );
SOURCE(7889, 1208)
   hitData←v8648 = 0;
SOURCE(7889, 1208)
   success←v8676 = 0;
SOURCE(8114, 983)
   if ((sliceD←v8464 == 0)) {
SOURCE(8133, 12)
      goto lab←L100006;
      }
   else {
SOURCE(8145, 957)
      {
         word parts←v22044;
         word outlineHitData←v22072 = 0;
         W2 thisPoint←v22100;
         word thisDist←v22128;
         W2 thisNormal←v22156;
         word thisHitData←v22184 = 0;
         word bestHitData←v22212 = 0;
         word thisSuccess←v22240 = 0;
         word bestChild←v22268 = 0;
         word var←c82468;
SOURCE(8147, 42)
         parts←v22044 = XR←Narrow((* (( (ptr) sliceD←v8464)+1) ), (* (( (ptr) gf←c87940)+5) ));
SOURCE(8358, 107)
         {
            word pd60;
            {
               word pd59;
               pd59 = (* (( (ptr) (* (( (ptr) gf←c87940)+209)/* var←c82276 */  ))+9) );
               var←c82468 = (word) ( *( (fPt) ((*  (ptr) pd59 ))))((*  (ptr) sliceD←v8464 ), 0, pd59);
               };
            pd60 = (* (( (ptr) (* (( (ptr) gf←c87940)+210)/* var←c82308 */  ))+22) );
            if ((0 == (word) ( *( (fPt) ((*  (ptr) pd60 ))))(testPoint←v8492, var←c82468, tolerance←v8520, pd60))) {
SOURCE(8459, 6)
               goto lab←L100006;
               };
            };
SOURCE(8518, 33)
         bestDist←v8592 = (*  (ptr) &fc52 );
SOURCE(8553, 435)
         {
            register word list←v22324;
            list←v22324 = (*  (ptr) parts←v22044 );
            lab←L100010: ;
            if ((list←v22324 != 0)) {
               }
            else {
               goto lab←L100007;
               };
SOURCE(8638, 23)
            if (((*  (ptr) list←v22324 ) == 0)) {
SOURCE(8661, 4)
               goto lab←L100009;
               };
SOURCE(8667, 133)
            {
               W7 var←c82500;
               {
                  word pd61;
                  pd61 = (* (( (ptr) (*  (ptr) (*  (ptr) (*  (ptr) list←v22324 ) ) ))+41) );
                  (void) ( *( (fPt) ((*  (ptr) pd61 ))))((word) &var←c82500, (*  (ptr) list←v22324 ), testPoint←v8492, tolerance←v8520, pd61)
                  ;
                  };
               thisSuccess←v22240 = var←c82500.f6;
               thisHitData←v22184 = var←c82500.f5;
               thisNormal←v22156 = (*  (W2Pt) (( (ptr) &var←c82500)+3) );
               thisDist←v22128 = var←c82500.f2;
               thisPoint←v22100 = (*  (W2Pt) &var←c82500 );
               };
SOURCE(8802, 186)
            {
               word x62;
               word x63;
               if ( ( (0 != thisSuccess←v22240) ? ((
                  x62 = thisDist←v22128,  *(float*)&x62
                  ) < (
                  x63 = bestDist←v8592,  *(float*)&x63
                  )) : 0 ) ) {
SOURCE(8848, 28)
                  bestChild←v22268 = (*  (ptr) (*  (ptr) list←v22324 ) );
SOURCE(8878, 21)
                  bestPoint←v8564 = thisPoint←v22100;
SOURCE(8901, 19)
                  bestDist←v8592 = thisDist←v22128;
SOURCE(8922, 23)
                  bestNormal←v8620 = thisNormal←v22156;
SOURCE(8947, 25)
                  bestHitData←v22212 = thisHitData←v22184;
SOURCE(8974, 14)
                  success←v8676 = 1;
                  };
               };
            lab←L100009: ;
            list←v22324 = (* (( (ptr) list←v22324)+1) );
            goto lab←L100010;
            lab←L100007: ;
            };
SOURCE(9002, 95)
         if ((0 != success←v8676)) {
SOURCE(9020, 77)
            {
               word var←c82532;
               {
                  word var←c82564;
                  var←c82564 = XR←NewObject(8, (* (( (ptr) gf←c87940)+6) ));
                  (*  (ptr) var←c82564 ) = bestChild←v22268;
                  (* (( (ptr) var←c82564)+1) ) = bestHitData←v22212;
                  var←c82532 = var←c82564;
                  };
               outlineHitData←v22072 = var←c82532;
               hitData←v8648 = var←c82532;
               };
            };
         };
      };
   /* removed tail goto */ 
   lab←L100006: ;
   (*  (W2Pt) formal←c0174 ) = bestPoint←v8564;
   (* (( (ptr) formal←c0174)+2) ) = bestDist←v8592;
   (*  (W2Pt) (( (ptr) formal←c0174)+3) ) = bestNormal←v8620;
   (* (( (ptr) formal←c0174)+5) ) = hitData←v8648;
   (* (( (ptr) formal←c0174)+6) ) = success←v8676;
   return;
   }

static void ClusterFilledPathsUnderPoint←P360(formal←c0197, slice←v8748, point←v8776, tolerance←v8804)
   word formal←c0197;
   word slice←v8748;
   W2 point←v8776;
   word tolerance←v8804;
   {
   register ptr gf←c87972 =  (ptr) &globalframe;
   word hitData←v8848;
   word moreHitDatas←v8876;
   word outlineData←v22452;
   word clusterData←v22480;
   word thisChild←v22508 = 0;
   word thisHitData←v22536 = 0;
   word childHitDatas←v22564 = 0;
   word thisSuccess←v22592 = 0;
   word success←v22620 = 0;
   /* ClusterFilledPathsUnderPoint: */ 
SOURCE(9109, 1150)
SOURCE(9109, 1150)
   hitData←v8848 = 0;
SOURCE(9109, 1150)
   moreHitDatas←v8876 = 0;
SOURCE(9264, 45)
   outlineData←v22452 = XR←Narrow((* (( (ptr) slice←v8748)+1) ), (* (( (ptr) gf←c87972)+7) ));
SOURCE(9311, 59)
   clusterData←v22480 = XR←Narrow((* (( (ptr) outlineData←v22452)+8) ), (* (( (ptr) gf←c87972)+8) ));
SOURCE(9495, 764)
   {
      register word childList←v22772;
      childList←v22772 = (* (( (ptr) outlineData←v22452)+4) );
      lab←L100015: ;
      if ((childList←v22772 != 0)) {
         }
      else {
         goto lab←L100012;
         };
SOURCE(9586, 27)
      thisChild←v22508 = (*  (ptr) childList←v22772 );
SOURCE(9615, 92)
      {
         W2 var←c82596;
         {
            word pd64;
            pd64 = (* (( (ptr) (* (( (ptr) gf←c87972)+209)/* var←c82276 */  ))+48) );
            (void) ( *( (fPt) ((*  (ptr) pd64 ))))((word) &var←c82596, thisChild←v22508, point←v8776, tolerance←v8804, pd64);
            };
         childHitDatas←v22564 = var←c82596.f1;
         thisHitData←v22536 = var←c82596.f0;
         };
SOURCE(9709, 550)
      if ((thisHitData←v22536 != 0)) {
SOURCE(9737, 297)
         {
            register word list←v22900;
            {
               word pd65;
               pd65 = (* (( (ptr) (* (( (ptr) gf←c87972)+211)/* var←c82628 */  ))+16) );
               list←v22900 = (word) ( *( (fPt) ((*  (ptr) pd65 ))))(childHitDatas←v22564, pd65);
               };
            lab←L100019: ;
            if ((list←v22900 != 0)) {
               }
            else {
               goto lab←L100016;
               };
SOURCE(9825, 209)
            if ((0 == success←v22620)) {
SOURCE(9847, 14)
               success←v22620 = 1;
SOURCE(9863, 58)
               {
                  word var←c82660;
                  var←c82660 = XR←NewObject(8, (* (( (ptr) gf←c87972)+6) ));
                  (*  (ptr) var←c82660 ) = thisChild←v22508;
                  (* (( (ptr) var←c82660)+1) ) = (*  (ptr) list←v22900 );
                  hitData←v8848 = var←c82660;
                  };
               }
            else {
SOURCE(9932, 42)
               {
                  word var←c82692;
                  var←c82692 = XR←NewObject(8, (* (( (ptr) gf←c87972)+9) ));
                  (*  (ptr) var←c82692 ) = hitData←v8848;
                  (* (( (ptr) var←c82692)+1) ) = moreHitDatas←v8876;
                  moreHitDatas←v8876 = var←c82692;
                  };
SOURCE(9976, 58)
               {
                  word var←c82724;
                  var←c82724 = XR←NewObject(8, (* (( (ptr) gf←c87972)+6) ));
                  (*  (ptr) var←c82724 ) = thisChild←v22508;
                  (* (( (ptr) var←c82724)+1) ) = (*  (ptr) list←v22900 );
                  hitData←v8848 = var←c82724;
                  };
               };
            list←v22900 = (* (( (ptr) list←v22900)+1) );
            goto lab←L100019;
            lab←L100016: ;
            };
SOURCE(10048, 211)
         if ((0 == success←v22620)) {
SOURCE(10070, 14)
            success←v22620 = 1;
SOURCE(10086, 59)
            {
               word var←c82756;
               var←c82756 = XR←NewObject(8, (* (( (ptr) gf←c87972)+6) ));
               (*  (ptr) var←c82756 ) = thisChild←v22508;
               (* (( (ptr) var←c82756)+1) ) = thisHitData←v22536;
               hitData←v8848 = var←c82756;
               };
            }
         else {
SOURCE(10156, 42)
            {
               word var←c82788;
               var←c82788 = XR←NewObject(8, (* (( (ptr) gf←c87972)+9) ));
               (*  (ptr) var←c82788 ) = hitData←v8848;
               (* (( (ptr) var←c82788)+1) ) = moreHitDatas←v8876;
               moreHitDatas←v8876 = var←c82788;
               };
SOURCE(10200, 59)
            {
               word var←c82820;
               var←c82820 = XR←NewObject(8, (* (( (ptr) gf←c87972)+6) ));
               (*  (ptr) var←c82820 ) = thisChild←v22508;
               (* (( (ptr) var←c82820)+1) ) = thisHitData←v22536;
               hitData←v8848 = var←c82820;
               };
            };
         };
      childList←v22772 = (* (( (ptr) childList←v22772)+1) );
      goto lab←L100015;
      lab←L100012: ;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0197 ) = hitData←v8848;
   (* (( (ptr) formal←c0197)+1) ) = moreHitDatas←v8876;
   return;
   }

static void OutlineFilledPathsUnderPoint←P420(formal←c0220, slice←v9044, point←v9072, tolerance←v9100)
   word formal←c0220;
   word slice←v9044;
   W2 point←v9072;
   word tolerance←v9100;
   {
   register ptr gf←c88004 =  (ptr) &globalframe;
   word hitData←v9144;
   word moreHitDatas←v9172;
   word outlineData←v23040;
   word thisHole←v23068 = 0;
   word thisHitData←v23096 = 0;
   word holeHitData←v23124 = 0;
   word childHitDatas←v23152 = 0;
   word thisSuccess←v23180 = 0;
   word success←v23208 = 0;
   word fence←v23236;
   word pointInSomeHole←v23264 = 0;
   /* OutlineFilledPathsUnderPoint: */ 
SOURCE(10280, 1179)
SOURCE(10280, 1179)
   hitData←v9144 = 0;
SOURCE(10280, 1179)
   moreHitDatas←v9172 = 0;
SOURCE(10435, 45)
   outlineData←v23040 = XR←Narrow((* (( (ptr) slice←v9044)+1) ), (* (( (ptr) gf←c88004)+7) ));
SOURCE(10616, 41)
   fence←v23236 = (*  (ptr) (* (( (ptr) outlineData←v23040)+4) ) );
   {
      word var←c82852;
SOURCE(10691, 42)
      if (((* (( (ptr) outlineData←v23040)+1) ) == 0)) {
SOURCE(10727, 6)
         goto lab←L100020;
         };
SOURCE(10735, 96)
      {
         word pd67;
         {
            word pd66;
            pd66 = (* (( (ptr) (* (( (ptr) gf←c88004)+209)/* var←c82276 */  ))+9) );
            var←c82852 = (word) ( *( (fPt) ((*  (ptr) pd66 ))))(slice←v9044, 0, pd66);
            };
         pd67 = (* (( (ptr) (* (( (ptr) gf←c88004)+210)/* var←c82308 */  ))+22) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd67 ))))(point←v9072, var←c82852, tolerance←v9100, pd67))) {
SOURCE(10825, 6)
            goto lab←L100020;
            };
         };
SOURCE(10834, 267)
      {
         register word childList←v23416;
         childList←v23416 = (* (( (ptr) (* (( (ptr) outlineData←v23040)+4) ))+1) );
         lab←L100024: ;
         if ((childList←v23416 != 0)) {
            }
         else {
            goto lab←L100021;
            };
SOURCE(10930, 26)
         thisHole←v23068 = (*  (ptr) childList←v23416 );
SOURCE(10958, 91)
         {
            W2 var←c82884;
            {
               word pd68;
               pd68 = (* (( (ptr) (* (( (ptr) gf←c88004)+209)/* var←c82276 */  ))+48) );
               (void) ( *( (fPt) ((*  (ptr) pd68 ))))((word) &var←c82884, thisHole←v23068, point←v9072, tolerance←v9100, pd68);
               };
            childHitDatas←v23152 = var←c82884.f1;
            holeHitData←v23124 = var←c82884.f0;
            };
SOURCE(11051, 50)
         if ((holeHitData←v23124 != 0)) {
SOURCE(11079, 22)
            pointInSomeHole←v23264 = 1;
SOURCE(11103, 4)
            goto lab←L100022;
            };
         childList←v23416 = (* (( (ptr) childList←v23416)+1) );
         goto lab←L100024;
         lab←L100021: ;
         lab←L100022: ;
         };
SOURCE(11121, 75)
      {
         W2 var←c82916;
         {
            word pd69;
            pd69 = (* (( (ptr) (* (( (ptr) gf←c88004)+209)/* var←c82276 */  ))+48) );
            (void) ( *( (fPt) ((*  (ptr) pd69 ))))((word) &var←c82916, fence←v23236, point←v9072, tolerance←v9100, pd69);
            };
         thisHitData←v23096 = var←c82916.f0;
         };
SOURCE(11198, 261)
      if ((thisHitData←v23096 != 0)) {
SOURCE(11245, 101)
         if ((0 != pointInSomeHole←v23264)) {
SOURCE(11269, 22)
            hitData←v9144 = 0;
            moreHitDatas←v9172 = 0;
            goto lab←L100020;
            }
         else {
SOURCE(11291, 55)
            {
               word var←c82948;
               var←c82948 = XR←NewObject(8, (* (( (ptr) gf←c88004)+6) ));
               (*  (ptr) var←c82948 ) = fence←v23236;
               (* (( (ptr) var←c82948)+1) ) = thisHitData←v23096;
               hitData←v9144 = var←c82948;
               };
            };
         }
      else {
SOURCE(11355, 104)
         if ((0 != pointInSomeHole←v23264)) {
SOURCE(11379, 64)
            {
               word var←c82980;
               var←c82980 = XR←NewObject(8, (* (( (ptr) gf←c88004)+6) ));
               (*  (ptr) var←c82980 ) = thisHole←v23068;
               (* (( (ptr) var←c82980)+1) ) = holeHitData←v23124;
               hitData←v9144 = var←c82980;
               };
            }
         else {
SOURCE(11443, 16)
            hitData←v9144 = 0;
            moreHitDatas←v9172 = 0;
            goto lab←L100020;
            };
         };
      };
   /* removed tail goto */ 
   lab←L100020: ;
   (*  (ptr) formal←c0220 ) = hitData←v9144;
   (* (( (ptr) formal←c0220)+1) ) = moreHitDatas←v9172;
   return;
   }

static void LineIntersection←P480(formal←c0238, sliceD←v9340, line←v9368)
   word formal←c0238;
   word sliceD←v9340;
   word line←v9368;
   {
   register ptr gf←c88036 =  (ptr) &globalframe;
   word points←v9412;
   word pointCount←v9440;
   word segGen←v23544 = 0;
   word outlineParts←v23572;
   word thesePoints←v23600 = 0;
   word thisCount←v23628;
   /* LineIntersection: */ 
SOURCE(11465, 845)
SOURCE(11465, 845)
   points←v9412 = 0;
SOURCE(11465, 845)
   pointCount←v9440 = 0;
SOURCE(11629, 49)
   outlineParts←v23572 = XR←Narrow((* (( (ptr) sliceD←v9340)+1) ), (* (( (ptr) gf←c88036)+5) ));
SOURCE(11724, 586)
   {
      register word descriptors←v23756;
      descriptors←v23756 = (*  (ptr) outlineParts←v23572 );
      lab←L100029: ;
      if ((descriptors←v23756 != 0)) {
         }
      else {
         goto lab←L100026;
         };
      {
         word childD←v23884;
SOURCE(11837, 43)
         childD←v23884 = (*  (ptr) descriptors←v23756 );
SOURCE(11882, 21)
         if ((childD←v23884 == 0)) {
SOURCE(11903, 4)
            goto lab←L100028;
            };
SOURCE(11909, 48)
         {
            word pd70;
            pd70 = (* (( (ptr) (* (( (ptr) gf←c88036)+209)/* var←c82276 */  ))+39) );
            segGen←v23544 = (word) ( *( (fPt) ((*  (ptr) pd70 ))))(childD←v23884, pd70);
            };
SOURCE(11959, 351)
         {
            register word seg←v23928;
            W2 var←c0232;
            W2 var←c0237;
            {
               word pd71;
               pd71 = (* (( (ptr) (* (( (ptr) gf←c88036)+209)/* var←c82276 */  ))+43) );
               (void) ( *( (fPt) ((*  (ptr) pd71 ))))((word) &var←c0232, (*  (ptr) childD←v23884 ), segGen←v23544, pd71);
               };
            seg←v23928 = var←c0232.f0;
            lab←L100033: ;
            if ((seg←v23928 != 0)) {
               }
            else {
               goto lab←L100030;
               };
SOURCE(12096, 64)
            {
               W2 var←c83012;
               {
                  word pd72;
                  pd72 = (* (( (ptr) (*  (ptr) seg←v23928 ))+21) );
                  (void) ( *( (fPt) ((*  (ptr) pd72 ))))((word) &var←c83012, seg←v23928, line←v9368, pd72);
                  };
               thisCount←v23628 = var←c83012.f1;
               thesePoints←v23600 = var←c83012.f0;
               };
SOURCE(12162, 102)
            {
               register word list←v23972;
               list←v23972 = thesePoints←v23600;
               lab←L100037: ;
               if ((list←v23972 != 0)) {
                  }
               else {
                  goto lab←L100034;
                  };
SOURCE(12231, 33)
               {
                  word var←c83044;
                  var←c83044 = XR←NewObject(12, (* (( (ptr) gf←c88036)+10) ));
                  (*  (W2Pt) var←c83044 ) = (*  (W2Pt) list←v23972 );
                  (* (( (ptr) var←c83044)+2) ) = points←v9412;
                  points←v9412 = var←c83044;
                  };
               list←v23972 = (* (( (ptr) list←v23972)+2) );
               goto lab←L100037;
               lab←L100034: ;
               };
SOURCE(12275, 35)
            pointCount←v9440 = SGNCK((pointCount←v9440 + thisCount←v23628));
            {
               word pd73;
               pd73 = (* (( (ptr) (* (( (ptr) gf←c88036)+209)/* var←c82276 */  ))+43) );
               (void) ( *( (fPt) ((*  (ptr) pd73 ))))((word) &var←c0237, (*  (ptr) childD←v23884 ), segGen←v23544, pd73);
               };
            seg←v23928 = var←c0237.f0;
            goto lab←L100033;
            lab←L100030: ;
            };
         };
      lab←L100028: ;
      descriptors←v23756 = (* (( (ptr) descriptors←v23756)+1) );
      goto lab←L100029;
      lab←L100026: ;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0238 ) = points←v9412;
   (* (( (ptr) formal←c0238)+1) ) = pointCount←v9440;
   return;
   }

static void CircleIntersection←P540(formal←c0256, sliceD←v9584, circle←v9612)
   word formal←c0256;
   word sliceD←v9584;
   word circle←v9612;
   {
   register ptr gf←c88068 =  (ptr) &globalframe;
   word points←v9656;
   word pointCount←v9684;
   word segGen←v24100 = 0;
   word outlineParts←v24128;
   word thesePoints←v24156 = 0;
   word thisCount←v24184;
   /* CircleIntersection: */ 
SOURCE(12334, 855)
SOURCE(12334, 855)
   points←v9656 = 0;
SOURCE(12334, 855)
   pointCount←v9684 = 0;
SOURCE(12504, 49)
   outlineParts←v24128 = XR←Narrow((* (( (ptr) sliceD←v9584)+1) ), (* (( (ptr) gf←c88068)+5) ));
SOURCE(12599, 590)
   {
      register word descriptors←v24312;
      descriptors←v24312 = (*  (ptr) outlineParts←v24128 );
      lab←L100042: ;
      if ((descriptors←v24312 != 0)) {
         }
      else {
         goto lab←L100039;
         };
      {
         word childD←v24440;
SOURCE(12712, 43)
         childD←v24440 = (*  (ptr) descriptors←v24312 );
SOURCE(12757, 21)
         if ((childD←v24440 == 0)) {
SOURCE(12778, 4)
            goto lab←L100041;
            };
SOURCE(12784, 48)
         {
            word pd74;
            pd74 = (* (( (ptr) (* (( (ptr) gf←c88068)+209)/* var←c82276 */  ))+39) );
            segGen←v24100 = (word) ( *( (fPt) ((*  (ptr) pd74 ))))(childD←v24440, pd74);
            };
SOURCE(12834, 355)
         {
            register word seg←v24484;
            W2 var←c0250;
            W2 var←c0255;
            {
               word pd75;
               pd75 = (* (( (ptr) (* (( (ptr) gf←c88068)+209)/* var←c82276 */  ))+43) );
               (void) ( *( (fPt) ((*  (ptr) pd75 ))))((word) &var←c0250, (*  (ptr) childD←v24440 ), segGen←v24100, pd75);
               };
            seg←v24484 = var←c0250.f0;
            lab←L100046: ;
            if ((seg←v24484 != 0)) {
               }
            else {
               goto lab←L100043;
               };
SOURCE(12971, 68)
            {
               W2 var←c83076;
               {
                  word pd76;
                  pd76 = (* (( (ptr) (*  (ptr) seg←v24484 ))+22) );
                  (void) ( *( (fPt) ((*  (ptr) pd76 ))))((word) &var←c83076, seg←v24484, circle←v9612, pd76);
                  };
               thisCount←v24184 = var←c83076.f1;
               thesePoints←v24156 = var←c83076.f0;
               };
SOURCE(13041, 102)
            {
               register word list←v24528;
               list←v24528 = thesePoints←v24156;
               lab←L100050: ;
               if ((list←v24528 != 0)) {
                  }
               else {
                  goto lab←L100047;
                  };
SOURCE(13110, 33)
               {
                  word var←c83108;
                  var←c83108 = XR←NewObject(12, (* (( (ptr) gf←c88068)+10) ));
                  (*  (W2Pt) var←c83108 ) = (*  (W2Pt) list←v24528 );
                  (* (( (ptr) var←c83108)+2) ) = points←v9656;
                  points←v9656 = var←c83108;
                  };
               list←v24528 = (* (( (ptr) list←v24528)+2) );
               goto lab←L100050;
               lab←L100047: ;
               };
SOURCE(13154, 35)
            pointCount←v9684 = SGNCK((pointCount←v9684 + thisCount←v24184));
            {
               word pd77;
               pd77 = (* (( (ptr) (* (( (ptr) gf←c88068)+209)/* var←c82276 */  ))+43) );
               (void) ( *( (fPt) ((*  (ptr) pd77 ))))((word) &var←c0255, (*  (ptr) childD←v24440 ), segGen←v24100, pd77);
               };
            seg←v24484 = var←c0255.f0;
            goto lab←L100046;
            lab←L100043: ;
            };
         };
      lab←L100041: ;
      descriptors←v24312 = (* (( (ptr) descriptors←v24312)+1) );
      goto lab←L100042;
      lab←L100039: ;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0256 ) = points←v9656;
   (* (( (ptr) formal←c0256)+1) ) = pointCount←v9684;
   return;
   }

static word HitDataAsSimpleCurve←P600(slice←v9828, hitData←v9856)
   word slice←v9828;
   word hitData←v9856;
   {
   register ptr gf←c88100 =  (ptr) &globalframe;
   word simpleCurve←v9912;
   word outlineHitData←v24656;
   /* HitDataAsSimpleCurve: */ 
SOURCE(13213, 248)
SOURCE(13213, 248)
   simpleCurve←v9912 = 0;
SOURCE(13315, 48)
   outlineHitData←v24656 = XR←Narrow(hitData←v9856, (* (( (ptr) gf←c88100)+6) ));
SOURCE(13365, 96)
   {
      word pd78;
      pd78 = (* (( (ptr) (* (( (ptr) gf←c88100)+209)/* var←c82276 */  ))+51) );
      simpleCurve←v9912 = (word) ( *( (fPt) ((*  (ptr) pd78 ))))((*  (ptr) outlineHitData←v24656 ), (* (( (ptr) outlineHitData←v24656)+1)
          ), pd78);
      };
SOURCE(13213, 248)
   return(simpleCurve←v9912);
   }

static void PathOfHitData←P660(formal←c0266, slice←v9984, hitData←v10012)
   word formal←c0266;
   word slice←v9984;
   word hitData←v10012;
   {
   register ptr gf←c88132 =  (ptr) &globalframe;
   word path←v10068;
   word pathHitData←v10096;
   /* PathOfHitData: */ 
SOURCE(13467, 306)
SOURCE(13467, 306)
   path←v10068 = 0;
SOURCE(13467, 306)
   pathHitData←v10096 = 0;
SOURCE(13575, 12)
   path←v10068 = slice←v9984;
SOURCE(13589, 21)
   pathHitData←v10096 = hitData←v10012;
SOURCE(13612, 161)
   lab←L100054: ;
   {
      word pd79;
      pd79 = (* (( (ptr) (* (( (ptr) gf←c88132)+207)/* var←c82180 */  ))+62) );
      if ((word) ( *( (fPt) ((*  (ptr) pd79 ))))(path←v10068, pd79)) {
         }
      else {
         goto lab←L100052;
         };
      };
   {
      word outlineHitData←v24700;
SOURCE(13649, 52)
      outlineHitData←v24700 = XR←Narrow(pathHitData←v10096, (* (( (ptr) gf←c88132)+6) ));
SOURCE(13703, 27)
      path←v10068 = (*  (ptr) outlineHitData←v24700 );
SOURCE(13732, 41)
      pathHitData←v10096 = (* (( (ptr) outlineHitData←v24700)+1) );
      };
   goto lab←L100054;
   lab←L100052: ;
   /* removed tail goto */ 
   (*  (ptr) formal←c0266 ) = path←v10068;
   (* (( (ptr) formal←c0266)+1) ) = pathHitData←v10096;
   return;
   }

static void SetDefaults←P720(slice←v10168, parts←v10196, formal←c01098, history←v10252)
   word slice←v10168;
   word parts←v10196;
   word formal←c01098;
   word history←v10252;
   {
   W7 var←c88164;
   /* declaration of defaults←v10224 skipped */ 
   register ptr gf←c88196 =  (ptr) &globalframe;
   /* declaration of var←c83140 skipped */ 
   word outlineParts←v24772;
   word outlineData←v24800;
   var←c88164.f4/* defaults←v10224 */  = formal←c01098;
   /* SetDefaults: */ 
SOURCE(13789, 1218)
   {
      word tmpAddr80;
      tmpAddr80 = (word) (( (ptr) &var←c88164)+5)/* var←c83140 */ ;
      (*  (ptr) tmpAddr80 ) = ( ((word)  (fPt) ChildSetDefaults←P5988) );
      (* (( (ptr) tmpAddr80) + 1) ) = 1;
      };
SOURCE(14509, 42)
   outlineParts←v24772 = XR←Narrow(parts←v10196, (* (( (ptr) gf←c88196)+5) ));
SOURCE(14553, 45)
   outlineData←v24800 = XR←Narrow((* (( (ptr) slice←v10168)+1) ), (* (( (ptr) gf←c88196)+7) ));
SOURCE(14600, 42)
   (* (( (ptr) outlineData←v24800)+1) ) = (* (( (ptr) var←c88164.f4/* defaults←v10224 */ )+8) );
SOURCE(14644, 363)
   if ((parts←v10196 == 0)) {
SOURCE(14664, 131)
      {
         register word childList←v24932;
         childList←v24932 = (* (( (ptr) outlineData←v24800)+4) );
         lab←L100058: ;
         if ((childList←v24932 != 0)) {
            }
         else {
            goto lab←L100055;
            };
SOURCE(14757, 38)
         (void) ChildSetDefaults←P5988((*  (ptr) childList←v24932 ), 0, (word) (( (bPt) &var←c88164)+20)/* var←c83140 */ );
         childList←v24932 = (* (( (ptr) childList←v24932)+1) );
         goto lab←L100058;
         lab←L100055: ;
         };
      }
   else {
SOURCE(14810, 197)
      {
         register word partsList←v25060;
         partsList←v25060 = (*  (ptr) outlineParts←v24772 );
         lab←L100062: ;
         if ((partsList←v25060 != 0)) {
            }
         else {
            goto lab←L100059;
            };
SOURCE(14917, 90)
         if (((*  (ptr) partsList←v25060 ) != 0)) {
SOURCE(14945, 62)
            (void) ChildSetDefaults←P5988((*  (ptr) (*  (ptr) partsList←v25060 ) ), (* (( (ptr) (*  (ptr) partsList←v25060 ))+1) ), (word) (
                  ( (bPt) &var←c88164)+20)/* var←c83140 */ );
            };
         partsList←v25060 = (* (( (ptr) partsList←v25060)+1) );
         goto lab←L100062;
         lab←L100059: ;
         };
      };
   }

static void ChildSetDefaults←P5988(child←v24876, parts←v24904, formal←c88260)
   word child←v24876;
   word parts←v24904;
   word formal←c88260;
   {
   register ptr gf←c88228 =  (ptr) &globalframe;
   formal←c88260 = (formal←c88260 - 20);
   /* ChildSetDefaults: */ 
SOURCE(13898, 573)
SOURCE(13959, 71)
   {
      word var←c83172;
      word pd81;
      pd81 = (* (( (ptr) (* (( (ptr) gf←c88228)+209)/* var←c82276 */  ))+53) );
      var←c83172 = (word) ( *( (fPt) ((*  (ptr) pd81 ))))(child←v24876, parts←v24904, (*  (ptr) (* (( (ptr) formal←c88260)+4) ) ), 0, pd81)
      ;
      };
SOURCE(14032, 62)
   {
      word pd82;
      pd82 = (* (( (ptr) (* (( (ptr) gf←c88228)+209)/* var←c82276 */  ))+55) );
      (void) ( *( (fPt) ((*  (ptr) pd82 ))))(child←v24876, parts←v24904, (* (( (ptr) (* (( (ptr) formal←c88260)+4) ))+2) ), 0, pd82)
      ;
      };
SOURCE(14096, 66)
   {
      word pd83;
      pd83 = (* (( (ptr) (* (( (ptr) gf←c88228)+209)/* var←c82276 */  ))+57) );
      (void) ( *( (fPt) ((*  (ptr) pd83 ))))(child←v24876, parts←v24904, (* (( (ptr) (* (( (ptr) formal←c88260)+4) ))+1) ), 0, pd83)
      ;
      };
SOURCE(14164, 131)
   {
      word var←c83204;
      {
         word pd84;
         pd84 = (* (( (ptr) (* (( (ptr) gf←c88228)+212)/* var←c83236 */  ))+37) );
         var←c83204 = (word) ( *( (fPt) ((*  (ptr) pd84 ))))((* ((( (ptr) (* (( (ptr) formal←c88260)+4) ))+4)) ), pd84);
         };
      {
         word pd85;
         pd85 = (* (( (ptr) (* (( (ptr) gf←c88228)+209)/* var←c82276 */  ))+65) );
         (void) ( *( (fPt) ((*  (ptr) pd85 ))))(child←v24876, parts←v24904, (* (( (ptr) (* (( (ptr) formal←c88260)+4) ))+3) ), var←c83204, (* (
               ( (ptr) (* (( (ptr) formal←c88260)+4) ))+5) ), (* (( (ptr) (* (( (ptr) formal←c88260)+4) ))+6) )
            , 0, pd85);
         };
      };
SOURCE(14297, 72)
   {
      word pd86;
      pd86 = (* (( (ptr) (* (( (ptr) gf←c88228)+209)/* var←c82276 */  ))+59) );
      (void) ( *( (fPt) ((*  (ptr) pd86 ))))(child←v24876, parts←v24904, (* (( (ptr) (* (( (ptr) formal←c88260)+4) ))+7) ), (* (
            ( (ptr) gf←c88228)+27) ), 0, pd86);
      };
SOURCE(14403, 68)
   {
      word pd87;
      pd87 = (* (( (ptr) (* (( (ptr) gf←c88228)+209)/* var←c82276 */  ))+61) );
      (void) ( *( (fPt) ((*  (ptr) pd87 ))))(child←v24876, parts←v24904, (* (( (ptr) (* (( (ptr) formal←c88260)+4) ))+8) ), (* (
            ( (ptr) gf←c88228)+27) ), 0, pd87);
      };
   }

static word SetStrokeWidth←P780(slice←v10312, parts←v10340, strokeWidth←v10368, history←v10396)
   word slice←v10312;
   word parts←v10340;
   word strokeWidth←v10368;
   word history←v10396;
   {
   register ptr gf←c88292 =  (ptr) &globalframe;
   word box←v10440;
   word outlineParts←v25188;
   word outlineData←v25216;
   /* SetStrokeWidth: */ 
SOURCE(15022, 703)
SOURCE(15022, 703)
   box←v10440 = 0;
SOURCE(15154, 42)
   outlineParts←v25188 = XR←Narrow(parts←v10340, (* (( (ptr) gf←c88292)+5) ));
SOURCE(15198, 45)
   outlineData←v25216 = XR←Narrow((* (( (ptr) slice←v10312)+1) ), (* (( (ptr) gf←c88292)+7) ));
SOURCE(15245, 399)
   if ((parts←v10340 == 0)) {
SOURCE(15265, 163)
      {
         register word childList←v25260;
         childList←v25260 = (* (( (ptr) outlineData←v25216)+4) );
         lab←L100066: ;
         if ((childList←v25260 != 0)) {
            }
         else {
            goto lab←L100063;
            };
SOURCE(15358, 70)
         {
            word var←c83268;
            word pd88;
            pd88 = (* (( (ptr) (* (( (ptr) gf←c88292)+209)/* var←c82276 */  ))+53) );
            var←c83268 = (word) ( *( (fPt) ((*  (ptr) pd88 ))))((*  (ptr) childList←v25260 ), 0, strokeWidth←v10368, 0, pd88);
            };
         childList←v25260 = (* (( (ptr) childList←v25260)+1) );
         goto lab←L100066;
         lab←L100063: ;
         };
      }
   else {
SOURCE(15443, 201)
      {
         register word list←v25388;
         list←v25388 = (*  (ptr) outlineParts←v25188 );
         lab←L100070: ;
         if ((list←v25388 != 0)) {
            }
         else {
            goto lab←L100067;
            };
SOURCE(15535, 109)
         if (((*  (ptr) list←v25388 ) != 0)) {
SOURCE(15560, 84)
            {
               word var←c83300;
               word pd89;
               pd89 = (* (( (ptr) (* (( (ptr) gf←c88292)+209)/* var←c82276 */  ))+53) );
               var←c83300 = (word) ( *( (fPt) ((*  (ptr) pd89 ))))((*  (ptr) (*  (ptr) list←v25388 ) ), (* (( (ptr) (*  (ptr) list←v25388 ))+1)
                   ), strokeWidth←v10368, 0, pd89);
               };
            };
         list←v25388 = (* (( (ptr) list←v25388)+1) );
         goto lab←L100070;
         lab←L100067: ;
         };
      };
SOURCE(15658, 67)
   {
      word var←c83332;
      {
         word pd90;
         pd90 = (* (( (ptr) (* (( (ptr) gf←c88292)+209)/* var←c82276 */  ))+7) );
         var←c83332 = (word) ( *( (fPt) ((*  (ptr) pd90 ))))(slice←v10312, parts←v10340, pd90);
         };
      {
         word pd91;
         pd91 = (* (( (ptr) (* (( (ptr) gf←c88292)+210)/* var←c82308 */  ))+7) );
         box←v10440 = (word) ( *( (fPt) ((*  (ptr) pd91 ))))(var←c83332, pd91);
         };
      };
SOURCE(15022, 703)
   return(box←v10440);
   }

static void GetStrokeWidth←P840(formal←c0298, slice←v10500, parts←v10528)
   word formal←c0298;
   word slice←v10500;
   word parts←v10528;
   {
   W8 var←c88324;
   /* declaration of strokeWidth←v10572 skipped */ 
   word isUnique←v10600;
   /* declaration of var←c83364 skipped */ 
   /* declaration of found←v25516 skipped */ 
   /* GetStrokeWidth: */ 
SOURCE(15731, 637)
   {
      word tmpAddr92;
      tmpAddr92 = (word) (( (ptr) &var←c88324)+5)/* var←c83364 */ ;
      (*  (ptr) tmpAddr92 ) = ( ((word)  (fPt) DoCheckStrokeWidth←P6240) );
      (* (( (ptr) tmpAddr92) + 1) ) = 1;
      };
SOURCE(15731, 637)
   var←c88324.f4/* strokeWidth←v10572 */  = (*  (ptr) &fc49 );
SOURCE(15731, 637)
   isUnique←v10600 = 1;
SOURCE(15855, 19)
   var←c88324.f7/* found←v25516 */  = 0;
SOURCE(16285, 83)
   if ((0 == (word) WalkIncludedParts←P3540(slice←v10500, parts←v10528, 0, (word) (( (bPt) &var←c88324)+20)/* var←c83364 */ , 0)
   )) {
      isUnique←v10600 =  (unsigned) (0 != var←c88324.f7/* found←v25516 */ );
      }
   else {
      isUnique←v10600 =  (unsigned) 0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0298 ) = var←c88324.f4/* strokeWidth←v10572 */ ;
   (* (( (ptr) formal←c0298)+1) ) = isUnique←v10600;
   return;
   }

static word DoCheckStrokeWidth←P6240(child←v25620, childParts←v25648, formal←c88388)
   word child←v25620;
   word childParts←v25648;
   word formal←c88388;
   {
   register ptr gf←c88356 =  (ptr) &globalframe;
   word done←v25692;
   word thisIsUnique←v25720 = 1;
   word thisWidth←v25748;
   formal←c88388 = (formal←c88388 - 20);
   /* DoCheckStrokeWidth: */ 
SOURCE(15876, 398)
SOURCE(15876, 398)
   done←v25692 = 0;
SOURCE(16017, 72)
   {
      W2 var←c83396;
      {
         word pd93;
         pd93 = (* (( (ptr) (* (( (ptr) gf←c88356)+209)/* var←c82276 */  ))+54) );
         (void) ( *( (fPt) ((*  (ptr) pd93 ))))((word) &var←c83396, child←v25620, childParts←v25648, pd93);
         };
      thisIsUnique←v25720 = var←c83396.f1;
      thisWidth←v25748 = var←c83396.f0;
      };
SOURCE(16091, 183)
   if ((0 == thisIsUnique←v25720)) {
SOURCE(16118, 23)
      (* (( (ptr) formal←c88388)+4) ) = thisWidth←v25748;
SOURCE(16143, 12)
      return(1);
      }
   else {
SOURCE(16166, 108)
      if ((0 != (* (( (ptr) formal←c88388)+7) ))) {
SOURCE(16182, 44)
         {
            word x94;
            word x95;
            if (((
               x94 = thisWidth←v25748,  *(float*)&x94
               ) != (
               x95 = (* (( (ptr) formal←c88388)+4) ),  *(float*)&x95
               ))) {
SOURCE(16214, 12)
               return(1);
               };
            };
         }
      else {
SOURCE(16237, 23)
         (* (( (ptr) formal←c88388)+4) ) = thisWidth←v25748;
SOURCE(16262, 12)
         (* (( (ptr) formal←c88388)+7) ) = 1;
         };
      };
SOURCE(15876, 398)
   return(done←v25692);
   }

static void SetStrokeEnd←P900(slice←v10660, parts←v10688, strokeEnd←v10716, history←v10744)
   word slice←v10660;
   word parts←v10688;
   word strokeEnd←v10716;
   word history←v10744;
   {
   register ptr gf←c88420 =  (ptr) &globalframe;
   word outlineParts←v25792;
   word outlineData←v25820;
   /* SetStrokeEnd: */ 
SOURCE(16374, 589)
SOURCE(16483, 42)
   outlineParts←v25792 = XR←Narrow(parts←v10688, (* (( (ptr) gf←c88420)+5) ));
SOURCE(16527, 45)
   outlineData←v25820 = XR←Narrow((* (( (ptr) slice←v10660)+1) ), (* (( (ptr) gf←c88420)+7) ));
SOURCE(16574, 389)
   if ((parts←v10688 == 0)) {
SOURCE(16594, 159)
      {
         register word childList←v25864;
         childList←v25864 = (* (( (ptr) outlineData←v25820)+4) );
         lab←L100075: ;
         if ((childList←v25864 != 0)) {
            }
         else {
            goto lab←L100072;
            };
SOURCE(16687, 66)
         {
            word pd96;
            pd96 = (* (( (ptr) (* (( (ptr) gf←c88420)+209)/* var←c82276 */  ))+55) );
            (void) ( *( (fPt) ((*  (ptr) pd96 ))))((*  (ptr) childList←v25864 ), 0, strokeEnd←v10716, 0, pd96);
            };
         childList←v25864 = (* (( (ptr) childList←v25864)+1) );
         goto lab←L100075;
         lab←L100072: ;
         };
      }
   else {
SOURCE(16768, 195)
      {
         register word list←v25992;
         list←v25992 = (*  (ptr) outlineParts←v25792 );
         lab←L100079: ;
         if ((list←v25992 != 0)) {
            }
         else {
            goto lab←L100076;
            };
SOURCE(16860, 103)
         if (((*  (ptr) list←v25992 ) != 0)) {
SOURCE(16883, 80)
            {
               word pd97;
               pd97 = (* (( (ptr) (* (( (ptr) gf←c88420)+209)/* var←c82276 */  ))+55) );
               (void) ( *( (fPt) ((*  (ptr) pd97 ))))((*  (ptr) (*  (ptr) list←v25992 ) ), (* (( (ptr) (*  (ptr) list←v25992 ))+1) ), strokeEnd←v10716, 0, pd97)
               ;
               };
            };
         list←v25992 = (* (( (ptr) list←v25992)+1) );
         goto lab←L100079;
         lab←L100076: ;
         };
      };
   }

static void GetStrokeEnd←P960(formal←c0320, slice←v10804, parts←v10832)
   word formal←c0320;
   word slice←v10804;
   word parts←v10832;
   {
   W8 var←c88452;
   /* declaration of strokeEnd←v10876 skipped */ 
   word isUnique←v10904;
   /* declaration of var←c83428 skipped */ 
   /* declaration of found←v26120 skipped */ 
   /* GetStrokeEnd: */ 
SOURCE(16978, 622)
   {
      word tmpAddr98;
      tmpAddr98 = (word) (( (ptr) &var←c88452)+5)/* var←c83428 */ ;
      (*  (ptr) tmpAddr98 ) = ( ((word)  (fPt) DoCheckStrokeEnd←P6396) );
      (* (( (ptr) tmpAddr98) + 1) ) = 1;
      };
SOURCE(16978, 622)
   var←c88452.f4/* strokeEnd←v10876 */  = 2;
SOURCE(16978, 622)
   isUnique←v10904 = 1;
SOURCE(17104, 19)
   var←c88452.f7/* found←v26120 */  = 0;
SOURCE(17519, 81)
   if ((0 == (word) WalkIncludedParts←P3540(slice←v10804, parts←v10832, 0, (word) (( (bPt) &var←c88452)+20)/* var←c83428 */ , 0)
   )) {
      isUnique←v10904 =  (unsigned) (0 != var←c88452.f7/* found←v26120 */ );
      }
   else {
      isUnique←v10904 =  (unsigned) 0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0320 ) = var←c88452.f4/* strokeEnd←v10876 */ ;
   (* (( (ptr) formal←c0320)+1) ) = isUnique←v10904;
   return;
   }

static word DoCheckStrokeEnd←P6396(child←v26224, childParts←v26252, formal←c88516)
   word child←v26224;
   word childParts←v26252;
   word formal←c88516;
   {
   register ptr gf←c88484 =  (ptr) &globalframe;
   word done←v26296;
   word thisIsUnique←v26324 = 1;
   word thisEnd←v26352;
   formal←c88516 = (formal←c88516 - 20);
   /* DoCheckStrokeEnd: */ 
SOURCE(17125, 383)
SOURCE(17125, 383)
   done←v26296 = 0;
SOURCE(17267, 68)
   {
      W2 var←c83460;
      {
         word pd99;
         pd99 = (* (( (ptr) (* (( (ptr) gf←c88484)+209)/* var←c82276 */  ))+56) );
         (void) ( *( (fPt) ((*  (ptr) pd99 ))))((word) &var←c83460, child←v26224, childParts←v26252, pd99);
         };
      thisIsUnique←v26324 = var←c83460.f1;
      thisEnd←v26352 = var←c83460.f0;
      };
SOURCE(17337, 171)
   if ((0 == thisIsUnique←v26324)) {
SOURCE(17364, 19)
      (* (( (ptr) formal←c88516)+4) ) = thisEnd←v26352;
SOURCE(17385, 12)
      return(1);
      }
   else {
SOURCE(17408, 100)
      if ((0 != (* (( (ptr) formal←c88516)+7) ))) {
SOURCE(17424, 40)
         if ((thisEnd←v26352 != (* (( (ptr) formal←c88516)+4) ))) {
SOURCE(17452, 12)
            return(1);
            };
         }
      else {
SOURCE(17475, 19)
         (* (( (ptr) formal←c88516)+4) ) = thisEnd←v26352;
SOURCE(17496, 12)
         (* (( (ptr) formal←c88516)+7) ) = 1;
         };
      };
SOURCE(17125, 383)
   return(done←v26296);
   }

static void SetStrokeJoint←P1020(slice←v10964, parts←v10992, strokeJoint←v11020, history←v11048)
   word slice←v10964;
   word parts←v10992;
   word strokeJoint←v11020;
   word history←v11048;
   {
   register ptr gf←c88548 =  (ptr) &globalframe;
   word outlineParts←v26396;
   word outlineData←v26424;
   /* SetStrokeJoint: */ 
SOURCE(17606, 603)
SOURCE(17721, 42)
   outlineParts←v26396 = XR←Narrow(parts←v10992, (* (( (ptr) gf←c88548)+5) ));
SOURCE(17765, 45)
   outlineData←v26424 = XR←Narrow((* (( (ptr) slice←v10964)+1) ), (* (( (ptr) gf←c88548)+7) ));
SOURCE(17812, 397)
   if ((parts←v10992 == 0)) {
SOURCE(17832, 163)
      {
         register word childList←v26468;
         childList←v26468 = (* (( (ptr) outlineData←v26424)+4) );
         lab←L100084: ;
         if ((childList←v26468 != 0)) {
            }
         else {
            goto lab←L100081;
            };
SOURCE(17925, 70)
         {
            word pd100;
            pd100 = (* (( (ptr) (* (( (ptr) gf←c88548)+209)/* var←c82276 */  ))+57) );
            (void) ( *( (fPt) ((*  (ptr) pd100 ))))((*  (ptr) childList←v26468 ), 0, strokeJoint←v11020, 0, pd100);
            };
         childList←v26468 = (* (( (ptr) childList←v26468)+1) );
         goto lab←L100084;
         lab←L100081: ;
         };
      }
   else {
SOURCE(18010, 199)
      {
         register word list←v26596;
         list←v26596 = (*  (ptr) outlineParts←v26396 );
         lab←L100088: ;
         if ((list←v26596 != 0)) {
            }
         else {
            goto lab←L100085;
            };
SOURCE(18102, 107)
         if (((*  (ptr) list←v26596 ) != 0)) {
SOURCE(18125, 84)
            {
               word pd101;
               pd101 = (* (( (ptr) (* (( (ptr) gf←c88548)+209)/* var←c82276 */  ))+57) );
               (void) ( *( (fPt) ((*  (ptr) pd101 ))))((*  (ptr) (*  (ptr) list←v26596 ) ), (* (( (ptr) (*  (ptr) list←v26596 ))+1) ), strokeJoint←v11020, 0, pd101)
               ;
               };
            };
         list←v26596 = (* (( (ptr) list←v26596)+1) );
         goto lab←L100088;
         lab←L100085: ;
         };
      };
   }

static void GetStrokeJoint←P1080(formal←c0342, slice←v11108, parts←v11136)
   word formal←c0342;
   word slice←v11108;
   word parts←v11136;
   {
   W8 var←c88580;
   /* declaration of strokeJoint←v11180 skipped */ 
   word isUnique←v11208;
   /* declaration of var←c83492 skipped */ 
   /* declaration of found←v26724 skipped */ 
   /* GetStrokeJoint: */ 
SOURCE(18224, 652)
   {
      word tmpAddr102;
      tmpAddr102 = (word) (( (ptr) &var←c88580)+5)/* var←c83492 */ ;
      (*  (ptr) tmpAddr102 ) = ( ((word)  (fPt) DoCheckStrokeJoint←P6552) );
      (* (( (ptr) tmpAddr102) + 1) ) = 1;
      };
SOURCE(18224, 652)
   var←c88580.f4/* strokeJoint←v11180 */  = 2;
SOURCE(18224, 652)
   isUnique←v11208 = 1;
SOURCE(18356, 19)
   var←c88580.f7/* found←v26724 */  = 0;
SOURCE(18793, 83)
   if ((0 == (word) WalkIncludedParts←P3540(slice←v11108, parts←v11136, 0, (word) (( (bPt) &var←c88580)+20)/* var←c83492 */ , 0)
   )) {
      isUnique←v11208 =  (unsigned) (0 != var←c88580.f7/* found←v26724 */ );
      }
   else {
      isUnique←v11208 =  (unsigned) 0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0342 ) = var←c88580.f4/* strokeJoint←v11180 */ ;
   (* (( (ptr) formal←c0342)+1) ) = isUnique←v11208;
   return;
   }

static word DoCheckStrokeJoint←P6552(child←v26828, childParts←v26856, formal←c88644)
   word child←v26828;
   word childParts←v26856;
   word formal←c88644;
   {
   register ptr gf←c88612 =  (ptr) &globalframe;
   word done←v26900;
   word thisIsUnique←v26928 = 1;
   word thisJoint←v26956;
   formal←c88644 = (formal←c88644 - 20);
   /* DoCheckStrokeJoint: */ 
SOURCE(18377, 405)
SOURCE(18377, 405)
   done←v26900 = 0;
SOURCE(18525, 72)
   {
      W2 var←c83524;
      {
         word pd103;
         pd103 = (* (( (ptr) (* (( (ptr) gf←c88612)+209)/* var←c82276 */  ))+58) );
         (void) ( *( (fPt) ((*  (ptr) pd103 ))))((word) &var←c83524, child←v26828, childParts←v26856, pd103);
         };
      thisIsUnique←v26928 = var←c83524.f1;
      thisJoint←v26956 = var←c83524.f0;
      };
SOURCE(18599, 183)
   if ((0 == thisIsUnique←v26928)) {
SOURCE(18626, 23)
      (* (( (ptr) formal←c88644)+4) ) = thisJoint←v26956;
SOURCE(18651, 12)
      return(1);
      }
   else {
SOURCE(18674, 108)
      if ((0 != (* (( (ptr) formal←c88644)+7) ))) {
SOURCE(18690, 44)
         if ((thisJoint←v26956 != (* (( (ptr) formal←c88644)+4) ))) {
SOURCE(18722, 12)
            return(1);
            };
         }
      else {
SOURCE(18745, 23)
         (* (( (ptr) formal←c88644)+4) ) = thisJoint←v26956;
SOURCE(18770, 12)
         (* (( (ptr) formal←c88644)+7) ) = 1;
         };
      };
SOURCE(18377, 405)
   return(done←v26900);
   }

static void SetStrokeColor←P1140(slice←v11268, parts←v11296, color←v11324, setHow←v11352, history←v11380)
   word slice←v11268;
   word parts←v11296;
   word color←v11324;
   word setHow←v11352;
   word history←v11380;
   {
   register ptr gf←c88676 =  (ptr) &globalframe;
   word outlineParts←v27000;
   word outlineData←v27028;
   /* SetStrokeColor: */ 
SOURCE(18882, 611)
SOURCE(18999, 42)
   outlineParts←v27000 = XR←Narrow(parts←v11296, (* (( (ptr) gf←c88676)+5) ));
SOURCE(19043, 45)
   outlineData←v27028 = XR←Narrow((* (( (ptr) slice←v11268)+1) ), (* (( (ptr) gf←c88676)+7) ));
SOURCE(19090, 403)
   if ((parts←v11296 == 0)) {
SOURCE(19110, 165)
      {
         register word childList←v27072;
         childList←v27072 = (* (( (ptr) outlineData←v27028)+4) );
         lab←L100093: ;
         if ((childList←v27072 != 0)) {
            }
         else {
            goto lab←L100090;
            };
SOURCE(19203, 72)
         {
            word pd104;
            pd104 = (* (( (ptr) (* (( (ptr) gf←c88676)+209)/* var←c82276 */  ))+59) );
            (void) ( *( (fPt) ((*  (ptr) pd104 ))))((*  (ptr) childList←v27072 ), 0, color←v11324, setHow←v11352, 0, pd104);
            };
         childList←v27072 = (* (( (ptr) childList←v27072)+1) );
         goto lab←L100093;
         lab←L100090: ;
         };
      }
   else {
SOURCE(19290, 203)
      {
         register word list←v27200;
         list←v27200 = (*  (ptr) outlineParts←v27000 );
         lab←L100097: ;
         if ((list←v27200 != 0)) {
            }
         else {
            goto lab←L100094;
            };
SOURCE(19382, 111)
         if (((*  (ptr) list←v27200 ) != 0)) {
SOURCE(19407, 86)
            {
               word pd105;
               pd105 = (* (( (ptr) (* (( (ptr) gf←c88676)+209)/* var←c82276 */  ))+59) );
               (void) ( *( (fPt) ((*  (ptr) pd105 ))))((*  (ptr) (*  (ptr) list←v27200 ) ), (* (( (ptr) (*  (ptr) list←v27200 ))+1) ), color←v11324, setHow←v11352, 0, pd105)
               ;
               };
            };
         list←v27200 = (* (( (ptr) list←v27200)+1) );
         goto lab←L100097;
         lab←L100094: ;
         };
      };
   }

static void GetStrokeColor←P1200(formal←c0365, slice←v11440, parts←v11468)
   word formal←c0365;
   word slice←v11440;
   word parts←v11468;
   {
   W8 var←c88708;
   /* declaration of color←v11512 skipped */ 
   word isUnique←v11540;
   /* declaration of var←c83556 skipped */ 
   /* declaration of found←v27328 skipped */ 
   /* GetStrokeColor: */ 
SOURCE(19511, 639)
   {
      word tmpAddr106;
      tmpAddr106 = (word) (( (ptr) &var←c88708)+5)/* var←c83556 */ ;
      (*  (ptr) tmpAddr106 ) = ( ((word)  (fPt) DoCheckStrokeColor←P6708) );
      (* (( (ptr) tmpAddr106) + 1) ) = 1;
      };
SOURCE(19511, 639)
   var←c88708.f4/* color←v11512 */  = 0;
SOURCE(19511, 639)
   isUnique←v11540 = 1;
SOURCE(19623, 19)
   var←c88708.f7/* found←v27328 */  = 0;
SOURCE(20067, 83)
   if ((0 == (word) WalkIncludedParts←P3540(slice←v11440, parts←v11468, 0, (word) (( (bPt) &var←c88708)+20)/* var←c83556 */ , 0)
   )) {
      isUnique←v11540 =  (unsigned) (0 != var←c88708.f7/* found←v27328 */ );
      }
   else {
      isUnique←v11540 =  (unsigned) 0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0365 ) = var←c88708.f4/* color←v11512 */ ;
   (* (( (ptr) formal←c0365)+1) ) = isUnique←v11540;
   return;
   }

static word DoCheckStrokeColor←P6708(child←v27432, childParts←v27460, formal←c88772)
   word child←v27432;
   word childParts←v27460;
   word formal←c88772;
   {
   register ptr gf←c88740 =  (ptr) &globalframe;
   word done←v27504;
   word thisIsUnique←v27532 = 1;
   word thisColor←v27560 = 0;
   formal←c88772 = (formal←c88772 - 20);
   /* DoCheckStrokeColor: */ 
SOURCE(19644, 412)
SOURCE(19644, 412)
   done←v27504 = 0;
SOURCE(19786, 72)
   {
      W2 var←c83588;
      {
         word pd107;
         pd107 = (* (( (ptr) (* (( (ptr) gf←c88740)+209)/* var←c82276 */  ))+60) );
         (void) ( *( (fPt) ((*  (ptr) pd107 ))))((word) &var←c83588, child←v27432, childParts←v27460, pd107);
         };
      thisIsUnique←v27532 = var←c83588.f1;
      thisColor←v27560 = var←c83588.f0;
      };
SOURCE(19860, 196)
   if ((0 == thisIsUnique←v27532)) {
SOURCE(19887, 17)
      (* (( (ptr) formal←c88772)+4) ) = thisColor←v27560;
SOURCE(19906, 12)
      return(1);
      }
   else {
SOURCE(19929, 127)
      if ((0 != (* (( (ptr) formal←c88772)+7) ))) {
SOURCE(19945, 69)
         {
            word pd108;
            pd108 = (* (( (ptr) (* (( (ptr) gf←c88740)+213)/* var←c83620 */  ))+35) );
            if ((0 == (word) ( *( (fPt) ((*  (ptr) pd108 ))))(thisColor←v27560, (* (( (ptr) formal←c88772)+4) ), pd108))) {
SOURCE(20002, 12)
               return(1);
               };
            };
         }
      else {
SOURCE(20025, 17)
         (* (( (ptr) formal←c88772)+4) ) = thisColor←v27560;
SOURCE(20044, 12)
         (* (( (ptr) formal←c88772)+7) ) = 1;
         };
      };
SOURCE(19644, 412)
   return(done←v27504);
   }

static void SetFillColor←P1260(slice←v11600, parts←v11628, color←v11656, setHow←v11684, history←v11712)
   word slice←v11600;
   word parts←v11628;
   word color←v11656;
   word setHow←v11684;
   word history←v11712;
   {
   register ptr gf←c88804 =  (ptr) &globalframe;
   word outlineData←v27604;
   word outlineParts←v27632;
   /* SetFillColor: */ 
SOURCE(20156, 810)
SOURCE(20271, 45)
   outlineData←v27604 = XR←Narrow((* (( (ptr) slice←v11600)+1) ), (* (( (ptr) gf←c88804)+7) ));
SOURCE(20318, 42)
   outlineParts←v27632 = XR←Narrow(parts←v11628, (* (( (ptr) gf←c88804)+5) ));
SOURCE(20362, 175)
   {
      word var←c83652;
      var←c83652 = setHow←v11684;
      if ((var←c83652 == (* (( (ptr) gf←c88804)+27) ))) {
SOURCE(20389, 29)
         (* (( (ptr) outlineData←v27604)+1) ) = color←v11656;
         }
      else {
         if ((var←c83652 == (* (( (ptr) gf←c88804)+26) ))) {
SOURCE(20434, 105)
            {
               word newColor←v27676;
SOURCE(20436, 67)
               {
                  word pd109;
                  pd109 = (* (( (ptr) (* (( (ptr) gf←c88804)+212)/* var←c83236 */  ))+36) );
                  newColor←v27676 = (word) ( *( (fPt) ((*  (ptr) pd109 ))))((* (( (ptr) outlineData←v27604)+1) ), color←v11656, pd109);
                  };
SOURCE(20505, 32)
               (* (( (ptr) outlineData←v27604)+1) ) = newColor←v27676;
               };
            }
         else {
SOURCE(20553, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
SOURCE(20560, 406)
   if ((parts←v11628 == 0)) {
SOURCE(20582, 163)
      {
         register word childList←v27720;
         childList←v27720 = (* (( (ptr) outlineData←v27604)+4) );
         lab←L100102: ;
         if ((childList←v27720 != 0)) {
            }
         else {
            goto lab←L100099;
            };
SOURCE(20675, 70)
         {
            word pd110;
            pd110 = (* (( (ptr) (* (( (ptr) gf←c88804)+209)/* var←c82276 */  ))+61) );
            (void) ( *( (fPt) ((*  (ptr) pd110 ))))((*  (ptr) childList←v27720 ), 0, color←v11656, setHow←v11684, 0, pd110);
            };
         childList←v27720 = (* (( (ptr) childList←v27720)+1) );
         goto lab←L100102;
         lab←L100099: ;
         };
      }
   else {
SOURCE(20765, 201)
      {
         register word list←v27848;
         list←v27848 = (*  (ptr) outlineParts←v27632 );
         lab←L100106: ;
         if ((list←v27848 != 0)) {
            }
         else {
            goto lab←L100103;
            };
SOURCE(20857, 109)
         if (((*  (ptr) list←v27848 ) != 0)) {
SOURCE(20882, 84)
            {
               word pd111;
               pd111 = (* (( (ptr) (* (( (ptr) gf←c88804)+209)/* var←c82276 */  ))+61) );
               (void) ( *( (fPt) ((*  (ptr) pd111 ))))((*  (ptr) (*  (ptr) list←v27848 ) ), (* (( (ptr) (*  (ptr) list←v27848 ))+1) ), color←v11656, setHow←v11684, 0, pd111)
               ;
               };
            };
         list←v27848 = (* (( (ptr) list←v27848)+1) );
         goto lab←L100106;
         lab←L100103: ;
         };
      };
   }

static void OutlineGetFillColor←P1320(formal←c0389, slice←v11772, parts←v11800)
   word formal←c0389;
   word slice←v11772;
   word parts←v11800;
   {
   register ptr gf←c88836 =  (ptr) &globalframe;
   word color←v11844;
   word isUnique←v11872;
   word outlineData←v27976;
   /* OutlineGetFillColor: */ 
SOURCE(20987, 193)
SOURCE(20987, 193)
   color←v11844 = 0;
SOURCE(20987, 193)
   isUnique←v11872 = 1;
SOURCE(21104, 45)
   outlineData←v27976 = XR←Narrow((* (( (ptr) slice←v11772)+1) ), (* (( (ptr) gf←c88836)+7) ));
SOURCE(21151, 29)
   color←v11844 = (* (( (ptr) outlineData←v27976)+1) );
   /* removed tail goto */ 
   (*  (ptr) formal←c0389 ) = color←v11844;
   (* (( (ptr) formal←c0389)+1) ) = isUnique←v11872;
   return;
   }

static void GetFillColor←P1380(formal←c0396, slice←v11932, parts←v11960)
   word formal←c0396;
   word slice←v11932;
   word parts←v11960;
   {
   W8 var←c88868;
   /* declaration of color←v12004 skipped */ 
   word isUnique←v12032;
   /* declaration of var←c83684 skipped */ 
   /* declaration of found←v28020 skipped */ 
   /* GetFillColor: */ 
SOURCE(21186, 631)
   {
      word tmpAddr112;
      tmpAddr112 = (word) (( (ptr) &var←c88868)+5)/* var←c83684 */ ;
      (*  (ptr) tmpAddr112 ) = ( ((word)  (fPt) DoCheckFillColor←P6912) );
      (* (( (ptr) tmpAddr112) + 1) ) = 1;
      };
SOURCE(21186, 631)
   var←c88868.f4/* color←v12004 */  = 0;
SOURCE(21186, 631)
   isUnique←v12032 = 1;
SOURCE(21296, 19)
   var←c88868.f7/* found←v28020 */  = 0;
SOURCE(21736, 81)
   if ((0 == (word) WalkIncludedParts←P3540(slice←v11932, parts←v11960, 0, (word) (( (bPt) &var←c88868)+20)/* var←c83684 */ , 0)
   )) {
      isUnique←v12032 =  (unsigned) (0 != var←c88868.f7/* found←v28020 */ );
      }
   else {
      isUnique←v12032 =  (unsigned) 0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0396 ) = var←c88868.f4/* color←v12004 */ ;
   (* (( (ptr) formal←c0396)+1) ) = isUnique←v12032;
   return;
   }

static word DoCheckFillColor←P6912(child←v28124, childParts←v28152, formal←c88932)
   word child←v28124;
   word childParts←v28152;
   word formal←c88932;
   {
   register ptr gf←c88900 =  (ptr) &globalframe;
   word done←v28196;
   word thisIsUnique←v28224 = 1;
   word thisColor←v28252 = 0;
   formal←c88932 = (formal←c88932 - 20);
   /* DoCheckFillColor: */ 
SOURCE(21317, 408)
SOURCE(21317, 408)
   done←v28196 = 0;
SOURCE(21457, 70)
   {
      W2 var←c83716;
      {
         word pd113;
         pd113 = (* (( (ptr) (* (( (ptr) gf←c88900)+209)/* var←c82276 */  ))+62) );
         (void) ( *( (fPt) ((*  (ptr) pd113 ))))((word) &var←c83716, child←v28124, childParts←v28152, pd113);
         };
      thisIsUnique←v28224 = var←c83716.f1;
      thisColor←v28252 = var←c83716.f0;
      };
SOURCE(21529, 196)
   if ((0 == thisIsUnique←v28224)) {
SOURCE(21556, 17)
      (* (( (ptr) formal←c88932)+4) ) = thisColor←v28252;
SOURCE(21575, 12)
      return(1);
      }
   else {
SOURCE(21598, 127)
      if ((0 != (* (( (ptr) formal←c88932)+7) ))) {
SOURCE(21614, 69)
         {
            word pd114;
            pd114 = (* (( (ptr) (* (( (ptr) gf←c88900)+213)/* var←c83620 */  ))+35) );
            if ((0 == (word) ( *( (fPt) ((*  (ptr) pd114 ))))(thisColor←v28252, (* (( (ptr) formal←c88932)+4) ), pd114))) {
SOURCE(21671, 12)
               return(1);
               };
            };
         }
      else {
SOURCE(21694, 17)
         (* (( (ptr) formal←c88932)+4) ) = thisColor←v28252;
SOURCE(21713, 12)
         (* (( (ptr) formal←c88932)+7) ) = 1;
         };
      };
SOURCE(21317, 408)
   return(done←v28196);
   }

static void SetDashed←P1440(slice←v12092, parts←v12120, dashed←v12148, pattern←v12176, offset←v12204, length←v12232, history←v12260)
   word slice←v12092;
   word parts←v12120;
   word dashed←v12148;
   word pattern←v12176;
   word offset←v12204;
   word length←v12232;
   word history←v12260;
   {
   register ptr gf←c88964 =  (ptr) &globalframe;
   word outlineParts←v28296;
   word outlineData←v28324;
   /* SetDashed: */ 
SOURCE(21823, 690)
SOURCE(21993, 42)
   outlineParts←v28296 = XR←Narrow(parts←v12120, (* (( (ptr) gf←c88964)+5) ));
SOURCE(22037, 45)
   outlineData←v28324 = XR←Narrow((* (( (ptr) slice←v12092)+1) ), (* (( (ptr) gf←c88964)+7) ));
SOURCE(22084, 429)
   if ((parts←v12120 == 0)) {
SOURCE(22104, 178)
      {
         register word childList←v28368;
         childList←v28368 = (* (( (ptr) outlineData←v28324)+4) );
         lab←L100112: ;
         if ((childList←v28368 != 0)) {
            }
         else {
            goto lab←L100109;
            };
SOURCE(22197, 85)
         {
            word pd115;
            pd115 = (* (( (ptr) (* (( (ptr) gf←c88964)+209)/* var←c82276 */  ))+65) );
            (void) ( *( (fPt) ((*  (ptr) pd115 ))))((*  (ptr) childList←v28368 ), 0, dashed←v12148, pattern←v12176, offset←v12204, length←v12232
               , 0, pd115);
            };
         childList←v28368 = (* (( (ptr) childList←v28368)+1) );
         goto lab←L100112;
         lab←L100109: ;
         };
      }
   else {
SOURCE(22297, 216)
      {
         register word list←v28496;
         list←v28496 = (*  (ptr) outlineParts←v28296 );
         lab←L100116: ;
         if ((list←v28496 != 0)) {
            }
         else {
            goto lab←L100113;
            };
SOURCE(22389, 124)
         if (((*  (ptr) list←v28496 ) != 0)) {
SOURCE(22414, 99)
            {
               word pd116;
               pd116 = (* (( (ptr) (* (( (ptr) gf←c88964)+209)/* var←c82276 */  ))+65) );
               (void) ( *( (fPt) ((*  (ptr) pd116 ))))((*  (ptr) (*  (ptr) list←v28496 ) ), (* (( (ptr) (*  (ptr) list←v28496 ))+1) ), dashed←v12148, pattern←v12176, offset←v12204, length←v12232
                  , 0, pd116);
               };
            };
         list←v28496 = (* (( (ptr) list←v28496)+1) );
         goto lab←L100116;
         lab←L100113: ;
         };
      };
   }

static void GetDashed←P1500(formal←c0424, slice←v12320, parts←v12348)
   word formal←c0424;
   word slice←v12320;
   word parts←v12348;
   {
   W11 var←c88996;
   /* declaration of dashed←v12392 skipped */ 
   /* declaration of pattern←v12420 skipped */ 
   /* declaration of offset←v12448 skipped */ 
   /* declaration of length←v12476 skipped */ 
   word isUnique←v12504;
   /* declaration of var←c83748 skipped */ 
   /* declaration of found←v28624 skipped */ 
   /* GetDashed: */ 
SOURCE(22531, 1013)
   {
      word tmpAddr117;
      tmpAddr117 = (word) (( (ptr) &var←c88996)+8)/* var←c83748 */ ;
      (*  (ptr) tmpAddr117 ) = ( ((word)  (fPt) DoCheckDashes←P7068) );
      (* (( (ptr) tmpAddr117) + 1) ) = 1;
      };
SOURCE(22531, 1013)
   (* (( (ptr) &var←c88996)+4)/* dashed←v12392 */  ) = 0;
SOURCE(22531, 1013)
   (* (( (ptr) &var←c88996)+5)/* pattern←v12420 */  ) = 0;
SOURCE(22531, 1013)
   (* (( (ptr) &var←c88996)+6)/* offset←v12448 */  ) = (*  (ptr) &fc48 );
SOURCE(22531, 1013)
   (* (( (ptr) &var←c88996)+7)/* length←v12476 */  ) = (*  (ptr) &fc48 );
SOURCE(22531, 1013)
   isUnique←v12504 = 1;
SOURCE(22699, 19)
   (* (( (ptr) &var←c88996)+10)/* found←v28624 */  ) = 0;
SOURCE(23466, 78)
   if ((0 == (word) WalkIncludedParts←P3540(slice←v12320, parts←v12348, 0, (word) (( (bPt) &var←c88996)+32)/* var←c83748 */ , 0)
   )) {
      isUnique←v12504 =  (unsigned) (0 != (* (( (ptr) &var←c88996)+10)/* found←v28624 */  ));
      }
   else {
      isUnique←v12504 =  (unsigned) 0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0424 ) = (* (( (ptr) &var←c88996)+4)/* dashed←v12392 */  );
   (* (( (ptr) formal←c0424)+1) ) = (* (( (ptr) &var←c88996)+5)/* pattern←v12420 */  );
   (* (( (ptr) formal←c0424)+2) ) = (* (( (ptr) &var←c88996)+6)/* offset←v12448 */  );
   (* (( (ptr) formal←c0424)+3) ) = (* (( (ptr) &var←c88996)+7)/* length←v12476 */  );
   (* (( (ptr) formal←c0424)+4) ) = isUnique←v12504;
   return;
   }

static word DoCheckDashes←P7068(child←v28728, childParts←v28756, formal←c89060)
   word child←v28728;
   word childParts←v28756;
   word formal←c89060;
   {
   register ptr gf←c89028 =  (ptr) &globalframe;
   word done←v28800;
   word thisIsUnique←v28828 = 1;
   word thisDashed←v28856 = 0;
   word thisPattern←v28884 = 0;
   word thisOffset←v28912;
   word thisLength←v28940;
   formal←c89060 = (formal←c89060 - 32);
   /* DoCheckDashes: */ 
SOURCE(22720, 735)
SOURCE(22720, 735)
   done←v28800 = 0;
SOURCE(22924, 105)
   {
      W5 var←c83780;
      {
         word pd118;
         pd118 = (* (( (ptr) (* (( (ptr) gf←c89028)+209)/* var←c82276 */  ))+66) );
         (void) ( *( (fPt) ((*  (ptr) pd118 ))))((word) &var←c83780, child←v28728, childParts←v28756, pd118);
         };
      thisIsUnique←v28828 = var←c83780.f4;
      thisLength←v28940 = var←c83780.f3;
      thisOffset←v28912 = var←c83780.f2;
      thisPattern←v28884 = var←c83780.f1;
      thisDashed←v28856 = var←c83780.f0;
      };
SOURCE(23031, 424)
   if ((0 == thisIsUnique←v28828)) {
SOURCE(23058, 19)
      (* (( (ptr) formal←c89060)+4) ) = thisDashed←v28856;
SOURCE(23079, 21)
      (* (( (ptr) formal←c89060)+5) ) = thisPattern←v28884;
SOURCE(23102, 19)
      (* (( (ptr) formal←c89060)+6) ) = thisOffset←v28912;
SOURCE(23123, 19)
      (* (( (ptr) formal←c89060)+7) ) = thisLength←v28940;
SOURCE(23144, 12)
      return(1);
      }
   else {
SOURCE(23167, 288)
      if ((0 != (* (( (ptr) formal←c89060)+10) ))) {
SOURCE(23183, 163)
         {
            word tc120;
            word x121;
            word x122;
            word x123;
            word x124;
            word pd125;
            if ((thisDashed←v28856 != (* (( (ptr) formal←c89060)+4) ))) { goto then0119;};
            if ((0 != thisDashed←v28856)) {
               if (((
                  x121 = thisOffset←v28912,  *(float*)&x121
                  ) != (
                  x122 = (* (( (ptr) formal←c89060)+6) ),  *(float*)&x122
                  )) || ((
                  x123 = thisLength←v28940,  *(float*)&x123
                  ) != (
                  x124 = (* (( (ptr) formal←c89060)+7) ),  *(float*)&x124
                  ))) {
                  tc120 =  (word) 1;
                  }
               else {
                  pd125 = (* (( (ptr) (* (( (ptr) gf←c89028)+212)/* var←c83236 */  ))+38) );
                  tc120 =  (word) (0 == (word) ( *( (fPt) ((*  (ptr) pd125 ))))(thisPattern←v28884, (* (( (ptr) formal←c89060)+5) ), pd125)
                  );
                  };
               }
            else {
               tc120 =  (word) 0;
               };
            if (tc120) {
               then0119: ;
SOURCE(23334, 12)
               return(1);
               };
            };
         }
      else {
SOURCE(23357, 12)
         (* (( (ptr) formal←c89060)+10) ) = 1;
SOURCE(23371, 19)
         (* (( (ptr) formal←c89060)+4) ) = thisDashed←v28856;
SOURCE(23392, 21)
         (* (( (ptr) formal←c89060)+5) ) = thisPattern←v28884;
SOURCE(23415, 19)
         (* (( (ptr) formal←c89060)+6) ) = thisOffset←v28912;
SOURCE(23436, 19)
         (* (( (ptr) formal←c89060)+7) ) = thisLength←v28940;
         };
      };
SOURCE(22720, 735)
   return(done←v28800);
   }

static word SetOrientation←P1560(slice←v12564, parts←v12592, orientation←v12620, history←v12648)
   word slice←v12564;
   word parts←v12592;
   word orientation←v12620;
   word history←v12648;
   {
   register ptr gf←c89092 =  (ptr) &globalframe;
   word success←v12692;
   word outlineData←v28984;
   word outlineParts←v29012;
   /* SetOrientation: */ 
SOURCE(23550, 637)
SOURCE(23550, 637)
   success←v12692 = 0;
SOURCE(23697, 45)
   outlineData←v28984 = XR←Narrow((* (( (ptr) slice←v12564)+1) ), (* (( (ptr) gf←c89092)+7) ));
SOURCE(23744, 42)
   outlineParts←v29012 = XR←Narrow(parts←v12592, (* (( (ptr) gf←c89092)+5) ));
SOURCE(23788, 399)
   if ((parts←v12592 == 0)) {
SOURCE(23808, 163)
      {
         register word childList←v29056;
         childList←v29056 = (* (( (ptr) outlineData←v28984)+4) );
         lab←L100121: ;
         if ((childList←v29056 != 0)) {
            }
         else {
            goto lab←L100118;
            };
SOURCE(23901, 70)
         {
            word var←c83812;
            word pd126;
            pd126 = (* (( (ptr) (* (( (ptr) gf←c89092)+209)/* var←c82276 */  ))+67) );
            var←c83812 = (word) ( *( (fPt) ((*  (ptr) pd126 ))))((*  (ptr) childList←v29056 ), 0, orientation←v12620, 0, pd126);
            };
         childList←v29056 = (* (( (ptr) childList←v29056)+1) );
         goto lab←L100121;
         lab←L100118: ;
         };
      }
   else {
SOURCE(23986, 201)
      {
         register word list←v29184;
         list←v29184 = (*  (ptr) outlineParts←v29012 );
         lab←L100125: ;
         if ((list←v29184 != 0)) {
            }
         else {
            goto lab←L100122;
            };
SOURCE(24078, 109)
         if (((*  (ptr) list←v29184 ) != 0)) {
SOURCE(24103, 84)
            {
               word var←c83844;
               word pd127;
               pd127 = (* (( (ptr) (* (( (ptr) gf←c89092)+209)/* var←c82276 */  ))+67) );
               var←c83844 = (word) ( *( (fPt) ((*  (ptr) pd127 ))))((*  (ptr) (*  (ptr) list←v29184 ) ), (* (( (ptr) (*  (ptr) list←v29184 ))+1)
                   ), orientation←v12620, 0, pd127);
               };
            };
         list←v29184 = (* (( (ptr) list←v29184)+1) );
         goto lab←L100125;
         lab←L100122: ;
         };
      };
SOURCE(23550, 637)
   return(success←v12692);
   }

static void GetOrientation←P1620(formal←c0453, slice←v12752, parts←v12780)
   word formal←c0453;
   word slice←v12752;
   word parts←v12780;
   {
   W8 var←c89124;
   register ptr gf←c89156 =  (ptr) &globalframe;
   /* declaration of orientation←v12824 skipped */ 
   word isUnique←v12852;
   /* declaration of var←c83876 skipped */ 
   word outlineData←v29312;
   /* declaration of found←v29340 skipped */ 
   /* GetOrientation: */ 
SOURCE(24205, 702)
   {
      word tmpAddr128;
      tmpAddr128 = (word) (( (ptr) &var←c89124)+5)/* var←c83876 */ ;
      (*  (ptr) tmpAddr128 ) = ( ((word)  (fPt) DoCheckOrientation←P7224) );
      (* (( (ptr) tmpAddr128) + 1) ) = 1;
      };
SOURCE(24205, 702)
   var←c89124.f4/* orientation←v12824 */  = 1;
SOURCE(24205, 702)
   isUnique←v12852 = 1;
SOURCE(24335, 45)
   outlineData←v29312 = XR←Narrow((* (( (ptr) slice←v12752)+1) ), (* (( (ptr) gf←c89156)+7) ));
SOURCE(24382, 19)
   var←c89124.f7/* found←v29340 */  = 0;
SOURCE(24824, 83)
   if ((0 == (word) WalkIncludedParts←P3540(slice←v12752, parts←v12780, 0, (word) (( (bPt) &var←c89124)+20)/* var←c83876 */ , 0)
   )) {
      isUnique←v12852 =  (unsigned) (0 != var←c89124.f7/* found←v29340 */ );
      }
   else {
      isUnique←v12852 =  (unsigned) 0;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0453 ) = var←c89124.f4/* orientation←v12824 */ ;
   (* (( (ptr) formal←c0453)+1) ) = isUnique←v12852;
   return;
   }

static word DoCheckOrientation←P7224(child←v29444, childParts←v29472, formal←c89220)
   word child←v29444;
   word childParts←v29472;
   word formal←c89220;
   {
   register ptr gf←c89188 =  (ptr) &globalframe;
   word done←v29516;
   word thisIsUnique←v29544 = 1;
   word thisOrient←v29572;
   formal←c89220 = (formal←c89220 - 20);
   /* DoCheckOrientation: */ 
SOURCE(24403, 410)
SOURCE(24403, 410)
   done←v29516 = 0;
SOURCE(24552, 73)
   {
      W2 var←c83908;
      {
         word pd129;
         pd129 = (* (( (ptr) (* (( (ptr) gf←c89188)+209)/* var←c82276 */  ))+68) );
         (void) ( *( (fPt) ((*  (ptr) pd129 ))))((word) &var←c83908, child←v29444, childParts←v29472, pd129);
         };
      thisIsUnique←v29544 = var←c83908.f1;
      thisOrient←v29572 = var←c83908.f0;
      };
SOURCE(24627, 186)
   if ((0 == thisIsUnique←v29544)) {
SOURCE(24654, 24)
      (* (( (ptr) formal←c89220)+4) ) = thisOrient←v29572;
SOURCE(24680, 12)
      return(1);
      }
   else {
SOURCE(24703, 110)
      if ((0 != (* (( (ptr) formal←c89220)+7) ))) {
SOURCE(24719, 45)
         if ((thisOrient←v29572 != (* (( (ptr) formal←c89220)+4) ))) {
SOURCE(24752, 12)
            return(1);
            };
         }
      else {
SOURCE(24775, 24)
         (* (( (ptr) formal←c89220)+4) ) = thisOrient←v29572;
SOURCE(24801, 12)
         (* (( (ptr) formal←c89220)+7) ) = 1;
         };
      };
SOURCE(24403, 410)
   return(done←v29516);
   }

static word CreateOutline←P1680(child←v12912, fillColor←v12940)
   word child←v12912;
   word fillColor←v12940;
   {
   register ptr gf←c89252 =  (ptr) &globalframe;
   word parent←v12984;
   word data←v29616;
   /* CreateOutline: */ 
SOURCE(24913, 633)
SOURCE(24913, 633)
   parent←v12984 = 0;
SOURCE(25009, 103)
   {
      word var←c83940;
      word var←c84036;
      {
         word var←c83972;
         word var←c84004;
         var←c83972 = XR←NewObject(8, (* (( (ptr) gf←c89252)+15) ));
         var←c84004 = var←c83972;
         (*  (ptr) var←c84004 ) = child←v12912;
         var←c83940 = var←c83972;
         };
      var←c84036 = XR←NewObject(36, (* (( (ptr) gf←c89252)+7) ));
      (*  (ptr) var←c84036 ) = 1;
      (* (( (ptr) var←c84036)+1) ) = fillColor←v12940;
      (* (( (ptr) var←c84036)+3) ) = 1;
      (* (( (ptr) var←c84036)+4) ) = var←c83940;
      data←v29616 = var←c84036;
      };
SOURCE(25114, 210)
   {
      word var←c84068;
      word var←c84100;
      word var←c84132;
      word var←c84164;
      {
         word pd130;
         pd130 = (* (( (ptr) (* (( (ptr) gf←c89252)+208)/* var←c82212 */  ))+7) );
         var←c84068 = (word) ( *( (fPt) ((*  (ptr) pd130 ))))((* ((( (ptr) gf←c89252)+25)) ), pd130);
         };
      {
         word pd131;
         pd131 = (* (( (ptr) (* (( (ptr) gf←c89252)+210)/* var←c82308 */  ))+6) );
         var←c84100 = (word) ( *( (fPt) ((*  (ptr) pd131 ))))(pd131);
         };
      {
         word pd132;
         pd132 = (* (( (ptr) (* (( (ptr) gf←c89252)+210)/* var←c82308 */  ))+6) );
         var←c84132 = (word) ( *( (fPt) ((*  (ptr) pd132 ))))(pd132);
         };
      var←c84164 = XR←NewObject(92, (* (( (ptr) gf←c89252)+16) ));
      (*  (ptr) var←c84164 ) = var←c84068;
      (* (( (ptr) var←c84164)+1) ) = data←v29616;
      (*  (W4Pt) (( (ptr) var←c84164)+3) ) = (*  (W4Pt) (( (ptr) gf←c89252)+202)/* var←c82116 */  );
      (* (( (ptr) var←c84164)+13) ) = var←c84100;
      (* (( (ptr) var←c84164)+15) ) = var←c84132;
      (* (( (ptr) var←c84164)+21) ) =  (word) -1;
      parent←v12984 = var←c84164;
      };
SOURCE(25326, 64)
   {
      word pd133;
      pd133 = (* (( (ptr) (* (( (ptr) gf←c89252)+208)/* var←c82212 */  ))+8) );
      (* (( (ptr) parent←v12984)+11) ) = (word) ( *( (fPt) ((*  (ptr) pd133 ))))(parent←v12984, 0, pd133);
      };
SOURCE(25392, 21)
   (* (( (ptr) child←v12912)+2) ) = parent←v12984;
SOURCE(25415, 131)
   {
      word pd134;
      pd134 = (* (( (ptr) (* (( (ptr) gf←c89252)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd134 ))))(child←v12912, pd134) == (* (( (ptr) gf←c89252)+24) ))) {
SOURCE(25455, 93)
         {
            word trajData←v29660;
SOURCE(25457, 39)
            trajData←v29660 = XR←Narrow((* (( (ptr) child←v12912)+1) ), (* (( (ptr) gf←c89252)+20) ));
SOURCE(25498, 48)
            if (((*  (ptr) trajData←v29660 ) == 1)) {
SOURCE(25525, 21)
               (*  (ptr) trajData←v29660 ) = 0;
               };
            };
         };
      };
SOURCE(24913, 633)
   return(parent←v12984);
   }

static word AddChild←P1740(outline←v13044, child←v13072)
   word outline←v13044;
   word child←v13072;
   {
   register ptr gf←c89284 =  (ptr) &globalframe;
   word holier←v13116;
   word holyData←v29704 = 0;
   /* AddChild: */ 
SOURCE(25555, 554)
SOURCE(25555, 554)
   holier←v13116 = 0;
SOURCE(25659, 45)
   {
      word pd135;
      pd135 = (* (( (ptr) (* (( (ptr) gf←c89284)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd135 ))))(outline←v13044, pd135) != (* (( (ptr) gf←c89284)+25) ))) {
SOURCE(25704, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(25711, 39)
   {
      word pd136;
      pd136 = (* (( (ptr) (* (( (ptr) gf←c89284)+209)/* var←c82276 */  ))+10) );
      holier←v13116 = (*  (ptr) ( *( (fPt) ((*  (ptr) pd136 ))))(outline←v13044, 0, pd136) );
      };
SOURCE(25772, 30)
   holyData←v29704 = XR←Narrow((* (( (ptr) holier←v13116)+1) ), (* (( (ptr) gf←c89284)+7) ));
SOURCE(25836, 77)
   {
      word var←c84196;
      {
         word var←c84228;
         word var←c84260;
         var←c84228 = XR←NewObject(8, (* (( (ptr) gf←c89284)+15) ));
         var←c84260 = var←c84228;
         (*  (ptr) var←c84260 ) = child←v13072;
         var←c84196 = var←c84228;
         };
      {
         word pd137;
         pd137 = (* (( (ptr) (* (( (ptr) gf←c89284)+212)/* var←c83236 */  ))+22) );
         (* (( (ptr) holyData←v29704)+4) ) = (word) ( *( (fPt) ((*  (ptr) pd137 ))))((* (( (ptr) holyData←v29704)+4) ), var←c84196, pd137)
         ;
         };
      };
SOURCE(25942, 21)
   (* (( (ptr) child←v13072)+2) ) = holier←v13116;
SOURCE(26008, 71)
   {
      word pd138;
      pd138 = (* (( (ptr) (* (( (ptr) gf←c89284)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd138 ))))(child←v13072, pd138) == (* (( (ptr) gf←c89284)+24) ))) {
SOURCE(26048, 31)
         {
            word pd139;
            pd139 = (* (( (ptr) (* (( (ptr) gf←c89284)+214)/* var←c84292 */  ))+15) );
            (void) ( *( (fPt) ((*  (ptr) pd139 ))))(child←v13072, 1, pd139);
            };
         };
      };
SOURCE(26081, 28)
   {
      word pd140;
      pd140 = (* (( (ptr) (* (( (ptr) gf←c89284)+208)/* var←c82212 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd140 ))))(holier←v13116, pd140);
      };
SOURCE(25555, 554)
   return(holier←v13116);
   }

static word ReplaceFirstChild←P1800(outline←v13176, newChild←v13204)
   word outline←v13176;
   word newChild←v13204;
   {
   register ptr gf←c89316 =  (ptr) &globalframe;
   word newOutline←v13248;
   word isClosed←v29748 = 0;
   word holeList←v29776;
   word newData←v29804 = 0;
   word newFirstChild←v29832 = 0;
   /* ReplaceFirstChild: */ 
SOURCE(26115, 1097)
SOURCE(26115, 1097)
   newOutline←v13248 = 0;
SOURCE(26236, 10)
   {
      word pd141;
      pd141 = (* (( (ptr) (* (( (ptr) gf←c89316)+215)/* var←c84324 */  ))+21) );
      holeList←v29776 = (word) ( *( (fPt) ((*  (ptr) pd141 ))))(outline←v13176, pd141);
      };
SOURCE(26363, 45)
   {
      word pd142;
      pd142 = (* (( (ptr) (* (( (ptr) gf←c89316)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd142 ))))(outline←v13176, pd142) != (* (( (ptr) gf←c89316)+25) ))) {
SOURCE(26408, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(26415, 159)
   if ((newChild←v13204 != 0)) {
SOURCE(26436, 30)
      newFirstChild←v29832 = newChild←v13204;
      }
   else {
SOURCE(26468, 106)
      if ((holeList←v29776 == 0)) {
SOURCE(26491, 25)
         newFirstChild←v29832 = 0;
         }
      else {
SOURCE(26518, 30)
         newFirstChild←v29832 = (*  (ptr) holeList←v29776 );
SOURCE(26550, 24)
         holeList←v29776 = (* (( (ptr) holeList←v29776)+1) );
         };
      };
SOURCE(26582, 37)
   if ((newFirstChild←v29832 == 0)) {
SOURCE(26608, 11)
      return(0);
      };
SOURCE(26621, 100)
   {
      word pd143;
      pd143 = (* (( (ptr) (* (( (ptr) gf←c89316)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd143 ))))(newFirstChild←v29832, pd143) != (* (( (ptr) gf←c89316)+24) ))) {
         isClosed←v29748 =  (unsigned) 1;
         }
      else {
         isClosed←v29748 =  (unsigned) ((*  (ptr) XR←Narrow((* (( (ptr) newFirstChild←v29832)+1) ), (* (( (ptr) gf←c89316)+20) )) ) != 2);
         };
      };
SOURCE(26723, 21)
   if ((0 == isClosed←v29748)) {
SOURCE(26744, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(26751, 96)
   {
      W2 var←c0489;
      word var←c84356;
      {
         word pd144;
         pd144 = (* (( (ptr) (* (( (ptr) gf←c89316)+209)/* var←c82276 */  ))+62) );
         (void) ( *( (fPt) ((*  (ptr) pd144 ))))((word) &var←c0489, outline←v13176, 0, pd144);
         };
      var←c84356 = var←c0489.f0;
      {
         word pd145;
         pd145 = (* (( (ptr) (* (( (ptr) gf←c89316)+215)/* var←c84324 */  ))+5) );
         newOutline←v13248 = (word) ( *( (fPt) ((*  (ptr) pd145 ))))(newFirstChild←v29832, var←c84356, pd145);
         };
      };
SOURCE(26849, 33)
   newData←v29804 = XR←Narrow((* (( (ptr) newOutline←v13248)+1) ), (* (( (ptr) gf←c89316)+7) ));
SOURCE(26884, 285)
   {
      register word list←v29960;
      list←v29960 = holeList←v29776;
      lab←L100130: ;
      if ((list←v29960 != 0)) {
         }
      else {
         goto lab←L100127;
         };
      {
         word hole←v30088;
         word newSlice←v30116;
SOURCE(26950, 24)
         hole←v30088 = (*  (ptr) list←v29960 );
SOURCE(26976, 45)
         {
            word pd146;
            pd146 = (* (( (ptr) (* (( (ptr) gf←c89316)+209)/* var←c82276 */  ))+10) );
            newSlice←v30116 = (*  (ptr) ( *( (fPt) ((*  (ptr) pd146 ))))(hole←v30088, 0, pd146) );
            };
SOURCE(27061, 78)
         {
            word var←c84388;
            {
               word var←c84420;
               word var←c84452;
               var←c84420 = XR←NewObject(8, (* (( (ptr) gf←c89316)+15) ));
               var←c84452 = var←c84420;
               (*  (ptr) var←c84452 ) = newSlice←v30116;
               var←c84388 = var←c84420;
               };
            {
               word pd147;
               pd147 = (* (( (ptr) (* (( (ptr) gf←c89316)+212)/* var←c83236 */  ))+22) );
               (* (( (ptr) newData←v29804)+4) ) = (word) ( *( (fPt) ((*  (ptr) pd147 ))))((* (( (ptr) newData←v29804)+4) ), var←c84388, pd147)
               ;
               };
            };
SOURCE(27141, 28)
         (* (( (ptr) newSlice←v30116)+2) ) = newOutline←v13248;
         };
      list←v29960 = (* (( (ptr) list←v29960)+1) );
      goto lab←L100130;
      lab←L100127: ;
      };
SOURCE(27180, 32)
   {
      word pd148;
      pd148 = (* (( (ptr) (* (( (ptr) gf←c89316)+208)/* var←c82212 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd148 ))))(newOutline←v13248, pd148);
      };
SOURCE(26115, 1097)
   return(newOutline←v13248);
   }

static word ReplaceChild←P1860(outline←v13308, oldChild←v13336, newChild←v13364)
   word outline←v13308;
   word oldChild←v13336;
   word newChild←v13364;
   {
   register ptr gf←c89348 =  (ptr) &globalframe;
   word newOutline←v13408;
   word newSlice←v30160 = 0;
   word newData←v30188 = 0;
   word holeList←v30216 = 0;
   word oldData←v30244;
   /* ReplaceChild: */ 
SOURCE(27218, 1214)
SOURCE(27218, 1214)
   newOutline←v13408 = 0;
SOURCE(27384, 43)
   oldData←v30244 = XR←Narrow((* (( (ptr) outline←v13308)+1) ), (* (( (ptr) gf←c89348)+7) ));
SOURCE(27429, 45)
   {
      word pd149;
      pd149 = (* (( (ptr) (* (( (ptr) gf←c89348)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd149 ))))(outline←v13308, pd149) != (* (( (ptr) gf←c89348)+25) ))) {
SOURCE(27474, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(27481, 37)
   if ((oldChild←v13336 == 0)) {
SOURCE(27502, 16)
      return(outline←v13308);
      };
SOURCE(27520, 85)
   if ((oldChild←v13336 == (*  (ptr) (* (( (ptr) oldData←v30244)+4) ) ))) {
SOURCE(27560, 45)
      return((word) ReplaceFirstChild←P1800(outline←v13308, newChild←v13364));
      };
SOURCE(27607, 56)
   {
      word pd150;
      pd150 = (* (( (ptr) (* (( (ptr) gf←c89348)+209)/* var←c82276 */  ))+10) );
      newSlice←v30160 = (*  (ptr) ( *( (fPt) ((*  (ptr) pd150 ))))((*  (ptr) (* (( (ptr) oldData←v30244)+4) ) ), 0, pd150) );
      };
SOURCE(27665, 65)
   {
      word pd151;
      pd151 = (* (( (ptr) (* (( (ptr) gf←c89348)+215)/* var←c84324 */  ))+5) );
      newOutline←v13408 = (word) ( *( (fPt) ((*  (ptr) pd151 ))))(newSlice←v30160, (* (( (ptr) oldData←v30244)+1) ), pd151);
      };
SOURCE(27732, 33)
   newData←v30188 = XR←Narrow((* (( (ptr) newOutline←v13408)+1) ), (* (( (ptr) gf←c89348)+7) ));
SOURCE(27767, 39)
   {
      word pd152;
      pd152 = (* (( (ptr) (* (( (ptr) gf←c89348)+215)/* var←c84324 */  ))+21) );
      holeList←v30216 = (word) ( *( (fPt) ((*  (ptr) pd152 ))))(outline←v13308, pd152);
      };
SOURCE(27835, 551)
   {
      register word list←v30372;
      list←v30372 = holeList←v30216;
      lab←L100134: ;
      if ((list←v30372 != 0)) {
         }
      else {
         goto lab←L100131;
         };
      {
         word hole←v30500;
SOURCE(27901, 24)
         hole←v30500 = (*  (ptr) list←v30372 );
SOURCE(27927, 459)
         if ( ( (hole←v30500 == oldChild←v13336) ? (newChild←v13364 != 0) : 0 ) ) {
SOURCE(28016, 42)
            {
               word pd153;
               pd153 = (* (( (ptr) (* (( (ptr) gf←c89348)+209)/* var←c82276 */  ))+10) );
               newSlice←v30160 = (*  (ptr) ( *( (fPt) ((*  (ptr) pd153 ))))(newChild←v13364, 0, pd153) );
               };
SOURCE(28060, 78)
            {
               word var←c84516;
               {
                  word var←c84548;
                  word var←c84580;
                  var←c84548 = XR←NewObject(8, (* (( (ptr) gf←c89348)+15) ));
                  var←c84580 = var←c84548;
                  (*  (ptr) var←c84580 ) = newSlice←v30160;
                  var←c84516 = var←c84548;
                  };
               {
                  word pd154;
                  pd154 = (* (( (ptr) (* (( (ptr) gf←c89348)+212)/* var←c83236 */  ))+22) );
                  (* (( (ptr) newData←v30188)+4) ) = (word) ( *( (fPt) ((*  (ptr) pd154 ))))((* (( (ptr) newData←v30188)+4) ), var←c84516, pd154)
                  ;
                  };
               };
SOURCE(28140, 28)
            (* (( (ptr) newSlice←v30160)+2) ) = newOutline←v13408;
            }
         else {
SOURCE(28177, 209)
            if ((hole←v30500 != oldChild←v13336)) {
SOURCE(28238, 38)
               {
                  word pd155;
                  pd155 = (* (( (ptr) (* (( (ptr) gf←c89348)+209)/* var←c82276 */  ))+10) );
                  newSlice←v30160 = (*  (ptr) ( *( (fPt) ((*  (ptr) pd155 ))))(hole←v30500, 0, pd155) );
                  };
SOURCE(28278, 78)
               {
                  word var←c84612;
                  {
                     word var←c84644;
                     word var←c84676;
                     var←c84644 = XR←NewObject(8, (* (( (ptr) gf←c89348)+15) ));
                     var←c84676 = var←c84644;
                     (*  (ptr) var←c84676 ) = newSlice←v30160;
                     var←c84612 = var←c84644;
                     };
                  {
                     word pd156;
                     pd156 = (* (( (ptr) (* (( (ptr) gf←c89348)+212)/* var←c83236 */  ))+22) );
                     (* (( (ptr) newData←v30188)+4) ) = (word) ( *( (fPt) ((*  (ptr) pd156 ))))((* (( (ptr) newData←v30188)+4) ), var←c84612, pd156)
                     ;
                     };
                  };
SOURCE(28358, 28)
               (* (( (ptr) newSlice←v30160)+2) ) = newOutline←v13408;
               };
            };
         };
      list←v30372 = (* (( (ptr) list←v30372)+1) );
      goto lab←L100134;
      lab←L100131: ;
      };
SOURCE(28400, 32)
   {
      word pd157;
      pd157 = (* (( (ptr) (* (( (ptr) gf←c89348)+208)/* var←c82212 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd157 ))))(newOutline←v13408, pd157);
      };
SOURCE(27218, 1214)
   return(newOutline←v13408);
   }

static word ReplaceRunsInOutline←P1920(outlineD←v13468, runProc←v13496, segmentsOnly←v13524, selectNewRuns←v13552)
   word outlineD←v13468;
   word runProc←v13496;
   word segmentsOnly←v13524;
   word selectNewRuns←v13552;
   {
   register ptr gf←c89380 =  (ptr) &globalframe;
   word newOutline←v13596;
   /* ReplaceRunsInOutline: */ 
SOURCE(28438, 1012)
SOURCE(28438, 1012)
   newOutline←v13596 = 0;
SOURCE(28612, 838)
   lab←L100137: ;
   {
      word tc158;
      word pd159;
      if ((outlineD←v13468 != 0)) {
         pd159 = (* (( (ptr) (* (( (ptr) gf←c89380)+209)/* var←c82276 */  ))+27) );
         tc158 =  (word) (0 == (word) ( *( (fPt) ((*  (ptr) pd159 ))))(outlineD←v13468, pd159));
         }
      else {
         tc158 =  (word) 0;
         };
      if (tc158) {
         }
      else {
         goto lab←L100135;
         };
      };
   {
      word thisChildD←v30544;
SOURCE(28678, 96)
      {
         word pd160;
         pd160 = (* (( (ptr) (* (( (ptr) gf←c89380)+207)/* var←c82180 */  ))+78) );
         thisChildD←v30544 = (word) ( *( (fPt) ((*  (ptr) pd160 ))))((*  (ptr) outlineD←v13468 ), (* (( (ptr) outlineD←v13468)+1) ), 0, 0, pd160)
         ;
         };
SOURCE(28776, 674)
      {
         word var←c84708;
         {
            word pd161;
            pd161 = (* (( (ptr) (* (( (ptr) gf←c89380)+209)/* var←c82276 */  ))+6) );
            var←c84708 = (word) ( *( (fPt) ((*  (ptr) pd161 ))))((*  (ptr) (thisChildD←v30544) ), pd161);
            };
         if ((var←c84708 == (* (( (ptr) gf←c89380)+24) ))) {
SOURCE(28836, 85)
            {
               word pd162;
               pd162 = (* (( (ptr) (* (( (ptr) gf←c89380)+214)/* var←c84292 */  ))+11) );
               newOutline←v13596 = (word) ( *( (fPt) ((*  (ptr) pd162 ))))(thisChildD←v30544, runProc←v13496, segmentsOnly←v13524, selectNewRuns←v13552, pd162)
               ;
               };
SOURCE(28923, 209)
            if ((newOutline←v13596 == 0)) {
SOURCE(28948, 20)
               outlineD←v13468 = 0;
               }
            else {
SOURCE(28968, 166)
               {
                  word parts←v30588;
SOURCE(28970, 67)
                  {
                     word pd163;
                     pd163 = (* (( (ptr) (* (( (ptr) gf←c89380)+209)/* var←c82276 */  ))+21) );
                     parts←v30588 = (word) ( *( (fPt) ((*  (ptr) pd163 ))))(newOutline←v13596, 2, pd163);
                     };
SOURCE(29046, 86)
                  {
                     word pd164;
                     if ((parts←v30588 == 0)) {
                        outlineD←v13468 = 0;
                        }
                     else {
                        pd164 = (* (( (ptr) (* (( (ptr) gf←c89380)+208)/* var←c82212 */  ))+8) );
                        outlineD←v13468 = (word) ( *( (fPt) ((*  (ptr) pd164 ))))(newOutline←v13596, parts←v30588, pd164);
                        };
                     };
                  };
               };
            }
         else {
SOURCE(29151, 301)
            {
               word parts←v30632 = 0;
SOURCE(29237, 56)
               {
                  word pd165;
                  pd165 = (* (( (ptr) (* (( (ptr) gf←c89380)+209)/* var←c82276 */  ))+20) );
                  (void) ( *( (fPt) ((*  (ptr) pd165 ))))((*  (ptr) thisChildD←v30544 ), 0, 2, pd165);
                  };
SOURCE(29295, 61)
               {
                  word pd166;
                  pd166 = (* (( (ptr) (* (( (ptr) gf←c89380)+209)/* var←c82276 */  ))+21) );
                  parts←v30632 = (word) ( *( (fPt) ((*  (ptr) pd166 ))))((*  (ptr) thisChildD←v30544 ), 2, pd166);
                  };
SOURCE(29358, 92)
               {
                  word pd167;
                  if ((parts←v30632 == 0)) {
                     outlineD←v13468 = 0;
                     }
                  else {
                     pd167 = (* (( (ptr) (* (( (ptr) gf←c89380)+208)/* var←c82212 */  ))+8) );
                     outlineD←v13468 = (word) ( *( (fPt) ((*  (ptr) pd167 ))))((*  (ptr) thisChildD←v30544 ), parts←v30632, pd167);
                     };
                  };
               };
            };
         };
      };
   goto lab←L100137;
   lab←L100135: ;
SOURCE(28438, 1012)
   return(newOutline←v13596);
   }

static void SetWrapRule←P1980(outline←v13656, oddWrap←v13684)
   word outline←v13656;
   word oddWrap←v13684;
   {
   register ptr gf←c89412 =  (ptr) &globalframe;
   /* SetWrapRule: */ 
SOURCE(29468, 112)
SOURCE(29529, 51)
   (*  (ptr) XR←Narrow((* (( (ptr) outline←v13656)+1) ), (* (( (ptr) gf←c89412)+7) )) ) = oddWrap←v13684;
   }

static word GetWrapRule←P2040(outline←v13744)
   word outline←v13744;
   {
   register ptr gf←c89444 =  (ptr) &globalframe;
   word oddWrap←v13788;
   /* GetWrapRule: */ 
SOURCE(29586, 119)
SOURCE(29656, 49)
   return((*  (ptr) XR←Narrow((* (( (ptr) outline←v13744)+1) ), (* (( (ptr) gf←c89444)+7) )) ));
   }

static void SetFillText←P2100(slice←v13848, node←v13876, formal←c01099, formal←c01100)
   word slice←v13848;
   word node←v13876;
   word formal←c01099;
   word formal←c01100;
   {
   W14 var←c89476;
   /* declaration of screenStyle←v13904 skipped */ 
   /* declaration of history←v13932 skipped */ 
   register ptr gf←c89508 =  (ptr) &globalframe;
   /* declaration of var←c84772 skipped */ 
   (* (( (ptr) &var←c89476)+4)/* screenStyle←v13904 */  ) = formal←c01099;
   (* (( (ptr) &var←c89476)+5)/* history←v13932 */  ) = formal←c01100;
   /* SetFillText: */ 
SOURCE(29711, 929)
   {
      word tmpAddr168;
      tmpAddr168 = (word) (( (ptr) &var←c89476)+6)/* var←c84772 */ ;
      (*  (ptr) tmpAddr168 ) = ( ((word)  (fPt) PutTextInBox←P7716) );
      (* (( (ptr) tmpAddr168) + 1) ) = 1;
      };
SOURCE(29825, 815)
   {
      word pd169;
      pd169 = (* (( (ptr) (* (( (ptr) gf←c89508)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd169 ))))(slice←v13848, pd169) != (* (( (ptr) gf←c89508)+25) ))) {
SOURCE(29868, 26)
         (void) XR←RaiseUnnamedError();
         }
      else {
SOURCE(29894, 751)
         {
            /* declaration of siblingNodes←v30704 skipped */ 
            /* declaration of resumeLoc←v30732 skipped */ 
            /* declaration of previousChild←v30760 skipped */ 
SOURCE(30177, 40)
            (* (( (ptr) &var←c89476)+8) ) = 0;
            (* (( (ptr) &var←c89476)+9) ) = 0;
            (* (( (ptr) &var←c89476)+10) ) = 0;
SOURCE(30219, 39)
            (* (( (ptr) &var←c89476)+11) ) = 0;
            (* (( (ptr) &var←c89476)+12) ) = 0;
SOURCE(30260, 26)
            (* (( (ptr) &var←c89476)+13)/* previousChild←v30760 */  ) = 0;
SOURCE(30288, 352)
            {
               word pd170;
               pd170 = (* (( (ptr) (* (( (ptr) gf←c89508)+207)/* var←c82180 */  ))+77) );
               if (((word) ( *( (fPt) ((*  (ptr) pd170 ))))(slice←v13848, 0, (* (( (ptr) gf←c89508)+23) ), pd170) != 0)) {
SOURCE(30342, 300)
                  {
                     word outlineData←v30908;
SOURCE(30344, 45)
                     outlineData←v30908 = XR←Narrow((* (( (ptr) slice←v13848)+1) ), (* (( (ptr) gf←c89508)+7) ));
SOURCE(30391, 27)
                     (* (( (ptr) outlineData←v30908)+2) ) = node←v13876;
SOURCE(30461, 37)
                     (* (( (ptr) outlineData←v30908)+3) ) = (* (( (ptr) &var←c89476)+4)/* screenStyle←v13904 */  );
SOURCE(30500, 42)
                     {
                        word pd171;
                        pd171 = (* (( (ptr) (* (( (ptr) gf←c89508)+216)/* var←c84868 */  ))+28) );
                        (* (( (ptr) &var←c89476)+11) ) = (word) ( *( (fPt) ((*  (ptr) pd171 ))))(node←v13876, pd171);
                        };
SOURCE(30580, 60)
                     {
                        word var←c84900;
                        word pd172;
                        pd172 = (* (( (ptr) (* (( (ptr) gf←c89508)+207)/* var←c82180 */  ))+73) );
                        var←c84900 = (word) ( *( (fPt) ((*  (ptr) pd172 ))))(slice←v13848, 0, (word) (( (bPt) &var←c89476)+24)/* var←c84772 */ , (* (
/*1*/   ( (ptr) gf←c89508)+23) ), pd172);
                        };
                     };
                  };
               };
            };
         };
      };
   }

static word PutTextInBox←P7716(thisChild←v30836, formal←c89572)
   word thisChild←v30836;
   word formal←c89572;
   {
   register ptr gf←c89540 =  (ptr) &globalframe;
   word done←v30880;
   formal←c89572 = (formal←c89572 - 24);
   /* PutTextInBox: */ 
SOURCE(29896, 20)
SOURCE(29896, 20)
   done←v30880 = 0;
SOURCE(29967, 110)
   if (((* (( (ptr) formal←c89572)+13) ) != 0)) {
SOURCE(29995, 49)
      {
         word pd173;
         pd173 = (* (( (ptr) (* (( (ptr) gf←c89540)+208)/* var←c82212 */  ))+49) );
         (void) ( *( (fPt) ((*  (ptr) pd173 ))))((word) (( (bPt) formal←c89572)+32), (* (( (ptr) formal←c89572)+13) ), pd173);
         };
SOURCE(30046, 31)
      (*  (W2Pt) (( (ptr) formal←c89572)+11) ) = (*  (W2Pt) (( (ptr) formal←c89572)+9) );
      };
SOURCE(30082, 62)
   {
      word pd174;
      pd174 = (* (( (ptr) (* (( (ptr) gf←c89540)+208)/* var←c82212 */  ))+47) );
      (void) ( *( (fPt) ((*  (ptr) pd174 ))))(thisChild←v30836, (*  (W2Pt) (( (ptr) formal←c89572)+11) ), (* (( (ptr) formal←c89572)+4)
          ), (* (( (ptr) formal←c89572)+5) ), pd174);
      };
SOURCE(30146, 25)
   (* (( (ptr) formal←c89572)+13) ) = thisChild←v30836;
SOURCE(29896, 20)
   return(done←v30880);
   }

static word DescriptorFromChildDescriptor←P2160(slice←v13992, childD←v14020)
   word slice←v13992;
   word childD←v14020;
   {
   register ptr gf←c89604 =  (ptr) &globalframe;
   word sliceD←v14064;
   word outlineData←v30952;
   word outlineChildren←v30980;
   word ptr←v31008 = 0;
   word newParts←v31036;
   /* DescriptorFromChildDescriptor: */ 
SOURCE(30652, 653)
SOURCE(30652, 653)
   sliceD←v14064 = 0;
SOURCE(30773, 45)
   outlineData←v30952 = XR←Narrow((* (( (ptr) slice←v13992)+1) ), (* (( (ptr) gf←c89604)+7) ));
SOURCE(30820, 17)
   outlineChildren←v30980 = (* (( (ptr) outlineData←v30952)+4) );
SOURCE(30905, 45)
   newParts←v31036 = XR←NewObject(4, (* (( (ptr) gf←c89604)+5) ));
SOURCE(30952, 66)
   {
      W2 var←c84964;
      {
         word pd175;
         pd175 = (* (( (ptr) (* (( (ptr) gf←c89604)+212)/* var←c83236 */  ))+15) );
         (void) ( *( (fPt) ((*  (ptr) pd175 ))))((word) (&var←c84964), pd175);
         };
      ptr←v31008 = var←c84964.f1;
      (*  (ptr) newParts←v31036 ) = var←c84964.f0;
      };
SOURCE(31020, 221)
   {
      register word children←v31248;
      children←v31248 = outlineChildren←v30980;
      lab←L100141: ;
      if ((children←v31248 != 0)) {
         }
      else {
         goto lab←L100138;
         };
SOURCE(31103, 138)
      {
         W2 var←c84996;
         {
            word pd176;
            pd176 = (* (( (ptr) (* (( (ptr) gf←c89604)+212)/* var←c83236 */  ))+16) );
            (void) ( *( (fPt) ((*  (ptr) pd176 ))))((word) &var←c84996,  ( ((*  (ptr) children←v31248 ) == (*  (ptr) childD←v14020 )) ? childD←v14020 : 0 ) , (*  (ptr) newParts←v31036 ), ptr←v31008, pd176)
            ;
            };
         ptr←v31008 = var←c84996.f1;
         (*  (ptr) newParts←v31036 ) = var←c84996.f0;
         };
      children←v31248 = (* (( (ptr) children←v31248)+1) );
      goto lab←L100141;
      lab←L100138: ;
      };
SOURCE(31252, 53)
   {
      word pd177;
      pd177 = (* (( (ptr) (* (( (ptr) gf←c89604)+208)/* var←c82212 */  ))+8) );
      sliceD←v14064 = (word) ( *( (fPt) ((*  (ptr) pd177 ))))(slice←v13992, newParts←v31036, pd177);
      };
SOURCE(30652, 653)
   return(sliceD←v14064);
   }

static word DescriptorFromChild←P2220(slice←v14124, child←v14152)
   word slice←v14124;
   word child←v14152;
   {
   register ptr gf←c89636 =  (ptr) &globalframe;
   word sliceD←v14196;
   word childD←v31376;
   /* DescriptorFromChild: */ 
SOURCE(31311, 219)
SOURCE(31311, 219)
   sliceD←v14196 = 0;
SOURCE(31411, 64)
   {
      word pd178;
      pd178 = (* (( (ptr) (* (( (ptr) gf←c89636)+209)/* var←c82276 */  ))+29) );
      childD←v31376 = (word) ( *( (fPt) ((*  (ptr) pd178 ))))(child←v14152, 0, 6, pd178);
      };
SOURCE(31477, 53)
   sliceD←v14196 = (word) DescriptorFromChildDescriptor←P2160(slice←v14124, childD←v31376);
SOURCE(31311, 219)
   return(sliceD←v14196);
   }

static word TopLevelDescriptorFromChildDescriptor←P2280(childD←v14256)
   word childD←v14256;
   {
   register ptr gf←c89668 =  (ptr) &globalframe;
   word ancestorD←v14300;
   /* TopLevelDescriptorFromChildDescriptor: */ 
SOURCE(31536, 307)
SOURCE(31536, 307)
   ancestorD←v14300 = 0;
SOURCE(31654, 189)
   {
      word pd179;
      pd179 = (* (( (ptr) (* (( (ptr) gf←c89668)+217)/* var←c85028 */  ))+39) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd179 ))))((*  (ptr) (childD←v14256) ), pd179))) {
SOURCE(31695, 20)
         return(childD←v14256);
         }
      else {
SOURCE(31715, 128)
         {
            word var←c85124;
            word var←c85092;
            {
               word pd181;
               {
                  word pd180;
                  pd180 = (* (( (ptr) (* (( (ptr) gf←c89668)+207)/* var←c82180 */  ))+64) );
                  var←c85124 = (word) ( *( (fPt) ((*  (ptr) pd180 ))))((*  (ptr) (childD←v14256) ), pd180);
                  };
               pd181 = (* (( (ptr) (* (( (ptr) gf←c89668)+207)/* var←c82180 */  ))+82) );
               var←c85092 = (word) ( *( (fPt) ((*  (ptr) pd181 ))))(var←c85124, childD←v14256, pd181);
               };
            return((word) TopLevelDescriptorFromChildDescriptor←P2280(var←c85092));
            };
         };
      };
   }

static word ChildDescriptorFromDescriptor←P2340(sliceD←v14360, child←v14388)
   word sliceD←v14360;
   word child←v14388;
   {
   register ptr gf←c89700 =  (ptr) &globalframe;
   word childD←v14432;
   word outlineParts←v31420;
   /* ChildDescriptorFromDescriptor: */ 
SOURCE(31849, 457)
SOURCE(31849, 457)
   childD←v14432 = 0;
SOURCE(31970, 49)
   outlineParts←v31420 = XR←Narrow((* (( (ptr) sliceD←v14360)+1) ), (* (( (ptr) gf←c89700)+5) ));
SOURCE(32021, 29)
   if ((child←v14388 == 0)) {
SOURCE(32039, 11)
      return(0);
      };
SOURCE(32052, 72)
   if ((outlineParts←v31420 == 0)) {
SOURCE(32077, 47)
      {
         word pd182;
         pd182 = (* (( (ptr) (* (( (ptr) gf←c89700)+208)/* var←c82212 */  ))+8) );
         return((word) ( *( (fPt) ((*  (ptr) pd182 ))))(child←v14388, 0, pd182));
         };
      };
SOURCE(32126, 158)
   {
      register word list←v31464;
      list←v31464 = (*  (ptr) outlineParts←v31420 );
      lab←L100145: ;
      if ((list←v31464 != 0)) {
         }
      else {
         goto lab←L100142;
         };
SOURCE(32216, 68)
      if ( ( ((*  (ptr) list←v31464 ) != 0) ? ((*  (ptr) (*  (ptr) list←v31464 ) ) == child←v14388) : 0 ) ) {
SOURCE(32266, 18)
         return((*  (ptr) list←v31464 ));
         };
      list←v31464 = (* (( (ptr) list←v31464)+1) );
      goto lab←L100145;
      lab←L100142: ;
      };
SOURCE(32295, 11)
   return(0);
   }

static word RemoveTraj←P2400(sliceD←v14492, traj←v14520)
   word sliceD←v14492;
   word traj←v14520;
   {
   register ptr gf←c89732 =  (ptr) &globalframe;
   word newD←v14564;
   /* RemoveTraj: */ 
SOURCE(32312, 823)
SOURCE(32312, 823)
   newD←v14564 = 0;
SOURCE(32411, 724)
   {
      word var←c85188;
      {
         word pd183;
         pd183 = (* (( (ptr) (* (( (ptr) gf←c89732)+209)/* var←c82276 */  ))+6) );
         var←c85188 = (word) ( *( (fPt) ((*  (ptr) pd183 ))))((*  (ptr) (sliceD←v14492) ), pd183);
         };
      if ((var←c85188 == (* (( (ptr) gf←c89732)+22) ))) {
SOURCE(32468, 581)
         {
            word outlineParts←v31592;
            word newChildD←v31620 = 0;
            word newParts←v31648 = 0;
            word newChildDList←v31676 = 0;
            word ptr←v31704 = 0;
SOURCE(32470, 49)
            outlineParts←v31592 = XR←Narrow((* (( (ptr) sliceD←v14492)+1) ), (* (( (ptr) gf←c89732)+5) ));
SOURCE(32618, 59)
            {
               W2 var←c85220;
               {
                  word pd184;
                  pd184 = (* (( (ptr) (* (( (ptr) gf←c89732)+212)/* var←c83236 */  ))+15) );
                  (void) ( *( (fPt) ((*  (ptr) pd184 ))))((word) (&var←c85220), pd184);
                  };
               ptr←v31704 = var←c85220.f1;
               newChildDList←v31676 = var←c85220.f0;
               };
SOURCE(32679, 248)
            {
               register word list←v31832;
               list←v31832 = (*  (ptr) outlineParts←v31592 );
               lab←L100149: ;
               if ((list←v31832 != 0)) {
                  }
               else {
                  goto lab←L100146;
                  };
SOURCE(32769, 74)
               if (((*  (ptr) list←v31832 ) == 0)) {
                  newChildD←v31620 = 0;
                  }
               else {
                  newChildD←v31620 = (word) RemoveTraj←P2400((*  (ptr) list←v31832 ), traj←v14520);
                  };
SOURCE(32845, 82)
               {
                  W2 var←c85252;
                  {
                     word pd185;
                     pd185 = (* (( (ptr) (* (( (ptr) gf←c89732)+212)/* var←c83236 */  ))+16) );
                     (void) ( *( (fPt) ((*  (ptr) pd185 ))))((word) &var←c85252, newChildD←v31620, newChildDList←v31676, ptr←v31704, pd185);
                     };
                  ptr←v31704 = var←c85252.f1;
                  newChildDList←v31676 = var←c85252.f0;
                  };
               list←v31832 = (* (( (ptr) list←v31832)+1) );
               goto lab←L100149;
               lab←L100146: ;
               };
SOURCE(32938, 49)
            {
               word var←c85284;
               var←c85284 = XR←NewObject(4, (* (( (ptr) gf←c89732)+5) ));
               (*  (ptr) var←c85284 ) = newChildDList←v31676;
               newParts←v31648 = var←c85284;
               };
SOURCE(32989, 58)
            {
               word pd186;
               pd186 = (* (( (ptr) (* (( (ptr) gf←c89732)+208)/* var←c82212 */  ))+8) );
               newD←v14564 = (word) ( *( (fPt) ((*  (ptr) pd186 ))))((*  (ptr) sliceD←v14492 ), newParts←v31648, pd186);
               };
            };
         }
      else {
         if ((var←c85188 == (* (( (ptr) gf←c89732)+25) ))) {
SOURCE(33066, 38)
            newD←v14564 = (word) OutlineRemoveTraj←P2460(sliceD←v14492, traj←v14520);
            }
         else {
SOURCE(33122, 13)
            newD←v14564 = sliceD←v14492;
            };
         };
      };
SOURCE(32312, 823)
   return(newD←v14564);
   }

static word OutlineRemoveTraj←P2460(outlineD←v14624, traj←v14652)
   word outlineD←v14624;
   word traj←v14652;
   {
   register ptr gf←c89764 =  (ptr) &globalframe;
   word newD←v14696;
   word outlineParts←v31960;
   word seq←v31988 = 0;
   /* OutlineRemoveTraj: */ 
SOURCE(33144, 630)
SOURCE(33144, 630)
   newD←v14696 = 0;
SOURCE(33244, 51)
   outlineParts←v31960 = XR←Narrow((* (( (ptr) outlineD←v14624)+1) ), (* (( (ptr) gf←c89764)+5) ));
SOURCE(33319, 455)
   {
      register word list←v32032;
      list←v32032 = (*  (ptr) outlineParts←v31960 );
      lab←L100154: ;
      if ((list←v32032 != 0)) {
         }
      else {
         goto lab←L100150;
         };
SOURCE(33411, 69)
      if ( ( ((*  (ptr) list←v32032 ) != 0) ? ((*  (ptr) (*  (ptr) list←v32032 ) ) == traj←v14652) : 0 ) ) {
SOURCE(33464, 16)
         seq←v31988 = (*  (ptr) list←v32032 );
SOURCE(33482, 9)
         goto lab←L100153;
         };
      list←v32032 = (* (( (ptr) list←v32032)+1) );
      goto lab←L100154;
      lab←L100153: ;
SOURCE(33511, 233)
      {
         word newSeqs←v32160;
         word newParts←v32188;
SOURCE(33513, 9)
         {
            word pd187;
            pd187 = (* (( (ptr) (* (( (ptr) gf←c89764)+212)/* var←c83236 */  ))+14) );
            newSeqs←v32160 = (word) ( *( (fPt) ((*  (ptr) pd187 ))))(0, seq←v31988, (*  (ptr) outlineParts←v31960 ), pd187);
            };
SOURCE(33625, 55)
         newParts←v32188 = XR←NewObject(4, (* (( (ptr) gf←c89764)+5) ));
         (*  (ptr) newParts←v32188 ) = newSeqs←v32160;
SOURCE(33682, 60)
         {
            word pd188;
            pd188 = (* (( (ptr) (* (( (ptr) gf←c89764)+208)/* var←c82212 */  ))+8) );
            newD←v14696 = (word) ( *( (fPt) ((*  (ptr) pd188 ))))((*  (ptr) outlineD←v14624 ), newParts←v32188, pd188);
            };
         };
      goto lab←L100151;
      lab←L100150: ;
SOURCE(33759, 15)
      newD←v14696 = outlineD←v14624;
      lab←L100151: ;
      };
SOURCE(33144, 630)
   return(newD←v14696);
   }

static word DeleteControlPoints←P2520(outlineD←v14756, formal←c01101)
   word outlineD←v14756;
   word formal←c01101;
   {
   W8 var←c89796;
   /* declaration of scene←v14784 skipped */ 
   register ptr gf←c89828 =  (ptr) &globalframe;
   /* declaration of bBox←v14828 skipped */ 
   /* declaration of var←c85348 skipped */ 
   var←c89796.f4/* scene←v14784 */  = formal←c01101;
   /* DeleteControlPoints: */ 
SOURCE(33789, 439)
   {
      word tmpAddr189;
      tmpAddr189 = (word) (( (ptr) &var←c89796)+6)/* var←c85348 */ ;
      (*  (ptr) tmpAddr189 ) = ( ((word)  (fPt) DoDelete←P8112) );
      (* (( (ptr) tmpAddr189) + 1) ) = 1;
      };
SOURCE(33789, 439)
   var←c89796.f5/* bBox←v14828 */  = 0;
SOURCE(34054, 32)
   {
      word pd190;
      pd190 = (* (( (ptr) (* (( (ptr) gf←c89828)+210)/* var←c82308 */  ))+6) );
      var←c89796.f5/* bBox←v14828 */  = (word) ( *( (fPt) ((*  (ptr) pd190 ))))(pd190);
      };
SOURCE(34139, 89)
   {
      word var←c85380;
      word pd191;
      pd191 = (* (( (ptr) (* (( (ptr) gf←c89828)+207)/* var←c82180 */  ))+74) );
      var←c85380 = (word) ( *( (fPt) ((*  (ptr) pd191 ))))((*  (ptr) outlineD←v14756 ), (* (( (ptr) outlineD←v14756)+1) ), 1, (word) (
            ( (bPt) &var←c89796)+24)/* var←c85348 */ , (* (( (ptr) gf←c89828)+24) ), pd191);
      };
SOURCE(33789, 439)
   return(var←c89796.f5/* bBox←v14828 */ );
   }

static word DoDelete←P8112(nextPartsD←v32392, formal←c89892)
   word nextPartsD←v32392;
   word formal←c89892;
   {
   register ptr gf←c89860 =  (ptr) &globalframe;
   word done←v32436;
   formal←c89892 = (formal←c89892 - 24);
   /* DoDelete: */ 
SOURCE(33894, 154)
SOURCE(33894, 154)
   done←v32436 = 0;
SOURCE(33972, 76)
   {
      word var←c85412;
      {
         word pd192;
         pd192 = (* (( (ptr) (* (( (ptr) gf←c89860)+214)/* var←c84292 */  ))+9) );
         var←c85412 = (word) ( *( (fPt) ((*  (ptr) pd192 ))))(nextPartsD←v32392, (* (( (ptr) formal←c89892)+4) ), pd192);
         };
      {
         word pd193;
         pd193 = (* (( (ptr) (* (( (ptr) gf←c89860)+210)/* var←c82308 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd193 ))))((* (( (ptr) formal←c89892)+5) ), var←c85412, pd193);
         };
      };
SOURCE(33894, 154)
   return(done←v32436);
   }

static void SaveSelectionsInOutlineAllClasses←P2580(formal←c01102)
   word formal←c01102;
   {
   W7 var←c89924;
   /* declaration of outline←v14888 skipped */ 
   register ptr gf←c89956 =  (ptr) &globalframe;
   /* declaration of var←c85444 skipped */ 
   word outlineData←v32492;
   word children←v32520;
   var←c89924.f4/* outline←v14888 */  = formal←c01102;
   /* SaveSelectionsInOutlineAllClasses: */ 
SOURCE(34234, 1100)
   {
      word tmpAddr194;
      tmpAddr194 = (word) (( (ptr) &var←c89924)+5)/* var←c85444 */ ;
      (*  (ptr) tmpAddr194 ) = ( ((word)  (fPt) SaveSelectionsAux←P8172) );
      (* (( (ptr) tmpAddr194) + 1) ) = 1;
      };
SOURCE(34719, 47)
   outlineData←v32492 = XR←Narrow((* (( (ptr) var←c89924.f4/* outline←v14888 */ )+1) ), (* (( (ptr) gf←c89956)+7) ));
SOURCE(34768, 10)
   children←v32520 = (* (( (ptr) outlineData←v32492)+4) );
SOURCE(34816, 396)
   {
      register word nextChildren←v32708;
      nextChildren←v32708 = children←v32520;
      lab←L100158: ;
      if ((nextChildren←v32708 != 0)) {
         }
      else {
         goto lab←L100155;
         };
      {
         word nextChild←v32836;
SOURCE(34904, 37)
         nextChild←v32836 = (*  (ptr) nextChildren←v32708 );
SOURCE(34987, 49)
         {
            word pd195;
            pd195 = (* (( (ptr) (* (( (ptr) gf←c89956)+209)/* var←c82276 */  ))+20) );
            (void) ( *( (fPt) ((*  (ptr) pd195 ))))(nextChild←v32836, 0, 0, pd195);
            };
SOURCE(35047, 46)
         {
            word pd196;
            pd196 = (* (( (ptr) (* (( (ptr) gf←c89956)+209)/* var←c82276 */  ))+20) );
            (void) ( *( (fPt) ((*  (ptr) pd196 ))))(nextChild←v32836, 0, 1, pd196);
            };
SOURCE(35104, 49)
         {
            word pd197;
            pd197 = (* (( (ptr) (* (( (ptr) gf←c89956)+209)/* var←c82276 */  ))+20) );
            (void) ( *( (fPt) ((*  (ptr) pd197 ))))(nextChild←v32836, 0, 2, pd197);
            };
SOURCE(35164, 48)
         {
            word pd198;
            pd198 = (* (( (ptr) (* (( (ptr) gf←c89956)+209)/* var←c82276 */  ))+20) );
            (void) ( *( (fPt) ((*  (ptr) pd198 ))))(nextChild←v32836, 0, 3, pd198);
            };
         };
      nextChildren←v32708 = (* (( (ptr) nextChildren←v32708)+1) );
      goto lab←L100158;
      lab←L100155: ;
      };
SOURCE(35232, 25)
   (void) SaveSelectionsAux←P8172(0, (word) (( (bPt) &var←c89924)+20)/* var←c85444 */ );
SOURCE(35259, 22)
   (void) SaveSelectionsAux←P8172(1, (word) (( (bPt) &var←c89924)+20)/* var←c85444 */ );
SOURCE(35283, 25)
   (void) SaveSelectionsAux←P8172(2, (word) (( (bPt) &var←c89924)+20)/* var←c85444 */ );
SOURCE(35310, 24)
   (void) SaveSelectionsAux←P8172(3, (word) (( (bPt) &var←c89924)+20)/* var←c85444 */ );
   }

static void SaveSelectionsAux←P8172(formal←c01103, formal←c90052)
   word formal←c01103;
   word formal←c90052;
   {
   W7 var←c89988;
   /* declaration of selectClass←v32596 skipped */ 
   register ptr gf←c90020 =  (ptr) &globalframe;
   /* declaration of var←c85476 skipped */ 
   word outlineD←v32880;
   formal←c90052 = (formal←c90052 - 20);
   var←c89988.f4/* selectClass←v32596 */  = formal←c01103;
   var←c89988.f0 = formal←c90052;
   /* SaveSelectionsAux: */ 
SOURCE(34302, 409)
   {
      word tmpAddr199;
      tmpAddr199 = (word) (( (ptr) &var←c89988)+5)/* var←c85476 */ ;
      (*  (ptr) tmpAddr199 ) = ( ((word)  (fPt) DoSaveSelections←P8376) );
      (* (( (ptr) tmpAddr199) + 1) ) = 1;
      };
SOURCE(34360, 76)
   {
      word pd200;
      pd200 = (* (( (ptr) (* (( (ptr) gf←c90020)+218)/* var←c85508 */  ))+20) );
      outlineD←v32880 = (word) ( *( (fPt) ((*  (ptr) pd200 ))))((* (( (ptr) formal←c90052)+4) ), var←c89988.f4/* selectClass←v32596 */ , pd200)
      ;
      };
SOURCE(34438, 273)
   if ((outlineD←v32880 != 0)) {
SOURCE(34459, 254)
SOURCE(34620, 91)
      {
         word var←c85540;
         word pd201;
         pd201 = (* (( (ptr) (* (( (ptr) gf←c90020)+207)/* var←c82180 */  ))+74) );
         var←c85540 = (word) ( *( (fPt) ((*  (ptr) pd201 ))))((*  (ptr) outlineD←v32880 ), (* (( (ptr) outlineD←v32880)+1) ), 0, (word) (
               ( (bPt) &var←c89988)+20)/* var←c85476 */ , 0, pd201);
         };
      };
   }

static word DoSaveSelections←P8376(nextPart←v33000, formal←c90116)
   word nextPart←v33000;
   word formal←c90116;
   {
   register ptr gf←c90084 =  (ptr) &globalframe;
   word done←v33044;
   formal←c90116 = (formal←c90116 - 20);
   /* DoSaveSelections: */ 
SOURCE(34461, 24)
SOURCE(34461, 24)
   done←v33044 = 0;
SOURCE(34545, 70)
   {
      word pd202;
      pd202 = (* (( (ptr) (* (( (ptr) gf←c90084)+209)/* var←c82276 */  ))+20) );
      (void) ( *( (fPt) ((*  (ptr) pd202 ))))((*  (ptr) nextPart←v33000 ), (* (( (ptr) nextPart←v33000)+1) ), (* (( (ptr) formal←c90116)+4)
          ), pd202);
      };
SOURCE(34461, 24)
   return(done←v33044);
   }

static void UnpackHitData←P2640(formal←c0616, hitData←v14948)
   word formal←c0616;
   word hitData←v14948;
   {
   register ptr gf←c90148 =  (ptr) &globalframe;
   word child←v15004;
   word hitType←v15032;
   word segNum←v15060;
   word cpNum←v15088;
   word jointNum←v15116;
   W2 hitPoint←v15144;
   word outlineHitData←v33072;
   /* UnpackHitData: */ 
SOURCE(35340, 373)
SOURCE(35340, 373)
   child←v15004 = 0;
SOURCE(35340, 373)
   hitType←v15032 = 0;
SOURCE(35340, 373)
   segNum←v15060 =  (word) -999;
SOURCE(35340, 373)
   cpNum←v15088 =  (word) -999;
SOURCE(35340, 373)
   jointNum←v15116 =  (word) -999;
SOURCE(35497, 48)
   outlineHitData←v33072 = XR←Narrow(hitData←v14948, (* (( (ptr) gf←c90148)+6) ));
SOURCE(35547, 28)
   child←v15004 = (*  (ptr) outlineHitData←v33072 );
SOURCE(35577, 136)
   {
      word pd203;
      pd203 = (* (( (ptr) (* (( (ptr) gf←c90148)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd203 ))))(child←v15004, pd203) == (* (( (ptr) gf←c90148)+24) ))) {
SOURCE(35617, 96)
         {
            W6 var←c85572;
            {
               word pd204;
               pd204 = (* (( (ptr) (* (( (ptr) gf←c90148)+214)/* var←c84292 */  ))+53) );
               (void) ( *( (fPt) ((*  (ptr) pd204 ))))((word) &var←c85572, (* (( (ptr) outlineHitData←v33072)+1) ), pd204);
               };
            hitPoint←v15144 = (*  (W2Pt) (( (ptr) &var←c85572)+4) );
            jointNum←v15116 = var←c85572.f3;
            cpNum←v15088 = var←c85572.f2;
            segNum←v15060 = var←c85572.f1;
            hitType←v15032 = var←c85572.f0;
            };
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0616 ) = child←v15004;
   (* (( (ptr) formal←c0616)+1) ) = hitType←v15032;
   (* (( (ptr) formal←c0616)+2) ) = segNum←v15060;
   (* (( (ptr) formal←c0616)+3) ) = cpNum←v15088;
   (* (( (ptr) formal←c0616)+4) ) = jointNum←v15116;
   (*  (W2Pt) (( (ptr) formal←c0616)+5) ) = hitPoint←v15144;
   return;
   }

static void UnpackOneSegmentDescriptor←P2700(formal←c0623, outlineD←v15204)
   word formal←c0623;
   word outlineD←v15204;
   {
   register ptr gf←c90180 =  (ptr) &globalframe;
   word childDescriptor←v15248;
   word segNum←v15276;
   word outlineParts←v33116 = 0;
   /* UnpackOneSegmentDescriptor: */ 
SOURCE(35719, 608)
SOURCE(35719, 608)
   childDescriptor←v15248 = 0;
SOURCE(35719, 608)
   segNum←v15276 = 999;
SOURCE(35881, 84)
   {
      word pd206;
      if ((outlineD←v15204 == 0)) { goto then0205;};
      pd206 = (* (( (ptr) (* (( (ptr) gf←c90180)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd206 ))))((*  (ptr) (outlineD←v15204) ), pd206) != (* (( (ptr) gf←c90180)+25) ))) {
         then0205: ;
SOURCE(35949, 16)
         childDescriptor←v15248 = 0;
         segNum←v15276 = 999;
         goto lab←L100160;
         };
      };
SOURCE(35967, 37)
   outlineParts←v33116 = XR←Narrow((* (( (ptr) outlineD←v15204)+1) ), (* (( (ptr) gf←c90180)+5) ));
SOURCE(36006, 321)
   {
      register word descriptors←v33160;
      descriptors←v33160 = (*  (ptr) outlineParts←v33116 );
      lab←L100164: ;
      if ((descriptors←v33160 != 0)) {
         }
      else {
         goto lab←L100161;
         };
SOURCE(36119, 208)
      if (((*  (ptr) descriptors←v33160 ) != 0)) {
SOURCE(36151, 35)
         childDescriptor←v15248 = (*  (ptr) descriptors←v33160 );
SOURCE(36188, 131)
         {
            word pd207;
            pd207 = (* (( (ptr) (* (( (ptr) gf←c90180)+209)/* var←c82276 */  ))+6) );
            if (((word) ( *( (fPt) ((*  (ptr) pd207 ))))((*  (ptr) (childDescriptor←v15248) ), pd207) == (* (( (ptr) gf←c90180)+24) ))) {
SOURCE(36244, 75)
               {
                  word var←c85604;
                  var←c85604 = XR←Narrow((* (( (ptr) childDescriptor←v15248)+1) ), (* (( (ptr) gf←c90180)+21) ));
                  {
                     word pd208;
                     pd208 = (* (( (ptr) (* (( (ptr) gf←c90180)+219)/* var←c85636 */  ))+35) );
                     segNum←v15276 = (word) ( *( (fPt) ((*  (ptr) pd208 ))))(var←c85604, pd208);
                     };
                  };
               };
            };
SOURCE(36321, 6)
         goto lab←L100160;
         };
      descriptors←v33160 = (* (( (ptr) descriptors←v33160)+1) );
      goto lab←L100164;
      lab←L100161: ;
      };
   /* removed tail goto */ 
   lab←L100160: ;
   (*  (ptr) formal←c0623 ) = childDescriptor←v15248;
   (* (( (ptr) formal←c0623)+1) ) = segNum←v15276;
   return;
   }

static void UnpackSimpleDescriptor←P2760(formal←c0638, outlineD←v15336)
   word formal←c0638;
   word outlineD←v15336;
   {
   register ptr gf←c90212 =  (ptr) &globalframe;
   word success←v15380;
   word hitType←v15408;
   word childDescriptor←v15436;
   word joint←v15464;
   word jointNum←v15492;
   W2 cp←v15520;
   word cpNum←v15548;
   word seg←v15576;
   word segNum←v15604;
   word outlineParts←v33288 = 0;
   /* UnpackSimpleDescriptor: */ 
SOURCE(36345, 877)
SOURCE(36345, 877)
   success←v15380 = 0;
SOURCE(36345, 877)
   hitType←v15408 = 0;
SOURCE(36345, 877)
   childDescriptor←v15436 = 0;
SOURCE(36345, 877)
   joint←v15464 = 0;
SOURCE(36345, 877)
   jointNum←v15492 = 999;
SOURCE(36345, 877)
   cp←v15520.f0 = (*  (ptr) &fc48 );
   cp←v15520.f1 = (*  (ptr) &fc48 );
SOURCE(36345, 877)
   cpNum←v15548 = 999;
SOURCE(36345, 877)
   seg←v15576 = 0;
SOURCE(36345, 877)
   segNum←v15604 = 999;
SOURCE(36660, 74)
   {
      word pd210;
      if ((outlineD←v15336 == 0)) { goto then0209;};
      pd210 = (* (( (ptr) (* (( (ptr) gf←c90212)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd210 ))))((*  (ptr) (outlineD←v15336) ), pd210) != (* (( (ptr) gf←c90212)+25) ))) {
         then0209: ;
SOURCE(36728, 6)
         goto lab←L100165;
         };
      };
SOURCE(36736, 37)
   outlineParts←v33288 = XR←Narrow((* (( (ptr) outlineD←v15336)+1) ), (* (( (ptr) gf←c90212)+5) ));
SOURCE(36775, 447)
   {
      register word descriptors←v33332;
      descriptors←v33332 = (*  (ptr) outlineParts←v33288 );
      lab←L100169: ;
      if ((descriptors←v33332 != 0)) {
         }
      else {
         goto lab←L100166;
         };
SOURCE(36888, 334)
      if (((*  (ptr) descriptors←v33332 ) != 0)) {
SOURCE(36920, 14)
         success←v15380 = 1;
SOURCE(36975, 35)
         childDescriptor←v15436 = (*  (ptr) descriptors←v33332 );
SOURCE(37012, 202)
         {
            word pd211;
            pd211 = (* (( (ptr) (* (( (ptr) gf←c90212)+209)/* var←c82276 */  ))+6) );
            if (((word) ( *( (fPt) ((*  (ptr) pd211 ))))((*  (ptr) (childDescriptor←v15436) ), pd211) == (* (( (ptr) gf←c90212)+24) ))) {
SOURCE(37069, 145)
               {
                  W10 var←c85668;
                  {
                     word pd212;
                     pd212 = (* (( (ptr) (* (( (ptr) gf←c90212)+219)/* var←c85636 */  ))+36) );
                     (void) ( *( (fPt) ((*  (ptr) pd212 ))))((word) &var←c85668, (*  (ptr) childDescriptor←v15436 ), (* (( (ptr) childDescriptor←v15436)+1)
                         ), pd212);
                     };
                  segNum←v15604 = (* (( (ptr) &var←c85668)+9) );
                  seg←v15576 = (* (( (ptr) &var←c85668)+8) );
                  cpNum←v15548 = (* (( (ptr) &var←c85668)+7) );
                  cp←v15520 = (*  (W2Pt) (( (ptr) &var←c85668)+5) );
                  jointNum←v15492 = (* (( (ptr) &var←c85668)+4) );
                  joint←v15464 = (* (( (ptr) &var←c85668)+3) );
                  hitType←v15408 = (* (( (ptr) &var←c85668)+1) );
                  success←v15380 = (*  (ptr) &var←c85668 );
                  };
               };
            };
SOURCE(37216, 6)
         goto lab←L100165;
         };
      descriptors←v33332 = (* (( (ptr) descriptors←v33332)+1) );
      goto lab←L100169;
      lab←L100166: ;
      };
   /* removed tail goto */ 
   lab←L100165: ;
   (*  (ptr) formal←c0638 ) = success←v15380;
   (* (( (ptr) formal←c0638)+1) ) = hitType←v15408;
   (* (( (ptr) formal←c0638)+2) ) = childDescriptor←v15436;
   (* (( (ptr) formal←c0638)+3) ) = joint←v15464;
   (* (( (ptr) formal←c0638)+4) ) = jointNum←v15492;
   (*  (W2Pt) (( (ptr) formal←c0638)+5) ) = cp←v15520;
   (* (( (ptr) formal←c0638)+7) ) = cpNum←v15548;
   (* (( (ptr) formal←c0638)+8) ) = seg←v15576;
   (* (( (ptr) formal←c0638)+9) ) = segNum←v15604;
   return;
   }

static word FindTrajShapeInOutline←P2820(formal←c01104, outline←v15692)
   word formal←c01104;
   word outline←v15692;
   {
   W9 var←c90244;
   /* declaration of traj←v15664 skipped */ 
   register ptr gf←c90276 =  (ptr) &globalframe;
   /* declaration of oldTrajs←v15736 skipped */ 
   /* declaration of var←c85700 skipped */ 
   word outlineData←v33460;
   /* declaration of tail←v33488 skipped */ 
   (* (( (ptr) &var←c90244)+4)/* traj←v15664 */  ) = formal←c01104;
   /* FindTrajShapeInOutline: */ 
SOURCE(37240, 408)
   {
      word tmpAddr213;
      tmpAddr213 = (word) (( (ptr) &var←c90244)+6)/* var←c85700 */ ;
      (*  (ptr) tmpAddr213 ) = ( ((word)  (fPt) MatchTraj←P8532) );
      (* (( (ptr) tmpAddr213) + 1) ) = 1;
      };
SOURCE(37240, 408)
   (* (( (ptr) &var←c90244)+5)/* oldTrajs←v15736 */  ) = 0;
SOURCE(37344, 47)
   outlineData←v33460 = XR←Narrow((* (( (ptr) outline←v15692)+1) ), (* (( (ptr) gf←c90276)+7) ));
SOURCE(37393, 6)
   (* (( (ptr) &var←c90244)+8)/* tail←v33488 */  ) = 0;
SOURCE(37588, 60)
   {
      word var←c85732;
      word pd214;
      pd214 = (* (( (ptr) (* (( (ptr) gf←c90276)+207)/* var←c82180 */  ))+73) );
      var←c85732 = (word) ( *( (fPt) ((*  (ptr) pd214 ))))(outline←v15692, 0, (word) (( (bPt) &var←c90244)+24)/* var←c85700 */ , (* (
            ( (ptr) gf←c90276)+24) ), pd214);
      };
SOURCE(37240, 408)
   return((* (( (ptr) &var←c90244)+5)/* oldTrajs←v15736 */  ));
   }

static word MatchTraj←P8532(oldTraj←v33676, formal←c90340)
   word oldTraj←v33676;
   word formal←c90340;
   {
   register ptr gf←c90308 =  (ptr) &globalframe;
   word done←v33720;
   formal←c90340 = (formal←c90340 - 24);
   /* MatchTraj: */ 
SOURCE(37414, 169)
SOURCE(37414, 169)
   done←v33720 = 0;
SOURCE(37480, 103)
   {
      word pd215;
      pd215 = (* (( (ptr) (* (( (ptr) gf←c90308)+214)/* var←c84292 */  ))+28) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd215 ))))((* (( (ptr) formal←c90340)+4) ), oldTraj←v33676, pd215))) {
SOURCE(37521, 62)
         {
            W2 var←c85764;
            {
               word pd216;
               pd216 = (* (( (ptr) (* (( (ptr) gf←c90308)+212)/* var←c83236 */  ))+21) );
               (void) ( *( (fPt) ((*  (ptr) pd216 ))))((word) &var←c85764, oldTraj←v33676, (* (( (ptr) formal←c90340)+5) ), (* (( (ptr) formal←c90340)+8)
                   ), pd216);
               };
            (* (( (ptr) formal←c90340)+8) ) = var←c85764.f1;
            (* (( (ptr) formal←c90340)+5) ) = var←c85764.f0;
            };
         };
      };
SOURCE(37414, 169)
   return(done←v33720);
   }

static word TrajsInOutline←P2880(outline←v15880)
   word outline←v15880;
   {
   register ptr gf←c90372 =  (ptr) &globalframe;
   word trajGen←v15924;
   word outlineData←v33748;
   word partsList←v33776;
   /* TrajsInOutline: */ 
SOURCE(37654, 238)
SOURCE(37654, 238)
   trajGen←v15924 = 0;
SOURCE(37738, 47)
   outlineData←v33748 = XR←Narrow((* (( (ptr) outline←v15880)+1) ), (* (( (ptr) gf←c90372)+7) ));
SOURCE(37787, 11)
   partsList←v33776 = (word) TrajectoriesOfOutline←P2940(outline←v15880);
SOURCE(37846, 46)
   {
      word var←c85796;
      var←c85796 = XR←NewObject(4, (* (( (ptr) gf←c90372)+19) ));
      (*  (ptr) var←c85796 ) = partsList←v33776;
      trajGen←v15924 = var←c85796;
      };
SOURCE(37654, 238)
   return(trajGen←v15924);
   }

static word TrajectoriesOfOutline←P2940(outline←v15984)
   word outline←v15984;
   {
   register ptr gf←c90404 =  (ptr) &globalframe;
   word trajs←v16028;
   word outlineData←v33904;
   word ptr←v33932 = 0;
   /* TrajectoriesOfOutline: */ 
SOURCE(37898, 442)
SOURCE(37898, 442)
   trajs←v16028 = 0;
SOURCE(37991, 47)
   outlineData←v33904 = XR←Narrow((* (( (ptr) outline←v15984)+1) ), (* (( (ptr) gf←c90404)+7) ));
SOURCE(38060, 55)
   {
      word pd217;
      pd217 = (* (( (ptr) (* (( (ptr) gf←c90404)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd217 ))))(outline←v15984, pd217) != (* (( (ptr) gf←c90404)+25) ))) {
SOURCE(38109, 6)
         return(trajs←v16028);
         };
      };
SOURCE(38117, 41)
   {
      W2 var←c85828;
      {
         word pd218;
         pd218 = (* (( (ptr) (* (( (ptr) gf←c90404)+212)/* var←c83236 */  ))+20) );
         (void) ( *( (fPt) ((*  (ptr) pd218 ))))((word) (&var←c85828), pd218);
         };
      ptr←v33932 = var←c85828.f1;
      trajs←v16028 = var←c85828.f0;
      };
SOURCE(38160, 180)
   {
      register word list←v34060;
      list←v34060 = (* (( (ptr) outlineData←v33904)+4) );
      lab←L100173: ;
      if ((list←v34060 != 0)) {
         }
      else {
         goto lab←L100170;
         };
SOURCE(38238, 102)
      {
         word pd219;
         pd219 = (* (( (ptr) (* (( (ptr) gf←c90404)+209)/* var←c82276 */  ))+6) );
         if (((word) ( *( (fPt) ((*  (ptr) pd219 ))))((*  (ptr) (list←v34060) ), pd219) == (* (( (ptr) gf←c90404)+24) ))) {
SOURCE(38283, 57)
            {
               W2 var←c85860;
               {
                  word pd220;
                  pd220 = (* (( (ptr) (* (( (ptr) gf←c90404)+212)/* var←c83236 */  ))+21) );
                  (void) ( *( (fPt) ((*  (ptr) pd220 ))))((word) &var←c85860, (*  (ptr) list←v34060 ), trajs←v16028, ptr←v33932, pd220);
                  };
               ptr←v33932 = var←c85860.f1;
               trajs←v16028 = var←c85860.f0;
               };
            };
         };
      list←v34060 = (* (( (ptr) list←v34060)+1) );
      goto lab←L100173;
      lab←L100170: ;
      };
SOURCE(37898, 442)
   return(trajs←v16028);
   }

static word ListHoles←P3000(outline←v16172)
   word outline←v16172;
   {
   register ptr gf←c90436 =  (ptr) &globalframe;
   word holesList←v16216;
   word data←v34188;
   /* ListHoles: */ 
SOURCE(38355, 196)
SOURCE(38355, 196)
   holesList←v16216 = 0;
SOURCE(38434, 40)
   data←v34188 = XR←Narrow((* (( (ptr) outline←v16172)+1) ), (* (( (ptr) gf←c90436)+7) ));
SOURCE(38476, 75)
   {
      word pd221;
      pd221 = (* (( (ptr) (* (( (ptr) gf←c90436)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd221 ))))(outline←v16172, pd221) == (* (( (ptr) gf←c90436)+25) ))) {
SOURCE(38521, 30)
         holesList←v16216 = (* (( (ptr) (* (( (ptr) data←v34188)+4) ))+1) );
         };
      };
SOURCE(38355, 196)
   return(holesList←v16216);
   }

static word HasHoles←P3060(outline←v16360)
   word outline←v16360;
   {
   register ptr gf←c90468 =  (ptr) &globalframe;
   word var←c16404;
   word data←v34232;
   /* HasHoles: */ 
SOURCE(38557, 180)
SOURCE(38557, 180)
   var←c16404 = 0;
SOURCE(38624, 40)
   data←v34232 = XR←Narrow((* (( (ptr) outline←v16360)+1) ), (* (( (ptr) gf←c90468)+7) ));
SOURCE(38666, 71)
   {
      word tc222;
      word pd223;
      pd223 = (* (( (ptr) (* (( (ptr) gf←c90468)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd223 ))))(outline←v16360, pd223) == (* (( (ptr) gf←c90468)+25) ))) {
         tc222 =  (word)  (unsigned) ((* (( (ptr) (* (( (ptr) data←v34232)+4) ))+1) ) != 0);
         }
      else {
         tc222 =  (word)  (unsigned) 0;
         };
      return(tc222);
      };
   }

static word Parts←P3120(outlineD←v16464)
   word outlineD←v16464;
   {
   word partsGen←v16508;
   /* Parts: */ 
SOURCE(38742, 145)
SOURCE(38742, 145)
   partsGen←v16508 = 0;
SOURCE(38838, 49)
   partsGen←v16508 = (word) Parts2←P3240((*  (ptr) outlineD←v16464 ), (* (( (ptr) outlineD←v16464)+1) ));
SOURCE(38742, 145)
   return(partsGen←v16508);
   }

static word PartsList←P3180(sliceD←v16568)
   word sliceD←v16568;
   {
   register ptr gf←c90500 =  (ptr) &globalframe;
   word partsList←v16612;
   word outlineParts←v34276;
   word ptr←v34304 = 0;
   /* PartsList: */ 
SOURCE(38892, 428)
SOURCE(38892, 428)
   partsList←v16612 = 0;
SOURCE(38990, 49)
   outlineParts←v34276 = XR←Narrow((* (( (ptr) sliceD←v16568)+1) ), (* (( (ptr) gf←c90500)+5) ));
SOURCE(39071, 55)
   {
      W2 var←c85924;
      {
         word pd224;
         pd224 = (* (( (ptr) (* (( (ptr) gf←c90500)+212)/* var←c83236 */  ))+15) );
         (void) ( *( (fPt) ((*  (ptr) pd224 ))))((word) (&var←c85924), pd224);
         };
      ptr←v34304 = var←c85924.f1;
      partsList←v16612 = var←c85924.f0;
      };
SOURCE(39128, 192)
   {
      register word list←v34432;
      list←v34432 = (*  (ptr) outlineParts←v34276 );
      lab←L100177: ;
      if ((list←v34432 != 0)) {
         }
      else {
         goto lab←L100174;
         };
SOURCE(39220, 100)
      if (((*  (ptr) list←v34432 ) != 0)) {
SOURCE(39245, 75)
         {
            W2 var←c85956;
            {
               word pd225;
               pd225 = (* (( (ptr) (* (( (ptr) gf←c90500)+212)/* var←c83236 */  ))+16) );
               (void) ( *( (fPt) ((*  (ptr) pd225 ))))((word) &var←c85956, (*  (ptr) list←v34432 ), partsList←v16612, ptr←v34304, pd225)
               ;
               };
            ptr←v34304 = var←c85956.f1;
            partsList←v16612 = var←c85956.f0;
            };
         };
      list←v34432 = (* (( (ptr) list←v34432)+1) );
      goto lab←L100177;
      lab←L100174: ;
      };
SOURCE(38892, 428)
   return(partsList←v16612);
   }

static word Parts2←P3240(outline←v16756, parts←v16784)
   word outline←v16756;
   word parts←v16784;
   {
   register ptr gf←c90532 =  (ptr) &globalframe;
   word partsGen←v16828;
   /* Parts2: */ 
SOURCE(39335, 573)
SOURCE(39335, 573)
   partsGen←v16828 = 0;
SOURCE(39440, 49)
   partsGen←v16828 = XR←NewObject(4, (* (( (ptr) gf←c90532)+17) ));
SOURCE(39491, 417)
   if ((parts←v16784 == 0)) {
SOURCE(39509, 27)
      return(partsGen←v16828);
      }
   else {
SOURCE(39536, 374)
      {
         word outlineParts←v34560;
         word partsList←v34588 = 0;
         word ptr←v34616 = 0;
SOURCE(39538, 42)
         outlineParts←v34560 = XR←Narrow(parts←v16784, (* (( (ptr) gf←c90532)+5) ));
SOURCE(39623, 55)
         {
            W2 var←c86020;
            {
               word pd226;
               pd226 = (* (( (ptr) (* (( (ptr) gf←c90532)+212)/* var←c83236 */  ))+15) );
               (void) ( *( (fPt) ((*  (ptr) pd226 ))))((word) (&var←c86020), pd226);
               };
            ptr←v34616 = var←c86020.f1;
            partsList←v34588 = var←c86020.f0;
            };
SOURCE(39680, 192)
         {
            register word list←v34744;
            list←v34744 = (*  (ptr) outlineParts←v34560 );
            lab←L100181: ;
            if ((list←v34744 != 0)) {
               }
            else {
               goto lab←L100178;
               };
SOURCE(39772, 100)
            if (((*  (ptr) list←v34744 ) != 0)) {
SOURCE(39797, 75)
               {
                  W2 var←c86052;
                  {
                     word pd227;
                     pd227 = (* (( (ptr) (* (( (ptr) gf←c90532)+212)/* var←c83236 */  ))+16) );
                     (void) ( *( (fPt) ((*  (ptr) pd227 ))))((word) &var←c86052, (*  (ptr) list←v34744 ), partsList←v34588, ptr←v34616, pd227)
                     ;
                     };
                  ptr←v34616 = var←c86052.f1;
                  partsList←v34588 = var←c86052.f0;
                  };
               };
            list←v34744 = (* (( (ptr) list←v34744)+1) );
            goto lab←L100181;
            lab←L100178: ;
            };
SOURCE(39883, 25)
         (*  (ptr) partsGen←v16828 ) = partsList←v34588;
         };
      };
SOURCE(39335, 573)
   return(partsGen←v16828);
   }

static word Children←P3300(outline←v16888)
   word outline←v16888;
   {
   register ptr gf←c90564 =  (ptr) &globalframe;
   word children←v16932;
   word data←v34872;
   /* Children: */ 
SOURCE(39917, 180)
SOURCE(39917, 180)
   children←v16932 = 0;
SOURCE(39996, 40)
   data←v34872 = XR←Narrow((* (( (ptr) outline←v16888)+1) ), (* (( (ptr) gf←c90564)+7) ));
SOURCE(40038, 59)
   {
      word var←c86084;
      var←c86084 = XR←NewObject(4, (* (( (ptr) gf←c90564)+19) ));
      (*  (ptr) var←c86084 ) = (* (( (ptr) data←v34872)+4) );
      children←v16932 = var←c86084;
      };
SOURCE(39917, 180)
   return(children←v16932);
   }

static word ChildList←P3360(outline←v16992)
   word outline←v16992;
   {
   register ptr gf←c90596 =  (ptr) &globalframe;
   word childList←v17036;
   word data←v34916;
   /* ChildList: */ 
SOURCE(40103, 147)
SOURCE(40103, 147)
   childList←v17036 = 0;
SOURCE(40183, 40)
   data←v34916 = XR←Narrow((* (( (ptr) outline←v16992)+1) ), (* (( (ptr) gf←c90596)+7) ));
SOURCE(40225, 25)
   childList←v17036 = (* (( (ptr) data←v34916)+4) );
SOURCE(40103, 147)
   return(childList←v17036);
   }

static word WalkChildren←P3420(parent←v17180, level←v17208, walkProc←v17236, classType←v17264)
   word parent←v17180;
   word level←v17208;
   word walkProc←v17236;
   word classType←v17264;
   {
   register ptr gf←c90628 =  (ptr) &globalframe;
   word aborted←v17308;
   /* WalkChildren: */ 
SOURCE(40258, 773)
SOURCE(40258, 773)
   aborted←v17308 = 0;
SOURCE(40408, 623)
   {
      word pd228;
      pd228 = (* (( (ptr) (* (( (ptr) gf←c90628)+207)/* var←c82180 */  ))+62) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd228 ))))(parent←v17180, pd228))) {
SOURCE(40442, 603)
         {
            word outlineData←v34960;
SOURCE(40444, 46)
            outlineData←v34960 = XR←Narrow((* (( (ptr) parent←v17180)+1) ), (* (( (ptr) gf←c90628)+7) ));
SOURCE(40492, 539)
            {
               register word slices←v35004;
               slices←v35004 = (* (( (ptr) outlineData←v34960)+4) );
               lab←L100185: ;
               if ((slices←v35004 != 0)) {
                  }
               else {
                  goto lab←L100182;
                  };
               {
                  word thisType←v35132;
SOURCE(40576, 49)
                  {
                     word pd229;
                     pd229 = (* (( (ptr) (* (( (ptr) gf←c90628)+209)/* var←c82276 */  ))+6) );
                     thisType←v35132 = (word) ( *( (fPt) ((*  (ptr) pd229 ))))((*  (ptr) (slices←v35004) ), pd229);
                     };
SOURCE(40627, 179)
                  {
                     word tc230;
                     word pd232;
                     if ((level←v17208 != 1)) { goto then0231;};
                     pd232 = (* (( (ptr) (* (( (ptr) gf←c90628)+207)/* var←c82180 */  ))+72) );
                     if ((0 != (word) ( *( (fPt) ((*  (ptr) pd232 ))))((*  (ptr) slices←v35004 ), classType←v17264, pd232))) {
                        then0231: ;
                        if ((classType←v17264 == 0)) {
                           tc230 =  (word) 1;
                           }
                        else {
                           tc230 =  (word) (thisType←v35132 == classType←v17264);
                           };
                        }
                     else {
                        tc230 =  (word) 0;
                        };
                     if (tc230) {
SOURCE(40749, 33)
                        aborted←v17308 = (word) ( *( (fPt) ((*  (ptr) walkProc←v17236 ))))((*  (ptr) (slices←v35004) ), walkProc←v17236);
SOURCE(40784, 22)
                        if ((0 != aborted←v17308)) {
SOURCE(40800, 6)
                           return(aborted←v17308);
                           };
                        };
                     };
SOURCE(40811, 220)
                  {
                     word tc233;
                     word pd234;
                     if (((level←v17208 == 2) || (level←v17208 == 1)) ||  ( (level←v17208 == 3) ? (thisType←v35132 != classType←v17264) : 0 ) ) {
                        pd234 = (* (( (ptr) (* (( (ptr) gf←c90628)+207)/* var←c82180 */  ))+62) );
                        tc233 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd234 ))))((*  (ptr) (slices←v35004) ), pd234));
                        }
                     else {
                        tc233 =  (word) 0;
                        };
                     if (tc233) {
SOURCE(40933, 74)
                        {
                           word pd235;
                           pd235 = (* (( (ptr) (* (( (ptr) gf←c90628)+207)/* var←c82180 */  ))+73) );
                           aborted←v17308 = (word) ( *( (fPt) ((*  (ptr) pd235 ))))((*  (ptr) slices←v35004 ), level←v17208, walkProc←v17236, classType←v17264, pd235)
                           ;
                           };
SOURCE(41009, 22)
                        if ((0 != aborted←v17308)) {
SOURCE(41025, 6)
                           return(aborted←v17308);
                           };
                        };
                     };
                  };
               slices←v35004 = (* (( (ptr) slices←v35004)+1) );
               goto lab←L100185;
               lab←L100182: ;
               };
            };
         };
      };
SOURCE(40258, 773)
   return(aborted←v17308);
   }

static word WalkIncludedChildren←P3480(parent←v17368, parts←v17396, level←v17424, walkProc←v17452, classType←v17480)
   word parent←v17368;
   word parts←v17396;
   word level←v17424;
   word walkProc←v17452;
   word classType←v17480;
   {
   register ptr gf←c90660 =  (ptr) &globalframe;
   word aborted←v17524;
   word type←v35176;
   /* WalkIncludedChildren: */ 
SOURCE(41052, 1081)
SOURCE(41052, 1081)
   aborted←v17524 = 0;
SOURCE(41233, 39)
   {
      word pd236;
      pd236 = (* (( (ptr) (* (( (ptr) gf←c90660)+209)/* var←c82276 */  ))+6) );
      type←v35176 = (word) ( *( (fPt) ((*  (ptr) pd236 ))))(parent←v17368, pd236);
      };
SOURCE(41274, 859)
   {
      word pd237;
      pd237 = (* (( (ptr) (* (( (ptr) gf←c90660)+207)/* var←c82180 */  ))+63) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd237 ))))(type←v35176, pd237))) {
SOURCE(41310, 840)
         {
            word outlineParts←v35220;
SOURCE(41312, 42)
            outlineParts←v35220 = XR←Narrow(parts←v17396, (* (( (ptr) gf←c90660)+5) ));
SOURCE(41356, 33)
            if ((outlineParts←v35220 == 0)) {
SOURCE(41383, 6)
               return(aborted←v17524);
               };
SOURCE(41391, 742)
            {
               register word childDList←v35264;
               childDList←v35264 = (*  (ptr) outlineParts←v35220 );
               lab←L100189: ;
               if ((childDList←v35264 != 0)) {
                  }
               else {
                  goto lab←L100186;
                  };
               {
                  word thisChildD←v35392;
SOURCE(41501, 46)
                  thisChildD←v35392 = (*  (ptr) childDList←v35264 );
SOURCE(41549, 584)
                  {
                     word tc238;
                     word pd239;
                     if ((thisChildD←v35392 != 0)) {
                        pd239 = (* (( (ptr) (* (( (ptr) gf←c90660)+209)/* var←c82276 */  ))+27) );
                        tc238 =  (word) (0 == (word) ( *( (fPt) ((*  (ptr) pd239 ))))(thisChildD←v35392, pd239));
                        }
                     else {
                        tc238 =  (word) 0;
                        };
                     if (tc238) {
SOURCE(41618, 520)
                        {
                           word thisType←v35436;
SOURCE(41620, 53)
                           {
/*1*/   word pd240;
/*1*/   pd240 = (* (( (ptr) (* (( (ptr) gf←c90660)+209)/* var←c82276 */  ))+6) );
/*1*/   thisType←v35436 = (word) ( *( (fPt) ((*  (ptr) pd240 ))))((*  (ptr) (thisChildD←v35392) ), pd240);
/*1*/   };
SOURCE(41675, 209)
                           {
/*1*/   word tc241;
/*1*/   word pd243;
/*1*/   word pd244;
/*1*/   if ((level←v17424 != 1)) { goto then0242;};
/*1*/   pd243 = (* (( (ptr) (* (( (ptr) gf←c90660)+207)/* var←c82180 */  ))+72) );
/*1*/   if ((0 != (word) ( *( (fPt) ((*  (ptr) pd243 ))))((*  (ptr) thisChildD←v35392 ), classType←v17480, pd243))) {
/*1*/      then0242: ;
/*1*/      if ((classType←v17480 == 0)) {
/*1*/         tc241 =  (word) 1;
/*1*/         }
/*1*/      else {
/*1*/         pd244 = (* (( (ptr) (* (( (ptr) gf←c90660)+209)/* var←c82276 */  ))+6) );
/*1*/         tc241 =  (word) ((word) ( *( (fPt) ((*  (ptr) pd244 ))))((*  (ptr) (thisChildD←v35392) ), pd244) == classType←v17480);
/*1*/         };
/*1*/      }
/*1*/   else {
/*1*/      tc241 =  (word) 0;
/*1*/      };
/*1*/   if (tc241) {
SOURCE(41829, 31)
/*1*/      aborted←v17524 = (word) ( *( (fPt) ((*  (ptr) walkProc←v17452 ))))(thisChildD←v35392, walkProc←v17452);
SOURCE(41862, 22)
/*1*/      if ((0 != aborted←v17524)) {
SOURCE(41878, 6)
/*1*/         return(aborted←v17524);
/*1*/         };
/*1*/      };
/*1*/   };
SOURCE(41889, 244)
                           {
/*1*/   word tc245;
/*1*/   word pd246;
/*1*/   if (((level←v17424 == 2) || (level←v17424 == 1)) ||  ( (level←v17424 == 3) ? (thisType←v35436 != classType←v17480) : 0 ) ) {
/*1*/      pd246 = (* (( (ptr) (* (( (ptr) gf←c90660)+207)/* var←c82180 */  ))+62) );
/*1*/      tc245 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd246 ))))((*  (ptr) (thisChildD←v35392) ), pd246));
/*1*/      }
/*1*/   else {
/*1*/      tc245 =  (word) 0;
/*1*/      };
/*1*/   if (tc245) {
SOURCE(42015, 94)
/*1*/      aborted←v17524 = (word) WalkIncludedChildren←P3480((*  (ptr) thisChildD←v35392 ), (* (( (ptr) thisChildD←v35392)+1) ), level←v17424, walkProc←v17452, classType←v17480)
/*1*/      ;
SOURCE(42111, 22)
/*1*/      if ((0 != aborted←v17524)) {
SOURCE(42127, 6)
/*1*/         return(aborted←v17524);
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        };
                     };
                  };
               childDList←v35264 = (* (( (ptr) childDList←v35264)+1) );
               goto lab←L100189;
               lab←L100186: ;
               };
            };
         };
      };
SOURCE(41052, 1081)
   return(aborted←v17524);
   }

static word WalkIncludedParts←P3540(parent←v17584, parts←v17612, level←v17640, walkProc←v17668, classType←v17696)
   word parent←v17584;
   word parts←v17612;
   word level←v17640;
   word walkProc←v17668;
   word classType←v17696;
   {
   register ptr gf←c90692 =  (ptr) &globalframe;
   word aborted←v17740;
   word type←v35480;
   /* WalkIncludedParts: */ 
SOURCE(42157, 1775)
SOURCE(42157, 1775)
   aborted←v17740 = 0;
SOURCE(42323, 39)
   {
      word pd247;
      pd247 = (* (( (ptr) (* (( (ptr) gf←c90692)+209)/* var←c82276 */  ))+6) );
      type←v35480 = (word) ( *( (fPt) ((*  (ptr) pd247 ))))(parent←v17584, pd247);
      };
SOURCE(42364, 1568)
   {
      word pd248;
      pd248 = (* (( (ptr) (* (( (ptr) gf←c90692)+207)/* var←c82180 */  ))+63) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd248 ))))(type←v35480, pd248))) {
SOURCE(42402, 1530)
         if ((parts←v17612 == 0)) {
SOURCE(42422, 659)
            {
               word outlineData←v35524;
SOURCE(42424, 46)
               outlineData←v35524 = XR←Narrow((* (( (ptr) parent←v17584)+1) ), (* (( (ptr) gf←c90692)+7) ));
SOURCE(42472, 595)
               {
                  register word childList←v35568;
                  childList←v35568 = (* (( (ptr) outlineData←v35524)+4) );
                  lab←L100193: ;
                  if ((childList←v35568 != 0)) {
                     }
                  else {
                     goto lab←L100190;
                     };
                  {
                     word thisChild←v35696;
                     word thisType←v35724;
SOURCE(42565, 34)
                     thisChild←v35696 = (*  (ptr) childList←v35568 );
SOURCE(42601, 46)
                     {
                        word pd249;
                        pd249 = (* (( (ptr) (* (( (ptr) gf←c90692)+209)/* var←c82276 */  ))+6) );
                        thisType←v35724 = (word) ( *( (fPt) ((*  (ptr) pd249 ))))(thisChild←v35696, pd249);
                        };
SOURCE(42649, 199)
                     {
                        word tc250;
                        word pd252;
                        word pd253;
                        if ((level←v17640 != 1)) { goto then0251;};
                        pd252 = (* (( (ptr) (* (( (ptr) gf←c90692)+207)/* var←c82180 */  ))+72) );
                        if ((0 != (word) ( *( (fPt) ((*  (ptr) pd252 ))))(thisChild←v35696, classType←v17696, pd252))) {
                           then0251: ;
                           if ((classType←v17696 == 0)) {
/*1*/   tc250 =  (word) 1;
/*1*/   }
                           else {
/*1*/   pd253 = (* (( (ptr) (* (( (ptr) gf←c90692)+209)/* var←c82276 */  ))+6) );
/*1*/   tc250 =  (word) ((word) ( *( (fPt) ((*  (ptr) pd253 ))))(thisChild←v35696, pd253) == classType←v17696);
/*1*/   };
                           }
                        else {
                           tc250 =  (word) 0;
                           };
                        if (tc250) {
SOURCE(42789, 35)
                           aborted←v17740 = (word) ( *( (fPt) ((*  (ptr) walkProc←v17668 ))))(thisChild←v35696, 0, walkProc←v17668);
SOURCE(42826, 22)
                           if ((0 != aborted←v17740)) {
SOURCE(42842, 6)
/*1*/   return(aborted←v17740);
/*1*/   };
                           };
                        };
SOURCE(42853, 214)
                     {
                        word tc254;
                        word pd255;
                        if (((level←v17640 == 2) || (level←v17640 == 1)) ||  ( (level←v17640 == 3) ? (thisType←v35724 != classType←v17696) : 0 ) ) {
                           pd255 = (* (( (ptr) (* (( (ptr) gf←c90692)+207)/* var←c82180 */  ))+62) );
                           tc254 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd255 ))))(thisChild←v35696, pd255));
                           }
                        else {
                           tc254 =  (word) 0;
                           };
                        if (tc254) {
SOURCE(42972, 71)
                           aborted←v17740 = (word) WalkIncludedParts←P3540(thisChild←v35696, 0, level←v17640, walkProc←v17668, classType←v17696);
SOURCE(43045, 22)
                           if ((0 != aborted←v17740)) {
SOURCE(43061, 6)
/*1*/   return(aborted←v17740);
/*1*/   };
                           };
                        };
                     };
                  childList←v35568 = (* (( (ptr) childList←v35568)+1) );
                  goto lab←L100193;
                  lab←L100190: ;
                  };
               };
            }
         else {
SOURCE(43088, 861)
            {
               word outlineParts←v35768;
SOURCE(43090, 42)
               outlineParts←v35768 = XR←Narrow(parts←v17612, (* (( (ptr) gf←c90692)+5) ));
SOURCE(43134, 33)
               if ((outlineParts←v35768 == 0)) {
SOURCE(43161, 6)
                  return(aborted←v17740);
                  };
SOURCE(43169, 763)
               {
                  register word childDList←v35812;
                  childDList←v35812 = (*  (ptr) outlineParts←v35768 );
                  lab←L100197: ;
                  if ((childDList←v35812 != 0)) {
                     }
                  else {
                     goto lab←L100194;
                     };
                  {
                     word thisChildD←v35940;
SOURCE(43279, 46)
                     thisChildD←v35940 = (*  (ptr) childDList←v35812 );
SOURCE(43327, 605)
                     {
                        word tc256;
                        word pd257;
                        if ((thisChildD←v35940 != 0)) {
                           pd257 = (* (( (ptr) (* (( (ptr) gf←c90692)+209)/* var←c82276 */  ))+27) );
                           tc256 =  (word) (0 == (word) ( *( (fPt) ((*  (ptr) pd257 ))))(thisChildD←v35940, pd257));
                           }
                        else {
                           tc256 =  (word) 0;
                           };
                        if (tc256) {
SOURCE(43396, 541)
                           {
/*1*/   word thisType←v35984;
SOURCE(43398, 53)
/*1*/   {
/*1*/      word pd258;
/*1*/      pd258 = (* (( (ptr) (* (( (ptr) gf←c90692)+209)/* var←c82276 */  ))+6) );
/*1*/      thisType←v35984 = (word) ( *( (fPt) ((*  (ptr) pd258 ))))((*  (ptr) (thisChildD←v35940) ), pd258);
/*1*/      };
SOURCE(43453, 233)
/*1*/   {
/*1*/      word tc259;
/*1*/      word pd261;
/*1*/      word pd262;
/*1*/      if ((level←v17640 != 1)) { goto then0260;};
/*1*/      pd261 = (* (( (ptr) (* (( (ptr) gf←c90692)+207)/* var←c82180 */  ))+72) );
/*1*/      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd261 ))))((*  (ptr) thisChildD←v35940 ), classType←v17696, pd261))) {
/*1*/         then0260: ;
/*1*/         if ((classType←v17696 == 0)) {
/*1*/            tc259 =  (word) 1;
/*1*/            }
/*1*/         else {
/*1*/            pd262 = (* (( (ptr) (* (( (ptr) gf←c90692)+209)/* var←c82276 */  ))+6) );
/*1*/            tc259 =  (word) ((word) ( *( (fPt) ((*  (ptr) pd262 ))))((*  (ptr) (thisChildD←v35940) ), pd262) == classType←v17696);
/*1*/            };
/*1*/         }
/*1*/      else {
/*1*/         tc259 =  (word) 0;
/*1*/         };
/*1*/      if (tc259) {
SOURCE(43607, 55)
/*1*/         aborted←v17740 = (word) ( *( (fPt) ((*  (ptr) walkProc←v17668 ))))((*  (ptr) thisChildD←v35940 ), (* (( (ptr) thisChildD←v35940)+1)
/*1*/             ), walkProc←v17668);
SOURCE(43664, 22)
/*1*/         if ((0 != aborted←v17740)) {
SOURCE(43680, 6)
/*1*/            return(aborted←v17740);
/*1*/            };
/*1*/         };
/*1*/      };
SOURCE(43691, 241)
/*1*/   {
/*1*/      word tc263;
/*1*/      word pd264;
/*1*/      if (((level←v17640 == 2) || (level←v17640 == 1)) ||  ( (level←v17640 == 3) ? (thisType←v35984 != classType←v17696) : 0 ) ) {
/*1*/         pd264 = (* (( (ptr) (* (( (ptr) gf←c90692)+207)/* var←c82180 */  ))+62) );
/*1*/         tc263 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd264 ))))((*  (ptr) (thisChildD←v35940) ), pd264));
/*1*/         }
/*1*/      else {
/*1*/         tc263 =  (word) 0;
/*1*/         };
/*1*/      if (tc263) {
SOURCE(43817, 91)
/*1*/         aborted←v17740 = (word) WalkIncludedParts←P3540((*  (ptr) thisChildD←v35940 ), (* (( (ptr) thisChildD←v35940)+1) ), level←v17640, walkProc←v17668, classType←v17696)
/*1*/         ;
SOURCE(43910, 22)
/*1*/         if ((0 != aborted←v17740)) {
SOURCE(43926, 6)
/*1*/            return(aborted←v17740);
/*1*/            };
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        };
                     };
                  childDList←v35812 = (* (( (ptr) childDList←v35812)+1) );
                  goto lab←L100197;
                  lab←L100194: ;
                  };
               };
            };
         };
      };
SOURCE(42157, 1775)
   return(aborted←v17740);
   }

static word ListChildren←P3600(parent←v17800, level←v17828, classType←v17856)
   word parent←v17800;
   word level←v17828;
   word classType←v17856;
   {
   W8 var←c90724;
   register ptr gf←c90756 =  (ptr) &globalframe;
   /* declaration of sliceList←v17900 skipped */ 
   /* declaration of var←c86116 skipped */ 
   /* declaration of ptr←v36028 skipped */ 
   /* ListChildren: */ 
SOURCE(43959, 380)
   {
      word tmpAddr265;
      tmpAddr265 = (word) (( (ptr) &var←c90724)+5)/* var←c86116 */ ;
      (*  (ptr) tmpAddr265 ) = ( ((word)  (fPt) DoAppendSlice←P9456) );
      (* (( (ptr) tmpAddr265) + 1) ) = 1;
      };
SOURCE(43959, 380)
   var←c90724.f4/* sliceList←v17900 */  = 0;
SOURCE(44081, 5)
   var←c90724.f7/* ptr←v36028 */  = 0;
SOURCE(44234, 45)
   {
      W2 var←c86148;
      {
         word pd266;
         pd266 = (* (( (ptr) (* (( (ptr) gf←c90756)+212)/* var←c83236 */  ))+20) );
         (void) ( *( (fPt) ((*  (ptr) pd266 ))))((word) (&var←c86148), pd266);
         };
      var←c90724.f7/* ptr←v36028 */  = var←c86148.f1;
      var←c90724.f4/* sliceList←v17900 */  = var←c86148.f0;
      };
SOURCE(44281, 58)
   {
      word var←c86180;
      var←c86180 = (word) WalkChildren←P3420(parent←v17800, level←v17828, (word) (( (bPt) &var←c90724)+20)/* var←c86116 */ , classType←v17856)
      ;
      };
SOURCE(43959, 380)
   return(var←c90724.f4/* sliceList←v17900 */ );
   }

static word DoAppendSlice←P9456(slice←v36216, formal←c90820)
   word slice←v36216;
   word formal←c90820;
   {
   register ptr gf←c90788 =  (ptr) &globalframe;
   word done←v36260;
   formal←c90820 = (formal←c90820 - 20);
   /* DoAppendSlice: */ 
SOURCE(44101, 128)
SOURCE(44101, 128)
   done←v36260 = 0;
SOURCE(44169, 60)
   {
      W2 var←c86212;
      {
         word pd267;
         pd267 = (* (( (ptr) (* (( (ptr) gf←c90788)+212)/* var←c83236 */  ))+21) );
         (void) ( *( (fPt) ((*  (ptr) pd267 ))))((word) &var←c86212, slice←v36216, (* (( (ptr) formal←c90820)+4) ), (* (( (ptr) formal←c90820)+7)
             ), pd267);
         };
      (* (( (ptr) formal←c90820)+7) ) = var←c86212.f1;
      (* (( (ptr) formal←c90820)+4) ) = var←c86212.f0;
      };
SOURCE(44101, 128)
   return(done←v36260);
   }

static word ListIncludedChildren←P3660(parent←v18044, parts←v18072, level←v18100, classType←v18128)
   word parent←v18044;
   word parts←v18072;
   word level←v18100;
   word classType←v18128;
   {
   W8 var←c90852;
   register ptr gf←c90884 =  (ptr) &globalframe;
   /* declaration of selectedList←v18172 skipped */ 
   /* declaration of var←c86244 skipped */ 
   /* declaration of ptr←v36288 skipped */ 
   /* ListIncludedChildren: */ 
SOURCE(44345, 486)
   {
      word tmpAddr268;
      tmpAddr268 = (word) (( (ptr) &var←c90852)+5)/* var←c86244 */ ;
      (*  (ptr) tmpAddr268 ) = ( ((word)  (fPt) DoAppendSlice←P9516) );
      (* (( (ptr) tmpAddr268) + 1) ) = 1;
      };
SOURCE(44345, 486)
   var←c90852.f4/* selectedList←v18172 */  = 0;
SOURCE(44507, 5)
   var←c90852.f7/* ptr←v36288 */  = 0;
SOURCE(44698, 58)
   {
      W2 var←c86276;
      {
         word pd269;
         pd269 = (* (( (ptr) (* (( (ptr) gf←c90884)+212)/* var←c83236 */  ))+15) );
         (void) ( *( (fPt) ((*  (ptr) pd269 ))))((word) (&var←c86276), pd269);
         };
      var←c90852.f7/* ptr←v36288 */  = var←c86276.f1;
      var←c90852.f4/* selectedList←v18172 */  = var←c86276.f0;
      };
SOURCE(44758, 73)
   {
      word var←c86308;
      var←c86308 = (word) WalkIncludedChildren←P3480(parent←v18044, parts←v18072, level←v18100, (word) (( (bPt) &var←c90852)+20)
         /* var←c86244 */ , classType←v18128);
      };
SOURCE(44345, 486)
   return(var←c90852.f4/* selectedList←v18172 */ );
   }

static word DoAppendSlice←P9516(childD←v36476, formal←c90948)
   word childD←v36476;
   word formal←c90948;
   {
   register ptr gf←c90916 =  (ptr) &globalframe;
   word done←v36520;
   formal←c90948 = (formal←c90948 - 20);
   /* DoAppendSlice: */ 
SOURCE(44537, 156)
SOURCE(44537, 156)
   done←v36520 = 0;
SOURCE(44616, 77)
   {
      W2 var←c86340;
      {
         word pd270;
         pd270 = (* (( (ptr) (* (( (ptr) gf←c90916)+212)/* var←c83236 */  ))+16) );
         (void) ( *( (fPt) ((*  (ptr) pd270 ))))((word) &var←c86340, childD←v36476, (* (( (ptr) formal←c90948)+4) ), (* (( (ptr) formal←c90948)+7)
             ), pd270);
         };
      (* (( (ptr) formal←c90948)+7) ) = var←c86340.f1;
      (* (( (ptr) formal←c90948)+4) ) = var←c86340.f0;
      };
SOURCE(44537, 156)
   return(done←v36520);
   }

static word FirstChild←P3720(parent←v18316, level←v18344, classType←v18372)
   word parent←v18316;
   word level←v18344;
   word classType←v18372;
   {
   W7 var←c90980;
   /* declaration of firstChild←v18416 skipped */ 
   /* declaration of var←c86372 skipped */ 
   /* FirstChild: */ 
SOURCE(44837, 282)
   {
      word tmpAddr271;
      tmpAddr271 = (word) (( (ptr) &var←c90980)+5)/* var←c86372 */ ;
      (*  (ptr) tmpAddr271 ) = ( ((word)  (fPt) StopAtFirstSlice←P9576) );
      (* (( (ptr) tmpAddr271) + 1) ) = 1;
      };
SOURCE(44837, 282)
   var←c90980.f4/* firstChild←v18416 */  = 0;
SOURCE(45058, 61)
   {
      word var←c86404;
      var←c86404 = (word) WalkChildren←P3420(parent←v18316, level←v18344, (word) (( (bPt) &var←c90980)+20)/* var←c86372 */ , classType←v18372)
      ;
      };
SOURCE(44837, 282)
   return(var←c90980.f4/* firstChild←v18416 */ );
   }

static word StopAtFirstSlice←P9576(slice←v36624, formal←c91012)
   word slice←v36624;
   word formal←c91012;
   {
   word done←v36668;
   formal←c91012 = (formal←c91012 - 20);
   /* StopAtFirstSlice: */ 
SOURCE(44950, 103)
SOURCE(44950, 103)
   done←v36668 = 0;
SOURCE(45021, 18)
   (* (( (ptr) formal←c91012)+4) ) = slice←v36624;
SOURCE(45041, 12)
   return(1);
   }

static word FirstIncludedChild←P3780(parent←v18476, parts←v18504, level←v18532, classType←v18560)
   word parent←v18476;
   word parts←v18504;
   word level←v18532;
   word classType←v18560;
   {
   W7 var←c91044;
   /* declaration of childD←v18604 skipped */ 
   /* declaration of var←c86436 skipped */ 
   /* FirstIncludedChild: */ 
SOURCE(45125, 338)
   {
      word tmpAddr272;
      tmpAddr272 = (word) (( (ptr) &var←c91044)+5)/* var←c86436 */ ;
      (*  (ptr) tmpAddr272 ) = ( ((word)  (fPt) StopAtFirstSlice←P9636) );
      (* (( (ptr) tmpAddr272) + 1) ) = 1;
      };
SOURCE(45125, 338)
   var←c91044.f4/* childD←v18604 */  = 0;
SOURCE(45387, 76)
   {
      word var←c86468;
      var←c86468 = (word) WalkIncludedChildren←P3480(parent←v18476, parts←v18504, level←v18532, (word) (( (bPt) &var←c91044)+20)
         /* var←c86436 */ , classType←v18560);
      };
SOURCE(45125, 338)
   return(var←c91044.f4/* childD←v18604 */ );
   }

static word StopAtFirstSlice←P9636(sliceD←v36772, formal←c91076)
   word sliceD←v36772;
   word formal←c91076;
   {
   word done←v36816;
   formal←c91076 = (formal←c91076 - 20);
   /* StopAtFirstSlice: */ 
SOURCE(45271, 111)
SOURCE(45271, 111)
   done←v36816 = 0;
SOURCE(45353, 15)
   (* (( (ptr) formal←c91076)+4) ) = sliceD←v36772;
SOURCE(45370, 12)
   return(1);
   }

static void TallyChildren←P3840(formal←c0798, parent←v18664, tallyProc←v18692)
   word formal←c0798;
   word parent←v18664;
   word tallyProc←v18692;
   {
   register ptr gf←c91108 =  (ptr) &globalframe;
   word tallyD←v18736;
   word aborted←v18764;
   word visitChildren←v36844 = 0;
   word keep←v36872 = 0;
   word done←v36900 = 0;
   word keepFound←v36928 = 0;
   /* TallyChildren: */ 
SOURCE(45469, 1017)
SOURCE(45469, 1017)
   tallyD←v18736 = 0;
SOURCE(45469, 1017)
   aborted←v18764 = 0;
SOURCE(45652, 47)
   {
      W3 var←c86500;
      (void) ( *( (fPt) ((*  (ptr) tallyProc←v18692 ))))((word) &var←c86500, parent←v18664, tallyProc←v18692);
      done←v36900 = var←c86500.f2;
      keep←v36872 = var←c86500.f1;
      visitChildren←v36844 = var←c86500.f0;
      };
SOURCE(45701, 785)
   {
      word tc273;
      word pd274;
      pd274 = (* (( (ptr) (* (( (ptr) gf←c91108)+207)/* var←c82180 */  ))+62) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd274 ))))(parent←v18664, pd274))) {
         tc273 =  (word) (0 != visitChildren←v36844);
         }
      else {
         tc273 =  (word) 0;
         };
      if (tc273) {
SOURCE(45753, 629)
         {
            word outlineData←v36972;
            word ptr←v37000 = 0;
            word newParts←v37028;
SOURCE(45755, 46)
            outlineData←v36972 = XR←Narrow((* (( (ptr) parent←v18664)+1) ), (* (( (ptr) gf←c91108)+7) ));
SOURCE(45833, 45)
            newParts←v37028 = XR←NewObject(4, (* (( (ptr) gf←c91108)+5) ));
SOURCE(45880, 66)
            {
               W2 var←c86564;
               {
                  word pd275;
                  pd275 = (* (( (ptr) (* (( (ptr) gf←c91108)+212)/* var←c83236 */  ))+15) );
                  (void) ( *( (fPt) ((*  (ptr) pd275 ))))((word) (&var←c86564), pd275);
                  };
               ptr←v37000 = var←c86564.f1;
               (*  (ptr) newParts←v37028 ) = var←c86564.f0;
               };
SOURCE(45948, 331)
            {
               register word list←v37156;
               list←v37156 = (* (( (ptr) outlineData←v36972)+4) );
               lab←L100202: ;
               if ((list←v37156 != 0)) {
                  }
               else {
                  goto lab←L100199;
                  };
               {
                  word thisD←v37284 = 0;
SOURCE(46050, 135)
                  if ((0 == aborted←v18764)) {
SOURCE(46072, 55)
                     {
                        W2 var←c86596;
                        (void) TallyChildren←P3840((word) &var←c86596, (*  (ptr) list←v37156 ), tallyProc←v18692);
                        aborted←v18764 = var←c86596.f1;
                        thisD←v37284 = var←c86596.f0;
                        };
SOURCE(46129, 36)
                     if ((thisD←v37284 != 0)) {
SOURCE(46149, 16)
                        keepFound←v36928 = 1;
                        };
                     }
                  else {
SOURCE(46174, 11)
                     thisD←v37284 = 0;
                     };
SOURCE(46187, 92)
                  {
                     W2 var←c86628;
                     {
                        word pd276;
                        pd276 = (* (( (ptr) (* (( (ptr) gf←c91108)+212)/* var←c83236 */  ))+16) );
                        (void) ( *( (fPt) ((*  (ptr) pd276 ))))((word) &var←c86628, thisD←v37284, (*  (ptr) newParts←v37028 ), ptr←v37000, pd276)
                        ;
                        };
                     ptr←v37000 = var←c86628.f1;
                     (*  (ptr) newParts←v37028 ) = var←c86628.f0;
                     };
                  };
               list←v37156 = (* (( (ptr) list←v37156)+1) );
               goto lab←L100202;
               lab←L100199: ;
               };
SOURCE(46290, 90)
            if ((0 != keepFound←v36928)) {
SOURCE(46308, 60)
               {
                  word pd277;
                  pd277 = (* (( (ptr) (* (( (ptr) gf←c91108)+208)/* var←c82212 */  ))+8) );
                  tallyD←v18736 = (word) ( *( (fPt) ((*  (ptr) pd277 ))))(parent←v18664, newParts←v37028, pd277);
                  };
               }
            else {
SOURCE(46368, 12)
               tallyD←v18736 = 0;
               };
            };
         }
      else {
SOURCE(46391, 79)
         if ((0 != keep←v36872)) {
SOURCE(46404, 54)
            {
               word pd278;
               pd278 = (* (( (ptr) (* (( (ptr) gf←c91108)+209)/* var←c82276 */  ))+29) );
               tallyD←v18736 = (word) ( *( (fPt) ((*  (ptr) pd278 ))))(parent←v18664, 0, 6, pd278);
               };
            }
         else {
SOURCE(46458, 12)
            tallyD←v18736 = 0;
            };
SOURCE(46472, 14)
         aborted←v18764 = done←v36900;
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0798 ) = tallyD←v18736;
   (* (( (ptr) formal←c0798)+1) ) = aborted←v18764;
   return;
   }

static void TallyIncludedChildren←P3900(formal←c0822, parent←v18824, parts←v18852, tallyProc←v18880)
   word formal←c0822;
   word parent←v18824;
   word parts←v18852;
   word tallyProc←v18880;
   {
   register ptr gf←c91140 =  (ptr) &globalframe;
   word tallyD←v18924;
   word aborted←v18952;
   word visitChildren←v37328 = 0;
   word done←v37356 = 0;
   word keepFound←v37384 = 0;
   word keepD←v37412 = 0;
   word parentD←v37440;
   /* TallyIncludedChildren: */ 
SOURCE(46494, 1152)
SOURCE(46494, 1152)
   tallyD←v18924 = 0;
SOURCE(46494, 1152)
   aborted←v18952 = 0;
SOURCE(46732, 69)
   {
      word pd279;
      pd279 = (* (( (ptr) (* (( (ptr) gf←c91140)+208)/* var←c82212 */  ))+8) );
      parentD←v37440 = (word) ( *( (fPt) ((*  (ptr) pd279 ))))(parent←v18824, parts←v18852, pd279);
      };
SOURCE(46803, 49)
   {
      W3 var←c86660;
      (void) ( *( (fPt) ((*  (ptr) tallyProc←v18880 ))))((word) &var←c86660, parentD←v37440, tallyProc←v18880);
      done←v37356 = var←c86660.f2;
      keepD←v37412 = var←c86660.f1;
      visitChildren←v37328 = var←c86660.f0;
      };
SOURCE(46854, 792)
   {
      word tc280;
      word pd281;
      pd281 = (* (( (ptr) (* (( (ptr) gf←c91140)+207)/* var←c82180 */  ))+62) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd281 ))))(parent←v18824, pd281))) {
         tc280 =  (word) (0 != visitChildren←v37328);
         }
      else {
         tc280 =  (word) 0;
         };
      if (tc280) {
SOURCE(46906, 701)
         {
            word outlineParts←v37484;
            word ptr←v37512 = 0;
            word newParts←v37540;
SOURCE(46908, 42)
            outlineParts←v37484 = XR←Narrow(parts←v18852, (* (( (ptr) gf←c91140)+5) ));
SOURCE(46982, 45)
            newParts←v37540 = XR←NewObject(4, (* (( (ptr) gf←c91140)+5) ));
SOURCE(47029, 66)
            {
               W2 var←c86724;
               {
                  word pd282;
                  pd282 = (* (( (ptr) (* (( (ptr) gf←c91140)+212)/* var←c83236 */  ))+15) );
                  (void) ( *( (fPt) ((*  (ptr) pd282 ))))((word) (&var←c86724), pd282);
                  };
               ptr←v37512 = var←c86724.f1;
               (*  (ptr) newParts←v37540 ) = var←c86724.f0;
               };
SOURCE(47097, 407)
            {
               register word list←v37668;
               list←v37668 = (*  (ptr) outlineParts←v37484 );
               lab←L100207: ;
               if ((list←v37668 != 0)) {
                  }
               else {
                  goto lab←L100204;
                  };
               {
                  word thisD←v37796 = 0;
SOURCE(47213, 197)
                  if ((0 == aborted←v18952)) {
SOURCE(47235, 152)
                     if (((*  (ptr) list←v37668 ) != 0)) {
SOURCE(47262, 87)
                        {
                           W2 var←c86756;
                           (void) TallyIncludedChildren←P3900((word) &var←c86756, (*  (ptr) (*  (ptr) list←v37668 ) ), (* (( (ptr) (*  (ptr) list←v37668 ))+1)
/*1*/    ), tallyProc←v18880);
                           aborted←v18952 = var←c86756.f1;
                           thisD←v37796 = var←c86756.f0;
                           };
SOURCE(47351, 36)
                        if ((thisD←v37796 != 0)) {
SOURCE(47371, 16)
                           keepFound←v37384 = 1;
                           };
                        };
                     }
                  else {
SOURCE(47399, 11)
                     thisD←v37796 = 0;
                     };
SOURCE(47412, 92)
                  {
                     W2 var←c86788;
                     {
                        word pd283;
                        pd283 = (* (( (ptr) (* (( (ptr) gf←c91140)+212)/* var←c83236 */  ))+16) );
                        (void) ( *( (fPt) ((*  (ptr) pd283 ))))((word) &var←c86788, thisD←v37796, (*  (ptr) newParts←v37540 ), ptr←v37512, pd283)
                        ;
                        };
                     ptr←v37512 = var←c86788.f1;
                     (*  (ptr) newParts←v37540 ) = var←c86788.f0;
                     };
                  };
               list←v37668 = (* (( (ptr) list←v37668)+1) );
               goto lab←L100207;
               lab←L100204: ;
               };
SOURCE(47515, 90)
            if ((0 != keepFound←v37384)) {
SOURCE(47533, 60)
               {
                  word pd284;
                  pd284 = (* (( (ptr) (* (( (ptr) gf←c91140)+208)/* var←c82212 */  ))+8) );
                  tallyD←v18924 = (word) ( *( (fPt) ((*  (ptr) pd284 ))))(parent←v18824, newParts←v37540, pd284);
                  };
               }
            else {
SOURCE(47593, 12)
               tallyD←v18924 = 0;
               };
            };
         }
      else {
SOURCE(47616, 14)
         tallyD←v18924 = keepD←v37412;
SOURCE(47632, 14)
         aborted←v18952 = done←v37356;
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0822 ) = tallyD←v18924;
   (* (( (ptr) formal←c0822)+1) ) = aborted←v18952;
   return;
   }

static word IsParent←P3960(slice←v19012)
   word slice←v19012;
   {
   register ptr gf←c91172 =  (ptr) &globalframe;
   word var←c19056;
   /* IsParent: */ 
SOURCE(47655, 122)
SOURCE(47711, 66)
   {
      word tc285;
      if (((*  (ptr) (*  (ptr) slice←v19012 ) ) == (* (( (ptr) gf←c91172)+25) ))) {
         tc285 =  (word)  (unsigned) 1;
         }
      else {
         tc285 =  (word)  (unsigned) ((*  (ptr) (*  (ptr) slice←v19012 ) ) == (* (( (ptr) gf←c91172)+22) ));
         };
      return(tc285);
      };
   }

static word IsParentType←P4020(classType←v19116)
   word classType←v19116;
   {
   register ptr gf←c91204 =  (ptr) &globalframe;
   word var←c19160;
   /* IsParentType: */ 
SOURCE(47783, 115)
SOURCE(47846, 52)
   {
      word tc286;
      if ((classType←v19116 == (* (( (ptr) gf←c91204)+25) ))) {
         tc286 =  (word)  (unsigned) 1;
         }
      else {
         tc286 =  (word)  (unsigned) (classType←v19116 == (* (( (ptr) gf←c91204)+22) ));
         };
      return(tc286);
      };
   }

static word GetParent←P4080(child←v19220)
   word child←v19220;
   {
   word parent←v19264;
   /* GetParent: */ 
SOURCE(47904, 86)
SOURCE(47904, 86)
   parent←v19264 = 0;
SOURCE(47970, 20)
   return((* (( (ptr) child←v19220)+2) ));
   }

static word GetTopLevelAncestor←P4140(slice←v19324)
   word slice←v19324;
   {
   register ptr gf←c91236 =  (ptr) &globalframe;
   word ancestor←v19368;
   /* GetTopLevelAncestor: */ 
SOURCE(47996, 173)
SOURCE(47996, 173)
   ancestor←v19368 = 0;
SOURCE(48074, 16)
   ancestor←v19368 = slice←v19324;
SOURCE(48092, 77)
   lab←L100210: ;
   {
      word pd287;
      pd287 = (* (( (ptr) (* (( (ptr) gf←c91236)+217)/* var←c85028 */  ))+39) );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd287 ))))(ancestor←v19368, pd287))) {
         }
      else {
         goto lab←L100208;
         };
      };
SOURCE(48130, 39)
   {
      word pd288;
      pd288 = (* (( (ptr) (* (( (ptr) gf←c91236)+207)/* var←c82180 */  ))+64) );
      ancestor←v19368 = (word) ( *( (fPt) ((*  (ptr) pd288 ))))(ancestor←v19368, pd288);
      };
   goto lab←L100210;
   lab←L100208: ;
SOURCE(47996, 173)
   return(ancestor←v19368);
   }

static word IsLeafOfClass←P4200(slice←v19428, classType←v19456)
   word slice←v19428;
   word classType←v19456;
   {
   W6 var←c91268;
   register ptr gf←c91300 =  (ptr) &globalframe;
   word var←c19500;
   /* declaration of var←c86820 skipped */ 
   /* IsLeafOfClass: */ 
SOURCE(48184, 486)
   {
      word tmpAddr289;
      tmpAddr289 = (word) (( (ptr) &var←c91268)+4)/* var←c86820 */ ;
      (*  (ptr) tmpAddr289 ) = ( ((word)  (fPt) NoteSameClassChild←P9984) );
      (* (( (ptr) tmpAddr289) + 1) ) = 1;
      };
SOURCE(48357, 50)
   if ((classType←v19456 == 0)) {
SOURCE(48379, 28)
      return( (unsigned) (0 == (word) IsParent←P3960(slice←v19428)));
      };
SOURCE(48409, 106)
   if ((classType←v19456 == (* (( (ptr) gf←c91300)+22) ))) {
SOURCE(48438, 77)
      {
         word pd290;
         pd290 = (* (( (ptr) (* (( (ptr) gf←c91300)+207)/* var←c82180 */  ))+73) );
         return( (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd290 ))))(slice←v19428, 0, (word) (( (bPt) &var←c91268)+16)/* var←c86820 */ , (* (
               ( (ptr) gf←c91300)+22) ), pd290)));
         };
      };
SOURCE(48517, 106)
   if ((classType←v19456 == (* (( (ptr) gf←c91300)+25) ))) {
SOURCE(48546, 77)
      {
         word pd291;
         pd291 = (* (( (ptr) (* (( (ptr) gf←c91300)+207)/* var←c82180 */  ))+73) );
         return( (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd291 ))))(slice←v19428, 0, (word) (( (bPt) &var←c91268)+16)/* var←c86820 */ , (* (
               ( (ptr) gf←c91300)+25) ), pd291)));
         };
      };
SOURCE(48625, 45)
   {
      word pd292;
      pd292 = (* (( (ptr) (* (( (ptr) gf←c91300)+209)/* var←c82276 */  ))+6) );
      return( (unsigned) ((word) ( *( (fPt) ((*  (ptr) pd292 ))))(slice←v19428, pd292) == classType←v19456));
      };
   }

static word NoteSameClassChild←P9984(slice←v37916, formal←c91332)
   word slice←v37916;
   word formal←c91332;
   {
   word done←v37960;
   formal←c91332 = (formal←c91332 - 16);
   /* NoteSameClassChild: */ 
SOURCE(48268, 84)
SOURCE(48268, 84)
   done←v37960 = 0;
SOURCE(48341, 11)
   done←v37960 = 1;
SOURCE(48268, 84)
   return(done←v37960);
   }

static word CreateCluster←P4260(frozen←v19560)
   word frozen←v19560;
   {
   register ptr gf←c91364 =  (ptr) &globalframe;
   word parent←v19604;
   word data←v37988;
   /* CreateCluster: */ 
SOURCE(48676, 500)
SOURCE(48676, 500)
   parent←v19604 = 0;
SOURCE(48754, 144)
   {
      word var←c86980;
      word var←c87044;
      {
         word var←c87012;
         var←c87012 = XR←NewObject(4, (* (( (ptr) gf←c91364)+8) ));
         (*  (ptr) var←c87012 ) = frozen←v19560;
         var←c86980 = var←c87012;
         };
      var←c87044 = XR←NewObject(36, (* (( (ptr) gf←c91364)+7) ));
      (*  (ptr) var←c87044 ) = 1;
      (* (( (ptr) var←c87044)+3) ) = 1;
      (* (( (ptr) var←c87044)+8) ) = var←c86980;
      data←v37988 = var←c87044;
      };
SOURCE(48900, 210)
   {
      word var←c87076;
      word var←c87108;
      word var←c87140;
      word var←c87172;
      {
         word pd293;
         pd293 = (* (( (ptr) (* (( (ptr) gf←c91364)+208)/* var←c82212 */  ))+7) );
         var←c87076 = (word) ( *( (fPt) ((*  (ptr) pd293 ))))((* ((( (ptr) gf←c91364)+22)) ), pd293);
         };
      {
         word pd294;
         pd294 = (* (( (ptr) (* (( (ptr) gf←c91364)+210)/* var←c82308 */  ))+6) );
         var←c87108 = (word) ( *( (fPt) ((*  (ptr) pd294 ))))(pd294);
         };
      {
         word pd295;
         pd295 = (* (( (ptr) (* (( (ptr) gf←c91364)+210)/* var←c82308 */  ))+6) );
         var←c87140 = (word) ( *( (fPt) ((*  (ptr) pd295 ))))(pd295);
         };
      var←c87172 = XR←NewObject(92, (* (( (ptr) gf←c91364)+16) ));
      (*  (ptr) var←c87172 ) = var←c87076;
      (* (( (ptr) var←c87172)+1) ) = data←v37988;
      (*  (W4Pt) (( (ptr) var←c87172)+3) ) = (*  (W4Pt) (( (ptr) gf←c91364)+202)/* var←c82116 */  );
      (* (( (ptr) var←c87172)+13) ) = var←c87108;
      (* (( (ptr) var←c87172)+15) ) = var←c87140;
      (* (( (ptr) var←c87172)+21) ) =  (word) -1;
      parent←v19604 = var←c87172;
      };
SOURCE(49112, 64)
   {
      word pd296;
      pd296 = (* (( (ptr) (* (( (ptr) gf←c91364)+208)/* var←c82212 */  ))+8) );
      (* (( (ptr) parent←v19604)+11) ) = (word) ( *( (fPt) ((*  (ptr) pd296 ))))(parent←v19604, 0, pd296);
      };
SOURCE(48676, 500)
   return(parent←v19604);
   }

static void AddChildToCluster←P4320(parent←v19664, child←v19692, priority←v19720)
   word parent←v19664;
   word child←v19692;
   word priority←v19720;
   {
   register ptr gf←c91396 =  (ptr) &globalframe;
   word parentData←v38032;
   /* AddChildToCluster: */ 
SOURCE(49182, 586)
SOURCE(49262, 45)
   parentData←v38032 = XR←Narrow((* (( (ptr) parent←v19664)+1) ), (* (( (ptr) gf←c91396)+7) ));
SOURCE(49309, 44)
   {
      word pd297;
      pd297 = (* (( (ptr) (* (( (ptr) gf←c91396)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd297 ))))(parent←v19664, pd297) != (* (( (ptr) gf←c91396)+22) ))) {
SOURCE(49353, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(49360, 26)
   if ((child←v19692 == 0)) {
SOURCE(49380, 6)
      return;
      };
SOURCE(49388, 21)
   (* (( (ptr) child←v19692)+2) ) = parent←v19664;
SOURCE(49411, 327)
   {
      word pd299;
      if (( (int)priority←v19720 ==  (int) (word) -1)) { goto then0298;};
      pd299 = (* (( (ptr) (* (( (ptr) gf←c91396)+207)/* var←c82180 */  ))+68) );
      if (( (int)(word) ( *( (fPt) ((*  (ptr) pd299 ))))(parent←v19664, pd299) <  (int)priority←v19720)) {
         then0298: ;
SOURCE(49474, 32)
         (void) AppendSlice←P4680(parent←v19664, child←v19692);
         }
      else {
SOURCE(49506, 232)
         if (( (int)priority←v19720 ==  (int)0)) {
SOURCE(49529, 27)
            (* (( (ptr) parentData←v38032)+7) ) = 0;
SOURCE(49558, 34)
            (* (( (ptr) parentData←v38032)+6) ) = 0;
SOURCE(49594, 54)
            {
               word var←c87204;
               var←c87204 = XR←NewObject(8, (* (( (ptr) gf←c91396)+15) ));
               (*  (ptr) var←c87204 ) = child←v19692;
               (* (( (ptr) var←c87204)+1) ) = (* (( (ptr) parentData←v38032)+4) );
               (* (( (ptr) parentData←v38032)+4) ) = var←c87204;
               };
            }
         else {
SOURCE(49657, 81)
            {
               word var←c87236;
               word var←c87268;
               {
                  word pd300;
                  pd300 = (* (( (ptr) (* (( (ptr) gf←c91396)+207)/* var←c82180 */  ))+71) );
                  var←c87236 = (word) ( *( (fPt) ((*  (ptr) pd300 ))))(parent←v19664, priority←v19720, pd300);
                  };
               {
                  word var←c87300;
                  word var←c87332;
                  var←c87300 = XR←NewObject(8, (* (( (ptr) gf←c91396)+15) ));
                  var←c87332 = var←c87300;
                  (*  (ptr) var←c87332 ) = child←v19692;
                  var←c87268 = var←c87300;
                  };
               {
                  word pd301;
                  pd301 = (* (( (ptr) (* (( (ptr) gf←c91396)+207)/* var←c82180 */  ))+70) );
                  (void) ( *( (fPt) ((*  (ptr) pd301 ))))(parent←v19664, var←c87236, var←c87268, pd301);
                  };
               };
            };
         };
      };
SOURCE(49740, 28)
   {
      word pd302;
      pd302 = (* (( (ptr) (* (( (ptr) gf←c91396)+208)/* var←c82212 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd302 ))))(parent←v19664, pd302);
      };
   }

static void AddChildrenToCluster←P4380(parent←v19780, children←v19808, priority←v19836)
   word parent←v19780;
   word children←v19808;
   word priority←v19836;
   {
   register ptr gf←c91428 =  (ptr) &globalframe;
   word parentData←v38076;
   /* AddChildrenToCluster: */ 
SOURCE(49774, 852)
SOURCE(49868, 45)
   parentData←v38076 = XR←Narrow((* (( (ptr) parent←v19780)+1) ), (* (( (ptr) gf←c91428)+7) ));
SOURCE(49915, 44)
   {
      word pd303;
      pd303 = (* (( (ptr) (* (( (ptr) gf←c91428)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd303 ))))(parent←v19780, pd303) != (* (( (ptr) gf←c91428)+22) ))) {
SOURCE(49959, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(49966, 27)
   if ((children←v19808 == 0)) {
SOURCE(49987, 6)
      return;
      };
SOURCE(49995, 92)
   {
      register word list←v38120;
      list←v38120 = children←v19808;
      lab←L100214: ;
      if ((list←v38120 != 0)) {
         }
      else {
         goto lab←L100211;
         };
SOURCE(50061, 26)
      (* (( (ptr) (*  (ptr) list←v38120 ))+2) ) = parent←v19780;
      list←v38120 = (* (( (ptr) list←v38120)+1) );
      goto lab←L100214;
      lab←L100211: ;
      };
SOURCE(50098, 495)
   if (( (int)priority←v19836 ==  (int) (word) -1) || ( (int)(word) TopPriority←P4740(parent←v19780) <  (int)priority←v19836)) {
SOURCE(50154, 97)
      {
         register word list←v38248;
         list←v38248 = children←v19808;
         lab←L100218: ;
         if ((list←v38248 != 0)) {
            }
         else {
            goto lab←L100215;
            };
SOURCE(50220, 31)
         (void) AppendSlice←P4680(parent←v19780, (*  (ptr) list←v38248 ));
         list←v38248 = (* (( (ptr) list←v38248)+1) );
         goto lab←L100218;
         lab←L100215: ;
         };
      }
   else {
SOURCE(50269, 324)
      if (( (int)priority←v19836 ==  (int)0)) {
SOURCE(50292, 27)
         (* (( (ptr) parentData←v38076)+7) ) = 0;
SOURCE(50321, 34)
         (* (( (ptr) parentData←v38076)+6) ) = 0;
SOURCE(50357, 78)
         {
            word pd304;
            pd304 = (* (( (ptr) (* (( (ptr) gf←c91428)+212)/* var←c83236 */  ))+22) );
            (* (( (ptr) parentData←v38076)+4) ) = (word) ( *( (fPt) ((*  (ptr) pd304 ))))(children←v19808, (* (( (ptr) parentData←v38076)+4)
                ), pd304);
            };
         }
      else {
SOURCE(50444, 151)
         {
            word copiedSlices←v38376;
SOURCE(50446, 14)
            {
               word pd305;
               pd305 = (* (( (ptr) (* (( (ptr) gf←c91428)+212)/* var←c83236 */  ))+25) );
               copiedSlices←v38376 = (word) ( *( (fPt) ((*  (ptr) pd305 ))))(children←v19808, pd305);
               };
SOURCE(50511, 82)
            {
               word var←c87364;
               {
                  word pd306;
                  pd306 = (* (( (ptr) (* (( (ptr) gf←c91428)+207)/* var←c82180 */  ))+71) );
                  var←c87364 = (word) ( *( (fPt) ((*  (ptr) pd306 ))))(parent←v19780, priority←v19836, pd306);
                  };
               {
                  word pd307;
                  pd307 = (* (( (ptr) (* (( (ptr) gf←c91428)+207)/* var←c82180 */  ))+70) );
                  (void) ( *( (fPt) ((*  (ptr) pd307 ))))(parent←v19780, var←c87364, copiedSlices←v38376, pd307);
                  };
               };
            };
         };
      };
SOURCE(50598, 28)
   {
      word pd308;
      pd308 = (* (( (ptr) (* (( (ptr) gf←c91428)+208)/* var←c82212 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd308 ))))(parent←v19780, pd308);
      };
   }

static word RemoveChild←P4440(parent←v19980, child←v20008)
   word parent←v19980;
   word child←v20008;
   {
   register ptr gf←c91460 =  (ptr) &globalframe;
   word newParent←v20052;
   word parentData←v38504;
   /* RemoveChild: */ 
SOURCE(50632, 370)
SOURCE(50632, 370)
   newParent←v20052 = 0;
SOURCE(50718, 45)
   parentData←v38504 = XR←Narrow((* (( (ptr) parent←v19980)+1) ), (* (( (ptr) gf←c91460)+7) ));
SOURCE(50765, 27)
   (* (( (ptr) parentData←v38504)+7) ) = 0;
SOURCE(50794, 34)
   (* (( (ptr) parentData←v38504)+6) ) = 0;
SOURCE(50830, 79)
   {
      word pd309;
      pd309 = (* (( (ptr) (* (( (ptr) gf←c91460)+212)/* var←c83236 */  ))+23) );
      (* (( (ptr) parentData←v38504)+4) ) = (word) ( *( (fPt) ((*  (ptr) pd309 ))))(child←v20008, (* (( (ptr) parentData←v38504)+4)
          ), pd309);
      };
SOURCE(50911, 28)
   {
      word pd310;
      pd310 = (* (( (ptr) (* (( (ptr) gf←c91460)+208)/* var←c82212 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd310 ))))(parent←v19980, pd310);
      };
SOURCE(50941, 61)
   if (((* (( (ptr) parentData←v38504)+4) ) == 0)) {
      newParent←v20052 = 0;
      }
   else {
      newParent←v20052 = parent←v19980;
      };
SOURCE(50632, 370)
   return(newParent←v20052);
   }

static void PruneNullClusters←P4500(scene←v20112, cluster←v20140)
   word scene←v20112;
   word cluster←v20140;
   {
   register ptr gf←c91492 =  (ptr) &globalframe;
   word clusterData←v38548;
   /* PruneNullClusters: */ 
SOURCE(51008, 422)
SOURCE(51074, 47)
   clusterData←v38548 = XR←Narrow((* (( (ptr) cluster←v20140)+1) ), (* (( (ptr) gf←c91492)+7) ));
SOURCE(51123, 45)
   {
      word pd311;
      pd311 = (* (( (ptr) (* (( (ptr) gf←c91492)+209)/* var←c82276 */  ))+6) );
      if (((word) ( *( (fPt) ((*  (ptr) pd311 ))))(cluster←v20140, pd311) != (* (( (ptr) gf←c91492)+22) ))) {
SOURCE(51168, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(51175, 255)
   if (((* (( (ptr) clusterData←v38548)+4) ) == 0)) {
SOURCE(51210, 225)
      {
         word parent←v38592;
SOURCE(51212, 34)
         parent←v38592 = (word) GetParent←P4080(cluster←v20140);
SOURCE(51248, 182)
         if ((parent←v38592 == 0)) {
SOURCE(51271, 35)
            {
               word pd312;
               pd312 = (* (( (ptr) (* (( (ptr) gf←c91492)+217)/* var←c85028 */  ))+13) );
               (void) ( *( (fPt) ((*  (ptr) pd312 ))))(scene←v20112, cluster←v20140, pd312);
               };
            }
         else {
SOURCE(51315, 117)
            {
               word smallerParent←v38636;
SOURCE(51317, 51)
               smallerParent←v38636 = (word) RemoveChild←P4440(parent←v38592, cluster←v20140);
SOURCE(51370, 60)
               if ((smallerParent←v38636 == 0)) {
SOURCE(51398, 32)
                  (void) PruneNullClusters←P4500(scene←v20112, parent←v38592);
                  };
               };
            };
         };
      };
   }

static void SetFrozen←P4560(cluster←v20200, frozen←v20228)
   word cluster←v20200;
   word frozen←v20228;
   {
   register ptr gf←c91524 =  (ptr) &globalframe;
   word parentData←v38680;
   word clusterData←v38708;
   /* SetFrozen: */ 
SOURCE(51442, 193)
SOURCE(51500, 46)
   parentData←v38680 = XR←Narrow((* (( (ptr) cluster←v20200)+1) ), (* (( (ptr) gf←c91524)+7) ));
SOURCE(51548, 58)
   clusterData←v38708 = XR←Narrow((* (( (ptr) parentData←v38680)+8) ), (* (( (ptr) gf←c91524)+8) ));
SOURCE(51608, 27)
   (*  (ptr) clusterData←v38708 ) = frozen←v20228;
   }

static word GetFrozen←P4620(cluster←v20288)
   word cluster←v20288;
   {
   register ptr gf←c91556 =  (ptr) &globalframe;
   word frozen←v20332;
   word parentData←v38752;
   word clusterData←v38780;
   /* GetFrozen: */ 
SOURCE(51641, 202)
SOURCE(51708, 46)
   parentData←v38752 = XR←Narrow((* (( (ptr) cluster←v20288)+1) ), (* (( (ptr) gf←c91556)+7) ));
SOURCE(51756, 58)
   clusterData←v38780 = XR←Narrow((* (( (ptr) parentData←v38752)+8) ), (* (( (ptr) gf←c91556)+8) ));
SOURCE(51816, 27)
   frozen←v20332 = (*  (ptr) clusterData←v38780 );
SOURCE(51641, 202)
   return(frozen←v20332);
   }

static void AppendSlice←P4680(parent←v20392, slice←v20420)
   word parent←v20392;
   word slice←v20420;
   {
   register ptr gf←c91588 =  (ptr) &globalframe;
   word parentData←v38824;
   /* AppendSlice: */ 
SOURCE(51849, 293)
SOURCE(51901, 45)
   parentData←v38824 = XR←Narrow((* (( (ptr) parent←v20392)+1) ), (* (( (ptr) gf←c91588)+7) ));
SOURCE(51949, 34)
   (* (( (ptr) parentData←v38824)+6) ) = 0;
SOURCE(51985, 53)
   if ((0 == (* (( (ptr) parentData←v38824)+7) ))) {
SOURCE(52017, 21)
      (void) UpdatePtr←P5160(parentData←v38824);
      };
SOURCE(52040, 102)
   {
      W2 var←c87396;
      {
         word pd313;
         pd313 = (* (( (ptr) (* (( (ptr) gf←c91588)+212)/* var←c83236 */  ))+21) );
         (void) ( *( (fPt) ((*  (ptr) pd313 ))))((word) &var←c87396, slice←v20420, (* (( (ptr) parentData←v38824)+4) ), (* (( (ptr) parentData←v38824)+5)
             ), pd313);
         };
      (* (( (ptr) parentData←v38824)+5) ) = var←c87396.f1;
      (* (( (ptr) parentData←v38824)+4) ) = var←c87396.f0;
      };
   }

static word TopPriority←P4740(parent←v20480)
   word parent←v20480;
   {
   register ptr gf←c91620 =  (ptr) &globalframe;
   word priority←v20524;
   word parentData←v38868;
   /* TopPriority: */ 
SOURCE(52148, 308)
SOURCE(52217, 45)
   parentData←v38868 = XR←Narrow((* (( (ptr) parent←v20480)+1) ), (* (( (ptr) gf←c91620)+7) ));
SOURCE(52265, 63)
   if ((0 == (* (( (ptr) parentData←v38868)+6) ))) {
SOURCE(52304, 24)
      (void) UpdatePriorities←P5100(parent←v20480);
      };
SOURCE(52330, 53)
   if ((0 == (* (( (ptr) parentData←v38868)+7) ))) {
SOURCE(52362, 21)
      (void) UpdatePtr←P5160(parentData←v38868);
      };
SOURCE(52385, 71)
   if (((* (( (ptr) parentData←v38868)+5) ) == 0)) {
      return(0);
      }
   else {
      return((* (( (ptr) (*  (ptr) (* (( (ptr) parentData←v38868)+5) ) ))+19) ));
      };
   }

static void PutInFront←P4800(parent←v20584, child←v20612, slices←v20640)
   word parent←v20584;
   word child←v20612;
   word slices←v20640;
   {
   register ptr gf←c91652 =  (ptr) &globalframe;
   word parentData←v38912;
   /* PutInFront: */ 
SOURCE(52462, 691)
SOURCE(52543, 45)
   parentData←v38912 = XR←Narrow((* (( (ptr) parent←v20584)+1) ), (* (( (ptr) gf←c91652)+7) ));
SOURCE(52590, 563)
   if ( ( (child←v20612 != 0) ? (slices←v20640 != 0) : 0 ) ) {
SOURCE(52623, 535)
      {
         word beforeEnt←v38956 = 0;
         word ent←v38984 = 0;
         word afterEnt←v39012 = 0;
         word slicesRest←v39040 = 0;
         word found←v39068 = 0;
SOURCE(52699, 95)
         {
            W4 var←c87428;
            {
               word pd314;
               pd314 = (* (( (ptr) (* (( (ptr) gf←c91652)+212)/* var←c83236 */  ))+24) );
               (void) ( *( (fPt) ((*  (ptr) pd314 ))))((word) &var←c87428, child←v20612, (* (( (ptr) parentData←v38912)+4) ), pd314);
               };
            found←v39068 = var←c87428.f3;
            afterEnt←v39012 = var←c87428.f2;
            ent←v38984 = var←c87428.f1;
            beforeEnt←v38956 = var←c87428.f0;
            };
SOURCE(52796, 357)
         if ((0 != found←v39068)) {
SOURCE(52812, 24)
            if (((*  (ptr) ent←v38984 ) != child←v20612)) {
SOURCE(52836, 5)
               (void) XR←RaiseUnnamedError();
               };
SOURCE(52861, 27)
            (* (( (ptr) parentData←v38912)+7) ) = 0;
SOURCE(52890, 34)
            (* (( (ptr) parentData←v38912)+6) ) = 0;
SOURCE(52926, 17)
            (* (( (ptr) ent←v38984)+1) ) = slices←v20640;
SOURCE(53033, 83)
            {
               register word sList←v39196;
               sList←v39196 = slices←v20640;
               lab←L100222: ;
               if ((sList←v39196 != 0)) {
                  }
               else {
                  goto lab←L100219;
                  };
SOURCE(53098, 18)
               slicesRest←v39040 = sList←v39196;
               sList←v39196 = (* (( (ptr) sList←v39196)+1) );
               goto lab←L100222;
               lab←L100219: ;
               };
SOURCE(53127, 26)
            (* (( (ptr) slicesRest←v39040)+1) ) = afterEnt←v39012;
            };
         };
      };
   }

static void PutBehind←P4860(parent←v20784, child←v20812, slices←v20840)
   word parent←v20784;
   word child←v20812;
   word slices←v20840;
   {
   register ptr gf←c91684 =  (ptr) &globalframe;
   word parentData←v39324;
   /* PutBehind: */ 
SOURCE(53165, 709)
SOURCE(53245, 45)
   parentData←v39324 = XR←Narrow((* (( (ptr) parent←v20784)+1) ), (* (( (ptr) gf←c91684)+7) ));
SOURCE(53292, 582)
   if ( ( (child←v20812 != 0) ? (slices←v20840 != 0) : 0 ) ) {
SOURCE(53325, 610)
      {
         word beforeEnt←v39368 = 0;
         word ent←v39396 = 0;
         word afterEnt←v39424 = 0;
         word slicesRest←v39452 = 0;
         word found←v39480 = 0;
SOURCE(53401, 95)
         {
            W4 var←c87460;
            {
               word pd315;
               pd315 = (* (( (ptr) (* (( (ptr) gf←c91684)+212)/* var←c83236 */  ))+24) );
               (void) ( *( (fPt) ((*  (ptr) pd315 ))))((word) &var←c87460, child←v20812, (* (( (ptr) parentData←v39324)+4) ), pd315);
               };
            found←v39480 = var←c87460.f3;
            afterEnt←v39424 = var←c87460.f2;
            ent←v39396 = var←c87460.f1;
            beforeEnt←v39368 = var←c87460.f0;
            };
SOURCE(53498, 376)
         if ((0 != found←v39480)) {
SOURCE(53514, 24)
            if (((*  (ptr) ent←v39396 ) != child←v20812)) {
SOURCE(53538, 5)
               (void) XR←RaiseUnnamedError();
               };
SOURCE(53563, 27)
            (* (( (ptr) parentData←v39324)+7) ) = 0;
SOURCE(53592, 34)
            (* (( (ptr) parentData←v39324)+6) ) = 0;
SOURCE(53628, 79)
            if ((beforeEnt←v39368 != 0)) {
SOURCE(53650, 29)
               (* (( (ptr) beforeEnt←v39368)+1) ) = slices←v20840;
               }
            else {
SOURCE(53679, 28)
               (* (( (ptr) parentData←v39324)+4) ) = slices←v20840;
               };
SOURCE(53759, 83)
            {
               register word sList←v39608;
               sList←v39608 = slices←v20840;
               lab←L100226: ;
               if ((sList←v39608 != 0)) {
                  }
               else {
                  goto lab←L100223;
                  };
SOURCE(53824, 18)
               slicesRest←v39452 = sList←v39608;
               sList←v39608 = (* (( (ptr) sList←v39608)+1) );
               goto lab←L100226;
               lab←L100223: ;
               };
SOURCE(53853, 21)
            (* (( (ptr) slicesRest←v39452)+1) ) = ent←v39396;
            };
         };
      };
   }

static word GetAtPriority←P4920(parent←v20984, priority←v21012)
   word parent←v20984;
   word priority←v21012;
   {
   register ptr gf←c91716 =  (ptr) &globalframe;
   word slice←v21056;
   word parentData←v39736;
   /* GetAtPriority: */ 
SOURCE(53942, 659)
SOURCE(53942, 659)
   slice←v21056 = 0;
SOURCE(54027, 45)
   parentData←v39736 = XR←Narrow((* (( (ptr) parent←v20984)+1) ), (* (( (ptr) gf←c91716)+7) ));
SOURCE(54074, 527)
   if (( (int)priority←v21012 ==  (int) (word) -1)) {
SOURCE(54125, 53)
      if ((0 == (* (( (ptr) parentData←v39736)+7) ))) {
SOURCE(54157, 21)
         (void) UpdatePtr←P5160(parentData←v39736);
         };
SOURCE(54180, 28)
      return((*  (ptr) (* (( (ptr) parentData←v39736)+5) ) ));
      }
   else {
SOURCE(54217, 384)
      if (( (int)priority←v21012 ==  (int)0)) {
SOURCE(54238, 66)
         return((*  (ptr) (* (( (ptr) parentData←v39736)+4) ) ));
         }
      else {
SOURCE(54304, 299)
         {
            word count←v39780 = 1;
SOURCE(54349, 158)
            {
               register word sliceList←v39824;
               sliceList←v39824 = (* (( (ptr) (* (( (ptr) parentData←v39736)+4) ))+1) );
               lab←L100230: ;
               if ((sliceList←v39824 != 0)) {
                  }
               else {
                  goto lab←L100227;
                  };
SOURCE(54444, 46)
               if (( (int)count←v39780 ==  (int)priority←v21012)) {
SOURCE(54467, 23)
                  return((*  (ptr) sliceList←v39824 ));
                  };
SOURCE(54492, 15)
               count←v39780 = (count←v39780 + 1);
               sliceList←v39824 = (* (( (ptr) sliceList←v39824)+1) );
               goto lab←L100230;
               lab←L100227: ;
               };
SOURCE(54518, 53)
            if ((0 == (* (( (ptr) parentData←v39736)+7) ))) {
SOURCE(54550, 21)
               (void) UpdatePtr←P5160(parentData←v39736);
               };
SOURCE(54573, 28)
            return((*  (ptr) (* (( (ptr) parentData←v39736)+5) ) ));
            };
         };
      };
   }

static word GetChildPriority←P4980(parent←v21116, child←v21144)
   word parent←v21116;
   word child←v21144;
   {
   register ptr gf←c91748 =  (ptr) &globalframe;
   word priority←v21188;
   word parentData←v39952;
   /* GetChildPriority: */ 
SOURCE(54610, 225)
SOURCE(54698, 45)
   parentData←v39952 = XR←Narrow((* (( (ptr) parent←v21116)+1) ), (* (( (ptr) gf←c91748)+7) ));
SOURCE(54745, 63)
   if ((0 == (* (( (ptr) parentData←v39952)+6) ))) {
SOURCE(54784, 24)
      (void) UpdatePriorities←P5100(parent←v21116);
      };
SOURCE(54810, 25)
   priority←v21188 = (* (( (ptr) child←v21144)+19) );
SOURCE(54610, 225)
   return(priority←v21188);
   }

static word ComparePriorities←P5040(slice1←v21248, slice2←v21276)
   word slice1←v21248;
   word slice2←v21276;
   {
   register ptr gf←c91780 =  (ptr) &globalframe;
   word var←c21320;
   word slice1List←v39996 = 0;
   word slice2List←v40024 = 0;
   word parent1←v40052 = 0;
   word parent2←v40080 = 0;
   word child1←v40108 = 0;
   word child2←v40136 = 0;
   word compare←v40164;
   /* ComparePriorities: */ 
SOURCE(54841, 813)
SOURCE(55034, 15)
   child1←v40108 = slice1←v21248;
SOURCE(55051, 15)
   child2←v40136 = slice2←v21276;
SOURCE(55068, 165)
   lab←L100233: ;
   {
      word pd316;
      pd316 = (* (( (ptr) (* (( (ptr) gf←c91780)+217)/* var←c85028 */  ))+39) );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd316 ))))(child1←v40108, pd316))) {
         }
      else {
         goto lab←L100231;
         };
      };
SOURCE(55104, 36)
   {
      word pd317;
      pd317 = (* (( (ptr) (* (( (ptr) gf←c91780)+207)/* var←c82180 */  ))+64) );
      parent1←v40052 = (word) ( *( (fPt) ((*  (ptr) pd317 ))))(child1←v40108, pd317);
      };
SOURCE(55142, 73)
   {
      word var←c87492;
      word var←c87524;
      {
         word pd318;
         pd318 = (* (( (ptr) (* (( (ptr) gf←c91780)+207)/* var←c82180 */  ))+66) );
         var←c87492 = (word) ( *( (fPt) ((*  (ptr) pd318 ))))(parent1←v40052, child1←v40108, pd318);
         };
      var←c87524 = XR←NewObject(8, (* (( (ptr) gf←c91780)+14) ));
      (*  (ptr) var←c87524 ) = var←c87492;
      (* (( (ptr) var←c87524)+1) ) = slice1List←v39996;
      slice1List←v39996 = var←c87524;
      };
SOURCE(55217, 16)
   child1←v40108 = parent1←v40052;
   goto lab←L100233;
   lab←L100231: ;
SOURCE(55244, 165)
   lab←L100236: ;
   {
      word pd319;
      pd319 = (* (( (ptr) (* (( (ptr) gf←c91780)+217)/* var←c85028 */  ))+39) );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd319 ))))(child2←v40136, pd319))) {
         }
      else {
         goto lab←L100234;
         };
      };
SOURCE(55280, 36)
   {
      word pd320;
      pd320 = (* (( (ptr) (* (( (ptr) gf←c91780)+207)/* var←c82180 */  ))+64) );
      parent2←v40080 = (word) ( *( (fPt) ((*  (ptr) pd320 ))))(child2←v40136, pd320);
      };
SOURCE(55318, 73)
   {
      word var←c87556;
      word var←c87588;
      {
         word pd321;
         pd321 = (* (( (ptr) (* (( (ptr) gf←c91780)+207)/* var←c82180 */  ))+66) );
         var←c87556 = (word) ( *( (fPt) ((*  (ptr) pd321 ))))(parent2←v40080, child2←v40136, pd321);
         };
      var←c87588 = XR←NewObject(8, (* (( (ptr) gf←c91780)+14) ));
      (*  (ptr) var←c87588 ) = var←c87556;
      (* (( (ptr) var←c87588)+1) ) = slice2List←v40024;
      slice2List←v40024 = var←c87588;
      };
SOURCE(55393, 16)
   child2←v40136 = parent2←v40080;
   goto lab←L100236;
   lab←L100234: ;
SOURCE(55420, 210)
   lab←L100239: ;
   if ( ( (slice1List←v39996 != 0) ? (slice2List←v40024 != 0) : 0 ) ) {
      }
   else {
      goto lab←L100237;
      };
SOURCE(55466, 63)
   {
      word var←c87620;
      word a←v79224;
      word b←v79252;
      a←v79224 = (*  (ptr) slice1List←v39996 );
      b←v79252 = (*  (ptr) slice2List←v40024 );
      {
         word idx322;
         var←c87620 = (
            idx322 = (word)  ( ( (int)a←v79224 ==  (int)b←v79252) ? 1 :  ( ( (int)a←v79224 >  (int)b←v79252) ? 2 : 0 )  ) ,
            BCK(idx322, 3)
            );
         };
      compare←v40164 = var←c87620;
      };
SOURCE(55531, 39)
   if ((compare←v40164 != 1)) {
SOURCE(55555, 15)
      return(compare←v40164);
      };
SOURCE(55572, 28)
   slice1List←v39996 = (* (( (ptr) slice1List←v39996)+1) );
SOURCE(55602, 28)
   slice2List←v40024 = (* (( (ptr) slice2List←v40024)+1) );
   goto lab←L100239;
   lab←L100237: ;
SOURCE(55641, 13)
   return(1);
   }

static void UpdatePriorities←P5100(parent←v21380)
   word parent←v21380;
   {
   W7 var←c91812;
   register ptr gf←c91844 =  (ptr) &globalframe;
   /* declaration of var←c87652 skipped */ 
   word parentData←v40292;
   /* declaration of index←v40348 skipped */ 
   /* UpdatePriorities: */ 
SOURCE(55660, 301)
   {
      word tmpAddr323;
      tmpAddr323 = (word) (( (ptr) &var←c91812)+4)/* var←c87652 */ ;
      (*  (ptr) tmpAddr323 ) = ( ((word)  (fPt) DoUpdate←P10572) );
      (* (( (ptr) tmpAddr323) + 1) ) = 1;
      };
SOURCE(55703, 45)
   parentData←v40292 = XR←Narrow((* (( (ptr) parent←v21380)+1) ), (* (( (ptr) gf←c91844)+7) ));
SOURCE(55859, 14)
   var←c91812.f6/* index←v40348 */  = 0;
SOURCE(55875, 51)
   {
      word var←c87684;
      word pd324;
      pd324 = (* (( (ptr) (* (( (ptr) gf←c91844)+207)/* var←c82180 */  ))+73) );
      var←c87684 = (word) ( *( (fPt) ((*  (ptr) pd324 ))))(parent←v21380, 0, (word) (( (bPt) &var←c91812)+16)/* var←c87652 */ , 0, pd324)
      ;
      };
SOURCE(55928, 33)
   (* (( (ptr) parentData←v40292)+6) ) = 1;
   }

static word DoUpdate←P10572(child←v40424, formal←c91876)
   word child←v40424;
   word formal←c91876;
   {
   word done←v40468;
   formal←c91876 = (formal←c91876 - 16);
   /* DoUpdate: */ 
SOURCE(55750, 104)
SOURCE(55750, 104)
   done←v40468 = 0;
SOURCE(55813, 22)
   (* (( (ptr) child←v40424)+19) ) = (* (( (ptr) formal←c91876)+6) );
SOURCE(55837, 17)
   (* (( (ptr) formal←c91876)+6) ) = ((* (( (ptr) formal←c91876)+6) ) + 1);
SOURCE(55750, 104)
   return(done←v40468);
   }

static void UpdatePtr←P5160(parentData←v21440)
   word parentData←v21440;
   {
   /* UpdatePtr: */ 
SOURCE(55967, 237)
SOURCE(56013, 154)
   if (((* (( (ptr) parentData←v21440)+4) ) == 0)) {
SOURCE(56045, 26)
      (* (( (ptr) parentData←v21440)+5) ) = 0;
      }
   else {
SOURCE(56071, 96)
      {
         register word list←v40496;
         list←v40496 = (* (( (ptr) parentData←v21440)+4) );
         lab←L100244: ;
         if ((list←v40496 != 0)) {
            }
         else {
            goto lab←L100241;
            };
SOURCE(56146, 21)
         (* (( (ptr) parentData←v21440)+5) ) = list←v40496;
         list←v40496 = (* (( (ptr) list←v40496)+1) );
         goto lab←L100244;
         lab←L100241: ;
         };
      };
SOURCE(56178, 26)
   (* (( (ptr) parentData←v21440)+7) ) = 1;
   }

/* file: GGOutlineImplB, module: GGOutlineImplB, compiled at: July 11, 1993 8:19:09 pm PDT */ 
extern void XR←install←GGOutlineImplB() {
   NoName←Q10788();
   }
extern void XR←run←GGOutlineImplB() { XR←Start(&globalframe); }