/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 11, 1993 8:09:48 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: GGSliceImplC, module: GGSliceImplC */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1942348543,1462603946] GGSliceImplC";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef W5 *W5Pt;
typedef struct {word f0, f1;} W2;
typedef word (*fPt)();
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {W8 f; W8 r;} W16;
typedef struct {W16 f; W4 r;} W20;
typedef W20 *W20Pt;
typedef W6 *W6Pt;
typedef struct {word f0, f1, f2;} W3;
typedef struct {W8 f; W3 r;} W11;
typedef struct {W8 f; W2 r;} W10;
typedef struct {W8 f; W5 r;} W13;
typedef struct {W8 f; W6 r;} W14;
typedef struct {W8 f; word r;} W9;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef W3 *W3Pt;
typedef W10 *W10Pt;
#define SOURCE(p, l) /* source p, l */
static float fc84 = 0.01;
static float fc85 = 0.0;
static float fc87 = 1.0;
static float fc88 = -1.0;
static float fc90 = 2.0;
static float fc96 = 20.0;
#define FMAX(x, y, tx, ty)  ( (tx=((float) x)) >= (ty=((float) y)) ? tx : ty )
#define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) )
static float fc142 = 1.0E-6;
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc235 = 10000.0;
static float fc379 = 8704.03;
static float fc388 = 8706.08;
static float fc395 = 8802.04;
static float fc399 = 1E16;
#define IOP2(op, x, y)  ( (word) ((x) op (y)) )
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static float fc491 = 3.0;
static void NoName←Q9060();
static void GGSliceImplC←P0();
static word BuildCircleSliceClass←P60();
static word MakeCircleSlice←P120();
static void CircleGetParams←P180();
static void CircleGetBoundBoxAux←P240();
static void CircleFindBoundBox←P5760();
static word CircleGetBoundBox←P300();
static word CircleGetTightBox←P360();
static void CircleSetScaling←P420();
static word CircleCopy←P480();
static void CircleRestore←P540();
static void CircleBuildPath←P600();
static void CircleDrawBorder←P660();
static void DoCircleDrawBorder←P5964();
static void CircleDrawParts←P720();
static void DoCircleDrawOutline←P6072();
static void CircleDrawTransform←P780();
static void DoCircleDrawTransform←P6132();
static void CircleDrawSelectionFeedback←P840();
static void CircleDrawAttractorFeedback←P900();
static void DoDrawFeedback←P6336();
static void CircleBoxFromTransform←P960();
static word FindImagerObject←P1020();
static word EqualPattern←P6444();
static word CompareProps←P6504();
static word CreateProps←P1080();
static word IsSampled←P1140();
static void CachedCircleDraw←P1200();
static word FromFillToLocal←P1260();
static void CircleDrawObject←P1320();
static void FillItIn←P6900();
static void TransformedCirclePath←P6960();
static word PatternProc←P7068();
static void OldCircleDrawOutline←P1380();
static void TransformedCirclePath←P7128();
static void FillItIn←P7188();
static word PatternProc←P7296();
static void CirclePath←P1440();
static void CirclePathReverse←P1500();
static void DrawSelectionFeedbackAux←P1560();
static void DoDrawFeedback←P7356();
static void CircleSaveSelections←P1620();
static void SetPointField←P7464();
static void SetSegmentField←P7524();
static word CircleRemakeSelections←P1680();
static word GetPointField←P7632();
static word GetSegmentField←P7692();
static void CircleTransform←P1740();
static word CircleDescribeHit←P1800();
static word CircleDescribe←P1860();
static void CircleFileout←P1920();
static word CircleFilein←P1980();
static word CircleIsEmptyParts←P2040();
static word CircleIsCompleteParts←P2100();
static word NearestCirclePoint←P2160();
static word CircleNewParts←P2220();
static word CircleUnionParts←P2280();
static word CircleDiffParts←P2340();
static void CircleMovingParts←P2400();
static word SomeCPMoving←P8136();
static word CircleAugmentParts←P2460();
static word CircleAlterParts←P2520();
static word CirclePointsInDescriptor←P2580();
static void CircleWalkPointsInDescriptor←P2640();
static word CircleSegmentsInDescriptor←P2700();
static word CircleWalkSegments←P2760();
static void CircleNextPoint←P2820();
static void GetCirclePoint←P2880();
static void CircleNextSegment←P2940();
static void CircleClosestPoint←P3000();
static void CircleClosestJointToHitData←P3060();
static void CircleClosestSegment←P3120();
static void CircleFilledPathsUnderPoint←P3180();
static void CircleLineIntersection←P3240();
static word CircleHitDataAsSimpleCurve←P3300();
static void CirclePointsFromData←P3360();
static void CircleSetDefaults←P3420();
static word CircleSetStrokeWidth←P3480();
static void CircleGetStrokeWidth←P3540();
static void CircleSetStrokeEnd←P3600();
static void CircleGetStrokeEnd←P3660();
static void CircleSetStrokeColor←P3720();
static void CircleGetStrokeColor←P3780();
static void CircleSetFillColor←P3840();
static void CircleGetFillColor←P3900();
static void CircleSetDashed←P3960();
static void CircleGetDashed←P4020();
static word CircleSetOrientation←P4080();
static void CircleGetOrientation←P4140();
static void MakeComplete←P4200();
static word IsComplete←P4260();
static word IsEmpty←P4320();
static word NoOpBoundBox←P4380();
static word NoOpTransformedBoundBox←P4440();
static word NoOpTightBox←P4500();
static word NoOpCopy←P4560();
static void NoOpRestore←P4620();
static void NoOpBuildPath←P4680();
static void NoOpDrawBorder←P4740();
static void NoOpDrawParts←P4800();
static void NoOpDrawTransform←P4860();
static void NoOpDrawSelectionFeedback←P4920();
static void NoOpDrawAttractorFeedback←P4980();
static word NoOpAttractorFeedbackBoundBox←P5040();
static void NoOpSaveSelections←P5100();
static word NoOpRemakeSelections←P5160();
static word NoOpSetOrientation←P5220();
static void NoOpGetOrientation←P5280();
static void NoOpTransform←P5340();
static word NoOpDescribe←P5400();
static word NoOpDescribeHit←P5460();
static void NoOpFileout←P5520();
static word NoOpFilein←P5580();
static word GenericTransformedBoundBox←P5640();
static void Init←P5700();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\100\354\000\000"};
static struct {unsigned f; char r[4];} string2 = {65537, "\001\000\000"};
static struct {unsigned f; char r[4];} string3 = {131076, "\216\251\000"};
static struct {unsigned f; char r[44];} string4 = {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];} string5 = {131074, "\003\002\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\163\305\342\377\300\127\055\220\252\100\214\000\000"};
static struct {unsigned f; char r[16];} string7 = {983055, "\006\006\000\001\004\001\024\001\030\001\054\001\100\204\001"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\163\305\342\377\300\127\055\220\252\100\230\000\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\100\324\000\000"};
static struct {unsigned f; char r[32];} string10 = {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];} string11 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\144\000\000"};
static struct {unsigned f; char r[4];} string12 = {196611, "\004@\321"};
static struct {unsigned f; char r[48];} string13 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\247\365\203\234\300\047\265\225\046\100\324\005\004\162\145\163\164\214\216\257\300\247\365\203\234\300\047\265\225\046\100\324\261\000\000\000"};
static struct {unsigned f; char r[4];} string14 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string15 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\210\000\000"};
static struct {unsigned f; char r[4];} string16 = {131074, "\004\011\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\074\177\166\242\300\203\113\217\044\104\254\000\000"};
static struct {unsigned f; char r[4];} string18 = {131074, "\003\005\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\163\305\342\377\300\127\055\220\252\100\260\000\000"};
static struct {unsigned f; char r[4];} string20 = {196611, "\004E\221"};
static struct {unsigned f; char r[16];} string21 = {851984, "\257\300\163\305\342\377\300\127\055\220\252\100\244\000\000"};
static struct {unsigned f; char r[16];} string22 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[20];} string23 = {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[20];} string24 = {1245204, "circumference point"};
static struct {unsigned f; char r[8];} string25 = {393224, "border\000"};
static struct {unsigned f; char r[20];} string26 = {1179668, " of a Circle slice\000"};
static struct {unsigned f; char r[16];} string27 = {917520, "a Circle slice\000"};
static struct {unsigned f; char r[36];} string28 = {2097188, "multiple parts of a Circle slice\000\000\000"};
static struct {unsigned f; char r[8];} string29 = {458760, "outline"};
static struct {unsigned f; char r[8];} string30 = {458760, "nowhere"};
static struct {unsigned f; char r[16];} string31 = {917520, " strokeWidth: \000"};
static struct {unsigned f; char r[4];} string32 = {131076, "%g\000"};
static struct {unsigned f; char r[16];} string33 = {917520, " strokeColor: \000"};
static struct {unsigned f; char r[16];} string34 = {786448, " fillColor: \000\000\000"};
static struct {unsigned f; char r[12];} string35 = {720908, " dashes: ( "};
static struct {unsigned f; char r[8];} string36 = {458760, " %g %g "};
static struct {unsigned f; char r[4];} string37 = {131076, ") \000"};
static struct {unsigned f; char r[12];} string38 = {655372, " props: ( \000"};
static struct {unsigned f; char r[8];} string39 = {458760, ") fwd: "};
static struct {unsigned f; char r[16];} string40 = {786448, "strokeWidth:\000\000\000"};
static struct {unsigned f; char r[16];} string41 = {786448, "strokeColor:\000\000\000"};
static struct {unsigned f; char r[12];} string42 = {655372, "fillColor:\000"};
static struct {unsigned f; char r[12];} string43 = {589836, "dashes: (\000\000"};
static struct {unsigned f; char r[12];} string44 = {589836, "props: ( \000\000"};
static struct {unsigned f; char r[8];} string45 = {393224, "origin\000"};
static struct {unsigned f; char r[8];} string46 = {262152, "fwd:\000\000\000"};
static struct {unsigned f; char r[8];} string47 = {458760, "Forward"};
static struct {unsigned f; char r[12];} string48 = {524300, "Backward\000\000\000"};
static struct {unsigned f; char r[8];} string49 = {262152, "Grow\000\000\000"};
static struct {unsigned f; char r[16];} string50 = {851984, "ShrinkForward\000\000"};
static struct {unsigned f; char r[16];} string51 = {917520, "ShrinkBackward\000"};
static struct {unsigned f; char r[16];} string52 = {917520, "GGCircleObject\000"};
static struct {unsigned f; char r[4];} string53 = {196612, "Set"};
static struct {unsigned f; char r[20];} string54 = {1048596, "Broken Invariant\000\000\000"};
static struct {unsigned f; char r[8];} string55 = {393224, "Circle\000"};
static struct {unsigned f; char r[12];} string56 = {589836, "ChangeHue\000\000"};
static struct {unsigned f; char r[40];} string57 = {2490408, "All slice classes must have this proc.\000"};
static struct {unsigned f; char r[32];} string58 = {2031648, "Failed to procure complete copy"};
static struct {unsigned f; char r[16];} string59 = {851984, "\257\300\163\305\342\377\300\127\055\220\252\100\164\000\000"};
static struct {unsigned f; char r[12];} string60 = {720907, "\006\002\030\001\100\144\010\000\004\043\001"};
static struct {unsigned f; char r[16];} string61 = {851984, "\257\300\322\334\347\304\300\124\107\000\027\100\150\000\000"};
static struct {unsigned f; char r[16];} string62 = {851984, "\257\300\161\264\233\303\300\026\075\022\161\100\150\000\000"};
static struct {unsigned f; char r[16];} string63 = {851984, "\257\300\265\217\206\011\300\172\271\371\033\100\150\000\000"};
static struct {unsigned f; char r[16];} string64 = {851984, "\257\300IKM\275\300Y\0222&@h\000\000"};
static struct {unsigned f; char r[16];} string65 = {851984, "\257\300\231\005\151\136\300\275\231\323\274\100\150\000\000"};
static struct {unsigned f; char r[16];} string66 = {851984, "\257\300\034\077\173\126\300\270\206\201\035\100\150\000\000"};
static struct {unsigned f; char r[16];} string67 = {851984, "\257\300\236\155\220\261\300\040\017\026\014\100\150\000\000"};
static struct {unsigned f; char r[16];} string68 = {851984, "\257\300\045\215\147\016\300\153\043\150\276\100\150\000\000"};
static struct {unsigned f; char r[16];} string69 = {851984, "\257\300\317\075\344\275\300\105\331\241\110\100\150\000\000"};
static struct {unsigned f; char r[16];} string70 = {851984, "\257\300\043\211\212\366\300\343\003\307\242\100\150\000\000"};
static struct {unsigned f; char r[16];} string71 = {851984, "\257\300\235\036\354\311\300\234\133\201\260\100\150\000\000"};
static struct {unsigned f; char r[4];} string72 = {1195856748, "ice"};
static struct {unsigned f; char r[16];} string73 = {851984, "\257\300U$)\337\300Xo9\243@t\000\000"};
static struct {unsigned f; char r[16];} string74 = {851984, "\257\300\336\025\013\356\300\216\115\352\271\100\150\000\000"};
static struct {unsigned f; char r[16];} string75 = {851984, "\257\300\370\132\042\205\300\045\133\011\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string76 = {851984, "\257\300\074\177\166\242\300\203\113\217\044\100\150\000\000"};
static struct {unsigned f; char r[16];} string77 = {851984, "\257\300\354\147\236\353\300\316\347\225\106\100\150\000\000"};
static struct {unsigned f; char r[16];} string78 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"};
static struct {unsigned f; char r[16];} string79 = {851984, "\257\300\015\277\004\146\300\034\367\146\045\100\164\000\000"};
static struct {unsigned f; char r[16];} string80 = {851984, "\257\300\103\306\166\071\300\047\126\012\237\100\150\000\000"};
static struct {unsigned f; char r[16];} string81 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string82 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {unsigned f; char r[16];} string83 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"};
static W2 dummy156;
static struct {
   word f0[60]; word f60; word f61; word f62; 
   word f63; word f64; word f65; word f66; 
   word f67; word f68; word f69; word f70; 
   word f71; word f72; word f73; word f74; 
   word f75; word f76; word f77; word f78; 
   word f79; word f80; word f81; word f82; 
   word f83; word f84; word f85; word f86; 
   word f87; word f88; word f89; word f90; 
   word f91; word f92; word f93; word f94; 
   word f95; word f96; word f97; word f98; 
   word f99; word f100; word f101; word f102; 
   word f103; word f104; word f105; word f106; 
   word f107; word f108; word f109; word f110; 
   word f111; word f112; word f113; word f114; 
   word f115; word f116; word f117; word f118; 
   word f119; word f120; word f121; word f122; 
   word f123; word f124; word f125; word f126; 
   word f127; word f128; word f129; word f130; 
   word f131; word f132; word f133; word f134; 
   word f135; word f136; word f137; word f138; 
   word f139; word f140; word f141; word f142; 
   word f143; word f144; word f145; word f146; 
   word f147; word f148; word f149; word f150; 
   word f151; word f152; word f153; word f154; 
   word f155; word f156; word f157; word f158; 
   word f159; word f160; word f161; word f162; 
   word f163; word f164; word f165; word f166; 
   word f167; word f168; word f169; word f170; 
   word f171; word f172; word f173; word f174; 
   word f175; word f176; word f177; word f178; 
   word f179; word f180; word f181; word f182; 
   word f183; word f184; word f185; word f186; 
   word f187; word f188; word f189; word f190; 
   word f191; word f192; word f193; word f194; 
   word f195; word f196; word f197; word f198; 
   word f199; word f200; word f201; word f202; 
   word f203; word f204; word f205; word f206; 
   word f207; word f208; word f209; word f210; 
   word f211; word f212; word f213; word f214; 
   word f215; word f216; word f217; word f218; 
   word f219; word f220; word f221; word f222; 
   word f223; word f224; word f225; word f226; 
   word f227; word f228; word f229; word f230; 
   word f231; word f232; word f233; word f234; 
   word f235; word f236; word f237; word f238; 
   word f239; word f240; word f241; word f242; 
   word f243; word f244; word f245; word f246; 
   word f247; word f248; word f249; word f250; 
   word f251[38]; 
   } globalframe = {
   {0}, (word) Init←P5700, 0, (word) GenericTransformedBoundBox←P5640, 
   0, (word) NoOpFilein←P5580, 0, (word) NoOpFileout←P5520, 
   0, (word) NoOpDescribeHit←P5460, 0, (word) NoOpDescribe←P5400, 
   0, (word) NoOpTransform←P5340, 0, (word) NoOpGetOrientation←P5280, 
   0, (word) NoOpSetOrientation←P5220, 0, (word) NoOpRemakeSelections←P5160, 
   0, (word) NoOpSaveSelections←P5100, 0, (word) NoOpAttractorFeedbackBoundBox←P5040, 
   0, (word) NoOpDrawAttractorFeedback←P4980, 0, (word) NoOpDrawSelectionFeedback←P4920, 
   0, (word) NoOpDrawTransform←P4860, 0, (word) NoOpDrawParts←P4800, 
   0, (word) NoOpDrawBorder←P4740, 0, (word) NoOpBuildPath←P4680, 
   0, (word) NoOpRestore←P4620, 0, (word) NoOpCopy←P4560, 
   0, (word) NoOpTightBox←P4500, 0, (word) NoOpTransformedBoundBox←P4440, 
   0, (word) NoOpBoundBox←P4380, 0, (word) IsEmpty←P4320, 
   0, (word) IsComplete←P4260, 0, (word) MakeComplete←P4200, 
   0, (word) CircleGetOrientation←P4140, 0, (word) CircleSetOrientation←P4080, 
   0, (word) CircleGetDashed←P4020, 0, (word) CircleSetDashed←P3960, 
   0, (word) CircleGetFillColor←P3900, 0, (word) CircleSetFillColor←P3840, 
   0, (word) CircleGetStrokeColor←P3780, 0, (word) CircleSetStrokeColor←P3720, 
   0, (word) CircleGetStrokeEnd←P3660, 0, (word) CircleSetStrokeEnd←P3600, 
   0, (word) CircleGetStrokeWidth←P3540, 0, (word) CircleSetStrokeWidth←P3480, 
   0, (word) CircleSetDefaults←P3420, 0, (word) CirclePointsFromData←P3360, 
   0, (word) CircleHitDataAsSimpleCurve←P3300, 0, (word) CircleLineIntersection←P3240, 
   0, (word) CircleFilledPathsUnderPoint←P3180, 0, (word) CircleClosestSegment←P3120, 
   0, (word) CircleClosestJointToHitData←P3060, 0, (word) CircleClosestPoint←P3000, 
   0, (word) CircleNextSegment←P2940, 0, (word) GetCirclePoint←P2880, 
   0, (word) CircleNextPoint←P2820, 0, (word) CircleWalkSegments←P2760, 
   0, (word) CircleSegmentsInDescriptor←P2700, 0, (word) CircleWalkPointsInDescriptor←P2640, 
   0, (word) CirclePointsInDescriptor←P2580, 0, (word) CircleAlterParts←P2520, 
   0, (word) CircleAugmentParts←P2460, 0, (word) CircleMovingParts←P2400, 
   0, (word) CircleDiffParts←P2340, 0, (word) CircleUnionParts←P2280, 
   0, (word) CircleNewParts←P2220, 0, (word) NearestCirclePoint←P2160, 
   0, (word) CircleIsCompleteParts←P2100, 0, (word) CircleIsEmptyParts←P2040, 
   0, (word) CircleFilein←P1980, 0, (word) CircleFileout←P1920, 
   0, (word) CircleDescribe←P1860, 0, (word) CircleDescribeHit←P1800, 
   0, (word) CircleTransform←P1740, 0, (word) CircleRemakeSelections←P1680, 
   0, (word) CircleSaveSelections←P1620, 0, (word) DrawSelectionFeedbackAux←P1560, 
   0, (word) CirclePathReverse←P1500, 0, (word) CirclePath←P1440, 
   0, (word) OldCircleDrawOutline←P1380, 0, (word) CircleDrawObject←P1320, 
   0, (word) FromFillToLocal←P1260, 0, (word) CachedCircleDraw←P1200, 
   0, (word) IsSampled←P1140, 0, (word) CreateProps←P1080, 
   0, (word) FindImagerObject←P1020, 0, (word) CircleBoxFromTransform←P960, 
   0, (word) CircleDrawAttractorFeedback←P900, 0, (word) CircleDrawSelectionFeedback←P840, 
   0, (word) CircleDrawTransform←P780, 0, (word) CircleDrawParts←P720, 
   0, (word) CircleDrawBorder←P660, 0, (word) CircleBuildPath←P600, 
   0, (word) CircleRestore←P540, 0, (word) CircleCopy←P480, 
   0, (word) CircleSetScaling←P420, 0, (word) CircleGetTightBox←P360, 
   0, (word) CircleGetBoundBox←P300, 0, (word) CircleGetBoundBoxAux←P240, 
   0, (word) CircleGetParams←P180, 0, (word) MakeCircleSlice←P120, 
   0, (word) BuildCircleSliceClass←P60, 0, (word) GGSliceImplC←P0, 
   {0}
   };

static void NoName←Q9060()
   {
   register ptr gf←c01098 =  (ptr) &globalframe;
   word var←c89376;
   (* (( (ptr) gf←c01098)+8) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c01098)+9) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string2);
   (* (( (ptr) gf←c01098)+10) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5);
   (* (( (ptr) gf←c01098)+12) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7);
   (* (( (ptr) gf←c01098)+13) ) = (word) XR←GetTypeIndexS((word) (&string8));
   (* (( (ptr) gf←c01098)+14) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
   (* (( (ptr) gf←c01098)+16) ) = (word) XR←GetTypeIndex((word) &string11, 0, (word) &string12);
   (* (( (ptr) gf←c01098)+17) ) = (word) XR←GetTypeIndex((word) &string13, 0, (word) &string14);
   (* (( (ptr) gf←c01098)+18) ) = (word) XR←GetTypeIndex((word) &string15, 0, (word) &string16);
   (* (( (ptr) gf←c01098)+19) ) = (word) XR←GetTypeIndex((word) &string17, 0, (word) &string18);
   (* (( (ptr) gf←c01098)+20) ) = (word) XR←GetTypeIndex((word) &string19, 0, (word) &string20);
   (* (( (ptr) gf←c01098)+21) ) = (word) XR←GetTypeIndexS((word) (&string21));
   (* (( (ptr) gf←c01098)+23) ) = (word) XR←GetTypeIndex((word) &string22, 0, (word) &string2);
   (* (( (ptr) gf←c01098)+24) ) = (word) XR←GetTypeIndex((word) &string23, 0, (word) &string14);
   (*  (ptr) (( (bPt) gf←c01098)+100) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string24);
   (*  (ptr) (( (bPt) gf←c01098)+104) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string25);
   (*  (ptr) (( (bPt) gf←c01098)+108) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string26);
   (*  (ptr) (( (bPt) gf←c01098)+112) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string27);
   (*  (ptr) (( (bPt) gf←c01098)+116) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string28);
   (*  (ptr) (( (bPt) gf←c01098)+120) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string29);
   (*  (ptr) (( (bPt) gf←c01098)+124) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string30);
   (*  (ptr) (( (bPt) gf←c01098)+128) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string31);
   (*  (ptr) (( (bPt) gf←c01098)+132) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string32);
   (*  (ptr) (( (bPt) gf←c01098)+136) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string33);
   (*  (ptr) (( (bPt) gf←c01098)+140) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string34);
   (*  (ptr) (( (bPt) gf←c01098)+144) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string35);
   (*  (ptr) (( (bPt) gf←c01098)+148) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string36);
   (*  (ptr) (( (bPt) gf←c01098)+152) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string37);
   (*  (ptr) (( (bPt) gf←c01098)+156) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string38);
   (*  (ptr) (( (bPt) gf←c01098)+160) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string39);
   (*  (ptr) (( (bPt) gf←c01098)+164) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string40);
   (*  (ptr) (( (bPt) gf←c01098)+168) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string41);
   (*  (ptr) (( (bPt) gf←c01098)+172) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string42);
   (*  (ptr) (( (bPt) gf←c01098)+176) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string43);
   (*  (ptr) (( (bPt) gf←c01098)+180) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string44);
   (*  (ptr) (( (bPt) gf←c01098)+184) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string45);
   (*  (ptr) (( (bPt) gf←c01098)+188) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string46);
   (*  (ptr) (( (bPt) gf←c01098)+192) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+9) ), (word) &string47);
   (*  (ptr) (( (bPt) gf←c01098)+196) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+9) ), (word) &string48);
   (*  (ptr) (( (bPt) gf←c01098)+200) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+9) ), (word) &string49);
   (*  (ptr) (( (bPt) gf←c01098)+204) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+9) ), (word) &string50);
   (*  (ptr) (( (bPt) gf←c01098)+208) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+9) ), (word) &string51);
   (*  (ptr) (( (bPt) gf←c01098)+212) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+9) ), (word) &string52);
   (*  (ptr) (( (bPt) gf←c01098)+216) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+9) ), (word) &string53);
   (*  (ptr) (( (bPt) gf←c01098)+220) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string54);
   (*  (ptr) (( (bPt) gf←c01098)+224) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+9) ), (word) &string55);
   (*  (ptr) (( (bPt) gf←c01098)+228) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+9) ), (word) &string56);
   (*  (ptr) (( (bPt) gf←c01098)+232) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string57);
   (*  (ptr) (( (bPt) gf←c01098)+236) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01098)+23) ), (word) &string58);
   (void) XR←DeclareGlobalFrame((word) "GGSliceImplC", &globalframe, (word) XR←GetTypeIndex((word) &string59, 0, (word) &string60)
      , (word) (( (bPt) gf←c01098)+1000)/* var←c82080 */ );
   var←c89376 = (word) XR←ImportInterface((word) "Feedback", (word) XR←GetTypeIndexS((word) (&string61)), 25);
   (* (( (ptr) gf←c01098)+266)/* var←c82304 */  ) = var←c89376;
   var←c89376 = (word) XR←ImportInterface((word) "FunctionCache", (word) XR←GetTypeIndexS((word) (&string62)), 14);
   (* (( (ptr) gf←c01098)+280)/* var←c85056 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 67633154);
   (void) XR←ImportProcS(var←c89376, 1311237);
   (void) XR←ImportProcS(var←c89376, 135005443);
   var←c89376 = (word) XR←ImportInterface((word) "GGBoundBox", (word) XR←GetTypeIndexS((word) (&string63)), 24);
   (* (( (ptr) gf←c01098)+271)/* var←c82752 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 67634434);
   (void) XR←ImportProcS(var←c89376, 68162051);
   (void) XR←ImportProcS(var←c89376, 268699393);
   (void) XR←ImportProcS(var←c89376, 527618);
   (void) XR←ImportProcS(var←c89376, 67371777);
   (void) XR←ImportProcS(var←c89376, 68681990);
   (void) XR←ImportProcS(var←c89376, 67109376);
   var←c89376 = (word) XR←ImportInterface((word) "GGCircles", (word) XR←GetTypeIndexS((word) (&string64)), 29);
   (* (( (ptr) gf←c01098)+268)/* var←c82496 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 403179010);
   (void) XR←ImportProcS(var←c89376, 67899394);
   (void) XR←ImportProcS(var←c89376, 524546);
   (void) XR←ImportProcS(var←c89376, 67108864);
   (void) XR←ImportProcS(var←c89376, 1049091);
   (void) XR←ImportProcS(var←c89376, 67896066);
   var←c89376 = (word) XR←ImportInterface((word) "GGCoreOps", (word) XR←GetTypeIndexS((word) (&string65)), 37);
   (* (( (ptr) gf←c01098)+275)/* var←c83424 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 67641602);
   (void) XR←ImportProcS(var←c89376, 794627);
   (void) XR←ImportProcS(var←c89376, 67641090);
   (void) XR←ImportProcS(var←c89376, 67379713);
   var←c89376 = (word) XR←ImportInterface((word) "GGMUserProfile", (word) XR←GetTypeIndexS((word) (&string66)), 3);
   (* (( (ptr) gf←c01098)+281)/* var←c85344 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 67109120);
   var←c89376 = (word) XR←ImportInterface((word) "GGParseIn", (word) XR←GetTypeIndexS((word) (&string67)), 26);
   (* (( (ptr) gf←c01098)+285)/* var←c87168 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 67373313);
   (void) XR←ImportProcS(var←c89376, 525826);
   (void) XR←ImportProcS(var←c89376, 67375873);
   (void) XR←ImportProcS(var←c89376, 67376129);
   (void) XR←ImportProcS(var←c89376, 67636226);
   (void) XR←ImportProcS(var←c89376, 67376897);
   (void) XR←ImportProcS(var←c89376, 525570);
   (void) XR←ImportProcS(var←c89376, 67375105);
   var←c89376 = (word) XR←ImportInterface((word) "GGParseOut", (word) XR←GetTypeIndexS((word) (&string68)), 15);
   (* (( (ptr) gf←c01098)+283)/* var←c86976 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 526594);
   (void) XR←ImportProcS(var←c89376, 526850);
   (void) XR←ImportProcS(var←c89376, 527106);
   (void) XR←ImportProcS(var←c89376, 524802);
   (void) XR←ImportProcS(var←c89376, 525826);
   var←c89376 = (word) XR←ImportInterface((word) "GGProps", (word) XR←GetTypeIndexS((word) (&string69)), 11);
   (* (( (ptr) gf←c01098)+277)/* var←c83488 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 1050116);
   var←c89376 = (word) XR←ImportInterface((word) "GGSegment", (word) XR←GetTypeIndexS((word) (&string70)), 47);
   (* (( (ptr) gf←c01098)+269)/* var←c82624 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 527362);
   (void) XR←ImportProcS(var←c89376, 67374337);
   (void) XR←ImportProcS(var←c89376, 68944900);
   var←c89376 = (word) XR←ImportInterface((word) "GGShapes", (word) XR←GetTypeIndexS((word) (&string71)), 20);
   (* (( (ptr) gf←c01098)+279)/* var←c84512 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 1314820);
   (void) XR←ImportProcS(var←c89376, 1052419);
   (void) XR←ImportProcS(var←c89376, 1315076);
   var←c89376 = (word) XR←ImportInterface((word) &string72, (word) XR←GetTypeIndexS((word) (&string73)), 128);
   (* (( (ptr) gf←c01098)+267)/* var←c82368 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 278529);
   (void) XR←ImportProcS(var←c89376, 67634178);
   (void) XR←ImportProcS(var←c89376, 67371777);
   (void) XR←ImportProcS(var←c89376, 134511105);
   (void) XR←ImportProcS(var←c89376, 1341701);
   (void) XR←ImportProcS(var←c89376, 134771714);
   (void) XR←ImportProcS(var←c89376, 1078020);
   (void) XR←ImportProcS(var←c89376, 134769666);
   (void) XR←ImportProcS(var←c89376, 470837251);
   (void) XR←ImportProcS(var←c89376, 336094210);
   (void) XR←ImportProcS(var←c89376, 67395585);
   (void) XR←ImportProcS(var←c89376, 810499);
   (void) XR←ImportProcS(var←c89376, 279297);
   (void) XR←ImportProcS(var←c89376, 68189956);
   var←c89376 = (word) XR←ImportInterface((word) "GGSliceOps", (word) XR←GetTypeIndexS((word) (&string74)), 73);
   (* (( (ptr) gf←c01098)+276)/* var←c83456 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 1315333);
   (void) XR←ImportProcS(var←c89376, 67634690);
   (void) XR←ImportProcS(var←c89376, 67377153);
   (void) XR←ImportProcS(var←c89376, 201860354);
   (void) XR←ImportProcS(var←c89376, 67379201);
   (void) XR←ImportProcS(var←c89376, 336078338);
   (void) XR←ImportProcS(var←c89376, 67379713);
   (void) XR←ImportProcS(var←c89376, 67633922);
   (void) XR←ImportProcS(var←c89376, 67901699);
   (void) XR←ImportProcS(var←c89376, 67634434);
   (void) XR←ImportProcS(var←c89376, 1325317);
   var←c89376 = (word) XR←ImportInterface((word) "GGUtility", (word) XR←GetTypeIndexS((word) (&string75)), 42);
   (* (( (ptr) gf←c01098)+287)/* var←c89152 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 67641346);
   var←c89376 = (word) XR←ImportInterface((word) "Imager", (word) XR←GetTypeIndexS((word) (&string76)), 84);
   (* (( (ptr) gf←c01098)+270)/* var←c82656 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 1328387);
   (void) XR←ImportProcS(var←c89376, 801283);
   (void) XR←ImportProcS(var←c89376, 803587);
   (void) XR←ImportProcS(var←c89376, 1591046);
   (void) XR←ImportProcS(var←c89376, 541186);
   (void) XR←ImportProcS(var←c89376, 540930);
   (void) XR←ImportProcS(var←c89376, 540674);
   (void) XR←ImportProcS(var←c89376, 536578);
   (void) XR←ImportProcS(var←c89376, 1331972);
   (void) XR←ImportProcS(var←c89376, 526850);
   (void) XR←ImportProcS(var←c89376, 526338);
   var←c89376 = (word) XR←ImportInterface((word) "ImagerPath", (word) XR←GetTypeIndexS((word) (&string77)), 18);
   (* (( (ptr) gf←c01098)+278)/* var←c83616 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 2097672);
   var←c89376 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string78)), 55);
   (* (( (ptr) gf←c01098)+272)/* var←c82880 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 402927105);
   (void) XR←ImportProcS(var←c89376, 135013634);
   (void) XR←ImportProcS(var←c89376, 67908099);
   (void) XR←ImportProcS(var←c89376, 67908355);
   (void) XR←ImportProcS(var←c89376, 67635458);
   (void) XR←ImportProcS(var←c89376, 67371521);
   (void) XR←ImportProcS(var←c89376, 135013122);
   (void) XR←ImportProcS(var←c89376, 67383041);
   (void) XR←ImportProcS(var←c89376, 134493185);
   (void) XR←ImportProcS(var←c89376, 67634689);
   (void) XR←ImportProcS(var←c89376, 67635970);
   var←c89376 = (word) XR←ImportInterface((word) "IO", (word) XR←GetTypeIndexS((word) (&string79)), 103);
   (* (( (ptr) gf←c01098)+284)/* var←c87008 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 2111493);
   (void) XR←ImportProcS(var←c89376, 528642);
   (void) XR←ImportProcS(var←c89376, 1063171);
   (void) XR←ImportProcS(var←c89376, 1071364);
   var←c89376 = (word) XR←ImportInterface((word) "Lines2d", (word) XR←GetTypeIndexS((word) (&string80)), 50);
   (* (( (ptr) gf←c01098)+286)/* var←c88576 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 67635970);
   var←c89376 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string81)), 36);
   (* (( (ptr) gf←c01098)+274)/* var←c83168 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 67372289);
   var←c89376 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string82)), 43);
   (* (( (ptr) gf←c01098)+282)/* var←c86944 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 67633666);
   var←c89376 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string83)), 21);
   (* (( (ptr) gf←c01098)+273)/* var←c82944 */  ) = var←c89376;
   (void) XR←ImportProcS(var←c89376, 135006210);
   (void) XR←ImportProcS(var←c89376, 135268098);
   (void) XR←ImportProcS(var←c89376, 135267842);
   (void) XR←ImportProcS(var←c89376, 67636737);
   (void) XR←ImportProcS(var←c89376, 68161794);
   (void) XR←ImportProcS(var←c89376, 68161282);
   var←c89376 = (word) XR←ExportInterface((word) &string72, (word) XR←GetTypeIndexS((word) (&string73)), 128);
   (* (( (ptr) gf←c01098)+288)/* var←c89408 */  ) = var←c89376;
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+992)/* var←c82048 */ , 67120896, (word) "BuildCircleSliceClass")
   ;
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+984)/* var←c82016 */ , 68169730, (word) "MakeCircleSlice");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+976)/* var←c81984 */ , 335819009, (word) "CircleGetParams");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+416)/* var←c79744 */ , 67650562, (word) "NoOpBoundBox");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+408)/* var←c79712 */ , 68175108, (word) "NoOpTransformedBoundBox")
   ;
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+400)/* var←c79680 */ , 67651074, (word) "NoOpTightBox");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+392)/* var←c79648 */ , 67651330, (word) "NoOpCopy");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+376)/* var←c79584 */ , 2377737, (word) "NoOpBuildPath");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+368)/* var←c79552 */ , 2115848, (word) "NoOpDrawBorder");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+360)/* var←c79520 */ , 1329669, (word) "NoOpDrawParts");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+352)/* var←c79488 */ , 1592070, (word) "NoOpDrawTransform");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+344)/* var←c79456 */ , 2378761, (word) "NoOpDrawSelectionFeedback")
   ;
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+336)/* var←c79424 */ , 1854727, (word) "NoOpDrawAttractorFeedback")
   ;
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+328)/* var←c79392 */ , 68701702, (word) "NoOpAttractorFeedbackBoundBox")
   ;
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+320)/* var←c79360 */ , 806659, (word) "NoOpSaveSelections");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+312)/* var←c79328 */ , 67653634, (word) "NoOpRemakeSelections")
   ;
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+288)/* var←c79232 */ , 1331461, (word) "NoOpTransform");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+280)/* var←c79200 */ , 67392001, (word) "NoOpDescribe");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+272)/* var←c79168 */ , 67654402, (word) "NoOpDescribeHit");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+264)/* var←c79136 */ , 545794, (word) "NoOpFileout");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+256)/* var←c79104 */ , 68179204, (word) "NoOpFilein");
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+304)/* var←c79296 */ , 68189444, (word) "NoOpSetOrientation")
   ;
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+296)/* var←c79264 */ , 134774274, (word) "NoOpGetOrientation")
   ;
   (void) XR←ExportProcS(var←c89376, (word) (( (bPt) gf←c01098)+248)/* var←c79072 */ , 68189956, (word) "GenericTransformedBoundBox")
   ;
   }

static void GGSliceImplC←P0(formal←c0130, formal←c0129)
   word formal←c0130;
   word formal←c0129;
   {
   register ptr gf←c89440 =  (ptr) &globalframe;
   /* GGSliceImplC: */ 
SOURCE(383, 61415)
   XR←FillWords(&(* (W5Pt) ((( (ptr) gf←c89440)+256)/* var←c82208 */ )), 5, 1);
SOURCE(2626, 24)
   (* (( (ptr) gf←c89440)+4)/* Problem←v5072 */  ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c89440)+266)/* var←c82304 */  ))+28)
    ) );
SOURCE(33154, 24)
   (* (( (ptr) gf←c89440)+5)/* circleLimit←v6164 */  ) = (*  (ptr) &fc84 );
SOURCE(61792, 6)
   (void) Init←P5700();
   }

static word BuildCircleSliceClass←P60()
   {
   register ptr gf←c89472 =  (ptr) &globalframe;
   word class←v9188;
   /* BuildCircleSliceClass: */ 
SOURCE(4352, 2369)
SOURCE(4352, 2369)
   class←v9188 = 0;
SOURCE(4436, 2285)
   {
      word var←c82336;
      var←c82336 = XR←NewObject(252, (* (( (ptr) gf←c89472)+8) ));
      (*  (ptr) var←c82336 ) = (* (( (ptr) gf←c89472)+56) );
      (* (( (ptr) var←c82336)+1) ) = (word) (( (bPt) gf←c89472)+960)/* var←c81920 */ ;
      (* (( (ptr) var←c82336)+2) ) = (* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+131) );
      (* (( (ptr) var←c82336)+3) ) = (word) (( (bPt) gf←c89472)+952)/* var←c81888 */ ;
      (* (( (ptr) var←c82336)+4) ) = (word) (( (bPt) gf←c89472)+936)/* var←c81824 */ ;
      (* (( (ptr) var←c82336)+5) ) = (* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+71) );
      (* (( (ptr) var←c82336)+6) ) = (word) (( (bPt) gf←c89472)+928)/* var←c81792 */ ;
      (* (( (ptr) var←c82336)+7) ) = (word) (( (bPt) gf←c89472)+920)/* var←c81760 */ ;
      (* (( (ptr) var←c82336)+8) ) = (word) (( (bPt) gf←c89472)+912)/* var←c81728 */ ;
      (* (( (ptr) var←c82336)+9) ) = (word) (( (bPt) gf←c89472)+904)/* var←c81696 */ ;
      (* (( (ptr) var←c82336)+10) ) = (word) (( (bPt) gf←c89472)+896)/* var←c81664 */ ;
      (* (( (ptr) var←c82336)+11) ) = (word) (( (bPt) gf←c89472)+888)/* var←c81632 */ ;
      (* (( (ptr) var←c82336)+12) ) = (word) (( (bPt) gf←c89472)+880)/* var←c81600 */ ;
      (* (( (ptr) var←c82336)+13) ) = XR←CheckProc(0);
      (* (( (ptr) var←c82336)+14) ) = (word) (( (bPt) gf←c89472)+784)/* var←c81216 */ ;
      (* (( (ptr) var←c82336)+15) ) = (word) (( (bPt) gf←c89472)+776)/* var←c81184 */ ;
      (* (( (ptr) var←c82336)+16) ) = (word) (( (bPt) gf←c89472)+768)/* var←c81152 */ ;
      (* (( (ptr) var←c82336)+17) ) = (word) (( (bPt) gf←c89472)+752)/* var←c81088 */ ;
      (* (( (ptr) var←c82336)+18) ) = (word) (( (bPt) gf←c89472)+760)/* var←c81120 */ ;
      (* (( (ptr) var←c82336)+19) ) = (word) (( (bPt) gf←c89472)+744)/* var←c81056 */ ;
      (* (( (ptr) var←c82336)+20) ) = (word) (( (bPt) gf←c89472)+736)/* var←c81024 */ ;
      (* (( (ptr) var←c82336)+21) ) = (word) (( (bPt) gf←c89472)+728)/* var←c80992 */ ;
      (* (( (ptr) var←c82336)+22) ) = (word) (( (bPt) gf←c89472)+720)/* var←c80960 */ ;
      (* (( (ptr) var←c82336)+23) ) = (word) (( (bPt) gf←c89472)+704)/* var←c80896 */ ;
      (* (( (ptr) var←c82336)+24) ) = (word) (( (bPt) gf←c89472)+696)/* var←c80864 */ ;
      (* (( (ptr) var←c82336)+25) ) = (word) (( (bPt) gf←c89472)+688)/* var←c80832 */ ;
      (* (( (ptr) var←c82336)+26) ) = (word) (( (bPt) gf←c89472)+680)/* var←c80800 */ ;
      (* (( (ptr) var←c82336)+27) ) = (word) (( (bPt) gf←c89472)+672)/* var←c80768 */ ;
      (* (( (ptr) var←c82336)+28) ) = (word) (( (bPt) gf←c89472)+664)/* var←c80736 */ ;
      (* (( (ptr) var←c82336)+29) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+98) );
      (* (( (ptr) var←c82336)+30) ) = (word) (( (bPt) gf←c89472)+656)/* var←c80704 */ ;
      (* (( (ptr) var←c82336)+31) ) = (word) (( (bPt) gf←c89472)+648)/* var←c80672 */ ;
      (* (( (ptr) var←c82336)+32) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+100) );
      (* (( (ptr) var←c82336)+33) ) = (word) (( (bPt) gf←c89472)+640)/* var←c80640 */ ;
      (* (( (ptr) var←c82336)+34) ) = (word) (( (bPt) gf←c89472)+632)/* var←c80608 */ ;
      (* (( (ptr) var←c82336)+35) ) = (word) (( (bPt) gf←c89472)+624)/* var←c80576 */ ;
      (* (( (ptr) var←c82336)+36) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+104) );
      (* (( (ptr) var←c82336)+37) ) = (word) (( (bPt) gf←c89472)+608)/* var←c80512 */ ;
      (* (( (ptr) var←c82336)+38) ) = (word) (( (bPt) gf←c89472)+600)/* var←c80480 */ ;
      (* (( (ptr) var←c82336)+39) ) = (word) (( (bPt) gf←c89472)+592)/* var←c80448 */ ;
      (* (( (ptr) var←c82336)+40) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+108) );
      (* (( (ptr) var←c82336)+41) ) = (word) (( (bPt) gf←c89472)+584)/* var←c80416 */ ;
      (* (( (ptr) var←c82336)+42) ) = (word) (( (bPt) gf←c89472)+576)/* var←c80384 */ ;
      (* (( (ptr) var←c82336)+43) ) = (word) (( (bPt) gf←c89472)+568)/* var←c80352 */ ;
      (* (( (ptr) var←c82336)+44) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+112) );
      (* (( (ptr) var←c82336)+45) ) = (word) (( (bPt) gf←c89472)+560)/* var←c80320 */ ;
      (* (( (ptr) var←c82336)+46) ) = (word) (( (bPt) gf←c89472)+544)/* var←c80256 */ ;
      (* (( (ptr) var←c82336)+47) ) = (word) (( (bPt) gf←c89472)+536)/* var←c80224 */ ;
      (* (( (ptr) var←c82336)+48) ) = (word) (( (bPt) gf←c89472)+528)/* var←c80192 */ ;
      (* (( (ptr) var←c82336)+49) ) = (word) (( (bPt) gf←c89472)+520)/* var←c80160 */ ;
      (* (( (ptr) var←c82336)+50) ) = (word) (( (bPt) gf←c89472)+512)/* var←c80128 */ ;
      (* (( (ptr) var←c82336)+51) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+119) );
      (* (( (ptr) var←c82336)+52) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+120) );
      (* (( (ptr) var←c82336)+53) ) = (word) (( (bPt) gf←c89472)+504)/* var←c80096 */ ;
      (* (( (ptr) var←c82336)+54) ) = (word) (( (bPt) gf←c89472)+496)/* var←c80064 */ ;
      (* (( (ptr) var←c82336)+55) ) = (word) (( (bPt) gf←c89472)+488)/* var←c80032 */ ;
      (* (( (ptr) var←c82336)+56) ) = (word) (( (bPt) gf←c89472)+480)/* var←c80000 */ ;
      (* (( (ptr) var←c82336)+57) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+125) );
      (* (( (ptr) var←c82336)+58) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c89472)+267)/* var←c82368 */  ))+126) );
      (* (( (ptr) var←c82336)+59) ) = (word) (( (bPt) gf←c89472)+472)/* var←c79968 */ ;
      (* (( (ptr) var←c82336)+60) ) = (word) (( (bPt) gf←c89472)+464)/* var←c79936 */ ;
      (* (( (ptr) var←c82336)+61) ) = (word) (( (bPt) gf←c89472)+456)/* var←c79904 */ ;
      (* (( (ptr) var←c82336)+62) ) = (word) (( (bPt) gf←c89472)+448)/* var←c79872 */ ;
      class←v9188 = var←c82336;
      };
SOURCE(4352, 2369)
   return(class←v9188);
   }

static word MakeCircleSlice←P120(origin←v9248, outerPoint←v9276)
   W2 origin←v9248;
   W2 outerPoint←v9276;
   {
   register ptr gf←c89504 =  (ptr) &globalframe;
   word sliceD←v9320;
   word circleData←v20536;
   word circleParts←v20564;
   word slice←v20592 = 0;
   /* MakeCircleSlice: */ 
SOURCE(6727, 1538)
SOURCE(6727, 1538)
   sliceD←v9320 = 0;
SOURCE(6829, 43)
   circleData←v20536 = XR←NewObject(136, (* (( (ptr) gf←c89504)+12) ));
   (* (( (ptr) circleData←v20536)+12) ) = 1;
SOURCE(6874, 69)
   circleParts←v20564 = XR←NewObject(24, (* (( (ptr) gf←c89504)+13) ));
SOURCE(6959, 66)
   {
      W2 var←c82464;
      var←c82464.f0 = (*  (ptr) &fc85 );
      var←c82464.f1 = (*  (ptr) &fc85 );
      {
         word pd86;
         pd86 = (* (( (ptr) (* (( (ptr) gf←c89504)+268)/* var←c82496 */  ))+7) );
         (*  (ptr) circleData←v20536 ) = (word) ( *( (fPt) ((*  (ptr) pd86 ))))(var←c82464, (*  (ptr) &fc87 ), pd86);
         };
      };
SOURCE(7027, 34)
   (*  (W2Pt) (( (ptr) circleData←v20536)+9) ) = outerPoint←v9276;
SOURCE(7063, 77)
   {
      W2 var←c82528;
      W2 var←c82560;
      W2 var←c82592;
      var←c82528.f0 = (*  (ptr) &fc88 );
      var←c82528.f1 = (*  (ptr) &fc85 );
      var←c82560.f0 = (*  (ptr) &fc87 );
      var←c82560.f1 = (*  (ptr) &fc87 );
      var←c82592.f0 = (*  (ptr) &fc88 );
      var←c82592.f1 = (*  (ptr) &fc85 );
      {
         word pd89;
         pd89 = (* (( (ptr) (* (( (ptr) gf←c89504)+269)/* var←c82624 */  ))+8) );
         (* (( (ptr) circleData←v20536)+33) ) = (word) ( *( (fPt) ((*  (ptr) pd89 ))))(var←c82528, var←c82560, var←c82592, 0, pd89)
         ;
         };
      };
SOURCE(7142, 26)
   (*  (W2Pt) (( (ptr) (* (( (ptr) circleData←v20536)+33) ))+9) ) = origin←v9248;
SOURCE(7170, 30)
   (*  (W2Pt) (( (ptr) (* (( (ptr) circleData←v20536)+33) ))+11) ) = outerPoint←v9276;
SOURCE(7202, 32)
   (* (( (ptr) (* (( (ptr) circleData←v20536)+33) ))+2) ) = (*  (ptr) &fc90 );
SOURCE(7236, 35)
   (* (( (ptr) (* (( (ptr) circleData←v20536)+33) ))+8) ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c89504)+270)/* var←c82656 */  ))+54)
    ) );
SOURCE(7273, 228)
   {
      word var←c82688;
      word var←c82720;
      word var←c82784;
      word var←c82816;
      {
         word pd91;
         pd91 = (* (( (ptr) (* (( (ptr) gf←c89504)+267)/* var←c82368 */  ))+7) );
         var←c82688 = (word) ( *( (fPt) ((*  (ptr) pd91 ))))((* ((( (ptr) gf←c89504)+56)) ), pd91);
         };
      {
         word pd92;
         pd92 = (* (( (ptr) (* (( (ptr) gf←c89504)+271)/* var←c82752 */  ))+6) );
         var←c82720 = (word) ( *( (fPt) ((*  (ptr) pd92 ))))(pd92);
         };
      {
         word pd93;
         pd93 = (* (( (ptr) (* (( (ptr) gf←c89504)+271)/* var←c82752 */  ))+6) );
         var←c82784 = (word) ( *( (fPt) ((*  (ptr) pd93 ))))(pd93);
         };
      var←c82816 = XR←NewObject(92, (* (( (ptr) gf←c89504)+14) ));
      (*  (ptr) var←c82816 ) = var←c82688;
      (* (( (ptr) var←c82816)+1) ) = circleData←v20536;
      (*  (W4Pt) (( (ptr) var←c82816)+3) ) = (*  (W4Pt) (( (ptr) gf←c89504)+252)/* var←c82144 */  );
      (* (( (ptr) var←c82816)+13) ) = var←c82720;
      (* (( (ptr) var←c82816)+15) ) = var←c82784;
      (* (( (ptr) var←c82816)+21) ) =  (word) -1;
      slice←v20592 = var←c82816;
      };
SOURCE(7503, 62)
   {
      word pd94;
      pd94 = (* (( (ptr) (* (( (ptr) gf←c89504)+267)/* var←c82368 */  ))+8) );
      (* (( (ptr) slice←v20592)+11) ) = (word) ( *( (fPt) ((*  (ptr) pd94 ))))(slice←v20592, 0, pd94);
      };
SOURCE(7567, 80)
   if (XR←EqualWords(&origin←v9248, &outerPoint←v9276, 2)) {
SOURCE(7593, 54)
      {
         word x95;
         word x97;
         *(float*)(( (ptr) circleData←v20536)+9) = (
            x95 = origin←v9248.f0,  *(float*)&x95
            ) + (
            x97 = (*  (ptr) &fc96 ),  *(float*)&x97
            );
         };
      {
         word x98;
         word x99;
         *(float*)(( (ptr) circleData←v20536)+10) = (
            x98 = origin←v9248.f1,  *(float*)&x98
            ) + (
            x99 = (*  (ptr) &fc96 ),  *(float*)&x99
            );
         };
      };
SOURCE(7678, 144)
   {
      word var←c82848;
      word var←c82912;
      {
         word pd100;
         pd100 = (* (( (ptr) (* (( (ptr) gf←c89504)+272)/* var←c82880 */  ))+10) );
         var←c82848 = (word) ( *( (fPt) ((*  (ptr) pd100 ))))(origin←v9248, pd100);
         };
      {
         word pd101;
         pd101 = (* (( (ptr) (* (( (ptr) gf←c89504)+273)/* var←c82944 */  ))+19) );
         var←c82912 = (word) ( *( (fPt) ((*  (ptr) pd101 ))))(origin←v9248, (*  (W2Pt) (( (ptr) circleData←v20536)+9) ), pd101);
         };
      {
         word pd102;
         pd102 = (* (( (ptr) (* (( (ptr) gf←c89504)+272)/* var←c82880 */  ))+15) );
         (* (( (ptr) circleData←v20536)+1) ) = (word) ( *( (fPt) ((*  (ptr) pd102 ))))(var←c82848, var←c82912, pd102);
         };
      };
SOURCE(7824, 76)
   {
      word pd103;
      pd103 = (* (( (ptr) (* (( (ptr) gf←c89504)+272)/* var←c82880 */  ))+56) );
      (void) ( *( (fPt) ((*  (ptr) pd103 ))))((word) (( (bPt) circleData←v20536)+8), (* (( (ptr) circleData←v20536)+1) ), pd103)
      ;
      };
SOURCE(7902, 70)
   {
      word pd104;
      pd104 = (* (( (ptr) (* (( (ptr) gf←c89504)+272)/* var←c82880 */  ))+51) );
      (* (( (ptr) circleData←v20536)+6) ) = (word) ( *( (fPt) ((*  (ptr) pd104 ))))((* ((( (ptr) circleData←v20536)+1)) ), pd104)
      ;
      };
SOURCE(7974, 81)
   {
      word pd105;
      pd105 = (* (( (ptr) (* (( (ptr) gf←c89504)+272)/* var←c82880 */  ))+56) );
      (void) ( *( (fPt) ((*  (ptr) pd105 ))))((word) (( (bPt) circleData←v20536)+28), (* (( (ptr) circleData←v20536)+6) ), pd105)
      ;
      };
SOURCE(8057, 29)
   (* (( (ptr) circleData←v20536)+4) ) = 1;
SOURCE(8088, 119)
   {
      word var←c82976;
      {
         word pd106;
         pd106 = (* (( (ptr) (* (( (ptr) gf←c89504)+273)/* var←c82944 */  ))+19) );
         var←c82976 = (word) ( *( (fPt) ((*  (ptr) pd106 ))))(origin←v9248, (*  (W2Pt) (( (ptr) circleData←v20536)+9) ), pd106);
         };
      {
         word pd107;
         pd107 = (* (( (ptr) (* (( (ptr) gf←c89504)+268)/* var←c82496 */  ))+7) );
         (* (( (ptr) circleData←v20536)+5) ) = (word) ( *( (fPt) ((*  (ptr) pd107 ))))(origin←v9248, var←c82976, pd107);
         };
      };
SOURCE(8209, 56)
   {
      word pd108;
      pd108 = (* (( (ptr) (* (( (ptr) gf←c89504)+267)/* var←c82368 */  ))+8) );
      sliceD←v9320 = (word) ( *( (fPt) ((*  (ptr) pd108 ))))(slice←v20592, circleParts←v20564, pd108);
      };
SOURCE(6727, 1538)
   return(sliceD←v9320);
   }

static void CircleGetParams←P180(formal←c0157, slice←v9380)
   word formal←c0157;
   word slice←v9380;
   {
   register ptr gf←c89536 =  (ptr) &globalframe;
   W2 origin←v9424;
   W2 outerPoint←v9452;
   word transform←v9480;
   word data←v20636;
   /* CircleGetParams: */ 
SOURCE(8271, 231)
SOURCE(8271, 231)
   transform←v9480 = 0;
SOURCE(8389, 37)
   data←v20636 = XR←Narrow((* (( (ptr) slice←v9380)+1) ), (* (( (ptr) gf←c89536)+12) ));
SOURCE(8428, 20)
   origin←v9424 = (*  (W2Pt) (( (ptr) (* (( (ptr) data←v20636)+33) ))+9) );
SOURCE(8450, 24)
   outerPoint←v9452 = (*  (W2Pt) (( (ptr) (* (( (ptr) data←v20636)+33) ))+11) );
SOURCE(8476, 26)
   transform←v9480 = (* (( (ptr) data←v20636)+1) );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0157 ) = origin←v9424;
   (*  (W2Pt) (( (ptr) formal←c0157)+2) ) = outerPoint←v9452;
   (* (( (ptr) formal←c0157)+4) ) = transform←v9480;
   return;
   }

static void CircleGetBoundBoxAux←P240(formal←c0165, slice←v9540, parts←v9568)
   word formal←c0165;
   word slice←v9540;
   word parts←v9568;
   {
   W6 var←c89568;
   register ptr gf←c89600 =  (ptr) &globalframe;
   word tightBox←v9612;
   word boundBox←v9640;
   /* declaration of var←c83008 skipped */ 
   /* CircleGetBoundBoxAux: */ 
SOURCE(8508, 1359)
   {
      word tmpAddr109;
      tmpAddr109 = (word) (( (ptr) &var←c89568)+4)/* var←c83008 */ ;
      (*  (ptr) tmpAddr109 ) = ( ((word)  (fPt) CircleFindBoundBox←P5760) );
      (* (( (ptr) tmpAddr109) + 1) ) = 1;
      };
SOURCE(8508, 1359)
   tightBox←v9612 = 0;
SOURCE(8508, 1359)
   boundBox←v9640 = 0;
SOURCE(9547, 55)
   {
      W2 var←c83040;
      (void) CircleFindBoundBox←P5760((word) &var←c83040, slice←v9540, parts←v9568, (word) (( (bPt) &var←c89568)+16)/* var←c83008 */ )
      ;
      boundBox←v9640 = var←c83040.f1;
      tightBox←v9612 = var←c83040.f0;
      };
SOURCE(9631, 236)
   if ((parts←v9568 == 0)) {
SOURCE(9698, 34)
      {
         word pd110;
         pd110 = (* (( (ptr) (* (( (ptr) gf←c89600)+267)/* var←c82368 */  ))+68) );
         (void) ( *( (fPt) ((*  (ptr) pd110 ))))((* ((( (ptr) slice←v9540)+2)) ), pd110);
         };
SOURCE(9764, 25)
      (* (( (ptr) slice←v9540)+15) ) = boundBox←v9640;
SOURCE(9791, 25)
      (* (( (ptr) slice←v9540)+13) ) = tightBox←v9612;
SOURCE(9818, 21)
      (* (( (ptr) slice←v9540)+16) ) = 1;
SOURCE(9841, 26)
      (* (( (ptr) slice←v9540)+14) ) = 1;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0165 ) = tightBox←v9612;
   (* (( (ptr) formal←c0165)+1) ) = boundBox←v9640;
   return;
   }

static void CircleFindBoundBox←P5760(formal←c0186, slice←v20756, parts←v20784, formal←c89664)
   word formal←c0186;
   word slice←v20756;
   word parts←v20784;
   word formal←c89664;
   {
   register ptr gf←c89632 =  (ptr) &globalframe;
   word tightBox←v20828;
   word boundBox←v20856;
   word strokeWidth←v20884;
   word pad←v20912;
   word circleData←v20940;
   W2 origin←v20996;
   W2 minor←v21024;
   W2 major←v21052;
   word minorDS←v21080;
   word majorDS←v21108;
   word tMax←v21136;
   word radius←v21164;
   formal←c89664 = (formal←c89664 - 16);
   /* CircleFindBoundBox: */ 
SOURCE(8612, 929)
SOURCE(8612, 929)
   tightBox←v20828 = 0;
SOURCE(8612, 929)
   boundBox←v20856 = 0;
SOURCE(8714, 66)
   strokeWidth←v20884 = (* (( (ptr) (* (( (ptr) XR←Narrow((* (( (ptr) slice←v20756)+1) ), (* (( (ptr) gf←c89632)+12) )))+33)
       ))+2) );
SOURCE(8782, 23)
   pad←v20912 = strokeWidth←v20884;
SOURCE(8807, 43)
   circleData←v20940 = XR←Narrow((* (( (ptr) slice←v20756)+1) ), (* (( (ptr) gf←c89632)+12) ));
SOURCE(8876, 80)
   {
      W2 var←c0175;
      {
         W2 var←c83072;
         var←c83072.f0 = (*  (ptr) &fc85 );
         var←c83072.f1 = (*  (ptr) &fc85 );
         {
            word pd111;
            pd111 = (* (( (ptr) (* (( (ptr) gf←c89632)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd111 ))))((word) &var←c0175, (* (( (ptr) circleData←v20940)+1) ), var←c83072, pd111);
            };
         };
      origin←v20996 = var←c0175;
      };
SOURCE(8958, 79)
   {
      W2 var←c0178;
      {
         W2 var←c83104;
         var←c83104.f0 = (*  (ptr) &fc85 );
         var←c83104.f1 = (*  (ptr) &fc87 );
         {
            word pd112;
            pd112 = (* (( (ptr) (* (( (ptr) gf←c89632)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd112 ))))((word) &var←c0178, (* (( (ptr) circleData←v20940)+1) ), var←c83104, pd112);
            };
         };
      minor←v21024 = var←c0178;
      };
SOURCE(9045, 79)
   {
      W2 var←c0181;
      {
         W2 var←c83136;
         var←c83136.f0 = (*  (ptr) &fc87 );
         var←c83136.f1 = (*  (ptr) &fc85 );
         {
            word pd113;
            pd113 = (* (( (ptr) (* (( (ptr) gf←c89632)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd113 ))))((word) &var←c0181, (* (( (ptr) circleData←v20940)+1) ), var←c83136, pd113);
            };
         };
      major←v21052 = var←c0181;
      };
SOURCE(9136, 56)
   {
      word pd114;
      pd114 = (* (( (ptr) (* (( (ptr) gf←c89632)+273)/* var←c82944 */  ))+21) );
      minorDS←v21080 = (word) ( *( (fPt) ((*  (ptr) pd114 ))))(minor←v21024, origin←v20996, pd114);
      };
SOURCE(9194, 56)
   {
      word pd115;
      pd115 = (* (( (ptr) (* (( (ptr) gf←c89632)+273)/* var←c82944 */  ))+21) );
      majorDS←v21108 = (word) ( *( (fPt) ((*  (ptr) pd115 ))))(major←v21052, origin←v20996, pd115);
      };
SOURCE(9252, 34)
   {
      word x116;
      float tf117;
      float tf118;
      word x119;
      float tf120;
      tMax←v21136 = (
         tf120 = FMAX((
               x116 = minorDS←v21080,  *(float*)&x116
               ), (
               x119 = majorDS←v21108,  *(float*)&x119
               ), tf117, tf118),  *(word*)&tf120
         );
      };
SOURCE(9288, 33)
   {
      word pd121;
      pd121 = (* (( (ptr) (* (( (ptr) gf←c89632)+274)/* var←c83168 */  ))+9) );
      radius←v21164 = (word) ( *( (fPt) ((*  (ptr) pd121 ))))(tMax←v21136, pd121);
      };
SOURCE(9323, 104)
   {
      word pd122;
      word x123;
      word x124;
      float tf125;
      word x126;
      word x127;
      float tf128;
      word x129;
      word x130;
      float tf131;
      word x132;
      word x133;
      float tf134;
      pd122 = (* (( (ptr) (* (( (ptr) gf←c89632)+271)/* var←c82752 */  ))+5) );
      tightBox←v20828 = (word) ( *( (fPt) ((*  (ptr) pd122 ))))((
            tf125 = (
               x123 = origin←v20996.f0,  *(float*)&x123
               ) - (
               x124 = radius←v21164,  *(float*)&x124
               ),  *(word*)&tf125
            ), (
            tf128 = (
               x126 = origin←v20996.f1,  *(float*)&x126
               ) - (
               x127 = radius←v21164,  *(float*)&x127
               ),  *(word*)&tf128
            ), (
            tf131 = (
               x129 = origin←v20996.f0,  *(float*)&x129
               ) + (
               x130 = radius←v21164,  *(float*)&x130
               ),  *(word*)&tf131
            ), (
            tf134 = (
               x132 = origin←v20996.f1,  *(float*)&x132
               ) + (
               x133 = radius←v21164,  *(float*)&x133
               ),  *(word*)&tf134
            ), 0, 0, pd122);
      };
SOURCE(9429, 44)
   {
      word pd135;
      pd135 = (* (( (ptr) (* (( (ptr) gf←c89632)+271)/* var←c82752 */  ))+7) );
      boundBox←v20856 = (word) ( *( (fPt) ((*  (ptr) pd135 ))))(tightBox←v20828, pd135);
      };
SOURCE(9475, 41)
   {
      word pd136;
      pd136 = (* (( (ptr) (* (( (ptr) gf←c89632)+271)/* var←c82752 */  ))+17) );
      (void) ( *( (fPt) ((*  (ptr) pd136 ))))(boundBox←v20856, pad←v20912, pd136);
      };
SOURCE(9518, 23)
   (void) CircleSetScaling←P420(slice←v20756);
   /* removed tail goto */ 
   (*  (ptr) formal←c0186 ) = tightBox←v20828;
   (* (( (ptr) formal←c0186)+1) ) = boundBox←v20856;
   return;
   }

static word CircleGetBoundBox←P300(slice←v9700, parts←v9728)
   word slice←v9700;
   word parts←v9728;
   {
   word box←v9772;
   /* CircleGetBoundBox: */ 
SOURCE(9876, 211)
SOURCE(9876, 211)
   box←v9772 = 0;
SOURCE(9962, 59)
   if ( ( (0 != (* (( (ptr) slice←v9700)+16) )) ? (parts←v9728 == 0) : 0 ) ) {
SOURCE(9999, 22)
      return((* (( (ptr) slice←v9700)+15) ));
      };
SOURCE(10036, 51)
   {
      word var←c01210;
      W2 var←c0190;
      (void) CircleGetBoundBoxAux←P240((word) &var←c0190, slice←v9700, parts←v9728);
      var←c01210 = var←c0190.f1;
      return(var←c01210);
      };
   }

static word CircleGetTightBox←P360(slice←v9832, parts←v9860)
   word slice←v9832;
   word parts←v9860;
   {
   word box←v9904;
   /* CircleGetTightBox: */ 
SOURCE(10121, 211)
SOURCE(10121, 211)
   box←v9904 = 0;
SOURCE(10207, 59)
   if ( ( (0 != (* (( (ptr) slice←v9832)+16) )) ? (parts←v9860 == 0) : 0 ) ) {
SOURCE(10244, 22)
      return((* (( (ptr) slice←v9832)+13) ));
      };
SOURCE(10281, 51)
   {
      word var←c01211;
      W2 var←c0194;
      (void) CircleGetBoundBoxAux←P240((word) &var←c0194, slice←v9832, parts←v9860);
      var←c01211 = var←c0194.f0;
      return(var←c01211);
      };
   }

static void CircleSetScaling←P420(slice←v9964)
   word slice←v9964;
   {
   register ptr gf←c89696 =  (ptr) &globalframe;
   word circleData←v21236;
   W2 origin←v21264;
   W2 major←v21292;
   /* CircleSetScaling: */ 
SOURCE(10366, 569)
SOURCE(10432, 43)
   circleData←v21236 = XR←Narrow((* (( (ptr) slice←v9964)+1) ), (* (( (ptr) gf←c89696)+12) ));
SOURCE(10477, 80)
   {
      W2 var←c0199;
      {
         W2 var←c83264;
         var←c83264.f0 = (*  (ptr) &fc85 );
         var←c83264.f1 = (*  (ptr) &fc85 );
         {
            word pd137;
            pd137 = (* (( (ptr) (* (( (ptr) gf←c89696)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd137 ))))((word) &var←c0199, (* (( (ptr) circleData←v21236)+1) ), var←c83264, pd137);
            };
         };
      origin←v21264 = var←c0199;
      };
SOURCE(10559, 79)
   {
      W2 var←c0202;
      {
         W2 var←c83296;
         var←c83296.f0 = (*  (ptr) &fc87 );
         var←c83296.f1 = (*  (ptr) &fc85 );
         {
            word pd138;
            pd138 = (* (( (ptr) (* (( (ptr) gf←c89696)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd138 ))))((word) &var←c0202, (* (( (ptr) circleData←v21236)+1) ), var←c83296, pd138);
            };
         };
      major←v21292 = var←c0202;
      };
SOURCE(10640, 240)
   {
      float tf139;
      word x140;
      word x141;
      word x143;
      if ((FABS(((
            x140 = (* (( (ptr) circleData←v21236)+7) ),  *(float*)&x140
            ) - (
            x141 = (* (( (ptr) circleData←v21236)+8) ),  *(float*)&x141
            )), tf139) < (
         x143 = (*  (ptr) &fc142 ),  *(float*)&x143
         ))) {
SOURCE(10719, 91)
         {
            word pd144;
            pd144 = (* (( (ptr) (* (( (ptr) gf←c89696)+268)/* var←c82496 */  ))+6) );
            (void) ( *( (fPt) ((*  (ptr) pd144 ))))(origin←v21264, (* (( (ptr) circleData←v21236)+2) ), (* (( (ptr) circleData←v21236)+5)
                ), pd144);
            };
SOURCE(10812, 29)
         (* (( (ptr) circleData←v21236)+4) ) = 1;
         }
      else {
SOURCE(10850, 30)
         (* (( (ptr) circleData←v21236)+4) ) = 0;
         };
      };
SOURCE(10882, 26)
   (*  (W2Pt) (( (ptr) (* (( (ptr) circleData←v21236)+33) ))+9) ) = origin←v21264;
SOURCE(10910, 25)
   (*  (W2Pt) (( (ptr) (* (( (ptr) circleData←v21236)+33) ))+11) ) = major←v21292;
   }

static word CircleCopy←P480(slice←v10024, parts←v10052)
   word slice←v10024;
   word parts←v10052;
   {
   register ptr gf←c89728 =  (ptr) &globalframe;
   word copy←v10096;
   word copySlice←v21336 = 0;
   word circleData←v21364;
   word newData←v21392 = 0;
   word copyD←v21420;
   /* CircleCopy: */ 
SOURCE(10941, 1092)
SOURCE(10941, 1092)
   copy←v10096 = 0;
SOURCE(11050, 43)
   circleData←v21364 = XR←Narrow((* (( (ptr) slice←v10024)+1) ), (* (( (ptr) gf←c89728)+12) ));
SOURCE(11116, 64)
   {
      W2 var←c83328;
      W2 var←c83360;
      var←c83328.f0 = (*  (ptr) &fc85 );
      var←c83328.f1 = (*  (ptr) &fc85 );
      var←c83360.f0 = (*  (ptr) &fc87 );
      var←c83360.f1 = (*  (ptr) &fc87 );
      copyD←v21420 = (word) MakeCircleSlice←P120(var←c83328, var←c83360);
      };
SOURCE(11182, 23)
   copySlice←v21336 = (*  (ptr) copyD←v21420 );
SOURCE(11207, 32)
   newData←v21392 = XR←Narrow((* (( (ptr) copySlice←v21336)+1) ), (* (( (ptr) gf←c89728)+12) ));
SOURCE(11241, 67)
   {
      word pd145;
      pd145 = (* (( (ptr) (* (( (ptr) gf←c89728)+272)/* var←c82880 */  ))+6) );
      (* (( (ptr) newData←v21392)+1) ) = (word) ( *( (fPt) ((*  (ptr) pd145 ))))((* ((( (ptr) circleData←v21364)+1)) ), pd145);
      };
SOURCE(11310, 32)
   (*  (W2Pt) (( (ptr) newData←v21392)+2) ) = (*  (W2Pt) (( (ptr) circleData←v21364)+2) );
SOURCE(11344, 63)
   {
      word pd146;
      pd146 = (* (( (ptr) (* (( (ptr) gf←c89728)+272)/* var←c82880 */  ))+6) );
      (* (( (ptr) newData←v21392)+6) ) = (word) ( *( (fPt) ((*  (ptr) pd146 ))))((* ((( (ptr) circleData←v21364)+6)) ), pd146);
      };
SOURCE(11409, 46)
   (*  (W2Pt) (( (ptr) newData←v21392)+7) ) = (*  (W2Pt) (( (ptr) circleData←v21364)+7) );
SOURCE(11457, 44)
   (* (( (ptr) newData←v21392)+4) ) = (* (( (ptr) circleData←v21364)+4) );
SOURCE(11503, 52)
   {
      word pd147;
      pd147 = (* (( (ptr) (* (( (ptr) gf←c89728)+268)/* var←c82496 */  ))+4) );
      (* (( (ptr) newData←v21392)+5) ) = (word) ( *( (fPt) ((*  (ptr) pd147 ))))(pd147);
      };
SOURCE(11557, 77)
   {
      word pd148;
      pd148 = (* (( (ptr) (* (( (ptr) gf←c89728)+268)/* var←c82496 */  ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd148 ))))((* (( (ptr) circleData←v21364)+5) ), (* (( (ptr) newData←v21392)+5) ), pd148);
      };
SOURCE(11636, 51)
   {
      word pd149;
      pd149 = (* (( (ptr) (* (( (ptr) gf←c89728)+269)/* var←c82624 */  ))+17) );
      (* (( (ptr) newData←v21392)+33) ) = (word) ( *( (fPt) ((*  (ptr) pd149 ))))((* ((( (ptr) circleData←v21364)+33)) ), pd149)
      ;
      };
SOURCE(11689, 36)
   (* (( (ptr) newData←v21392)+12) ) = (* (( (ptr) circleData←v21364)+12) );
SOURCE(11727, 122)
   {
      register word index←v21464 = 0;
      if (( (int)index←v21464 >  (int)4)) {
         goto lab←L100003;
         };
      lab←L100006: ;
SOURCE(11773, 76)
      (* (( (W4Pt) (( (ptr) newData←v21392)+13))+BCK(index←v21464, 5)) ) = (* (( (W4Pt) (( (ptr) circleData←v21364)+13))+BCK(index←v21464, 5)
         ) );
      if (( (int)index←v21464 >=  (int)4)) {
         goto lab←L100003;
         };
      index←v21464 = (index←v21464 + 1);
      goto lab←L100006;
      lab←L100003: ;
      };
SOURCE(11860, 93)
   {
      word var←c83392;
      {
         word pd150;
         pd150 = (* (( (ptr) (* (( (ptr) gf←c89728)+275)/* var←c83424 */  ))+38) );
         var←c83392 = (word) ( *( (fPt) ((*  (ptr) pd150 ))))((* ((( (ptr) circleData←v21364)+11)) ), pd150);
         };
      {
         word pd151;
         pd151 = (* (( (ptr) (* (( (ptr) gf←c89728)+276)/* var←c83456 */  ))+61) );
         (void) ( *( (fPt) ((*  (ptr) pd151 ))))(copySlice←v21336, 0, var←c83392, (* (( (ptr) gf←c89728)+54) ), 0, pd151);
         };
      };
SOURCE(11955, 53)
   {
      word pd152;
      pd152 = (* (( (ptr) (* (( (ptr) gf←c89728)+277)/* var←c83488 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd152 ))))(slice←v10024, copySlice←v21336, 0, 0, pd152);
      };
SOURCE(12010, 23)
   {
      word var←c83552;
      word var←c83584;
      var←c83552 = XR←NewObject(8, (* (( (ptr) gf←c89728)+17) ));
      var←c83584 = var←c83552;
      (*  (ptr) var←c83584 ) = copySlice←v21336;
      return(var←c83552);
      };
   }

static void CircleRestore←P540(from←v10240, to←v10268)
   word from←v10240;
   word to←v10268;
   {
   register ptr gf←c89760 =  (ptr) &globalframe;
   /* CircleRestore: */ 
SOURCE(12039, 1302)
SOURCE(12088, 27)
   if ((to←v10268 == 0) || (from←v10240 == 0)) {
SOURCE(12115, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(12122, 28)
   if (((*  (ptr) to←v10268 ) != (*  (ptr) from←v10240 ))) {
SOURCE(12150, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(12157, 30)
   if (((*  (ptr) (*  (ptr) to←v10268 ) ) != (* (( (ptr) gf←c89760)+56) ))) {
SOURCE(12187, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(12194, 1149)
   {
      word fromData←v21508;
      word toData←v21536;
SOURCE(12200, 40)
      fromData←v21508 = XR←Narrow((* (( (ptr) from←v10240)+1) ), (* (( (ptr) gf←c89760)+12) ));
SOURCE(12242, 36)
      toData←v21536 = XR←Narrow((* (( (ptr) to←v10268)+1) ), (* (( (ptr) gf←c89760)+12) ));
SOURCE(12281, 530)
      if ((0 != (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c89760)+267)/* var←c82368 */  ))+67) ) ))) {
SOURCE(12311, 31)
         (*  (ptr) toData←v21536 ) = (*  (ptr) fromData←v21508 );
SOURCE(12344, 37)
         (* (( (ptr) toData←v21536)+1) ) = (* (( (ptr) fromData←v21508)+1) );
SOURCE(12383, 29)
         (*  (W2Pt) (( (ptr) toData←v21536)+2) ) = (*  (W2Pt) (( (ptr) fromData←v21508)+2) );
SOURCE(12414, 41)
         (* (( (ptr) toData←v21536)+4) ) = (* (( (ptr) fromData←v21508)+4) );
SOURCE(12457, 43)
         (* (( (ptr) toData←v21536)+5) ) = (* (( (ptr) fromData←v21508)+5) );
SOURCE(12502, 33)
         (* (( (ptr) toData←v21536)+6) ) = (* (( (ptr) fromData←v21508)+6) );
SOURCE(12537, 43)
         (*  (W2Pt) (( (ptr) toData←v21536)+7) ) = (*  (W2Pt) (( (ptr) fromData←v21508)+7) );
SOURCE(12582, 39)
         (*  (W2Pt) (( (ptr) toData←v21536)+9) ) = (*  (W2Pt) (( (ptr) fromData←v21508)+9) );
SOURCE(12623, 37)
         (* (( (ptr) toData←v21536)+11) ) = (* (( (ptr) fromData←v21508)+11) );
SOURCE(12662, 33)
         (* (( (ptr) toData←v21536)+12) ) = (* (( (ptr) fromData←v21508)+12) );
SOURCE(12697, 59)
         (*  (W20Pt) (( (ptr) toData←v21536)+13) ) = (*  (W20Pt) (( (ptr) fromData←v21508)+13) );
SOURCE(12758, 25)
         (* (( (ptr) toData←v21536)+33) ) = (* (( (ptr) fromData←v21508)+33) );
         }
      else {
SOURCE(12792, 19)
         (* (( (ptr) to←v10268)+1) ) = (* (( (ptr) from←v10240)+1) );
         };
SOURCE(12814, 39)
      (*  (W4Pt) (( (ptr) to←v10268)+3) ) = (*  (W4Pt) (( (ptr) from←v10240)+3) );
SOURCE(12873, 28)
      (* (( (ptr) to←v10268)+7) ) = 0;
SOURCE(12927, 25)
      (* (( (ptr) to←v10268)+8) ) = 0;
SOURCE(12978, 28)
      (* (( (ptr) to←v10268)+9) ) = 0;
SOURCE(13032, 27)
      (* (( (ptr) to←v10268)+10) ) = 0;
SOURCE(13085, 29)
      (*  (W6Pt) (* (( (ptr) to←v10268)+13) ) ) = (*  (W6Pt) (* (( (ptr) from←v10240)+13) ) );
SOURCE(13116, 37)
      (* (( (ptr) to←v10268)+14) ) = (* (( (ptr) from←v10240)+14) );
SOURCE(13155, 29)
      (*  (W6Pt) (* (( (ptr) to←v10268)+15) ) ) = (*  (W6Pt) (* (( (ptr) from←v10240)+15) ) );
SOURCE(13186, 27)
      (* (( (ptr) to←v10268)+16) ) = (* (( (ptr) from←v10240)+16) );
SOURCE(13215, 29)
      (* (( (ptr) to←v10268)+17) ) = (* (( (ptr) from←v10240)+17) );
SOURCE(13246, 33)
      (* (( (ptr) to←v10268)+18) ) = (* (( (ptr) from←v10240)+18) );
SOURCE(13281, 27)
      (* (( (ptr) to←v10268)+19) ) = (* (( (ptr) from←v10240)+19) );
SOURCE(13310, 31)
      (* (( (ptr) to←v10268)+20) ) = (* (( (ptr) from←v10240)+20) );
      };
   }

static void CircleBuildPath←P600(slice←v10328, transformParts←v10356, transform←v10384, moveTo←v10412, lineTo←v10440, curveTo←v10468, conicTo←v10496, arcTo←v10524, editConstraints←v10552)
   word slice←v10328;
   word transformParts←v10356;
   word transform←v10384;
   word moveTo←v10412;
   word lineTo←v10440;
   word curveTo←v10468;
   word conicTo←v10496;
   word arcTo←v10524;
   word editConstraints←v10552;
   {
   register ptr gf←c89792 =  (ptr) &globalframe;
   word cpCount←v21580 = 0;
   word cpIndex←v21608 =  (word) -1;
   W2 edgePoint←v21636;
   W2 pointInUnitSpace←v21664;
   word circleData←v21692;
   word circleTransformParts←v21720;
   word newTransform←v21748 = 0;
   word noRubberband←v21776;
   /* CircleBuildPath: */ 
SOURCE(13352, 1973)
SOURCE(13664, 43)
   circleData←v21692 = XR←Narrow((* (( (ptr) slice←v10328)+1) ), (* (( (ptr) gf←c89792)+12) ));
SOURCE(13709, 58)
   circleTransformParts←v21720 = XR←Narrow(transformParts←v10356, (* (( (ptr) gf←c89792)+13) ));
SOURCE(13799, 145)
   noRubberband←v21776 =  (unsigned)  ( (((circleTransformParts←v21720 == 0) || (0 != (* (( (ptr) circleTransformParts←v21720)+5)
    ))) || (0 != (*  (ptr) circleTransformParts←v21720 ))) ? 1 : (0 != (word) IsEmpty←P4320(circleTransformParts←v21720)) ) ;
SOURCE(13975, 234)
   {
      word pd153;
      if ((transform←v10384 == 0)) {
         newTransform←v21748 = (* (( (ptr) circleData←v21692)+1) );
         }
      else {
         if ((0 != (word) IsEmpty←P4320(circleTransformParts←v21720))) {
            newTransform←v21748 = (* (( (ptr) circleData←v21692)+1) );
            }
         else {
            pd153 = (* (( (ptr) (* (( (ptr) gf←c89792)+272)/* var←c82880 */  ))+13) );
            newTransform←v21748 = (word) ( *( (fPt) ((*  (ptr) pd153 ))))((* (( (ptr) circleData←v21692)+1) ), transform←v10384, pd153)
            ;
            };
         };
      };
SOURCE(14211, 191)
   if ((0 != noRubberband←v21776)) {
SOURCE(14234, 137)
      {
         word pd154;
         pd154 = (* (( (ptr) (* (( (ptr) gf←c89792)+278)/* var←c83616 */  ))+6) );
         (void) ( *( (fPt) ((*  (ptr) pd154 ))))( ( (0 != (* (( (ptr) circleData←v21692)+12) )) ? (word) (( (bPt) gf←c89792)+808)/* var←c81312 */  : (word) (
               ( (bPt) gf←c89792)+800)/* var←c81280 */  ) , newTransform←v21748, moveTo←v10412, lineTo←v10440, curveTo←v10468, conicTo←v10496
            , arcTo←v10524, 0, pd154);
         };
SOURCE(14396, 6)
      return;
      };
SOURCE(14407, 165)
   {
      register word index←v21820 = 1;
      lab←L100010: ;
SOURCE(14487, 85)
      if ((0 != (* (( (ptr) circleTransformParts←v21720)+index←v21820) ))) {
SOURCE(14534, 21)
         cpCount←v21580 = (cpCount←v21580 + 1);
SOURCE(14557, 15)
         cpIndex←v21608 = index←v21820;
         };
      if ((index←v21820 >= 4)) {
         goto lab←L100007;
         };
      index←v21820 = (index←v21820 + 1);
      goto lab←L100010;
      lab←L100007: ;
      };
SOURCE(14586, 191)
   if (( (int)cpCount←v21580 >  (int)1)) {
SOURCE(14609, 137)
      {
         word pd155;
         pd155 = (* (( (ptr) (* (( (ptr) gf←c89792)+278)/* var←c83616 */  ))+6) );
         (void) ( *( (fPt) ((*  (ptr) pd155 ))))( ( (0 != (* (( (ptr) circleData←v21692)+12) )) ? (word) (( (bPt) gf←c89792)+808)/* var←c81312 */  : (word) (
               ( (bPt) gf←c89792)+800)/* var←c81280 */  ) , newTransform←v21748, moveTo←v10412, lineTo←v10440, curveTo←v10468, conicTo←v10496
            , arcTo←v10524, 0, pd155);
         };
SOURCE(14771, 6)
      return;
      };
SOURCE(14782, 164)
   {
      W2 var←c83648;
      {
         word var←c83680;
         var←c83680 = cpIndex←v21608;
         switch (var←c83680) {
            case 1: 
               var←c83648.f0 = (*  (ptr) &fc88 );
               var←c83648.f1 = (*  (ptr) &fc85 );
               break;
            case 2: 
               var←c83648.f0 = (*  (ptr) &fc85 );
               var←c83648.f1 = (*  (ptr) &fc87 );
               break;
            case 3: 
               var←c83648.f0 = (*  (ptr) &fc87 );
               var←c83648.f1 = (*  (ptr) &fc85 );
               break;
            case 4: 
               var←c83648.f0 = (*  (ptr) &fc85 );
               var←c83648.f1 = (*  (ptr) &fc88 );
               break;
            default: 
               var←c83648 = (*  (W2Pt) (
                  XR←RaiseUnnamedError(), &dummy156
                  ) );
               break;
            };
         };
      {
         W2 var←c0244;
         {
            word pd157;
            pd157 = (* (( (ptr) (* (( (ptr) gf←c89792)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd157 ))))((word) &var←c0244, newTransform←v21748, var←c83648, pd157);
            };
         edgePoint←v21636 = var←c0244;
         };
      };
SOURCE(14948, 80)
   {
      word pd158;
      pd158 = (* (( (ptr) (* (( (ptr) gf←c89792)+272)/* var←c82880 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd158 ))))((word) &pointInUnitSpace←v21664, (* (( (ptr) circleData←v21692)+6) ), edgePoint←v21636, pd158)
      ;
      };
SOURCE(15030, 124)
   {
      word var←c83840;
      {
         word pd159;
         word x160;
         float tf161;
         float tf162;
         word x163;
         float tf164;
         pd159 = (* (( (ptr) (* (( (ptr) gf←c89792)+273)/* var←c82944 */  ))+18) );
         var←c83840 = (
            tf164 = FMAX((
                  x160 = (word) ( *( (fPt) ((*  (ptr) pd159 ))))(pointInUnitSpace←v21664, pd159),  *(float*)&x160
                  ), (
                  x163 = (* (( (ptr) gf←c89792)+5)/* circleLimit←v6164 */  ),  *(float*)&x163
                  ), tf161, tf162),  *(word*)&tf164
            );
         };
      {
         word pd165;
         pd165 = (* (( (ptr) (* (( (ptr) gf←c89792)+272)/* var←c82880 */  ))+15) );
         newTransform←v21748 = (word) ( *( (fPt) ((*  (ptr) pd165 ))))((* (( (ptr) circleData←v21692)+1) ), var←c83840, pd165);
         };
      };
SOURCE(15188, 137)
   {
      word pd166;
      pd166 = (* (( (ptr) (* (( (ptr) gf←c89792)+278)/* var←c83616 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd166 ))))( ( (0 != (* (( (ptr) circleData←v21692)+12) )) ? (word) (( (bPt) gf←c89792)+808)/* var←c81312 */  : (word) (
            ( (bPt) gf←c89792)+800)/* var←c81280 */  ) , newTransform←v21748, moveTo←v10412, lineTo←v10440, curveTo←v10468, conicTo←v10496
         , arcTo←v10524, 0, pd166);
      };
   }

static void CircleDrawBorder←P660(formal←c01238, formal←c01239, formal←c01240, formal←c01241, formal←c01242, camera←v10752, quick←v10780, editConstraints←v10808)
   word formal←c01238;
   word formal←c01239;
   word formal←c01240;
   word formal←c01241;
   word formal←c01242;
   word camera←v10752;
   word quick←v10780;
   word editConstraints←v10808;
   {
   W11 var←c89824;
   /* declaration of slice←v10612 skipped */ 
   /* declaration of drawParts←v10640 skipped */ 
   /* declaration of transformParts←v10668 skipped */ 
   /* declaration of transform←v10696 skipped */ 
   /* declaration of dc←v10724 skipped */ 
   register ptr gf←c89856 =  (ptr) &globalframe;
   /* declaration of var←c83872 skipped */ 
   (* (( (ptr) &var←c89824)+4)/* slice←v10612 */  ) = formal←c01238;
   (* (( (ptr) &var←c89824)+5)/* drawParts←v10640 */  ) = formal←c01239;
   (* (( (ptr) &var←c89824)+6)/* transformParts←v10668 */  ) = formal←c01240;
   (* (( (ptr) &var←c89824)+7)/* transform←v10696 */  ) = formal←c01241;
   (* (( (ptr) &var←c89824)+8)/* dc←v10724 */  ) = formal←c01242;
   /* CircleDrawBorder: */ 
SOURCE(15331, 1896)
   {
      word tmpAddr167;
      tmpAddr167 = (word) (( (ptr) &var←c89824)+9)/* var←c83872 */ ;
      (*  (ptr) tmpAddr167 ) = ( ((word)  (fPt) DoCircleDrawBorder←P5964) );
      (* (( (ptr) tmpAddr167) + 1) ) = 1;
      };
SOURCE(17190, 37)
   {
      word pd168;
      pd168 = (* (( (ptr) (* (( (ptr) gf←c89856)+270)/* var←c82656 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd168 ))))((* (( (ptr) &var←c89824)+8)/* dc←v10724 */  ), (word) (( (bPt) &var←c89824)+36)/* var←c83872 */ , pd168)
      ;
      };
   }

static void DoCircleDrawBorder←P5964(formal←c89920)
   word formal←c89920;
   {
   register ptr gf←c89888 =  (ptr) &globalframe;
   word cpCount←v21924 = 0;
   word cpIndex←v21952 =  (word) -1;
   W2 edgePoint←v21980;
   W2 pointInUnitSpace←v22008;
   word circleData←v22036;
   word circleDrawParts←v22064;
   word circleTransformParts←v22092;
   word newTransform←v22120 = 0;
   word noRubberband←v22148;
   formal←c89920 = (formal←c89920 - 36);
   /* DoCircleDrawBorder: */ 
SOURCE(15629, 1553)
SOURCE(15731, 43)
   circleData←v22036 = XR←Narrow((* (( (ptr) (* (( (ptr) formal←c89920)+4) ))+1) ), (* (( (ptr) gf←c89888)+12) ));
SOURCE(15776, 48)
   circleDrawParts←v22064 = XR←Narrow((* (( (ptr) formal←c89920)+5) ), (* (( (ptr) gf←c89888)+13) ));
SOURCE(15826, 58)
   circleTransformParts←v22092 = XR←Narrow((* (( (ptr) formal←c89920)+6) ), (* (( (ptr) gf←c89888)+13) ));
SOURCE(15916, 145)
   noRubberband←v22148 =  (unsigned)  ( (((circleTransformParts←v22092 == 0) || (0 != (* (( (ptr) circleTransformParts←v22092)+5)
    ))) || (0 != (*  (ptr) circleTransformParts←v22092 ))) ? 1 : (0 != (word) IsEmpty←P4320(circleTransformParts←v22092)) ) ;
SOURCE(16063, 213)
   {
      word pd169;
      if (((* (( (ptr) formal←c89920)+7) ) == 0)) {
         newTransform←v22120 = (* (( (ptr) circleData←v22036)+1) );
         }
      else {
         if ((0 != (word) IsEmpty←P4320(circleTransformParts←v22092))) {
            newTransform←v22120 = (* (( (ptr) circleData←v22036)+1) );
            }
         else {
            pd169 = (* (( (ptr) (* (( (ptr) gf←c89888)+272)/* var←c82880 */  ))+13) );
            newTransform←v22120 = (word) ( *( (fPt) ((*  (ptr) pd169 ))))((* (( (ptr) circleData←v22036)+1) ), (* (( (ptr) formal←c89920)+7)
                ), pd169);
            };
         };
      };
SOURCE(16279, 903)
SOURCE(16285, 63)
   if ( ( (circleDrawParts←v22064 != 0) ? (0 != (word) IsEmpty←P4320(circleDrawParts←v22064)) : 0 ) ) {
SOURCE(16342, 6)
      return;
      };
SOURCE(16367, 21)
   if ((0 != noRubberband←v22148)) {
SOURCE(16388, 17)
      goto lab←L100011;
      };
SOURCE(16407, 165)
   {
      register word index←v22192 = 1;
      lab←L100015: ;
SOURCE(16487, 85)
      if ((0 != (* (( (ptr) circleTransformParts←v22092)+index←v22192) ))) {
SOURCE(16534, 21)
         cpCount←v21924 = (cpCount←v21924 + 1);
SOURCE(16557, 15)
         cpIndex←v21952 = index←v22192;
         };
      if ((index←v22192 >= 4)) {
         goto lab←L100012;
         };
      index←v22192 = (index←v22192 + 1);
      goto lab←L100015;
      lab←L100012: ;
      };
SOURCE(16586, 21)
   if (( (int)cpCount←v21924 >  (int)1)) {
SOURCE(16607, 17)
      goto lab←L100011;
      };
SOURCE(16626, 143)
   {
      W2 var←c83904;
      {
         word var←c83936;
         var←c83936 = cpIndex←v21952;
         switch (var←c83936) {
            case 1: 
               var←c83904.f0 = (*  (ptr) &fc88 );
               var←c83904.f1 = (*  (ptr) &fc85 );
               break;
            case 2: 
               var←c83904.f0 = (*  (ptr) &fc85 );
               var←c83904.f1 = (*  (ptr) &fc87 );
               break;
            case 3: 
               var←c83904.f0 = (*  (ptr) &fc87 );
               var←c83904.f1 = (*  (ptr) &fc85 );
               break;
            case 4: 
               var←c83904.f0 = (*  (ptr) &fc85 );
               var←c83904.f1 = (*  (ptr) &fc88 );
               break;
            default: 
               var←c83904 = (*  (W2Pt) (
                  XR←RaiseUnnamedError(), &dummy156
                  ) );
               break;
            };
         };
      {
         W2 var←c0272;
         {
            word pd170;
            pd170 = (* (( (ptr) (* (( (ptr) gf←c89888)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd170 ))))((word) &var←c0272, newTransform←v22120, var←c83904, pd170);
            };
         edgePoint←v21980 = var←c0272;
         };
      };
SOURCE(16771, 59)
   {
      word pd171;
      pd171 = (* (( (ptr) (* (( (ptr) gf←c89888)+272)/* var←c82880 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd171 ))))((word) &pointInUnitSpace←v22008, (* (( (ptr) circleData←v22036)+6) ), edgePoint←v21980, pd171)
      ;
      };
SOURCE(16832, 102)
   {
      word var←c84096;
      {
         word pd172;
         word x173;
         float tf174;
         float tf175;
         word x176;
         float tf177;
         pd172 = (* (( (ptr) (* (( (ptr) gf←c89888)+273)/* var←c82944 */  ))+18) );
         var←c84096 = (
            tf177 = FMAX((
                  x173 = (word) ( *( (fPt) ((*  (ptr) pd172 ))))(pointInUnitSpace←v22008, pd172),  *(float*)&x173
                  ), (
                  x176 = (* (( (ptr) gf←c89888)+5)/* circleLimit←v6164 */  ),  *(float*)&x176
                  ), tf174, tf175),  *(word*)&tf177
            );
         };
      {
         word pd178;
         pd178 = (* (( (ptr) (* (( (ptr) gf←c89888)+272)/* var←c82880 */  ))+15) );
         newTransform←v22120 = (word) ( *( (fPt) ((*  (ptr) pd178 ))))((* (( (ptr) circleData←v22036)+1) ), var←c84096, pd178);
         };
      };
SOURCE(16960, 65)
   (void) CachedCircleDraw←P1200((* (( (ptr) formal←c89920)+8) ), circleData←v22036, newTransform←v22120, 0, 0, 0);
   goto lab←L100016;
   lab←L100011: ;
SOURCE(17051, 51)
   if (((* (( (ptr) formal←c89920)+7) ) != 0)) {
SOURCE(17073, 29)
      {
         word pd179;
         pd179 = (* (( (ptr) (* (( (ptr) gf←c89888)+270)/* var←c82656 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd179 ))))((* (( (ptr) formal←c89920)+8) ), (* (( (ptr) formal←c89920)+7) ), pd179);
         };
      };
SOURCE(17104, 73)
   (void) CachedCircleDraw←P1200((* (( (ptr) formal←c89920)+8) ), circleData←v22036, (* (( (ptr) circleData←v22036)+1) ), 0, 0, 0)
   ;
   lab←L100016: ;
   }

static void CircleDrawParts←P720(slice←v10868, parts←v10896, formal←c01243, camera←v10952, quick←v10980)
   word slice←v10868;
   word parts←v10896;
   word formal←c01243;
   word camera←v10952;
   word quick←v10980;
   {
   W8 var←c89952;
   /* declaration of dc←v10924 skipped */ 
   register ptr gf←c89984 =  (ptr) &globalframe;
   /* declaration of var←c84128 skipped */ 
   /* declaration of circleData←v22264 skipped */ 
   word circleParts←v22292;
   var←c89952.f4/* dc←v10924 */  = formal←c01243;
   /* CircleDrawParts: */ 
SOURCE(17233, 390)
   {
      word tmpAddr180;
      tmpAddr180 = (word) (( (ptr) &var←c89952)+5)/* var←c84128 */ ;
      (*  (ptr) tmpAddr180 ) = ( ((word)  (fPt) DoCircleDrawOutline←P6072) );
      (* (( (ptr) tmpAddr180) + 1) ) = 1;
      };
SOURCE(17449, 43)
   var←c89952.f7/* circleData←v22264 */  = XR←Narrow((* (( (ptr) slice←v10868)+1) ), (* (( (ptr) gf←c89984)+12) ));
SOURCE(17494, 40)
   circleParts←v22292 = XR←Narrow(parts←v10896, (* (( (ptr) gf←c89984)+13) ));
SOURCE(17536, 87)
   if ((circleParts←v22292 == 0) || (0 != (* (( (ptr) circleParts←v22292)+5) ))) {
SOURCE(17585, 38)
      {
         word pd181;
         pd181 = (* (( (ptr) (* (( (ptr) gf←c89984)+270)/* var←c82656 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd181 ))))(var←c89952.f4/* dc←v10924 */ , (word) (( (bPt) &var←c89952)+20)/* var←c84128 */ , pd181)
         ;
         };
      };
   }

static void DoCircleDrawOutline←P6072(formal←c90016)
   word formal←c90016;
   {
   formal←c90016 = (formal←c90016 - 20);
   /* DoCircleDrawOutline: */ 
SOURCE(17348, 96)
SOURCE(17378, 66)
   (void) CachedCircleDraw←P1200((* (( (ptr) formal←c90016)+4) ), (* (( (ptr) formal←c90016)+7) ), (* (( (ptr) (* (( (ptr) formal←c90016)+7)
          ))+1) ), 0, 0, 1);
   }

static void CircleDrawTransform←P780(formal←c01244, formal←c01245, formal←c01246, camera←v11124, formal←c01247, editConstraints←v11180)
   word formal←c01244;
   word formal←c01245;
   word formal←c01246;
   word camera←v11124;
   word formal←c01247;
   word editConstraints←v11180;
   {
   W10 var←c90048;
   /* declaration of slice←v11040 skipped */ 
   /* declaration of parts←v11068 skipped */ 
   /* declaration of dc←v11096 skipped */ 
   /* declaration of transform←v11152 skipped */ 
   register ptr gf←c90080 =  (ptr) &globalframe;
   /* declaration of var←c84160 skipped */ 
   (* (( (ptr) &var←c90048)+4)/* slice←v11040 */  ) = formal←c01244;
   (* (( (ptr) &var←c90048)+5)/* parts←v11068 */  ) = formal←c01245;
   (* (( (ptr) &var←c90048)+6)/* dc←v11096 */  ) = formal←c01246;
   (* (( (ptr) &var←c90048)+7)/* transform←v11152 */  ) = formal←c01247;
   /* CircleDrawTransform: */ 
SOURCE(17629, 1545)
   {
      word tmpAddr182;
      tmpAddr182 = (word) (( (ptr) &var←c90048)+8)/* var←c84160 */ ;
      (*  (ptr) tmpAddr182 ) = ( ((word)  (fPt) DoCircleDrawTransform←P6132) );
      (* (( (ptr) tmpAddr182) + 1) ) = 1;
      };
SOURCE(19134, 40)
   {
      word pd183;
      pd183 = (* (( (ptr) (* (( (ptr) gf←c90080)+270)/* var←c82656 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd183 ))))((* (( (ptr) &var←c90048)+6)/* dc←v11096 */  ), (word) (( (bPt) &var←c90048)+32)/* var←c84160 */ , pd183)
      ;
      };
   }

static void DoCircleDrawTransform←P6132(formal←c90144)
   word formal←c90144;
   {
   register ptr gf←c90112 =  (ptr) &globalframe;
   word cpCount←v22412 = 0;
   word cpIndex←v22440 =  (word) -1;
   W2 edgePoint←v22468;
   W2 pointInUnitSpace←v22496;
   word newTransform←v22524 = 0;
   word circleData←v22552;
   word circleParts←v22580;
   word wholeThing←v22608;
   word transformColor←v22636 = 1;
   formal←c90144 = (formal←c90144 - 32);
   /* DoCircleDrawTransform: */ 
SOURCE(17823, 1306)
SOURCE(17958, 43)
   circleData←v22552 = XR←Narrow((* (( (ptr) (* (( (ptr) formal←c90144)+4) ))+1) ), (* (( (ptr) gf←c90112)+12) ));
SOURCE(18003, 40)
   circleParts←v22580 = XR←Narrow((* (( (ptr) formal←c90144)+5) ), (* (( (ptr) gf←c90112)+13) ));
SOURCE(18045, 39)
   wholeThing←v22608 = (word) IsEmpty←P4320(circleParts←v22580);
SOURCE(18145, 895)
   if ((0 != wholeThing←v22608) || (0 != (* (( (ptr) circleParts←v22580)+5) ))) {
SOURCE(18187, 50)
      transformColor←v22636 = 1;
      }
   else {
SOURCE(18237, 803)
      if ((0 != (*  (ptr) circleParts←v22580 ))) {
SOURCE(18268, 57)
         transformColor←v22636 = 0;
         }
      else {
SOURCE(18327, 164)
         {
            register word index←v22680 = 1;
            lab←L100020: ;
SOURCE(18416, 75)
            if ((0 != (* (( (ptr) circleParts←v22580)+index←v22680) ))) {
SOURCE(18453, 21)
               cpCount←v22412 = (cpCount←v22412 + 1);
SOURCE(18476, 15)
               cpIndex←v22440 = index←v22680;
               };
            if ((index←v22680 >= 4)) {
               goto lab←L100017;
               };
            index←v22680 = (index←v22680 + 1);
            goto lab←L100020;
            lab←L100017: ;
            };
SOURCE(18505, 535)
         if (( (int)cpCount←v22412 >  (int)1)) {
SOURCE(18525, 28)
            transformColor←v22636 = 0;
            }
         else {
SOURCE(18555, 51)
            if ( ( ( (int)cpCount←v22412 ==  (int)0) ? (0 == (*  (ptr) circleParts←v22580 )) : 0 ) ) {
SOURCE(18606, 5)
               (void) XR←RaiseUnnamedError();
               };
SOURCE(18613, 170)
            {
               word var←c84192;
               W2 var←c84224;
               {
                  word pd184;
                  pd184 = (* (( (ptr) (* (( (ptr) gf←c90112)+272)/* var←c82880 */  ))+13) );
                  var←c84192 = (word) ( *( (fPt) ((*  (ptr) pd184 ))))((* (( (ptr) circleData←v22552)+1) ), (* (( (ptr) formal←c90144)+7) ), pd184)
                  ;
                  };
               {
                  word var←c84256;
                  var←c84256 = cpIndex←v22440;
                  switch (var←c84256) {
                     case 1: 
                        var←c84224.f0 = (*  (ptr) &fc88 );
                        var←c84224.f1 = (*  (ptr) &fc85 );
                        break;
                     case 2: 
                        var←c84224.f0 = (*  (ptr) &fc85 );
                        var←c84224.f1 = (*  (ptr) &fc87 );
                        break;
                     case 3: 
                        var←c84224.f0 = (*  (ptr) &fc87 );
                        var←c84224.f1 = (*  (ptr) &fc85 );
                        break;
                     case 4: 
                        var←c84224.f0 = (*  (ptr) &fc85 );
                        var←c84224.f1 = (*  (ptr) &fc88 );
                        break;
                     default: 
                        var←c84224 = (*  (W2Pt) (
                           XR←RaiseUnnamedError(), &dummy156
                           ) );
                        break;
                     };
                  };
               {
                  W2 var←c0307;
                  {
                     word pd185;
                     pd185 = (* (( (ptr) (* (( (ptr) gf←c90112)+272)/* var←c82880 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd185 ))))((word) &var←c0307, var←c84192, var←c84224, pd185);
                     };
                  edgePoint←v22468 = var←c0307;
                  };
               };
SOURCE(18785, 59)
            {
               word pd186;
               pd186 = (* (( (ptr) (* (( (ptr) gf←c90112)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd186 ))))((word) &pointInUnitSpace←v22496, (* (( (ptr) circleData←v22552)+6) ), edgePoint←v22468, pd186)
               ;
               };
SOURCE(18846, 102)
            {
               word var←c84416;
               {
                  word pd187;
                  word x188;
                  float tf189;
                  float tf190;
                  word x191;
                  float tf192;
                  pd187 = (* (( (ptr) (* (( (ptr) gf←c90112)+273)/* var←c82944 */  ))+18) );
                  var←c84416 = (
                     tf192 = FMAX((
                           x188 = (word) ( *( (fPt) ((*  (ptr) pd187 ))))(pointInUnitSpace←v22496, pd187),  *(float*)&x188
                           ), (
                           x191 = (* (( (ptr) gf←c90112)+5)/* circleLimit←v6164 */  ),  *(float*)&x191
                           ), tf189, tf190),  *(word*)&tf192
                     );
                  };
               {
                  word pd193;
                  pd193 = (* (( (ptr) (* (( (ptr) gf←c90112)+272)/* var←c82880 */  ))+15) );
                  newTransform←v22524 = (word) ( *( (fPt) ((*  (ptr) pd193 ))))((* (( (ptr) circleData←v22552)+1) ), var←c84416, pd193);
                  };
               };
SOURCE(18974, 58)
            (void) CachedCircleDraw←P1200((* (( (ptr) formal←c90144)+6) ), circleData←v22552, newTransform←v22524, 0, 0, 1);
SOURCE(19034, 6)
            return;
            };
         };
      };
SOURCE(19048, 81)
   (void) CachedCircleDraw←P1200((* (( (ptr) formal←c90144)+6) ), circleData←v22552, (* (( (ptr) circleData←v22552)+1) ), (* (
         ( (ptr) formal←c90144)+7) ), transformColor←v22636, 1);
   }

static void CircleDrawSelectionFeedback←P840(slice←v11240, selectedParts←v11268, hotParts←v11296, dc←v11324, camera←v11352, dragInProgress←v11380, caretIsMoving←v11408, hideHot←v11436, quick←v11464)
   word slice←v11240;
   word selectedParts←v11268;
   word hotParts←v11296;
   word dc←v11324;
   word camera←v11352;
   word dragInProgress←v11380;
   word caretIsMoving←v11408;
   word hideHot←v11436;
   word quick←v11464;
   {
   register ptr gf←c90176 =  (ptr) &globalframe;
   word slowNormal←v22836 = 0;
   word slowHot←v22864 = 0;
   word completeNormal←v22892 = 0;
   word completeHot←v22920 = 0;
   W2 firstJoint←v22948;
   word normalCircleParts←v22976 = 0;
   word hotCircleParts←v23004 = 0;
   word circleData←v23032;
   word transform←v23060;
   /* CircleDrawSelectionFeedback: */ 
SOURCE(19180, 2026)
SOURCE(19698, 43)
   circleData←v23032 = XR←Narrow((* (( (ptr) slice←v11240)+1) ), (* (( (ptr) gf←c90176)+12) ));
SOURCE(19743, 48)
   transform←v23060 = (* (( (ptr) circleData←v23032)+1) );
SOURCE(19793, 72)
   if (((0 != caretIsMoving←v11408) || (0 != dragInProgress←v11380)) || ((*  (ptr) camera←v11352 ) == 2)) {
SOURCE(19859, 6)
      return;
      };
SOURCE(19867, 49)
   if ( ( (selectedParts←v11268 == 0) ? (hotParts←v11296 == 0) : 0 ) ) {
SOURCE(19910, 6)
      return;
      };
SOURCE(19918, 41)
   normalCircleParts←v22976 = XR←Narrow(selectedParts←v11268, (* (( (ptr) gf←c90176)+13) ));
SOURCE(19961, 33)
   hotCircleParts←v23004 = XR←Narrow(hotParts←v11296, (* (( (ptr) gf←c90176)+13) ));
SOURCE(19996, 72)
   if ((normalCircleParts←v22976 != 0)) {
      completeNormal←v22892 =  (unsigned) (0 != (word) IsComplete←P4260(normalCircleParts←v22976));
      }
   else {
      completeNormal←v22892 =  (unsigned) 0;
      };
SOURCE(20070, 63)
   if ((hotCircleParts←v23004 != 0)) {
      completeHot←v22920 =  (unsigned) (0 != (word) IsComplete←P4260(hotCircleParts←v23004));
      }
   else {
      completeHot←v22920 =  (unsigned) 0;
      };
SOURCE(20135, 84)
   if ((normalCircleParts←v22976 != 0)) {
      if ((0 == quick←v11464)) {
         slowNormal←v22836 =  (unsigned) 1;
         }
      else {
         if ((0 != quick←v11464)) {
            slowNormal←v22836 =  (unsigned) (0 == completeNormal←v22892);
            }
         else {
            slowNormal←v22836 =  (unsigned) 0;
            };
         };
      }
   else {
      slowNormal←v22836 =  (unsigned) 0;
      };
SOURCE(20221, 75)
   if ((hotCircleParts←v23004 != 0)) {
      if ((0 == quick←v11464)) {
         slowHot←v22864 =  (unsigned) 1;
         }
      else {
         if ((0 != quick←v11464)) {
            slowHot←v22864 =  (unsigned) (0 == completeHot←v22920);
            }
         else {
            slowHot←v22864 =  (unsigned) 0;
            };
         };
      }
   else {
      slowHot←v22864 =  (unsigned) 0;
      };
SOURCE(20298, 356)
   if (((0 != slowNormal←v22836) && (0 != slowHot←v22864))) {
SOURCE(20329, 107)
      (void) DrawSelectionFeedbackAux←P1560(slice←v11240, circleData←v23032, normalCircleParts←v22976, hotCircleParts←v23004, dc←v11324, transform←v23060
         , camera←v11352);
      }
   else {
SOURCE(20436, 218)
      if ((0 != slowNormal←v22836)) {
SOURCE(20455, 96)
         (void) DrawSelectionFeedbackAux←P1560(slice←v11240, circleData←v23032, normalCircleParts←v22976, 0, dc←v11324, transform←v23060
            , camera←v11352);
         }
      else {
SOURCE(20551, 103)
         if ((0 != slowHot←v22864)) {
SOURCE(20567, 87)
            (void) DrawSelectionFeedbackAux←P1560(slice←v11240, circleData←v23032, 0, hotCircleParts←v23004, dc←v11324, transform←v23060
               , camera←v11352);
            };
         };
      };
SOURCE(20656, 302)
   if ( ( (0 == slowNormal←v22836) ? (0 != completeNormal←v22892) : 0 )  ||  ( (0 == slowHot←v22864) ? (0 != completeHot←v22920) : 0 ) ) {
SOURCE(20733, 251)
      {
         word fullParts←v23104;
SOURCE(20735, 85)
         fullParts←v23104 =  ( (0 != completeNormal←v22892) ? normalCircleParts←v22976 : hotCircleParts←v23004 ) ;
SOURCE(20822, 34)
         {
            word var←c84448;
            word pd194;
            pd194 = (* (( (ptr) (* (( (ptr) gf←c90176)+276)/* var←c83456 */  ))+9) );
            var←c84448 = (word) ( *( (fPt) ((*  (ptr) pd194 ))))(slice←v11240, 0, pd194);
            };
SOURCE(20891, 67)
         {
            W2 var←c0331;
            {
               W2 var←c84480;
               var←c84480.f0 = (*  (ptr) &fc88 );
               var←c84480.f1 = (*  (ptr) &fc85 );
               {
                  word pd195;
                  pd195 = (* (( (ptr) (* (( (ptr) gf←c90176)+272)/* var←c82880 */  ))+39) );
                  (void) ( *( (fPt) ((*  (ptr) pd195 ))))((word) &var←c0331, transform←v23060, var←c84480, pd195);
                  };
               };
            firstJoint←v22948 = var←c0331;
            };
         };
      };
SOURCE(20987, 104)
   if ( ( (0 == slowHot←v22864) ? (0 != completeHot←v22920) : 0 ) ) {
SOURCE(21023, 68)
      {
         word pd196;
         pd196 = (* (( (ptr) (* (( (ptr) gf←c90176)+279)/* var←c84512 */  ))+21) );
         (void) ( *( (fPt) ((*  (ptr) pd196 ))))(dc←v11324, firstJoint←v22948, 1, (* (( (ptr) camera←v11352)+4) ), pd196);
         };
      };
SOURCE(21093, 113)
   if ( ( (0 == slowNormal←v22836) ? (0 != completeNormal←v22892) : 0 ) ) {
SOURCE(21135, 71)
      {
         word pd197;
         pd197 = (* (( (ptr) (* (( (ptr) gf←c90176)+279)/* var←c84512 */  ))+21) );
         (void) ( *( (fPt) ((*  (ptr) pd197 ))))(dc←v11324, firstJoint←v22948, 0, (* (( (ptr) camera←v11352)+4) ), pd197);
         };
      };
   }

static void CircleDrawAttractorFeedback←P900(slice←v11524, attractorParts←v11552, selectedParts←v11580, dragInProgress←v11608, formal←c01248, formal←c01249, editConstraints←v11692)
   word slice←v11524;
   word attractorParts←v11552;
   word selectedParts←v11580;
   word dragInProgress←v11608;
   word formal←c01248;
   word formal←c01249;
   word editConstraints←v11692;
   {
   W10 var←c90208;
   /* declaration of dc←v11636 skipped */ 
   /* declaration of camera←v11664 skipped */ 
   register ptr gf←c90240 =  (ptr) &globalframe;
   /* declaration of var←c84544 skipped */ 
   (* (( (ptr) &var←c90208)+4)/* dc←v11636 */  ) = formal←c01248;
   (* (( (ptr) &var←c90208)+5)/* camera←v11664 */  ) = formal←c01249;
   /* CircleDrawAttractorFeedback: */ 
SOURCE(21212, 911)
   {
      word tmpAddr198;
      tmpAddr198 = (word) (( (ptr) &var←c90208)+6)/* var←c84544 */ ;
      (*  (ptr) tmpAddr198 ) = ( ((word)  (fPt) DoDrawFeedback←P6336) );
      (* (( (ptr) tmpAddr198) + 1) ) = 1;
      };
SOURCE(21440, 683)
   if ((0 == dragInProgress←v11608) || (selectedParts←v11580 == 0)) {
SOURCE(21491, 634)
      {
         /* declaration of circleData←v23176 skipped */ 
         /* declaration of hitParts←v23204 skipped */ 
SOURCE(21949, 43)
         (* (( (ptr) &var←c90208)+8)/* circleData←v23176 */  ) = XR←Narrow((* (( (ptr) slice←v11524)+1) ), (* (( (ptr) gf←c90240)+12)
             ));
SOURCE(21994, 46)
         (* (( (ptr) &var←c90208)+9)/* hitParts←v23204 */  ) = XR←Narrow(attractorParts←v11552, (* (( (ptr) gf←c90240)+13) ));
SOURCE(22042, 81)
         if ( ( ((*  (ptr) (* (( (ptr) &var←c90208)+5)/* camera←v11664 */  ) ) != 2) ? ((* (( (ptr) &var←c90208)+9)/* hitParts←v23204 */  ) != 0) : 0 ) ) {
SOURCE(22090, 33)
            {
               word pd199;
               pd199 = (* (( (ptr) (* (( (ptr) gf←c90240)+270)/* var←c82656 */  ))+12) );
               (void) ( *( (fPt) ((*  (ptr) pd199 ))))((* (( (ptr) &var←c90208)+4)/* dc←v11636 */  ), (word) (( (bPt) &var←c90208)+24)/* var←c84544 */ , pd199)
               ;
               };
            };
         };
      };
   }

static void DoDrawFeedback←P6336(formal←c90304)
   word formal←c90304;
   {
   register ptr gf←c90272 =  (ptr) &globalframe;
   word t←v23264;
   W10 pts←v23292;
   formal←c90304 = (formal←c90304 - 24);
   /* DoDrawFeedback: */ 
SOURCE(21493, 23)
SOURCE(21518, 40)
   t←v23264 = (* (( (ptr) (* (( (ptr) formal←c90304)+8) ))+1) );
SOURCE(21587, 33)
   {
      W2 var←c84576;
      {
         W2 var←c0346;
         {
            W2 var←c84608;
            var←c84608.f0 = (*  (ptr) &fc85 );
            var←c84608.f1 = (*  (ptr) &fc85 );
            {
               word pd200;
               pd200 = (* (( (ptr) (* (( (ptr) gf←c90272)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd200 ))))((word) &var←c0346, t←v23264, var←c84608, pd200);
               };
            };
         var←c84576 = var←c0346;
         };
      (*  (W2Pt) &pts←v23292 ) = var←c84576;
      };
SOURCE(21622, 34)
   {
      W2 var←c84640;
      {
         W2 var←c0349;
         {
            W2 var←c84672;
            var←c84672.f0 = (*  (ptr) &fc88 );
            var←c84672.f1 = (*  (ptr) &fc85 );
            {
               word pd201;
               pd201 = (* (( (ptr) (* (( (ptr) gf←c90272)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd201 ))))((word) &var←c0349, t←v23264, var←c84672, pd201);
               };
            };
         var←c84640 = var←c0349;
         };
      (*  (W2Pt) (( (ptr) &pts←v23292)+2) ) = var←c84640;
      };
SOURCE(21658, 33)
   {
      W2 var←c84704;
      {
         W2 var←c0352;
         {
            W2 var←c84736;
            var←c84736.f0 = (*  (ptr) &fc85 );
            var←c84736.f1 = (*  (ptr) &fc87 );
            {
               word pd202;
               pd202 = (* (( (ptr) (* (( (ptr) gf←c90272)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd202 ))))((word) &var←c0352, t←v23264, var←c84736, pd202);
               };
            };
         var←c84704 = var←c0352;
         };
      (*  (W2Pt) (( (ptr) &pts←v23292)+4) ) = var←c84704;
      };
SOURCE(21693, 33)
   {
      W2 var←c84768;
      {
         W2 var←c0355;
         {
            W2 var←c84800;
            var←c84800.f0 = (*  (ptr) &fc87 );
            var←c84800.f1 = (*  (ptr) &fc85 );
            {
               word pd203;
               pd203 = (* (( (ptr) (* (( (ptr) gf←c90272)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd203 ))))((word) &var←c0355, t←v23264, var←c84800, pd203);
               };
            };
         var←c84768 = var←c0355;
         };
      (*  (W2Pt) (( (ptr) &pts←v23292)+6) ) = var←c84768;
      };
SOURCE(21728, 34)
   {
      W2 var←c84832;
      {
         W2 var←c0358;
         {
            W2 var←c84864;
            var←c84864.f0 = (*  (ptr) &fc85 );
            var←c84864.f1 = (*  (ptr) &fc88 );
            {
               word pd204;
               pd204 = (* (( (ptr) (* (( (ptr) gf←c90272)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd204 ))))((word) &var←c0358, t←v23264, var←c84864, pd204);
               };
            };
         var←c84832 = var←c0358;
         };
      (*  (W2Pt) (( (ptr) &pts←v23292)+8) ) = var←c84832;
      };
SOURCE(21764, 71)
   if ((0 != (*  (ptr) (* (( (ptr) formal←c90304)+9) ) ))) {
SOURCE(21792, 43)
      {
         word pd205;
         pd205 = (* (( (ptr) (* (( (ptr) gf←c90272)+279)/* var←c84512 */  ))+19) );
         (void) ( *( (fPt) ((*  (ptr) pd205 ))))((* (( (ptr) formal←c90304)+4) ), (*  (W2Pt) &pts←v23292 ), (* (( (ptr) (* (( (ptr) formal←c90304)+5)
                ))+4) ), pd205);
         };
      };
SOURCE(21837, 98)
   {
      register word index←v23372 = 1;
      lab←L100024: ;
SOURCE(21888, 47)
      {
         word pd206;
         pd206 = (* (( (ptr) (* (( (ptr) gf←c90272)+279)/* var←c84512 */  ))+19) );
         (void) ( *( (fPt) ((*  (ptr) pd206 ))))((* (( (ptr) formal←c90304)+4) ), (* (( (W2Pt) &pts←v23292)+index←v23372) ), (* (( (ptr) (* (
                  ( (ptr) formal←c90304)+5) ))+4) ), pd206);
         };
      if ((index←v23372 >= 4)) {
         goto lab←L100021;
         };
      index←v23372 = (index←v23372 + 1);
      goto lab←L100024;
      lab←L100021: ;
      };
   }

static void CircleBoxFromTransform←P960(formal←c0379, circleData←v11752, transform←v11780)
   word formal←c0379;
   word circleData←v11752;
   word transform←v11780;
   {
   register ptr gf←c90336 =  (ptr) &globalframe;
   W4 r←v11824;
   word pad←v23416;
   W2 origin←v23444;
   W2 minor←v23472;
   W2 major←v23500;
   word minorDS←v23528;
   word majorDS←v23556;
   word tMax←v23584;
   word radius←v23612;
   word box←v23640;
   /* CircleBoxFromTransform: */ 
SOURCE(22132, 758)
SOURCE(22247, 38)
   pad←v23416 = (* (( (ptr) (* (( (ptr) circleData←v11752)+33) ))+2) );
SOURCE(22287, 69)
   {
      W2 var←c0366;
      {
         W2 var←c84896;
         var←c84896.f0 = (*  (ptr) &fc85 );
         var←c84896.f1 = (*  (ptr) &fc85 );
         {
            word pd207;
            pd207 = (* (( (ptr) (* (( (ptr) gf←c90336)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd207 ))))((word) &var←c0366, transform←v11780, var←c84896, pd207);
            };
         };
      origin←v23444 = var←c0366;
      };
SOURCE(22358, 68)
   {
      W2 var←c0369;
      {
         W2 var←c84928;
         var←c84928.f0 = (*  (ptr) &fc85 );
         var←c84928.f1 = (*  (ptr) &fc87 );
         {
            word pd208;
            pd208 = (* (( (ptr) (* (( (ptr) gf←c90336)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd208 ))))((word) &var←c0369, transform←v11780, var←c84928, pd208);
            };
         };
      minor←v23472 = var←c0369;
      };
SOURCE(22434, 68)
   {
      W2 var←c0372;
      {
         W2 var←c84960;
         var←c84960.f0 = (*  (ptr) &fc87 );
         var←c84960.f1 = (*  (ptr) &fc85 );
         {
            word pd209;
            pd209 = (* (( (ptr) (* (( (ptr) gf←c90336)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd209 ))))((word) &var←c0372, transform←v11780, var←c84960, pd209);
            };
         };
      major←v23500 = var←c0372;
      };
SOURCE(22514, 56)
   {
      word pd210;
      pd210 = (* (( (ptr) (* (( (ptr) gf←c90336)+273)/* var←c82944 */  ))+21) );
      minorDS←v23528 = (word) ( *( (fPt) ((*  (ptr) pd210 ))))(minor←v23472, origin←v23444, pd210);
      };
SOURCE(22572, 56)
   {
      word pd211;
      pd211 = (* (( (ptr) (* (( (ptr) gf←c90336)+273)/* var←c82944 */  ))+21) );
      majorDS←v23556 = (word) ( *( (fPt) ((*  (ptr) pd211 ))))(major←v23500, origin←v23444, pd211);
      };
SOURCE(22630, 34)
   {
      word x212;
      float tf213;
      float tf214;
      word x215;
      float tf216;
      tMax←v23584 = (
         tf216 = FMAX((
               x212 = minorDS←v23528,  *(float*)&x212
               ), (
               x215 = majorDS←v23556,  *(float*)&x215
               ), tf213, tf214),  *(word*)&tf216
         );
      };
SOURCE(22666, 33)
   {
      word pd217;
      pd217 = (* (( (ptr) (* (( (ptr) gf←c90336)+274)/* var←c83168 */  ))+9) );
      radius←v23612 = (word) ( *( (fPt) ((*  (ptr) pd217 ))))(tMax←v23584, pd217);
      };
SOURCE(22701, 108)
   {
      word pd218;
      word x219;
      word x220;
      float tf221;
      word x222;
      word x223;
      float tf224;
      word x225;
      word x226;
      float tf227;
      word x228;
      word x229;
      float tf230;
      pd218 = (* (( (ptr) (* (( (ptr) gf←c90336)+271)/* var←c82752 */  ))+5) );
      box←v23640 = (word) ( *( (fPt) ((*  (ptr) pd218 ))))((
            tf221 = (
               x219 = origin←v23444.f0,  *(float*)&x219
               ) - (
               x220 = radius←v23612,  *(float*)&x220
               ),  *(word*)&tf221
            ), (
            tf224 = (
               x222 = origin←v23444.f1,  *(float*)&x222
               ) - (
               x223 = radius←v23612,  *(float*)&x223
               ),  *(word*)&tf224
            ), (
            tf227 = (
               x225 = origin←v23444.f0,  *(float*)&x225
               ) + (
               x226 = radius←v23612,  *(float*)&x226
               ),  *(word*)&tf227
            ), (
            tf230 = (
               x228 = origin←v23444.f1,  *(float*)&x228
               ) + (
               x229 = radius←v23612,  *(float*)&x229
               ),  *(word*)&tf230
            ), 0, 0, pd218);
      };
SOURCE(22811, 36)
   {
      word pd231;
      pd231 = (* (( (ptr) (* (( (ptr) gf←c90336)+271)/* var←c82752 */  ))+17) );
      (void) ( *( (fPt) ((*  (ptr) pd231 ))))(box←v23640, pad←v23416, pd231);
      };
SOURCE(22849, 41)
   {
      word pd232;
      pd232 = (* (( (ptr) (* (( (ptr) gf←c90336)+271)/* var←c82752 */  ))+11) );
      (void) ( *( (fPt) ((*  (ptr) pd232 ))))((word) &r←v11824, box←v23640, pd232);
      };
   /* removed tail goto */ 
   (*  (W4Pt) formal←c0379 ) = r←v11824;
   return;
   }

static word FindImagerObject←P1020(formal←c01250, formal←c01251, formal←c01252, formal←c01253)
   word formal←c01250;
   word formal←c01251;
   word formal←c01252;
   word formal←c01253;
   {
   W13 var←c90368;
   /* declaration of circleData←v11884 skipped */ 
   /* declaration of localView←v11912 skipped */ 
   /* declaration of fillLocal←v11940 skipped */ 
   /* declaration of fillIt←v11968 skipped */ 
   register ptr gf←c90400 =  (ptr) &globalframe;
   word object←v12012;
   /* declaration of var←c84992 skipped */ 
   /* declaration of var←c85024 skipped */ 
   word value←v23740 = 0;
   /* declaration of maxPixels←v23768 skipped */ 
   word ok←v23796;
   (* (( (ptr) &var←c90368)+4)/* circleData←v11884 */  ) = formal←c01250;
   (* (( (ptr) &var←c90368)+5)/* localView←v11912 */  ) = formal←c01251;
   (* (( (ptr) &var←c90368)+6)/* fillLocal←v11940 */  ) = formal←c01252;
   (* (( (ptr) &var←c90368)+7)/* fillIt←v11968 */  ) = formal←c01253;
   /* FindImagerObject: */ 
SOURCE(22896, 1356)
   {
      word tmpAddr233;
      tmpAddr233 = (word) (( (ptr) &var←c90368)+8)/* var←c84992 */ ;
      (*  (ptr) tmpAddr233 ) = ( ((word)  (fPt) CompareProps←P6504) );
      (* (( (ptr) tmpAddr233) + 1) ) = 1;
      };
   {
      word tmpAddr234;
      tmpAddr234 = (word) (( (ptr) &var←c90368)+10)/* var←c85024 */ ;
      (*  (ptr) tmpAddr234 ) = ( ((word)  (fPt) EqualPattern←P6444) );
      (* (( (ptr) tmpAddr234) + 1) ) = 1;
      };
SOURCE(22896, 1356)
   object←v12012 = 0;
SOURCE(24077, 25)
   (* (( (ptr) &var←c90368)+12)/* maxPixels←v23768 */  ) = (*  (ptr) &fc235 );
SOURCE(24114, 94)
   {
      W2 var←c85088;
      {
         word pd236;
         pd236 = (* (( (ptr) (* (( (ptr) gf←c90400)+280)/* var←c85056 */  ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd236 ))))((word) &var←c85088, (* (( (ptr) gf←c90400)+6)/* cache←v8068 */  ), (word) (( (bPt) &var←c90368)+32)
            /* var←c84992 */ , (* (( (ptr) gf←c90400)+53) ), pd236);
         };
      ok←v23796 = var←c85088.f1;
      value←v23740 = var←c85088.f0;
      };
SOURCE(24210, 42)
   if ((0 != ok←v23796)) {
      return(XR←Narrow(value←v23740, (* (( (ptr) gf←c90400)+19) )));
      }
   else {
      return(0);
      };
   }

static word EqualPattern←P6444(p1←v23872, p2←v23900, formal←c90432)
   word p1←v23872;
   word p2←v23900;
   word formal←c90432;
   {
   word var←c23944;
   formal←c90432 = (formal←c90432 - 40);
   /* EqualPattern: */ 
SOURCE(23025, 195)
SOURCE(23025, 195)
   var←c23944 = 0;
SOURCE(23096, 35)
   if (((*  (ptr) p1←v23872 ) != (*  (ptr) p2←v23900 ))) {
SOURCE(23118, 13)
      return(0);
      };
SOURCE(23133, 64)
   {
      register word i←v23972 = 0;
      register word noName←c85152;
      noName←c85152 = (*  (ptr) p1←v23872 );
      if ((i←v23972 >= noName←c85152)) {
         goto lab←L100026;
         };
      lab←L100029: ;
SOURCE(23163, 34)
      {
         word limit237;
         word x238;
         word limit239;
         word x240;
         if (((
            x238 = (* ((( (ptr) p1←v23872)+1)+(
                  limit237 = (*  (ptr) p1←v23872 ),
                  BCK(i←v23972, limit237)
                  )) ),  *(float*)&x238
            ) != (
            x240 = (* ((( (ptr) p2←v23900)+1)+(
                  limit239 = (*  (ptr) p2←v23900 ),
                  BCK(i←v23972, limit239)
                  )) ),  *(float*)&x240
            ))) {
SOURCE(23184, 13)
            return(0);
            };
         };
      i←v23972 = (i←v23972 + 1);
      if ((i←v23972 < noName←c85152)) {
         goto lab←L100029;
         };
      lab←L100026: ;
      };
SOURCE(23208, 12)
   return(1);
   }

static word CompareProps←P6504(argument←v65044, formal←c90496)
   word argument←v65044;
   word formal←c90496;
   {
   register ptr gf←c90464 =  (ptr) &globalframe;
   word good←v65088;
   word props←v24016;
   word seg←v24044;
   word fillIsSampled←v24072;
   word thisFill←v24100;
   word var←c01212;
   formal←c90496 = (formal←c90496 - 32);
   /* CompareProps: */ 
SOURCE(23225, 818)
SOURCE(23269, 31)
   props←v24016 = XR←Narrow(argument←v65044, (* (( (ptr) gf←c90464)+20) ));
SOURCE(23302, 29)
   seg←v24044 = (* (( (ptr) (* (( (ptr) formal←c90496)+4) ))+33) );
SOURCE(23354, 69)
   thisFill←v24100 =  ( (0 != (* (( (ptr) formal←c90496)+7) )) ? (* (( (ptr) (* (( (ptr) formal←c90496)+4) ))+11) ) : 0 ) ;
SOURCE(23426, 617)
   {
      word tc241;
      word tc242;
      word tc243;
      word tc244;
      word tc245;
      word tc246;
      word x247;
      word x248;
      word x249;
      word x250;
      word x251;
      word x252;
      word pd253;
      word pd254;
      word pd255;
      word pd256;
      if ( (  (  (  ( ((
         x247 = (* (( (ptr) props←v24016)+1) ),  *(float*)&x247
         ) == (
         x248 = (* (( (ptr) seg←v24044)+2) ),  *(float*)&x248
         )) ? ((* (( (ptr) props←v24016)+2) ) == (* (( (ptr) seg←v24044)+3) )) : 0 )  ? ((* (( (ptr) props←v24016)+3) ) == (* (( (ptr) seg←v24044)+4)
       )) : 0 )  ? ((
         x249 = (* (( (ptr) props←v24016)+5) ),  *(float*)&x249
         ) == (
         x250 = (* (( (ptr) seg←v24044)+6) ),  *(float*)&x250
         )) : 0 )  ? ((
         x251 = (* (( (ptr) props←v24016)+6) ),  *(float*)&x251
         ) == (
         x252 = (* (( (ptr) seg←v24044)+7) ),  *(float*)&x252
         )) : 0 ) ) {
         pd253 = (* (( (ptr) (* (( (ptr) gf←c90464)+272)/* var←c82880 */  ))+55) );
         tc246 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd253 ))))((*  (ptr) props←v24016 ), (* (( (ptr) formal←c90496)+5) ), (* (
               ( (ptr) formal←c90496)+12) ), pd253));
         }
      else {
         tc246 =  (word) 0;
         };
      if (tc246) {
         pd254 = (* (( (ptr) (* (( (ptr) gf←c90464)+275)/* var←c83424 */  ))+35) );
         tc245 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd254 ))))((* (( (ptr) props←v24016)+7) ), (* (( (ptr) seg←v24044)+8) ), pd254)
         );
         }
      else {
         tc245 =  (word) 0;
         };
      if (tc245) {
         pd255 = (* (( (ptr) (* (( (ptr) gf←c90464)+275)/* var←c83424 */  ))+35) );
         tc244 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd255 ))))((* (( (ptr) props←v24016)+8) ), thisFill←v24100, pd255));
         }
      else {
         tc244 =  (word) 0;
         };
      if (tc244) {
         fillIsSampled←v24072 = (word) IsSampled←P1140(thisFill←v24100);
         var←c01212 = fillIsSampled←v24072;
         tc243 =  (word) ((* (( (ptr) props←v24016)+9) ) == var←c01212);
         }
      else {
         tc243 =  (word) 0;
         };
      if (tc243) {
         if ((0 == fillIsSampled←v24072)) {
            tc242 =  (word) 1;
            }
         else {
            pd256 = (* (( (ptr) (* (( (ptr) gf←c90464)+272)/* var←c82880 */  ))+54) );
            tc242 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd256 ))))((* (( (ptr) props←v24016)+10) ), (* (( (ptr) formal←c90496)+6)
                ), (* (( (ptr) formal←c90496)+12) ), pd256));
            };
         }
      else {
         tc242 =  (word) 0;
         };
      if (tc242) {
         if ((0 == (* (( (ptr) props←v24016)+3) ))) {
            tc241 =  (word) 1;
            }
         else {
            tc241 =  (word) (0 != (word) EqualPattern←P6444((* (( (ptr) props←v24016)+4) ), (* (( (ptr) seg←v24044)+5) ), (word) (( (bPt) formal←c90496)+40)
               ));
            };
         }
      else {
         tc241 =  (word) 0;
         };
      if (tc241) {
SOURCE(24012, 18)
         return(1);
         }
      else {
SOURCE(24030, 13)
         return(0);
         };
      };
   }

static word CreateProps←P1080(circleData←v12072, localView←v12100, fillLocal←v12128, fillIt←v12156)
   word circleData←v12072;
   word localView←v12100;
   word fillLocal←v12128;
   word fillIt←v12156;
   {
   register ptr gf←c90528 =  (ptr) &globalframe;
   word props←v12200;
   word seg←v24144;
   word fillIsSampled←v24172;
   /* CreateProps: */ 
SOURCE(24258, 597)
SOURCE(24258, 597)
   props←v12200 = 0;
SOURCE(24408, 29)
   seg←v24144 = (* (( (ptr) circleData←v12072)+33) );
SOURCE(24439, 53)
   fillIsSampled←v24172 = (word) IsSampled←P1140((* ((( (ptr) circleData←v12072)+11)) ));
SOURCE(24495, 360)
   {
      word var←c85184;
      word var←c85216;
      word var←c85248;
      {
         word pd257;
         pd257 = (* (( (ptr) (* (( (ptr) gf←c90528)+272)/* var←c82880 */  ))+6) );
         var←c85184 = (word) ( *( (fPt) ((*  (ptr) pd257 ))))(localView←v12100, pd257);
         };
      {
         word pd258;
         if ((0 != fillIt←v12156)) {
            pd258 = (* (( (ptr) (* (( (ptr) gf←c90528)+275)/* var←c83424 */  ))+38) );
            var←c85216 = (word) ( *( (fPt) ((*  (ptr) pd258 ))))((* ((( (ptr) circleData←v12072)+11)) ), pd258);
            }
         else {
            var←c85216 = 0;
            };
         };
      var←c85248 = XR←NewObject(44, (* (( (ptr) gf←c90528)+20) ));
      (*  (ptr) var←c85248 ) = var←c85184;
      (* (( (ptr) var←c85248)+1) ) = (* (( (ptr) seg←v24144)+2) );
      (* (( (ptr) var←c85248)+2) ) = (* (( (ptr) seg←v24144)+3) );
      (* (( (ptr) var←c85248)+3) ) = (* (( (ptr) seg←v24144)+4) );
      (* (( (ptr) var←c85248)+4) ) = (* (( (ptr) seg←v24144)+5) );
      (* (( (ptr) var←c85248)+5) ) = (* (( (ptr) seg←v24144)+6) );
      (* (( (ptr) var←c85248)+6) ) = (* (( (ptr) seg←v24144)+7) );
      (* (( (ptr) var←c85248)+7) ) = (* (( (ptr) seg←v24144)+8) );
      (* (( (ptr) var←c85248)+8) ) = var←c85216;
      (* (( (ptr) var←c85248)+9) ) = fillIsSampled←v24172;
      (* (( (ptr) var←c85248)+10) ) = fillLocal←v12128;
      props←v12200 = var←c85248;
      };
SOURCE(24258, 597)
   return(props←v12200);
   }

static word IsSampled←P1140(color←v12260)
   word color←v12260;
   {
   word var←c12304;
   /* IsSampled: */ 
SOURCE(24861, 252)
SOURCE(24918, 34)
   if ((color←v12260 == 0)) {
SOURCE(24938, 14)
      return(0);
      };
SOURCE(24954, 159)
   {
      word var←c85280;
      var←c85280 = color←v12260;
      if ((var←c85280 == 0)) {
         goto lab←L100030;
         };
      {
         word var←c85312;
         var←c85312 = (*  (ptr) var←c85280 );
         if ((var←c85312 == 2)) {
            {
               word sampledBlack←v24216;
               sampledBlack←v24216 = var←c85280;
SOURCE(25019, 12)
               return(1);
               };
            }
         else {
            if ((var←c85312 == 1)) {
               {
                  word sampledColor←v24260;
                  sampledColor←v24260 = var←c85280;
SOURCE(25075, 12)
                  return(1);
                  };
               }
            else {
               lab←L100030: ;
SOURCE(25100, 13)
               return(0);
               };
            };
         };
      };
   }

static void CachedCircleDraw←P1200(dc←v12364, circleData←v12392, localView←v12420, viewView←v12448, transformColor←v12476, fillIt←v12504)
   word dc←v12364;
   word circleData←v12392;
   word localView←v12420;
   word viewView←v12448;
   word transformColor←v12476;
   word fillIt←v12504;
   {
   register ptr gf←c90560 =  (ptr) &globalframe;
   word object←v24304 = 0;
   W2 position←v24332;
   word circleProps←v24360 = 0;
   word sampledColorStays←v24388;
   /* CachedCircleDraw: */ 
SOURCE(25119, 1336)
SOURCE(25401, 80)
   sampledColorStays←v24388 =  (unsigned)  ( (0 != (word) IsSampled←P1140((* ((( (ptr) circleData←v12392)+11)) ))) ? (0 == transformColor←v12476) : 0 ) ;
SOURCE(25484, 971)
   {
      word tc259;
      word pd260;
      pd260 = (* (( (ptr) (* (( (ptr) gf←c90560)+281)/* var←c85344 */  ))+5) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd260 ))))(pd260))) {
         if ((0 == sampledColorStays←v24388)) {
            tc259 =  (word) 1;
            }
         else {
            tc259 =  (word) (viewView←v12448 == 0);
            };
         }
      else {
         tc259 =  (word) 0;
         };
      if (tc259) {
SOURCE(25566, 801)
         {
            word fillLocal←v24432 = 0;
SOURCE(25595, 60)
            fillLocal←v24432 = (word) FromFillToLocal←P1260((* (( (ptr) circleData←v12392)+11) ), localView←v12420);
SOURCE(25658, 67)
            object←v24304 = (word) FindImagerObject←P1020(circleData←v12392, localView←v12420, fillLocal←v24432, fillIt←v12504);
SOURCE(25727, 378)
            if ((object←v24304 == 0)) {
SOURCE(25749, 358)
               {
                  W4 clipR←v24476;
                  word props←v24504 = 0;
SOURCE(25774, 71)
                  (void) CircleBoxFromTransform←P960((word) &clipR←v24476, circleData←v12392, localView←v12420);
SOURCE(25862, 61)
                  props←v24504 = (word) CreateProps←P1080(circleData←v12392, localView←v12420, fillLocal←v24432, fillIt←v12504);
SOURCE(25957, 83)
                  {
                     word var←c85376;
                     var←c85376 = XR←NewObject(24, (* (( (ptr) gf←c90560)+19) ));
                     (*  (ptr) var←c85376 ) = (word) (( (bPt) gf←c90560)+824)/* var←c81376 */ ;
                     (*  (W4Pt) (( (ptr) var←c85376)+1) ) = clipR←v24476;
                     (* (( (ptr) var←c85376)+5) ) = props←v24504;
                     object←v24304 = var←c85376;
                     };
SOURCE(26042, 63)
                  {
                     word pd261;
                     pd261 = (* (( (ptr) (* (( (ptr) gf←c90560)+280)/* var←c85056 */  ))+6) );
                     (void) ( *( (fPt) ((*  (ptr) pd261 ))))((* (( (ptr) gf←c90560)+6)/* cache←v8068 */  ), props←v24504, object←v24304, 60, (* (
                           ( (ptr) gf←c90560)+53) ), pd261);
                     };
                  };
               };
SOURCE(26110, 33)
            circleProps←v24360 = XR←Narrow((* (( (ptr) object←v24304)+5) ), (* (( (ptr) gf←c90560)+20) ));
SOURCE(26145, 80)
            {
               W2 var←c85408;
               {
                  W2 var←c0436;
                  {
                     W2 var←c85440;
                     var←c85440.f0 = (*  (ptr) &fc85 );
                     var←c85440.f1 = (*  (ptr) &fc85 );
                     {
                        word pd262;
                        pd262 = (* (( (ptr) (* (( (ptr) gf←c90560)+272)/* var←c82880 */  ))+41) );
                        (void) ( *( (fPt) ((*  (ptr) pd262 ))))((word) &var←c0436, (*  (ptr) circleProps←v24360 ), var←c85440, pd262);
                        };
                     };
                  var←c85408 = var←c0436;
                  };
               {
                  W2 var←c0437;
                  {
                     word pd263;
                     pd263 = (* (( (ptr) (* (( (ptr) gf←c90560)+272)/* var←c82880 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd263 ))))((word) &var←c0437, localView←v12420, var←c85408, pd263);
                     };
                  position←v24332 = var←c0437;
                  };
               };
SOURCE(26227, 51)
            if ((viewView←v12448 != 0)) {
SOURCE(26250, 28)
               {
                  word pd264;
                  pd264 = (* (( (ptr) (* (( (ptr) gf←c90560)+270)/* var←c82656 */  ))+14) );
                  (void) ( *( (fPt) ((*  (ptr) pd264 ))))(dc←v12364, viewView←v12448, pd264);
                  };
               };
SOURCE(26280, 85)
            {
               word pd265;
               pd265 = (* (( (ptr) (* (( (ptr) gf←c90560)+270)/* var←c82656 */  ))+87) );
               (void) ( *( (fPt) ((*  (ptr) pd265 ))))(dc←v12364, object←v24304, position←v24332, 1, pd265);
               };
            };
         }
      else {
SOURCE(26374, 81)
         (void) OldCircleDrawOutline←P1380(dc←v12364, circleData←v12392, localView←v12420, viewView←v12448, transformColor←v12476, fillIt←v12504)
         ;
         };
      };
   }

static word FromFillToLocal←P1260(color←v12564, localView←v12592)
   word color←v12564;
   word localView←v12592;
   {
   register ptr gf←c90592 =  (ptr) &globalframe;
   word fillLocal←v12636;
   word fillView←v24548 = 0;
   /* FromFillToLocal: */ 
SOURCE(26461, 462)
SOURCE(26461, 462)
   fillLocal←v12636 = 0;
SOURCE(26625, 298)
   {
      word var←c85472;
      var←c85472 = color←v12564;
      if ((var←c85472 == 0)) {
         goto lab←L100031;
         };
      {
         word var←c85568;
         var←c85568 = (*  (ptr) var←c85472 );
         if ((var←c85568 == 2)) {
            {
               word sampledBlack←v24592;
               sampledBlack←v24592 = var←c85472;
SOURCE(26693, 26)
               fillView←v24548 = (* (( (ptr) sampledBlack←v24592)+2) );
SOURCE(26721, 47)
               {
                  word var←c85504;
                  {
                     word pd266;
                     pd266 = (* (( (ptr) (* (( (ptr) gf←c90592)+272)/* var←c82880 */  ))+51) );
                     var←c85504 = (word) ( *( (fPt) ((*  (ptr) pd266 ))))(localView←v12592, pd266);
                     };
                  {
                     word pd267;
                     pd267 = (* (( (ptr) (* (( (ptr) gf←c90592)+272)/* var←c82880 */  ))+13) );
                     fillLocal←v12636 = (word) ( *( (fPt) ((*  (ptr) pd267 ))))(fillView←v24548, var←c85504, pd267);
                     };
                  };
               };
            }
         else {
            if ((var←c85568 == 1)) {
               {
                  word sampledColor←v24636;
                  sampledColor←v24636 = var←c85472;
SOURCE(26817, 26)
                  fillView←v24548 = (* (( (ptr) sampledColor←v24636)+2) );
SOURCE(26845, 47)
                  {
                     word var←c85536;
                     {
                        word pd268;
                        pd268 = (* (( (ptr) (* (( (ptr) gf←c90592)+272)/* var←c82880 */  ))+51) );
                        var←c85536 = (word) ( *( (fPt) ((*  (ptr) pd268 ))))(localView←v12592, pd268);
                        };
                     {
                        word pd269;
                        pd269 = (* (( (ptr) (* (( (ptr) gf←c90592)+272)/* var←c82880 */  ))+13) );
                        fillLocal←v12636 = (word) ( *( (fPt) ((*  (ptr) pd269 ))))(fillView←v24548, var←c85536, pd269);
                        };
                     };
                  };
               }
            else {
               lab←L100031: ;
SOURCE(26908, 15)
               fillLocal←v12636 = 0;
               };
            };
         };
      };
SOURCE(26461, 462)
   return(fillLocal←v12636);
   }

static void CircleDrawObject←P1320(self←v12696, formal←c01254)
   word self←v12696;
   word formal←c01254;
   {
   W14 var←c90624;
   /* declaration of context←v12724 skipped */ 
   register ptr gf←c90656 =  (ptr) &globalframe;
   /* declaration of var←c85600 skipped */ 
   /* declaration of var←c85632 skipped */ 
   /* declaration of var←c85664 skipped */ 
   /* declaration of circleProps←v24736 skipped */ 
   /* declaration of localView←v24764 skipped */ 
   (* (( (ptr) &var←c90624)+4)/* context←v12724 */  ) = formal←c01254;
   /* CircleDrawObject: */ 
SOURCE(26929, 1217)
   {
      word tmpAddr270;
      tmpAddr270 = (word) (( (ptr) &var←c90624)+5)/* var←c85600 */ ;
      (*  (ptr) tmpAddr270 ) = ( ((word)  (fPt) PatternProc←P7068) );
      (* (( (ptr) tmpAddr270) + 1) ) = 1;
      };
   {
      word tmpAddr271;
      tmpAddr271 = (word) (( (ptr) &var←c90624)+7)/* var←c85632 */ ;
      (*  (ptr) tmpAddr271 ) = ( ((word)  (fPt) TransformedCirclePath←P6960) );
      (* (( (ptr) tmpAddr271) + 1) ) = 1;
      };
   {
      word tmpAddr272;
      tmpAddr272 = (word) (( (ptr) &var←c90624)+9)/* var←c85664 */ ;
      (*  (ptr) tmpAddr272 ) = ( ((word)  (fPt) FillItIn←P6900) );
      (* (( (ptr) tmpAddr272) + 1) ) = 1;
      };
SOURCE(27317, 38)
   (* (( (ptr) &var←c90624)+11)/* circleProps←v24736 */  ) = XR←Narrow((* (( (ptr) self←v12696)+5) ), (* (( (ptr) gf←c90656)+20)
       ));
SOURCE(27357, 49)
   (* (( (ptr) &var←c90624)+12)/* localView←v24764 */  ) = (*  (ptr) (* (( (ptr) &var←c90624)+11)/* circleProps←v24736 */  ) );
SOURCE(27409, 68)
   if (((* (( (ptr) (* (( (ptr) &var←c90624)+11)/* circleProps←v24736 */  ))+8) ) != 0)) {
SOURCE(27445, 32)
      {
         word pd273;
         pd273 = (* (( (ptr) (* (( (ptr) gf←c90656)+270)/* var←c82656 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd273 ))))((* (( (ptr) &var←c90624)+4)/* context←v12724 */  ), (word) (( (bPt) &var←c90624)+36)
            /* var←c85664 */ , pd273);
         };
      };
SOURCE(27480, 666)
   {
      word x274;
      word x275;
      if ( ( ((* (( (ptr) (* (( (ptr) &var←c90624)+11)/* circleProps←v24736 */  ))+7) ) != 0) ? ((
         x274 = (* (( (ptr) (* (( (ptr) &var←c90624)+11)/* circleProps←v24736 */  ))+1) ),  *(float*)&x274
         ) != (
         x275 = (*  (ptr) &fc85 ),  *(float*)&x275
         )) : 0 ) ) {
SOURCE(27546, 43)
         {
            word pd276;
            pd276 = (* (( (ptr) (* (( (ptr) gf←c90656)+270)/* var←c82656 */  ))+52) );
            (void) ( *( (fPt) ((*  (ptr) pd276 ))))((* (( (ptr) &var←c90624)+4)/* context←v12724 */  ), (* (( (ptr) (* (( (ptr) &var←c90624)+11)
                  /* circleProps←v24736 */  ))+7) ), pd276);
            };
SOURCE(27591, 55)
         {
            word pd277;
            pd277 = (* (( (ptr) (* (( (ptr) gf←c90656)+270)/* var←c82656 */  ))+68) );
            (void) ( *( (fPt) ((*  (ptr) pd277 ))))((* (( (ptr) &var←c90624)+4)/* context←v12724 */  ), (* (( (ptr) (* (( (ptr) &var←c90624)+11)
                  /* circleProps←v24736 */  ))+1) ), pd277);
            };
SOURCE(27648, 51)
         {
            word pd278;
            pd278 = (* (( (ptr) (* (( (ptr) gf←c90656)+270)/* var←c82656 */  ))+69) );
            (void) ( *( (fPt) ((*  (ptr) pd278 ))))((* (( (ptr) &var←c90624)+4)/* context←v12724 */  ), (* (( (ptr) (* (( (ptr) &var←c90624)+11)
                  /* circleProps←v24736 */  ))+2) ), pd278);
            };
SOURCE(27739, 37)
         {
            word pd279;
            pd279 = (* (( (ptr) (* (( (ptr) gf←c90656)+270)/* var←c82656 */  ))+70) );
            (void) ( *( (fPt) ((*  (ptr) pd279 ))))((* (( (ptr) &var←c90624)+4)/* context←v12724 */  ), 2, pd279);
            };
SOURCE(27816, 330)
         if ((0 != (* (( (ptr) (* (( (ptr) &var←c90624)+11)/* circleProps←v24736 */  ))+3) ))) {
SOURCE(27843, 241)
            {
               /* declaration of pattern←v24852 skipped */ 
SOURCE(27914, 45)
               (* (( (ptr) &var←c90624)+13)/* pattern←v24852 */  ) = (* (( (ptr) (* (( (ptr) &var←c90624)+11)/* circleProps←v24736 */  ))+4)
                );
SOURCE(27961, 121)
               {
                  word pd280;
                  pd280 = (* (( (ptr) (* (( (ptr) gf←c90656)+270)/* var←c82656 */  ))+75) );
                  (void) ( *( (fPt) ((*  (ptr) pd280 ))))((* (( (ptr) &var←c90624)+4)/* context←v12724 */  ), (word) (( (bPt) &var←c90624)+28)
                     /* var←c85632 */ , (*  (ptr) (* (( (ptr) &var←c90624)+13)/* pattern←v24852 */  ) ), (word) (( (bPt) &var←c90624)+20)/* var←c85600 */ , (* (
                        ( (ptr) (* (( (ptr) &var←c90624)+11)/* circleProps←v24736 */  ))+5) ), (* (( (ptr) (* (( (ptr) &var←c90624)+11)/* circleProps←v24736 */  ))+6)
                      ), pd280);
                  };
               };
            }
         else {
SOURCE(28091, 55)
            {
               word pd281;
               pd281 = (* (( (ptr) (* (( (ptr) gf←c90656)+270)/* var←c82656 */  ))+71) );
               (void) ( *( (fPt) ((*  (ptr) pd281 ))))((* (( (ptr) &var←c90624)+4)/* context←v12724 */  ), (word) (( (bPt) &var←c90624)+28)
                  /* var←c85632 */ , 1, pd281);
               };
            };
         };
      };
   }

static void FillItIn←P6900(formal←c90720)
   word formal←c90720;
   {
   register ptr gf←c90688 =  (ptr) &globalframe;
   formal←c90720 = (formal←c90720 - 36);
   /* FillItIn: */ 
SOURCE(27031, 149)
SOURCE(27050, 50)
   {
      word pd282;
      pd282 = (* (( (ptr) (* (( (ptr) gf←c90688)+275)/* var←c83424 */  ))+36) );
      (void) ( *( (fPt) ((*  (ptr) pd282 ))))((* (( (ptr) formal←c90720)+4) ), (* (( (ptr) (* (( (ptr) formal←c90720)+11) ))+8)
          ), 0, pd282);
      };
SOURCE(27102, 34)
   {
      word pd283;
      pd283 = (* (( (ptr) (* (( (ptr) gf←c90688)+270)/* var←c82656 */  ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd283 ))))((* (( (ptr) formal←c90720)+4) ), (* (( (ptr) formal←c90720)+12) ), pd283);
      };
SOURCE(27138, 42)
   {
      word pd284;
      pd284 = (* (( (ptr) (* (( (ptr) gf←c90688)+270)/* var←c82656 */  ))+62) );
      (void) ( *( (fPt) ((*  (ptr) pd284 ))))((* (( (ptr) formal←c90720)+4) ), (word) (( (bPt) gf←c90688)+808)/* var←c81312 */ , 1, pd284)
      ;
      };
   }

static void TransformedCirclePath←P6960(moveTo←v67588, lineTo←v67616, curveTo←v67644, conicTo←v67672, arcTo←v67700, formal←c90784)
   word moveTo←v67588;
   word lineTo←v67616;
   word curveTo←v67644;
   word conicTo←v67672;
   word arcTo←v67700;
   word formal←c90784;
   {
   register ptr gf←c90752 =  (ptr) &globalframe;
   formal←c90784 = (formal←c90784 - 28);
   /* TransformedCirclePath: */ 
SOURCE(27185, 127)
SOURCE(27228, 84)
   {
      word pd285;
      pd285 = (* (( (ptr) (* (( (ptr) gf←c90752)+278)/* var←c83616 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd285 ))))((word) (( (bPt) gf←c90752)+808)/* var←c81312 */ , (* (( (ptr) formal←c90784)+12) ), moveTo←v67588, lineTo←v67616, curveTo←v67644, conicTo←v67672
         , arcTo←v67700, 0, pd285);
      };
   }

static word PatternProc←P7068(i←v24928, formal←c90816)
   word i←v24928;
   word formal←c90816;
   {
   word var←c24972;
   formal←c90816 = (formal←c90816 - 20);
   /* PatternProc: */ 
SOURCE(27845, 19)
SOURCE(27891, 18)
   {
      word limit286;
      return((* ((( (ptr) (* (( (ptr) formal←c90816)+13) ))+1)+(
            limit286 = (*  (ptr) (* (( (ptr) formal←c90816)+13) ) ),
            BCK(i←v24928, limit286)
            )) ));
      };
   }

static void OldCircleDrawOutline←P1380(formal←c01255, formal←c01256, formal←c01257, formal←c01258, formal←c01259, fillIt←v12924)
   word formal←c01255;
   word formal←c01256;
   word formal←c01257;
   word formal←c01258;
   word formal←c01259;
   word fillIt←v12924;
   {
   W16 var←c90848;
   /* declaration of dc←v12784 skipped */ 
   /* declaration of circleData←v12812 skipped */ 
   /* declaration of localView←v12840 skipped */ 
   /* declaration of viewView←v12868 skipped */ 
   /* declaration of transformColor←v12896 skipped */ 
   register ptr gf←c90880 =  (ptr) &globalframe;
   /* declaration of var←c85696 skipped */ 
   /* declaration of var←c85728 skipped */ 
   /* declaration of var←c85760 skipped */ 
   word seg←v25056;
   (* (( (ptr) &var←c90848)+4)/* dc←v12784 */  ) = formal←c01255;
   (* (( (ptr) &var←c90848)+5)/* circleData←v12812 */  ) = formal←c01256;
   (* (( (ptr) &var←c90848)+6)/* localView←v12840 */  ) = formal←c01257;
   (* (( (ptr) &var←c90848)+7)/* viewView←v12868 */  ) = formal←c01258;
   (* (( (ptr) &var←c90848)+8)/* transformColor←v12896 */  ) = formal←c01259;
   /* OldCircleDrawOutline: */ 
SOURCE(28155, 1276)
   {
      word tmpAddr287;
      tmpAddr287 = (word) (( (ptr) &var←c90848)+9)/* var←c85696 */ ;
      (*  (ptr) tmpAddr287 ) = ( ((word)  (fPt) PatternProc←P7296) );
      (* (( (ptr) tmpAddr287) + 1) ) = 1;
      };
   {
      word tmpAddr288;
      tmpAddr288 = (word) (( (ptr) &var←c90848)+11)/* var←c85728 */ ;
      (*  (ptr) tmpAddr288 ) = ( ((word)  (fPt) FillItIn←P7188) );
      (* (( (ptr) tmpAddr288) + 1) ) = 1;
      };
   {
      word tmpAddr289;
      tmpAddr289 = (word) (( (ptr) &var←c90848)+13)/* var←c85760 */ ;
      (*  (ptr) tmpAddr289 ) = ( ((word)  (fPt) TransformedCirclePath←P7128) );
      (* (( (ptr) tmpAddr289) + 1) ) = 1;
      };
SOURCE(28788, 29)
   seg←v25056 = (* (( (ptr) (* (( (ptr) &var←c90848)+5)/* circleData←v12812 */  ))+33) );
SOURCE(28819, 71)
   if ( ( (0 != fillIt←v12924) ? ((* (( (ptr) (* (( (ptr) &var←c90848)+5)/* circleData←v12812 */  ))+11) ) != 0) : 0 ) ) {
SOURCE(28863, 27)
      {
         word pd290;
         pd290 = (* (( (ptr) (* (( (ptr) gf←c90880)+270)/* var←c82656 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd290 ))))((* (( (ptr) &var←c90848)+4)/* dc←v12784 */  ), (word) (( (bPt) &var←c90848)+44)/* var←c85728 */ , pd290)
         ;
         };
      };
SOURCE(28892, 539)
   {
      word x291;
      word x292;
      if ( ( ((* (( (ptr) seg←v25056)+8) ) != 0) ? ((
         x291 = (* (( (ptr) seg←v25056)+2) ),  *(float*)&x291
         ) != (
         x292 = (*  (ptr) &fc85 ),  *(float*)&x292
         )) : 0 ) ) {
SOURCE(28940, 51)
         if (((* (( (ptr) &var←c90848)+7)/* viewView←v12868 */  ) != 0)) {
SOURCE(28963, 28)
            {
               word pd293;
               pd293 = (* (( (ptr) (* (( (ptr) gf←c90880)+270)/* var←c82656 */  ))+14) );
               (void) ( *( (fPt) ((*  (ptr) pd293 ))))((* (( (ptr) &var←c90848)+4)/* dc←v12784 */  ), (* (( (ptr) &var←c90848)+7)/* viewView←v12868 */  ), pd293)
               ;
               };
            };
SOURCE(28993, 30)
         {
            word pd294;
            pd294 = (* (( (ptr) (* (( (ptr) gf←c90880)+270)/* var←c82656 */  ))+52) );
            (void) ( *( (fPt) ((*  (ptr) pd294 ))))((* (( (ptr) &var←c90848)+4)/* dc←v12784 */  ), (* (( (ptr) seg←v25056)+8) ), pd294)
            ;
            };
SOURCE(29025, 42)
         {
            word pd295;
            pd295 = (* (( (ptr) (* (( (ptr) gf←c90880)+270)/* var←c82656 */  ))+68) );
            (void) ( *( (fPt) ((*  (ptr) pd295 ))))((* (( (ptr) &var←c90848)+4)/* dc←v12784 */  ), (* (( (ptr) seg←v25056)+2) ), pd295)
            ;
            };
SOURCE(29069, 38)
         {
            word pd296;
            pd296 = (* (( (ptr) (* (( (ptr) gf←c90880)+270)/* var←c82656 */  ))+69) );
            (void) ( *( (fPt) ((*  (ptr) pd296 ))))((* (( (ptr) &var←c90848)+4)/* dc←v12784 */  ), (* (( (ptr) seg←v25056)+3) ), pd296)
            ;
            };
SOURCE(29109, 32)
         {
            word pd297;
            pd297 = (* (( (ptr) (* (( (ptr) gf←c90880)+270)/* var←c82656 */  ))+70) );
            (void) ( *( (fPt) ((*  (ptr) pd297 ))))((* (( (ptr) &var←c90848)+4)/* dc←v12784 */  ), 2, pd297);
            };
SOURCE(29143, 288)
         if ((0 != (* (( (ptr) seg←v25056)+4) ))) {
SOURCE(29162, 212)
            {
               /* declaration of pattern←v25144 skipped */ 
SOURCE(29233, 37)
               (* (( (ptr) &var←c90848)+15)/* pattern←v25144 */  ) = (* (( (ptr) seg←v25056)+5) );
SOURCE(29272, 100)
               {
                  word pd298;
                  pd298 = (* (( (ptr) (* (( (ptr) gf←c90880)+270)/* var←c82656 */  ))+75) );
                  (void) ( *( (fPt) ((*  (ptr) pd298 ))))((* (( (ptr) &var←c90848)+4)/* dc←v12784 */  ), (word) (( (bPt) &var←c90848)+52)/* var←c85760 */ , (*  (ptr) (* (
                        ( (ptr) &var←c90848)+15)/* pattern←v25144 */  ) ), (word) (( (bPt) &var←c90848)+36)/* var←c85696 */ , (* (( (ptr) seg←v25056)+6)
                      ), (* (( (ptr) seg←v25056)+7) ), pd298);
                  };
               };
            }
         else {
SOURCE(29381, 50)
            {
               word pd299;
               pd299 = (* (( (ptr) (* (( (ptr) gf←c90880)+270)/* var←c82656 */  ))+71) );
               (void) ( *( (fPt) ((*  (ptr) pd299 ))))((* (( (ptr) &var←c90848)+4)/* dc←v12784 */  ), (word) (( (bPt) &var←c90848)+52)/* var←c85760 */ , 1, pd299)
               ;
               };
            };
         };
      };
   }

static void TransformedCirclePath←P7128(moveTo←v69020, lineTo←v69048, curveTo←v69076, conicTo←v69104, arcTo←v69132, formal←c90944)
   word moveTo←v69020;
   word lineTo←v69048;
   word curveTo←v69076;
   word conicTo←v69104;
   word arcTo←v69132;
   word formal←c90944;
   {
   register ptr gf←c90912 =  (ptr) &globalframe;
   formal←c90944 = (formal←c90944 - 52);
   /* TransformedCirclePath: */ 
SOURCE(28333, 127)
SOURCE(28376, 84)
   {
      word pd300;
      pd300 = (* (( (ptr) (* (( (ptr) gf←c90912)+278)/* var←c83616 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd300 ))))((word) (( (bPt) gf←c90912)+808)/* var←c81312 */ , (* (( (ptr) formal←c90944)+6) ), moveTo←v69020, lineTo←v69048, curveTo←v69076, conicTo←v69104
         , arcTo←v69132, 0, pd300);
      };
   }

static void FillItIn←P7188(formal←c91008)
   word formal←c91008;
   {
   register ptr gf←c90976 =  (ptr) &globalframe;
   formal←c91008 = (formal←c91008 - 44);
   /* FillItIn: */ 
SOURCE(28465, 320)
SOURCE(28484, 127)
   if ((0 != (* (( (ptr) formal←c91008)+8) ))) {
SOURCE(28507, 60)
      {
         word pd301;
         pd301 = (* (( (ptr) (* (( (ptr) gf←c90976)+275)/* var←c83424 */  ))+36) );
         (void) ( *( (fPt) ((*  (ptr) pd301 ))))((* (( (ptr) formal←c91008)+4) ), (* (( (ptr) (* (( (ptr) formal←c91008)+5) ))+11)
             ), (* (( (ptr) formal←c91008)+7) ), pd301);
         };
      }
   else {
SOURCE(28567, 44)
      {
         word pd302;
         pd302 = (* (( (ptr) (* (( (ptr) gf←c90976)+275)/* var←c83424 */  ))+36) );
         (void) ( *( (fPt) ((*  (ptr) pd302 ))))((* (( (ptr) formal←c91008)+4) ), (* (( (ptr) (* (( (ptr) formal←c91008)+5) ))+11)
             ), 0, pd302);
         };
      };
SOURCE(28613, 51)
   if (((* (( (ptr) formal←c91008)+7) ) != 0)) {
SOURCE(28636, 28)
      {
         word pd303;
         pd303 = (* (( (ptr) (* (( (ptr) gf←c90976)+270)/* var←c82656 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd303 ))))((* (( (ptr) formal←c91008)+4) ), (* (( (ptr) formal←c91008)+7) ), pd303);
         };
      };
SOURCE(28666, 29)
   {
      word pd304;
      pd304 = (* (( (ptr) (* (( (ptr) gf←c90976)+270)/* var←c82656 */  ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd304 ))))((* (( (ptr) formal←c91008)+4) ), (* (( (ptr) formal←c91008)+6) ), pd304);
      };
SOURCE(28697, 88)
   {
      word pd305;
      pd305 = (* (( (ptr) (* (( (ptr) gf←c90976)+270)/* var←c82656 */  ))+62) );
      (void) ( *( (fPt) ((*  (ptr) pd305 ))))((* (( (ptr) formal←c91008)+4) ),  ( (0 != (* (( (ptr) (* (( (ptr) formal←c91008)+5)
             ))+12) )) ? (word) (( (bPt) gf←c90976)+808)/* var←c81312 */  : (word) (( (bPt) gf←c90976)+800)/* var←c81280 */  ) , 1, pd305)
      ;
      };
   }

static word PatternProc←P7296(i←v25220, formal←c91040)
   word i←v25220;
   word formal←c91040;
   {
   word var←c25264;
   formal←c91040 = (formal←c91040 - 36);
   /* PatternProc: */ 
SOURCE(29164, 19)
SOURCE(29210, 18)
   {
      word limit306;
      return((* ((( (ptr) (* (( (ptr) formal←c91040)+15) ))+1)+(
            limit306 = (*  (ptr) (* (( (ptr) formal←c91040)+15) ) ),
            BCK(i←v25220, limit306)
            )) ));
      };
   }

static void CirclePath←P1440(moveTo←v41624, lineTo←v41652, curveTo←v41680, conicTo←v41708, arcTo←v41736)
   word moveTo←v41624;
   word lineTo←v41652;
   word curveTo←v41680;
   word conicTo←v41708;
   word arcTo←v41736;
   {
   W2 left←v25292;
   W2 top←v25320;
   W2 right←v25348;
   W2 bottom←v25376;
   /* CirclePath: */ 
SOURCE(29440, 219)
SOURCE(29499, 25)
   left←v25292.f0 = (*  (ptr) &fc88 );
   left←v25292.f1 = (*  (ptr) &fc85 );
SOURCE(29526, 23)
   top←v25320.f0 = (*  (ptr) &fc85 );
   top←v25320.f1 = (*  (ptr) &fc87 );
SOURCE(29551, 25)
   right←v25348.f0 = (*  (ptr) &fc87 );
   right←v25348.f1 = (*  (ptr) &fc85 );
SOURCE(29578, 27)
   bottom←v25376.f0 = (*  (ptr) &fc85 );
   bottom←v25376.f1 = (*  (ptr) &fc88 );
SOURCE(29607, 12)
   (void) ( *( (fPt) ((*  (ptr) moveTo←v41624 ))))(left←v25292, moveTo←v41624);
SOURCE(29621, 17)
   (void) ( *( (fPt) ((*  (ptr) arcTo←v41736 ))))(top←v25320, right←v25348, arcTo←v41736);
SOURCE(29640, 19)
   (void) ( *( (fPt) ((*  (ptr) arcTo←v41736 ))))(bottom←v25376, left←v25292, arcTo←v41736);
   }

static void CirclePathReverse←P1500(moveTo←v41796, lineTo←v41824, curveTo←v41852, conicTo←v41880, arcTo←v41908)
   word moveTo←v41796;
   word lineTo←v41824;
   word curveTo←v41852;
   word conicTo←v41880;
   word arcTo←v41908;
   {
   W2 leftSide←v25420;
   W2 rightSide←v25448;
   /* CirclePathReverse: */ 
SOURCE(29665, 190)
SOURCE(29749, 29)
   leftSide←v25420.f0 = (*  (ptr) &fc88 );
   leftSide←v25420.f1 = (*  (ptr) &fc85 );
SOURCE(29780, 29)
   rightSide←v25448.f0 = (*  (ptr) &fc87 );
   rightSide←v25448.f1 = (*  (ptr) &fc85 );
SOURCE(29811, 16)
   (void) ( *( (fPt) ((*  (ptr) moveTo←v41796 ))))(leftSide←v25420, moveTo←v41796);
SOURCE(29829, 26)
   (void) ( *( (fPt) ((*  (ptr) arcTo←v41908 ))))(rightSide←v25448, leftSide←v25420, arcTo←v41908);
   }

static void DrawSelectionFeedbackAux←P1560(slice←v12984, circleData←v13012, formal←c01260, formal←c01261, formal←c01262, formal←c01263, formal←c01264)
   word slice←v12984;
   word circleData←v13012;
   word formal←c01260;
   word formal←c01261;
   word formal←c01262;
   word formal←c01263;
   word formal←c01264;
   {
   W11 var←c91072;
   /* declaration of normalCircleParts←v13040 skipped */ 
   /* declaration of hotCircleParts←v13068 skipped */ 
   /* declaration of dc←v13096 skipped */ 
   /* declaration of t←v13124 skipped */ 
   /* declaration of camera←v13152 skipped */ 
   register ptr gf←c91104 =  (ptr) &globalframe;
   /* declaration of var←c85984 skipped */ 
   (* (( (ptr) &var←c91072)+4)/* normalCircleParts←v13040 */  ) = formal←c01260;
   (* (( (ptr) &var←c91072)+5)/* hotCircleParts←v13068 */  ) = formal←c01261;
   (* (( (ptr) &var←c91072)+6)/* dc←v13096 */  ) = formal←c01262;
   (* (( (ptr) &var←c91072)+7)/* t←v13124 */  ) = formal←c01263;
   (* (( (ptr) &var←c91072)+8)/* camera←v13152 */  ) = formal←c01264;
   /* DrawSelectionFeedbackAux: */ 
SOURCE(29861, 1010)
   {
      word tmpAddr307;
      tmpAddr307 = (word) (( (ptr) &var←c91072)+9)/* var←c85984 */ ;
      (*  (ptr) tmpAddr307 ) = ( ((word)  (fPt) DoDrawFeedback←P7356) );
      (* (( (ptr) tmpAddr307) + 1) ) = 1;
      };
SOURCE(30838, 33)
   {
      word pd308;
      pd308 = (* (( (ptr) (* (( (ptr) gf←c91104)+270)/* var←c82656 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd308 ))))((* (( (ptr) &var←c91072)+6)/* dc←v13096 */  ), (word) (( (bPt) &var←c91072)+36)/* var←c85984 */ , pd308)
      ;
      };
   }

static void DoDrawFeedback←P7356(formal←c91168)
   word formal←c91168;
   {
   register ptr gf←c91136 =  (ptr) &globalframe;
   word thisCPisHot←v25552 = 0;
   word thisCPisSelected←v25580 = 0;
   W10 pts←v25608;
   formal←c91168 = (formal←c91168 - 36);
   /* DoDrawFeedback: */ 
SOURCE(30078, 746)
SOURCE(30175, 33)
   {
      W2 var←c86016;
      {
         W2 var←c0510;
         {
            W2 var←c86048;
            var←c86048.f0 = (*  (ptr) &fc85 );
            var←c86048.f1 = (*  (ptr) &fc85 );
            {
               word pd309;
               pd309 = (* (( (ptr) (* (( (ptr) gf←c91136)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd309 ))))((word) &var←c0510, (* (( (ptr) formal←c91168)+7) ), var←c86048, pd309);
               };
            };
         var←c86016 = var←c0510;
         };
      (*  (W2Pt) &pts←v25608 ) = var←c86016;
      };
SOURCE(30210, 34)
   {
      W2 var←c86080;
      {
         W2 var←c0513;
         {
            W2 var←c86112;
            var←c86112.f0 = (*  (ptr) &fc88 );
            var←c86112.f1 = (*  (ptr) &fc85 );
            {
               word pd310;
               pd310 = (* (( (ptr) (* (( (ptr) gf←c91136)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd310 ))))((word) &var←c0513, (* (( (ptr) formal←c91168)+7) ), var←c86112, pd310);
               };
            };
         var←c86080 = var←c0513;
         };
      (*  (W2Pt) (( (ptr) &pts←v25608)+2) ) = var←c86080;
      };
SOURCE(30246, 33)
   {
      W2 var←c86144;
      {
         W2 var←c0516;
         {
            W2 var←c86176;
            var←c86176.f0 = (*  (ptr) &fc85 );
            var←c86176.f1 = (*  (ptr) &fc87 );
            {
               word pd311;
               pd311 = (* (( (ptr) (* (( (ptr) gf←c91136)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd311 ))))((word) &var←c0516, (* (( (ptr) formal←c91168)+7) ), var←c86176, pd311);
               };
            };
         var←c86144 = var←c0516;
         };
      (*  (W2Pt) (( (ptr) &pts←v25608)+4) ) = var←c86144;
      };
SOURCE(30281, 33)
   {
      W2 var←c86208;
      {
         W2 var←c0519;
         {
            W2 var←c86240;
            var←c86240.f0 = (*  (ptr) &fc87 );
            var←c86240.f1 = (*  (ptr) &fc85 );
            {
               word pd312;
               pd312 = (* (( (ptr) (* (( (ptr) gf←c91136)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd312 ))))((word) &var←c0519, (* (( (ptr) formal←c91168)+7) ), var←c86240, pd312);
               };
            };
         var←c86208 = var←c0519;
         };
      (*  (W2Pt) (( (ptr) &pts←v25608)+6) ) = var←c86208;
      };
SOURCE(30316, 34)
   {
      W2 var←c86272;
      {
         W2 var←c0522;
         {
            W2 var←c86304;
            var←c86304.f0 = (*  (ptr) &fc85 );
            var←c86304.f1 = (*  (ptr) &fc88 );
            {
               word pd313;
               pd313 = (* (( (ptr) (* (( (ptr) gf←c91136)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd313 ))))((word) &var←c0522, (* (( (ptr) formal←c91168)+7) ), var←c86304, pd313);
               };
            };
         var←c86272 = var←c0522;
         };
      (*  (W2Pt) (( (ptr) &pts←v25608)+8) ) = var←c86272;
      };
SOURCE(30352, 472)
   {
      register word index←v25688 = 0;
      lab←L100035: ;
SOURCE(30403, 66)
      if (((* (( (ptr) formal←c91168)+5) ) != 0)) {
         thisCPisHot←v25552 =  (unsigned) (0 != (* (( (ptr) (* (( (ptr) formal←c91168)+5) ))+index←v25688) ));
         }
      else {
         thisCPisHot←v25552 =  (unsigned) 0;
         };
SOURCE(30471, 77)
      if (((* (( (ptr) formal←c91168)+4) ) != 0)) {
         thisCPisSelected←v25580 =  (unsigned) (0 != (* (( (ptr) (* (( (ptr) formal←c91168)+4) ))+index←v25688) ));
         }
      else {
         thisCPisSelected←v25580 =  (unsigned) 0;
         };
SOURCE(30550, 83)
      if ((0 != thisCPisHot←v25552)) {
SOURCE(30570, 63)
         {
            word pd314;
            pd314 = (* (( (ptr) (* (( (ptr) gf←c91136)+279)/* var←c84512 */  ))+20) );
            (void) ( *( (fPt) ((*  (ptr) pd314 ))))((* (( (ptr) formal←c91168)+6) ), (* (( (W2Pt) &pts←v25608)+index←v25688) ), 1, (* (
                  ( (ptr) (* (( (ptr) formal←c91168)+8) ))+4) ), pd314);
            };
         };
SOURCE(30635, 91)
      if ((0 != thisCPisSelected←v25580)) {
SOURCE(30660, 66)
         {
            word pd315;
            pd315 = (* (( (ptr) (* (( (ptr) gf←c91136)+279)/* var←c84512 */  ))+20) );
            (void) ( *( (fPt) ((*  (ptr) pd315 ))))((* (( (ptr) formal←c91168)+6) ), (* (( (W2Pt) &pts←v25608)+index←v25688) ), 0, (* (
                  ( (ptr) (* (( (ptr) formal←c91168)+8) ))+4) ), pd315);
            };
         };
SOURCE(30728, 96)
      if ( ( (0 == thisCPisHot←v25552) ? (0 == thisCPisSelected←v25580) : 0 ) ) {
SOURCE(30777, 47)
         {
            word pd316;
            pd316 = (* (( (ptr) (* (( (ptr) gf←c91136)+279)/* var←c84512 */  ))+19) );
            (void) ( *( (fPt) ((*  (ptr) pd316 ))))((* (( (ptr) formal←c91168)+6) ), (* (( (W2Pt) &pts←v25608)+index←v25688) ), (* (( (ptr) (* (
                     ( (ptr) formal←c91168)+8) ))+4) ), pd316);
            };
         };
      if ((index←v25688 >= 4)) {
         goto lab←L100032;
         };
      index←v25688 = (index←v25688 + 1);
      goto lab←L100035;
      lab←L100032: ;
      };
   }

static void CircleSaveSelections←P1620(slice←v13212, parts←v13240, selectClass←v13268)
   word slice←v13212;
   word parts←v13240;
   word selectClass←v13268;
   {
   W9 var←c91200;
   register ptr gf←c91232 =  (ptr) &globalframe;
   /* declaration of var←c86336 skipped */ 
   /* declaration of var←c86368 skipped */ 
   word dontClear←v25788 = 1;
   word circleParts←v25816;
   /* declaration of circleData←v25844 skipped */ 
   /* CircleSaveSelections: */ 
SOURCE(30877, 1157)
   {
      word tmpAddr317;
      tmpAddr317 = (word) (( (ptr) &var←c91200)+4)/* var←c86336 */ ;
      (*  (ptr) tmpAddr317 ) = ( ((word)  (fPt) SetSegmentField←P7524) );
      (* (( (ptr) tmpAddr317) + 1) ) = 1;
      };
   {
      word tmpAddr318;
      tmpAddr318 = (word) (( (ptr) &var←c91200)+6)/* var←c86368 */ ;
      (*  (ptr) tmpAddr318 ) = ( ((word)  (fPt) SetPointField←P7464) );
      (* (( (ptr) tmpAddr318) + 1) ) = 1;
      };
SOURCE(31693, 40)
   circleParts←v25816 = XR←Narrow(parts←v13240, (* (( (ptr) gf←c91232)+13) ));
SOURCE(31735, 43)
   (* (( (ptr) &var←c91200)+8)/* circleData←v25844 */  ) = XR←Narrow((* (( (ptr) slice←v13212)+1) ), (* (( (ptr) gf←c91232)+12)
       ));
SOURCE(31780, 41)
   if ((circleParts←v25816 == 0)) {
SOURCE(31804, 17)
      dontClear←v25788 = 0;
      };
SOURCE(31823, 121)
   {
      register word count←v26120 = 0;
      if (( (int)count←v26120 >  (int)4)) {
         goto lab←L100036;
         };
      lab←L100039: ;
SOURCE(31869, 75)
      {
         word tc319;
         if ((0 != dontClear←v25788)) {
            tc319 =  (word) (0 != (* (( (ptr) circleParts←v25816)+BCK(count←v26120, 5)) ));
            }
         else {
            tc319 =  (word) 0;
            };
         (void) SetPointField←P7464(count←v26120,  (unsigned) tc319, selectClass←v13268, (word) (( (bPt) &var←c91200)+24)/* var←c86368 */ )
         ;
         };
      if (( (int)count←v26120 >=  (int)4)) {
         goto lab←L100036;
         };
      count←v26120 = (count←v26120 + 1);
      goto lab←L100039;
      lab←L100036: ;
      };
SOURCE(31955, 79)
   (void) SetSegmentField←P7524((* (( (ptr) (* (( (ptr) &var←c91200)+8)/* circleData←v25844 */  ))+33) ),  (unsigned)  ( (0 != dontClear←v25788) ? (0 != (* (
         ( (ptr) circleParts←v25816)+5) )) : 0 ) , selectClass←v13268, (word) (( (bPt) &var←c91200)+16)/* var←c86336 */ );
   }

static void SetPointField←P7464(point←v25920, selected←v25948, selectClass←v25976, formal←c91264)
   word point←v25920;
   word selected←v25948;
   word selectClass←v25976;
   word formal←c91264;
   {
   formal←c91264 = (formal←c91264 - 24);
   /* SetPointField: */ 
SOURCE(30971, 373)
SOURCE(31058, 286)
   {
      word var←c86400;
      var←c86400 = selectClass←v25976;
      switch (var←c86400) {
         case 0: 
SOURCE(31092, 56)
            (* (( (W4Pt) (( (ptr) (* (( (ptr) formal←c91264)+8) ))+13))+BCK(point←v25920, 5)) ).f0 = selected←v25948;
            break;
         case 1: 
SOURCE(31157, 53)
            (* (( (W4Pt) (( (ptr) (* (( (ptr) formal←c91264)+8) ))+13))+BCK(point←v25920, 5)) ).f1 = selected←v25948;
            break;
         case 2: 
SOURCE(31222, 56)
            (* (( (W4Pt) (( (ptr) (* (( (ptr) formal←c91264)+8) ))+13))+BCK(point←v25920, 5)) ).f2 = selected←v25948;
            break;
         case 3: 
SOURCE(31289, 55)
            (* (( (W4Pt) (( (ptr) (* (( (ptr) formal←c91264)+8) ))+13))+BCK(point←v25920, 5)) ).f3 = selected←v25948;
            break;
         };
      };
   }

static void SetSegmentField←P7524(seg←v26036, selected←v26064, selectClass←v26092, formal←c91296)
   word seg←v26036;
   word selected←v26064;
   word selectClass←v26092;
   word formal←c91296;
   {
   formal←c91296 = (formal←c91296 - 16);
   /* SetSegmentField: */ 
SOURCE(31358, 297)
SOURCE(31445, 210)
   {
      word var←c86432;
      var←c86432 = selectClass←v26092;
      switch (var←c86432) {
         case 0: 
SOURCE(31479, 37)
            (* (( (ptr) seg←v26036)+17) ) = selected←v26064;
            break;
         case 1: 
SOURCE(31525, 34)
            (* (( (ptr) seg←v26036)+18) ) = selected←v26064;
            break;
         case 2: 
SOURCE(31571, 37)
            (* (( (ptr) seg←v26036)+19) ) = selected←v26064;
            break;
         case 3: 
SOURCE(31619, 36)
            (* (( (ptr) seg←v26036)+20) ) = selected←v26064;
            break;
         };
      };
   }

static word CircleRemakeSelections←P1680(slice←v13328, selectClass←v13356)
   word slice←v13328;
   word selectClass←v13356;
   {
   W9 var←c91328;
   register ptr gf←c91360 =  (ptr) &globalframe;
   word parts←v13400;
   /* declaration of var←c86464 skipped */ 
   /* declaration of var←c86496 skipped */ 
   /* declaration of circleData←v26220 skipped */ 
   word circleParts←v26248;
   /* CircleRemakeSelections: */ 
SOURCE(32040, 1083)
   {
      word tmpAddr320;
      tmpAddr320 = (word) (( (ptr) &var←c91328)+4)/* var←c86464 */ ;
      (*  (ptr) tmpAddr320 ) = ( ((word)  (fPt) GetSegmentField←P7692) );
      (* (( (ptr) tmpAddr320) + 1) ) = 1;
      };
   {
      word tmpAddr321;
      tmpAddr321 = (word) (( (ptr) &var←c91328)+6)/* var←c86496 */ ;
      (*  (ptr) tmpAddr321 ) = ( ((word)  (fPt) GetPointField←P7632) );
      (* (( (ptr) tmpAddr321) + 1) ) = 1;
      };
SOURCE(32040, 1083)
   parts←v13400 = 0;
SOURCE(32786, 43)
   (* (( (ptr) &var←c91328)+8)/* circleData←v26220 */  ) = XR←Narrow((* (( (ptr) slice←v13328)+1) ), (* (( (ptr) gf←c91360)+12)
       ));
SOURCE(32831, 46)
   circleParts←v26248 = XR←NewObject(24, (* (( (ptr) gf←c91360)+13) ));
SOURCE(32879, 108)
   {
      register word count←v26556 = 0;
      if (( (int)count←v26556 >  (int)4)) {
         goto lab←L100040;
         };
      lab←L100043: ;
SOURCE(32925, 62)
      {
         word var←c86528;
         var←c86528 = (word) GetPointField←P7632(count←v26556, selectClass←v13356, (word) (( (bPt) &var←c91328)+24)/* var←c86496 */ )
         ;
         (* (( (ptr) circleParts←v26248)+BCK(count←v26556, 5)) ) = var←c86528;
         };
      if (( (int)count←v26556 >=  (int)4)) {
         goto lab←L100040;
         };
      count←v26556 = (count←v26556 + 1);
      goto lab←L100043;
      lab←L100040: ;
      };
SOURCE(32998, 66)
   (* (( (ptr) circleParts←v26248)+5) ) = (word) GetSegmentField←P7692((* (( (ptr) (* (( (ptr) &var←c91328)+8)/* circleData←v26220 */  ))+33)
       ), selectClass←v13356, (word) (( (bPt) &var←c91328)+16)/* var←c86464 */ );
SOURCE(33066, 57)
   if ((0 != (word) IsEmpty←P4320(circleParts←v26248))) {
      parts←v13400 = 0;
      }
   else {
      parts←v13400 = circleParts←v26248;
      };
SOURCE(32040, 1083)
   return(parts←v13400);
   }

static word GetPointField←P7632(point←v26324, selectClass←v26352, formal←c91392)
   word point←v26324;
   word selectClass←v26352;
   word formal←c91392;
   {
   word var←c26396;
   formal←c91392 = (formal←c91392 - 24);
   /* GetPointField: */ 
SOURCE(32145, 353)
SOURCE(32230, 268)
   {
      word var←c86560;
      var←c86560 = selectClass←v26352;
      switch (var←c86560) {
         case 0: 
            return((* (( (W4Pt) (( (ptr) (* (( (ptr) formal←c91392)+8) ))+13))+BCK(point←v26324, 5)) ).f0);
         case 1: 
            return((* (( (W4Pt) (( (ptr) (* (( (ptr) formal←c91392)+8) ))+13))+BCK(point←v26324, 5)) ).f1);
         case 2: 
            return((* (( (W4Pt) (( (ptr) (* (( (ptr) formal←c91392)+8) ))+13))+BCK(point←v26324, 5)) ).f2);
         case 3: 
            return((* (( (W4Pt) (( (ptr) (* (( (ptr) formal←c91392)+8) ))+13))+BCK(point←v26324, 5)) ).f3);
         default: 
            return(0);
         };
      };
   }

static word GetSegmentField←P7692(seg←v26456, selectClass←v26484, formal←c91424)
   word seg←v26456;
   word selectClass←v26484;
   word formal←c91424;
   {
   word var←c26528;
   formal←c91424 = (formal←c91424 - 16);
   /* GetSegmentField: */ 
SOURCE(32503, 278)
SOURCE(32589, 192)
   {
      word var←c86592;
      var←c86592 = selectClass←v26484;
      switch (var←c86592) {
         case 0: 
            return((* (( (ptr) seg←v26456)+17) ));
         case 1: 
            return((* (( (ptr) seg←v26456)+18) ));
         case 2: 
            return((* (( (ptr) seg←v26456)+19) ));
         case 3: 
            return((* (( (ptr) seg←v26456)+20) ));
         default: 
            return(0);
         };
      };
   }

static void CircleTransform←P1740(slice←v13460, parts←v13488, transform←v13516, editConstraints←v13544, history←v13572)
   word slice←v13460;
   word parts←v13488;
   word transform←v13516;
   word editConstraints←v13544;
   word history←v13572;
   {
   register ptr gf←c91456 =  (ptr) &globalframe;
   word isOrigin←v26600 = 0;
   word cpCount←v26628 = 0;
   word cpIndex←v26656 =  (word) -1;
   W2 originPoint←v26684;
   W2 edgePoint←v26712;
   W2 pointInUnitSpace←v26740;
   word circleData←v26768;
   word circleParts←v26796;
   /* CircleTransform: */ 
SOURCE(33230, 2354)
SOURCE(33490, 43)
   circleData←v26768 = XR←Narrow((* (( (ptr) slice←v13460)+1) ), (* (( (ptr) gf←c91456)+12) ));
SOURCE(33535, 40)
   circleParts←v26796 = XR←Narrow(parts←v13488, (* (( (ptr) gf←c91456)+13) ));
SOURCE(33577, 2007)
SOURCE(33583, 65)
   if ((circleParts←v26796 == 0) || (0 != (*  (ptr) circleParts←v26796 ))) {
SOURCE(33633, 15)
      isOrigin←v26600 = 1;
      };
SOURCE(33650, 145)
   {
      register word index←v26840 = 1;
      lab←L100048: ;
SOURCE(33701, 94)
      if ((circleParts←v26796 == 0)) { goto then0322;};
      if ((0 != (* (( (ptr) circleParts←v26796)+index←v26840) ))) {
         then0322: ;
SOURCE(33757, 21)
         cpCount←v26628 = (cpCount←v26628 + 1);
SOURCE(33780, 15)
         cpIndex←v26656 = index←v26840;
         };
      if ((index←v26840 >= 4)) {
         goto lab←L100045;
         };
      index←v26840 = (index←v26840 + 1);
      goto lab←L100048;
      lab←L100045: ;
      };
SOURCE(33809, 262)
   if ((circleParts←v26796 == 0) || (0 != (* (( (ptr) circleParts←v26796)+5) ))) {
SOURCE(33906, 83)
      {
         word pd323;
         pd323 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+13) );
         (* (( (ptr) circleData←v26768)+1) ) = (word) ( *( (fPt) ((*  (ptr) pd323 ))))((* (( (ptr) circleData←v26768)+1) ), transform←v13516, pd323)
         ;
         };
SOURCE(33991, 80)
      {
         word pd324;
         pd324 = (* (( (ptr) (* (( (ptr) gf←c91456)+275)/* var←c83424 */  ))+37) );
         (* (( (ptr) circleData←v26768)+11) ) = (word) ( *( (fPt) ((*  (ptr) pd324 ))))((* (( (ptr) circleData←v26768)+11) ), transform←v13516, pd324)
         ;
         };
SOURCE(34073, 20)
      goto lab←L100044;
      };
SOURCE(34098, 175)
   if ((0 != isOrigin←v26600) || ( (int)cpCount←v26628 >  (int)1)) {
SOURCE(34190, 83)
      {
         word pd325;
         pd325 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+13) );
         (* (( (ptr) circleData←v26768)+1) ) = (word) ( *( (fPt) ((*  (ptr) pd325 ))))((* (( (ptr) circleData←v26768)+1) ), transform←v13516, pd325)
         ;
         };
SOURCE(34275, 20)
      goto lab←L100044;
      };
SOURCE(34301, 78)
   {
      W2 var←c0573;
      {
         W2 var←c86624;
         var←c86624.f0 = (*  (ptr) &fc85 );
         var←c86624.f1 = (*  (ptr) &fc85 );
         {
            word pd326;
            pd326 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd326 ))))((word) &var←c0573, (* (( (ptr) circleData←v26768)+1) ), var←c86624, pd326);
            };
         };
      originPoint←v26684 = var←c0573;
      };
SOURCE(34381, 589)
   if ( ( ( (int)cpCount←v26628 ==  (int)0) ? (0 == isOrigin←v26600) : 0 ) ) {
SOURCE(34420, 134)
      {
         W2 var←c86656;
         W2 var←c86688;
         W6 var←c0577;
         {
            word pd327;
            pd327 = (* (( (ptr) (* (( (ptr) gf←c91456)+273)/* var←c82944 */  ))+11) );
            (void) ( *( (fPt) ((*  (ptr) pd327 ))))((word) &var←c86656, (*  (W2Pt) (( (ptr) circleData←v26768)+9) ), originPoint←v26684, pd327)
            ;
            };
         {
            word pd328;
            pd328 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+50) );
            (void) ( *( (fPt) ((*  (ptr) pd328 ))))((word) &var←c0577, transform←v13516, pd328);
            };
         var←c86688 = (*  (W2Pt) (( (ptr) &var←c0577)+4) );
         {
            W2 var←c0578;
            {
               word pd329;
               pd329 = (* (( (ptr) (* (( (ptr) gf←c91456)+273)/* var←c82944 */  ))+10) );
               (void) ( *( (fPt) ((*  (ptr) pd329 ))))((word) &var←c0578, var←c86656, var←c86688, pd329);
               };
            edgePoint←v26712 = var←c0578;
            };
         };
SOURCE(34588, 49)
      {
         word pd330;
         pd330 = (* (( (ptr) (* (( (ptr) gf←c91456)+273)/* var←c82944 */  ))+10) );
         (void) ( *( (fPt) ((*  (ptr) pd330 ))))((word) &edgePoint←v26712, originPoint←v26684, edgePoint←v26712, pd330);
         };
      }
   else {
SOURCE(34732, 172)
      {
         W2 var←c86720;
         {
            word var←c86752;
            var←c86752 = cpIndex←v26656;
            switch (var←c86752) {
               case 1: 
                  var←c86720.f0 = (*  (ptr) &fc88 );
                  var←c86720.f1 = (*  (ptr) &fc85 );
                  break;
               case 2: 
                  var←c86720.f0 = (*  (ptr) &fc85 );
                  var←c86720.f1 = (*  (ptr) &fc87 );
                  break;
               case 3: 
                  var←c86720.f0 = (*  (ptr) &fc87 );
                  var←c86720.f1 = (*  (ptr) &fc85 );
                  break;
               case 4: 
                  var←c86720.f0 = (*  (ptr) &fc85 );
                  var←c86720.f1 = (*  (ptr) &fc88 );
                  break;
               default: 
                  var←c86720 = (*  (W2Pt) (
                     XR←RaiseUnnamedError(), &dummy156
                     ) );
                  break;
               };
            };
         {
            W2 var←c0586;
            {
               word pd331;
               pd331 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd331 ))))((word) &var←c0586, (* (( (ptr) circleData←v26768)+1) ), var←c86720, pd331);
               };
            edgePoint←v26712 = var←c0586;
            };
         };
SOURCE(34906, 64)
      {
         word pd332;
         pd332 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+39) );
         (void) ( *( (fPt) ((*  (ptr) pd332 ))))((word) &edgePoint←v26712, transform←v13516, edgePoint←v26712, pd332);
         };
      };
SOURCE(34997, 80)
   {
      word pd333;
      pd333 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd333 ))))((word) &pointInUnitSpace←v26740, (* (( (ptr) circleData←v26768)+6) ), edgePoint←v26712, pd333)
      ;
      };
SOURCE(35079, 132)
   {
      word var←c86912;
      {
         word pd334;
         word x335;
         float tf336;
         float tf337;
         word x338;
         float tf339;
         pd334 = (* (( (ptr) (* (( (ptr) gf←c91456)+273)/* var←c82944 */  ))+18) );
         var←c86912 = (
            tf339 = FMAX((
                  x335 = (word) ( *( (fPt) ((*  (ptr) pd334 ))))(pointInUnitSpace←v26740, pd334),  *(float*)&x335
                  ), (
                  x338 = (* (( (ptr) gf←c91456)+5)/* circleLimit←v6164 */  ),  *(float*)&x338
                  ), tf336, tf337),  *(word*)&tf339
            );
         };
      {
         word pd340;
         pd340 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+15) );
         (* (( (ptr) circleData←v26768)+1) ) = (word) ( *( (fPt) ((*  (ptr) pd340 ))))((* (( (ptr) circleData←v26768)+1) ), var←c86912, pd340)
         ;
         };
      };
SOURCE(35245, 20)
   goto lab←L100044;
   /* c2c skipped dead code */ 
   lab←L100044: ;
SOURCE(35294, 76)
   {
      word pd341;
      pd341 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+56) );
      (void) ( *( (fPt) ((*  (ptr) pd341 ))))((word) (( (bPt) circleData←v26768)+8), (* (( (ptr) circleData←v26768)+1) ), pd341)
      ;
      };
SOURCE(35372, 70)
   {
      word pd342;
      pd342 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+51) );
      (* (( (ptr) circleData←v26768)+6) ) = (word) ( *( (fPt) ((*  (ptr) pd342 ))))((* ((( (ptr) circleData←v26768)+1)) ), pd342)
      ;
      };
SOURCE(35444, 81)
   {
      word pd343;
      pd343 = (* (( (ptr) (* (( (ptr) gf←c91456)+272)/* var←c82880 */  ))+56) );
      (void) ( *( (fPt) ((*  (ptr) pd343 ))))((word) (( (bPt) circleData←v26768)+28), (* (( (ptr) circleData←v26768)+6) ), pd343)
      ;
      };
SOURCE(35527, 23)
   (void) CircleSetScaling←P420(slice←v13460);
SOURCE(35552, 27)
   {
      word pd344;
      pd344 = (* (( (ptr) (* (( (ptr) gf←c91456)+267)/* var←c82368 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd344 ))))(slice←v13460, pd344);
      };
   }

static word CircleDescribeHit←P1800(slice←v13632, hitData←v13660)
   word slice←v13632;
   word hitData←v13660;
   {
   register ptr gf←c91488 =  (ptr) &globalframe;
   word rope←v13720;
   word circleHitData←v26884;
   word prefix←v26912 = 0;
   /* CircleDescribeHit: */ 
SOURCE(35592, 377)
SOURCE(35592, 377)
   rope←v13720 = 0;
SOURCE(35679, 46)
   circleHitData←v26884 = XR←Narrow(hitData←v13660, (* (( (ptr) gf←c91488)+21) ));
SOURCE(35746, 168)
   if (( (int)((*  (ptr) circleHitData←v26884 ) - 1) !=  (int) (word) -1)) {
SOURCE(35778, 76)
      if (( (int)((*  (ptr) circleHitData←v26884 ) - 1) ==  (int)0)) {
         prefix←v26912 = (* (( (ptr) gf←c91488)+46) );
         }
      else {
         prefix←v26912 = (* (( (ptr) gf←c91488)+25) );
         };
      }
   else {
SOURCE(35861, 53)
      if ((0 != (* (( (ptr) circleHitData←v26884)+3) ))) {
SOURCE(35891, 23)
         prefix←v26912 = (* (( (ptr) gf←c91488)+26) );
         }
      else {
SOURCE(35914, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(35921, 48)
   {
      word pd345;
      pd345 = (* (( (ptr) (* (( (ptr) gf←c91488)+282)/* var←c86944 */  ))+6) );
      rope←v13720 = (word) ( *( (fPt) ((*  (ptr) pd345 ))))(prefix←v26912, (* (( (ptr) gf←c91488)+27) ), pd345);
      };
SOURCE(35592, 377)
   return(rope←v13720);
   }

static word CircleDescribe←P1860(sliceD←v13780)
   word sliceD←v13780;
   {
   register ptr gf←c91520 =  (ptr) &globalframe;
   word rope←v13824;
   word prefix←v26956 = 0;
   word cpCount←v26984 = 0;
   word circleParts←v27012 = 0;
   /* CircleDescribe: */ 
SOURCE(35975, 622)
SOURCE(35975, 622)
   rope←v13824 = 0;
SOURCE(36115, 51)
   if (((* (( (ptr) sliceD←v13780)+1) ) == 0)) {
SOURCE(36142, 24)
      return((* (( (ptr) gf←c91520)+28) ));
      };
SOURCE(36168, 34)
   circleParts←v27012 = XR←Narrow((* (( (ptr) sliceD←v13780)+1) ), (* (( (ptr) gf←c91520)+13) ));
SOURCE(36204, 107)
   {
      register word index←v27056 = 0;
      lab←L100053: ;
SOURCE(36255, 56)
      if ((0 != (* (( (ptr) circleParts←v27012)+index←v27056) ))) {
SOURCE(36290, 21)
         cpCount←v26984 = (cpCount←v26984 + 1);
         };
      if ((index←v27056 >= 4)) {
         goto lab←L100050;
         };
      index←v27056 = (index←v27056 + 1);
      goto lab←L100053;
      lab←L100050: ;
      };
SOURCE(36322, 63)
   if (( (int)cpCount←v26984 >  (int)1)) {
SOURCE(36342, 43)
      return((* (( (ptr) gf←c91520)+29) ));
      };
SOURCE(36387, 160)
   if (( (int)cpCount←v26984 ==  (int)0)) {
SOURCE(36405, 67)
      if ((0 != (* (( (ptr) circleParts←v27012)+5) ))) {
         prefix←v26956 = (* (( (ptr) gf←c91520)+30) );
         }
      else {
         prefix←v26956 = (* (( (ptr) gf←c91520)+31) );
         };
      }
   else {
SOURCE(36472, 75)
      if ((0 != (*  (ptr) circleParts←v27012 ))) {
         prefix←v26956 = (* (( (ptr) gf←c91520)+46) );
         }
      else {
         prefix←v26956 = (* (( (ptr) gf←c91520)+25) );
         };
      };
SOURCE(36549, 48)
   {
      word pd346;
      pd346 = (* (( (ptr) (* (( (ptr) gf←c91520)+282)/* var←c86944 */  ))+6) );
      rope←v13824 = (word) ( *( (fPt) ((*  (ptr) pd346 ))))(prefix←v26956, (* (( (ptr) gf←c91520)+27) ), pd346);
      };
SOURCE(35975, 622)
   return(rope←v13824);
   }

static void CircleFileout←P1920(slice←v13884, f←v13912)
   word slice←v13884;
   word f←v13912;
   {
   register ptr gf←c91552 =  (ptr) &globalframe;
   word circleData←v27100;
   /* CircleFileout: */ 
SOURCE(36603, 929)
SOURCE(36656, 43)
   circleData←v27100 = XR←Narrow((* (( (ptr) slice←v13884)+1) ), (* (( (ptr) gf←c91552)+12) ));
SOURCE(36701, 55)
   {
      word pd347;
      pd347 = (* (( (ptr) (* (( (ptr) gf←c91552)+283)/* var←c86976 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd347 ))))(f←v13912, (* (( (ptr) circleData←v27100)+1) ), pd347);
      };
SOURCE(36758, 27)
   {
      word pd348;
      pd348 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd348 ))))(f←v13912, (* (( (ptr) gf←c91552)+32) ), 0, 2147483647, pd348);
      };
SOURCE(36787, 50)
   {
      W2 var←c87040;
      var←c87040.f0 = 8;
      var←c87040.f1 = (* (( (ptr) (* (( (ptr) circleData←v27100)+33) ))+2) );
      {
         word pd349;
         pd349 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+61) );
         (void) ( *( (fPt) ((*  (ptr) pd349 ))))(f←v13912, (* (( (ptr) gf←c91552)+33) ), var←c87040, pd349);
         };
      };
SOURCE(36839, 27)
   {
      word pd350;
      pd350 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd350 ))))(f←v13912, (* (( (ptr) gf←c91552)+34) ), 0, 2147483647, pd350);
      };
SOURCE(36868, 46)
   {
      word pd351;
      pd351 = (* (( (ptr) (* (( (ptr) gf←c91552)+283)/* var←c86976 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd351 ))))(f←v13912, (* (( (ptr) (* (( (ptr) circleData←v27100)+33) ))+8) ), pd351);
      };
SOURCE(36916, 25)
   {
      word pd352;
      pd352 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd352 ))))(f←v13912, (* (( (ptr) gf←c91552)+35) ), 0, 2147483647, pd352);
      };
SOURCE(36943, 46)
   {
      word pd353;
      pd353 = (* (( (ptr) (* (( (ptr) gf←c91552)+283)/* var←c86976 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd353 ))))(f←v13912, (* (( (ptr) circleData←v27100)+11) ), pd353);
      };
SOURCE(36991, 24)
   {
      word pd354;
      pd354 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd354 ))))(f←v13912, (* (( (ptr) gf←c91552)+36) ), 0, 2147483647, pd354);
      };
SOURCE(37017, 46)
   {
      word pd355;
      pd355 = (* (( (ptr) (* (( (ptr) gf←c91552)+283)/* var←c86976 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd355 ))))(f←v13912, (* (( (ptr) (* (( (ptr) circleData←v27100)+33) ))+4) ), pd355);
      };
SOURCE(37065, 16)
   {
      word pd356;
      pd356 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+21) );
      (void) ( *( (fPt) ((*  (ptr) pd356 ))))(f←v13912, 32, pd356);
      };
SOURCE(37083, 167)
   if ((0 != (* (( (ptr) (* (( (ptr) circleData←v27100)+33) ))+4) ))) {
SOURCE(37115, 54)
      {
         word pd357;
         pd357 = (* (( (ptr) (* (( (ptr) gf←c91552)+283)/* var←c86976 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd357 ))))(f←v13912, (* (( (ptr) (* (( (ptr) circleData←v27100)+33) ))+5) ), pd357);
         };
SOURCE(37171, 79)
      {
         W2 var←c87072;
         W2 var←c87104;
         W2 var←c01213;
         var←c87072.f0 = 8;
         var←c87072.f1 = (* (( (ptr) (* (( (ptr) circleData←v27100)+33) ))+6) );
         var←c87104.f0 = 8;
         var←c87104.f1 = (* (( (ptr) (* (( (ptr) circleData←v27100)+33) ))+7) );
         (*  (ptr) (word) &var←c01213 ) = 0;
         (* (( (ptr) (word) &var←c01213) + 1) ) = 0;
         {
            word pd358;
            pd358 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+60) );
            (void) ( *( (fPt) ((*  (ptr) pd358 ))))(f←v13912, (* (( (ptr) gf←c91552)+37) ), var←c87072, var←c87104, var←c01213, pd358)
            ;
            };
         };
      };
SOURCE(37255, 15)
   {
      word pd359;
      pd359 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd359 ))))(f←v13912, (* (( (ptr) gf←c91552)+38) ), 0, 2147483647, pd359);
      };
SOURCE(37272, 23)
   {
      word pd360;
      pd360 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd360 ))))(f←v13912, (* (( (ptr) gf←c91552)+39) ), 0, 2147483647, pd360);
      };
SOURCE(37297, 49)
   {
      word pd361;
      pd361 = (* (( (ptr) (* (( (ptr) gf←c91552)+283)/* var←c86976 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd361 ))))(f←v13912,  (unsigned) ((* (( (ptr) (* (( (ptr) circleData←v27100)+33) ))+25) ) != 0), pd361)
      ;
      };
SOURCE(37348, 101)
   if (((* (( (ptr) (* (( (ptr) circleData←v27100)+33) ))+25) ) != 0)) {
SOURCE(37381, 52)
      {
         word pd362;
         pd362 = (* (( (ptr) (* (( (ptr) gf←c91552)+283)/* var←c86976 */  ))+13) );
         (void) ( *( (fPt) ((*  (ptr) pd362 ))))(f←v13912, (* (( (ptr) (* (( (ptr) circleData←v27100)+33) ))+25) ), pd362);
         };
      }
   else {
SOURCE(37433, 16)
      {
         word pd363;
         pd363 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+21) );
         (void) ( *( (fPt) ((*  (ptr) pd363 ))))(f←v13912, 32, pd363);
         };
      };
SOURCE(37467, 20)
   {
      word pd364;
      pd364 = (* (( (ptr) (* (( (ptr) gf←c91552)+284)/* var←c87008 */  ))+93) );
      (void) ( *( (fPt) ((*  (ptr) pd364 ))))(f←v13912, (* (( (ptr) gf←c91552)+40) ), 0, 2147483647, pd364);
      };
SOURCE(37489, 43)
   {
      word pd365;
      pd365 = (* (( (ptr) (* (( (ptr) gf←c91552)+283)/* var←c86976 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd365 ))))(f←v13912, (* (( (ptr) circleData←v27100)+12) ), pd365);
      };
   }

static word CircleFilein←P1980(f←v13972, version←v14000, router←v14028, camera←v14056)
   word f←v13972;
   word version←v14000;
   word router←v14028;
   word camera←v14056;
   {
   register ptr gf←c91584 =  (ptr) &globalframe;
   word slice←v14100;
   word fwd←v27144 = 1;
   word circleData←v27172 = 0;
   W2 origin←v27200;
   W2 outerPoint←v27228;
   word transform←v27256 = 0;
   word strokeWidth←v27284;
   word strokeColor←v27312 = 0;
   word fillColor←v27340 = 0;
   /* CircleFilein: */ 
SOURCE(37537, 2097)
SOURCE(37537, 2097)
   slice←v14100 = 0;
SOURCE(37794, 43)
   {
      word pd366;
      pd366 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+20) );
      transform←v27256 = (word) ( *( (fPt) ((*  (ptr) pd366 ))))(f←v13972, pd366);
      };
SOURCE(37839, 69)
   {
      W2 var←c0623;
      {
         W2 var←c87200;
         var←c87200.f0 = (*  (ptr) &fc85 );
         var←c87200.f1 = (*  (ptr) &fc85 );
         {
            word pd367;
            pd367 = (* (( (ptr) (* (( (ptr) gf←c91584)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd367 ))))((word) &var←c0623, transform←v27256, var←c87200, pd367);
            };
         };
      origin←v27200 = var←c0623;
      };
SOURCE(37910, 73)
   {
      W2 var←c0625;
      {
         W2 var←c87232;
         var←c87232.f0 = (*  (ptr) &fc85 );
         var←c87232.f1 = (*  (ptr) &fc87 );
         {
            word pd368;
            pd368 = (* (( (ptr) (* (( (ptr) gf←c91584)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd368 ))))((word) &var←c0625, transform←v27256, var←c87232, pd368);
            };
         };
      outerPoint←v27228 = var←c0625;
      };
SOURCE(37985, 37)
   {
      word pd369;
      pd369 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd369 ))))(f←v13972, (* (( (ptr) gf←c91584)+41) ), pd369);
      };
SOURCE(38024, 35)
   {
      word pd370;
      pd370 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+27) );
      strokeWidth←v27284 = (word) ( *( (fPt) ((*  (ptr) pd370 ))))(f←v13972, pd370);
      };
SOURCE(38061, 37)
   {
      word pd371;
      pd371 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd371 ))))(f←v13972, (* (( (ptr) gf←c91584)+42) ), pd371);
      };
SOURCE(38100, 45)
   {
      word pd372;
      pd372 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+16) );
      strokeColor←v27312 = (word) ( *( (fPt) ((*  (ptr) pd372 ))))(f←v13972, version←v14000, pd372);
      };
SOURCE(38147, 35)
   {
      word pd373;
      pd373 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd373 ))))(f←v13972, (* (( (ptr) gf←c91584)+43) ), pd373);
      };
SOURCE(38184, 43)
   {
      word pd374;
      pd374 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+16) );
      fillColor←v27340 = (word) ( *( (fPt) ((*  (ptr) pd374 ))))(f←v13972, version←v14000, pd374);
      };
SOURCE(38229, 49)
   slice←v14100 = (*  (ptr) MakeCircleSlice←P120(origin←v27200, outerPoint←v27228) );
SOURCE(38280, 31)
   circleData←v27172 = XR←Narrow((* (( (ptr) slice←v14100)+1) ), (* (( (ptr) gf←c91584)+12) ));
SOURCE(38313, 32)
   (* (( (ptr) circleData←v27172)+1) ) = transform←v27256;
SOURCE(38347, 76)
   {
      word pd375;
      pd375 = (* (( (ptr) (* (( (ptr) gf←c91584)+272)/* var←c82880 */  ))+56) );
      (void) ( *( (fPt) ((*  (ptr) pd375 ))))((word) (( (bPt) circleData←v27172)+8), (* (( (ptr) circleData←v27172)+1) ), pd375)
      ;
      };
SOURCE(38425, 70)
   {
      word pd376;
      pd376 = (* (( (ptr) (* (( (ptr) gf←c91584)+272)/* var←c82880 */  ))+51) );
      (* (( (ptr) circleData←v27172)+6) ) = (word) ( *( (fPt) ((*  (ptr) pd376 ))))((* ((( (ptr) circleData←v27172)+1)) ), pd376)
      ;
      };
SOURCE(38497, 81)
   {
      word pd377;
      pd377 = (* (( (ptr) (* (( (ptr) gf←c91584)+272)/* var←c82880 */  ))+56) );
      (void) ( *( (fPt) ((*  (ptr) pd377 ))))((word) (( (bPt) circleData←v27172)+28), (* (( (ptr) circleData←v27172)+6) ), pd377)
      ;
      };
SOURCE(38580, 40)
   (* (( (ptr) (* (( (ptr) circleData←v27172)+33) ))+2) ) = strokeWidth←v27284;
SOURCE(38622, 34)
   (* (( (ptr) (* (( (ptr) circleData←v27172)+33) ))+8) ) = strokeColor←v27312;
SOURCE(38658, 32)
   (* (( (ptr) circleData←v27172)+11) ) = fillColor←v27340;
SOURCE(38692, 344)
   {
      word x378;
      word x380;
      if (((
         x378 = version←v14000,  *(float*)&x378
         ) >= (
         x380 = (*  (ptr) &fc379 ),  *(float*)&x380
         ))) {
SOURCE(38744, 34)
         {
            word pd381;
            pd381 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd381 ))))(f←v13972, (* (( (ptr) gf←c91584)+44) ), pd381);
            };
SOURCE(38780, 45)
         {
            word pd382;
            pd382 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+24) );
            (* (( (ptr) (* (( (ptr) circleData←v27172)+33) ))+4) ) = (word) ( *( (fPt) ((*  (ptr) pd382 ))))(f←v13972, pd382);
            };
SOURCE(38827, 179)
         if ((0 != (* (( (ptr) (* (( (ptr) circleData←v27172)+33) ))+4) ))) {
SOURCE(38859, 53)
            {
               word pd383;
               pd383 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+23) );
               (* (( (ptr) (* (( (ptr) circleData←v27172)+33) ))+5) ) = (word) ( *( (fPt) ((*  (ptr) pd383 ))))(f←v13972, pd383);
               };
SOURCE(38914, 45)
            {
               word pd384;
               pd384 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+27) );
               (* (( (ptr) (* (( (ptr) circleData←v27172)+33) ))+6) ) = (word) ( *( (fPt) ((*  (ptr) pd384 ))))(f←v13972, pd384);
               };
SOURCE(38961, 45)
            {
               word pd385;
               pd385 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+27) );
               (* (( (ptr) (* (( (ptr) circleData←v27172)+33) ))+7) ) = (word) ( *( (fPt) ((*  (ptr) pd385 ))))(f←v13972, pd385);
               };
            };
SOURCE(39011, 25)
         {
            word pd386;
            pd386 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+10) );
            (void) ( *( (fPt) ((*  (ptr) pd386 ))))(f←v13972, 41, pd386);
            };
         };
      };
SOURCE(39041, 536)
   {
      word x387;
      word x389;
      if (((
         x387 = version←v14000,  *(float*)&x387
         ) >= (
         x389 = (*  (ptr) &fc388 ),  *(float*)&x389
         ))) {
SOURCE(39066, 516)
         {
            word hasProps←v27384 = 0;
            word props←v27412 = 0;
SOURCE(39149, 34)
            {
               word pd390;
               pd390 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+9) );
               (void) ( *( (fPt) ((*  (ptr) pd390 ))))(f←v13972, (* (( (ptr) gf←c91584)+45) ), pd390);
               };
SOURCE(39185, 32)
            {
               word pd391;
               pd391 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+24) );
               hasProps←v27384 = (word) ( *( (fPt) ((*  (ptr) pd391 ))))(f←v13972, pd391);
               };
SOURCE(39219, 61)
            {
               word pd392;
               if ((0 != hasProps←v27384)) {
                  pd392 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+13) );
                  props←v27412 = (word) ( *( (fPt) ((*  (ptr) pd392 ))))(f←v13972, pd392);
                  }
               else {
                  props←v27412 = 0;
                  };
               };
SOURCE(39282, 25)
            {
               word pd393;
               pd393 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+10) );
               (void) ( *( (fPt) ((*  (ptr) pd393 ))))(f←v13972, 41, pd393);
               };
SOURCE(39309, 146)
            if ((props←v27412 != 0)) {
SOURCE(39329, 126)
               {
                  register word next←v27540;
                  next←v27540 = props←v27412;
                  lab←L100057: ;
                  if ((next←v27540 != 0)) {
                     }
                  else {
                     goto lab←L100054;
                     };
SOURCE(39394, 61)
                  {
                     word var←c87264;
                     var←c87264 = XR←NewObject(8, (* (( (ptr) gf←c91584)+24) ));
                     (*  (ptr) var←c87264 ) = (*  (ptr) next←v27540 );
                     (* (( (ptr) var←c87264)+1) ) = (* (( (ptr) (* (( (ptr) circleData←v27172)+33) ))+25) );
                     (* (( (ptr) (* (( (ptr) circleData←v27172)+33) ))+25) ) = var←c87264;
                     };
                  next←v27540 = (* (( (ptr) next←v27540)+1) );
                  goto lab←L100057;
                  lab←L100054: ;
                  };
               };
SOURCE(39469, 108)
            {
               word x394;
               word x396;
               if (((
                  x394 = version←v14000,  *(float*)&x394
                  ) >= (
                  x396 = (*  (ptr) &fc395 ),  *(float*)&x396
                  ))) {
SOURCE(39519, 29)
                  {
                     word pd397;
                     pd397 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+9) );
                     (void) ( *( (fPt) ((*  (ptr) pd397 ))))(f←v13972, (* (( (ptr) gf←c91584)+47) ), pd397);
                     };
SOURCE(39550, 27)
                  {
                     word pd398;
                     pd398 = (* (( (ptr) (* (( (ptr) gf←c91584)+285)/* var←c87168 */  ))+24) );
                     fwd←v27144 = (word) ( *( (fPt) ((*  (ptr) pd398 ))))(f←v13972, pd398);
                     };
                  };
               };
            };
         };
      };
SOURCE(39585, 23)
   (void) CircleSetScaling←P420(slice←v14100);
SOURCE(39610, 24)
   (* (( (ptr) circleData←v27172)+12) ) = fwd←v27144;
SOURCE(37537, 2097)
   return(slice←v14100);
   }

static word CircleIsEmptyParts←P2040(sliceD←v14160)
   word sliceD←v14160;
   {
   register ptr gf←c91616 =  (ptr) &globalframe;
   word var←c14204;
   word circleParts←v27668;
   /* CircleIsEmptyParts: */ 
SOURCE(39639, 156)
SOURCE(39639, 156)
   var←c14204 = 0;
SOURCE(39717, 47)
   circleParts←v27668 = XR←Narrow((* (( (ptr) sliceD←v14160)+1) ), (* (( (ptr) gf←c91616)+13) ));
SOURCE(39766, 29)
   return((word) IsEmpty←P4320(circleParts←v27668));
   }

static word CircleIsCompleteParts←P2100(sliceD←v14264)
   word sliceD←v14264;
   {
   register ptr gf←c91648 =  (ptr) &globalframe;
   word var←c14308;
   word circleParts←v27712;
   /* CircleIsCompleteParts: */ 
SOURCE(39802, 162)
SOURCE(39802, 162)
   var←c14308 = 0;
SOURCE(39883, 47)
   circleParts←v27712 = XR←Narrow((* (( (ptr) sliceD←v14264)+1) ), (* (( (ptr) gf←c91648)+13) ));
SOURCE(39932, 32)
   return((word) IsComplete←P4260(circleParts←v27712));
   }

static word NearestCirclePoint←P2160(slice←v14368, point←v14396)
   word slice←v14368;
   W2 point←v14396;
   {
   register ptr gf←c91680 =  (ptr) &globalframe;
   word index←v14440;
   word circleHitData←v27756 = 0;
   word success←v27784;
   word hitData←v27812 = 0;
   word sliceD←v27840;
   /* NearestCirclePoint: */ 
SOURCE(39971, 443)
SOURCE(40117, 59)
   sliceD←v27840 = (word) CircleNewParts←P2220(slice←v14368, 0, 6);
SOURCE(40178, 126)
   {
      W7 var←c87360;
      (void) CircleClosestPoint←P3000((word) &var←c87360, sliceD←v27840, point←v14396, (*  (ptr) &fc399 ));
      success←v27784 = var←c87360.f6;
      hitData←v27812 = var←c87360.f5;
      };
SOURCE(40306, 20)
   if ((0 == success←v27784)) {
SOURCE(40326, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(40333, 31)
   circleHitData←v27756 = XR←Narrow(hitData←v27812, (* (( (ptr) gf←c91680)+21) ));
SOURCE(40366, 27)
   {
      word idx400;
      index←v14440 = (
         idx400 = (word) ((*  (ptr) circleHitData←v27756 ) - 1),
         BCK(idx400, 5)
         );
      };
SOURCE(39971, 443)
   return(index←v14440);
   }

static word CircleNewParts←P2220(slice←v14520, hitData←v14548, mode←v14576)
   word slice←v14520;
   word hitData←v14548;
   word mode←v14576;
   {
   register ptr gf←c91712 =  (ptr) &globalframe;
   word sliceD←v14632;
   word circleHitData←v27896;
   word circleParts←v27924;
   /* CircleNewParts: */ 
SOURCE(40425, 864)
SOURCE(40425, 864)
   sliceD←v14632 = 0;
SOURCE(40535, 46)
   circleHitData←v27896 = XR←Narrow(hitData←v14548, (* (( (ptr) gf←c91712)+21) ));
SOURCE(40583, 69)
   circleParts←v27924 = XR←NewObject(24, (* (( (ptr) gf←c91712)+13) ));
SOURCE(40654, 519)
   {
      word var←c87424;
      var←c87424 = mode←v14576;
      switch (var←c87424) {
         case 0: 
SOURCE(40684, 140)
            if (( (int)((*  (ptr) circleHitData←v27896 ) - 1) !=  (int) (word) -1)) {
SOURCE(40715, 53)
               {
                  word idx401;
                  (* (( (ptr) circleParts←v27924)+(
                        idx401 = (word) ((*  (ptr) circleHitData←v27896 ) - 1),
                        BCK(idx401, 5)
                        )) ) = 1;
                  };
               }
            else {
SOURCE(40768, 56)
               if ((0 != (* (( (ptr) circleHitData←v27896)+3) ))) {
SOURCE(40798, 26)
                  (* (( (ptr) circleParts←v27924)+5) ) = 1;
                  };
               };
            break;
         case 1: 
SOURCE(40840, 217)
            if (( (int)((*  (ptr) circleHitData←v27896 ) - 1) !=  (int) (word) -1)) {
SOURCE(40871, 53)
               {
                  word idx402;
                  (* (( (ptr) circleParts←v27924)+(
                        idx402 = (word) ((*  (ptr) circleHitData←v27896 ) - 1),
                        BCK(idx402, 5)
                        )) ) = 1;
                  };
               }
            else {
SOURCE(40924, 133)
               if ((0 != (* (( (ptr) circleHitData←v27896)+3) ))) {
SOURCE(40954, 105)
                  {
                     word index←v27968;
SOURCE(40956, 66)
                     index←v27968 = ((word) NearestCirclePoint←P2160(slice←v14520, (*  (W2Pt) (( (ptr) circleHitData←v27896)+1) )) + 1);
SOURCE(41024, 33)
                     (* (( (ptr) circleParts←v27924)+BCK((index←v27968 - 1), 5)) ) = 1;
                     };
                  };
               };
            break;
         case 2: 
SOURCE(41081, 31)
            XR←FillWords(&(* (W5Pt) (circleParts←v27924)), 5, 1);
            break;
         case 3: case 5: case 7: case 6: 
SOURCE(41148, 25)
            (void) MakeComplete←P4200(circleParts←v27924);
            break;
         case 8: 
            break;
         default: 
SOURCE(41226, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(41233, 56)
   {
      word pd403;
      pd403 = (* (( (ptr) (* (( (ptr) gf←c91712)+267)/* var←c82368 */  ))+8) );
      sliceD←v14632 = (word) ( *( (fPt) ((*  (ptr) pd403 ))))(slice←v14520, circleParts←v27924, pd403);
      };
SOURCE(40425, 864)
   return(sliceD←v14632);
   }

static word CircleUnionParts←P2280(partsA←v14692, partsB←v14720)
   word partsA←v14692;
   word partsB←v14720;
   {
   register ptr gf←c91744 =  (ptr) &globalframe;
   word aPlusB←v14764;
   word circlePartsA←v28032;
   word circlePartsB←v28060;
   word newParts←v28088 = 0;
   /* CircleUnionParts: */ 
SOURCE(41295, 815)
SOURCE(41295, 815)
   aPlusB←v14764 = 0;
SOURCE(41407, 48)
   circlePartsA←v28032 = XR←Narrow((* (( (ptr) partsA←v14692)+1) ), (* (( (ptr) gf←c91744)+13) ));
SOURCE(41457, 48)
   circlePartsB←v28060 = XR←Narrow((* (( (ptr) partsB←v14720)+1) ), (* (( (ptr) gf←c91744)+13) ));
SOURCE(41530, 41)
   if (((* (( (ptr) partsA←v14692)+1) ) == 0)) {
SOURCE(41557, 14)
      return(partsB←v14720);
      };
SOURCE(41573, 41)
   if (((* (( (ptr) partsB←v14720)+1) ) == 0)) {
SOURCE(41600, 14)
      return(partsA←v14692);
      };
SOURCE(41616, 44)
   if ((0 != (word) IsEmpty←P4320(circlePartsA←v28032))) {
SOURCE(41646, 14)
      return(partsB←v14720);
      };
SOURCE(41662, 44)
   if ((0 != (word) IsEmpty←P4320(circlePartsB←v28060))) {
SOURCE(41692, 14)
      return(partsA←v14692);
      };
SOURCE(41708, 47)
   if ((0 != (word) IsComplete←P4260(circlePartsA←v28032))) {
SOURCE(41741, 14)
      return(partsA←v14692);
      };
SOURCE(41757, 47)
   if ((0 != (word) IsComplete←P4260(circlePartsB←v28060))) {
SOURCE(41790, 14)
      return(partsB←v14720);
      };
SOURCE(41807, 54)
   newParts←v28088 = XR←NewObject(24, (* (( (ptr) gf←c91744)+13) ));
SOURCE(41863, 111)
   {
      register word i←v28132 = 0;
      lab←L100061: ;
SOURCE(41902, 72)
      if ((0 != (* (( (ptr) circlePartsA←v28032)+i←v28132) ))) {
         (* (( (ptr) newParts←v28088)+i←v28132) ) =  (unsigned) 1;
         }
      else {
         (* (( (ptr) newParts←v28088)+i←v28132) ) =  (unsigned) (0 != (* (( (ptr) circlePartsB←v28060)+i←v28132) ));
         };
      if ((i←v28132 >= 4)) {
         goto lab←L100058;
         };
      i←v28132 = (i←v28132 + 1);
      goto lab←L100061;
      lab←L100058: ;
      };
SOURCE(41985, 63)
   if ((0 != (* (( (ptr) circlePartsA←v28032)+5) ))) {
      (* (( (ptr) newParts←v28088)+5) ) =  (unsigned) 1;
      }
   else {
      (* (( (ptr) newParts←v28088)+5) ) =  (unsigned) (0 != (* (( (ptr) circlePartsB←v28060)+5) ));
      };
SOURCE(42050, 60)
   {
      word pd404;
      pd404 = (* (( (ptr) (* (( (ptr) gf←c91744)+267)/* var←c82368 */  ))+8) );
      aPlusB←v14764 = (word) ( *( (fPt) ((*  (ptr) pd404 ))))((*  (ptr) partsA←v14692 ), newParts←v28088, pd404);
      };
SOURCE(41295, 815)
   return(aPlusB←v14764);
   }

static word CircleDiffParts←P2340(partsA←v14824, partsB←v14852)
   word partsA←v14824;
   word partsB←v14852;
   {
   register ptr gf←c91776 =  (ptr) &globalframe;
   word aMinusB←v14896;
   word circlePartsA←v28176;
   word circlePartsB←v28204;
   word newParts←v28232 = 0;
   /* CircleDiffParts: */ 
SOURCE(42116, 680)
SOURCE(42116, 680)
   aMinusB←v14896 = 0;
SOURCE(42228, 48)
   circlePartsA←v28176 = XR←Narrow((* (( (ptr) partsA←v14824)+1) ), (* (( (ptr) gf←c91776)+13) ));
SOURCE(42278, 48)
   circlePartsB←v28204 = XR←Narrow((* (( (ptr) partsB←v14852)+1) ), (* (( (ptr) gf←c91776)+13) ));
SOURCE(42351, 37)
   if ((partsA←v14824 == 0) || (partsB←v14852 == 0)) {
SOURCE(42388, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(42395, 63)
   if (((* (( (ptr) partsA←v14824)+1) ) == 0) || ((* (( (ptr) partsB←v14852)+1) ) == 0)) {
SOURCE(42444, 14)
      return(partsA←v14824);
      };
SOURCE(42460, 54)
   newParts←v28232 = XR←NewObject(24, (* (( (ptr) gf←c91776)+13) ));
SOURCE(42516, 127)
   {
      register word i←v28276 = 0;
      lab←L100065: ;
SOURCE(42555, 88)
      if ((0 != (* (( (ptr) circlePartsB←v28204)+i←v28276) ))) {
         (* (( (ptr) newParts←v28232)+i←v28276) ) = 0;
         }
      else {
         (* (( (ptr) newParts←v28232)+i←v28276) ) = (* (( (ptr) circlePartsA←v28176)+i←v28276) );
         };
      if ((i←v28276 >= 4)) {
         goto lab←L100062;
         };
      i←v28276 = (i←v28276 + 1);
      goto lab←L100065;
      lab←L100062: ;
      };
SOURCE(42654, 79)
   if ((0 != (* (( (ptr) circlePartsB←v28204)+5) ))) {
      (* (( (ptr) newParts←v28232)+5) ) = 0;
      }
   else {
      (* (( (ptr) newParts←v28232)+5) ) = (* (( (ptr) circlePartsA←v28176)+5) );
      };
SOURCE(42735, 61)
   {
      word pd405;
      pd405 = (* (( (ptr) (* (( (ptr) gf←c91776)+267)/* var←c82368 */  ))+8) );
      aMinusB←v14896 = (word) ( *( (fPt) ((*  (ptr) pd405 ))))((*  (ptr) partsA←v14824 ), newParts←v28232, pd405);
      };
SOURCE(42116, 680)
   return(aMinusB←v14896);
   }

static void CircleMovingParts←P2400(formal←c0687, slice←v14956, selectedParts←v14984, editConstraints←v15012, bezierDrag←v15040)
   word formal←c0687;
   word slice←v14956;
   word selectedParts←v14984;
   word editConstraints←v15012;
   W5 bezierDrag←v15040;
   {
   W6 var←c91808;
   register ptr gf←c91840 =  (ptr) &globalframe;
   word background←v15084;
   word overlay←v15112;
   word rubber←v15140;
   word drag←v15168;
   /* declaration of var←c87520 skipped */ 
   word circleParts←v28348;
   word nullD←v28376;
   word newParts←v28404 = 0;
   word backgroundParts←v28432 = 0;
   /* CircleMovingParts: */ 
SOURCE(42802, 1549)
   {
      word tmpAddr406;
      tmpAddr406 = (word) (( (ptr) &var←c91808)+4)/* var←c87520 */ ;
      (*  (ptr) tmpAddr406 ) = ( ((word)  (fPt) SomeCPMoving←P8136) );
      (* (( (ptr) tmpAddr406) + 1) ) = 1;
      };
SOURCE(42802, 1549)
   background←v15084 = 0;
SOURCE(42802, 1549)
   overlay←v15112 = 0;
SOURCE(42802, 1549)
   rubber←v15140 = 0;
SOURCE(42802, 1549)
   drag←v15168 = 0;
SOURCE(43192, 48)
   circleParts←v28348 = XR←Narrow(selectedParts←v14984, (* (( (ptr) gf←c91840)+13) ));
SOURCE(43242, 45)
   nullD←v28376 = (* (( (ptr) slice←v14956)+11) );
SOURCE(43343, 83)
   if ((0 != (word) IsEmpty←P4320(circleParts←v28348))) {
SOURCE(43374, 44)
      {
         word var←c87552;
         var←c87552 = nullD←v28376;
         drag←v15168 = nullD←v28376;
         rubber←v15140 = var←c87552;
         overlay←v15112 = var←c87552;
         background←v15084 = var←c87552;
         };
SOURCE(43420, 6)
      goto lab←L100066;
      };
SOURCE(43431, 135)
   if ((0 != (word) IsComplete←P4260(circleParts←v28348))) {
SOURCE(43465, 37)
      {
         word var←c87584;
         var←c87584 = nullD←v28376;
         rubber←v15140 = nullD←v28376;
         overlay←v15112 = var←c87584;
         background←v15084 = var←c87584;
         };
SOURCE(43504, 54)
      {
         word pd407;
         pd407 = (* (( (ptr) (* (( (ptr) gf←c91840)+267)/* var←c82368 */  ))+8) );
         drag←v15168 = (word) ( *( (fPt) ((*  (ptr) pd407 ))))(slice←v14956, circleParts←v28348, pd407);
         };
SOURCE(43560, 6)
      goto lab←L100066;
      };
SOURCE(43572, 53)
   newParts←v28404 = XR←NewObject(24, (* (( (ptr) gf←c91840)+13) ));
SOURCE(43627, 724)
   if ((0 != (*  (ptr) circleParts←v28348 ))) {
SOURCE(43660, 28)
      XR←FillWords(&(* (W5Pt) (newParts←v28404)), 5, 1);
SOURCE(43690, 23)
      (* (( (ptr) newParts←v28404)+5) ) = 1;
SOURCE(43715, 37)
      {
         word var←c87648;
         var←c87648 = nullD←v28376;
         rubber←v15140 = nullD←v28376;
         overlay←v15112 = var←c87648;
         background←v15084 = var←c87648;
         };
SOURCE(43754, 51)
      {
         word pd408;
         pd408 = (* (( (ptr) (* (( (ptr) gf←c91840)+267)/* var←c82368 */  ))+8) );
         drag←v15168 = (word) ( *( (fPt) ((*  (ptr) pd408 ))))(slice←v14956, newParts←v28404, pd408);
         };
      }
   else {
SOURCE(43814, 537)
      if ((0 != (word) SomeCPMoving←P8136(circleParts←v28348, (word) (( (bPt) &var←c91808)+16)/* var←c87520 */ ))) {
SOURCE(43850, 22)
         overlay←v15112 = nullD←v28376;
         drag←v15168 = nullD←v28376;
SOURCE(43874, 28)
         XR←FillWords(&(* (W5Pt) (newParts←v28404)), 5, 1);
SOURCE(43904, 27)
         (*  (ptr) newParts←v28404 ) = 0;
SOURCE(43933, 23)
         (* (( (ptr) newParts←v28404)+5) ) = 1;
SOURCE(43958, 53)
         {
            word pd409;
            pd409 = (* (( (ptr) (* (( (ptr) gf←c91840)+267)/* var←c82368 */  ))+8) );
            rubber←v15140 = (word) ( *( (fPt) ((*  (ptr) pd409 ))))(slice←v14956, newParts←v28404, pd409);
            };
SOURCE(44013, 60)
         backgroundParts←v28432 = XR←NewObject(24, (* (( (ptr) gf←c91840)+13) ));
SOURCE(44075, 33)
         (*  (ptr) backgroundParts←v28432 ) = 1;
SOURCE(44110, 64)
         {
            word pd410;
            pd410 = (* (( (ptr) (* (( (ptr) gf←c91840)+267)/* var←c82368 */  ))+8) );
            background←v15084 = (word) ( *( (fPt) ((*  (ptr) pd410 ))))(slice←v14956, backgroundParts←v28432, pd410);
            };
         }
      else {
SOURCE(44206, 28)
         XR←FillWords(&(* (W5Pt) (newParts←v28404)), 5, 1);
SOURCE(44236, 23)
         (* (( (ptr) newParts←v28404)+5) ) = 1;
SOURCE(44261, 57)
         {
            word pd411;
            pd411 = (* (( (ptr) (* (( (ptr) gf←c91840)+267)/* var←c82368 */  ))+8) );
            background←v15084 = (word) ( *( (fPt) ((*  (ptr) pd411 ))))(slice←v14956, newParts←v28404, pd411);
            };
SOURCE(44320, 31)
         {
            word var←c87744;
            var←c87744 = nullD←v28376;
            drag←v15168 = nullD←v28376;
            rubber←v15140 = var←c87744;
            overlay←v15112 = var←c87744;
            };
         };
      };
   /* removed tail goto */ 
   lab←L100066: ;
   (*  (ptr) formal←c0687 ) = background←v15084;
   (* (( (ptr) formal←c0687)+1) ) = overlay←v15112;
   (* (( (ptr) formal←c0687)+2) ) = rubber←v15140;
   (* (( (ptr) formal←c0687)+3) ) = drag←v15168;
   return;
   }

static word SomeCPMoving←P8136(circleParts←v28508, formal←c91872)
   word circleParts←v28508;
   word formal←c91872;
   {
   word var←c28552;
   formal←c91872 = (formal←c91872 - 16);
   /* SomeCPMoving: */ 
SOURCE(43014, 173)
SOURCE(43014, 173)
   var←c28552 = 0;
SOURCE(43087, 73)
   {
      register word i←v28580 = 1;
      if (( (int)i←v28580 >  (int)4)) {
         goto lab←L100067;
         };
      lab←L100070: ;
SOURCE(43115, 45)
      if ((0 != (* (( (ptr) circleParts←v28508)+BCK(i←v28580, 5)) ))) {
SOURCE(43148, 12)
         return(1);
         };
      if (( (int)i←v28580 >=  (int)4)) {
         goto lab←L100067;
         };
      i←v28580 = (i←v28580 + 1);
      goto lab←L100070;
      lab←L100067: ;
      };
SOURCE(43174, 13)
   return(0);
   }

static word CircleAugmentParts←P2460(sliceD←v15228, selectClass←v15256)
   word sliceD←v15228;
   word selectClass←v15256;
   {
   word more←v15300;
   /* CircleAugmentParts: */ 
SOURCE(44360, 129)
SOURCE(44360, 129)
   more←v15300 = 0;
SOURCE(44476, 13)
   more←v15300 = sliceD←v15228;
SOURCE(44360, 129)
   return(more←v15300);
   }

static word CircleAlterParts←P2520(sliceD←v15360, action←v15388)
   word sliceD←v15360;
   word action←v15388;
   {
   register ptr gf←c91904 =  (ptr) &globalframe;
   word newD←v15432;
   word circleParts←v28624;
   word newParts←v28652 = 0;
   word selectedCorner←v28680 =  (word) -1;
   /* CircleAlterParts: */ 
SOURCE(44495, 952)
SOURCE(44495, 952)
   newD←v15432 = 0;
SOURCE(44594, 47)
   circleParts←v28624 = XR←Narrow((* (( (ptr) sliceD←v15360)+1) ), (* (( (ptr) gf←c91904)+13) ));
SOURCE(44692, 70)
   newParts←v28652 = XR←NewObject(24, (* (( (ptr) gf←c91904)+13) ));
SOURCE(44764, 93)
   {
      register word i←v28724 = 0;
      if (( (int)i←v28724 >  (int)4)) {
         goto lab←L100071;
         };
      lab←L100074: ;
SOURCE(44806, 51)
      if ((0 != (* (( (ptr) circleParts←v28624)+BCK(i←v28724, 5)) ))) {
SOURCE(44839, 18)
         selectedCorner←v28680 = i←v28724;
SOURCE(44859, 4)
         goto lab←L100072;
         };
      if (( (int)i←v28724 >=  (int)4)) {
         goto lab←L100071;
         };
      i←v28724 = (i←v28724 + 1);
      goto lab←L100074;
      lab←L100071: ;
      lab←L100072: ;
      };
SOURCE(44877, 464)
   {
      word var←c87808;
      var←c87808 = action←v15388;
      if ((var←c87808 == (* (( (ptr) gf←c91904)+48) ))) {
SOURCE(44910, 126)
         if (( (int)selectedCorner←v28680 >  (int) (word) -1)) {
SOURCE(44940, 55)
            selectedCorner←v28680 = IOP2( % ,  (int)(selectedCorner←v28680 + 1),  (int)5);
SOURCE(44997, 39)
            (* (( (ptr) newParts←v28652)+BCK(selectedCorner←v28680, 5)) ) = 1;
            }
         else {
SOURCE(45045, 5)
            (void) XR←RaiseUnnamedError();
            };
         goto endif0412;
         };
      if ((var←c87808 == (* (( (ptr) gf←c91904)+49) ))) {
SOURCE(45070, 142)
         if (( (int)selectedCorner←v28680 >  (int) (word) -1)) {
SOURCE(45100, 71)
            selectedCorner←v28680 = IOP2( % ,  (int)(selectedCorner←v28680 + 4),  (int)5);
SOURCE(45173, 39)
            (* (( (ptr) newParts←v28652)+BCK(selectedCorner←v28680, 5)) ) = 1;
            }
         else {
SOURCE(45221, 5)
            (void) XR←RaiseUnnamedError();
            };
         goto endif0412;
         };
      if ((var←c87808 == (* (( (ptr) gf←c91904)+50) ))) {
SOURCE(45240, 53)
         {
            word pd413;
            pd413 = (* (( (ptr) (* (( (ptr) gf←c91904)+276)/* var←c83456 */  ))+29) );
            return((word) ( *( (fPt) ((*  (ptr) pd413 ))))((*  (ptr) sliceD←v15360 ), 0, 6, pd413));
            };
         };
      if ((var←c87808 == (* (( (ptr) gf←c91904)+51) )) || (var←c87808 == (* (( (ptr) gf←c91904)+52) ))) {
SOURCE(45330, 11)
         return(0);
         };
SOURCE(45382, 5)
      (void) XR←RaiseUnnamedError();
      goto endif0412;
      endif0412: ;
      };
SOURCE(45389, 58)
   {
      word pd414;
      pd414 = (* (( (ptr) (* (( (ptr) gf←c91904)+267)/* var←c82368 */  ))+8) );
      newD←v15432 = (word) ( *( (fPt) ((*  (ptr) pd414 ))))((*  (ptr) sliceD←v15360 ), newParts←v28652, pd414);
      };
SOURCE(44495, 952)
   return(newD←v15432);
   }

static word CirclePointsInDescriptor←P2580(sliceD←v15492)
   word sliceD←v15492;
   {
   register ptr gf←c91936 =  (ptr) &globalframe;
   word pointGen←v15536;
   word parts←v28768;
   /* CirclePointsInDescriptor: */ 
SOURCE(45454, 302)
SOURCE(45454, 302)
   pointGen←v15536 = 0;
SOURCE(45550, 41)
   parts←v28768 = XR←Narrow((* (( (ptr) sliceD←v15492)+1) ), (* (( (ptr) gf←c91936)+13) ));
SOURCE(45593, 56)
   {
      word var←c87872;
      var←c87872 = XR←NewObject(16, (* (( (ptr) gf←c91936)+18) ));
      (*  (ptr) var←c87872 ) = sliceD←v15492;
      pointGen←v15536 = var←c87872;
      };
SOURCE(45651, 105)
   {
      register word index←v28812 = 0;
      lab←L100078: ;
SOURCE(45694, 62)
      if ((0 != (* (( (ptr) parts←v28768)+index←v28812) ))) {
SOURCE(45723, 33)
         (* (( (ptr) pointGen←v15536)+1) ) = ((* (( (ptr) pointGen←v15536)+1) ) + 1);
         };
      if ((index←v28812 >= 4)) {
         goto lab←L100075;
         };
      index←v28812 = (index←v28812 + 1);
      goto lab←L100078;
      lab←L100075: ;
      };
SOURCE(45454, 302)
   return(pointGen←v15536);
   }

static void CircleWalkPointsInDescriptor←P2640(sliceD←v15596, walkProc←v15624)
   word sliceD←v15596;
   word walkProc←v15624;
   {
   register ptr gf←c91968 =  (ptr) &globalframe;
   word parts←v28856;
   word circleData←v28884;
   word done←v28912 = 0;
   /* CircleWalkPointsInDescriptor: */ 
SOURCE(45771, 348)
SOURCE(45861, 41)
   parts←v28856 = XR←Narrow((* (( (ptr) sliceD←v15596)+1) ), (* (( (ptr) gf←c91968)+13) ));
SOURCE(45904, 50)
   circleData←v28884 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v15596 ))+1) ), (* (( (ptr) gf←c91968)+12) ));
SOURCE(45976, 143)
   {
      register word index←v28956 = 0;
      lab←L100082: ;
SOURCE(46019, 79)
      if ((0 != (* (( (ptr) parts←v28856)+index←v28956) ))) {
SOURCE(46048, 50)
         {
            W2 var←c87904;
            (void) GetCirclePoint←P2880((word) &var←c87904, circleData←v28884, index←v28956);
            done←v28912 = (word) ( *( (fPt) ((*  (ptr) walkProc←v15624 ))))(var←c87904, walkProc←v15624);
            };
         };
SOURCE(46100, 19)
      if ((0 != done←v28912)) {
SOURCE(46113, 6)
         return;
         };
      if ((index←v28956 >= 4)) {
         goto lab←L100079;
         };
      index←v28956 = (index←v28956 + 1);
      goto lab←L100082;
      lab←L100079: ;
      };
   }

static word CircleSegmentsInDescriptor←P2700(sliceD←v15684)
   word sliceD←v15684;
   {
   register ptr gf←c92000 =  (ptr) &globalframe;
   word segGen←v15728;
   word parts←v29000;
   /* CircleSegmentsInDescriptor: */ 
SOURCE(46134, 312)
SOURCE(46134, 312)
   segGen←v15728 = 0;
SOURCE(46232, 41)
   parts←v29000 = XR←Narrow((* (( (ptr) sliceD←v15684)+1) ), (* (( (ptr) gf←c92000)+13) ));
SOURCE(46275, 125)
   {
      word var←c87936;
      var←c87936 = XR←NewObject(32, (* (( (ptr) gf←c92000)+16) ));
      (* (( (ptr) var←c87936)+6) ) = sliceD←v15684;
      segGen←v15728 = var←c87936;
      };
SOURCE(46402, 44)
   if ((0 != (* (( (ptr) parts←v29000)+5) ))) {
      (* (( (ptr) segGen←v15728)+1) ) = 1;
      }
   else {
      (* (( (ptr) segGen←v15728)+1) ) = 0;
      };
SOURCE(46134, 312)
   return(segGen←v15728);
   }

static word CircleWalkSegments←P2760(slice←v15788, walkProc←v15816)
   word slice←v15788;
   word walkProc←v15816;
   {
   register ptr gf←c92032 =  (ptr) &globalframe;
   word sliceD←v15860;
   word circleData←v29044;
   word circleParts←v29072;
   /* CircleWalkSegments: */ 
SOURCE(46452, 444)
SOURCE(46452, 444)
   sliceD←v15860 = 0;
SOURCE(46550, 43)
   circleData←v29044 = XR←Narrow((* (( (ptr) slice←v15788)+1) ), (* (( (ptr) gf←c92032)+12) ));
SOURCE(46595, 86)
   circleParts←v29072 = XR←NewObject(24, (* (( (ptr) gf←c92032)+13) ));
SOURCE(46683, 68)
   (* (( (ptr) circleParts←v29072)+5) ) = (word) ( *( (fPt) ((*  (ptr) walkProc←v15816 ))))((* (( (ptr) circleData←v29044)+33)
       ), (* (( (ptr) circleData←v29044)+1) ), walkProc←v15816);
SOURCE(46753, 59)
   if ((0 != (* (( (ptr) circleParts←v29072)+5) ))) {
SOURCE(46781, 31)
      XR←FillWords(&(* (W5Pt) (circleParts←v29072)), 5, 1);
      };
SOURCE(46840, 56)
   {
      word pd415;
      pd415 = (* (( (ptr) (* (( (ptr) gf←c92032)+267)/* var←c82368 */  ))+8) );
      sliceD←v15860 = (word) ( *( (fPt) ((*  (ptr) pd415 ))))(slice←v15788, circleParts←v29072, pd415);
      };
SOURCE(46452, 444)
   return(sliceD←v15860);
   }

static void CircleNextPoint←P2820(formal←c0732, slice←v15920, pointGen←v15948)
   word formal←c0732;
   word slice←v15920;
   word pointGen←v15948;
   {
   register ptr gf←c92064 =  (ptr) &globalframe;
   W3 pointAndDone←v15992;
   word sliceD←v29116;
   word circleData←v29144;
   /* CircleNextPoint: */ 
SOURCE(46902, 630)
SOURCE(47006, 41)
   sliceD←v29116 = (*  (ptr) pointGen←v15948 );
SOURCE(47049, 50)
   circleData←v29144 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v29116 ))+1) ), (* (( (ptr) gf←c92064)+12) ));
SOURCE(47101, 431)
   if ((pointGen←v15948 == 0) || ((* (( (ptr) pointGen←v15948)+1) ) == 0)) {
SOURCE(47145, 24)
      pointAndDone←v15992.f2 = 1;
SOURCE(47171, 6)
      goto lab←L100083;
      }
   else {
SOURCE(47186, 348)
      {
         word parts←v29188;
         register word index←v29216;
SOURCE(47188, 41)
         parts←v29188 = XR←Narrow((* (( (ptr) sliceD←v29116)+1) ), (* (( (ptr) gf←c92064)+13) ));
SOURCE(47243, 25)
         pointAndDone←v15992.f2 = 0;
SOURCE(47270, 100)
         index←v29216 = (* (( (ptr) pointGen←v15948)+2) );
         lab←L100087: ;
         if ((index←v29216 < 4)) {
            }
         else {
            goto lab←L100084;
            };
SOURCE(47341, 29)
         if ((0 != (* (( (ptr) parts←v29188)+BCK(index←v29216, 5)) ))) {
SOURCE(47370, 4)
            goto lab←L100085;
            };
         index←v29216 = (index←v29216 + 1);
         goto lab←L100087;
         lab←L100084: ;
         lab←L100085: ;
SOURCE(47417, 54)
         (void) GetCirclePoint←P2880((word) &pointAndDone←v15992, circleData←v29144, index←v29216);
SOURCE(47473, 24)
         (* (( (ptr) pointGen←v15948)+2) ) = (index←v29216 + 1);
SOURCE(47499, 33)
         {
            word idx416;
            (* (( (ptr) pointGen←v15948)+1) ) = (
               idx416 = (word) ((* (( (ptr) pointGen←v15948)+1) ) - 1),
               SGNCK(idx416)
               );
            };
         };
      };
   /* removed tail goto */ 
   lab←L100083: ;
   (*  (W3Pt) formal←c0732 ) = pointAndDone←v15992;
   return;
   }

static void GetCirclePoint←P2880(formal←c0749, circleData←v16052, index←v16080)
   word formal←c0749;
   word circleData←v16052;
   word index←v16080;
   {
   register ptr gf←c92096 =  (ptr) &globalframe;
   W2 point←v16124;
   word t←v29260;
   /* GetCirclePoint: */ 
SOURCE(47541, 463)
SOURCE(47653, 40)
   t←v29260 = (* (( (ptr) circleData←v16052)+1) );
SOURCE(47695, 309)
   {
      word var←c88000;
      var←c88000 = index←v16080;
      switch (var←c88000) {
         case 0: 
SOURCE(47718, 32)
            {
               W2 var←c0739;
               {
                  W2 var←c88032;
                  var←c88032.f0 = (*  (ptr) &fc85 );
                  var←c88032.f1 = (*  (ptr) &fc85 );
                  {
                     word pd417;
                     pd417 = (* (( (ptr) (* (( (ptr) gf←c92096)+272)/* var←c82880 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd417 ))))((word) &var←c0739, t←v29260, var←c88032, pd417);
                     };
                  };
               point←v16124 = var←c0739;
               };
            break;
         case 1: 
SOURCE(47767, 33)
            {
               W2 var←c0741;
               {
                  W2 var←c88064;
                  var←c88064.f0 = (*  (ptr) &fc88 );
                  var←c88064.f1 = (*  (ptr) &fc85 );
                  {
                     word pd418;
                     pd418 = (* (( (ptr) (* (( (ptr) gf←c92096)+272)/* var←c82880 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd418 ))))((word) &var←c0741, t←v29260, var←c88064, pd418);
                     };
                  };
               point←v16124 = var←c0741;
               };
            break;
         case 2: 
SOURCE(47815, 32)
            {
               W2 var←c0743;
               {
                  W2 var←c88096;
                  var←c88096.f0 = (*  (ptr) &fc85 );
                  var←c88096.f1 = (*  (ptr) &fc87 );
                  {
                     word pd419;
                     pd419 = (* (( (ptr) (* (( (ptr) gf←c92096)+272)/* var←c82880 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd419 ))))((word) &var←c0743, t←v29260, var←c88096, pd419);
                     };
                  };
               point←v16124 = var←c0743;
               };
            break;
         case 3: 
SOURCE(47861, 32)
            {
               W2 var←c0745;
               {
                  W2 var←c88128;
                  var←c88128.f0 = (*  (ptr) &fc87 );
                  var←c88128.f1 = (*  (ptr) &fc85 );
                  {
                     word pd420;
                     pd420 = (* (( (ptr) (* (( (ptr) gf←c92096)+272)/* var←c82880 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd420 ))))((word) &var←c0745, t←v29260, var←c88128, pd420);
                     };
                  };
               point←v16124 = var←c0745;
               };
            break;
         case 4: 
SOURCE(47909, 33)
            {
               W2 var←c0747;
               {
                  W2 var←c88160;
                  var←c88160.f0 = (*  (ptr) &fc85 );
                  var←c88160.f1 = (*  (ptr) &fc88 );
                  {
                     word pd421;
                     pd421 = (* (( (ptr) (* (( (ptr) gf←c92096)+272)/* var←c82880 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd421 ))))((word) &var←c0747, t←v29260, var←c88160, pd421);
                     };
                  };
               point←v16124 = var←c0747;
               };
            break;
         default: 
SOURCE(47965, 39)
            {
               word var←c0748;
               var←c0748 = (* (( (ptr) gf←c92096)+55) );
               (void) (XR←RaiseSignal((* (( (ptr) gf←c92096)+4)/* Problem←v5072 */  ), 0, (word) &var←c0748));
               };
            break;
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0749 ) = point←v16124;
   return;
   }

static void CircleNextSegment←P2940(formal←c0756, slice←v16184, segGen←v16212)
   word formal←c0756;
   word slice←v16184;
   word segGen←v16212;
   {
   register ptr gf←c92128 =  (ptr) &globalframe;
   word seg←v16256;
   word transform←v16284;
   /* CircleNextSegment: */ 
SOURCE(48010, 386)
SOURCE(48010, 386)
   seg←v16256 = 0;
SOURCE(48010, 386)
   transform←v16284 = 0;
SOURCE(48129, 267)
   if ((segGen←v16212 == 0) || ((* (( (ptr) segGen←v16212)+1) ) == 0)) {
SOURCE(48167, 22)
      seg←v16256 = 0;
      transform←v16284 = 0;
      goto lab←L100089;
      }
   else {
SOURCE(48189, 209)
      {
         word circleData←v29304;
SOURCE(48191, 57)
         circleData←v29304 = XR←Narrow((* (( (ptr) (*  (ptr) (* (( (ptr) segGen←v16212)+6) ) ))+1) ), (* (( (ptr) gf←c92128)+12) ))
         ;
SOURCE(48250, 61)
         if (((* (( (ptr) segGen←v16212)+1) ) != 1)) {
SOURCE(48272, 39)
            {
               word var←c0755;
               var←c0755 = (* (( (ptr) gf←c92128)+55) );
               (void) (XR←RaiseSignal((* (( (ptr) gf←c92128)+4)/* Problem←v5072 */  ), 0, (word) &var←c0755));
               };
            };
SOURCE(48313, 20)
         seg←v16256 = (* (( (ptr) circleData←v29304)+33) );
SOURCE(48335, 32)
         transform←v16284 = (* (( (ptr) circleData←v29304)+1) );
SOURCE(48369, 27)
         {
            word idx422;
            (* (( (ptr) segGen←v16212)+1) ) = (
               idx422 = (word) ((* (( (ptr) segGen←v16212)+1) ) - 1),
               SGNCK(idx422)
               );
            };
         };
      };
   /* removed tail goto */ 
   lab←L100089: ;
   (*  (ptr) formal←c0756 ) = seg←v16256;
   (* (( (ptr) formal←c0756)+1) ) = transform←v16284;
   return;
   }

static void CircleClosestPoint←P3000(formal←c0781, sliceD←v16344, testPoint←v16372, tolerance←v16400)
   word formal←c0781;
   word sliceD←v16344;
   W2 testPoint←v16372;
   word tolerance←v16400;
   {
   register ptr gf←c92160 =  (ptr) &globalframe;
   W2 bestPoint←v16444;
   word bestDist←v16472;
   W2 bestNormal←v16500;
   word hitData←v16528;
   word success←v16556;
   /* CircleClosestPoint: */ 
SOURCE(48405, 1433)
SOURCE(48405, 1433)
   bestPoint←v16444.f0 = (*  (ptr) &fc85 );
   bestPoint←v16444.f1 = (*  (ptr) &fc85 );
SOURCE(48405, 1433)
   bestDist←v16472 = (*  (ptr) &fc85 );
SOURCE(48405, 1433)
   bestNormal←v16500.f0 = (*  (ptr) &fc85 );
   bestNormal←v16500.f1 = (*  (ptr) &fc88 );
SOURCE(48405, 1433)
   hitData←v16528 = 0;
SOURCE(48405, 1433)
   success←v16556 = 0;
   {
      word var←c88192;
SOURCE(48628, 107)
      {
         word pd424;
         {
            word pd423;
            pd423 = (* (( (ptr) (* (( (ptr) gf←c92160)+276)/* var←c83456 */  ))+9) );
            var←c88192 = (word) ( *( (fPt) ((*  (ptr) pd423 ))))((*  (ptr) sliceD←v16344 ), 0, pd423);
            };
         pd424 = (* (( (ptr) (* (( (ptr) gf←c92160)+271)/* var←c82752 */  ))+22) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd424 ))))(testPoint←v16372, var←c88192, tolerance←v16400, pd424))) {
SOURCE(48729, 6)
            goto lab←L100090;
            };
         };
SOURCE(48738, 1109)
      {
         W10 points←v29348;
         word nextDist2←v29376;
         word bestDist2←v29404;
         word tolerance2←v29432;
         word foundIndex←v29460 = 0;
         word circleData←v29488;
         word circleHitData←v29516 = 0;
         word circleParts←v29544;
         W2 nextPoint←v29572;
SOURCE(48808, 51)
         nextDist2←v29376 = (*  (ptr) &fc399 );
         bestDist2←v29404 = (*  (ptr) &fc399 );
SOURCE(48861, 38)
         {
            word x425;
            word x426;
            *(float*)&tolerance2←v29432 = (
               x425 = tolerance←v16400,  *(float*)&x425
               ) * (
               x426 = tolerance←v16400,  *(float*)&x426
               );
            };
SOURCE(48926, 50)
         circleData←v29488 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v16344 ))+1) ), (* (( (ptr) gf←c92160)+12) ));
SOURCE(49008, 47)
         circleParts←v29544 = XR←Narrow((* (( (ptr) sliceD←v16344)+1) ), (* (( (ptr) gf←c92160)+13) ));
SOURCE(49076, 41)
         (void) CirclePointsFromData←P3360((word) &points←v29348, circleData←v29488);
SOURCE(49119, 322)
         {
            register word index←v29652 = 0;
            if (( (int)index←v29652 >  (int)4)) {
               goto lab←L100091;
               };
            lab←L100094: ;
SOURCE(49165, 39)
            if ((0 == (* (( (ptr) circleParts←v29544)+BCK(index←v29652, 5)) ))) {
SOURCE(49204, 4)
               goto lab←L100093;
               };
SOURCE(49210, 25)
            nextPoint←v29572 = (* (( (W2Pt) &points←v29348)+BCK(index←v29652, 5)) );
SOURCE(49237, 59)
            {
               word pd427;
               pd427 = (* (( (ptr) (* (( (ptr) gf←c92160)+273)/* var←c82944 */  ))+21) );
               nextDist2←v29376 = (word) ( *( (fPt) ((*  (ptr) pd427 ))))(testPoint←v16372, nextPoint←v29572, pd427);
               };
SOURCE(49298, 143)
            {
               word x428;
               word x429;
               if (((
                  x428 = nextDist2←v29376,  *(float*)&x428
                  ) < (
                  x429 = bestDist2←v29404,  *(float*)&x429
                  ))) {
SOURCE(49330, 21)
                  bestDist2←v29404 = nextDist2←v29376;
SOURCE(49353, 18)
                  foundIndex←v29460 = index←v29652;
SOURCE(49373, 21)
                  bestPoint←v16444 = nextPoint←v29572;
SOURCE(49396, 45)
                  {
                     word x430;
                     word x431;
                     if (((
                        x430 = bestDist2←v29404,  *(float*)&x430
                        ) < (
                        x431 = tolerance2←v29432,  *(float*)&x431
                        ))) {
SOURCE(49427, 14)
                        success←v16556 = 1;
                        };
                     };
                  };
               };
            lab←L100093: ;
            if (( (int)index←v29652 >=  (int)4)) {
               goto lab←L100091;
               };
            index←v29652 = (index←v29652 + 1);
            goto lab←L100094;
            lab←L100091: ;
            };
SOURCE(49455, 383)
         if ((0 != success←v16556)) {
SOURCE(49473, 106)
            {
               word var←c88224;
               {
                  word var←c88256;
                  var←c88256 = XR←NewObject(16, (* (( (ptr) gf←c92160)+21) ));
                  (*  (ptr) var←c88256 ) = BCK((foundIndex←v29460 + 1), 6);
                  (*  (W2Pt) (( (ptr) var←c88256)+1) ) = bestPoint←v16444;
                  var←c88224 = var←c88256;
                  };
               circleHitData←v29516 = var←c88224;
               hitData←v16528 = var←c88224;
               };
SOURCE(49581, 34)
            {
               word pd432;
               pd432 = (* (( (ptr) (* (( (ptr) gf←c92160)+274)/* var←c83168 */  ))+9) );
               bestDist←v16472 = (word) ( *( (fPt) ((*  (ptr) pd432 ))))(bestDist2←v29404, pd432);
               };
SOURCE(49617, 221)
            if (( (int)foundIndex←v29460 >  (int)0)) {
SOURCE(49642, 196)
               {
                  word pd433;
                  word x434;
                  word x435;
                  pd433 = (* (( (ptr) (* (( (ptr) gf←c92160)+273)/* var←c82944 */  ))+19) );
                  if (((
                     x434 = (word) ( *( (fPt) ((*  (ptr) pd433 ))))((*  (W2Pt) &points←v29348 ), testPoint←v16372, pd433),  *(float*)&x434
                     ) > (
                     x435 = (* (( (ptr) circleData←v29488)+2) ),  *(float*)&x435
                     ))) {
SOURCE(49715, 58)
                     {
                        word pd436;
                        pd436 = (* (( (ptr) (* (( (ptr) gf←c92160)+273)/* var←c82944 */  ))+11) );
                        (void) ( *( (fPt) ((*  (ptr) pd436 ))))((word) &bestNormal←v16500, (* (( (W2Pt) &points←v29348)+BCK(foundIndex←v29460, 5)
/*1*/   ) ), (*  (W2Pt) &points←v29348 ), pd436);
                        };
                     }
                  else {
SOURCE(49781, 57)
                     {
                        word pd437;
                        pd437 = (* (( (ptr) (* (( (ptr) gf←c92160)+273)/* var←c82944 */  ))+11) );
                        (void) ( *( (fPt) ((*  (ptr) pd437 ))))((word) &bestNormal←v16500, (*  (W2Pt) &points←v29348 ), (* (( (W2Pt) &points←v29348)+BCK(
/*1*/      foundIndex←v29460, 5)) ), pd437);
                        };
                     };
                  };
               };
            };
         };
      };
   /* removed tail goto */ 
   lab←L100090: ;
   (*  (W2Pt) formal←c0781 ) = bestPoint←v16444;
   (* (( (ptr) formal←c0781)+2) ) = bestDist←v16472;
   (*  (W2Pt) (( (ptr) formal←c0781)+3) ) = bestNormal←v16500;
   (* (( (ptr) formal←c0781)+5) ) = hitData←v16528;
   (* (( (ptr) formal←c0781)+6) ) = success←v16556;
   return;
   }

static void CircleClosestJointToHitData←P3060(formal←c0795, sliceD←v16628, mapPoint←v16656, testPoint←v16684, hitData←v16712)
   word formal←c0795;
   word sliceD←v16628;
   W2 mapPoint←v16656;
   W2 testPoint←v16684;
   word hitData←v16712;
   {
   register ptr gf←c92192 =  (ptr) &globalframe;
   word jointD←v16768;
   W2 point←v16796;
   W2 normal←v16824;
   word success←v29696 = 0;
   word newHitData←v29724 = 0;
   word circleHitData←v29752 = 0;
   word circleParts←v29780;
   /* CircleClosestJointToHitData: */ 
SOURCE(49856, 660)
SOURCE(49856, 660)
   jointD←v16768 = 0;
SOURCE(49856, 660)
   normal←v16824.f0 = (*  (ptr) &fc85 );
   normal←v16824.f1 = (*  (ptr) &fc88 );
SOURCE(50113, 86)
   circleParts←v29780 = XR←NewObject(24, (* (( (ptr) gf←c92192)+13) ));
SOURCE(50201, 106)
   {
      W7 var←c88320;
      (void) CircleClosestPoint←P3000((word) &var←c88320, sliceD←v16628, testPoint←v16684, (*  (ptr) &fc399 ));
      success←v29696 = var←c88320.f6;
      newHitData←v29724 = var←c88320.f5;
      normal←v16824 = (*  (W2Pt) (( (ptr) &var←c88320)+3) );
      point←v16796 = (*  (W2Pt) &var←c88320 );
      };
SOURCE(50309, 34)
   circleHitData←v29752 = XR←Narrow(newHitData←v29724, (* (( (ptr) gf←c92192)+21) ));
SOURCE(50345, 47)
   {
      word idx438;
      (* (( (ptr) circleParts←v29780)+(
            idx438 = (word) ((*  (ptr) circleHitData←v29752 ) - 1),
            BCK(idx438, 5)
            )) ) = 1;
      };
SOURCE(50394, 43)
   (* (( (ptr) circleParts←v29780)+5) ) = (* (( (ptr) circleHitData←v29752)+3) );
SOURCE(50439, 77)
   {
      word pd439;
      pd439 = (* (( (ptr) (* (( (ptr) gf←c92192)+267)/* var←c82368 */  ))+8) );
      jointD←v16768 = (word) ( *( (fPt) ((*  (ptr) pd439 ))))((*  (ptr) sliceD←v16628 ), circleParts←v29780, pd439);
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0795 ) = jointD←v16768;
   (*  (W2Pt) (( (ptr) formal←c0795)+1) ) = point←v16796;
   (*  (W2Pt) (( (ptr) formal←c0795)+3) ) = normal←v16824;
   return;
   }

static void CircleClosestSegment←P3120(formal←c0817, sliceD←v16884, testPoint←v16912, tolerance←v16940)
   word formal←c0817;
   word sliceD←v16884;
   W2 testPoint←v16912;
   word tolerance←v16940;
   {
   register ptr gf←c92224 =  (ptr) &globalframe;
   W2 bestPoint←v16984;
   word bestDist←v17012;
   W2 bestNormal←v17040;
   word hitData←v17068;
   word success←v17096;
   /* CircleClosestSegment: */ 
SOURCE(50522, 1143)
SOURCE(50522, 1143)
   bestPoint←v16984.f0 = (*  (ptr) &fc85 );
   bestPoint←v16984.f1 = (*  (ptr) &fc85 );
SOURCE(50522, 1143)
   bestDist←v17012 = (*  (ptr) &fc85 );
SOURCE(50522, 1143)
   bestNormal←v17040.f0 = (*  (ptr) &fc85 );
   bestNormal←v17040.f1 = (*  (ptr) &fc88 );
SOURCE(50522, 1143)
   hitData←v17068 = 0;
SOURCE(50522, 1143)
   success←v17096 = 0;
   {
      word var←c88352;
SOURCE(50746, 107)
      {
         word pd441;
         {
            word pd440;
            pd440 = (* (( (ptr) (* (( (ptr) gf←c92224)+276)/* var←c83456 */  ))+9) );
            var←c88352 = (word) ( *( (fPt) ((*  (ptr) pd440 ))))((*  (ptr) sliceD←v16884 ), 0, pd440);
            };
         pd441 = (* (( (ptr) (* (( (ptr) gf←c92224)+271)/* var←c82752 */  ))+22) );
         if ((0 == (word) ( *( (fPt) ((*  (ptr) pd441 ))))(testPoint←v16912, var←c88352, tolerance←v16940, pd441))) {
SOURCE(50847, 6)
            goto lab←L100096;
            };
         };
SOURCE(50856, 814)
      {
         word circleHitData←v29836 = 0;
         word circleParts←v29864;
         word circleData←v29892;
         W2 pointOnCircle←v29920;
         W2 localTestpoint←v29948;
         word dist←v29976;
SOURCE(50892, 47)
         circleParts←v29864 = XR←Narrow((* (( (ptr) sliceD←v16884)+1) ), (* (( (ptr) gf←c92224)+13) ));
SOURCE(50941, 50)
         circleData←v29892 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v16884 ))+1) ), (* (( (ptr) gf←c92224)+12) ));
SOURCE(50993, 33)
         pointOnCircle←v29920.f0 = (*  (ptr) &fc85 );
         pointOnCircle←v29920.f1 = (*  (ptr) &fc85 );
SOURCE(51064, 70)
         if ((0 == (* (( (ptr) circleParts←v29864)+5) ))) {
SOURCE(51096, 38)
            bestPoint←v16984.f0 = (*  (ptr) &fc85 );
            bestPoint←v16984.f1 = (*  (ptr) &fc85 );
            bestDist←v17012 = (*  (ptr) &fc85 );
            bestNormal←v17040.f0 = (*  (ptr) &fc85 );
            bestNormal←v17040.f1 = (*  (ptr) &fc88 );
            hitData←v17068 = 0;
            success←v17096 = 0;
            goto lab←L100096;
            };
SOURCE(51136, 78)
         {
            word pd442;
            pd442 = (* (( (ptr) (* (( (ptr) gf←c92224)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd442 ))))((word) &localTestpoint←v29948, (* (( (ptr) circleData←v29892)+6) ), testPoint←v16912, pd442)
            ;
            };
SOURCE(51216, 42)
         {
            word pd443;
            pd443 = (* (( (ptr) (* (( (ptr) gf←c92224)+273)/* var←c82944 */  ))+18) );
            dist←v29976 = (word) ( *( (fPt) ((*  (ptr) pd443 ))))(localTestpoint←v29948, pd443);
            };
SOURCE(51260, 76)
         {
            word x444;
            word x445;
            if (((
               x444 = dist←v29976,  *(float*)&x444
               ) > (
               x445 = (*  (ptr) &fc85 ),  *(float*)&x445
               ))) {
SOURCE(51279, 57)
               {
                  word pd446;
                  word x447;
                  word x448;
                  float tf449;
                  pd446 = (* (( (ptr) (* (( (ptr) gf←c92224)+273)/* var←c82944 */  ))+12) );
                  (void) ( *( (fPt) ((*  (ptr) pd446 ))))((word) &pointOnCircle←v29920, localTestpoint←v29948, (
                        tf449 = (
                           x447 = (*  (ptr) &fc87 ),  *(float*)&x447
                           ) / (
                           x448 = dist←v29976,  *(float*)&x448
                           ),  *(word*)&tf449
                        ), pd446);
                  };
               };
            };
SOURCE(51338, 79)
         {
            word pd450;
            pd450 = (* (( (ptr) (* (( (ptr) gf←c92224)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd450 ))))((word) &bestPoint←v16984, (* (( (ptr) circleData←v29892)+1) ), pointOnCircle←v29920, pd450)
            ;
            };
SOURCE(51419, 51)
         {
            word pd451;
            pd451 = (* (( (ptr) (* (( (ptr) gf←c92224)+273)/* var←c82944 */  ))+19) );
            bestDist←v17012 = (word) ( *( (fPt) ((*  (ptr) pd451 ))))(testPoint←v16912, bestPoint←v16984, pd451);
            };
SOURCE(51472, 193)
         {
            word x452;
            word x453;
            if (((
               x452 = bestDist←v17012,  *(float*)&x452
               ) < (
               x453 = tolerance←v16940,  *(float*)&x453
               ))) {
SOURCE(51501, 98)
               {
                  word var←c88480;
                  {
                     word var←c88512;
                     var←c88512 = XR←NewObject(16, (* (( (ptr) gf←c92224)+21) ));
                     (*  (W2Pt) (( (ptr) var←c88512)+1) ) = bestPoint←v16984;
                     (* (( (ptr) var←c88512)+3) ) = 1;
                     var←c88480 = var←c88512;
                     };
                  circleHitData←v29836 = var←c88480;
                  hitData←v17068 = var←c88480;
                  };
SOURCE(51601, 14)
               success←v17096 = 1;
SOURCE(51617, 48)
               {
                  word pd454;
                  pd454 = (* (( (ptr) (* (( (ptr) gf←c92224)+273)/* var←c82944 */  ))+11) );
                  (void) ( *( (fPt) ((*  (ptr) pd454 ))))((word) &bestNormal←v17040, testPoint←v16912, bestPoint←v16984, pd454);
                  };
               };
            };
         };
      };
   /* removed tail goto */ 
   lab←L100096: ;
   (*  (W2Pt) formal←c0817 ) = bestPoint←v16984;
   (* (( (ptr) formal←c0817)+2) ) = bestDist←v17012;
   (*  (W2Pt) (( (ptr) formal←c0817)+3) ) = bestNormal←v17040;
   (* (( (ptr) formal←c0817)+5) ) = hitData←v17068;
   (* (( (ptr) formal←c0817)+6) ) = success←v17096;
   return;
   }

static void CircleFilledPathsUnderPoint←P3180(formal←c0828, slice←v17168, point←v17196, tolerance←v17224)
   word formal←c0828;
   word slice←v17168;
   W2 point←v17196;
   word tolerance←v17224;
   {
   register ptr gf←c92256 =  (ptr) &globalframe;
   word hitData←v17268;
   word moreHitDatas←v17296;
   word circleData←v30020;
   W2 pointCircle←v30048;
   word success←v30076 = 0;
   /* CircleFilledPathsUnderPoint: */ 
SOURCE(51679, 505)
SOURCE(51679, 505)
   hitData←v17268 = 0;
SOURCE(51679, 505)
   moreHitDatas←v17296 = 0;
SOURCE(51840, 43)
   circleData←v30020 = XR←Narrow((* (( (ptr) slice←v17168)+1) ), (* (( (ptr) gf←c92256)+12) ));
SOURCE(51885, 78)
   {
      word pd455;
      pd455 = (* (( (ptr) (* (( (ptr) gf←c92256)+272)/* var←c82880 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd455 ))))((word) &pointCircle←v30048, (* (( (ptr) circleData←v30020)+6) ), point←v17196, pd455)
      ;
      };
SOURCE(51989, 98)
   {
      word pd456;
      if (((* (( (ptr) circleData←v30020)+11) ) != 0)) {
         pd456 = (* (( (ptr) (* (( (ptr) gf←c92256)+268)/* var←c82496 */  ))+20) );
         success←v30076 =  (unsigned) (0 != (word) ( *( (fPt) ((*  (ptr) pd456 ))))(pointCircle←v30048, (*  (ptr) circleData←v30020 ), pd456)
         );
         }
      else {
         success←v30076 =  (unsigned) 0;
         };
      };
SOURCE(52089, 95)
   if ((0 != success←v30076)) {
SOURCE(52107, 77)
      {
         word var←c88544;
         var←c88544 = XR←NewObject(16, (* (( (ptr) gf←c92256)+21) ));
         (*  (ptr) var←c88544 ) = 1;
         (*  (W2Pt) (( (ptr) var←c88544)+1) ) = point←v17196;
         hitData←v17268 = var←c88544;
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0828 ) = hitData←v17268;
   (* (( (ptr) formal←c0828)+1) ) = moreHitDatas←v17296;
   return;
   }

static void CircleLineIntersection←P3240(formal←c0844, sliceD←v17464, line←v17492)
   word formal←c0844;
   word sliceD←v17464;
   word line←v17492;
   {
   register ptr gf←c92288 =  (ptr) &globalframe;
   word points←v17536;
   word pointCount←v17564;
   word circleData←v30120;
   word circleParts←v30148;
   word localLine←v30204;
   W4 localPoints←v30232;
   /* CircleLineIntersection: */ 
SOURCE(52193, 566)
SOURCE(52193, 566)
   points←v17536 = 0;
SOURCE(52193, 566)
   pointCount←v17564 = 0;
SOURCE(52317, 50)
   circleData←v30120 = XR←Narrow((* (( (ptr) (*  (ptr) sliceD←v17464 ))+1) ), (* (( (ptr) gf←c92288)+12) ));
SOURCE(52369, 47)
   circleParts←v30148 = XR←Narrow((* (( (ptr) sliceD←v17464)+1) ), (* (( (ptr) gf←c92288)+13) ));
SOURCE(52441, 65)
   {
      word pd457;
      pd457 = (* (( (ptr) (* (( (ptr) gf←c92288)+286)/* var←c88576 */  ))+15) );
      localLine←v30204 = (word) ( *( (fPt) ((*  (ptr) pd457 ))))(line←v17492, (* (( (ptr) circleData←v30120)+6) ), pd457);
      };
SOURCE(52544, 83)
   {
      W6 var←c88608;
      {
         word pd458;
         pd458 = (* (( (ptr) (* (( (ptr) gf←c92288)+268)/* var←c82496 */  ))+10) );
         (void) ( *( (fPt) ((*  (ptr) pd458 ))))((word) &var←c88608, (*  (ptr) circleData←v30120 ), localLine←v30204, pd458);
         };
      pointCount←v17564 = var←c88608.f4;
      localPoints←v30232 = (*  (W4Pt) &var←c88608 );
      };
SOURCE(52629, 130)
   {
      register word i←v30312 = 1;
      register word noName←c88640;
      noName←c88640 = pointCount←v17564;
      if ((i←v30312 > noName←c88640)) {
         goto lab←L100099;
         };
      lab←L100102: ;
SOURCE(52662, 97)
      {
         W2 var←c88672;
         word var←c88704;
         {
            word pd459;
            pd459 = (* (( (ptr) (* (( (ptr) gf←c92288)+272)/* var←c82880 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd459 ))))((word) &var←c88672, (* (( (ptr) circleData←v30120)+1) ), (* (( (W2Pt) &localPoints←v30232)+BCK(
                     (i←v30312 - 1), 2)) ), pd459);
            };
         var←c88704 = XR←NewObject(12, (* (( (ptr) gf←c92288)+10) ));
         (*  (W2Pt) var←c88704 ) = var←c88672;
         (* (( (ptr) var←c88704)+2) ) = points←v17536;
         points←v17536 = var←c88704;
         };
      if ((i←v30312 >= noName←c88640)) {
         goto lab←L100099;
         };
      i←v30312 = (i←v30312 + 1);
      goto lab←L100102;
      lab←L100099: ;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0844 ) = points←v17536;
   (* (( (ptr) formal←c0844)+1) ) = pointCount←v17564;
   return;
   }

static word CircleHitDataAsSimpleCurve←P3300(slice←v17708, hitData←v17736)
   word slice←v17708;
   word hitData←v17736;
   {
   register ptr gf←c92320 =  (ptr) &globalframe;
   word simpleCurve←v17792;
   word circleHitData←v30356;
   word circleData←v30384;
   /* CircleHitDataAsSimpleCurve: */ 
SOURCE(52774, 326)
SOURCE(52774, 326)
   simpleCurve←v17792 = 0;
SOURCE(52875, 46)
   circleHitData←v30356 = XR←Narrow(hitData←v17736, (* (( (ptr) gf←c92320)+21) ));
SOURCE(52923, 43)
   circleData←v30384 = XR←Narrow((* (( (ptr) slice←v17708)+1) ), (* (( (ptr) gf←c92320)+12) ));
SOURCE(52968, 45)
   if ((0 == (* (( (ptr) circleHitData←v30356)+3) ))) {
SOURCE(53002, 11)
      return(0);
      };
SOURCE(53015, 46)
   if ((0 == (* (( (ptr) circleData←v30384)+4) ))) {
SOURCE(53050, 11)
      return(0);
      };
SOURCE(53063, 37)
   simpleCurve←v17792 = (* (( (ptr) circleData←v30384)+5) );
SOURCE(52774, 326)
   return(simpleCurve←v17792);
   }

static void CirclePointsFromData←P3360(formal←c0868, circleData←v17864)
   word formal←c0868;
   word circleData←v17864;
   {
   register ptr gf←c92352 =  (ptr) &globalframe;
   W10 points←v17908;
   word t←v30428;
   /* CirclePointsFromData: */ 
SOURCE(53106, 438)
SOURCE(53202, 40)
   t←v30428 = (* (( (ptr) circleData←v17864)+1) );
SOURCE(53244, 58)
   {
      W2 var←c88736;
      {
         W2 var←c0855;
         {
            W2 var←c88768;
            var←c88768.f0 = (*  (ptr) &fc85 );
            var←c88768.f1 = (*  (ptr) &fc85 );
            {
               word pd460;
               pd460 = (* (( (ptr) (* (( (ptr) gf←c92352)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd460 ))))((word) &var←c0855, t←v30428, var←c88768, pd460);
               };
            };
         var←c88736 = var←c0855;
         };
      (*  (W2Pt) &points←v17908 ) = var←c88736;
      };
SOURCE(53304, 59)
   {
      W2 var←c88800;
      {
         W2 var←c0858;
         {
            W2 var←c88832;
            var←c88832.f0 = (*  (ptr) &fc88 );
            var←c88832.f1 = (*  (ptr) &fc85 );
            {
               word pd461;
               pd461 = (* (( (ptr) (* (( (ptr) gf←c92352)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd461 ))))((word) &var←c0858, t←v30428, var←c88832, pd461);
               };
            };
         var←c88800 = var←c0858;
         };
      (*  (W2Pt) (( (ptr) &points←v17908)+2) ) = var←c88800;
      };
SOURCE(53365, 58)
   {
      W2 var←c88864;
      {
         W2 var←c0861;
         {
            W2 var←c88896;
            var←c88896.f0 = (*  (ptr) &fc85 );
            var←c88896.f1 = (*  (ptr) &fc87 );
            {
               word pd462;
               pd462 = (* (( (ptr) (* (( (ptr) gf←c92352)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd462 ))))((word) &var←c0861, t←v30428, var←c88896, pd462);
               };
            };
         var←c88864 = var←c0861;
         };
      (*  (W2Pt) (( (ptr) &points←v17908)+4) ) = var←c88864;
      };
SOURCE(53425, 58)
   {
      W2 var←c88928;
      {
         W2 var←c0864;
         {
            W2 var←c88960;
            var←c88960.f0 = (*  (ptr) &fc87 );
            var←c88960.f1 = (*  (ptr) &fc85 );
            {
               word pd463;
               pd463 = (* (( (ptr) (* (( (ptr) gf←c92352)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd463 ))))((word) &var←c0864, t←v30428, var←c88960, pd463);
               };
            };
         var←c88928 = var←c0864;
         };
      (*  (W2Pt) (( (ptr) &points←v17908)+6) ) = var←c88928;
      };
SOURCE(53485, 59)
   {
      W2 var←c88992;
      {
         W2 var←c0867;
         {
            W2 var←c89024;
            var←c89024.f0 = (*  (ptr) &fc85 );
            var←c89024.f1 = (*  (ptr) &fc88 );
            {
               word pd464;
               pd464 = (* (( (ptr) (* (( (ptr) gf←c92352)+272)/* var←c82880 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd464 ))))((word) &var←c0867, t←v30428, var←c89024, pd464);
               };
            };
         var←c88992 = var←c0867;
         };
      (*  (W2Pt) (( (ptr) &points←v17908)+8) ) = var←c88992;
      };
   /* removed tail goto */ 
   (*  (W10Pt) formal←c0868 ) = points←v17908;
   return;
   }

static void CircleSetDefaults←P3420(slice←v18004, parts←v18032, defaults←v18060, history←v18088)
   word slice←v18004;
   word parts←v18032;
   word defaults←v18060;
   word history←v18088;
   {
   register ptr gf←c92384 =  (ptr) &globalframe;
   word circleData←v30472;
   /* CircleSetDefaults: */ 
SOURCE(53550, 272)
SOURCE(53658, 43)
   circleData←v30472 = XR←Narrow((* (( (ptr) slice←v18004)+1) ), (* (( (ptr) gf←c92384)+12) ));
SOURCE(53703, 47)
   {
      word pd465;
      pd465 = (* (( (ptr) (* (( (ptr) gf←c92384)+269)/* var←c82624 */  ))+16) );
      (void) ( *( (fPt) ((*  (ptr) pd465 ))))((* (( (ptr) circleData←v30472)+33) ), defaults←v18060, pd465);
      };
SOURCE(53752, 41)
   (* (( (ptr) circleData←v30472)+11) ) = (* (( (ptr) defaults←v18060)+8) );
SOURCE(53795, 27)
   {
      word pd466;
      pd466 = (* (( (ptr) (* (( (ptr) gf←c92384)+267)/* var←c82368 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd466 ))))(slice←v18004, pd466);
      };
   }

static word CircleSetStrokeWidth←P3480(slice←v18148, parts←v18176, strokeWidth←v18204, history←v18232)
   word slice←v18148;
   word parts←v18176;
   word strokeWidth←v18204;
   word history←v18232;
   {
   register ptr gf←c92416 =  (ptr) &globalframe;
   word box←v18276;
   word circleData←v30516;
   /* CircleSetStrokeWidth: */ 
SOURCE(53828, 366)
SOURCE(53828, 366)
   box←v18276 = 0;
SOURCE(53959, 43)
   circleData←v30516 = XR←Narrow((* (( (ptr) slice←v18148)+1) ), (* (( (ptr) gf←c92416)+12) ));
SOURCE(54004, 118)
   {
      word x467;
      word x468;
      if (((
         x467 = (* (( (ptr) (* (( (ptr) circleData←v30516)+33) ))+2) ),  *(float*)&x467
         ) != (
         x468 = strokeWidth←v18204,  *(float*)&x468
         ))) {
SOURCE(54053, 40)
         (* (( (ptr) (* (( (ptr) circleData←v30516)+33) ))+2) ) = strokeWidth←v18204;
SOURCE(54095, 27)
         {
            word pd469;
            pd469 = (* (( (ptr) (* (( (ptr) gf←c92416)+267)/* var←c82368 */  ))+68) );
            (void) ( *( (fPt) ((*  (ptr) pd469 ))))(slice←v18148, pd469);
            };
         };
      };
SOURCE(54127, 67)
   {
      word var←c89056;
      {
         word pd470;
         pd470 = (* (( (ptr) (* (( (ptr) gf←c92416)+276)/* var←c83456 */  ))+7) );
         var←c89056 = (word) ( *( (fPt) ((*  (ptr) pd470 ))))(slice←v18148, parts←v18176, pd470);
         };
      {
         word pd471;
         pd471 = (* (( (ptr) (* (( (ptr) gf←c92416)+271)/* var←c82752 */  ))+7) );
         box←v18276 = (word) ( *( (fPt) ((*  (ptr) pd471 ))))(var←c89056, pd471);
         };
      };
SOURCE(53828, 366)
   return(box←v18276);
   }

static void CircleGetStrokeWidth←P3540(formal←c0886, slice←v18336, parts←v18364)
   word formal←c0886;
   word slice←v18336;
   word parts←v18364;
   {
   register ptr gf←c92448 =  (ptr) &globalframe;
   word strokeWidth←v18408;
   word isUnique←v18436;
   word circleData←v30560;
   /* CircleGetStrokeWidth: */ 
SOURCE(54274, 201)
SOURCE(54274, 201)
   isUnique←v18436 = 1;
SOURCE(54390, 43)
   circleData←v30560 = XR←Narrow((* (( (ptr) slice←v18336)+1) ), (* (( (ptr) gf←c92448)+12) ));
SOURCE(54435, 40)
   strokeWidth←v18408 = (* (( (ptr) (* (( (ptr) circleData←v30560)+33) ))+2) );
   /* removed tail goto */ 
   (*  (ptr) formal←c0886 ) = strokeWidth←v18408;
   (* (( (ptr) formal←c0886)+1) ) = isUnique←v18436;
   return;
   }

static void CircleSetStrokeEnd←P3600(slice←v18496, parts←v18524, strokeEnd←v18552, history←v18580)
   word slice←v18496;
   word parts←v18524;
   word strokeEnd←v18552;
   word history←v18580;
   {
   register ptr gf←c92480 =  (ptr) &globalframe;
   word circleData←v30604;
   /* CircleSetStrokeEnd: */ 
SOURCE(54481, 189)
SOURCE(54589, 43)
   circleData←v30604 = XR←Narrow((* (( (ptr) slice←v18496)+1) ), (* (( (ptr) gf←c92480)+12) ));
SOURCE(54634, 36)
   (* (( (ptr) (* (( (ptr) circleData←v30604)+33) ))+3) ) = strokeEnd←v18552;
   }

static void CircleGetStrokeEnd←P3660(formal←c0898, slice←v18640, parts←v18668)
   word formal←c0898;
   word slice←v18640;
   word parts←v18668;
   {
   register ptr gf←c92512 =  (ptr) &globalframe;
   word strokeEnd←v18712;
   word isUnique←v18740;
   word circleData←v30648;
   /* CircleGetStrokeEnd: */ 
SOURCE(54676, 200)
SOURCE(54676, 200)
   isUnique←v18740 = 1;
SOURCE(54793, 43)
   circleData←v30648 = XR←Narrow((* (( (ptr) slice←v18640)+1) ), (* (( (ptr) gf←c92512)+12) ));
SOURCE(54838, 38)
   strokeEnd←v18712 = (* (( (ptr) (* (( (ptr) circleData←v30648)+33) ))+3) );
   isUnique←v18740 = 1;
   /* removed tail goto */ 
   (*  (ptr) formal←c0898 ) = strokeEnd←v18712;
   (* (( (ptr) formal←c0898)+1) ) = isUnique←v18740;
   return;
   }

static void CircleSetStrokeColor←P3720(slice←v18800, parts←v18828, color←v18856, setHow←v18884, history←v18912)
   word slice←v18800;
   word parts←v18828;
   word color←v18856;
   word setHow←v18884;
   word history←v18912;
   {
   register ptr gf←c92544 =  (ptr) &globalframe;
   word circleData←v30692;
   /* CircleSetStrokeColor: */ 
SOURCE(54882, 333)
SOURCE(54998, 43)
   circleData←v30692 = XR←Narrow((* (( (ptr) slice←v18800)+1) ), (* (( (ptr) gf←c92544)+12) ));
SOURCE(55043, 172)
   {
      word var←c89120;
      var←c89120 = setHow←v18884;
      if ((var←c89120 == (* (( (ptr) gf←c92544)+54) ))) {
SOURCE(55070, 28)
         (* (( (ptr) (* (( (ptr) circleData←v30692)+33) ))+8) ) = color←v18856;
         }
      else {
         if ((var←c89120 == (* (( (ptr) gf←c92544)+57) ))) {
SOURCE(55114, 103)
            {
               word newColor←v30736;
SOURCE(55116, 66)
               {
                  word pd472;
                  pd472 = (* (( (ptr) (* (( (ptr) gf←c92544)+287)/* var←c89152 */  ))+36) );
                  newColor←v30736 = (word) ( *( (fPt) ((*  (ptr) pd472 ))))((* (( (ptr) (* (( (ptr) circleData←v30692)+33) ))+8) ), color←v18856, pd472)
                  ;
                  };
SOURCE(55184, 31)
               (* (( (ptr) (* (( (ptr) circleData←v30692)+33) ))+8) ) = newColor←v30736;
               };
            }
         else {
SOURCE(55231, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
   }

static void CircleGetStrokeColor←P3780(formal←c0912, slice←v18972, parts←v19000)
   word formal←c0912;
   word slice←v18972;
   word parts←v19000;
   {
   register ptr gf←c92576 =  (ptr) &globalframe;
   word color←v19044;
   word isUnique←v19072;
   word circleData←v30780;
   /* CircleGetStrokeColor: */ 
SOURCE(55242, 184)
SOURCE(55242, 184)
   color←v19044 = 0;
SOURCE(55242, 184)
   isUnique←v19072 = 1;
SOURCE(55353, 43)
   circleData←v30780 = XR←Narrow((* (( (ptr) slice←v18972)+1) ), (* (( (ptr) gf←c92576)+12) ));
SOURCE(55398, 28)
   color←v19044 = (* (( (ptr) (* (( (ptr) circleData←v30780)+33) ))+8) );
   /* removed tail goto */ 
   (*  (ptr) formal←c0912 ) = color←v19044;
   (* (( (ptr) formal←c0912)+1) ) = isUnique←v19072;
   return;
   }

static void CircleSetFillColor←P3840(slice←v19132, parts←v19160, color←v19188, setHow←v19216, history←v19244)
   word slice←v19132;
   word parts←v19160;
   word color←v19188;
   word setHow←v19216;
   word history←v19244;
   {
   register ptr gf←c92608 =  (ptr) &globalframe;
   word circleData←v30824;
   /* CircleSetFillColor: */ 
SOURCE(55432, 331)
SOURCE(55546, 43)
   circleData←v30824 = XR←Narrow((* (( (ptr) slice←v19132)+1) ), (* (( (ptr) gf←c92608)+12) ));
SOURCE(55591, 172)
   {
      word var←c89184;
      var←c89184 = setHow←v19216;
      if ((var←c89184 == (* (( (ptr) gf←c92608)+54) ))) {
SOURCE(55618, 28)
         (* (( (ptr) circleData←v30824)+11) ) = color←v19188;
         }
      else {
         if ((var←c89184 == (* (( (ptr) gf←c92608)+57) ))) {
SOURCE(55662, 103)
            {
               word newColor←v30868;
SOURCE(55664, 66)
               {
                  word pd473;
                  pd473 = (* (( (ptr) (* (( (ptr) gf←c92608)+287)/* var←c89152 */  ))+36) );
                  newColor←v30868 = (word) ( *( (fPt) ((*  (ptr) pd473 ))))((* (( (ptr) circleData←v30824)+11) ), color←v19188, pd473);
                  };
SOURCE(55732, 31)
               (* (( (ptr) circleData←v30824)+11) ) = newColor←v30868;
               };
            }
         else {
SOURCE(55779, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
   }

static void CircleGetFillColor←P3900(formal←c0926, slice←v19304, parts←v19332)
   word formal←c0926;
   word slice←v19304;
   word parts←v19332;
   {
   register ptr gf←c92640 =  (ptr) &globalframe;
   word color←v19376;
   word isUnique←v19404;
   word circleData←v30912;
   /* CircleGetFillColor: */ 
SOURCE(55790, 182)
SOURCE(55790, 182)
   color←v19376 = 0;
SOURCE(55790, 182)
   isUnique←v19404 = 1;
SOURCE(55899, 43)
   circleData←v30912 = XR←Narrow((* (( (ptr) slice←v19304)+1) ), (* (( (ptr) gf←c92640)+12) ));
SOURCE(55944, 28)
   color←v19376 = (* (( (ptr) circleData←v30912)+11) );
   /* removed tail goto */ 
   (*  (ptr) formal←c0926 ) = color←v19376;
   (* (( (ptr) formal←c0926)+1) ) = isUnique←v19404;
   return;
   }

static void CircleSetDashed←P3960(slice←v19464, parts←v19492, dashed←v19520, pattern←v19548, offset←v19576, length←v19604, history←v19632)
   word slice←v19464;
   word parts←v19492;
   word dashed←v19520;
   word pattern←v19548;
   word offset←v19576;
   word length←v19604;
   word history←v19632;
   {
   register ptr gf←c92672 =  (ptr) &globalframe;
   word circleParts←v30956;
   word circleData←v30984;
   /* CircleSetDashed: */ 
SOURCE(55978, 428)
SOURCE(56155, 40)
   circleParts←v30956 = XR←Narrow(parts←v19492, (* (( (ptr) gf←c92672)+13) ));
SOURCE(56197, 43)
   circleData←v30984 = XR←Narrow((* (( (ptr) slice←v19464)+1) ), (* (( (ptr) gf←c92672)+12) ));
SOURCE(56242, 164)
   if ((circleParts←v30956 == 0) || (0 != (* (( (ptr) circleParts←v30956)+5) ))) {
SOURCE(56289, 119)
      {
         word seg←v31028;
SOURCE(56291, 29)
         seg←v31028 = (* (( (ptr) circleData←v30984)+33) );
SOURCE(56322, 19)
         (* (( (ptr) seg←v31028)+4) ) = dashed←v19520;
SOURCE(56343, 21)
         (* (( (ptr) seg←v31028)+5) ) = pattern←v19548;
SOURCE(56366, 19)
         (* (( (ptr) seg←v31028)+6) ) = offset←v19576;
SOURCE(56387, 19)
         (* (( (ptr) seg←v31028)+7) ) = length←v19604;
         };
      };
   }

static void CircleGetDashed←P4020(formal←c0947, slice←v19692, parts←v19720)
   word formal←c0947;
   word slice←v19692;
   word parts←v19720;
   {
   register ptr gf←c92704 =  (ptr) &globalframe;
   word dashed←v19764;
   word pattern←v19792;
   word offset←v19820;
   word length←v19848;
   word isUnique←v19876;
   word circleParts←v31072;
   word circleData←v31100;
   /* CircleGetDashed: */ 
SOURCE(56415, 412)
SOURCE(56415, 412)
   dashed←v19764 = 0;
SOURCE(56415, 412)
   pattern←v19792 = 0;
SOURCE(56415, 412)
   isUnique←v19876 = 1;
SOURCE(56576, 40)
   circleParts←v31072 = XR←Narrow(parts←v19720, (* (( (ptr) gf←c92704)+13) ));
SOURCE(56618, 43)
   circleData←v31100 = XR←Narrow((* (( (ptr) slice←v19692)+1) ), (* (( (ptr) gf←c92704)+12) ));
SOURCE(56663, 164)
   if ((circleParts←v31072 == 0) || (0 != (* (( (ptr) circleParts←v31072)+5) ))) {
SOURCE(56710, 119)
      {
         word seg←v31144;
SOURCE(56712, 29)
         seg←v31144 = (* (( (ptr) circleData←v31100)+33) );
SOURCE(56743, 19)
         dashed←v19764 = (* (( (ptr) seg←v31144)+4) );
SOURCE(56764, 21)
         pattern←v19792 = (* (( (ptr) seg←v31144)+5) );
SOURCE(56787, 19)
         offset←v19820 = (* (( (ptr) seg←v31144)+6) );
SOURCE(56808, 19)
         length←v19848 = (* (( (ptr) seg←v31144)+7) );
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0947 ) = dashed←v19764;
   (* (( (ptr) formal←c0947)+1) ) = pattern←v19792;
   (* (( (ptr) formal←c0947)+2) ) = offset←v19820;
   (* (( (ptr) formal←c0947)+3) ) = length←v19848;
   (* (( (ptr) formal←c0947)+4) ) = isUnique←v19876;
   return;
   }

static word CircleSetOrientation←P4080(slice←v19936, parts←v19964, orientation←v19992, history←v20020)
   word slice←v19936;
   word parts←v19964;
   word orientation←v19992;
   word history←v20020;
   {
   register ptr gf←c92736 =  (ptr) &globalframe;
   word success←v20064;
   word circleData←v31188;
   /* CircleSetOrientation: */ 
SOURCE(56836, 353)
SOURCE(56836, 353)
   success←v20064 = 1;
SOURCE(56981, 43)
   circleData←v31188 = XR←Narrow((* (( (ptr) slice←v19936)+1) ), (* (( (ptr) gf←c92736)+12) ));
SOURCE(57026, 163)
   {
      word var←c89216;
      var←c89216 = orientation←v19992;
      switch (var←c89216) {
         case 0: 
SOURCE(57056, 25)
            (* (( (ptr) circleData←v31188)+12) ) = 1;
            break;
         case 1: 
SOURCE(57107, 26)
            (* (( (ptr) circleData←v31188)+12) ) = 0;
            break;
         case 2: 
SOURCE(57146, 43)
            (* (( (ptr) circleData←v31188)+12) ) =  (unsigned) (0 == (* (( (ptr) circleData←v31188)+12) ));
            break;
         default: 
SOURCE(57202, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(56836, 353)
   return(success←v20064);
   }

static void CircleGetOrientation←P4140(formal←c0961, slice←v20124, parts←v20152)
   word formal←c0961;
   word slice←v20124;
   word parts←v20152;
   {
   register ptr gf←c92768 =  (ptr) &globalframe;
   word orientation←v20196;
   word isUnique←v20224;
   word circleData←v31232;
   /* CircleGetOrientation: */ 
SOURCE(57213, 214)
SOURCE(57213, 214)
   isUnique←v20224 = 1;
SOURCE(57336, 43)
   circleData←v31232 = XR←Narrow((* (( (ptr) slice←v20124)+1) ), (* (( (ptr) gf←c92768)+12) ));
SOURCE(57381, 46)
   if ((0 != (* (( (ptr) circleData←v31232)+12) ))) {
      orientation←v20196 = 0;
      }
   else {
      orientation←v20196 = 1;
      };
   isUnique←v20224 = 1;
   /* removed tail goto */ 
   (*  (ptr) formal←c0961 ) = orientation←v20196;
   (* (( (ptr) formal←c0961)+1) ) = isUnique←v20224;
   return;
   }

static void MakeComplete←P4200(circleParts←v20284)
   word circleParts←v20284;
   {
   /* MakeComplete: */ 
SOURCE(57433, 110)
SOURCE(57484, 31)
   XR←FillWords(&(* (W5Pt) (circleParts←v20284)), 5, 1);
SOURCE(57517, 26)
   (* (( (ptr) circleParts←v20284)+5) ) = 1;
   }

static word IsComplete←P4260(circleParts←v20344)
   word circleParts←v20344;
   {
   register ptr gf←c92800 =  (ptr) &globalframe;
   word var←c20388;
   /* IsComplete: */ 
SOURCE(57549, 153)
SOURCE(57549, 153)
   var←c20388 = 0;
SOURCE(57620, 82)
   {
      word tc474;
      if ( ( (circleParts←v20344 != 0) ? XR←EqualWords(circleParts←v20344, (( (ptr) gf←c92800)+256)/* var←c82208 */ , 5) : 0 ) ) {
         tc474 =  (word)  (unsigned) (0 != (* (( (ptr) circleParts←v20344)+5) ));
         }
      else {
         tc474 =  (word)  (unsigned) 0;
         };
      return(tc474);
      };
   }

static word IsEmpty←P4320(circleParts←v20448)
   word circleParts←v20448;
   {
   register ptr gf←c92832 =  (ptr) &globalframe;
   word var←c20492;
   /* IsEmpty: */ 
SOURCE(57708, 159)
SOURCE(57708, 159)
   var←c20492 = 0;
SOURCE(57776, 91)
   {
      word tc475;
      if ((circleParts←v20448 == 0)) {
         tc475 =  (word)  (unsigned) 1;
         }
      else {
         if (XR←EqualWords(circleParts←v20448, (( (ptr) gf←c92832)+261)/* var←c82272 */ , 5)) {
            tc475 =  (word)  (unsigned) ((* (( (ptr) circleParts←v20448)+5) ) == 0);
            }
         else {
            tc475 =  (word)  (unsigned) 0;
            };
         };
      return(tc475);
      };
   }

static word NoOpBoundBox←P4380(slice←v42032, parts←v42060)
   word slice←v42032;
   word parts←v42060;
   {
   register ptr gf←c92864 =  (ptr) &globalframe;
   word box←v42104;
   /* NoOpBoundBox: */ 
SOURCE(57873, 117)
SOURCE(57873, 117)
   box←v42104 = 0;
SOURCE(57929, 61)
   {
      word var←c0970;
      var←c0970 = (* (( (ptr) gf←c92864)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c92864)+4)/* Problem←v5072 */  ), 0, (word) &var←c0970));
      };
SOURCE(57873, 117)
   return(box←v42104);
   }

static word NoOpTransformedBoundBox←P4440(slice←v42164, selectedParts←v42192, movingParts←v42220, transform←v42248)
   word slice←v42164;
   word selectedParts←v42192;
   word movingParts←v42220;
   word transform←v42248;
   {
   register ptr gf←c92896 =  (ptr) &globalframe;
   word box←v42292;
   /* NoOpTransformedBoundBox: */ 
SOURCE(57995, 139)
SOURCE(57995, 139)
   box←v42292 = 0;
SOURCE(58073, 61)
   {
      word var←c0976;
      var←c0976 = (* (( (ptr) gf←c92896)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c92896)+4)/* Problem←v5072 */  ), 0, (word) &var←c0976));
      };
SOURCE(57995, 139)
   return(box←v42292);
   }

static word NoOpTightBox←P4500(slice←v42352, parts←v42380)
   word slice←v42352;
   word parts←v42380;
   {
   word box←v42424;
   /* NoOpTightBox: */ 
SOURCE(58139, 65)
SOURCE(58139, 65)
   box←v42424 = 0;
SOURCE(58195, 9)
   box←v42424 = 0;
SOURCE(58139, 65)
   return(box←v42424);
   }

static word NoOpCopy←P4560(slice←v42484, parts←v42512)
   word slice←v42484;
   word parts←v42512;
   {
   register ptr gf←c92928 =  (ptr) &globalframe;
   word copy←v42556;
   /* NoOpCopy: */ 
SOURCE(58209, 109)
SOURCE(58209, 109)
   copy←v42556 = 0;
SOURCE(58257, 61)
   {
      word var←c0983;
      var←c0983 = (* (( (ptr) gf←c92928)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c92928)+4)/* Problem←v5072 */  ), 0, (word) &var←c0983));
      };
SOURCE(58209, 109)
   return(copy←v42556);
   }

static void NoOpRestore←P4620(from←v42616, to←v42644)
   word from←v42616;
   word to←v42644;
   {
   register ptr gf←c92960 =  (ptr) &globalframe;
   /* NoOpRestore: */ 
SOURCE(58323, 115)
SOURCE(58377, 61)
   {
      word var←c0986;
      var←c0986 = (* (( (ptr) gf←c92960)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c92960)+4)/* Problem←v5072 */  ), 0, (word) &var←c0986));
      };
   }

static void NoOpBuildPath←P4680(slice←v42704, transformParts←v42732, transform←v42760, moveTo←v42788, lineTo←v42816, curveTo←v42844, conicTo←v42872, arcTo←v42900, editConstraints←v42928)
   word slice←v42704;
   word transformParts←v42732;
   word transform←v42760;
   word moveTo←v42788;
   word lineTo←v42816;
   word curveTo←v42844;
   word conicTo←v42872;
   word arcTo←v42900;
   word editConstraints←v42928;
   {
   /* NoOpBuildPath: */ 
   }

static void NoOpDrawBorder←P4740(slice←v42988, drawParts←v43016, transformParts←v43044, transform←v43072, dc←v43100, camera←v43128, quick←v43156, editConstraints←v43184)
   word slice←v42988;
   word drawParts←v43016;
   word transformParts←v43044;
   word transform←v43072;
   word dc←v43100;
   word camera←v43128;
   word quick←v43156;
   word editConstraints←v43184;
   {
   /* NoOpDrawBorder: */ 
   }

static void NoOpDrawParts←P4800(slice←v43244, parts←v43272, dc←v43300, camera←v43328, quick←v43356)
   word slice←v43244;
   word parts←v43272;
   word dc←v43300;
   word camera←v43328;
   word quick←v43356;
   {
   register ptr gf←c92992 =  (ptr) &globalframe;
   /* NoOpDrawParts: */ 
SOURCE(58568, 119)
SOURCE(58626, 61)
   {
      word var←c01009;
      var←c01009 = (* (( (ptr) gf←c92992)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c92992)+4)/* Problem←v5072 */  ), 0, (word) &var←c01009));
      };
   }

static void NoOpDrawTransform←P4860(slice←v43416, parts←v43444, dc←v43472, camera←v43500, transform←v43528, editConstraints←v43556)
   word slice←v43416;
   word parts←v43444;
   word dc←v43472;
   word camera←v43500;
   word transform←v43528;
   word editConstraints←v43556;
   {
   register ptr gf←c93024 =  (ptr) &globalframe;
   /* NoOpDrawTransform: */ 
SOURCE(58692, 127)
SOURCE(58758, 61)
   {
      word var←c01016;
      var←c01016 = (* (( (ptr) gf←c93024)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c93024)+4)/* Problem←v5072 */  ), 0, (word) &var←c01016));
      };
   }

static void NoOpDrawSelectionFeedback←P4920(slice←v43616, selectedParts←v43644, hotParts←v43672, dc←v43700, camera←v43728, dragInProgress←v43756, caretIsMoving←v43784, hideHot←v43812, quick←v43840)
   word slice←v43616;
   word selectedParts←v43644;
   word hotParts←v43672;
   word dc←v43700;
   word camera←v43728;
   word dragInProgress←v43756;
   word caretIsMoving←v43784;
   word hideHot←v43812;
   word quick←v43840;
   {
   register ptr gf←c93056 =  (ptr) &globalframe;
   /* NoOpDrawSelectionFeedback: */ 
SOURCE(58824, 143)
SOURCE(58906, 61)
   {
      word var←c01026;
      var←c01026 = (* (( (ptr) gf←c93056)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c93056)+4)/* Problem←v5072 */  ), 0, (word) &var←c01026));
      };
   }

static void NoOpDrawAttractorFeedback←P4980(slice←v43900, attractorParts←v43928, selectedParts←v43956, dragInProgress←v43984, dc←v44012, camera←v44040, editConstraints←v44068)
   word slice←v43900;
   word attractorParts←v43928;
   word selectedParts←v43956;
   word dragInProgress←v43984;
   word dc←v44012;
   word camera←v44040;
   word editConstraints←v44068;
   {
   register ptr gf←c93088 =  (ptr) &globalframe;
   /* NoOpDrawAttractorFeedback: */ 
SOURCE(58973, 917)
SOURCE(59055, 835)
   if ((0 == dragInProgress←v43984) || (selectedParts←v43956 == 0)) {
SOURCE(59106, 795)
      {
         word pointGen←v31276 = 0;
         word pointPairGen←v31304 = 0;
         word wholeSliceD←v31332;
SOURCE(59168, 72)
         {
            word pd476;
            pd476 = (* (( (ptr) (* (( (ptr) gf←c93088)+276)/* var←c83456 */  ))+29) );
            wholeSliceD←v31332 = (word) ( *( (fPt) ((*  (ptr) pd476 ))))(slice←v43900, 0, 7, pd476);
            };
SOURCE(59242, 30)
         {
            word pd477;
            pd477 = (* (( (ptr) (* (( (ptr) gf←c93088)+270)/* var←c82656 */  ))+69) );
            (void) ( *( (fPt) ((*  (ptr) pd477 ))))(dc←v44012, 2, pd477);
            };
SOURCE(59274, 30)
         {
            word pd478;
            pd478 = (* (( (ptr) (* (( (ptr) gf←c93088)+270)/* var←c82656 */  ))+68) );
            (void) ( *( (fPt) ((*  (ptr) pd478 ))))(dc←v44012, (*  (ptr) &fc87 ), pd478);
            };
SOURCE(59306, 33)
         {
            word pd479;
            pd479 = (* (( (ptr) (* (( (ptr) gf←c93088)+270)/* var←c82656 */  ))+52) );
            (void) ( *( (fPt) ((*  (ptr) pd479 ))))(dc←v44012, (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c93088)+270)/* var←c82656 */  ))+54)
                ) ), pd479);
            };
SOURCE(59341, 61)
         {
            word pd480;
            pd480 = (* (( (ptr) (* (( (ptr) gf←c93088)+276)/* var←c83456 */  ))+38) );
            pointPairGen←v31304 = (word) ( *( (fPt) ((*  (ptr) pd480 ))))(wholeSliceD←v31332, pd480);
            };
SOURCE(59404, 228)
         {
            W5 pointPairAndDone←v31376;
            {
               word pd481;
               pd481 = (* (( (ptr) (* (( (ptr) gf←c93088)+276)/* var←c83456 */  ))+42) );
               (void) ( *( (fPt) ((*  (ptr) pd481 ))))((word) &pointPairAndDone←v31376, slice←v43900, pointPairGen←v31304, pd481);
               };
            lab←L100113: ;
            if ((0 == pointPairAndDone←v31376.f4)) {
               }
            else {
               goto lab←L100110;
               };
SOURCE(59569, 63)
            {
               word pd482;
               pd482 = (* (( (ptr) (* (( (ptr) gf←c93088)+270)/* var←c82656 */  ))+73) );
               (void) ( *( (fPt) ((*  (ptr) pd482 ))))(dc←v44012, (*  (W2Pt) &pointPairAndDone←v31376 ), (*  (W2Pt) (( (ptr) &pointPairAndDone←v31376)+2)
                   ), pd482);
               };
            {
               word pd483;
               pd483 = (* (( (ptr) (* (( (ptr) gf←c93088)+276)/* var←c83456 */  ))+42) );
               (void) ( *( (fPt) ((*  (ptr) pd483 ))))((word) &pointPairAndDone←v31376, slice←v43900, pointPairGen←v31304, pd483);
               };
            goto lab←L100113;
            lab←L100110: ;
            };
SOURCE(59643, 53)
         {
            word pd484;
            pd484 = (* (( (ptr) (* (( (ptr) gf←c93088)+276)/* var←c83456 */  ))+36) );
            pointGen←v31276 = (word) ( *( (fPt) ((*  (ptr) pd484 ))))(wholeSliceD←v31332, pd484);
            };
SOURCE(59698, 192)
         {
            W3 pointAndDone←v31420;
            {
               word pd485;
               pd485 = (* (( (ptr) (* (( (ptr) gf←c93088)+276)/* var←c83456 */  ))+41) );
               (void) ( *( (fPt) ((*  (ptr) pd485 ))))((word) &pointAndDone←v31420, slice←v43900, pointGen←v31276, pd485);
               };
            lab←L100117: ;
            if ((0 == pointAndDone←v31420.f2)) {
               }
            else {
               goto lab←L100114;
               };
SOURCE(59835, 55)
            {
               word pd486;
               pd486 = (* (( (ptr) (* (( (ptr) gf←c93088)+279)/* var←c84512 */  ))+19) );
               (void) ( *( (fPt) ((*  (ptr) pd486 ))))(dc←v44012, (*  (W2Pt) &pointAndDone←v31420 ), (* (( (ptr) camera←v44040)+4) ), pd486)
               ;
               };
            {
               word pd487;
               pd487 = (* (( (ptr) (* (( (ptr) gf←c93088)+276)/* var←c83456 */  ))+41) );
               (void) ( *( (fPt) ((*  (ptr) pd487 ))))((word) &pointAndDone←v31420, slice←v43900, pointGen←v31276, pd487);
               };
            goto lab←L100117;
            lab←L100114: ;
            };
         };
      };
   }

static word NoOpAttractorFeedbackBoundBox←P5040(slice←v44128, attractorParts←v44156, selectedParts←v44184, dragInProgress←v44212, camera←v44240, editConstraints←v44268)
   word slice←v44128;
   word attractorParts←v44156;
   word selectedParts←v44184;
   word dragInProgress←v44212;
   word camera←v44240;
   word editConstraints←v44268;
   {
   register ptr gf←c93120 =  (ptr) &globalframe;
   word box←v44312;
   /* NoOpAttractorFeedbackBoundBox: */ 
SOURCE(59908, 237)
SOURCE(59908, 237)
   box←v44312 = 0;
SOURCE(59998, 65)
   {
      word var←c89280;
      {
         word pd488;
         pd488 = (* (( (ptr) (* (( (ptr) gf←c93120)+276)/* var←c83456 */  ))+9) );
         var←c89280 = (word) ( *( (fPt) ((*  (ptr) pd488 ))))(slice←v44128, 0, pd488);
         };
      {
         word pd489;
         pd489 = (* (( (ptr) (* (( (ptr) gf←c93120)+271)/* var←c82752 */  ))+7) );
         box←v44312 = (word) ( *( (fPt) ((*  (ptr) pd489 ))))(var←c89280, pd489);
         };
      };
SOURCE(60065, 80)
   {
      word pd490;
      word x492;
      word x493;
      word x494;
      float tf495;
      pd490 = (* (( (ptr) (* (( (ptr) gf←c93120)+271)/* var←c82752 */  ))+17) );
      (void) ( *( (fPt) ((*  (ptr) pd490 ))))(box←v44312, (
            tf495 = ((
               x492 = (*  (ptr) &fc491 ),  *(float*)&x492
               ) * (
               x493 = (* (( (ptr) camera←v44240)+4) ),  *(float*)&x493
               )) + (
               x494 = (*  (ptr) &fc87 ),  *(float*)&x494
               ),  *(word*)&tf495
            ), pd490);
      };
SOURCE(59908, 237)
   return(box←v44312);
   }

static void NoOpSaveSelections←P5100(slice←v44372, parts←v44400, selectClass←v44428)
   word slice←v44372;
   word parts←v44400;
   word selectClass←v44428;
   {
   /* NoOpSaveSelections: */ 
   }

static word NoOpRemakeSelections←P5160(slice←v44488, selectClass←v44516)
   word slice←v44488;
   word selectClass←v44516;
   {
   word parts←v44560;
   /* NoOpRemakeSelections: */ 
SOURCE(60223, 70)
SOURCE(60223, 70)
   parts←v44560 = 0;
SOURCE(60223, 70)
   return(parts←v44560);
   }

static word NoOpSetOrientation←P5220(slice←v44620, parts←v44648, orientation←v44676, history←v44704)
   word slice←v44620;
   word parts←v44648;
   word orientation←v44676;
   word history←v44704;
   {
   word success←v44748;
   /* NoOpSetOrientation: */ 
SOURCE(60299, 81)
SOURCE(60367, 13)
   return(0);
   }

static void NoOpGetOrientation←P5280(formal←c01066, slice←v44808, parts←v44836)
   word formal←c01066;
   word slice←v44808;
   word parts←v44836;
   {
   word orientation←v44880;
   word isUnique←v44908;
   /* NoOpGetOrientation: */ 
SOURCE(60386, 79)
SOURCE(60386, 79)
   isUnique←v44908 = 1;
SOURCE(60454, 11)
   orientation←v44880 = 1;
   isUnique←v44908 = 1;
   /* removed tail goto */ 
   (*  (ptr) formal←c01066 ) = orientation←v44880;
   (* (( (ptr) formal←c01066)+1) ) = isUnique←v44908;
   return;
   }

static void NoOpTransform←P5340(slice←v44968, parts←v44996, transform←v45024, editConstraints←v45052, history←v45080)
   word slice←v44968;
   word parts←v44996;
   word transform←v45024;
   word editConstraints←v45052;
   word history←v45080;
   {
   register ptr gf←c93152 =  (ptr) &globalframe;
   /* NoOpTransform: */ 
SOURCE(60470, 119)
SOURCE(60528, 61)
   {
      word var←c01072;
      var←c01072 = (* (( (ptr) gf←c93152)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c93152)+4)/* Problem←v5072 */  ), 0, (word) &var←c01072));
      };
   }

static word NoOpDescribe←P5400(sliceD←v45140)
   word sliceD←v45140;
   {
   register ptr gf←c93184 =  (ptr) &globalframe;
   word rope←v45184;
   /* NoOpDescribe: */ 
SOURCE(60594, 118)
SOURCE(60594, 118)
   rope←v45184 = 0;
SOURCE(60650, 62)
   {
      word var←c01075;
      var←c01075 = (* (( (ptr) gf←c93184)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c93184)+4)/* Problem←v5072 */  ), 0, (word) &var←c01075));
      };
SOURCE(60594, 118)
   return(rope←v45184);
   }

static word NoOpDescribeHit←P5460(slice←v45244, hitData←v45272)
   word slice←v45244;
   word hitData←v45272;
   {
   register ptr gf←c93216 =  (ptr) &globalframe;
   word rope←v45316;
   /* NoOpDescribeHit: */ 
SOURCE(60717, 124)
SOURCE(60717, 124)
   rope←v45316 = 0;
SOURCE(60779, 62)
   {
      word var←c01079;
      var←c01079 = (* (( (ptr) gf←c93216)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c93216)+4)/* Problem←v5072 */  ), 0, (word) &var←c01079));
      };
SOURCE(60717, 124)
   return(rope←v45316);
   }

static void NoOpFileout←P5520(slice←v45376, f←v45404)
   word slice←v45376;
   word f←v45404;
   {
   register ptr gf←c93248 =  (ptr) &globalframe;
   /* NoOpFileout: */ 
SOURCE(60846, 116)
SOURCE(60900, 62)
   {
      word var←c01082;
      var←c01082 = (* (( (ptr) gf←c93248)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c93248)+4)/* Problem←v5072 */  ), 0, (word) &var←c01082));
      };
   }

static word NoOpFilein←P5580(f←v45464, version←v45492, router←v45520, camera←v45548)
   word f←v45464;
   word version←v45492;
   word router←v45520;
   word camera←v45548;
   {
   register ptr gf←c93280 =  (ptr) &globalframe;
   word slice←v45592;
   /* NoOpFilein: */ 
SOURCE(60967, 114)
SOURCE(60967, 114)
   slice←v45592 = 0;
SOURCE(61019, 62)
   {
      word var←c01088;
      var←c01088 = (* (( (ptr) gf←c93280)+58) );
      (void) (XR←RaiseSignal((* (( (ptr) gf←c93280)+4)/* Problem←v5072 */  ), 0, (word) &var←c01088));
      };
SOURCE(60967, 114)
   return(slice←v45592);
   }

static word GenericTransformedBoundBox←P5640(slice←v45652, selectedParts←v45680, movingParts←v45708, transform←v45736)
   word slice←v45652;
   word selectedParts←v45680;
   word movingParts←v45708;
   word transform←v45736;
   {
   register ptr gf←c93312 =  (ptr) &globalframe;
   word box←v45780;
   word var←c89312;
   /* GenericTransformedBoundBox: */ 
SOURCE(61086, 600)
SOURCE(61086, 600)
   box←v45780 = 0;
SOURCE(61167, 519)
   {
      word pd497;
      {
         word pd496;
         pd496 = (* (( (ptr) (* (( (ptr) gf←c93312)+267)/* var←c82368 */  ))+8) );
         var←c89312 = (word) ( *( (fPt) ((*  (ptr) pd496 ))))(slice←v45652, selectedParts←v45680, pd496);
         };
      pd497 = (* (( (ptr) (* (( (ptr) gf←c93312)+276)/* var←c83456 */  ))+28) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd497 ))))(var←c89312, pd497))) {
SOURCE(61255, 40)
         {
            word pd498;
            pd498 = (* (( (ptr) (* (( (ptr) gf←c93312)+276)/* var←c83456 */  ))+7) );
            box←v45780 = (word) ( *( (fPt) ((*  (ptr) pd498 ))))(slice←v45652, 0, pd498);
            };
SOURCE(61297, 51)
         {
            word pd499;
            pd499 = (* (( (ptr) (* (( (ptr) gf←c93312)+271)/* var←c82752 */  ))+9) );
            box←v45780 = (word) ( *( (fPt) ((*  (ptr) pd499 ))))(box←v45780, transform←v45736, pd499);
            };
         }
      else {
SOURCE(61381, 307)
         {
            word copies←v31464;
SOURCE(61383, 8)
            {
               word pd500;
               pd500 = (* (( (ptr) (* (( (ptr) gf←c93312)+276)/* var←c83456 */  ))+10) );
               copies←v31464 = (word) ( *( (fPt) ((*  (ptr) pd500 ))))(slice←v45652, 0, pd500);
               };
SOURCE(61436, 79)
            if (((* (( (ptr) copies←v31464)+1) ) != 0)) {
SOURCE(61460, 55)
               {
                  word var←c01096;
                  var←c01096 = (* (( (ptr) gf←c93312)+59) );
                  (void) (XR←RaiseSignal((* (( (ptr) gf←c93312)+4)/* Problem←v5072 */  ), 0, (word) &var←c01096));
                  };
               };
SOURCE(61517, 71)
            {
               word pd501;
               pd501 = (* (( (ptr) (* (( (ptr) gf←c93312)+276)/* var←c83456 */  ))+22) );
               (void) ( *( (fPt) ((*  (ptr) pd501 ))))((*  (ptr) copies←v31464 ), selectedParts←v45680, transform←v45736, 0, 0, pd501);
               };
SOURCE(61606, 80)
            {
               word var←c89344;
               {
                  word pd502;
                  pd502 = (* (( (ptr) (* (( (ptr) gf←c93312)+276)/* var←c83456 */  ))+7) );
                  var←c89344 = (word) ( *( (fPt) ((*  (ptr) pd502 ))))((*  (ptr) copies←v31464 ), movingParts←v45708, pd502);
                  };
               {
                  word pd503;
                  pd503 = (* (( (ptr) (* (( (ptr) gf←c93312)+271)/* var←c82752 */  ))+7) );
                  box←v45780 = (word) ( *( (fPt) ((*  (ptr) pd503 ))))(var←c89344, pd503);
                  };
               };
            };
         };
      };
SOURCE(61086, 600)
   return(box←v45780);
   }

static void Init←P5700()
   {
   register ptr gf←c93344 =  (ptr) &globalframe;
   /* Init: */ 
SOURCE(61694, 63)
SOURCE(61712, 45)
   {
      word pd504;
      pd504 = (* (( (ptr) (* (( (ptr) gf←c93344)+280)/* var←c85056 */  ))+4) );
      (* (( (ptr) gf←c93344)+6)/* cache←v8068 */  ) = (word) ( *( (fPt) ((*  (ptr) pd504 ))))(100, 2147483647, pd504);
      };
   }

/* file: GGSliceImplC, module: GGSliceImplC, compiled at: July 11, 1993 8:09:44 pm PDT */ 
extern void XR←install←GGSliceImplC() {
   XR←FillWords(&dummy156, 2, 0);
   NoName←Q9060();
   }
extern void XR←run←GGSliceImplC() { XR←Start(&globalframe); }