/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: February 5, 1993 2:09:43 pm PST */
/* C2C version: October 7, 1992 (native) */
/* ref-counting: off */
/* file: GGSegmentImplB, module: GGSegmentImplB */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1762994238,3792739274] GGSegmentImplB";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1;} W2;
typedef W2 *W2Pt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef W6 *W6Pt;
typedef struct {word f0, f1, f2;} W3;
#define SOURCE(p, l) /* source p, l */
static float fc36 = 2.0;
static float fc37 = 0.0;
static float fc38 = -1.0;
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc41 = 3.0;
static float fc43 = 1.0;
#define FMIN(x, y, tx, ty)  ( (tx=((float) x)) <= (ty=((float) y)) ? tx : ty )
#define FMAX(x, y, tx, ty)  ( (tx=((float) x)) >= (ty=((float) y)) ? tx : ty )
static float fc92 = 0.707106816;
#define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) )
static float fc155 = 90.0;
static float fc159 = 180.0;
static float fc164 = -90.0;
static float fc219 = 0.01745328;
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static void NoName←Q4860();
static void GGSegmentImplB←P0();
static word NoOpSameShapeProc←P60();
static void NoOpControlPointMoved←P120();
static void NoOpControlPointGet←P180();
static word NoOpControlPointCount←P240();
static void NoOpControlPointFieldSet←P300();
static word NoOpControlPointFieldGet←P360();
static void NoOpClosestControlPoint←P420();
static void NoOpClosestPointAndTangent←P480();
static void NoOpLineIntersection←P540();
static void NoOpCircleIntersection←P600();
static word NoOpAsSimpleCurve←P660();
static word NoOpAsPolyline←P720();
static void NoOpJointNormal←P780();
static void NoOpCPNormal←P840();
static void NoOpAddJoint←P900();
static void NoOpFileOut←P960();
static word BuildCircleClass←P1020();
static word CircleBoundBox←P1080();
static word CircleFileIn←P1140();
static void CircleEndPointMoved←P1200();
static word BuildDiscClass←P1260();
static word DiscFileIn←P1320();
static word BuildLineClass←P1380();
static void LineSetStrokeWidth←P1440();
static word MakeLine←P1500();
static word LineBoundBox←P1560();
static word LineTightBox←P1620();
static void UpdateLineBoundBox←P1680();
static word LineCopyData←P1740();
static void LineReverse←P1800();
static void LineBuildPath←P1860();
static void LineBuildPathTransform←P1920();
static void LineTransform←P1980();
static void LineEndPointMoved←P2040();
static word LineDescribe←P2100();
static word LineFileIn←P2160();
static word PointIsInBox←P2220();
static void LineClosestPoint←P2280();
static void LineClosestPointAndTangent←P2340();
static void LineLineIntersection←P2400();
static void LineCircleIntersection←P2460();
static word LineAsSimpleCurve←P2520();
static void LineJointNormal←P2580();
static void LineAddJoint←P2640();
static word BuildArcClass←P2700();
static void ArcSetStrokeWidth←P2760();
static word MakeArc←P2820();
static void ArcGetParams←P2880();
static word ArcBoundBox←P2940();
static word ArcTightBox←P3000();
static void UpdateTightBoxOfArc←P3060();
static void UpdateBoundBoxOfEdge←P3120();
static void UpdateBoundBoxOfArc←P3180();
static word ArcCopyData←P3240();
static void ArcReverse←P3300();
static void ArcTransform←P3360();
static void ArcEndPointMoved←P3420();
static void ArcControlPointMoved←P3480();
static void TransformEndPoints←P3540();
static void ArcBuildPath←P3600();
static void ArcBuildPathTransform←P3660();
static word ArcDescribe←P3720();
static void ArcFileOut←P3780();
static word ArcFileIn←P3840();
static void ArcFieldSet←P3900();
static word ArcFieldGet←P3960();
static void ArcControlPointGet←P4020();
static word ArcControlPointCount←P4080();
static void ArcClosestPoint←P4140();
static void ArcClosestControlPoint←P4200();
static word ArcAsSimpleCurve←P4260();
static word ArcAsPolyline←P4320();
static void ArcCPNormal←P4380();
static void ArcJointNormal←P4440();
static void ArcAddJoint←P4500();
static void Init←P4560();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\102\220\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\100\244\000\000"};
static struct {unsigned f; char r[4];} string3 = {65537, "\001\000\000"};
static struct {unsigned f; char r[4];} string4 = {131076, "\216\251\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\100\200\000\000"};
static struct {unsigned f; char r[28];} string6 = {1638425, "\006\011\000\001\004\001\024\001\040\001\100\124\001\100\130\001\100\134\001\100\140\001\100\144\001\000\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\043\211\212\366\300\343\003\307\242\100\164\000\000"};
static struct {unsigned f; char r[4];} string8 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\151\025\050\076\300\342\020\233\312\102\314\000\000"};
static struct {unsigned f; char r[4];} string10 = {131074, "\003\006\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\151\025\050\076\300\342\020\233\312\100\354\000\000"};
static struct {unsigned f; char r[16];} string12 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[44];} string13 = {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];} string14 = {131074, "\003\002\000"};
static struct {unsigned f; char r[8];} string15 = {262152, "Line\000\000\000"};
static struct {unsigned f; char r[4];} string16 = {196612, "Arc"};
static struct {unsigned f; char r[16];} string17 = {786448, "Straight Arc\000\000\000"};
static struct {unsigned f; char r[8];} string18 = {262152, "Disc\000\000\000"};
static struct {unsigned f; char r[8];} string19 = {393224, "Circle\000"};
static struct {unsigned f; char r[16];} string20 = {851984, "\257\300\151\025\050\076\300\342\020\233\312\100\164\000\000"};
static struct {unsigned f; char r[8];} string21 = {458759, "\006\001@L\004@\177"};
static struct {unsigned f; char r[16];} string22 = {851984, "\257\300\121\216\014\136\300\111\163\224\167\100\150\000\000"};
static struct {unsigned f; char r[16];} string23 = {851984, "\257\300\265\217\206\011\300\172\271\371\033\100\150\000\000"};
static struct {unsigned f; char r[16];} string24 = {851984, "\257\300IKM\275\300Y\0222&@h\000\000"};
static struct {unsigned f; char r[16];} string25 = {851984, "\257\300\236\155\220\261\300\040\017\026\014\100\150\000\000"};
static struct {unsigned f; char r[16];} string26 = {851984, "\257\300\045\215\147\016\300\153\043\150\276\100\150\000\000"};
static struct {unsigned f; char r[8];} string27 = {1195856741, "gment"};
static struct {unsigned f; char r[16];} string28 = {851984, "\257\300\043\211\212\366\300\343\003\307\242\100\150\000\000"};
static struct {unsigned f; char r[16];} string29 = {851984, "\257\300\104\154\010\164\300\126\073\363\036\100\150\000\000"};
static struct {unsigned f; char r[16];} string30 = {851984, "\257\300\074\177\166\242\300\203\113\217\044\100\150\000\000"};
static struct {unsigned f; char r[16];} string31 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"};
static struct {unsigned f; char r[16];} string32 = {851984, "\257\300\103\306\166\071\300\047\126\012\237\100\150\000\000"};
static struct {unsigned f; char r[16];} string33 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string34 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string35 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"};
static struct {
   word f0[26]; word f26; word f27; word f28; 
   word f29; word f30; word f31; word f32; 
   word f33; word f34; word f35; word f36; 
   word f37; word f38; word f39; word f40; 
   word f41; word f42; word f43; word f44; 
   word f45; word f46; word f47; word f48; 
   word f49; word f50; word f51; word f52; 
   word f53; word f54; word f55; word f56; 
   word f57; word f58; word f59; word f60; 
   word f61; word f62; word f63; word f64; 
   word f65; word f66; word f67; word f68; 
   word f69; word f70; word f71; word f72; 
   word f73; word f74; word f75; word f76; 
   word f77; word f78; word f79; word f80; 
   word f81; word f82; word f83; word f84; 
   word f85; word f86; word f87; word f88; 
   word f89; word f90; word f91; word f92; 
   word f93; word f94; word f95; word f96; 
   word f97; word f98; word f99; word f100; 
   word f101; word f102; word f103; word f104; 
   word f105; word f106; word f107; word f108; 
   word f109; word f110; word f111; word f112; 
   word f113; word f114; word f115; word f116; 
   word f117; word f118; word f119; word f120; 
   word f121; word f122; word f123; word f124; 
   word f125; word f126; word f127; word f128; 
   word f129; word f130; word f131; word f132; 
   word f133; word f134; word f135; word f136; 
   word f137; word f138; word f139; word f140; 
   word f141; word f142; word f143; word f144; 
   word f145; word f146; word f147; word f148; 
   word f149; word f150; word f151; word f152; 
   word f153; word f154; word f155; word f156; 
   word f157; word f158; word f159; word f160; 
   word f161; word f162; word f163; word f164; 
   word f165; word f166; word f167; word f168; 
   word f169; word f170; word f171; word f172; 
   word f173; word f174; word f175; word f176; 
   word f177; word f178; word f179[19]; 
   } globalframe = {
   {0}, (word) Init←P4560, 0, (word) ArcAddJoint←P4500, 
   0, (word) ArcJointNormal←P4440, 0, (word) ArcCPNormal←P4380, 
   0, (word) ArcAsPolyline←P4320, 0, (word) ArcAsSimpleCurve←P4260, 
   0, (word) ArcClosestControlPoint←P4200, 0, (word) ArcClosestPoint←P4140, 
   0, (word) ArcControlPointCount←P4080, 0, (word) ArcControlPointGet←P4020, 
   0, (word) ArcFieldGet←P3960, 0, (word) ArcFieldSet←P3900, 
   0, (word) ArcFileIn←P3840, 0, (word) ArcFileOut←P3780, 
   0, (word) ArcDescribe←P3720, 0, (word) ArcBuildPathTransform←P3660, 
   0, (word) ArcBuildPath←P3600, 0, (word) TransformEndPoints←P3540, 
   0, (word) ArcControlPointMoved←P3480, 0, (word) ArcEndPointMoved←P3420, 
   0, (word) ArcTransform←P3360, 0, (word) ArcReverse←P3300, 
   0, (word) ArcCopyData←P3240, 0, (word) UpdateBoundBoxOfArc←P3180, 
   0, (word) UpdateBoundBoxOfEdge←P3120, 0, (word) UpdateTightBoxOfArc←P3060, 
   0, (word) ArcTightBox←P3000, 0, (word) ArcBoundBox←P2940, 
   0, (word) ArcGetParams←P2880, 0, (word) MakeArc←P2820, 
   0, (word) ArcSetStrokeWidth←P2760, 0, (word) BuildArcClass←P2700, 
   0, (word) LineAddJoint←P2640, 0, (word) LineJointNormal←P2580, 
   0, (word) LineAsSimpleCurve←P2520, 0, (word) LineCircleIntersection←P2460, 
   0, (word) LineLineIntersection←P2400, 0, (word) LineClosestPointAndTangent←P2340, 
   0, (word) LineClosestPoint←P2280, 0, (word) PointIsInBox←P2220, 
   0, (word) LineFileIn←P2160, 0, (word) LineDescribe←P2100, 
   0, (word) LineEndPointMoved←P2040, 0, (word) LineTransform←P1980, 
   0, (word) LineBuildPathTransform←P1920, 0, (word) LineBuildPath←P1860, 
   0, (word) LineReverse←P1800, 0, (word) LineCopyData←P1740, 
   0, (word) UpdateLineBoundBox←P1680, 0, (word) LineTightBox←P1620, 
   0, (word) LineBoundBox←P1560, 0, (word) MakeLine←P1500, 
   0, (word) LineSetStrokeWidth←P1440, 0, (word) BuildLineClass←P1380, 
   0, (word) DiscFileIn←P1320, 0, (word) BuildDiscClass←P1260, 
   0, (word) CircleEndPointMoved←P1200, 0, (word) CircleFileIn←P1140, 
   0, (word) CircleBoundBox←P1080, 0, (word) BuildCircleClass←P1020, 
   0, (word) NoOpFileOut←P960, 0, (word) NoOpAddJoint←P900, 
   0, (word) NoOpCPNormal←P840, 0, (word) NoOpJointNormal←P780, 
   0, (word) NoOpAsPolyline←P720, 0, (word) NoOpAsSimpleCurve←P660, 
   0, (word) NoOpCircleIntersection←P600, 0, (word) NoOpLineIntersection←P540, 
   0, (word) NoOpClosestPointAndTangent←P480, 0, (word) NoOpClosestControlPoint←P420, 
   0, (word) NoOpControlPointFieldGet←P360, 0, (word) NoOpControlPointFieldSet←P300, 
   0, (word) NoOpControlPointCount←P240, 0, (word) NoOpControlPointGet←P180, 
   0, (word) NoOpControlPointMoved←P120, 0, (word) NoOpSameShapeProc←P60, 
   0, (word) GGSegmentImplB←P0, {0}
   };

static void NoName←Q4860()
   {
   register ptr gf←c0616 =  (ptr) &globalframe;
   word var←c49212;
   (* (( (ptr) gf←c0616)+7) ) = (word) XR←GetTypeIndexS((word) (&string1));
   (* (( (ptr) gf←c0616)+8) ) = (word) XR←GetTypeIndex((word) &string2, 0, (word) &string3);
   (* (( (ptr) gf←c0616)+9) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string3);
   (* (( (ptr) gf←c0616)+12) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
   (* (( (ptr) gf←c0616)+13) ) = (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8);
   (* (( (ptr) gf←c0616)+14) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
   (* (( (ptr) gf←c0616)+15) ) = (word) XR←GetTypeIndex((word) &string11, 0, (word) &string3);
   (* (( (ptr) gf←c0616)+17) ) = (word) XR←GetTypeIndex((word) &string12, 0, (word) &string3);
   (* (( (ptr) gf←c0616)+18) ) = (word) XR←GetTypeIndex((word) &string13, 0, (word) &string14);
   (*  (ptr) (( (bPt) gf←c0616)+76) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0616)+17) ), (word) &string15);
   (*  (ptr) (( (bPt) gf←c0616)+80) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0616)+9) ), (word) &string16);
   (*  (ptr) (( (bPt) gf←c0616)+84) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0616)+9) ), (word) &string15);
   (*  (ptr) (( (bPt) gf←c0616)+88) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0616)+17) ), (word) &string17);
   (*  (ptr) (( (bPt) gf←c0616)+92) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0616)+17) ), (word) &string16);
   (*  (ptr) (( (bPt) gf←c0616)+96) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0616)+9) ), (word) &string18);
   (*  (ptr) (( (bPt) gf←c0616)+100) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0616)+9) ), (word) &string19);
   (void) XR←DeclareGlobalFrame((word) "GGSegmentImplB", &globalframe, (word) XR←GetTypeIndex((word) &string20, 0, (word) &string21)
      , (word) (( (bPt) gf←c0616)+712)/* var←c45596 */ );
   var←c49212 = (word) XR←ImportInterface((word) "Angles2d", (word) XR←GetTypeIndexS((word) (&string22)), 11);
   (* (( (ptr) gf←c0616)+191)/* var←c47548 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 67897603);
   var←c49212 = (word) XR←ImportInterface((word) "GGBoundBox", (word) XR←GetTypeIndexS((word) (&string23)), 24);
   (* (( (ptr) gf←c0616)+186)/* var←c46172 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 789250);
   (void) XR←ImportProcS(var←c49212, 527618);
   (void) XR←ImportProcS(var←c49212, 1314309);
   (void) XR←ImportProcS(var←c49212, 68681990);
   var←c49212 = (word) XR←ImportInterface((word) "GGCircles", (word) XR←GetTypeIndexS((word) (&string24)), 29);
   (* (( (ptr) gf←c0616)+190)/* var←c47100 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 135010562);
   (void) XR←ImportProcS(var←c49212, 1839876);
   (void) XR←ImportProcS(var←c49212, 267521);
   (void) XR←ImportProcS(var←c49212, 528898);
   (void) XR←ImportProcS(var←c49212, 67113216);
   (void) XR←ImportProcS(var←c49212, 68686851);
   (void) XR←ImportProcS(var←c49212, 403179266);
   var←c49212 = (word) XR←ImportInterface((word) "GGParseIn", (word) XR←GetTypeIndexS((word) (&string25)), 26);
   (* (( (ptr) gf←c0616)+194)/* var←c48252 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 134483713);
   var←c49212 = (word) XR←ImportInterface((word) "GGParseOut", (word) XR←GetTypeIndexS((word) (&string26)), 15);
   (* (( (ptr) gf←c0616)+193)/* var←c48220 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 787714);
   var←c49212 = (word) XR←ImportInterface((word) &string27, (word) XR←GetTypeIndexS((word) (&string28)), 47);
   (* (( (ptr) gf←c0616)+185)/* var←c46108 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 267521);
   (void) XR←ImportProcS(var←c49212, 266753);
   (void) XR←ImportProcS(var←c49212, 134752258);
   (void) XR←ImportProcS(var←c49212, 134752002);
   (void) XR←ImportProcS(var←c49212, 336602627);
   (void) XR←ImportProcS(var←c49212, 67374337);
   (void) XR←ImportProcS(var←c49212, 135801860);
   (void) XR←ImportProcS(var←c49212, 67643906);
   (void) XR←ImportProcS(var←c49212, 403711235);
   (void) XR←ImportProcS(var←c49212, 67379713);
   (void) XR←ImportProcS(var←c49212, 134750466);
   (void) XR←ImportProcS(var←c49212, 67904515);
   (void) XR←ImportProcS(var←c49212, 1057540);
   (void) XR←ImportProcS(var←c49212, 536066);
   (void) XR←ImportProcS(var←c49212, 794627);
   (void) XR←ImportProcS(var←c49212, 67641090);
   (void) XR←ImportProcS(var←c49212, 67376129);
   var←c49212 = (word) XR←ImportInterface((word) "GGTransform", (word) XR←GetTypeIndexS((word) (&string29)), 7);
   (* (( (ptr) gf←c0616)+189)/* var←c46844 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 135004418);
   var←c49212 = (word) XR←ImportInterface((word) "Imager", (word) XR←GetTypeIndexS((word) (&string30)), 84);
   (* (( (ptr) gf←c0616)+187)/* var←c46268 */  ) = var←c49212;
   var←c49212 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string31)), 55);
   (* (( (ptr) gf←c0616)+192)/* var←c47964 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 67372289);
   (void) XR←ImportProcS(var←c49212, 135013122);
   var←c49212 = (word) XR←ImportInterface((word) "Lines2d", (word) XR←GetTypeIndexS((word) (&string32)), 50);
   (* (( (ptr) gf←c0616)+188)/* var←c46588 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 201858818);
   (void) XR←ImportProcS(var←c49212, 134488321);
   (void) XR←ImportProcS(var←c49212, 135014914);
   (void) XR←ImportProcS(var←c49212, 1317123);
   (void) XR←ImportProcS(var←c49212, 68163330);
   var←c49212 = (word) XR←ImportInterface((word) "Real", (word) XR←GetTypeIndexS((word) (&string33)), 11);
   (* (( (ptr) gf←c0616)+196)/* var←c48508 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 67371777);
   var←c49212 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string34)), 36);
   (* (( (ptr) gf←c0616)+195)/* var←c48476 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 67373057);
   (void) XR←ImportProcS(var←c49212, 67372545);
   (void) XR←ImportProcS(var←c49212, 67372289);
   (void) XR←ImportProcS(var←c49212, 67636226);
   var←c49212 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string35)), 21);
   (* (( (ptr) gf←c0616)+184)/* var←c45788 */  ) = var←c49212;
   (void) XR←ImportProcS(var←c49212, 68158210);
   (void) XR←ImportProcS(var←c49212, 135004418);
   (void) XR←ImportProcS(var←c49212, 134744321);
   (void) XR←ImportProcS(var←c49212, 135268098);
   (void) XR←ImportProcS(var←c49212, 67633665);
   (void) XR←ImportProcS(var←c49212, 135267842);
   (void) XR←ImportProcS(var←c49212, 68158722);
   (void) XR←ImportProcS(var←c49212, 135270914);
   (void) XR←ImportProcS(var←c49212, 134484993);
   (void) XR←ImportProcS(var←c49212, 134484737);
   (void) XR←ImportProcS(var←c49212, 68161282);
   var←c49212 = (word) XR←ExportInterface((word) &string27, (word) XR←GetTypeIndexS((word) (&string28)), 47);
   (* (( (ptr) gf←c0616)+197)/* var←c49244 */  ) = var←c49212;
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+512)/* var←c44796 */ , 68419843);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+336)/* var←c44092 */ , 68944900);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+328)/* var←c44060 */ , 402917889);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+704)/* var←c45564 */ , 67641090);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+696)/* var←c45532 */ , 794627);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+688)/* var←c45500 */ , 134750466);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+680)/* var←c45468 */ , 67379713);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+672)/* var←c45436 */ , 1057540);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+664)/* var←c45404 */ , 67904515);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+656)/* var←c45372 */ , 403711235);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+648)/* var←c45340 */ , 336602627);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+640)/* var←c45308 */ , 134752002);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+632)/* var←c45276 */ , 134752258);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+624)/* var←c45244 */ , 67905794);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+616)/* var←c45212 */ , 67643906);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+608)/* var←c45180 */ , 270019332);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+600)/* var←c45148 */ , 135801860);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+592)/* var←c45116 */ , 135015682);
   (void) XR←ExportProcS(var←c49212, (word) (( (bPt) gf←c0616)+584)/* var←c45084 */ , 536066);
   }

static void GGSegmentImplB←P0(formal←c0100, formal←c099)
   word formal←c0100;
   word formal←c099;
   {
   register ptr gf←c49276 =  (ptr) &globalframe;
   /* GGSegmentImplB: */ 
SOURCE(274, 24356)
SOURCE(1523, 30)
   (* (( (ptr) gf←c49276)+4)/* defaultStrokeWidth←v4092 */  ) = (*  (ptr) &fc36 );
SOURCE(1555, 35)
   (* (( (ptr) gf←c49276)+5)/* defaultStrokeEnd←v4120 */  ) = 2;
SOURCE(8941, 20)
   (* (( (ptr) gf←c49276)+6)/* useBBox←v5240 */  ) = 1;
SOURCE(24624, 6)
   (void) Init←P4560();
   }

static word NoOpSameShapeProc←P60(seg1←v25068, seg2←v25096)
   word seg1←v25068;
   word seg2←v25096;
   {
   word var←c25140;
   /* NoOpSameShapeProc: */ 
SOURCE(1593, 71)
SOURCE(1652, 12)
   return(1);
   }

static void NoOpControlPointMoved←P120(seg←v25200, transform←v25228, controlPointNum←v25256)
   word seg←v25200;
   word transform←v25228;
   word controlPointNum←v25256;
   {
   /* NoOpControlPointMoved: */ 
   }

static void NoOpControlPointGet←P180(formal←c0110, seg←v25316, controlPointNum←v25344)
   word formal←c0110;
   word seg←v25316;
   word controlPointNum←v25344;
   {
   W2 point←v25388;
   /* NoOpControlPointGet: */ 
SOURCE(1830, 86)
SOURCE(1896, 20)
   point←v25388.f0 = (*  (ptr) &fc37 );
   point←v25388.f1 = (*  (ptr) &fc37 );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0110 ) = point←v25388;
   return;
   }

static word NoOpControlPointCount←P240(seg←v25448)
   word seg←v25448;
   {
   word controlPointCount←v25492;
   /* NoOpControlPointCount: */ 
SOURCE(1919, 91)
SOURCE(1989, 21)
   controlPointCount←v25492 = 0;
SOURCE(1919, 91)
   return(controlPointCount←v25492);
   }

static void NoOpControlPointFieldSet←P300(seg←v25552, controlPointNum←v25580, selected←v25608, selectClass←v25636)
   word seg←v25552;
   word controlPointNum←v25580;
   word selected←v25608;
   word selectClass←v25636;
   {
   /* NoOpControlPointFieldSet: */ 
   }

static word NoOpControlPointFieldGet←P360(seg←v25696, controlPointNum←v25724, selectClass←v25752)
   word seg←v25696;
   word controlPointNum←v25724;
   word selectClass←v25752;
   {
   word selected←v25796;
   /* NoOpControlPointFieldGet: */ 
SOURCE(2092, 75)
SOURCE(2169, 5)
   (void) XR←RaiseUnnamedError();
   }

static void NoOpClosestControlPoint←P420(formal←c0128, seg←v25856, testPoint←v25884, tolerance←v25912)
   word formal←c0128;
   word seg←v25856;
   W2 testPoint←v25884;
   word tolerance←v25912;
   {
   W2 point←v25956;
   W2 normal←v25984;
   word controlPointNum←v26012;
   word success←v26040;
   /* NoOpClosestControlPoint: */ 
SOURCE(2179, 148)
SOURCE(2254, 15)
   normal←v25984.f0 = (*  (ptr) &fc37 );
   normal←v25984.f1 = (*  (ptr) &fc38 );
SOURCE(2271, 18)
   point←v25956.f0 = (*  (ptr) &fc37 );
   point←v25956.f1 = (*  (ptr) &fc37 );
SOURCE(2291, 19)
   controlPointNum←v26012 = 0;
SOURCE(2312, 15)
   success←v26040 = 0;
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0128 ) = point←v25956;
   (*  (W2Pt) (( (ptr) formal←c0128)+2) ) = normal←v25984;
   (* (( (ptr) formal←c0128)+4) ) = controlPointNum←v26012;
   (* (( (ptr) formal←c0128)+5) ) = success←v26040;
   return;
   }

static void NoOpClosestPointAndTangent←P480(formal←c0135, seg←v26100, testPoint←v26128, tolerance←v26156)
   word formal←c0135;
   word seg←v26100;
   W2 testPoint←v26128;
   word tolerance←v26156;
   {
   W2 point←v26200;
   W2 tangent←v26228;
   word success←v26256;
   /* NoOpClosestPointAndTangent: */ 
SOURCE(2332, 134)
SOURCE(2413, 18)
   point←v26200.f0 = (*  (ptr) &fc37 );
   point←v26200.f1 = (*  (ptr) &fc37 );
SOURCE(2433, 16)
   tangent←v26228.f0 = (*  (ptr) &fc37 );
   tangent←v26228.f1 = (*  (ptr) &fc38 );
SOURCE(2451, 15)
   success←v26256 = 0;
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0135 ) = point←v26200;
   (*  (W2Pt) (( (ptr) formal←c0135)+2) ) = tangent←v26228;
   (* (( (ptr) formal←c0135)+4) ) = success←v26256;
   return;
   }

static void NoOpLineIntersection←P540(formal←c0140, seg←v26316, line←v26344)
   word formal←c0140;
   word seg←v26316;
   word line←v26344;
   {
   word points←v26388;
   word pointCount←v26416;
   /* NoOpLineIntersection: */ 
SOURCE(2471, 97)
SOURCE(2471, 97)
   points←v26388 = 0;
SOURCE(2540, 12)
   points←v26388 = 0;
SOURCE(2554, 14)
   pointCount←v26416 = 0;
   /* removed tail goto */ 
   (*  (ptr) formal←c0140 ) = points←v26388;
   (* (( (ptr) formal←c0140)+1) ) = pointCount←v26416;
   return;
   }

static void NoOpCircleIntersection←P600(formal←c0145, seg←v26476, circle←v26504)
   word formal←c0145;
   word seg←v26476;
   word circle←v26504;
   {
   word points←v26548;
   word pointCount←v26576;
   /* NoOpCircleIntersection: */ 
SOURCE(2573, 101)
SOURCE(2573, 101)
   points←v26548 = 0;
SOURCE(2646, 12)
   points←v26548 = 0;
SOURCE(2660, 14)
   pointCount←v26576 = 0;
   /* removed tail goto */ 
   (*  (ptr) formal←c0145 ) = points←v26548;
   (* (( (ptr) formal←c0145)+1) ) = pointCount←v26576;
   return;
   }

static word NoOpAsSimpleCurve←P660(seg←v26636, point←v26664)
   word seg←v26636;
   W2 point←v26664;
   {
   word simpleCurve←v26708;
   /* NoOpAsSimpleCurve: */ 
SOURCE(2679, 80)
SOURCE(2679, 80)
   simpleCurve←v26708 = 0;
SOURCE(2742, 17)
   simpleCurve←v26708 = 0;
SOURCE(2679, 80)
   return(simpleCurve←v26708);
   }

static word NoOpAsPolyline←P720(seg←v26768, tolerance←v26796)
   word seg←v26768;
   word tolerance←v26796;
   {
   register ptr gf←c49308 =  (ptr) &globalframe;
   word polyline←v26840;
   /* NoOpAsPolyline: */ 
SOURCE(2764, 156)
SOURCE(2764, 156)
   polyline←v26840 = 0;
SOURCE(2821, 34)
   {
      word var←c45724;
      var←c45724 = XR←NewObject(24, (* (( (ptr) gf←c49308)+7) ));
      (* (( (ptr) var←c45724)+1) ) = 2;
      polyline←v26840 = var←c45724;
      };
SOURCE(2857, 19)
   (*  (ptr) polyline←v26840 ) = 2;
SOURCE(2878, 20)
   {
      word limit39;
      (* (( (W2Pt) (( (ptr) polyline←v26840)+2))+(
            limit39 = (* (( (ptr) polyline←v26840)+1) ),
            BCK(0, limit39)
            )) ) = (*  (W2Pt) (( (ptr) seg←v26768)+9) );
      };
SOURCE(2900, 20)
   {
      word limit40;
      (* (( (W2Pt) (( (ptr) polyline←v26840)+2))+(
            limit40 = (* (( (ptr) polyline←v26840)+1) ),
            BCK(1, limit40)
            )) ) = (*  (W2Pt) (( (ptr) seg←v26768)+11) );
      };
SOURCE(2764, 156)
   return(polyline←v26840);
   }

static void NoOpJointNormal←P780(formal←c0159, seg←v26900, joint←v26928, point←v26956, hi←v26984)
   word formal←c0159;
   word seg←v26900;
   W2 joint←v26928;
   W2 point←v26956;
   word hi←v26984;
   {
   W2 normal←v27028;
   W2 tangent←v27056;
   /* NoOpJointNormal: */ 
SOURCE(2925, 92)
SOURCE(2984, 15)
   normal←v27028.f0 = (*  (ptr) &fc37 );
   normal←v27028.f1 = (*  (ptr) &fc38 );
SOURCE(3001, 16)
   tangent←v27056.f0 = (*  (ptr) &fc37 );
   tangent←v27056.f1 = (*  (ptr) &fc38 );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0159 ) = normal←v27028;
   (*  (W2Pt) (( (ptr) formal←c0159)+2) ) = tangent←v27056;
   return;
   }

static void NoOpCPNormal←P840(formal←c0165, seg←v27116, controlPointNum←v27144, cPoint←v27172, testPoint←v27200)
   word formal←c0165;
   word seg←v27116;
   word controlPointNum←v27144;
   W2 cPoint←v27172;
   W2 testPoint←v27200;
   {
   W2 normal←v27244;
   /* NoOpCPNormal: */ 
SOURCE(3022, 68)
SOURCE(3075, 15)
   normal←v27244.f0 = (*  (ptr) &fc37 );
   normal←v27244.f1 = (*  (ptr) &fc38 );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0165 ) = normal←v27244;
   return;
   }

static void NoOpAddJoint←P900(formal←c0170, seg←v27304, pos←v27332)
   word formal←c0170;
   word seg←v27304;
   W2 pos←v27332;
   {
   word seg1←v27376;
   word seg2←v27404;
   /* NoOpAddJoint: */ 
SOURCE(3095, 51)
SOURCE(3095, 51)
   seg1←v27376 = 0;
SOURCE(3095, 51)
   seg2←v27404 = 0;
SOURCE(3148, 5)
   (void) XR←RaiseUnnamedError();
   }

static void NoOpFileOut←P960(seg←v27464, f←v27492)
   word seg←v27464;
   word f←v27492;
   {
   /* NoOpFileOut: */ 
   }

static word BuildCircleClass←P1020()
   {
   register ptr gf←c49340 =  (ptr) &globalframe;
   word circleClass←v6520;
   /* BuildCircleClass: */ 
SOURCE(3212, 204)
SOURCE(3212, 204)
   circleClass←v6520 = 0;
SOURCE(3278, 138)
   {
      word var←c45756;
      var←c45756 = XR←NewObject(116, (* (( (ptr) gf←c49340)+8) ));
      (*  (ptr) var←c45756 ) = (* (( (ptr) gf←c49340)+25) );
      (* (( (ptr) var←c45756)+1) ) = (word) (( (bPt) gf←c49340)+568)/* var←c45020 */ ;
      (* (( (ptr) var←c45756)+9) ) = (word) (( (bPt) gf←c49340)+552)/* var←c44956 */ ;
      (* (( (ptr) var←c45756)+13) ) = (word) (( (bPt) gf←c49340)+560)/* var←c44988 */ ;
      circleClass←v6520 = var←c45756;
      };
SOURCE(3212, 204)
   return(circleClass←v6520);
   }

static word CircleBoundBox←P1080(seg←v6580)
   word seg←v6580;
   {
   register ptr gf←c49372 =  (ptr) &globalframe;
   word bBox←v6624;
   word radius←v15020;
   word cpHalf←v15048;
   /* CircleBoundBox: */ 
SOURCE(3422, 326)
SOURCE(3422, 326)
   bBox←v6624 = 0;
SOURCE(3501, 45)
   {
      word x42;
      word x44;
      *(float*)&cpHalf←v15048 = (
         x42 = (*  (ptr) &fc41 ),  *(float*)&x42
         ) + (
         x44 = (*  (ptr) &fc43 ),  *(float*)&x44
         );
      };
SOURCE(3548, 43)
   {
      word pd45;
      pd45 = (* (( (ptr) (* (( (ptr) gf←c49372)+184)/* var←c45788 */  ))+19) );
      radius←v15020 = (word) ( *( (fPt) ((*  (ptr) pd45 ))))((*  (W2Pt) (( (ptr) seg←v6580)+9) ), (*  (W2Pt) (( (ptr) seg←v6580)+11)
          ), pd45);
      };
SOURCE(3593, 138)
   {
      word var←c45820;
      word var←c45884;
      word var←c45948;
      word var←c46012;
      word var←c46044;
      {
         word x46;
         word x47;
         word x48;
         *(float*)&var←c45820 = ((
            x46 = (* (( (ptr) seg←v6580)+9) ),  *(float*)&x46
            ) - (
            x47 = radius←v15020,  *(float*)&x47
            )) - (
            x48 = cpHalf←v15048,  *(float*)&x48
            );
         };
      {
         word x49;
         word x50;
         word x51;
         *(float*)&var←c45884 = ((
            x49 = (* (( (ptr) seg←v6580)+10) ),  *(float*)&x49
            ) - (
            x50 = radius←v15020,  *(float*)&x50
            )) - (
            x51 = cpHalf←v15048,  *(float*)&x51
            );
         };
      {
         word x52;
         word x53;
         word x54;
         *(float*)&var←c45948 = ((
            x52 = (* (( (ptr) seg←v6580)+9) ),  *(float*)&x52
            ) + (
            x53 = radius←v15020,  *(float*)&x53
            )) + (
            x54 = cpHalf←v15048,  *(float*)&x54
            );
         };
      {
         word x55;
         word x56;
         word x57;
         *(float*)&var←c46012 = ((
            x55 = (* (( (ptr) seg←v6580)+10) ),  *(float*)&x55
            ) + (
            x56 = radius←v15020,  *(float*)&x56
            )) + (
            x57 = cpHalf←v15048,  *(float*)&x57
            );
         };
      var←c46044 = (* (( (ptr) seg←v6580)+21) );
      (*  (ptr) var←c46044 ) = var←c45820;
      (* (( (ptr) var←c46044)+1) ) = var←c45884;
      (* (( (ptr) var←c46044)+2) ) = var←c45948;
      (* (( (ptr) var←c46044)+3) ) = var←c46012;
      (* (( (ptr) var←c46044)+4) ) = 0;
      (* (( (ptr) var←c46044)+5) ) = 0;
      };
SOURCE(3733, 15)
   bBox←v6624 = (* (( (ptr) seg←v6580)+21) );
SOURCE(3422, 326)
   return(bBox←v6624);
   }

static word CircleFileIn←P1140(f←v6684, loPoint←v6712, hiPoint←v6740, version←v6768)
   word f←v6684;
   W2 loPoint←v6712;
   W2 hiPoint←v6740;
   word version←v6768;
   {
   register ptr gf←c49404 =  (ptr) &globalframe;
   word seg←v6812;
   /* CircleFileIn: */ 
SOURCE(3754, 409)
SOURCE(3754, 409)
   seg←v6812 = 0;
SOURCE(3855, 278)
   {
      word var←c46076;
      word var←c46140;
      word var←c46204;
      word var←c46236;
      {
         word pd58;
         pd58 = (* (( (ptr) (* (( (ptr) gf←c49404)+185)/* var←c46108 */  ))+24) );
         var←c46076 = (word) ( *( (fPt) ((*  (ptr) pd58 ))))((* ((( (ptr) gf←c49404)+25)) ), pd58);
         };
      {
         word pd59;
         pd59 = (* (( (ptr) (* (( (ptr) gf←c49404)+186)/* var←c46172 */  ))+5) );
         var←c46140 = (word) ( *( (fPt) ((*  (ptr) pd59 ))))((*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), 0, 0, pd59)
         ;
         };
      {
         word pd60;
         pd60 = (* (( (ptr) (* (( (ptr) gf←c49404)+186)/* var←c46172 */  ))+5) );
         var←c46204 = (word) ( *( (fPt) ((*  (ptr) pd60 ))))((*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), 0, 0, pd60)
         ;
         };
      var←c46236 = XR←NewObject(104, (* (( (ptr) gf←c49404)+12) ));
      (*  (ptr) var←c46236 ) = var←c46076;
      (* (( (ptr) var←c46236)+2) ) = (*  (ptr) &fc43 );
      (* (( (ptr) var←c46236)+3) ) = 2;
      (* (( (ptr) var←c46236)+6) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46236)+7) ) = (*  (ptr) &fc38 );
      (* (( (ptr) var←c46236)+8) ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c49404)+187)/* var←c46268 */  ))+54) ) );
      (*  (W2Pt) (( (ptr) var←c46236)+9) ) = loPoint←v6712;
      (*  (W2Pt) (( (ptr) var←c46236)+11) ) = hiPoint←v6740;
      (* (( (ptr) var←c46236)+13) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46236)+14) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46236)+15) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46236)+16) ) = (*  (ptr) &fc37 );
      (*  (W4Pt) (( (ptr) var←c46236)+17) ) = (*  (W4Pt) (( (ptr) gf←c49404)+180)/* var←c45660 */  );
      (* (( (ptr) var←c46236)+21) ) = var←c46140;
      (* (( (ptr) var←c46236)+22) ) = var←c46204;
      seg←v6812 = var←c46236;
      };
SOURCE(4135, 28)
   {
      word var←c46300;
      word pd61;
      pd61 = (* (( (ptr) (*  (ptr) seg←v6812 ))+1) );
      var←c46300 = (word) ( *( (fPt) ((*  (ptr) pd61 ))))(seg←v6812, pd61);
      };
SOURCE(3754, 409)
   return(seg←v6812);
   }

static void CircleEndPointMoved←P1200(seg←v6872, lo←v6900, newPoint←v6928)
   word seg←v6872;
   word lo←v6900;
   W2 newPoint←v6928;
   {
   /* CircleEndPointMoved: */ 
   }

static word BuildDiscClass←P1260()
   {
   register ptr gf←c49436 =  (ptr) &globalframe;
   word discClass←v6988;
   /* BuildDiscClass: */ 
SOURCE(4245, 194)
SOURCE(4245, 194)
   discClass←v6988 = 0;
SOURCE(4307, 132)
   {
      word var←c46332;
      var←c46332 = XR←NewObject(116, (* (( (ptr) gf←c49436)+8) ));
      (*  (ptr) var←c46332 ) = (* (( (ptr) gf←c49436)+24) );
      (* (( (ptr) var←c46332)+1) ) = (word) (( (bPt) gf←c49436)+568)/* var←c45020 */ ;
      (* (( (ptr) var←c46332)+9) ) = (word) (( (bPt) gf←c49436)+552)/* var←c44956 */ ;
      (* (( (ptr) var←c46332)+13) ) = (word) (( (bPt) gf←c49436)+536)/* var←c44892 */ ;
      discClass←v6988 = var←c46332;
      };
SOURCE(4245, 194)
   return(discClass←v6988);
   }

static word DiscFileIn←P1320(f←v7048, loPoint←v7076, hiPoint←v7104, version←v7132)
   word f←v7048;
   W2 loPoint←v7076;
   W2 hiPoint←v7104;
   word version←v7132;
   {
   register ptr gf←c49468 =  (ptr) &globalframe;
   word seg←v7176;
   /* DiscFileIn: */ 
SOURCE(4445, 459)
SOURCE(4445, 459)
   seg←v7176 = 0;
SOURCE(4544, 330)
   {
      word var←c46364;
      word var←c46396;
      word var←c46428;
      word var←c46460;
      {
         word pd62;
         pd62 = (* (( (ptr) (* (( (ptr) gf←c49468)+185)/* var←c46108 */  ))+24) );
         var←c46364 = (word) ( *( (fPt) ((*  (ptr) pd62 ))))((* ((( (ptr) gf←c49468)+24)) ), pd62);
         };
      {
         word pd63;
         pd63 = (* (( (ptr) (* (( (ptr) gf←c49468)+186)/* var←c46172 */  ))+5) );
         var←c46396 = (word) ( *( (fPt) ((*  (ptr) pd63 ))))((*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), 0, 0, pd63)
         ;
         };
      {
         word pd64;
         pd64 = (* (( (ptr) (* (( (ptr) gf←c49468)+186)/* var←c46172 */  ))+5) );
         var←c46428 = (word) ( *( (fPt) ((*  (ptr) pd64 ))))((*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), 0, 0, pd64)
         ;
         };
      var←c46460 = XR←NewObject(104, (* (( (ptr) gf←c49468)+12) ));
      (*  (ptr) var←c46460 ) = var←c46364;
      (* (( (ptr) var←c46460)+2) ) = (*  (ptr) &fc43 );
      (* (( (ptr) var←c46460)+3) ) = 2;
      (* (( (ptr) var←c46460)+6) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46460)+7) ) = (*  (ptr) &fc38 );
      (* (( (ptr) var←c46460)+8) ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c49468)+187)/* var←c46268 */  ))+54) ) );
      (*  (W2Pt) (( (ptr) var←c46460)+9) ) = loPoint←v7076;
      (*  (W2Pt) (( (ptr) var←c46460)+11) ) = hiPoint←v7104;
      (* (( (ptr) var←c46460)+13) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46460)+14) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46460)+15) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46460)+16) ) = (*  (ptr) &fc37 );
      (*  (W4Pt) (( (ptr) var←c46460)+17) ) = (*  (W4Pt) (( (ptr) gf←c49468)+180)/* var←c45660 */  );
      (* (( (ptr) var←c46460)+21) ) = var←c46396;
      (* (( (ptr) var←c46460)+22) ) = var←c46428;
      seg←v7176 = var←c46460;
      };
SOURCE(4876, 28)
   {
      word var←c46492;
      word pd65;
      pd65 = (* (( (ptr) (*  (ptr) seg←v7176 ))+1) );
      var←c46492 = (word) ( *( (fPt) ((*  (ptr) pd65 ))))(seg←v7176, pd65);
      };
SOURCE(4445, 459)
   return(seg←v7176);
   }

static word BuildLineClass←P1380()
   {
   register ptr gf←c49500 =  (ptr) &globalframe;
   word lineClass←v7292;
   /* BuildLineClass: */ 
SOURCE(5040, 1066)
SOURCE(5040, 1066)
   lineClass←v7292 = 0;
SOURCE(5118, 988)
   {
      word var←c46524;
      var←c46524 = XR←NewObject(116, (* (( (ptr) gf←c49500)+8) ));
      (*  (ptr) var←c46524 ) = (* (( (ptr) gf←c49500)+21) );
      (* (( (ptr) var←c46524)+1) ) = (word) (( (bPt) gf←c49500)+504)/* var←c44764 */ ;
      (* (( (ptr) var←c46524)+2) ) = (word) (( (bPt) gf←c49500)+496)/* var←c44732 */ ;
      (* (( (ptr) var←c46524)+3) ) = (word) (( (bPt) gf←c49500)+480)/* var←c44668 */ ;
      (* (( (ptr) var←c46524)+4) ) = (word) (( (bPt) gf←c49500)+472)/* var←c44636 */ ;
      (* (( (ptr) var←c46524)+5) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49500)+185)/* var←c46108 */  ))+35) );
      (* (( (ptr) var←c46524)+6) ) = (word) (( (bPt) gf←c49500)+464)/* var←c44604 */ ;
      (* (( (ptr) var←c46524)+7) ) = (word) (( (bPt) gf←c49500)+456)/* var←c44572 */ ;
      (* (( (ptr) var←c46524)+8) ) = (word) (( (bPt) gf←c49500)+448)/* var←c44540 */ ;
      (* (( (ptr) var←c46524)+9) ) = (word) (( (bPt) gf←c49500)+440)/* var←c44508 */ ;
      (* (( (ptr) var←c46524)+10) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49500)+185)/* var←c46108 */  ))+36) );
      (* (( (ptr) var←c46524)+11) ) = (word) (( (bPt) gf←c49500)+432)/* var←c44476 */ ;
      (* (( (ptr) var←c46524)+12) ) = (* (( (ptr) (* (( (ptr) gf←c49500)+185)/* var←c46108 */  ))+50) );
      (* (( (ptr) var←c46524)+13) ) = (word) (( (bPt) gf←c49500)+424)/* var←c44444 */ ;
      (* (( (ptr) var←c46524)+14) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49500)+185)/* var←c46108 */  ))+39) );
      (* (( (ptr) var←c46524)+15) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49500)+185)/* var←c46108 */  ))+40) );
      (* (( (ptr) var←c46524)+16) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49500)+185)/* var←c46108 */  ))+37) );
      (* (( (ptr) var←c46524)+17) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49500)+185)/* var←c46108 */  ))+38) );
      (* (( (ptr) var←c46524)+18) ) = (word) (( (bPt) gf←c49500)+408)/* var←c44380 */ ;
      (* (( (ptr) var←c46524)+19) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49500)+185)/* var←c46108 */  ))+41) );
      (* (( (ptr) var←c46524)+20) ) = (word) (( (bPt) gf←c49500)+400)/* var←c44348 */ ;
      (* (( (ptr) var←c46524)+21) ) = (word) (( (bPt) gf←c49500)+392)/* var←c44316 */ ;
      (* (( (ptr) var←c46524)+22) ) = (word) (( (bPt) gf←c49500)+384)/* var←c44284 */ ;
      (* (( (ptr) var←c46524)+23) ) = (word) (( (bPt) gf←c49500)+376)/* var←c44252 */ ;
      (* (( (ptr) var←c46524)+24) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49500)+185)/* var←c46108 */  ))+46) );
      (* (( (ptr) var←c46524)+25) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49500)+185)/* var←c46108 */  ))+48) );
      (* (( (ptr) var←c46524)+26) ) = (word) (( (bPt) gf←c49500)+368)/* var←c44220 */ ;
      (* (( (ptr) var←c46524)+27) ) = (word) (( (bPt) gf←c49500)+360)/* var←c44188 */ ;
      (* (( (ptr) var←c46524)+28) ) = (word) (( (bPt) gf←c49500)+520)/* var←c44828 */ ;
      lineClass←v7292 = var←c46524;
      };
SOURCE(5040, 1066)
   return(lineClass←v7292);
   }

static void LineSetStrokeWidth←P1440(seg←v7352, strokeWidth←v7380)
   word seg←v7352;
   word strokeWidth←v7380;
   {
   /* LineSetStrokeWidth: */ 
SOURCE(6112, 117)
SOURCE(6175, 29)
   (* (( (ptr) seg←v7352)+2) ) = strokeWidth←v7380;
SOURCE(6206, 23)
   (void) UpdateLineBoundBox←P1680(seg←v7352);
   }

static word MakeLine←P1500(p0←v7440, p1←v7468, props←v7496)
   W2 p0←v7440;
   W2 p1←v7468;
   word props←v7496;
   {
   register ptr gf←c49532 =  (ptr) &globalframe;
   word seg←v7640;
   word lineSegment←v15092;
   /* MakeLine: */ 
SOURCE(6235, 552)
SOURCE(6235, 552)
   seg←v7640 = 0;
SOURCE(6324, 79)
   {
      word var←c46556;
      word var←c46620;
      {
         word pd66;
         pd66 = (* (( (ptr) (* (( (ptr) gf←c49532)+188)/* var←c46588 */  ))+27) );
         var←c46556 = (word) ( *( (fPt) ((*  (ptr) pd66 ))))(p0←v7440, p1←v7468, pd66);
         };
      var←c46620 = XR←NewObject(4, (* (( (ptr) gf←c49532)+15) ));
      (*  (ptr) var←c46620 ) = var←c46556;
      lineSegment←v15092 = var←c46620;
      };
SOURCE(6405, 357)
   {
      word var←c46652;
      word var←c46684;
      word var←c46716;
      word var←c46748;
      {
         word pd67;
         pd67 = (* (( (ptr) (* (( (ptr) gf←c49532)+185)/* var←c46108 */  ))+24) );
         var←c46652 = (word) ( *( (fPt) ((*  (ptr) pd67 ))))((* ((( (ptr) gf←c49532)+21)) ), pd67);
         };
      {
         word pd68;
         pd68 = (* (( (ptr) (* (( (ptr) gf←c49532)+186)/* var←c46172 */  ))+5) );
         var←c46684 = (word) ( *( (fPt) ((*  (ptr) pd68 ))))((*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), 0, 0, pd68)
         ;
         };
      {
         word pd69;
         pd69 = (* (( (ptr) (* (( (ptr) gf←c49532)+186)/* var←c46172 */  ))+5) );
         var←c46716 = (word) ( *( (fPt) ((*  (ptr) pd69 ))))((*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), 0, 0, pd69)
         ;
         };
      var←c46748 = XR←NewObject(104, (* (( (ptr) gf←c49532)+12) ));
      (*  (ptr) var←c46748 ) = var←c46652;
      (* (( (ptr) var←c46748)+2) ) = (* (( (ptr) gf←c49532)+4)/* defaultStrokeWidth←v4092 */  );
      (* (( (ptr) var←c46748)+3) ) = (* (( (ptr) gf←c49532)+5)/* defaultStrokeEnd←v4120 */  );
      (* (( (ptr) var←c46748)+6) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46748)+7) ) = (*  (ptr) &fc38 );
      (* (( (ptr) var←c46748)+8) ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c49532)+187)/* var←c46268 */  ))+54) ) );
      (*  (W2Pt) (( (ptr) var←c46748)+9) ) = p0←v7440;
      (*  (W2Pt) (( (ptr) var←c46748)+11) ) = p1←v7468;
      (* (( (ptr) var←c46748)+13) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46748)+14) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46748)+15) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c46748)+16) ) = (*  (ptr) &fc37 );
      (*  (W4Pt) (( (ptr) var←c46748)+17) ) = (*  (W4Pt) (( (ptr) gf←c49532)+180)/* var←c45660 */  );
      (* (( (ptr) var←c46748)+21) ) = var←c46684;
      (* (( (ptr) var←c46748)+22) ) = var←c46716;
      (* (( (ptr) var←c46748)+24) ) = lineSegment←v15092;
      (* (( (ptr) var←c46748)+25) ) = props←v7496;
      seg←v7640 = var←c46748;
      };
SOURCE(6764, 23)
   (void) UpdateLineBoundBox←P1680(seg←v7640);
SOURCE(6235, 552)
   return(seg←v7640);
   }

static word LineBoundBox←P1560(seg←v7700)
   word seg←v7700;
   {
   word bBox←v7744;
   /* LineBoundBox: */ 
SOURCE(6793, 78)
SOURCE(6793, 78)
   bBox←v7744 = 0;
SOURCE(6856, 15)
   bBox←v7744 = (* (( (ptr) seg←v7700)+21) );
SOURCE(6793, 78)
   return(bBox←v7744);
   }

static word LineTightBox←P1620(seg←v7804)
   word seg←v7804;
   {
   word bBox←v7848;
   /* LineTightBox: */ 
SOURCE(6877, 82)
SOURCE(6877, 82)
   bBox←v7848 = 0;
SOURCE(6940, 19)
   bBox←v7848 = (* (( (ptr) seg←v7804)+22) );
SOURCE(6877, 82)
   return(bBox←v7848);
   }

static void UpdateLineBoundBox←P1680(seg←v7908)
   word seg←v7908;
   {
   register ptr gf←c49564 =  (ptr) &globalframe;
   word loX←v15136;
   word loY←v15164;
   word hiX←v15192;
   word hiY←v15220;
   word pad←v15248;
   /* UpdateLineBoundBox: */ 
SOURCE(6997, 442)
SOURCE(7078, 29)
   {
      word x70;
      float tf71;
      float tf72;
      word x73;
      float tf74;
      loX←v15136 = (
         tf74 = FMIN((
               x70 = (* (( (ptr) seg←v7908)+9) ),  *(float*)&x70
               ), (
               x73 = (* (( (ptr) seg←v7908)+11) ),  *(float*)&x73
               ), tf71, tf72),  *(word*)&tf74
         );
      };
SOURCE(7109, 29)
   {
      word x75;
      float tf76;
      float tf77;
      word x78;
      float tf79;
      hiX←v15192 = (
         tf79 = FMAX((
               x75 = (* (( (ptr) seg←v7908)+9) ),  *(float*)&x75
               ), (
               x78 = (* (( (ptr) seg←v7908)+11) ),  *(float*)&x78
               ), tf76, tf77),  *(word*)&tf79
         );
      };
SOURCE(7140, 29)
   {
      word x80;
      float tf81;
      float tf82;
      word x83;
      float tf84;
      loY←v15164 = (
         tf84 = FMIN((
               x80 = (* (( (ptr) seg←v7908)+10) ),  *(float*)&x80
               ), (
               x83 = (* (( (ptr) seg←v7908)+12) ),  *(float*)&x83
               ), tf81, tf82),  *(word*)&tf84
         );
      };
SOURCE(7171, 29)
   {
      word x85;
      float tf86;
      float tf87;
      word x88;
      float tf89;
      hiY←v15220 = (
         tf89 = FMAX((
               x85 = (* (( (ptr) seg←v7908)+10) ),  *(float*)&x85
               ), (
               x88 = (* (( (ptr) seg←v7908)+12) ),  *(float*)&x88
               ), tf86, tf87),  *(word*)&tf89
         );
      };
SOURCE(7202, 59)
   {
      word pd90;
      pd90 = (* (( (ptr) (* (( (ptr) gf←c49564)+186)/* var←c46172 */  ))+18) );
      (void) ( *( (fPt) ((*  (ptr) pd90 ))))((* (( (ptr) seg←v7908)+22) ), loX←v15136, loY←v15164, hiX←v15192, hiY←v15220, pd90)
      ;
      };
SOURCE(7263, 25)
   (*  (W6Pt) (* (( (ptr) seg←v7908)+21) ) ) = (*  (W6Pt) (* (( (ptr) seg←v7908)+22) ) );
SOURCE(7290, 106)
   if (((* (( (ptr) seg←v7908)+3) ) == 0)) {
SOURCE(7321, 44)
      {
         word x91;
         word x93;
         word x94;
         *(float*)&pad←v15248 = ((
            x91 = (* (( (ptr) seg←v7908)+2) ),  *(float*)&x91
            ) * (
            x93 = (*  (ptr) &fc92 ),  *(float*)&x93
            )) + (
            x94 = (*  (ptr) &fc43 ),  *(float*)&x94
            );
         };
      }
   else {
SOURCE(7365, 31)
      {
         word x95;
         word x96;
         word x97;
         *(float*)&pad←v15248 = ((
            x95 = (* (( (ptr) seg←v7908)+2) ),  *(float*)&x95
            ) / (
            x96 = (*  (ptr) &fc36 ),  *(float*)&x96
            )) + (
            x97 = (*  (ptr) &fc43 ),  *(float*)&x97
            );
         };
      };
SOURCE(7398, 41)
   {
      word pd98;
      pd98 = (* (( (ptr) (* (( (ptr) gf←c49564)+186)/* var←c46172 */  ))+17) );
      (void) ( *( (fPt) ((*  (ptr) pd98 ))))((* (( (ptr) seg←v7908)+21) ), pad←v15248, pd98);
      };
   }

static word LineCopyData←P1740(seg←v7968)
   word seg←v7968;
   {
   register ptr gf←c49596 =  (ptr) &globalframe;
   word data←v8012;
   word lineSegment←v15292;
   /* LineCopyData: */ 
SOURCE(7445, 173)
SOURCE(7445, 173)
   data←v8012 = 0;
SOURCE(7507, 40)
   lineSegment←v15292 = XR←Narrow((* (( (ptr) seg←v7968)+24) ), (* (( (ptr) gf←c49596)+15) ));
SOURCE(7549, 69)
   {
      word var←c46780;
      word var←c46812;
      {
         word pd99;
         pd99 = (* (( (ptr) (* (( (ptr) gf←c49596)+188)/* var←c46588 */  ))+27) );
         var←c46780 = (word) ( *( (fPt) ((*  (ptr) pd99 ))))((*  (W2Pt) (( (ptr) seg←v7968)+9) ), (*  (W2Pt) (( (ptr) seg←v7968)+11)
             ), pd99);
         };
      var←c46812 = XR←NewObject(4, (* (( (ptr) gf←c49596)+15) ));
      (*  (ptr) var←c46812 ) = var←c46780;
      data←v8012 = var←c46812;
      };
SOURCE(7445, 173)
   return(data←v8012);
   }

static void LineReverse←P1800(seg←v8084)
   word seg←v8084;
   {
   /* LineReverse: */ 
   }

static void LineBuildPath←P1860(seg←v8144, lineTo←v8172, curveTo←v8200, conicTo←v8228, arcTo←v8256)
   word seg←v8144;
   word lineTo←v8172;
   word curveTo←v8200;
   word conicTo←v8228;
   word arcTo←v8256;
   {
   /* LineBuildPath: */ 
SOURCE(7666, 179)
SOURCE(7831, 14)
   (void) ( *( (fPt) ((*  (ptr) lineTo←v8172 ))))((*  (W2Pt) ((( (ptr) seg←v8144)+11)) ), lineTo←v8172);
   }

static void LineBuildPathTransform←P1920(seg←v8316, transform←v8344, entire←v8372, lo←v8400, hi←v8428, controlPoints←v8456, lineTo←v8484, curveTo←v8512, conicTo←v8540, arcTo←v8568)
   word seg←v8316;
   word transform←v8344;
   word entire←v8372;
   word lo←v8400;
   word hi←v8428;
   word controlPoints←v8456;
   word lineTo←v8484;
   word curveTo←v8512;
   word conicTo←v8540;
   word arcTo←v8568;
   {
   register ptr gf←c49628 =  (ptr) &globalframe;
   W2 hiPoint←v15336;
   /* LineBuildPathTransform: */ 
SOURCE(7851, 418)
SOURCE(8137, 98)
   if (((0 != hi←v8428) || (0 != entire←v8372))) {
      {
         W2 var←c0256;
         {
            word pd100;
            pd100 = (* (( (ptr) (* (( (ptr) gf←c49628)+189)/* var←c46844 */  ))+5) );
            (void) ( *( (fPt) ((*  (ptr) pd100 ))))((word) &var←c0256, transform←v8344, (*  (W2Pt) (( (ptr) seg←v8316)+11) ), pd100);
            };
         hiPoint←v15336 = var←c0256;
         };
      }
   else {
      hiPoint←v15336.f0 = (* (( (ptr) seg←v8316)+11) );
      hiPoint←v15336.f1 = (* (( (ptr) seg←v8316)+12) );
      };
SOURCE(8237, 32)
   {
      W2 var←c46908;
      var←c46908.f0 = hiPoint←v15336.f0;
      var←c46908.f1 = hiPoint←v15336.f1;
      (void) ( *( (fPt) ((*  (ptr) lineTo←v8484 ))))(var←c46908, lineTo←v8484);
      };
   }

static void LineTransform←P1980(seg←v8628, transform←v8656)
   word seg←v8628;
   word transform←v8656;
   {
   register ptr gf←c49660 =  (ptr) &globalframe;
   word lineSegment←v15380;
   /* LineTransform: */ 
SOURCE(8275, 204)
SOURCE(8362, 40)
   lineSegment←v15380 = XR←Narrow((* (( (ptr) seg←v8628)+24) ), (* (( (ptr) gf←c49660)+15) ));
SOURCE(8404, 50)
   {
      word pd101;
      pd101 = (* (( (ptr) (* (( (ptr) gf←c49660)+188)/* var←c46588 */  ))+29) );
      (void) ( *( (fPt) ((*  (ptr) pd101 ))))((*  (W2Pt) (( (ptr) seg←v8628)+9) ), (*  (W2Pt) (( (ptr) seg←v8628)+11) ), (*  (ptr) lineSegment←v15380 ), pd101)
      ;
      };
SOURCE(8456, 23)
   (void) UpdateLineBoundBox←P1680(seg←v8628);
   }

static void LineEndPointMoved←P2040(seg←v8716, lo←v8744, newPoint←v8772)
   word seg←v8716;
   word lo←v8744;
   W2 newPoint←v8772;
   {
   register ptr gf←c49692 =  (ptr) &globalframe;
   word lineSegment←v15424;
   /* LineEndPointMoved: */ 
SOURCE(8486, 187)
SOURCE(8556, 40)
   lineSegment←v15424 = XR←Narrow((* (( (ptr) seg←v8716)+24) ), (* (( (ptr) gf←c49692)+15) ));
SOURCE(8598, 50)
   {
      word pd102;
      pd102 = (* (( (ptr) (* (( (ptr) gf←c49692)+188)/* var←c46588 */  ))+29) );
      (void) ( *( (fPt) ((*  (ptr) pd102 ))))((*  (W2Pt) (( (ptr) seg←v8716)+9) ), (*  (W2Pt) (( (ptr) seg←v8716)+11) ), (*  (ptr) lineSegment←v15424 ), pd102)
      ;
      };
SOURCE(8650, 23)
   (void) UpdateLineBoundBox←P1680(seg←v8716);
   }

static word LineDescribe←P2100(seg←v8832, self←v8860, lo←v8888, hi←v8916, cps←v8944)
   word seg←v8832;
   word self←v8860;
   word lo←v8888;
   word hi←v8916;
   word cps←v8944;
   {
   register ptr gf←c49724 =  (ptr) &globalframe;
   word rope←v8988;
   /* LineDescribe: */ 
SOURCE(8680, 113)
SOURCE(8680, 113)
   rope←v8988 = 0;
SOURCE(8780, 13)
   rope←v8988 = (* (( (ptr) gf←c49724)+19) );
SOURCE(8680, 113)
   return(rope←v8988);
   }

static word LineFileIn←P2160(f←v9048, loPoint←v9076, hiPoint←v9104, version←v9132)
   word f←v9048;
   W2 loPoint←v9076;
   W2 hiPoint←v9104;
   word version←v9132;
   {
   word seg←v9176;
   /* LineFileIn: */ 
SOURCE(8799, 136)
SOURCE(8799, 136)
   seg←v9176 = 0;
SOURCE(8898, 37)
   seg←v9176 = (word) MakeLine←P1500(loPoint←v9076, hiPoint←v9104, 0);
SOURCE(8799, 136)
   return(seg←v9176);
   }

static word PointIsInBox←P2220(test←v9236, box←v9264)
   W2 test←v9236;
   W6 box←v9264;
   {
   word var←c9308;
   /* PointIsInBox: */ 
SOURCE(8964, 162)
SOURCE(9034, 92)
   {
      word tc103;
      word x104;
      word x105;
      word x106;
      word x107;
      word x108;
      word x109;
      word x110;
      word x111;
      if ( (  ( ((
         x104 = test←v9236.f0,  *(float*)&x104
         ) >= (
         x105 = box←v9264.f0,  *(float*)&x105
         )) ? ((
         x106 = test←v9236.f0,  *(float*)&x106
         ) <= (
         x107 = box←v9264.f2,  *(float*)&x107
         )) : 0 )  ? ((
         x108 = test←v9236.f1,  *(float*)&x108
         ) >= (
         x109 = box←v9264.f1,  *(float*)&x109
         )) : 0 ) ) {
         tc103 =  (word) ((
            x110 = test←v9236.f1,  *(float*)&x110
            ) <= (
            x111 = box←v9264.f3,  *(float*)&x111
            ));
         }
      else {
         tc103 =  (word) 0;
         };
      return(tc103);
      };
   }

static void LineClosestPoint←P2280(formal←c0288, seg←v9368, testPoint←v9396, tolerance←v9424)
   word formal←c0288;
   word seg←v9368;
   W2 testPoint←v9396;
   word tolerance←v9424;
   {
   register ptr gf←c49756 =  (ptr) &globalframe;
   W2 point←v9468;
   word success←v9496;
   word lineData←v15468;
   /* LineClosestPoint: */ 
SOURCE(9132, 458)
SOURCE(9132, 458)
   point←v9468.f0 = (*  (ptr) &fc37 );
   point←v9468.f1 = (*  (ptr) &fc37 );
SOURCE(9132, 458)
   success←v9496 = 0;
SOURCE(9268, 37)
   lineData←v15468 = XR←Narrow((* (( (ptr) seg←v9368)+24) ), (* (( (ptr) gf←c49756)+15) ));
SOURCE(9307, 202)
   if ((0 != (* (( (ptr) gf←c49756)+6)/* useBBox←v5240 */  ))) {
SOURCE(9323, 188)
      {
         W6 bigBox←v15512;
SOURCE(9325, 132)
         {
            word x112;
            word x113;
            *(float*)&bigBox←v15512.f0 = (
               x112 = (*  (ptr) (* (( (ptr) seg←v9368)+21) ) ),  *(float*)&x112
               ) - (
               x113 = tolerance←v9424,  *(float*)&x113
               );
            };
         {
            word x114;
            word x115;
            *(float*)&bigBox←v15512.f1 = (
               x114 = (* (( (ptr) (* (( (ptr) seg←v9368)+21) ))+1) ),  *(float*)&x114
               ) - (
               x115 = tolerance←v9424,  *(float*)&x115
               );
            };
         {
            word x116;
            word x117;
            *(float*)&bigBox←v15512.f2 = (
               x116 = (* (( (ptr) (* (( (ptr) seg←v9368)+21) ))+2) ),  *(float*)&x116
               ) + (
               x117 = tolerance←v9424,  *(float*)&x117
               );
            };
         {
            word x118;
            word x119;
            *(float*)&bigBox←v15512.f3 = (
               x118 = (* (( (ptr) (* (( (ptr) seg←v9368)+21) ))+3) ),  *(float*)&x118
               ) + (
               x119 = tolerance←v9424,  *(float*)&x119
               );
            };
         bigBox←v15512.f4 = 0;
         bigBox←v15512.f5 = 0;
SOURCE(9459, 50)
         if ((0 == (word) PointIsInBox←P2220(testPoint←v9396, bigBox←v15512))) {
SOURCE(9503, 6)
            goto lab←L100008;
            };
         };
      };
SOURCE(9514, 60)
   {
      word pd120;
      pd120 = (* (( (ptr) (* (( (ptr) gf←c49756)+188)/* var←c46588 */  ))+46) );
      (void) ( *( (fPt) ((*  (ptr) pd120 ))))((word) &point←v9468, testPoint←v9396, (*  (ptr) lineData←v15468 ), pd120);
      };
SOURCE(9576, 14)
   success←v9496 = 1;
   /* removed tail goto */ 
   lab←L100008: ;
   (*  (W2Pt) formal←c0288 ) = point←v9468;
   (* (( (ptr) formal←c0288)+2) ) = success←v9496;
   return;
   }

static void LineClosestPointAndTangent←P2340(formal←c0299, seg←v9556, testPoint←v9584, tolerance←v9612)
   word formal←c0299;
   word seg←v9556;
   W2 testPoint←v9584;
   word tolerance←v9612;
   {
   register ptr gf←c49788 =  (ptr) &globalframe;
   W2 point←v9656;
   W2 tangent←v9684;
   word success←v9712;
   word lineData←v15556;
   /* LineClosestPointAndTangent: */ 
SOURCE(9596, 549)
SOURCE(9596, 549)
   point←v9656.f0 = (*  (ptr) &fc37 );
   point←v9656.f1 = (*  (ptr) &fc37 );
SOURCE(9596, 549)
   tangent←v9684.f0 = (*  (ptr) &fc37 );
   tangent←v9684.f1 = (*  (ptr) &fc38 );
SOURCE(9596, 549)
   success←v9712 = 0;
SOURCE(9768, 37)
   lineData←v15556 = XR←Narrow((* (( (ptr) seg←v9556)+24) ), (* (( (ptr) gf←c49788)+15) ));
SOURCE(9807, 202)
   if ((0 != (* (( (ptr) gf←c49788)+6)/* useBBox←v5240 */  ))) {
SOURCE(9823, 188)
      {
         W6 bigBox←v15600;
SOURCE(9825, 132)
         {
            word x121;
            word x122;
            *(float*)&bigBox←v15600.f0 = (
               x121 = (*  (ptr) (* (( (ptr) seg←v9556)+21) ) ),  *(float*)&x121
               ) - (
               x122 = tolerance←v9612,  *(float*)&x122
               );
            };
         {
            word x123;
            word x124;
            *(float*)&bigBox←v15600.f1 = (
               x123 = (* (( (ptr) (* (( (ptr) seg←v9556)+21) ))+1) ),  *(float*)&x123
               ) - (
               x124 = tolerance←v9612,  *(float*)&x124
               );
            };
         {
            word x125;
            word x126;
            *(float*)&bigBox←v15600.f2 = (
               x125 = (* (( (ptr) (* (( (ptr) seg←v9556)+21) ))+2) ),  *(float*)&x125
               ) + (
               x126 = tolerance←v9612,  *(float*)&x126
               );
            };
         {
            word x127;
            word x128;
            *(float*)&bigBox←v15600.f3 = (
               x127 = (* (( (ptr) (* (( (ptr) seg←v9556)+21) ))+3) ),  *(float*)&x127
               ) + (
               x128 = tolerance←v9612,  *(float*)&x128
               );
            };
         bigBox←v15600.f4 = 0;
         bigBox←v15600.f5 = 0;
SOURCE(9959, 50)
         if ((0 == (word) PointIsInBox←P2220(testPoint←v9584, bigBox←v15600))) {
SOURCE(10003, 6)
            goto lab←L100009;
            };
         };
      };
SOURCE(10014, 60)
   {
      word pd129;
      pd129 = (* (( (ptr) (* (( (ptr) gf←c49788)+188)/* var←c46588 */  ))+46) );
      (void) ( *( (fPt) ((*  (ptr) pd129 ))))((word) &point←v9656, testPoint←v9584, (*  (ptr) lineData←v15556 ), pd129);
      };
SOURCE(10076, 53)
   {
      word pd130;
      pd130 = (* (( (ptr) (* (( (ptr) gf←c49788)+188)/* var←c46588 */  ))+37) );
      (void) ( *( (fPt) ((*  (ptr) pd130 ))))((word) &tangent←v9684, (*  (ptr) (*  (ptr) lineData←v15556 ) ), pd130);
      };
SOURCE(10131, 14)
   success←v9712 = 1;
   /* removed tail goto */ 
   lab←L100009: ;
   (*  (W2Pt) formal←c0299 ) = point←v9656;
   (*  (W2Pt) (( (ptr) formal←c0299)+2) ) = tangent←v9684;
   (* (( (ptr) formal←c0299)+4) ) = success←v9712;
   return;
   }

static void LineLineIntersection←P2400(formal←c0311, seg←v9772, line←v9800)
   word formal←c0311;
   word seg←v9772;
   word line←v9800;
   {
   register ptr gf←c49820 =  (ptr) &globalframe;
   word points←v9844;
   word pointCount←v9872;
   word lineData←v15644;
   word failure←v15672;
   W2 ipoint←v15700;
   /* LineLineIntersection: */ 
SOURCE(10151, 322)
SOURCE(10151, 322)
   points←v9844 = 0;
SOURCE(10258, 37)
   lineData←v15644 = XR←Narrow((* (( (ptr) seg←v9772)+24) ), (* (( (ptr) gf←c49820)+15) ));
SOURCE(10327, 62)
   {
      W3 var←c47004;
      {
         word pd131;
         pd131 = (* (( (ptr) (* (( (ptr) gf←c49820)+188)/* var←c46588 */  ))+35) );
         (void) ( *( (fPt) ((*  (ptr) pd131 ))))((word) &var←c47004, line←v9800, (*  (ptr) lineData←v15644 ), pd131);
         };
      failure←v15672 = var←c47004.f2;
      ipoint←v15700 = (*  (W2Pt) &var←c47004 );
      };
SOURCE(10391, 40)
   if ((0 != failure←v15672)) {
SOURCE(10409, 14)
      pointCount←v9872 = 0;
SOURCE(10425, 6)
      goto lab←L100010;
      };
SOURCE(10436, 21)
   {
      word var←c47036;
      word var←c47068;
      var←c47036 = XR←NewObject(12, (* (( (ptr) gf←c49820)+18) ));
      var←c47068 = var←c47036;
      (*  (W2Pt) var←c47068 ) = ipoint←v15700;
      points←v9844 = var←c47036;
      };
SOURCE(10459, 14)
   pointCount←v9872 = 1;
   /* removed tail goto */ 
   lab←L100010: ;
   (*  (ptr) formal←c0311 ) = points←v9844;
   (* (( (ptr) formal←c0311)+1) ) = pointCount←v9872;
   return;
   }

static void LineCircleIntersection←P2460(formal←c0323, seg←v10016, circle←v10044)
   word formal←c0323;
   word seg←v10016;
   word circle←v10044;
   {
   register ptr gf←c49852 =  (ptr) &globalframe;
   word points←v10088;
   word pointCount←v10116;
   word lineData←v15744;
   W4 hitPoints←v15772;
   /* LineCircleIntersection: */ 
SOURCE(10479, 343)
SOURCE(10479, 343)
   points←v10088 = 0;
SOURCE(10592, 37)
   lineData←v15744 = XR←Narrow((* (( (ptr) seg←v10016)+24) ), (* (( (ptr) gf←c49852)+15) ));
SOURCE(10664, 74)
   {
      W6 var←c47132;
      {
         word pd132;
         pd132 = (* (( (ptr) (* (( (ptr) gf←c49852)+190)/* var←c47100 */  ))+11) );
         (void) ( *( (fPt) ((*  (ptr) pd132 ))))((word) &var←c47132, circle←v10044, (*  (ptr) lineData←v15744 ), pd132);
         };
      pointCount←v10116 = var←c47132.f4;
      hitPoints←v15772 = (*  (W4Pt) &var←c47132 );
      };
SOURCE(10740, 12)
   points←v10088 = 0;
SOURCE(10754, 68)
   {
      register word i←v15852 = 1;
      register word noName←c47164;
      noName←c47164 = pointCount←v10116;
      if ((i←v15852 > noName←c47164)) {
         goto lab←L100012;
         };
      lab←L100015: ;
SOURCE(10787, 35)
      {
         word var←c47196;
         var←c47196 = XR←NewObject(12, (* (( (ptr) gf←c49852)+18) ));
         (*  (W2Pt) var←c47196 ) = (* (( (W2Pt) &hitPoints←v15772)+BCK((i←v15852 - 1), 2)) );
         (* (( (ptr) var←c47196)+2) ) = points←v10088;
         points←v10088 = var←c47196;
         };
      if ((i←v15852 >= noName←c47164)) {
         goto lab←L100012;
         };
      i←v15852 = (i←v15852 + 1);
      goto lab←L100015;
      lab←L100012: ;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0323 ) = points←v10088;
   (* (( (ptr) formal←c0323)+1) ) = pointCount←v10116;
   return;
   }

static word LineAsSimpleCurve←P2520(seg←v10260, point←v10288)
   word seg←v10260;
   W2 point←v10288;
   {
   register ptr gf←c49884 =  (ptr) &globalframe;
   word simpleCurve←v10332;
   word lineData←v15896;
   word edge←v15924;
   /* LineAsSimpleCurve: */ 
SOURCE(10837, 173)
SOURCE(10837, 173)
   simpleCurve←v10332 = 0;
SOURCE(10925, 37)
   lineData←v15896 = XR←Narrow((* (( (ptr) seg←v10260)+24) ), (* (( (ptr) gf←c49884)+15) ));
SOURCE(10964, 26)
   edge←v15924 = (*  (ptr) lineData←v15896 );
SOURCE(10992, 18)
   simpleCurve←v10332 = edge←v15924;
SOURCE(10837, 173)
   return(simpleCurve←v10332);
   }

static void LineJointNormal←P2580(formal←c0346, seg←v10404, joint←v10432, point←v10460, hi←v10488)
   word formal←c0346;
   word seg←v10404;
   W2 joint←v10432;
   W2 point←v10460;
   word hi←v10488;
   {
   register ptr gf←c49916 =  (ptr) &globalframe;
   W2 normal←v10532;
   W2 tangent←v10560;
   W2 normal1←v15968;
   W2 normal2←v15996;
   W2 direction←v16024;
   W2 p0←v16052;
   W2 p1←v16080;
   word lineData←v16108;
   /* LineJointNormal: */ 
SOURCE(11016, 800)
SOURCE(11174, 37)
   lineData←v16108 = XR←Narrow((* (( (ptr) seg←v10404)+24) ), (* (( (ptr) gf←c49916)+15) ));
SOURCE(11213, 52)
   {
      word pd133;
      pd133 = (* (( (ptr) (* (( (ptr) gf←c49916)+184)/* var←c45788 */  ))+23) );
      (void) ( *( (fPt) ((*  (ptr) pd133 ))))((word) &normal1←v15968, (*  (ptr) lineData←v16108 ), pd133);
      };
SOURCE(11267, 51)
   {
      word pd134;
      pd134 = (* (( (ptr) (* (( (ptr) gf←c49916)+184)/* var←c45788 */  ))+24) );
      (void) ( *( (fPt) ((*  (ptr) pd134 ))))((word) &normal2←v15996, (*  (ptr) lineData←v16108 ), pd134);
      };
SOURCE(11320, 52)
   {
      word pd135;
      pd135 = (* (( (ptr) (* (( (ptr) gf←c49916)+184)/* var←c45788 */  ))+22) );
      (void) ( *( (fPt) ((*  (ptr) pd135 ))))((word) &direction←v16024, joint←v10432, point←v10460, pd135);
      };
SOURCE(11374, 181)
   {
      float tf136;
      word pd137;
      word x138;
      float tf139;
      word pd140;
      word x141;
      pd137 = (* (( (ptr) (* (( (ptr) gf←c49916)+184)/* var←c45788 */  ))+9) );
      pd140 = (* (( (ptr) (* (( (ptr) gf←c49916)+184)/* var←c45788 */  ))+9) );
      if ((FABS((
            x138 = (word) ( *( (fPt) ((*  (ptr) pd137 ))))(normal1←v15968, direction←v16024, pd137),  *(float*)&x138
            ), tf136) < FABS((
            x141 = (word) ( *( (fPt) ((*  (ptr) pd140 ))))(normal2←v15996, direction←v16024, pd140),  *(float*)&x141
            ), tf139))) {
SOURCE(11512, 17)
         normal←v10532 = normal1←v15968;
         }
      else {
SOURCE(11539, 16)
         normal←v10532 = normal2←v15996;
         };
      };
SOURCE(11559, 144)
   if ((0 != (* (( (ptr) (*  (ptr) lineData←v16108 ))+1) ))) {
SOURCE(11596, 24)
      p0←v16052 = (*  (W2Pt) (( (ptr) (*  (ptr) lineData←v16108 ))+2) );
SOURCE(11622, 22)
      p1←v16080 = (*  (W2Pt) (( (ptr) (*  (ptr) lineData←v16108 ))+4) );
      }
   else {
SOURCE(11655, 22)
      p0←v16052 = (*  (W2Pt) (( (ptr) (*  (ptr) lineData←v16108 ))+4) );
SOURCE(11679, 24)
      p1←v16080 = (*  (W2Pt) (( (ptr) (*  (ptr) lineData←v16108 ))+2) );
      };
SOURCE(11708, 108)
   if ((0 != hi←v10488)) {
SOURCE(11720, 43)
      {
         word pd142;
         pd142 = (* (( (ptr) (* (( (ptr) gf←c49916)+184)/* var←c45788 */  ))+22) );
         (void) ( *( (fPt) ((*  (ptr) pd142 ))))((word) &tangent←v10560, p1←v16080, p0←v16052, pd142);
         };
      }
   else {
SOURCE(11773, 43)
      {
         word pd143;
         pd143 = (* (( (ptr) (* (( (ptr) gf←c49916)+184)/* var←c45788 */  ))+22) );
         (void) ( *( (fPt) ((*  (ptr) pd143 ))))((word) &tangent←v10560, p0←v16052, p1←v16080, pd143);
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0346 ) = normal←v10532;
   (*  (W2Pt) (( (ptr) formal←c0346)+2) ) = tangent←v10560;
   return;
   }

static void LineAddJoint←P2640(formal←c0351, seg←v10620, pos←v10648)
   word formal←c0351;
   word seg←v10620;
   W2 pos←v10648;
   {
   register ptr gf←c49948 =  (ptr) &globalframe;
   word seg1←v10692;
   word seg2←v10720;
   /* LineAddJoint: */ 
SOURCE(11825, 231)
SOURCE(11825, 231)
   seg1←v10692 = 0;
SOURCE(11825, 231)
   seg2←v10720 = 0;
SOURCE(11906, 33)
   {
      word pd144;
      pd144 = (* (( (ptr) (* (( (ptr) gf←c49948)+185)/* var←c46108 */  ))+17) );
      seg1←v10692 = (word) ( *( (fPt) ((*  (ptr) pd144 ))))(seg←v10620, pd144);
      };
SOURCE(11941, 13)
   (*  (W2Pt) (( (ptr) seg1←v10692)+11) ) = pos←v10648;
SOURCE(11956, 24)
   (void) UpdateLineBoundBox←P1680(seg1←v10692);
SOURCE(11982, 33)
   {
      word pd145;
      pd145 = (* (( (ptr) (* (( (ptr) gf←c49948)+185)/* var←c46108 */  ))+17) );
      seg2←v10720 = (word) ( *( (fPt) ((*  (ptr) pd145 ))))(seg←v10620, pd145);
      };
SOURCE(12017, 13)
   (*  (W2Pt) (( (ptr) seg2←v10720)+9) ) = pos←v10648;
SOURCE(12032, 24)
   (void) UpdateLineBoundBox←P1680(seg2←v10720);
   /* removed tail goto */ 
   (*  (ptr) formal←c0351 ) = seg1←v10692;
   (* (( (ptr) formal←c0351)+1) ) = seg2←v10720;
   return;
   }

static word BuildArcClass←P2700()
   {
   register ptr gf←c49980 =  (ptr) &globalframe;
   word class←v10892;
   /* BuildArcClass: */ 
SOURCE(12175, 998)
SOURCE(12175, 998)
   class←v10892 = 0;
SOURCE(12248, 925)
   {
      word var←c47228;
      var←c47228 = XR←NewObject(116, (* (( (ptr) gf←c49980)+8) ));
      (*  (ptr) var←c47228 ) = (* (( (ptr) gf←c49980)+20) );
      (* (( (ptr) var←c47228)+1) ) = (word) (( (bPt) gf←c49980)+320)/* var←c44028 */ ;
      (* (( (ptr) var←c47228)+2) ) = (word) (( (bPt) gf←c49980)+312)/* var←c43996 */ ;
      (* (( (ptr) var←c47228)+3) ) = (word) (( (bPt) gf←c49980)+280)/* var←c43868 */ ;
      (* (( (ptr) var←c47228)+4) ) = (word) (( (bPt) gf←c49980)+272)/* var←c43836 */ ;
      (* (( (ptr) var←c47228)+5) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49980)+185)/* var←c46108 */  ))+35) );
      (* (( (ptr) var←c47228)+6) ) = (word) (( (bPt) gf←c49980)+232)/* var←c43676 */ ;
      (* (( (ptr) var←c47228)+7) ) = (word) (( (bPt) gf←c49980)+224)/* var←c43644 */ ;
      (* (( (ptr) var←c47228)+8) ) = (word) (( (bPt) gf←c49980)+264)/* var←c43804 */ ;
      (* (( (ptr) var←c47228)+9) ) = (word) (( (bPt) gf←c49980)+256)/* var←c43772 */ ;
      (* (( (ptr) var←c47228)+10) ) = (word) (( (bPt) gf←c49980)+248)/* var←c43740 */ ;
      (* (( (ptr) var←c47228)+11) ) = (word) (( (bPt) gf←c49980)+216)/* var←c43612 */ ;
      (* (( (ptr) var←c47228)+12) ) = (word) (( (bPt) gf←c49980)+208)/* var←c43580 */ ;
      (* (( (ptr) var←c47228)+13) ) = (word) (( (bPt) gf←c49980)+200)/* var←c43548 */ ;
      (* (( (ptr) var←c47228)+14) ) = (word) (( (bPt) gf←c49980)+192)/* var←c43516 */ ;
      (* (( (ptr) var←c47228)+15) ) = (word) (( (bPt) gf←c49980)+184)/* var←c43484 */ ;
      (* (( (ptr) var←c47228)+16) ) = (word) (( (bPt) gf←c49980)+176)/* var←c43452 */ ;
      (* (( (ptr) var←c47228)+17) ) = (word) (( (bPt) gf←c49980)+168)/* var←c43420 */ ;
      (* (( (ptr) var←c47228)+18) ) = (word) (( (bPt) gf←c49980)+160)/* var←c43388 */ ;
      (* (( (ptr) var←c47228)+19) ) = (word) (( (bPt) gf←c49980)+152)/* var←c43356 */ ;
      (* (( (ptr) var←c47228)+20) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49980)+185)/* var←c46108 */  ))+42) );
      (* (( (ptr) var←c47228)+21) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49980)+185)/* var←c46108 */  ))+43) );
      (* (( (ptr) var←c47228)+22) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c49980)+185)/* var←c46108 */  ))+44) );
      (* (( (ptr) var←c47228)+23) ) = (word) (( (bPt) gf←c49980)+144)/* var←c43324 */ ;
      (* (( (ptr) var←c47228)+24) ) = (word) (( (bPt) gf←c49980)+136)/* var←c43292 */ ;
      (* (( (ptr) var←c47228)+25) ) = (word) (( (bPt) gf←c49980)+128)/* var←c43260 */ ;
      (* (( (ptr) var←c47228)+26) ) = (word) (( (bPt) gf←c49980)+120)/* var←c43228 */ ;
      (* (( (ptr) var←c47228)+27) ) = (word) (( (bPt) gf←c49980)+112)/* var←c43196 */ ;
      (* (( (ptr) var←c47228)+28) ) = (word) (( (bPt) gf←c49980)+344)/* var←c44124 */ ;
      class←v10892 = var←c47228;
      };
SOURCE(12175, 998)
   return(class←v10892);
   }

static void ArcSetStrokeWidth←P2760(seg←v10952, strokeWidth←v10980)
   word seg←v10952;
   word strokeWidth←v10980;
   {
   /* ArcSetStrokeWidth: */ 
SOURCE(13179, 117)
SOURCE(13241, 29)
   (* (( (ptr) seg←v10952)+2) ) = strokeWidth←v10980;
SOURCE(13272, 24)
   (void) UpdateBoundBoxOfArc←P3180(seg←v10952);
   }

static word MakeArc←P2820(p0←v11040, p1←v11068, p2←v11096, props←v11124)
   W2 p0←v11040;
   W2 p1←v11068;
   W2 p2←v11096;
   word props←v11124;
   {
   register ptr gf←c50012 =  (ptr) &globalframe;
   word seg←v11264;
   word data←v16152;
   /* MakeArc: */ 
SOURCE(13302, 601)
SOURCE(13302, 601)
   seg←v11264 = 0;
SOURCE(13394, 126)
   {
      word var←c47260;
      word var←c47292;
      {
         word pd146;
         pd146 = (* (( (ptr) (* (( (ptr) gf←c50012)+190)/* var←c47100 */  ))+24) );
         var←c47260 = (word) ( *( (fPt) ((*  (ptr) pd146 ))))(p0←v11040, p1←v11068, p2←v11096, pd146);
         };
      var←c47292 = XR←NewObject(28, (* (( (ptr) gf←c50012)+14) ));
      (*  (ptr) var←c47292 ) = p1←v11068.f0;
      (* (( (ptr) var←c47292)+1) ) = p1←v11068.f1;
      (*  (W4Pt) (( (ptr) var←c47292)+2) ) = (*  (W4Pt) (( (ptr) gf←c50012)+180)/* var←c45660 */  );
      (* (( (ptr) var←c47292)+6) ) = var←c47260;
      data←v16152 = var←c47292;
      };
SOURCE(13522, 355)
   {
      word var←c47324;
      word var←c47356;
      word var←c47388;
      word var←c47420;
      {
         word pd147;
         pd147 = (* (( (ptr) (* (( (ptr) gf←c50012)+185)/* var←c46108 */  ))+24) );
         var←c47324 = (word) ( *( (fPt) ((*  (ptr) pd147 ))))((* ((( (ptr) gf←c50012)+20)) ), pd147);
         };
      {
         word pd148;
         pd148 = (* (( (ptr) (* (( (ptr) gf←c50012)+186)/* var←c46172 */  ))+5) );
         var←c47356 = (word) ( *( (fPt) ((*  (ptr) pd148 ))))((*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), 0, 0, pd148)
         ;
         };
      {
         word pd149;
         pd149 = (* (( (ptr) (* (( (ptr) gf←c50012)+186)/* var←c46172 */  ))+5) );
         var←c47388 = (word) ( *( (fPt) ((*  (ptr) pd149 ))))((*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), (*  (ptr) &fc37 ), 0, 0, pd149)
         ;
         };
      var←c47420 = XR←NewObject(104, (* (( (ptr) gf←c50012)+12) ));
      (*  (ptr) var←c47420 ) = var←c47324;
      (* (( (ptr) var←c47420)+2) ) = (* (( (ptr) gf←c50012)+4)/* defaultStrokeWidth←v4092 */  );
      (* (( (ptr) var←c47420)+3) ) = (* (( (ptr) gf←c50012)+5)/* defaultStrokeEnd←v4120 */  );
      (* (( (ptr) var←c47420)+6) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c47420)+7) ) = (*  (ptr) &fc38 );
      (* (( (ptr) var←c47420)+8) ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c50012)+187)/* var←c46268 */  ))+54) ) );
      (*  (W2Pt) (( (ptr) var←c47420)+9) ) = p0←v11040;
      (*  (W2Pt) (( (ptr) var←c47420)+11) ) = p2←v11096;
      (* (( (ptr) var←c47420)+13) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c47420)+14) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c47420)+15) ) = (*  (ptr) &fc37 );
      (* (( (ptr) var←c47420)+16) ) = (*  (ptr) &fc37 );
      (*  (W4Pt) (( (ptr) var←c47420)+17) ) = (*  (W4Pt) (( (ptr) gf←c50012)+180)/* var←c45660 */  );
      (* (( (ptr) var←c47420)+21) ) = var←c47356;
      (* (( (ptr) var←c47420)+22) ) = var←c47388;
      (* (( (ptr) var←c47420)+24) ) = data←v16152;
      (* (( (ptr) var←c47420)+25) ) = props←v11124;
      seg←v11264 = var←c47420;
      };
SOURCE(13879, 24)
   (void) UpdateBoundBoxOfArc←P3180(seg←v11264);
SOURCE(13302, 601)
   return(seg←v11264);
   }

static void ArcGetParams←P2880(formal←c0373, seg←v11324)
   word formal←c0373;
   word seg←v11324;
   {
   register ptr gf←c50044 =  (ptr) &globalframe;
   W2 p0←v11368;
   W2 p1←v11396;
   W2 p2←v11424;
   word data←v16196;
   /* ArcGetParams: */ 
SOURCE(13909, 145)
SOURCE(13982, 32)
   data←v16196 = XR←Narrow((* (( (ptr) seg←v11324)+24) ), (* (( (ptr) gf←c50044)+14) ));
SOURCE(14016, 11)
   p0←v11368 = (*  (W2Pt) (( (ptr) seg←v11324)+9) );
SOURCE(14029, 11)
   p2←v11424 = (*  (W2Pt) (( (ptr) seg←v11324)+11) );
SOURCE(14042, 12)
   p1←v11396 = (*  (W2Pt) data←v16196 );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0373 ) = p0←v11368;
   (*  (W2Pt) (( (ptr) formal←c0373)+2) ) = p1←v11396;
   (*  (W2Pt) (( (ptr) formal←c0373)+4) ) = p2←v11424;
   return;
   }

static word ArcBoundBox←P2940(seg←v11484)
   word seg←v11484;
   {
   word bBox←v11528;
   /* ArcBoundBox: */ 
SOURCE(14060, 77)
SOURCE(14060, 77)
   bBox←v11528 = 0;
SOURCE(14122, 15)
   bBox←v11528 = (* (( (ptr) seg←v11484)+21) );
SOURCE(14060, 77)
   return(bBox←v11528);
   }

static word ArcTightBox←P3000(seg←v11588)
   word seg←v11588;
   {
   word bBox←v11632;
   /* ArcTightBox: */ 
SOURCE(14143, 81)
SOURCE(14143, 81)
   bBox←v11632 = 0;
SOURCE(14205, 19)
   bBox←v11632 = (* (( (ptr) seg←v11588)+22) );
SOURCE(14143, 81)
   return(bBox←v11632);
   }

static void UpdateTightBoxOfArc←P3060(seg←v11692, boundBox←v11720)
   word seg←v11692;
   word boundBox←v11720;
   {
   register ptr gf←c50076 =  (ptr) &globalframe;
   word data←v16240;
   word arc←v16268;
   /* UpdateTightBoxOfArc: */ 
SOURCE(14230, 1001)
SOURCE(14295, 32)
   data←v16240 = XR←Narrow((* (( (ptr) seg←v11692)+24) ), (* (( (ptr) gf←c50076)+14) ));
SOURCE(14329, 19)
   arc←v16268 = (* (( (ptr) data←v16240)+6) );
SOURCE(14350, 881)
   if (((* (( (ptr) arc←v16268)+8) ) != 0)) {
SOURCE(14373, 46)
      (void) UpdateBoundBoxOfEdge←P3120((* (( (ptr) arc←v16268)+8) ), boundBox←v11720);
      }
   else {
SOURCE(14421, 102)
      (* (( (ptr) boundBox←v11720)+1) ) = (* (( (ptr) arc←v16268)+3) );
      (* (( (ptr) boundBox←v11720)+2) ) = (* (( (ptr) arc←v16268)+2) );
      (* (( (ptr) boundBox←v11720)+3) ) = (* (( (ptr) arc←v16268)+3) );
      (*  (ptr) boundBox←v11720 ) = (* (( (ptr) arc←v16268)+2) );
      (* (( (ptr) boundBox←v11720)+4) ) = 0;
      (* (( (ptr) boundBox←v11720)+5) ) = 0;
SOURCE(14525, 43)
      {
         word pd150;
         pd150 = (* (( (ptr) (* (( (ptr) gf←c50076)+186)/* var←c46172 */  ))+15) );
         (void) ( *( (fPt) ((*  (ptr) pd150 ))))(boundBox←v11720, (*  (W2Pt) (( (ptr) arc←v16268)+4) ), pd150);
         };
SOURCE(14570, 162)
      {
         word pd151;
         pd151 = (* (( (ptr) (* (( (ptr) gf←c50076)+191)/* var←c47548 */  ))+13) );
         if ((0 != (word) ( *( (fPt) ((*  (ptr) pd151 ))))((*  (ptr) &fc37 ), (* (( (ptr) arc←v16268)+6) ), (* (( (ptr) arc←v16268)+7)
             ), pd151))) {
SOURCE(14637, 95)
            {
               W2 var←c47580;
               {
                  W2 var←c0387;
                  {
                     W2 var←c47612;
                     var←c47612.f0 = (* (( (ptr) (*  (ptr) arc←v16268 ))+2) );
                     var←c47612.f1 = (*  (ptr) &fc37 );
                     {
                        word pd152;
                        pd152 = (* (( (ptr) (* (( (ptr) gf←c50076)+184)/* var←c45788 */  ))+10) );
                        (void) ( *( (fPt) ((*  (ptr) pd152 ))))((word) &var←c0387, (*  (W2Pt) (*  (ptr) arc←v16268 ) ), var←c47612, pd152);
                        };
                     };
                  var←c47580 = var←c0387;
                  };
               {
                  word pd153;
                  pd153 = (* (( (ptr) (* (( (ptr) gf←c50076)+186)/* var←c46172 */  ))+15) );
                  (void) ( *( (fPt) ((*  (ptr) pd153 ))))(boundBox←v11720, var←c47580, pd153);
                  };
               };
            };
         };
SOURCE(14734, 163)
      {
         word pd154;
         pd154 = (* (( (ptr) (* (( (ptr) gf←c50076)+191)/* var←c47548 */  ))+13) );
         if ((0 != (word) ( *( (fPt) ((*  (ptr) pd154 ))))((*  (ptr) &fc155 ), (* (( (ptr) arc←v16268)+6) ), (* (( (ptr) arc←v16268)+7)
             ), pd154))) {
SOURCE(14802, 95)
            {
               W2 var←c47644;
               {
                  W2 var←c0390;
                  {
                     W2 var←c47676;
                     var←c47676.f0 = (*  (ptr) &fc37 );
                     var←c47676.f1 = (* (( (ptr) (*  (ptr) arc←v16268 ))+2) );
                     {
                        word pd156;
                        pd156 = (* (( (ptr) (* (( (ptr) gf←c50076)+184)/* var←c45788 */  ))+10) );
                        (void) ( *( (fPt) ((*  (ptr) pd156 ))))((word) &var←c0390, (*  (W2Pt) (*  (ptr) arc←v16268 ) ), var←c47676, pd156);
                        };
                     };
                  var←c47644 = var←c0390;
                  };
               {
                  word pd157;
                  pd157 = (* (( (ptr) (* (( (ptr) gf←c50076)+186)/* var←c46172 */  ))+15) );
                  (void) ( *( (fPt) ((*  (ptr) pd157 ))))(boundBox←v11720, var←c47644, pd157);
                  };
               };
            };
         };
SOURCE(14899, 165)
      {
         word pd158;
         pd158 = (* (( (ptr) (* (( (ptr) gf←c50076)+191)/* var←c47548 */  ))+13) );
         if ((0 != (word) ( *( (fPt) ((*  (ptr) pd158 ))))((*  (ptr) &fc159 ), (* (( (ptr) arc←v16268)+6) ), (* (( (ptr) arc←v16268)+7)
             ), pd158))) {
SOURCE(14968, 96)
            {
               W2 var←c47708;
               {
                  W2 var←c0393;
                  {
                     W2 var←c47740;
                     {
                        word x160;
                        *(float*)&var←c47740.f0 =  - (
                           x160 = (* (( (ptr) (*  (ptr) arc←v16268 ))+2) ),  *(float*)&x160
                           );
                        };
                     var←c47740.f1 = (*  (ptr) &fc37 );
                     {
                        word pd161;
                        pd161 = (* (( (ptr) (* (( (ptr) gf←c50076)+184)/* var←c45788 */  ))+10) );
                        (void) ( *( (fPt) ((*  (ptr) pd161 ))))((word) &var←c0393, (*  (W2Pt) (*  (ptr) arc←v16268 ) ), var←c47740, pd161);
                        };
                     };
                  var←c47708 = var←c0393;
                  };
               {
                  word pd162;
                  pd162 = (* (( (ptr) (* (( (ptr) gf←c50076)+186)/* var←c46172 */  ))+15) );
                  (void) ( *( (fPt) ((*  (ptr) pd162 ))))(boundBox←v11720, var←c47708, pd162);
                  };
               };
            };
         };
SOURCE(15066, 165)
      {
         word pd163;
         pd163 = (* (( (ptr) (* (( (ptr) gf←c50076)+191)/* var←c47548 */  ))+13) );
         if ((0 != (word) ( *( (fPt) ((*  (ptr) pd163 ))))((*  (ptr) &fc164 ), (* (( (ptr) arc←v16268)+6) ), (* (( (ptr) arc←v16268)+7)
             ), pd163))) {
SOURCE(15135, 96)
            {
               W2 var←c47772;
               {
                  W2 var←c0396;
                  {
                     W2 var←c47804;
                     var←c47804.f0 = (*  (ptr) &fc37 );
                     {
                        word x165;
                        *(float*)&var←c47804.f1 =  - (
                           x165 = (* (( (ptr) (*  (ptr) arc←v16268 ))+2) ),  *(float*)&x165
                           );
                        };
                     {
                        word pd166;
                        pd166 = (* (( (ptr) (* (( (ptr) gf←c50076)+184)/* var←c45788 */  ))+10) );
                        (void) ( *( (fPt) ((*  (ptr) pd166 ))))((word) &var←c0396, (*  (W2Pt) (*  (ptr) arc←v16268 ) ), var←c47804, pd166);
                        };
                     };
                  var←c47772 = var←c0396;
                  };
               {
                  word pd167;
                  pd167 = (* (( (ptr) (* (( (ptr) gf←c50076)+186)/* var←c46172 */  ))+15) );
                  (void) ( *( (fPt) ((*  (ptr) pd167 ))))(boundBox←v11720, var←c47772, pd167);
                  };
               };
            };
         };
      };
   }

static void UpdateBoundBoxOfEdge←P3120(edge←v11780, boundBox←v11808)
   word edge←v11780;
   word boundBox←v11808;
   {
   /* UpdateBoundBoxOfEdge: */ 
SOURCE(15240, 251)
SOURCE(15304, 187)
   {
      word x168;
      float tf169;
      float tf170;
      word x171;
      float tf172;
      (* (( (ptr) boundBox←v11808)+1) ) = (
         tf172 = FMIN((
               x168 = (* (( (ptr) edge←v11780)+3) ),  *(float*)&x168
               ), (
               x171 = (* (( (ptr) edge←v11780)+5) ),  *(float*)&x171
               ), tf169, tf170),  *(word*)&tf172
         );
      };
   {
      word x173;
      float tf174;
      float tf175;
      word x176;
      float tf177;
      (* (( (ptr) boundBox←v11808)+2) ) = (
         tf177 = FMAX((
               x173 = (* (( (ptr) edge←v11780)+2) ),  *(float*)&x173
               ), (
               x176 = (* (( (ptr) edge←v11780)+4) ),  *(float*)&x176
               ), tf174, tf175),  *(word*)&tf177
         );
      };
   {
      word x178;
      float tf179;
      float tf180;
      word x181;
      float tf182;
      (* (( (ptr) boundBox←v11808)+3) ) = (
         tf182 = FMAX((
               x178 = (* (( (ptr) edge←v11780)+3) ),  *(float*)&x178
               ), (
               x181 = (* (( (ptr) edge←v11780)+5) ),  *(float*)&x181
               ), tf179, tf180),  *(word*)&tf182
         );
      };
   {
      word x183;
      float tf184;
      float tf185;
      word x186;
      float tf187;
      (*  (ptr) boundBox←v11808 ) = (
         tf187 = FMIN((
               x183 = (* (( (ptr) edge←v11780)+2) ),  *(float*)&x183
               ), (
               x186 = (* (( (ptr) edge←v11780)+4) ),  *(float*)&x186
               ), tf184, tf185),  *(word*)&tf187
         );
      };
   (* (( (ptr) boundBox←v11808)+4) ) = 0;
   (* (( (ptr) boundBox←v11808)+5) ) = 0;
   }

static void UpdateBoundBoxOfArc←P3180(seg←v11868)
   word seg←v11868;
   {
   register ptr gf←c50108 =  (ptr) &globalframe;
   word pad←v16312;
   /* UpdateBoundBoxOfArc: */ 
SOURCE(15497, 272)
SOURCE(15553, 38)
   (void) UpdateTightBoxOfArc←P3060(seg←v11868, (* (( (ptr) seg←v11868)+22) ));
SOURCE(15593, 25)
   (*  (W6Pt) (* (( (ptr) seg←v11868)+21) ) ) = (*  (W6Pt) (* (( (ptr) seg←v11868)+22) ) );
SOURCE(15620, 106)
   if (((* (( (ptr) seg←v11868)+3) ) == 0)) {
SOURCE(15651, 44)
      {
         word x188;
         word x189;
         word x190;
         *(float*)&pad←v16312 = ((
            x188 = (* (( (ptr) seg←v11868)+2) ),  *(float*)&x188
            ) * (
            x189 = (*  (ptr) &fc92 ),  *(float*)&x189
            )) + (
            x190 = (*  (ptr) &fc43 ),  *(float*)&x190
            );
         };
      }
   else {
SOURCE(15695, 31)
      {
         word x191;
         word x192;
         word x193;
         *(float*)&pad←v16312 = ((
            x191 = (* (( (ptr) seg←v11868)+2) ),  *(float*)&x191
            ) / (
            x192 = (*  (ptr) &fc36 ),  *(float*)&x192
            )) + (
            x193 = (*  (ptr) &fc43 ),  *(float*)&x193
            );
         };
      };
SOURCE(15728, 41)
   {
      word pd194;
      pd194 = (* (( (ptr) (* (( (ptr) gf←c50108)+186)/* var←c46172 */  ))+17) );
      (void) ( *( (fPt) ((*  (ptr) pd194 ))))((* (( (ptr) seg←v11868)+21) ), pad←v16312, pd194);
      };
   }

static word ArcCopyData←P3240(seg←v27616)
   word seg←v27616;
   {
   register ptr gf←c50140 =  (ptr) &globalframe;
   word data←v27660;
   word arcData←v16356;
   word new←v16384;
   /* ArcCopyData: */ 
SOURCE(15775, 272)
SOURCE(15775, 272)
   data←v27660 = 0;
SOURCE(15820, 35)
   arcData←v16356 = XR←Narrow((* (( (ptr) seg←v27616)+24) ), (* (( (ptr) gf←c50140)+14) ));
SOURCE(15857, 30)
   new←v16384 = XR←NewObject(28, (* (( (ptr) gf←c50140)+14) ));
SOURCE(15889, 19)
   (*  (W2Pt) new←v16384 ) = (*  (W2Pt) arcData←v16356 );
SOURCE(15910, 35)
   (*  (W4Pt) (( (ptr) new←v16384)+2) ) = (*  (W4Pt) (( (ptr) arcData←v16356)+2) );
SOURCE(15947, 36)
   {
      word pd195;
      pd195 = (* (( (ptr) (* (( (ptr) gf←c50140)+190)/* var←c47100 */  ))+21) );
      (* (( (ptr) new←v16384)+6) ) = (word) ( *( (fPt) ((*  (ptr) pd195 ))))(pd195);
      };
SOURCE(15985, 49)
   {
      word pd196;
      pd196 = (* (( (ptr) (* (( (ptr) gf←c50140)+190)/* var←c47100 */  ))+22) );
      (void) ( *( (fPt) ((*  (ptr) pd196 ))))((* (( (ptr) arcData←v16356)+6) ), (* (( (ptr) new←v16384)+6) ), pd196);
      };
SOURCE(16036, 11)
   return(new←v16384);
   }

static void ArcReverse←P3300(seg←v11928)
   word seg←v11928;
   {
   register ptr gf←c50172 =  (ptr) &globalframe;
   word arcData←v16428;
   /* ArcReverse: */ 
SOURCE(16053, 106)
SOURCE(16089, 35)
   arcData←v16428 = XR←Narrow((* (( (ptr) seg←v11928)+24) ), (* (( (ptr) gf←c50172)+14) ));
SOURCE(16126, 33)
   {
      word pd197;
      pd197 = (* (( (ptr) (* (( (ptr) gf←c50172)+190)/* var←c47100 */  ))+25) );
      (void) ( *( (fPt) ((*  (ptr) pd197 ))))((* ((( (ptr) arcData←v16428)+6)) ), pd197);
      };
   }

static void ArcTransform←P3360(seg←v11988, transform←v12016)
   word seg←v11988;
   word transform←v12016;
   {
   register ptr gf←c50204 =  (ptr) &globalframe;
   word data←v16472;
   /* ArcTransform: */ 
SOURCE(16165, 260)
SOURCE(16251, 32)
   data←v16472 = XR←Narrow((* (( (ptr) seg←v11988)+24) ), (* (( (ptr) gf←c50204)+14) ));
SOURCE(16285, 60)
   {
      word pd198;
      pd198 = (* (( (ptr) (* (( (ptr) gf←c50204)+192)/* var←c47964 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd198 ))))((word) data←v16472, transform←v12016, (*  (W2Pt) data←v16472 ), pd198);
      };
SOURCE(16347, 52)
   {
      word pd199;
      pd199 = (* (( (ptr) (* (( (ptr) gf←c50204)+190)/* var←c47100 */  ))+23) );
      (void) ( *( (fPt) ((*  (ptr) pd199 ))))((*  (W2Pt) (( (ptr) seg←v11988)+9) ), (*  (W2Pt) data←v16472 ), (*  (W2Pt) (( (ptr) seg←v11988)+11)
          ), (* (( (ptr) data←v16472)+6) ), pd199);
      };
SOURCE(16401, 24)
   (void) UpdateBoundBoxOfArc←P3180(seg←v11988);
   }

static void ArcEndPointMoved←P3420(seg←v12076, lo←v12104, newPoint←v12132)
   word seg←v12076;
   word lo←v12104;
   W2 newPoint←v12132;
   {
   register ptr gf←c50236 =  (ptr) &globalframe;
   word data←v16516;
   W2 p0←v16544;
   W2 p1←v16572;
   W2 p2←v16600;
   /* ArcEndPointMoved: */ 
SOURCE(16431, 307)
SOURCE(16500, 32)
   data←v16516 = XR←Narrow((* (( (ptr) seg←v12076)+24) ), (* (( (ptr) gf←c50236)+14) ));
SOURCE(16534, 43)
   {
      word tcp200;
      if ((0 != lo←v12104)) {
         tcp200 = (word) &newPoint←v12132;
         }
      else {
         tcp200 = (word) (( (ptr) seg←v12076)+9);
         };
      p0←v16544 = (*  (W2Pt) tcp200 );
      };
SOURCE(16579, 34)
   p1←v16572.f0 = (*  (ptr) data←v16516 );
   p1←v16572.f1 = (* (( (ptr) data←v16516)+1) );
SOURCE(16615, 43)
   {
      word tcp201;
      if ((0 != lo←v12104)) {
         tcp201 = (word) (( (ptr) seg←v12076)+11);
         }
      else {
         tcp201 = (word) &newPoint←v12132;
         };
      p2←v16600 = (*  (W2Pt) tcp201 );
      };
SOURCE(16660, 52)
   {
      word pd202;
      pd202 = (* (( (ptr) (* (( (ptr) gf←c50236)+190)/* var←c47100 */  ))+23) );
      (void) ( *( (fPt) ((*  (ptr) pd202 ))))((*  (W2Pt) (( (ptr) seg←v12076)+9) ), (*  (W2Pt) data←v16516 ), (*  (W2Pt) (( (ptr) seg←v12076)+11)
          ), (* (( (ptr) data←v16516)+6) ), pd202);
      };
SOURCE(16714, 24)
   (void) UpdateBoundBoxOfArc←P3180(seg←v12076);
   }

static void ArcControlPointMoved←P3480(seg←v12192, transform←v12220, controlPointNum←v12248)
   word seg←v12192;
   word transform←v12220;
   word controlPointNum←v12248;
   {
   register ptr gf←c50268 =  (ptr) &globalframe;
   W2 p1Vec←v16644;
   W2 p1←v16672;
   word data←v16700;
   /* ArcControlPointMoved: */ 
SOURCE(16744, 386)
SOURCE(16883, 32)
   data←v16700 = XR←Narrow((* (( (ptr) seg←v12192)+24) ), (* (( (ptr) gf←c50268)+14) ));
SOURCE(16917, 26)
   if ((controlPointNum←v12248 != 0)) {
SOURCE(16943, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(16950, 58)
   {
      word pd203;
      pd203 = (* (( (ptr) (* (( (ptr) gf←c50268)+192)/* var←c47964 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd203 ))))((word) &p1Vec←v16644, transform←v12220, (*  (W2Pt) data←v16700 ), pd203);
      };
SOURCE(17010, 23)
   p1←v16672.f0 = p1Vec←v16644.f0;
   p1←v16672.f1 = p1Vec←v16644.f1;
SOURCE(17035, 15)
   (*  (W2Pt) data←v16700 ) = p1Vec←v16644;
SOURCE(17052, 52)
   {
      word pd204;
      pd204 = (* (( (ptr) (* (( (ptr) gf←c50268)+190)/* var←c47100 */  ))+23) );
      (void) ( *( (fPt) ((*  (ptr) pd204 ))))((*  (W2Pt) (( (ptr) seg←v12192)+9) ), (*  (W2Pt) data←v16700 ), (*  (W2Pt) (( (ptr) seg←v12192)+11)
          ), (* (( (ptr) data←v16700)+6) ), pd204);
      };
SOURCE(17106, 24)
   (void) UpdateBoundBoxOfArc←P3180(seg←v12192);
   }

static void TransformEndPoints←P3540(formal←c0439, loPt←v12308, hiPt←v12336, lo←v12364, hi←v12392, transform←v12420)
   word formal←c0439;
   W2 loPt←v12308;
   W2 hiPt←v12336;
   word lo←v12364;
   word hi←v12392;
   word transform←v12420;
   {
   register ptr gf←c50300 =  (ptr) &globalframe;
   W2 newLo←v12464;
   W2 newHi←v12492;
   /* TransformEndPoints: */ 
SOURCE(17136, 353)
SOURCE(17275, 106)
   if ((0 != lo←v12364)) {
SOURCE(17286, 72)
      {
         W2 var←c0436;
         {
            W2 var←c48028;
            var←c48028.f0 = loPt←v12308.f0;
            var←c48028.f1 = loPt←v12308.f1;
            {
               word pd205;
               pd205 = (* (( (ptr) (* (( (ptr) gf←c50300)+192)/* var←c47964 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd205 ))))((word) &var←c0436, transform←v12420, var←c48028, pd205);
               };
            };
         newLo←v12464 = var←c0436;
         };
      }
   else {
SOURCE(17358, 23)
      newLo←v12464.f0 = loPt←v12308.f0;
      newLo←v12464.f1 = loPt←v12308.f1;
      };
SOURCE(17383, 106)
   if ((0 != hi←v12392)) {
SOURCE(17394, 72)
      {
         W2 var←c0438;
         {
            W2 var←c48060;
            var←c48060.f0 = hiPt←v12336.f0;
            var←c48060.f1 = hiPt←v12336.f1;
            {
               word pd206;
               pd206 = (* (( (ptr) (* (( (ptr) gf←c50300)+192)/* var←c47964 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd206 ))))((word) &var←c0438, transform←v12420, var←c48060, pd206);
               };
            };
         newHi←v12492 = var←c0438;
         };
      }
   else {
SOURCE(17466, 23)
      newHi←v12492.f0 = hiPt←v12336.f0;
      newHi←v12492.f1 = hiPt←v12336.f1;
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0439 ) = newLo←v12464;
   (*  (W2Pt) (( (ptr) formal←c0439)+2) ) = newHi←v12492;
   return;
   }

static void ArcBuildPath←P3600(seg←v12552, lineTo←v12580, curveTo←v12608, conicTo←v12636, arcTo←v12664)
   word seg←v12552;
   word lineTo←v12580;
   word curveTo←v12608;
   word conicTo←v12636;
   word arcTo←v12664;
   {
   register ptr gf←c50332 =  (ptr) &globalframe;
   word data←v16744;
   /* ArcBuildPath: */ 
SOURCE(17494, 234)
SOURCE(17658, 32)
   data←v16744 = XR←Narrow((* (( (ptr) seg←v12552)+24) ), (* (( (ptr) gf←c50332)+14) ));
SOURCE(17692, 36)
   {
      W2 var←c48092;
      var←c48092.f0 = (* (( (ptr) seg←v12552)+11) );
      var←c48092.f1 = (* (( (ptr) seg←v12552)+12) );
      (void) ( *( (fPt) ((*  (ptr) arcTo←v12664 ))))((*  (W2Pt) data←v16744 ), var←c48092, arcTo←v12664);
      };
   }

static void ArcBuildPathTransform←P3660(seg←v12724, transform←v12752, entire←v12780, lo←v12808, hi←v12836, controlPoints←v12864, lineTo←v12892, curveTo←v12920, conicTo←v12948, arcTo←v12976)
   word seg←v12724;
   word transform←v12752;
   word entire←v12780;
   word lo←v12808;
   word hi←v12836;
   word controlPoints←v12864;
   word lineTo←v12892;
   word curveTo←v12920;
   word conicTo←v12948;
   word arcTo←v12976;
   {
   register ptr gf←c50364 =  (ptr) &globalframe;
   word data←v16788;
   W2 p0←v16816;
   W2 p1←v16844;
   W2 p2←v16872;
   /* ArcBuildPathTransform: */ 
SOURCE(17734, 670)
SOURCE(18003, 32)
   data←v16788 = XR←Narrow((* (( (ptr) seg←v12724)+24) ), (* (( (ptr) gf←c50364)+14) ));
SOURCE(18054, 333)
   if ((0 != entire←v12780)) {
SOURCE(18071, 68)
      {
         W4 var←c48124;
         (void) TransformEndPoints←P3540((word) &var←c48124, (*  (W2Pt) (( (ptr) seg←v12724)+9) ), (*  (W2Pt) (( (ptr) seg←v12724)+11)
             ), 1, 1, transform←v12752);
         p2←v16872 = (*  (W2Pt) (( (ptr) &var←c48124)+2) );
         p0←v16816 = (*  (W2Pt) &var←c48124 );
         };
SOURCE(18141, 55)
      {
         word pd207;
         pd207 = (* (( (ptr) (* (( (ptr) gf←c50364)+192)/* var←c47964 */  ))+39) );
         (void) ( *( (fPt) ((*  (ptr) pd207 ))))((word) &p1←v16844, transform←v12752, (*  (W2Pt) data←v16788 ), pd207);
         };
      }
   else {
SOURCE(18207, 64)
      {
         W4 var←c48156;
         (void) TransformEndPoints←P3540((word) &var←c48156, (*  (W2Pt) (( (ptr) seg←v12724)+9) ), (*  (W2Pt) (( (ptr) seg←v12724)+11)
             ), lo←v12808, hi←v12836, transform←v12752);
         p2←v16872 = (*  (W2Pt) (( (ptr) &var←c48156)+2) );
         p0←v16816 = (*  (W2Pt) &var←c48156 );
         };
SOURCE(18273, 114)
      {
         word limit209;
         if ((controlPoints←v12864 == 0)) { goto then0208;};
         if (XR←ExtractField(controlPoints←v12864, 32 + (word) (
               limit209 = (*  (ptr) controlPoints←v12864 ),
               BCK(0, limit209)
               ), 1)) {
            then0208: ;
            {
               W2 var←c0466;
               {
                  word pd210;
                  pd210 = (* (( (ptr) (* (( (ptr) gf←c50364)+192)/* var←c47964 */  ))+39) );
                  (void) ( *( (fPt) ((*  (ptr) pd210 ))))((word) &var←c0466, transform←v12752, (*  (W2Pt) data←v16788 ), pd210);
                  };
               p1←v16844 = var←c0466;
               };
            }
         else {
            p1←v16844 = (*  (W2Pt) data←v16788 );
            };
         };
      };
SOURCE(18392, 12)
   (void) ( *( (fPt) ((*  (ptr) arcTo←v12976 ))))(p1←v16844, p2←v16872, arcTo←v12976);
   }

static word ArcDescribe←P3720(seg←v13036, self←v13064, lo←v13092, hi←v13120, cps←v13148)
   word seg←v13036;
   word self←v13064;
   word lo←v13092;
   word hi←v13120;
   word cps←v13148;
   {
   register ptr gf←c50396 =  (ptr) &globalframe;
   word rope←v13192;
   word data←v16916;
   word arc←v16944;
   /* ArcDescribe: */ 
SOURCE(18410, 216)
SOURCE(18410, 216)
   rope←v13192 = 0;
SOURCE(18509, 32)
   data←v16916 = XR←Narrow((* (( (ptr) seg←v13036)+24) ), (* (( (ptr) gf←c50396)+14) ));
SOURCE(18543, 19)
   arc←v16944 = (* (( (ptr) data←v16916)+6) );
SOURCE(18564, 62)
   if (((* (( (ptr) arc←v16944)+8) ) != 0)) {
SOURCE(18587, 27)
      rope←v13192 = (* (( (ptr) gf←c50396)+22) );
      }
   else {
SOURCE(18614, 12)
      rope←v13192 = (* (( (ptr) gf←c50396)+23) );
      };
SOURCE(18410, 216)
   return(rope←v13192);
   }

static void ArcFileOut←P3780(seg←v13252, f←v13280)
   word seg←v13252;
   word f←v13280;
   {
   register ptr gf←c50428 =  (ptr) &globalframe;
   word data←v16988;
   W2 p1←v17016;
   /* ArcFileOut: */ 
SOURCE(18632, 148)
SOURCE(18682, 32)
   data←v16988 = XR←Narrow((* (( (ptr) seg←v13252)+24) ), (* (( (ptr) gf←c50428)+14) ));
SOURCE(18716, 34)
   p1←v17016.f0 = (*  (ptr) data←v16988 );
   p1←v17016.f1 = (* (( (ptr) data←v16988)+1) );
SOURCE(18752, 28)
   {
      word pd211;
      pd211 = (* (( (ptr) (* (( (ptr) gf←c50428)+193)/* var←c48220 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd211 ))))(f←v13280, p1←v17016, pd211);
      };
   }

static word ArcFileIn←P3840(f←v13340, loPoint←v13368, hiPoint←v13396, version←v13424)
   word f←v13340;
   W2 loPoint←v13368;
   W2 hiPoint←v13396;
   word version←v13424;
   {
   register ptr gf←c50460 =  (ptr) &globalframe;
   word seg←v13468;
   W2 p1←v17060;
   /* ArcFileIn: */ 
SOURCE(18786, 178)
SOURCE(18786, 178)
   seg←v13468 = 0;
SOURCE(18895, 27)
   {
      word pd212;
      pd212 = (* (( (ptr) (* (( (ptr) gf←c50460)+194)/* var←c48252 */  ))+19) );
      (void) ( *( (fPt) ((*  (ptr) pd212 ))))((word) &p1←v17060, f←v13340, pd212);
      };
SOURCE(18924, 40)
   seg←v13468 = (word) MakeArc←P2820(loPoint←v13368, p1←v17060, hiPoint←v13396, 0);
SOURCE(18786, 178)
   return(seg←v13468);
   }

static void ArcFieldSet←P3900(seg←v27720, controlPointNum←v27748, selected←v27776, selectClass←v27804)
   word seg←v27720;
   word controlPointNum←v27748;
   word selected←v27776;
   word selectClass←v27804;
   {
   register ptr gf←c50492 =  (ptr) &globalframe;
   word data←v17104;
   /* ArcFieldSet: */ 
SOURCE(18970, 320)
SOURCE(19027, 32)
   data←v17104 = XR←Narrow((* (( (ptr) seg←v27720)+24) ), (* (( (ptr) gf←c50492)+14) ));
SOURCE(19061, 28)
   if ((controlPointNum←v27748 != 0)) {
SOURCE(19089, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(19096, 194)
   {
      word var←c48284;
      var←c48284 = selectClass←v27804;
      switch (var←c48284) {
         case 0: 
SOURCE(19130, 33)
            (* (( (ptr) data←v17104)+2) ) = selected←v27776;
            break;
         case 1: 
SOURCE(19172, 30)
            (* (( (ptr) data←v17104)+3) ) = selected←v27776;
            break;
         case 2: 
SOURCE(19214, 33)
            (* (( (ptr) data←v17104)+4) ) = selected←v27776;
            break;
         case 3: 
SOURCE(19258, 32)
            (* (( (ptr) data←v17104)+5) ) = selected←v27776;
            break;
         default: 
SOURCE(19303, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   }

static word ArcFieldGet←P3960(seg←v27864, controlPointNum←v27892, selectClass←v27920)
   word seg←v27864;
   word controlPointNum←v27892;
   word selectClass←v27920;
   {
   register ptr gf←c50524 =  (ptr) &globalframe;
   word selected←v27964;
   word data←v17148;
   /* ArcFieldGet: */ 
SOURCE(19314, 320)
SOURCE(19371, 32)
   data←v17148 = XR←Narrow((* (( (ptr) seg←v27864)+24) ), (* (( (ptr) gf←c50524)+14) ));
SOURCE(19405, 28)
   if ((controlPointNum←v27892 != 0)) {
SOURCE(19433, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(19440, 194)
   {
      word var←c48316;
      var←c48316 = selectClass←v27920;
      switch (var←c48316) {
         case 0: 
SOURCE(19474, 33)
            selected←v27964 = (* (( (ptr) data←v17148)+2) );
            break;
         case 1: 
SOURCE(19516, 30)
            selected←v27964 = (* (( (ptr) data←v17148)+3) );
            break;
         case 2: 
SOURCE(19558, 33)
            selected←v27964 = (* (( (ptr) data←v17148)+4) );
            break;
         case 3: 
SOURCE(19602, 32)
            selected←v27964 = (* (( (ptr) data←v17148)+5) );
            break;
         default: 
SOURCE(19647, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(19314, 320)
   return(selected←v27964);
   }

static void ArcControlPointGet←P4020(formal←c0504, seg←v13528, controlPointNum←v13556)
   word formal←c0504;
   word seg←v13528;
   word controlPointNum←v13556;
   {
   register ptr gf←c50556 =  (ptr) &globalframe;
   W2 point←v13600;
   word data←v17192;
   /* ArcControlPointGet: */ 
SOURCE(19658, 188)
SOURCE(19747, 32)
   data←v17192 = XR←Narrow((* (( (ptr) seg←v13528)+24) ), (* (( (ptr) gf←c50556)+14) ));
SOURCE(19781, 26)
   if ((controlPointNum←v13556 != 0)) {
SOURCE(19807, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(19814, 32)
   point←v13600.f0 = (*  (ptr) data←v17192 );
   point←v13600.f1 = (* (( (ptr) data←v17192)+1) );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0504 ) = point←v13600;
   return;
   }

static word ArcControlPointCount←P4080(seg←v13660)
   word seg←v13660;
   {
   register ptr gf←c50588 =  (ptr) &globalframe;
   word controlPointCount←v13704;
   word data←v17236;
   /* ArcControlPointCount: */ 
SOURCE(19852, 122)
SOURCE(19931, 32)
   data←v17236 = XR←Narrow((* (( (ptr) seg←v13660)+24) ), (* (( (ptr) gf←c50588)+14) ));
SOURCE(19965, 9)
   return(1);
   }

static void ArcClosestPoint←P4140(formal←c0515, seg←v13764, testPoint←v13792, tolerance←v13820)
   word formal←c0515;
   word seg←v13764;
   W2 testPoint←v13792;
   word tolerance←v13820;
   {
   register ptr gf←c50620 =  (ptr) &globalframe;
   W2 point←v13864;
   word success←v13892;
   word data←v17280;
   /* ArcClosestPoint: */ 
SOURCE(19980, 220)
SOURCE(20094, 32)
   data←v17280 = XR←Narrow((* (( (ptr) seg←v13764)+24) ), (* (( (ptr) gf←c50620)+14) ));
SOURCE(20128, 56)
   {
      word pd213;
      pd213 = (* (( (ptr) (* (( (ptr) gf←c50620)+190)/* var←c47100 */  ))+29) );
      (void) ( *( (fPt) ((*  (ptr) pd213 ))))((word) &point←v13864, testPoint←v13792, (* (( (ptr) data←v17280)+6) ), pd213);
      };
SOURCE(20186, 14)
   success←v13892 = 1;
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0515 ) = point←v13864;
   (* (( (ptr) formal←c0515)+2) ) = success←v13892;
   return;
   }

static void ArcClosestControlPoint←P4200(formal←c0524, seg←v13952, testPoint←v13980, tolerance←v14008)
   word formal←c0524;
   word seg←v13952;
   W2 testPoint←v13980;
   word tolerance←v14008;
   {
   register ptr gf←c50652 =  (ptr) &globalframe;
   W2 point←v14052;
   W2 normal←v14080;
   word controlPointNum←v14108;
   word success←v14136;
   word data←v17324;
   /* ArcClosestControlPoint: */ 
SOURCE(20206, 269)
SOURCE(20206, 269)
   normal←v14080.f0 = (*  (ptr) &fc37 );
   normal←v14080.f1 = (*  (ptr) &fc38 );
SOURCE(20374, 32)
   data←v17324 = XR←Narrow((* (( (ptr) seg←v13952)+24) ), (* (( (ptr) gf←c50652)+14) ));
SOURCE(20408, 14)
   success←v14136 = 1;
SOURCE(20424, 19)
   controlPointNum←v14108 = 0;
SOURCE(20445, 30)
   point←v14052.f0 = (*  (ptr) data←v17324 );
   point←v14052.f1 = (* (( (ptr) data←v17324)+1) );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0524 ) = point←v14052;
   (*  (W2Pt) (( (ptr) formal←c0524)+2) ) = normal←v14080;
   (* (( (ptr) formal←c0524)+4) ) = controlPointNum←v14108;
   (* (( (ptr) formal←c0524)+5) ) = success←v14136;
   return;
   }

static word ArcAsSimpleCurve←P4260(seg←v14196, point←v14224)
   word seg←v14196;
   W2 point←v14224;
   {
   register ptr gf←c50684 =  (ptr) &globalframe;
   word simpleCurve←v14268;
   word arcData←v17368;
   word arc←v17396;
   /* ArcAsSimpleCurve: */ 
SOURCE(20481, 165)
SOURCE(20481, 165)
   simpleCurve←v14268 = 0;
SOURCE(20568, 35)
   arcData←v17368 = XR←Narrow((* (( (ptr) seg←v14196)+24) ), (* (( (ptr) gf←c50684)+14) ));
SOURCE(20605, 22)
   arc←v17396 = (* (( (ptr) arcData←v17368)+6) );
SOURCE(20629, 17)
   simpleCurve←v14268 = arc←v17396;
SOURCE(20481, 165)
   return(simpleCurve←v14268);
   }

static word ArcAsPolyline←P4320(seg←v14340, tolerance←v14368)
   word seg←v14340;
   word tolerance←v14368;
   {
   register ptr gf←c50716 =  (ptr) &globalframe;
   word polyline←v14412;
   word arcData←v17440;
   word arc←v17468;
   /* ArcAsPolyline: */ 
SOURCE(20652, 1240)
SOURCE(20652, 1240)
   polyline←v14412 = 0;
SOURCE(20756, 35)
   arcData←v17440 = XR←Narrow((* (( (ptr) seg←v14340)+24) ), (* (( (ptr) gf←c50716)+14) ));
SOURCE(20793, 22)
   arc←v17468 = (* (( (ptr) arcData←v17440)+6) );
SOURCE(20818, 1074)
   {
      word x214;
      word x215;
      word x216;
      if (((* (( (ptr) arc←v17468)+8) ) != 0) || ((
         x214 = (*  (ptr) &fc36 ),  *(float*)&x214
         ) * (
         x215 = (* (( (ptr) (*  (ptr) arc←v17468 ))+2) ),  *(float*)&x215
         ) <= (
         x216 = tolerance←v14368,  *(float*)&x216
         ))) {
SOURCE(20974, 49)
         {
            word var←c48412;
            var←c48412 = XR←NewObject(24, (* (( (ptr) gf←c50716)+7) ));
            (* (( (ptr) var←c48412)+1) ) = 2;
            polyline←v14412 = var←c48412;
            };
SOURCE(21025, 19)
         (*  (ptr) polyline←v14412 ) = 2;
SOURCE(21046, 20)
         {
            word limit217;
            (* (( (W2Pt) (( (ptr) polyline←v14412)+2))+(
                  limit217 = (* (( (ptr) polyline←v14412)+1) ),
                  BCK(0, limit217)
                  )) ) = (*  (W2Pt) (( (ptr) seg←v14340)+9) );
            };
SOURCE(21068, 20)
         {
            word limit218;
            (* (( (W2Pt) (( (ptr) polyline←v14412)+2))+(
                  limit218 = (* (( (ptr) polyline←v14412)+1) ),
                  BCK(1, limit218)
                  )) ) = (*  (W2Pt) (( (ptr) seg←v14340)+11) );
            };
         }
      else {
SOURCE(21097, 797)
         {
            word r←v17512;
            word minSides←v17540;
            word n←v17568;
            word phi←v17596;
            word sin←v17624;
            word cos←v17652;
            word deltaTheta←v17680;
            word startAngle←v17708;
SOURCE(21099, 27)
            r←v17512 = (* (( (ptr) (*  (ptr) arc←v17468 ))+2) );
SOURCE(21204, 40)
            {
               word x220;
               word x221;
               *(float*)&deltaTheta←v17680 = (
                  x220 = (*  (ptr) &fc219 ),  *(float*)&x220
                  ) * (
                  x221 = (* (( (ptr) arc←v17468)+7) ),  *(float*)&x221
                  );
               };
SOURCE(21268, 107)
            {
               word var←c48444;
               word var←c0667;
               {
                  word pd222;
                  word x223;
                  word x224;
                  word x225;
                  word x226;
                  float tf227;
                  pd222 = (* (( (ptr) (* (( (ptr) gf←c50716)+195)/* var←c48476 */  ))+9) );
                  var←c48444 = (word) ( *( (fPt) ((*  (ptr) pd222 ))))((
                        tf227 = (((
                           x223 = (*  (ptr) &fc36 ),  *(float*)&x223
                           ) * (
                           x224 = r←v17512,  *(float*)&x224
                           )) - (
                           x225 = tolerance←v14368,  *(float*)&x225
                           )) * (
                           x226 = tolerance←v14368,  *(float*)&x226
                           ),  *(word*)&tf227
                        ), pd222);
                  };
               {
                  word x228;
                  word pd229;
                  word x230;
                  word x231;
                  float tf232;
                  word x233;
                  pd229 = (* (( (ptr) (* (( (ptr) gf←c50716)+195)/* var←c48476 */  ))+16) );
                  *(float*)&var←c0667 = (
                     x228 = (*  (ptr) &fc36 ),  *(float*)&x228
                     ) * (
                     x233 = (word) ( *( (fPt) ((*  (ptr) pd229 ))))(var←c48444, (
                           tf232 = (
/*1*/   x230 = r←v17512,  *(float*)&x230
/*1*/   ) - (
/*1*/   x231 = tolerance←v14368,  *(float*)&x231
/*1*/   ),  *(word*)&tf232
                           ), pd229),  *(float*)&x233
                     );
                  };
               {
                  word x234;
                  word x235;
                  *(float*)&minSides←v17540 = (
                     x234 = deltaTheta←v17680,  *(float*)&x234
                     ) / (
                     x235 = var←c0667,  *(float*)&x235
                     );
                  };
               };
SOURCE(21377, 26)
            {
               word pd236;
               word idx237;
               pd236 = (* (( (ptr) (* (( (ptr) gf←c50716)+196)/* var←c48508 */  ))+7) );
               n←v17568 = (
                  idx237 = (word) ( *( (fPt) ((*  (ptr) pd236 ))))(minSides←v17540, pd236),
                  SGNCK(idx237)
                  );
               };
SOURCE(21405, 24)
            {
               word x238;
               *(float*)&phi←v17596 = (
                  x238 = deltaTheta←v17680,  *(float*)&x238
                  ) / (float)(unsigned)n←v17568;
               };
SOURCE(21432, 166)
            if ((0 != (* (( (ptr) arc←v17468)+1) ))) {
SOURCE(21450, 34)
               {
                  word x239;
                  word x240;
                  *(float*)&startAngle←v17708 = (
                     x239 = (*  (ptr) &fc219 ),  *(float*)&x239
                     ) * (
                     x240 = (* (( (ptr) arc←v17468)+6) ),  *(float*)&x240
                     );
                  };
               }
            else {
SOURCE(21495, 10)
               {
                  word x241;
                  *(float*)&phi←v17596 =  - (
                     x241 = phi←v17596,  *(float*)&x241
                     );
                  };
SOURCE(21507, 91)
               {
                  W2 var←c48540;
                  {
                     word pd242;
                     pd242 = (* (( (ptr) (* (( (ptr) gf←c50716)+184)/* var←c45788 */  ))+11) );
                     (void) ( *( (fPt) ((*  (ptr) pd242 ))))((word) &var←c48540, (*  (W2Pt) (( (ptr) seg←v14340)+9) ), (*  (W2Pt) (*  (ptr) arc←v17468 ) ), pd242)
                     ;
                     };
                  {
                     word x243;
                     word pd244;
                     word x245;
                     pd244 = (* (( (ptr) (* (( (ptr) gf←c50716)+184)/* var←c45788 */  ))+6) );
                     *(float*)&startAngle←v17708 = (
                        x243 = (*  (ptr) &fc219 ),  *(float*)&x243
                        ) * (
                        x245 = (word) ( *( (fPt) ((*  (ptr) pd244 ))))(var←c48540, pd244),  *(float*)&x245
                        );
                     };
                  };
               };
SOURCE(21603, 51)
            {
               word var←c48572;
               word var←c48604;
               word var←c48636;
               var←c48572 = (n←v17568 + 1);
               var←c48604 = ((word) var←c48572 << 3);
               var←c48636 = XR←NewObject((8 + var←c48604), (* (( (ptr) gf←c50716)+7) ));
               (* (( (ptr) var←c48636)+1) ) = var←c48572;
               polyline←v14412 = var←c48636;
               };
SOURCE(21656, 21)
            (*  (ptr) polyline←v14412 ) = (n←v17568 + 1);
SOURCE(21679, 20)
            {
               word limit246;
               (* (( (W2Pt) (( (ptr) polyline←v14412)+2))+(
                     limit246 = (* (( (ptr) polyline←v14412)+1) ),
                     BCK(0, limit246)
                     )) ) = (*  (W2Pt) (( (ptr) seg←v14340)+9) );
               };
SOURCE(21701, 160)
            {
               register word i←v17752 = 1;
               register word noName←c48668;
               noName←c48668 = n←v17568;
               if ((i←v17752 >= noName←c48668)) {
                  goto lab←L100023;
                  };
               lab←L100026: ;
SOURCE(21725, 35)
               {
                  word pd247;
                  word x248;
                  word x249;
                  float tf250;
                  pd247 = (* (( (ptr) (* (( (ptr) gf←c50716)+195)/* var←c48476 */  ))+10) );
                  sin←v17624 = (word) ( *( (fPt) ((*  (ptr) pd247 ))))((
                        tf250 = (
                           x248 = startAngle←v17708,  *(float*)&x248
                           ) + ((
                           x249 = phi←v17596,  *(float*)&x249
                           ) * (float)(unsigned)i←v17752),  *(word*)&tf250
                        ), pd247);
                  };
SOURCE(21762, 35)
               {
                  word pd251;
                  word x252;
                  word x253;
                  float tf254;
                  pd251 = (* (( (ptr) (* (( (ptr) gf←c50716)+195)/* var←c48476 */  ))+12) );
                  cos←v17652 = (word) ( *( (fPt) ((*  (ptr) pd251 ))))((
                        tf254 = (
                           x252 = startAngle←v17708,  *(float*)&x252
                           ) + ((
                           x253 = phi←v17596,  *(float*)&x253
                           ) * (float)(unsigned)i←v17752),  *(word*)&tf254
                        ), pd251);
                  };
SOURCE(21799, 62)
               {
                  W2 var←c48700;
                  {
                     W2 var←c0554;
                     {
                        W2 var←c48732;
                        {
                           word x255;
                           word x256;
                           *(float*)&var←c48732.f0 = (
/*1*/   x255 = cos←v17652,  *(float*)&x255
/*1*/   ) * (
/*1*/   x256 = r←v17512,  *(float*)&x256
/*1*/   );
                           };
                        {
                           word x257;
                           word x258;
                           *(float*)&var←c48732.f1 = (
/*1*/   x257 = sin←v17624,  *(float*)&x257
/*1*/   ) * (
/*1*/   x258 = r←v17512,  *(float*)&x258
/*1*/   );
                           };
                        {
                           word pd259;
                           pd259 = (* (( (ptr) (* (( (ptr) gf←c50716)+184)/* var←c45788 */  ))+10) );
                           (void) ( *( (fPt) ((*  (ptr) pd259 ))))((word) &var←c0554, (*  (W2Pt) (*  (ptr) arc←v17468 ) ), var←c48732, pd259);
                           };
                        };
                     var←c48700 = var←c0554;
                     };
                  {
                     word limit260;
                     (* (( (W2Pt) (( (ptr) polyline←v14412)+2))+(
                           limit260 = (* (( (ptr) polyline←v14412)+1) ),
                           BCK(i←v17752, limit260)
                           )) ) = var←c48700;
                     };
                  };
               i←v17752 = (i←v17752 + 1);
               if ((i←v17752 < noName←c48668)) {
                  goto lab←L100026;
                  };
               lab←L100023: ;
               };
SOURCE(21872, 20)
            {
               word limit261;
               (* (( (W2Pt) (( (ptr) polyline←v14412)+2))+(
                     limit261 = (* (( (ptr) polyline←v14412)+1) ),
                     BCK(n←v17568, limit261)
                     )) ) = (*  (W2Pt) (( (ptr) seg←v14340)+11) );
               };
            };
         };
      };
SOURCE(20652, 1240)
   return(polyline←v14412);
   }

static void ArcCPNormal←P4380(formal←c0565, seg←v14472, controlPointNum←v14500, cPoint←v14528, testPoint←v14556)
   word formal←c0565;
   word seg←v14472;
   word controlPointNum←v14500;
   W2 cPoint←v14528;
   W2 testPoint←v14556;
   {
   register ptr gf←c50748 =  (ptr) &globalframe;
   W2 normal←v14600;
   word arcData←v17796;
   W2 origin←v17824;
   /* ArcCPNormal: */ 
SOURCE(21901, 249)
SOURCE(22011, 35)
   arcData←v17796 = XR←Narrow((* (( (ptr) seg←v14472)+24) ), (* (( (ptr) gf←c50748)+14) ));
SOURCE(22048, 41)
   origin←v17824 = (*  (W2Pt) (*  (ptr) (* (( (ptr) arcData←v17796)+6) ) ) );
SOURCE(22091, 59)
   {
      W2 var←c48764;
      {
         word pd262;
         pd262 = (* (( (ptr) (* (( (ptr) gf←c50748)+184)/* var←c45788 */  ))+11) );
         (void) ( *( (fPt) ((*  (ptr) pd262 ))))((word) &var←c48764, cPoint←v14528, origin←v17824, pd262);
         };
      {
         W2 var←c0564;
         {
            word pd263;
            pd263 = (* (( (ptr) (* (( (ptr) gf←c50748)+184)/* var←c45788 */  ))+13) );
            (void) ( *( (fPt) ((*  (ptr) pd263 ))))((word) &var←c0564, var←c48764, pd263);
            };
         normal←v14600 = var←c0564;
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0565 ) = normal←v14600;
   return;
   }

static void ArcJointNormal←P4440(formal←c0580, seg←v14660, joint←v14688, point←v14716, hi←v14744)
   word formal←c0580;
   word seg←v14660;
   W2 joint←v14688;
   W2 point←v14716;
   word hi←v14744;
   {
   register ptr gf←c50780 =  (ptr) &globalframe;
   W2 normal←v14788;
   W2 tangent←v14816;
   word arcData←v17868;
   W2 origin←v17896;
   /* ArcJointNormal: */ 
SOURCE(22156, 313)
SOURCE(22261, 35)
   arcData←v17868 = XR←Narrow((* (( (ptr) seg←v14660)+24) ), (* (( (ptr) gf←c50780)+14) ));
SOURCE(22298, 41)
   origin←v17896 = (*  (W2Pt) (*  (ptr) (* (( (ptr) arcData←v17868)+6) ) ) );
SOURCE(22341, 58)
   {
      W2 var←c48796;
      {
         word pd264;
         pd264 = (* (( (ptr) (* (( (ptr) gf←c50780)+184)/* var←c45788 */  ))+11) );
         (void) ( *( (fPt) ((*  (ptr) pd264 ))))((word) &var←c48796, joint←v14688, origin←v17896, pd264);
         };
      {
         W2 var←c0576;
         {
            word pd265;
            pd265 = (* (( (ptr) (* (( (ptr) gf←c50780)+184)/* var←c45788 */  ))+13) );
            (void) ( *( (fPt) ((*  (ptr) pd265 ))))((word) &var←c0576, var←c48796, pd265);
            };
         normal←v14788 = var←c0576;
         };
      };
SOURCE(22401, 68)
   {
      W2 var←c48828;
      {
         word pd266;
         pd266 = (* (( (ptr) (* (( (ptr) gf←c50780)+184)/* var←c45788 */  ))+5) );
         (void) ( *( (fPt) ((*  (ptr) pd266 ))))((word) &var←c48828, normal←v14788, (*  (ptr) &fc155 ), pd266);
         };
      {
         W2 var←c0579;
         {
            word pd267;
            pd267 = (* (( (ptr) (* (( (ptr) gf←c50780)+184)/* var←c45788 */  ))+13) );
            (void) ( *( (fPt) ((*  (ptr) pd267 ))))((word) &var←c0579, var←c48828, pd267);
            };
         tangent←v14816 = var←c0579;
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0580 ) = normal←v14788;
   (*  (W2Pt) (( (ptr) formal←c0580)+2) ) = tangent←v14816;
   return;
   }

static void ArcAddJoint←P4500(formal←c0606, seg←v14876, pos←v14904)
   word formal←c0606;
   word seg←v14876;
   W2 pos←v14904;
   {
   register ptr gf←c50812 =  (ptr) &globalframe;
   word seg1←v14948;
   word seg2←v14976;
   word data←v17940;
   word data1←v17968 = 0;
   word data2←v17996 = 0;
   W2 p0Rel←v18024;
   W2 p1Rel←v18052;
   W2 p2Rel←v18080;
   W2 caretRel←v18108;
   word cpAngle←v18136;
   word caretAngle←v18164;
   W2 rotVec←v18192;
   /* ArcAddJoint: */ 
SOURCE(22474, 1648)
SOURCE(22474, 1648)
   seg1←v14948 = 0;
SOURCE(22474, 1648)
   seg2←v14976 = 0;
SOURCE(22554, 32)
   data←v17940 = XR←Narrow((* (( (ptr) seg←v14876)+24) ), (* (( (ptr) gf←c50812)+14) ));
SOURCE(22611, 65)
   {
      word pd268;
      pd268 = (* (( (ptr) (* (( (ptr) gf←c50812)+184)/* var←c45788 */  ))+11) );
      (void) ( *( (fPt) ((*  (ptr) pd268 ))))((word) &p0Rel←v18024, (*  (W2Pt) (( (ptr) (* (( (ptr) data←v17940)+6) ))+2) ), (*  (W2Pt) (*  (ptr) (* (
            ( (ptr) data←v17940)+6) ) ) ), pd268);
      };
SOURCE(22678, 61)
   {
      word pd269;
      pd269 = (* (( (ptr) (* (( (ptr) gf←c50812)+184)/* var←c45788 */  ))+11) );
      (void) ( *( (fPt) ((*  (ptr) pd269 ))))((word) &p1Rel←v18052, (*  (W2Pt) data←v17940 ), (*  (W2Pt) (*  (ptr) (* (( (ptr) data←v17940)+6)
          ) ) ), pd269);
      };
SOURCE(22741, 65)
   {
      word pd270;
      pd270 = (* (( (ptr) (* (( (ptr) gf←c50812)+184)/* var←c45788 */  ))+11) );
      (void) ( *( (fPt) ((*  (ptr) pd270 ))))((word) &p2Rel←v18080, (*  (W2Pt) (( (ptr) (* (( (ptr) data←v17940)+6) ))+4) ), (*  (W2Pt) (*  (ptr) (* (
            ( (ptr) data←v17940)+6) ) ) ), pd270);
      };
SOURCE(22808, 60)
   {
      word pd271;
      pd271 = (* (( (ptr) (* (( (ptr) gf←c50812)+184)/* var←c45788 */  ))+11) );
      (void) ( *( (fPt) ((*  (ptr) pd271 ))))((word) &caretRel←v18108, pos←v14904, (*  (W2Pt) (*  (ptr) (* (( (ptr) data←v17940)+6)
          ) ) ), pd271);
      };
SOURCE(22870, 62)
   {
      word pd272;
      pd272 = (* (( (ptr) (* (( (ptr) gf←c50812)+184)/* var←c45788 */  ))+7) );
      cpAngle←v18136 = (word) ( *( (fPt) ((*  (ptr) pd272 ))))(p0Rel←v18024, p1Rel←v18052, pd272);
      };
SOURCE(22934, 68)
   {
      word pd273;
      pd273 = (* (( (ptr) (* (( (ptr) gf←c50812)+184)/* var←c45788 */  ))+7) );
      caretAngle←v18164 = (word) ( *( (fPt) ((*  (ptr) pd273 ))))(p0Rel←v18024, caretRel←v18108, pd273);
      };
SOURCE(23019, 33)
   {
      word pd274;
      pd274 = (* (( (ptr) (* (( (ptr) gf←c50812)+185)/* var←c46108 */  ))+17) );
      seg1←v14948 = (word) ( *( (fPt) ((*  (ptr) pd274 ))))(seg←v14876, pd274);
      };
SOURCE(23054, 33)
   {
      word pd275;
      pd275 = (* (( (ptr) (* (( (ptr) gf←c50812)+185)/* var←c46108 */  ))+17) );
      seg2←v14976 = (word) ( *( (fPt) ((*  (ptr) pd275 ))))(seg←v14876, pd275);
      };
SOURCE(23089, 25)
   data1←v17968 = XR←Narrow((* (( (ptr) seg1←v14948)+24) ), (* (( (ptr) gf←c50812)+14) ));
SOURCE(23116, 25)
   data2←v17996 = XR←Narrow((* (( (ptr) seg2←v14976)+24) ), (* (( (ptr) gf←c50812)+14) ));
SOURCE(23143, 23)
   (*  (W2Pt) (( (ptr) seg2←v14976)+9) ) = pos←v14904;
   (*  (W2Pt) (( (ptr) seg1←v14948)+11) ) = pos←v14904;
SOURCE(23168, 21)
   (*  (W2Pt) (( (ptr) seg1←v14948)+9) ) = (*  (W2Pt) (( (ptr) (* (( (ptr) data←v17940)+6) ))+2) );
SOURCE(23191, 21)
   (*  (W2Pt) (( (ptr) seg2←v14976)+11) ) = (*  (W2Pt) (( (ptr) (* (( (ptr) data←v17940)+6) ))+4) );
SOURCE(23214, 551)
   {
      word x276;
      word x277;
      if (((
         x276 = caretAngle←v18164,  *(float*)&x276
         ) < (
         x277 = cpAngle←v18136,  *(float*)&x277
         ))) {
SOURCE(23296, 95)
         {
            word var←c48892;
            {
               word pd278;
               word x279;
               word x280;
               float tf281;
               pd278 = (* (( (ptr) (* (( (ptr) gf←c50812)+192)/* var←c47964 */  ))+9) );
               var←c48892 = (word) ( *( (fPt) ((*  (ptr) pd278 ))))((
                     tf281 = ( - (
                        x279 = caretAngle←v18164,  *(float*)&x279
                        )) / (
                        x280 = (*  (ptr) &fc36 ),  *(float*)&x280
                        ),  *(word*)&tf281
                     ), pd278);
               };
            {
               word pd282;
               pd282 = (* (( (ptr) (* (( (ptr) gf←c50812)+192)/* var←c47964 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd282 ))))((word) &rotVec←v18192, var←c48892, caretRel←v18108, pd282);
               };
            };
SOURCE(23393, 56)
         {
            word pd283;
            pd283 = (* (( (ptr) (* (( (ptr) gf←c50812)+184)/* var←c45788 */  ))+10) );
            (void) ( *( (fPt) ((*  (ptr) pd283 ))))((word) data1←v17968, rotVec←v18192, (*  (W2Pt) (*  (ptr) (* (( (ptr) data←v17940)+6)
                ) ) ), pd283);
            };
         }
      else {
SOURCE(23511, 62)
         {
            word pd284;
            pd284 = (* (( (ptr) (* (( (ptr) gf←c50812)+184)/* var←c45788 */  ))+7) );
            caretAngle←v18164 = (word) ( *( (fPt) ((*  (ptr) pd284 ))))(caretRel←v18108, p2Rel←v18080, pd284);
            };
SOURCE(23613, 94)
         {
            word var←c48924;
            {
               word pd285;
               word x286;
               word x287;
               float tf288;
               pd285 = (* (( (ptr) (* (( (ptr) gf←c50812)+192)/* var←c47964 */  ))+9) );
               var←c48924 = (word) ( *( (fPt) ((*  (ptr) pd285 ))))((
                     tf288 = (
                        x286 = caretAngle←v18164,  *(float*)&x286
                        ) / (
                        x287 = (*  (ptr) &fc36 ),  *(float*)&x287
                        ),  *(word*)&tf288
                     ), pd285);
               };
            {
               word pd289;
               pd289 = (* (( (ptr) (* (( (ptr) gf←c50812)+192)/* var←c47964 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd289 ))))((word) &rotVec←v18192, var←c48924, caretRel←v18108, pd289);
               };
            };
SOURCE(23709, 56)
         {
            word pd290;
            pd290 = (* (( (ptr) (* (( (ptr) gf←c50812)+184)/* var←c45788 */  ))+10) );
            (void) ( *( (fPt) ((*  (ptr) pd290 ))))((word) data2←v17996, rotVec←v18192, (*  (W2Pt) (*  (ptr) (* (( (ptr) data←v17940)+6)
                ) ) ), pd290);
            };
         };
      };
SOURCE(23770, 59)
   {
      word pd291;
      pd291 = (* (( (ptr) (* (( (ptr) gf←c50812)+190)/* var←c47100 */  ))+24) );
      (* (( (ptr) data1←v17968)+6) ) = (word) ( *( (fPt) ((*  (ptr) pd291 ))))((*  (W2Pt) (( (ptr) seg1←v14948)+9) ), (*  (W2Pt) data1←v17968 ), (*  (W2Pt) (
            ( (ptr) seg1←v14948)+11) ), pd291);
      };
SOURCE(23831, 59)
   {
      word pd292;
      pd292 = (* (( (ptr) (* (( (ptr) gf←c50812)+190)/* var←c47100 */  ))+24) );
      (* (( (ptr) data2←v17996)+6) ) = (word) ( *( (fPt) ((*  (ptr) pd292 ))))((*  (W2Pt) (( (ptr) seg2←v14976)+9) ), (*  (W2Pt) data2←v17996 ), (*  (W2Pt) (
            ( (ptr) seg2←v14976)+11) ), pd292);
      };
SOURCE(23892, 25)
   (void) UpdateBoundBoxOfArc←P3180(seg1←v14948);
SOURCE(23919, 25)
   (void) UpdateBoundBoxOfArc←P3180(seg2←v14976);
SOURCE(23946, 176)
   if ((0 == (* (( (ptr) (* (( (ptr) data←v17940)+6) ))+1) ))) {
SOURCE(24039, 30)
      {
         word pd293;
         pd293 = (* (( (ptr) (* (( (ptr) gf←c50812)+185)/* var←c46108 */  ))+22) );
         (void) ( *( (fPt) ((*  (ptr) pd293 ))))(seg1←v14948, pd293);
         };
SOURCE(24071, 30)
      {
         word pd294;
         pd294 = (* (( (ptr) (* (( (ptr) gf←c50812)+185)/* var←c46108 */  ))+22) );
         (void) ( *( (fPt) ((*  (ptr) pd294 ))))(seg2←v14976, pd294);
         };
SOURCE(24103, 19)
      seg1←v14948 = seg2←v14976;
      /* removed bogus assignment */ 
      goto lab←L100029;
      };
   /* removed tail goto */ 
   lab←L100029: ;
   (*  (ptr) formal←c0606 ) = seg1←v14948;
   (* (( (ptr) formal←c0606)+1) ) = seg2←v14976;
   return;
   }

static void Init←P4560()
   {
   register ptr gf←c50844 =  (ptr) &globalframe;
   word classDef←v18236;
   /* Init: */ 
SOURCE(24131, 487)
SOURCE(24149, 78)
   {
      word var←c48956;
      word var←c48988;
      var←c48956 = (word) BuildLineClass←P1380();
      var←c48988 = XR←NewObject(8, (* (( (ptr) gf←c50844)+13) ));
      (*  (ptr) var←c48988 ) = (* (( (ptr) gf←c50844)+21) );
      (* (( (ptr) var←c48988)+1) ) = var←c48956;
      classDef←v18236 = var←c48988;
      };
SOURCE(24229, 40)
   {
      word pd295;
      pd295 = (* (( (ptr) (* (( (ptr) gf←c50844)+185)/* var←c46108 */  ))+25) );
      (void) ( *( (fPt) ((*  (ptr) pd295 ))))(classDef←v18236, pd295);
      };
SOURCE(24271, 76)
   {
      word var←c49020;
      word var←c49052;
      var←c49020 = (word) BuildArcClass←P2700();
      var←c49052 = XR←NewObject(8, (* (( (ptr) gf←c50844)+13) ));
      (*  (ptr) var←c49052 ) = (* (( (ptr) gf←c50844)+20) );
      (* (( (ptr) var←c49052)+1) ) = var←c49020;
      classDef←v18236 = var←c49052;
      };
SOURCE(24349, 40)
   {
      word pd296;
      pd296 = (* (( (ptr) (* (( (ptr) gf←c50844)+185)/* var←c46108 */  ))+25) );
      (void) ( *( (fPt) ((*  (ptr) pd296 ))))(classDef←v18236, pd296);
      };
SOURCE(24392, 72)
   {
      word var←c49084;
      word var←c49116;
      var←c49084 = (word) BuildCircleClass←P1020();
      var←c49116 = XR←NewObject(8, (* (( (ptr) gf←c50844)+13) ));
      (*  (ptr) var←c49116 ) = (* (( (ptr) gf←c50844)+25) );
      (* (( (ptr) var←c49116)+1) ) = var←c49084;
      classDef←v18236 = var←c49116;
      };
SOURCE(24466, 40)
   {
      word pd297;
      pd297 = (* (( (ptr) (* (( (ptr) gf←c50844)+185)/* var←c46108 */  ))+25) );
      (void) ( *( (fPt) ((*  (ptr) pd297 ))))(classDef←v18236, pd297);
      };
SOURCE(24508, 68)
   {
      word var←c49148;
      word var←c49180;
      var←c49148 = (word) BuildDiscClass←P1260();
      var←c49180 = XR←NewObject(8, (* (( (ptr) gf←c50844)+13) ));
      (*  (ptr) var←c49180 ) = (* (( (ptr) gf←c50844)+24) );
      (* (( (ptr) var←c49180)+1) ) = var←c49148;
      classDef←v18236 = var←c49180;
      };
SOURCE(24578, 40)
   {
      word pd298;
      pd298 = (* (( (ptr) (* (( (ptr) gf←c50844)+185)/* var←c46108 */  ))+25) );
      (void) ( *( (fPt) ((*  (ptr) pd298 ))))(classDef←v18236, pd298);
      };
   }

/* file: GGSegmentImplB, module: GGSegmentImplB, compiled at: February 5, 1993 2:09:42 pm PST */ 
extern void XR←install←GGSegmentImplB() {
   NoName←Q4860();
   }
extern void XR←run←GGSegmentImplB() { XR←Start(&globalframe); }