/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1993 by Xerox Corporation. All rights reserved. */ /* time: February 5, 1993 1:54:49 pm PST */ /* C2C version: October 7, 1992 (native) */ /* ref-counting: off */ /* file: GGCirclesImpl, module: GGCirclesImpl */ /* switches: bcfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> static char versionStamp[] = "@(#)mob←version [375179856,1736967435] GGCirclesImpl"; 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 struct {word f0, f1, f2;} W3; #define SOURCE(p, l) /* source p, l */ static float fc10 = 0.0; static float fc13 = 0.5; #define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) ) static float fc61 = 0.000005; static float fc63 = 12.0; static float fc79 = 1.0e-5; static float fc93 = 7.2E-4; static float fc96 = -7.2E-4; #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) ) static float fc137 = 1.0; static float fc157 = 2.0; static float fc209 = -1.0; static float fc255 = 360.0; #define FMIN(x, y, tx, ty) ( (tx=((float) x)) <= (ty=((float) y)) ? tx : ty ) static void NoName←Q2484(); static void GGCirclesImpl←P0(); static word CreateEmptyCircle←P60(); static void CopyCircle←P120(); static void FillCircleFromPointAndRadius←P180(); static word CircleFromPointAndRadius←P240(); static void CircleFrom3Points←P300(); static word FillCircleFrom3Points←P360(); static word RatherClose←P420(); static void CircleMeetsLine←P480(); static void CircleMeetsEdge←P540(); static void CircleMeetsCircle←P600(); static void CircleMeetsArc←P660(); static word SignedCircleDistance←P720(); static word CircleDistance←P780(); static void PointProjectedOntoCircle←P840(); static word PointIsInCircle←P900(); static word CreateArc←P960(); static word CreateEmptyArc←P1020(); static void ReverseArc←P1080(); static void FillArc←P1140(); static void CopyArc←P1200(); static word CirclePointOnArc←P1260(); static void ArcMeetsLine←P1320(); static void ArcMeetsEdge←P1380(); static void ArcMeetsArc←P1440(); static void NearestEndpoint←P1500(); static word DistanceSquaredToNearestEndpoint←P1560(); static void NearestPointOnArc←P1620(); static word DistancePointToArc←P1680(); static word DistanceSquaredPointToArc←P1740(); static word OnArc←P1800(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\012\121\313\233\300\012\365\115\261\100\164\000\000"}; static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\012\121\313\233\300\012\365\115\261\100\200\000\000"}; static struct {unsigned f; char r[4];} string3 = {196611, "\004A\001"}; static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\026\134\312\120\300\147\210\005\013\100\164\000\000"}; static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\121\216\014\136\300\111\163\224\167\100\150\000\000"}; static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\103\306\166\071\300\047\126\012\237\100\150\000\000"}; static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"}; static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string9 = {851984, "\257\300IKM\275\300Y\0222&@h\000\000"}; static struct { word f0[6]; word f6; word f7; word f8; word f9; word f10; word f11; word f12; word f13; word f14; word f15; word f16; word f17; word f18; word f19; word f20; word f21; word f22; word f23; word f24; word f25; 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[6]; } globalframe = { {0}, (word) OnArc←P1800, 0, (word) DistanceSquaredPointToArc←P1740, 0, (word) DistancePointToArc←P1680, 0, (word) NearestPointOnArc←P1620, 0, (word) DistanceSquaredToNearestEndpoint←P1560, 0, (word) NearestEndpoint←P1500, 0, (word) ArcMeetsArc←P1440, 0, (word) ArcMeetsEdge←P1380, 0, (word) ArcMeetsLine←P1320, 0, (word) CirclePointOnArc←P1260, 0, (word) CopyArc←P1200, 0, (word) FillArc←P1140, 0, (word) ReverseArc←P1080, 0, (word) CreateEmptyArc←P1020, 0, (word) CreateArc←P960, 0, (word) PointIsInCircle←P900, 0, (word) PointProjectedOntoCircle←P840, 0, (word) CircleDistance←P780, 0, (word) SignedCircleDistance←P720, 0, (word) CircleMeetsArc←P660, 0, (word) CircleMeetsCircle←P600, 0, (word) CircleMeetsEdge←P540, 0, (word) CircleMeetsLine←P480, 0, (word) RatherClose←P420, 0, (word) FillCircleFrom3Points←P360, 0, (word) CircleFrom3Points←P300, 0, (word) CircleFromPointAndRadius←P240, 0, (word) FillCircleFromPointAndRadius←P180, 0, (word) CopyCircle←P120, 0, (word) CreateEmptyCircle←P60, 0, (word) GGCirclesImpl←P0, {0} }; static void NoName←Q2484() { register ptr gf←c0319 = (ptr) &globalframe; word var←c19340; (* (( (ptr) gf←c0319)+4) ) = (word) XR←GetTypeIndexS((word) (&string1)); (* (( (ptr) gf←c0319)+5) ) = (word) XR←GetTypeIndex((word) &string2, 0, (word) &string3); (void) XR←DeclareGlobalFrame((word) "GGCirclesImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string4)), (word) (( (bPt) gf←c0319)+264) /* var←c17292 */ ); var←c19340 = (word) XR←ImportInterface((word) "Angles2d", (word) XR←GetTypeIndexS((word) (&string5)), 11); (* (( (ptr) gf←c0319)+71)/* var←c18636 */ ) = var←c19340; (void) XR←ImportProcS(var←c19340, 67897603); (void) XR←ImportProcS(var←c19340, 67634178); (void) XR←ImportProcS(var←c19340, 67897347); var←c19340 = (word) XR←ImportInterface((word) "Lines2d", (word) XR←GetTypeIndexS((word) (&string6)), 50); (* (( (ptr) gf←c0319)+69)/* var←c17516 */ ) = var←c19340; (void) XR←ImportProcS(var←c19340, 67905282); (void) XR←ImportProcS(var←c19340, 67905538); (void) XR←ImportProcS(var←c19340, 135014914); (void) XR←ImportProcS(var←c19340, 135013890); (void) XR←ImportProcS(var←c19340, 201859074); (void) XR←ImportProcS(var←c19340, 201858818); (void) XR←ImportProcS(var←c19340, 67906562); (void) XR←ImportProcS(var←c19340, 529922); (void) XR←ImportProcS(var←c19340, 67114240); (void) XR←ImportProcS(var←c19340, 68163330); (void) XR←ImportProcS(var←c19340, 67906306); (void) XR←ImportProcS(var←c19340, 67904002); var←c19340 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string7)), 21); (* (( (ptr) gf←c0319)+68)/* var←c17356 */ ) = var←c19340; (void) XR←ImportProcS(var←c19340, 68161794); (void) XR←ImportProcS(var←c19340, 67633665); (void) XR←ImportProcS(var←c19340, 67636737); (void) XR←ImportProcS(var←c19340, 135267842); (void) XR←ImportProcS(var←c19340, 135006210); (void) XR←ImportProcS(var←c19340, 135268098); (void) XR←ImportProcS(var←c19340, 68161282); var←c19340 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string8)), 36); (* (( (ptr) gf←c0319)+70)/* var←c17740 */ ) = var←c19340; (void) XR←ImportProcS(var←c19340, 67372289); var←c19340 = (word) XR←ExportInterface((word) "GGCircles", (word) XR←GetTypeIndexS((word) (&string9)), 29); (* (( (ptr) gf←c0319)+72)/* var←c19372 */ ) = var←c19340; (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+256)/* var←c17260 */ , 67108864); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+248)/* var←c17228 */ , 524546); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+240)/* var←c17196 */ , 1049091); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+232)/* var←c17164 */ , 67896066); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+216)/* var←c17100 */ , 68944900); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+224)/* var←c17132 */ , 135791875); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+200)/* var←c17036 */ , 403179010); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+192)/* var←c17004 */ , 403179266); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+184)/* var←c16972 */ , 403179522); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+176)/* var←c16940 */ , 403179778); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+88)/* var←c16588 */ , 403180034); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+80)/* var←c16556 */ , 403180290); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+72)/* var←c16524 */ , 403180546); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+168)/* var←c16908 */ , 67898626); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+160)/* var←c16876 */ , 67898882); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+152)/* var←c16844 */ , 135008002); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+144)/* var←c16812 */ , 67899394); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+128)/* var←c16748 */ , 67113216); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+104)/* var←c16652 */ , 528898); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+112)/* var←c16684 */ , 1839876); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+136)/* var←c16780 */ , 68686851); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+120)/* var←c16716 */ , 267521); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+96)/* var←c16620 */ , 67900930); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+64)/* var←c16492 */ , 135010050); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+56)/* var←c16460 */ , 67901442); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+48)/* var←c16428 */ , 135010562); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+40)/* var←c16396 */ , 67901954); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+32)/* var←c16364 */ , 67902210); (void) XR←ExportProcS(var←c19340, (word) (( (bPt) gf←c0319)+24)/* var←c16332 */ , 67902466); } static void GGCirclesImpl←P0(formal←c040, formal←c039) word formal←c040; word formal←c039; { /* GGCirclesImpl: */ } static word CreateEmptyCircle←P60() { register ptr gf←c19404 = (ptr) &globalframe; word circle←v3860; /* CreateEmptyCircle: */ SOURCE(469, 124) SOURCE(469, 124) circle←v3860 = 0; SOURCE(532, 61) { word var←c17324; var←c17324 = XR←NewObject(12, (* (( (ptr) gf←c19404)+4) )); (* (ptr) var←c17324 ) = (* (ptr) &fc10 ); (* (( (ptr) var←c17324)+1) ) = (* (ptr) &fc10 ); (* (( (ptr) var←c17324)+2) ) = (* (ptr) &fc10 ); circle←v3860 = var←c17324; }; SOURCE(469, 124) return(circle←v3860); } static void CopyCircle←P120(from←v3920, to←v3948) word from←v3920; word to←v3948; { /* CopyCircle: */ SOURCE(599, 104) SOURCE(655, 23) (* (W2Pt) to←v3948 ) = (* (W2Pt) from←v3920 ); SOURCE(680, 23) (* (( (ptr) to←v3948)+2) ) = (* (( (ptr) from←v3920)+2) ); } static void FillCircleFromPointAndRadius←P180(pt←v4008, radius←v4036, circle←v4064) W2 pt←v4008; word radius←v4036; word circle←v4064; { /* FillCircleFromPointAndRadius: */ SOURCE(709, 131) SOURCE(798, 18) (* (W2Pt) circle←v4064 ) = pt←v4008; SOURCE(818, 22) (* (( (ptr) circle←v4064)+2) ) = radius←v4036; } static word CircleFromPointAndRadius←P240(pt←v4124, radius←v4152) W2 pt←v4124; word radius←v4152; { word circle←v4196; /* CircleFromPointAndRadius: */ SOURCE(846, 172) SOURCE(846, 172) circle←v4196 = 0; SOURCE(940, 28) circle←v4196 = (word) CreateEmptyCircle←P60(); SOURCE(970, 48) (void) FillCircleFromPointAndRadius←P180(pt←v4124, radius←v4152, circle←v4196); SOURCE(846, 172) return(circle←v4196); } static void CircleFrom3Points←P300(formal←c056, p0←v4256, p1←v4284, p2←v4312) word formal←c056; W2 p0←v4256; W2 p1←v4284; W2 p2←v4312; { word circle←v4356; word linear←v4384; /* CircleFrom3Points: */ SOURCE(1024, 174) SOURCE(1024, 174) circle←v4356 = 0; SOURCE(1118, 28) circle←v4356 = (word) CreateEmptyCircle←P60(); SOURCE(1148, 50) linear←v4384 = (word) FillCircleFrom3Points←P360(p0←v4256, p1←v4284, p2←v4312, circle←v4356); /* removed tail goto */ (* (ptr) formal←c056 ) = circle←v4356; (* (( (ptr) formal←c056)+1) ) = linear←v4384; return; } static word FillCircleFrom3Points←P360(p0←v4444, p1←v4472, p2←v4500, circle←v4528) W2 p0←v4444; W2 p1←v4472; W2 p2←v4500; word circle←v4528; { register ptr gf←c19436 = (ptr) &globalframe; word linear←v4572; /* FillCircleFrom3Points: */ SOURCE(1204, 1045) SOURCE(1319, 930) if (XR←EqualWords(&p0←v4444, &p2←v4500, 2)) { SOURCE(1337, 50) { word x11; word x12; word x14; *(float*)circle←v4528 = (( x11 = p0←v4444.f0, *(float*)&x11 ) + ( x12 = p1←v4472.f0, *(float*)&x12 )) * ( x14 = (* (ptr) &fc13 ), *(float*)&x14 ); }; { word x15; word x16; word x17; *(float*)(( (ptr) circle←v4528)+1) = (( x15 = p0←v4444.f1, *(float*)&x15 ) + ( x16 = p1←v4472.f1, *(float*)&x16 )) * ( x17 = (* (ptr) &fc13 ), *(float*)&x17 ); }; SOURCE(1413, 43) { word pd18; pd18 = (* (( (ptr) (* (( (ptr) gf←c19436)+68)/* var←c17356 */ ))+19) ); (* (( (ptr) circle←v4528)+2) ) = (word) ( *( (fPt) ((* (ptr) pd18 ))))((* (W2Pt) circle←v4528 ), p0←v4444, pd18); }; SOURCE(1486, 14) linear←v4572 = 0; } else { SOURCE(1509, 745) { W2 m1←v8404; W2 v1←v8432; word a1←v8460; word b1←v8488; word c1←v8516; W2 m2←v8544; W2 v2←v8572; word a2←v8600; word b2←v8628; word c2←v8656; word det←v8684; SOURCE(1511, 46) { word x19; word x20; word x21; *(float*)&m1←v8404.f0 = (( x19 = p0←v4444.f0, *(float*)&x19 ) + ( x20 = p1←v4472.f0, *(float*)&x20 )) * ( x21 = (* (ptr) &fc13 ), *(float*)&x21 ); }; { word x22; word x23; word x24; *(float*)&m1←v8404.f1 = (( x22 = p0←v4444.f1, *(float*)&x22 ) + ( x23 = p1←v4472.f1, *(float*)&x23 )) * ( x24 = (* (ptr) &fc13 ), *(float*)&x24 ); }; SOURCE(1596, 34) { word x25; word x26; *(float*)&v1←v8432.f0 = ( x25 = m1←v8404.f1, *(float*)&x25 ) - ( x26 = p0←v4444.f1, *(float*)&x26 ); }; { word x27; word x28; *(float*)&v1←v8432.f1 = ( x27 = p0←v4444.f0, *(float*)&x27 ) - ( x28 = m1←v8404.f0, *(float*)&x28 ); }; SOURCE(1678, 15) a1←v8460 = v1←v8432.f1; SOURCE(1695, 16) { word x29; *(float*)&b1←v8488 = - ( x29 = v1←v8432.f0, *(float*)&x29 ); }; SOURCE(1713, 26) { word x30; word x31; word x32; word x33; *(float*)&c1←v8516 = (( x30 = a1←v8460, *(float*)&x30 ) * ( x31 = m1←v8404.f0, *(float*)&x31 )) + (( x32 = b1←v8488, *(float*)&x32 ) * ( x33 = m1←v8404.f1, *(float*)&x33 )); }; SOURCE(1741, 46) { word x34; word x35; word x36; *(float*)&m2←v8544.f0 = (( x34 = p0←v4444.f0, *(float*)&x34 ) + ( x35 = p2←v4500.f0, *(float*)&x35 )) * ( x36 = (* (ptr) &fc13 ), *(float*)&x36 ); }; { word x37; word x38; word x39; *(float*)&m2←v8544.f1 = (( x37 = p0←v4444.f1, *(float*)&x37 ) + ( x38 = p2←v4500.f1, *(float*)&x38 )) * ( x39 = (* (ptr) &fc13 ), *(float*)&x39 ); }; SOURCE(1827, 34) { word x40; word x41; *(float*)&v2←v8572.f0 = ( x40 = m2←v8544.f1, *(float*)&x40 ) - ( x41 = p0←v4444.f1, *(float*)&x41 ); }; { word x42; word x43; *(float*)&v2←v8572.f1 = ( x42 = p0←v4444.f0, *(float*)&x42 ) - ( x43 = m2←v8544.f0, *(float*)&x43 ); }; SOURCE(1863, 15) a2←v8600 = v2←v8572.f1; SOURCE(1880, 16) { word x44; *(float*)&b2←v8628 = - ( x44 = v2←v8572.f0, *(float*)&x44 ); }; SOURCE(1898, 26) { word x45; word x46; word x47; word x48; *(float*)&c2←v8656 = (( x45 = a2←v8600, *(float*)&x45 ) * ( x46 = m2←v8544.f0, *(float*)&x46 )) + (( x47 = b2←v8628, *(float*)&x47 ) * ( x48 = m2←v8544.f1, *(float*)&x48 )); }; SOURCE(1926, 23) { word x49; word x50; word x51; word x52; *(float*)&det←v8684 = (( x49 = a1←v8460, *(float*)&x49 ) * ( x50 = b2←v8628, *(float*)&x50 )) - (( x51 = a2←v8600, *(float*)&x51 ) * ( x52 = b1←v8488, *(float*)&x52 )); }; SOURCE(1951, 298) { word x53; word x54; float tf56; word x57; float tf58; word x59; word x60; word x62; if ((( x53 = det←v8684, *(float*)&x53 ) == ( x54 = (* (ptr) &fc10 ), *(float*)&x54 ))) { goto then055;}; if ((FABS(( x57 = det←v8684, *(float*)&x57 ), tf56) < FABS((( x59 = a1←v8460, *(float*)&x59 ) * ( x60 = b2←v8628, *(float*)&x60 )), tf58) * ( x62 = (* (ptr) &fc61 ), *(float*)&x62 ))) { then055: ; SOURCE(2003, 26) (* (ptr) circle←v4528 ) = (* (ptr) &fc10 ); (* (( (ptr) circle←v4528)+1) ) = (* (ptr) &fc10 ); SOURCE(2031, 20) (* (( (ptr) circle←v4528)+2) ) = (* (ptr) &fc63 ); SOURCE(2083, 13) linear←v4572 = 1; } else { SOURCE(2107, 54) { word x64; word x65; word x66; word x67; word x68; *(float*)circle←v4528 = ((( x64 = c1←v8516, *(float*)&x64 ) * ( x65 = b2←v8628, *(float*)&x65 )) - (( x66 = c2←v8656, *(float*)&x66 ) * ( x67 = b1←v8488, *(float*)&x67 ))) / ( x68 = det←v8684, *(float*)&x68 ); }; { word x69; word x70; word x71; word x72; word x73; *(float*)(( (ptr) circle←v4528)+1) = ((( x69 = a1←v8460, *(float*)&x69 ) * ( x70 = c2←v8656, *(float*)&x70 )) - (( x71 = a2←v8600, *(float*)&x71 ) * ( x72 = c1←v8516, *(float*)&x72 ))) / ( x73 = det←v8684, *(float*)&x73 ); }; SOURCE(2190, 43) { word pd74; pd74 = (* (( (ptr) (* (( (ptr) gf←c19436)+68)/* var←c17356 */ ))+19) ); (* (( (ptr) circle←v4528)+2) ) = (word) ( *( (fPt) ((* (ptr) pd74 ))))((* (W2Pt) circle←v4528 ), p0←v4444, pd74); }; SOURCE(2235, 14) linear←v4572 = 0; }; }; }; }; SOURCE(1204, 1045) return(linear←v4572); } static word RatherClose←P420(p1←v4632, p2←v4660) W2 p1←v4632; W2 p2←v4660; { word var←c4704; /* RatherClose: */ SOURCE(2261, 142) SOURCE(2338, 65) { word tc75; float tf76; word x77; word x78; word x80; float tf81; word x82; word x83; word x84; if ((FABS((( x77 = p1←v4632.f0, *(float*)&x77 ) - ( x78 = p2←v4660.f0, *(float*)&x78 )), tf76) < ( x80 = (* (ptr) &fc79 ), *(float*)&x80 ))) { tc75 = (word) (FABS((( x82 = p1←v4632.f1, *(float*)&x82 ) - ( x83 = p2←v4660.f1, *(float*)&x83 )), tf81) < ( x84 = (* (ptr) &fc79 ), *(float*)&x84 )); } else { tc75 = (word) 0; }; return(tc75); }; } static void CircleMeetsLine←P480(formal←c0102, circle←v4764, line←v4792) word formal←c0102; word circle←v4764; word line←v4792; { register ptr gf←c19468 = (ptr) &globalframe; W4 points←v4836; word hitCount←v4864; word tangent←v4892; word d←v8772; word magD←v8800; word b←v8828; W2 p←v8856; W2 h←v8884; /* CircleMeetsLine: */ SOURCE(2409, 808) SOURCE(2409, 808) tangent←v4892 = 0; SOURCE(2627, 51) { word pd85; pd85 = (* (( (ptr) (* (( (ptr) gf←c19468)+69)/* var←c17516 */ ))+38) ); d←v8772 = (word) ( *( (fPt) ((* (ptr) pd85 ))))((* (W2Pt) circle←v4764 ), line←v4792, pd85); }; SOURCE(2680, 13) { float tf86; word x87; float tf88; magD←v8800 = ( tf88 = FABS(( x87 = d←v8772, *(float*)&x87 ), tf86), *(word*)&tf88 ); }; SOURCE(2695, 522) { word var←c17548; { word x89; word x90; *(float*)&var←c17548 = ( x89 = magD←v8800, *(float*)&x89 ) - ( x90 = (* (( (ptr) circle←v4764)+2) ), *(float*)&x90 ); }; { word x92; word x94; word x95; word x97; word x98; word x99; word x103; word x104; if ((( x92 = var←c17548, *(float*)&x92 ) > ( x94 = (* (ptr) &fc93 ), *(float*)&x94 ))) { SOURCE(2741, 12) hitCount←v4864 = 0; goto endif091; }; if ( ( (( x95 = var←c17548, *(float*)&x95 ) >= ( x97 = (* (ptr) &fc96 ), *(float*)&x97 )) ? (( x98 = var←c17548, *(float*)&x98 ) <= ( x99 = (* (ptr) &fc93 ), *(float*)&x99 )) : 0 ) ) { SOURCE(2820, 12) hitCount←v4864 = 1; SOURCE(2834, 79) { W2 var←c17580; { W2 var←c17612; { W2 var←c090; { W2 var←c17644; { word x100; *(float*)&var←c17644.f0 = - ( /*1*/ x100 = (* (( (ptr) line←v4792)+3) ), *(float*)&x100 /*1*/ ); }; var←c17644.f1 = (* (( (ptr) line←v4792)+2) ); { word pd101; pd101 = (* (( (ptr) (* (( (ptr) gf←c19468)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd101 ))))((word) &var←c090, var←c17644, d←v8772, pd101); }; }; var←c17612 = var←c090; }; { W2 var←c091; { word pd102; pd102 = (* (( (ptr) (* (( (ptr) gf←c19468)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd102 ))))((word) &var←c091, (* (W2Pt) circle←v4764 ), var←c17612, pd102); }; var←c17580 = var←c091; }; }; (* (W2Pt) &points←v4836 ) = var←c17580; }; SOURCE(2915, 14) tangent←v4892 = 1; goto endif091; }; if ((( x103 = var←c17548, *(float*)&x103 ) < ( x104 = (* (ptr) &fc96 ), *(float*)&x104 ))) { SOURCE(2971, 12) hitCount←v4864 = 2; SOURCE(2985, 71) { W2 var←c17676; { W2 var←c094; { W2 var←c17708; { word x105; *(float*)&var←c17708.f0 = - ( x105 = (* (( (ptr) line←v4792)+3) ), *(float*)&x105 ); }; var←c17708.f1 = (* (( (ptr) line←v4792)+2) ); { word pd106; pd106 = (* (( (ptr) (* (( (ptr) gf←c19468)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd106 ))))((word) &var←c094, var←c17708, d←v8772, pd106); }; }; var←c17676 = var←c094; }; { W2 var←c095; { word pd107; pd107 = (* (( (ptr) (* (( (ptr) gf←c19468)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd107 ))))((word) &var←c095, (* (W2Pt) circle←v4764 ), var←c17676, pd107); }; p←v8856 = var←c095; }; }; SOURCE(3058, 51) { word pd108; word x109; word x110; word x111; word x112; float tf113; pd108 = (* (( (ptr) (* (( (ptr) gf←c19468)+70)/* var←c17740 */ ))+9) ); b←v8828 = (word) ( *( (fPt) ((* (ptr) pd108 ))))(( tf113 = (( x109 = (* (( (ptr) circle←v4764)+2) ), *(float*)&x109 ) * ( x110 = (* (( (ptr) circle←v4764)+2) ), *(float*)&x110 )) - (( x111 = d←v8772, *(float*)&x111 ) * ( x112 = d←v8772, *(float*)&x112 )), *(word*)&tf113 ), pd108); }; SOURCE(3111, 40) { W2 var←c097; { W2 var←c17772; var←c17772.f0 = (* (( (ptr) line←v4792)+2) ); var←c17772.f1 = (* (( (ptr) line←v4792)+3) ); { word pd114; pd114 = (* (( (ptr) (* (( (ptr) gf←c19468)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd114 ))))((word) &var←c097, var←c17772, b←v8828, pd114); }; }; h←v8884 = var←c097; }; SOURCE(3153, 31) { W2 var←c17804; { word pd115; pd115 = (* (( (ptr) (* (( (ptr) gf←c19468)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd115 ))))((word) &var←c17804, p←v8856, h←v8884, pd115); }; (* (W2Pt) &points←v4836 ) = var←c17804; }; SOURCE(3186, 31) { W2 var←c17836; { word pd116; pd116 = (* (( (ptr) (* (( (ptr) gf←c19468)+68)/* var←c17356 */ ))+10) ); (void) ( *( (fPt) ((* (ptr) pd116 ))))((word) &var←c17836, p←v8856, h←v8884, pd116); }; (* (W2Pt) (( (ptr) &points←v4836)+2) ) = var←c17836; }; goto endif091; }; SOURCE(3233, 5) (void) XR←RaiseUnnamedError(); goto endif091; endif091: ; }; }; /* removed tail goto */ (* (W4Pt) formal←c0102 ) = points←v4836; (* (( (ptr) formal←c0102)+4) ) = hitCount←v4864; (* (( (ptr) formal←c0102)+5) ) = tangent←v4892; return; } static void CircleMeetsEdge←P540(formal←c0115, circle←v5008, edge←v5036) word formal←c0115; word circle←v5008; word edge←v5036; { register ptr gf←c19500 = (ptr) &globalframe; W4 points←v5080; word hitCount←v5108; word tangent←v5136; word line←v8956; W4 testPoints←v8984; word testCount←v9012; /* CircleMeetsEdge: */ SOURCE(3244, 429) SOURCE(3380, 22) line←v8956 = (* (ptr) edge←v5036 ); SOURCE(3458, 64) { W6 var←c17868; (void) CircleMeetsLine←P480((word) &var←c17868, circle←v5008, line←v8956); tangent←v5136 = var←c17868.f5; testCount←v9012 = var←c17868.f4; testPoints←v8984 = (* (W4Pt) &var←c17868 ); }; SOURCE(3524, 12) hitCount←v5108 = 0; SOURCE(3538, 135) { register word i←v9112 = 1; register word noName←c17900; noName←c17900 = testCount←v9012; if ((i←v9112 > noName←c17900)) { goto lab←L100003; }; lab←L100006: ; SOURCE(3570, 103) { word pd117; pd117 = (* (( (ptr) (* (( (ptr) gf←c19500)+69)/* var←c17516 */ ))+47) ); if ((0 != (word) ( *( (fPt) ((* (ptr) pd117 ))))((* (( (W2Pt) &testPoints←v8984)+BCK((i←v9112 - 1), 2)) ), edge←v5036, pd117) )) { SOURCE(3616, 23) hitCount←v5108 = BCK((hitCount←v5108 + 1), 3); SOURCE(3641, 32) (* (( (W2Pt) &points←v5080)+BCK((hitCount←v5108 - 1), 2)) ) = (* (( (W2Pt) &testPoints←v8984)+BCK((i←v9112 - 1), 2)) ); }; }; if ((i←v9112 >= noName←c17900)) { goto lab←L100003; }; i←v9112 = (i←v9112 + 1); goto lab←L100006; lab←L100003: ; }; /* removed tail goto */ (* (W4Pt) formal←c0115 ) = points←v5080; (* (( (ptr) formal←c0115)+4) ) = hitCount←v5108; (* (( (ptr) formal←c0115)+5) ) = tangent←v5136; return; } static void CircleMeetsCircle←P600(formal←c0162, circle1←v5252, circle2←v5280) word formal←c0162; word circle1←v5252; word circle2←v5280; { register ptr gf←c19532 = (ptr) &globalframe; W4 points←v5324; word hitCount←v5352; word tangent←v5380; W2 o1ToO2←v9156; W2 o1ToO2Hat←v9184; word magO1ToO2←v9240; word outerTangent←v9268; word innerTangent←v9296; /* CircleMeetsCircle: */ SOURCE(3691, 2067) SOURCE(3691, 2067) tangent←v5380 = 0; SOURCE(3950, 160) if ((0 != (word) RatherClose←P420((* (W2Pt) circle1←v5252 ), (* (W2Pt) circle2←v5280 )))) { SOURCE(4026, 12) hitCount←v5352 = 0; SOURCE(4040, 34) { W2 var←c17932; var←c17932.f0 = (* (ptr) &fc10 ); var←c17932.f1 = (* (ptr) &fc10 ); (* (W2Pt) (( (ptr) &points←v5324)+2) ) = var←c17932; (* (W2Pt) &points←v5324 ) = var←c17932; }; SOURCE(4104, 6) goto lab←L100007; }; SOURCE(4115, 54) { word pd118; pd118 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd118 ))))((word) &o1ToO2←v9156, (* (W2Pt) circle2←v5280 ), (* (W2Pt) circle1←v5252 ), pd118) ; }; SOURCE(4171, 39) { word pd119; pd119 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+18) ); magO1ToO2←v9240 = (word) ( *( (fPt) ((* (ptr) pd119 ))))(o1ToO2←v9156, pd119); }; SOURCE(4212, 46) { word x120; word x121; *(float*)&outerTangent←v9268 = ( x120 = (* (( (ptr) circle1←v5252)+2) ), *(float*)&x120 ) + ( x121 = (* (( (ptr) circle2←v5280)+2) ), *(float*)&x121 ); }; SOURCE(4260, 51) { float tf122; word x123; word x124; float tf125; innerTangent←v9296 = ( tf125 = FABS((( x123 = (* (( (ptr) circle1←v5252)+2) ), *(float*)&x123 ) - ( x124 = (* (( (ptr) circle2←v5280)+2) ), *(float*)&x124 )), tf122), *(word*)&tf125 ); }; SOURCE(4313, 1445) { word var←c17964; var←c17964 = magO1ToO2←v9240; { word x127; word x128; word x129; word x130; word x131; word x132; word x133; word x134; word x135; word x143; word x144; word x145; word x146; word x147; word x148; word x194; word x195; word x196; word x197; word x198; word x199; word x215; word x216; word x217; if ((( x127 = var←c17964, *(float*)&x127 ) > ( x128 = outerTangent←v9268, *(float*)&x128 ) + ( x129 = (* (ptr) &fc93 ), *(float*)&x129 ))) { SOURCE(4361, 12) hitCount←v5352 = 0; goto endif0126; }; if ( ( (( x130 = var←c17964, *(float*)&x130 ) >= ( x131 = outerTangent←v9268, *(float*)&x131 ) - ( x132 = (* (ptr) &fc93 ), *(float*)&x132 )) ? (( x133 = var←c17964, *(float*)&x133 ) <= ( x134 = outerTangent←v9268, *(float*)&x134 ) + ( x135 = (* (ptr) &fc93 ), *(float*)&x135 )) : 0 ) ) { SOURCE(4482, 12) hitCount←v5352 = 1; SOURCE(4496, 14) tangent←v5380 = 1; SOURCE(4512, 50) { word pd136; word x138; word x139; float tf140; pd136 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd136 ))))((word) &o1ToO2Hat←v9184, o1ToO2←v9156, ( tf140 = ( x138 = (* (ptr) &fc137 ), *(float*)&x138 ) / ( x139 = magO1ToO2←v9240, *(float*)&x139 ), *(word*)&tf140 ), pd136); }; SOURCE(4564, 85) { W2 var←c17996; { W2 var←c18028; { word pd141; pd141 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd141 ))))((word) &var←c18028, o1ToO2Hat←v9184, (* (( (ptr) circle1←v5252)+2) ), pd141); }; { W2 var←c0133; { word pd142; pd142 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+10) ); (void) ( *( (fPt) ((* (ptr) pd142 ))))((word) &var←c0133, (* (W2Pt) circle1←v5252 ), var←c18028, pd142); }; var←c17996 = var←c0133; }; }; (* (W2Pt) &points←v5324 ) = var←c17996; }; goto endif0126; }; if ( ( (( x143 = var←c17964, *(float*)&x143 ) > ( x144 = innerTangent←v9296, *(float*)&x144 ) + ( x145 = (* (ptr) &fc93 ), *(float*)&x145 )) ? (( x146 = var←c17964, *(float*)&x146 ) < ( x147 = outerTangent←v9268, *(float*)&x147 ) - ( x148 = (* (ptr) &fc93 ), *(float*)&x148 )) : 0 ) ) { SOURCE(4707, 587) { W2 p←v9340; W2 normal←v9368; word s←v9396; word h←v9424; word m←v9452; word b←v9480; word a←v9508; SOURCE(4750, 24) b←v9480 = (* (( (ptr) circle1←v5252)+2) ); SOURCE(4776, 24) a←v9508 = (* (( (ptr) circle2←v5280)+2) ); SOURCE(4802, 12) hitCount←v5352 = 2; SOURCE(4816, 50) { word pd149; word x150; word x151; float tf152; pd149 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd149 ))))((word) &o1ToO2Hat←v9184, o1ToO2←v9156, ( tf152 = ( x150 = (* (ptr) &fc137 ), *(float*)&x150 ) / ( x151 = magO1ToO2←v9240, *(float*)&x151 ), *(word*)&tf152 ), pd149); }; SOURCE(4868, 27) { word x153; word x154; word x155; word x156; *(float*)&s←v9396 = ( x153 = (* (ptr) &fc13 ), *(float*)&x153 ) * ((( x154 = b←v9480, *(float*)&x154 ) + ( x155 = a←v9508, *(float*)&x155 )) + ( x156 = magO1ToO2←v9240, *(float*)&x156 )); }; SOURCE(4897, 59) { word x158; word pd159; word x160; word x161; word x162; word x163; word x164; word x165; word x166; float tf167; word x168; word x169; pd159 = (* (( (ptr) (* (( (ptr) gf←c19532)+70)/* var←c17740 */ ))+9) ); *(float*)&h←v9424 = (( x158 = (* (ptr) &fc157 ), *(float*)&x158 ) * ( x168 = (word) ( *( (fPt) ((* (ptr) pd159 ))))(( tf167 = ((( /*1*/ x160 = s←v9396, *(float*)&x160 /*1*/ ) * (( /*1*/ x161 = s←v9396, *(float*)&x161 /*1*/ ) - ( /*1*/ x162 = magO1ToO2←v9240, *(float*)&x162 /*1*/ ))) * (( /*1*/ x163 = s←v9396, *(float*)&x163 /*1*/ ) - ( /*1*/ x164 = b←v9480, *(float*)&x164 /*1*/ ))) * (( /*1*/ x165 = s←v9396, *(float*)&x165 /*1*/ ) - ( /*1*/ x166 = a←v9508, *(float*)&x166 /*1*/ )), *(word*)&tf167 ), pd159), *(float*)&x168 )) / ( x169 = magO1ToO2←v9240, *(float*)&x169 ); }; SOURCE(4958, 213) { word x170; word x171; if ((( x170 = b←v9480, *(float*)&x170 ) > ( x171 = a←v9508, *(float*)&x171 ))) { SOURCE(4974, 27) { word pd172; word x173; word x174; word x175; word x176; float tf177; pd172 = (* (( (ptr) (* (( (ptr) gf←c19532)+70)/* var←c17740 */ ))+9) ); m←v9452 = (word) ( *( (fPt) ((* (ptr) pd172 ))))(( /*1*/ tf177 = (( /*1*/ x173 = b←v9480, *(float*)&x173 /*1*/ ) * ( /*1*/ x174 = b←v9480, *(float*)&x174 /*1*/ )) - (( /*1*/ x175 = h←v9424, *(float*)&x175 /*1*/ ) * ( /*1*/ x176 = h←v9424, *(float*)&x176 /*1*/ )), *(word*)&tf177 /*1*/ ), pd172); }; SOURCE(5003, 64) { W2 var←c18060; { word pd178; pd178 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd178 ))))((word) &var←c18060, o1ToO2Hat←v9184, m←v9452, pd178); }; { W2 var←c0144; { /*1*/ word pd179; /*1*/ pd179 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+10) ); /*1*/ (void) ( *( (fPt) ((* (ptr) pd179 ))))((word) &var←c0144, (* (W2Pt) circle1←v5252 ), var←c18060, pd179); /*1*/ }; p←v9340 = var←c0144; }; }; } else { SOURCE(5078, 27) { word pd180; word x181; word x182; word x183; word x184; float tf185; pd180 = (* (( (ptr) (* (( (ptr) gf←c19532)+70)/* var←c17740 */ ))+9) ); m←v9452 = (word) ( *( (fPt) ((* (ptr) pd180 ))))(( /*1*/ tf185 = (( /*1*/ x181 = a←v9508, *(float*)&x181 /*1*/ ) * ( /*1*/ x182 = a←v9508, *(float*)&x182 /*1*/ )) - (( /*1*/ x183 = h←v9424, *(float*)&x183 /*1*/ ) * ( /*1*/ x184 = h←v9424, *(float*)&x184 /*1*/ )), *(word*)&tf185 /*1*/ ), pd180); }; SOURCE(5107, 64) { W2 var←c18092; { word pd186; pd186 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd186 ))))((word) &var←c18092, o1ToO2Hat←v9184, m←v9452, pd186); }; { W2 var←c0147; { /*1*/ word pd187; /*1*/ pd187 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+11) ); /*1*/ (void) ( *( (fPt) ((* (ptr) pd187 ))))((word) &var←c0147, (* (W2Pt) circle2←v5280 ), var←c18092, pd187); /*1*/ }; p←v9340 = var←c0147; }; }; }; }; SOURCE(5176, 40) { word x188; word x189; *(float*)&normal←v9368.f0 = ( - ( x188 = h←v9424, *(float*)&x188 )) * ( x189 = o1ToO2Hat←v9184.f1, *(float*)&x189 ); }; { word x190; word x191; *(float*)&normal←v9368.f1 = ( x190 = h←v9424, *(float*)&x190 ) * ( x191 = o1ToO2Hat←v9184.f0, *(float*)&x191 ); }; SOURCE(5218, 36) { W2 var←c18124; { word pd192; pd192 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd192 ))))((word) &var←c18124, p←v9340, normal←v9368, pd192); }; (* (W2Pt) &points←v5324 ) = var←c18124; }; SOURCE(5256, 36) { W2 var←c18156; { word pd193; pd193 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+10) ); (void) ( *( (fPt) ((* (ptr) pd193 ))))((word) &var←c18156, p←v9340, normal←v9368, pd193); }; (* (W2Pt) (( (ptr) &points←v5324)+2) ) = var←c18156; }; }; goto endif0126; }; if ( ( (( x194 = var←c17964, *(float*)&x194 ) >= ( x195 = innerTangent←v9296, *(float*)&x195 ) - ( x196 = (* (ptr) &fc93 ), *(float*)&x196 )) ? (( x197 = var←c17964, *(float*)&x197 ) <= ( x198 = innerTangent←v9296, *(float*)&x198 ) + ( x199 = (* (ptr) &fc93 ), *(float*)&x199 )) : 0 ) ) { SOURCE(5352, 12) hitCount←v5352 = 1; SOURCE(5366, 14) tangent←v5380 = 1; SOURCE(5382, 328) { word x200; word x201; if ((( x200 = (* (( (ptr) circle1←v5252)+2) ), *(float*)&x200 ) > ( x201 = (* (( (ptr) circle2←v5280)+2) ), *(float*)&x201 ))) { SOURCE(5424, 50) { word pd202; word x203; word x204; float tf205; pd202 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd202 ))))((word) &o1ToO2Hat←v9184, o1ToO2←v9156, ( tf205 = ( /*1*/ x203 = (* (ptr) &fc137 ), *(float*)&x203 /*1*/ ) / ( /*1*/ x204 = magO1ToO2←v9240, *(float*)&x204 /*1*/ ), *(word*)&tf205 ), pd202); }; SOURCE(5476, 85) { W2 var←c18188; { W2 var←c18220; { word pd206; pd206 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd206 ))))((word) &var←c18220, o1ToO2Hat←v9184, (* (( (ptr) circle1←v5252)+2) ), pd206); }; { W2 var←c0156; { /*1*/ word pd207; /*1*/ pd207 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+10) ); /*1*/ (void) ( *( (fPt) ((* (ptr) pd207 ))))((word) &var←c0156, (* (W2Pt) circle1←v5252 ), var←c18220, pd207); /*1*/ }; var←c18188 = var←c0156; }; }; (* (W2Pt) &points←v5324 ) = var←c18188; }; } else { SOURCE(5572, 51) { word pd208; word x210; word x211; float tf212; pd208 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd208 ))))((word) &o1ToO2Hat←v9184, o1ToO2←v9156, ( tf212 = ( /*1*/ x210 = (* (ptr) &fc209 ), *(float*)&x210 /*1*/ ) / ( /*1*/ x211 = magO1ToO2←v9240, *(float*)&x211 /*1*/ ), *(word*)&tf212 ), pd208); }; SOURCE(5625, 85) { W2 var←c18252; { W2 var←c18284; { word pd213; pd213 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd213 ))))((word) &var←c18284, o1ToO2Hat←v9184, (* (( (ptr) circle2←v5280)+2) ), pd213); }; { W2 var←c0161; { /*1*/ word pd214; /*1*/ pd214 = (* (( (ptr) (* (( (ptr) gf←c19532)+68)/* var←c17356 */ ))+10) ); /*1*/ (void) ( *( (fPt) ((* (ptr) pd214 ))))((word) &var←c0161, (* (W2Pt) circle2←v5280 ), var←c18284, pd214); /*1*/ }; var←c18252 = var←c0161; }; }; (* (W2Pt) &points←v5324 ) = var←c18252; }; }; }; goto endif0126; }; if ((( x215 = var←c17964, *(float*)&x215 ) < ( x216 = innerTangent←v9296, *(float*)&x216 ) - ( x217 = (* (ptr) &fc93 ), *(float*)&x217 ))) { SOURCE(5746, 12) hitCount←v5352 = 0; goto endif0126; }; SOURCE(5774, 5) (void) XR←RaiseUnnamedError(); goto endif0126; endif0126: ; }; }; /* removed tail goto */ lab←L100007: ; (* (W4Pt) formal←c0162 ) = points←v5324; (* (( (ptr) formal←c0162)+4) ) = hitCount←v5352; (* (( (ptr) formal←c0162)+5) ) = tangent←v5380; return; } static void CircleMeetsArc←P660(formal←c0176, circle←v5496, arc←v5524) word formal←c0176; word circle←v5496; word arc←v5524; { W4 points←v5568; word hitCount←v5596; word tangent←v5624; /* CircleMeetsArc: */ SOURCE(5785, 456) SOURCE(5917, 324) if (((* (( (ptr) arc←v5524)+8) ) != 0)) { SOURCE(5940, 69) { W6 var←c18316; (void) CircleMeetsEdge←P540((word) &var←c18316, circle←v5496, (* (( (ptr) arc←v5524)+8) )); tangent←v5624 = var←c18316.f5; hitCount←v5596 = var←c18316.f4; points←v5568 = (* (W4Pt) &var←c18316 ); }; } else { SOURCE(6009, 246) { W4 pts←v9552; word hCount←v9580; SOURCE(6055, 62) { W6 var←c18348; (void) CircleMeetsCircle←P600((word) &var←c18348, circle←v5496, (* (ptr) arc←v5524 )); tangent←v5624 = var←c18348.f5; hCount←v9580 = var←c18348.f4; pts←v9552 = (* (W4Pt) &var←c18348 ); }; SOURCE(6119, 12) hitCount←v5596 = 0; SOURCE(6133, 108) { register word i←v9680 = 1; register word noName←c18380; noName←c18380 = hCount←v9580; if ((i←v9680 > noName←c18380)) { goto lab←L100009; }; lab←L100012: ; SOURCE(6162, 79) if ((0 != (word) OnArc←P1800((* (( (W2Pt) &pts←v9552)+BCK((i←v9680 - 1), 2)) ), arc←v5524))) { SOURCE(6191, 23) hitCount←v5596 = BCK((hitCount←v5596 + 1), 3); SOURCE(6216, 25) (* (( (W2Pt) &points←v5568)+BCK((hitCount←v5596 - 1), 2)) ) = (* (( (W2Pt) &pts←v9552)+BCK((i←v9680 - 1), 2)) ); }; if ((i←v9680 >= noName←c18380)) { goto lab←L100009; }; i←v9680 = (i←v9680 + 1); goto lab←L100012; lab←L100009: ; }; }; }; /* removed tail goto */ (* (W4Pt) formal←c0176 ) = points←v5568; (* (( (ptr) formal←c0176)+4) ) = hitCount←v5596; (* (( (ptr) formal←c0176)+5) ) = tangent←v5624; return; } static word SignedCircleDistance←P720(pt←v5740, circle←v5768) W2 pt←v5740; word circle←v5768; { register ptr gf←c19564 = (ptr) &globalframe; word d←v5812; word originToPoint←v9724; /* SignedCircleDistance: */ SOURCE(6262, 210) SOURCE(6368, 69) { W2 var←c18412; { word pd218; pd218 = (* (( (ptr) (* (( (ptr) gf←c19564)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd218 ))))((word) &var←c18412, pt←v5740, (* (W2Pt) circle←v5768 ), pd218); }; { word pd219; pd219 = (* (( (ptr) (* (( (ptr) gf←c19564)+68)/* var←c17356 */ ))+18) ); originToPoint←v9724 = (word) ( *( (fPt) ((* (ptr) pd219 ))))(var←c18412, pd219); }; }; SOURCE(6439, 33) { word x220; word x221; *(float*)&d←v5812 = ( x220 = originToPoint←v9724, *(float*)&x220 ) - ( x221 = (* (( (ptr) circle←v5768)+2) ), *(float*)&x221 ); }; SOURCE(6262, 210) return(d←v5812); } static word CircleDistance←P780(pt←v5872, circle←v5900) W2 pt←v5872; word circle←v5900; { word d←v5944; /* CircleDistance: */ SOURCE(6478, 120) SOURCE(6557, 41) { float tf222; word x223; float tf224; d←v5944 = ( tf224 = FABS(( x223 = (word) SignedCircleDistance←P720(pt←v5872, circle←v5900), *(float*)&x223 ), tf222), *(word*)&tf224 ); }; SOURCE(6478, 120) return(d←v5944); } static void PointProjectedOntoCircle←P840(formal←c0195, pt←v6004, circle←v6032) word formal←c0195; W2 pt←v6004; word circle←v6032; { register ptr gf←c19596 = (ptr) &globalframe; W2 projectedPt←v6076; W2 originToPoint←v9796; word magOriginToPoint←v9824; /* PointProjectedOntoCircle: */ SOURCE(6604, 496) SOURCE(6775, 48) { word pd225; pd225 = (* (( (ptr) (* (( (ptr) gf←c19596)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd225 ))))((word) &originToPoint←v9796, pt←v6004, (* (W2Pt) circle←v6032 ), pd225); }; SOURCE(6825, 53) { word pd226; pd226 = (* (( (ptr) (* (( (ptr) gf←c19596)+68)/* var←c17356 */ ))+18) ); magOriginToPoint←v9824 = (word) ( *( (fPt) ((* (ptr) pd226 ))))(originToPoint←v9796, pd226); }; SOURCE(6880, 109) { word x227; word x228; if ((( x227 = magOriginToPoint←v9824, *(float*)&x227 ) < ( x228 = (* (ptr) &fc79 ), *(float*)&x228 ))) { SOURCE(6917, 64) { word x229; word x230; *(float*)&projectedPt←v6076.f0 = ( x229 = (* (ptr) circle←v6032 ), *(float*)&x229 ) + ( x230 = (* (( (ptr) circle←v6032)+2) ), *(float*)&x230 ); }; projectedPt←v6076.f1 = (* (( (ptr) circle←v6032)+1) ); SOURCE(6983, 6) goto lab←L100013; }; }; SOURCE(6994, 106) { W2 var←c18444; { word pd231; word x232; word x233; float tf234; pd231 = (* (( (ptr) (* (( (ptr) gf←c19596)+68)/* var←c17356 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd231 ))))((word) &var←c18444, originToPoint←v9796, ( tf234 = ( x232 = (* (( (ptr) circle←v6032)+2) ), *(float*)&x232 ) / ( x233 = magOriginToPoint←v9824, *(float*)&x233 ), *(word*)&tf234 ), pd231); }; { W2 var←c0194; { word pd235; pd235 = (* (( (ptr) (* (( (ptr) gf←c19596)+68)/* var←c17356 */ ))+10) ); (void) ( *( (fPt) ((* (ptr) pd235 ))))((word) &var←c0194, (* (W2Pt) circle←v6032 ), var←c18444, pd235); }; projectedPt←v6076 = var←c0194; }; }; /* removed tail goto */ lab←L100013: ; (* (W2Pt) formal←c0195 ) = projectedPt←v6076; return; } static word PointIsInCircle←P900(pt←v6136, circle←v6164) W2 pt←v6136; word circle←v6164; { word var←c6208; word deltaX←v9868; word deltaY←v9896; /* PointIsInCircle: */ SOURCE(7105, 230) SOURCE(7204, 31) { word x236; word x237; *(float*)&deltaX←v9868 = ( x236 = pt←v6136.f0, *(float*)&x236 ) - ( x237 = (* (ptr) circle←v6164 ), *(float*)&x237 ); }; SOURCE(7237, 31) { word x238; word x239; *(float*)&deltaY←v9896 = ( x238 = pt←v6136.f1, *(float*)&x238 ) - ( x239 = (* (( (ptr) circle←v6164)+1) ), *(float*)&x239 ); }; SOURCE(7270, 65) { word x240; word x241; word x242; word x243; word x244; word x245; return(((( x240 = deltaX←v9868, *(float*)&x240 ) * ( x241 = deltaX←v9868, *(float*)&x241 )) + (( x242 = deltaY←v9896, *(float*)&x242 ) * ( x243 = deltaY←v9896, *(float*)&x243 )) < ( x244 = (* (( (ptr) circle←v6164)+2) ), *(float*)&x244 ) * ( x245 = (* (( (ptr) circle←v6164)+2) ), *(float*)&x245 ))); }; } static word CreateArc←P960(v0←v6268, v1←v6296, v2←v6324) W2 v0←v6268; W2 v1←v6296; W2 v2←v6324; { word arc←v6368; /* CreateArc: */ SOURCE(7342, 115) SOURCE(7342, 115) arc←v6368 = 0; SOURCE(7409, 22) arc←v6368 = (word) CreateEmptyArc←P1020(); SOURCE(7433, 24) (void) FillArc←P1140(v0←v6268, v1←v6296, v2←v6324, arc←v6368); SOURCE(7342, 115) return(arc←v6368); } static word CreateEmptyArc←P1020() { register ptr gf←c19628 = (ptr) &globalframe; word arc←v6428; /* CreateEmptyArc: */ SOURCE(7463, 175) SOURCE(7463, 175) arc←v6428 = 0; SOURCE(7517, 121) { word var←c18476; word var←c18508; var←c18476 = (word) CreateEmptyCircle←P60(); var←c18508 = XR←NewObject(36, (* (( (ptr) gf←c19628)+5) )); (* (ptr) var←c18508 ) = var←c18476; (* (( (ptr) var←c18508)+2) ) = (* (ptr) &fc10 ); (* (( (ptr) var←c18508)+3) ) = (* (ptr) &fc10 ); (* (( (ptr) var←c18508)+4) ) = (* (ptr) &fc10 ); (* (( (ptr) var←c18508)+5) ) = (* (ptr) &fc10 ); (* (( (ptr) var←c18508)+6) ) = (* (ptr) &fc10 ); (* (( (ptr) var←c18508)+7) ) = (* (ptr) &fc10 ); arc←v6428 = var←c18508; }; SOURCE(7463, 175) return(arc←v6428); } static void ReverseArc←P1080(arc←v6488) word arc←v6488; { /* ReverseArc: */ SOURCE(7644, 134) SOURCE(7683, 21) (* (( (ptr) arc←v6488)+1) ) = (0 == (* (( (ptr) arc←v6488)+1) )); SOURCE(7706, 72) if (((* (( (ptr) arc←v6488)+8) ) != 0)) { SOURCE(7729, 49) (* (( (ptr) (* (( (ptr) arc←v6488)+8) ))+1) ) = (0 == (* (( (ptr) (* (( (ptr) arc←v6488)+8) ))+1) )); }; } static void FillArc←P1140(v0←v6548, v1←v6576, v2←v6604, arc←v6632) W2 v0←v6548; W2 v1←v6576; W2 v2←v6604; word arc←v6632; { register ptr gf←c19660 = (ptr) &globalframe; word theta0←v9940; word theta1←v9968; word theta2←v9996; word deltaTheta←v10024; W2 vector0←v10052; W2 vector1←v10080; W2 vector2←v10108; word linear←v10136; /* FillArc: */ SOURCE(7874, 1204) SOURCE(8021, 54) linear←v10136 = (word) FillCircleFrom3Points←P360(v0←v6548, v1←v6576, v2←v6604, (* (ptr) arc←v6632 )); SOURCE(8077, 1001) if ((0 != linear←v10136)) { SOURCE(8094, 118) { word var←c18540; { word pd246; pd246 = (* (( (ptr) (* (( (ptr) gf←c19660)+69)/* var←c17516 */ ))+27) ); var←c18540 = (word) ( *( (fPt) ((* (ptr) pd246 ))))(v0←v6548, v2←v6604, pd246); }; { word var←c18572; var←c18572 = (* (ptr) arc←v6632 ); (* (ptr) arc←v6632 ) = var←c18572; (* (( (ptr) arc←v6632)+1) ) = 1; (* (W2Pt) (( (ptr) arc←v6632)+2) ) = v0←v6548; (* (W2Pt) (( (ptr) arc←v6632)+4) ) = v2←v6604; (* (( (ptr) arc←v6632)+6) ) = (* (ptr) &fc10 ); (* (( (ptr) arc←v6632)+7) ) = (* (ptr) &fc10 ); (* (( (ptr) arc←v6632)+8) ) = var←c18540; }; }; } else { SOURCE(8223, 46) { word pd247; pd247 = (* (( (ptr) (* (( (ptr) gf←c19660)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd247 ))))((word) &vector0←v10052, v0←v6548, (* (W2Pt) (* (ptr) arc←v6632 ) ), pd247); }; SOURCE(8271, 43) { word pd248; pd248 = (* (( (ptr) (* (( (ptr) gf←c19660)+68)/* var←c17356 */ ))+6) ); theta0←v9940 = (word) ( *( (fPt) ((* (ptr) pd248 ))))(vector0←v10052, pd248); }; SOURCE(8316, 46) { word pd249; pd249 = (* (( (ptr) (* (( (ptr) gf←c19660)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd249 ))))((word) &vector1←v10080, v1←v6576, (* (W2Pt) (* (ptr) arc←v6632 ) ), pd249); }; SOURCE(8364, 43) { word pd250; pd250 = (* (( (ptr) (* (( (ptr) gf←c19660)+68)/* var←c17356 */ ))+6) ); theta1←v9968 = (word) ( *( (fPt) ((* (ptr) pd250 ))))(vector1←v10080, pd250); }; SOURCE(8409, 46) { word pd251; pd251 = (* (( (ptr) (* (( (ptr) gf←c19660)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd251 ))))((word) &vector2←v10108, v2←v6604, (* (W2Pt) (* (ptr) arc←v6632 ) ), pd251); }; SOURCE(8457, 43) { word pd252; pd252 = (* (( (ptr) (* (( (ptr) gf←c19660)+68)/* var←c17356 */ ))+6) ); theta2←v9996 = (word) ( *( (fPt) ((* (ptr) pd252 ))))(vector2←v10108, pd252); }; SOURCE(8502, 576) { word x253; word x254; if ((( x253 = theta0←v9940, *(float*)&x253 ) == ( x254 = theta2←v9996, *(float*)&x254 ))) { SOURCE(8528, 18) deltaTheta←v10024 = (* (ptr) &fc255 ); SOURCE(8548, 105) { word var←c18604; var←c18604 = (* (ptr) arc←v6632 ); (* (ptr) arc←v6632 ) = var←c18604; (* (( (ptr) arc←v6632)+1) ) = 1; (* (W2Pt) (( (ptr) arc←v6632)+2) ) = v0←v6548; (* (W2Pt) (( (ptr) arc←v6632)+4) ) = v2←v6604; (* (( (ptr) arc←v6632)+6) ) = theta0←v9940; (* (( (ptr) arc←v6632)+7) ) = deltaTheta←v10024; (* (( (ptr) arc←v6632)+8) ) = 0; }; } else { SOURCE(8664, 414) { word pd256; pd256 = (* (( (ptr) (* (( (ptr) gf←c19660)+71)/* var←c18636 */ ))+12) ); if ((0 != (word) ( *( (fPt) ((* (ptr) pd256 ))))(theta1←v9968, theta0←v9940, theta2←v9996, pd256))) { SOURCE(8734, 59) { word pd257; pd257 = (* (( (ptr) (* (( (ptr) gf←c19660)+71)/* var←c18636 */ ))+8) ); deltaTheta←v10024 = (word) ( *( (fPt) ((* (ptr) pd257 ))))(theta0←v9940, theta2←v9996, pd257); }; SOURCE(8795, 105) { word var←c18668; var←c18668 = (* (ptr) arc←v6632 ); (* (ptr) arc←v6632 ) = var←c18668; (* (( (ptr) arc←v6632)+1) ) = 1; (* (W2Pt) (( (ptr) arc←v6632)+2) ) = v0←v6548; (* (W2Pt) (( (ptr) arc←v6632)+4) ) = v2←v6604; (* (( (ptr) arc←v6632)+6) ) = theta0←v9940; (* (( (ptr) arc←v6632)+7) ) = deltaTheta←v10024; (* (( (ptr) arc←v6632)+8) ) = 0; }; } else { SOURCE(8911, 59) { word pd258; pd258 = (* (( (ptr) (* (( (ptr) gf←c19660)+71)/* var←c18636 */ ))+8) ); deltaTheta←v10024 = (word) ( *( (fPt) ((* (ptr) pd258 ))))(theta2←v9996, theta0←v9940, pd258); }; SOURCE(8972, 106) { word var←c18700; var←c18700 = (* (ptr) arc←v6632 ); (* (ptr) arc←v6632 ) = var←c18700; (* (( (ptr) arc←v6632)+1) ) = 0; (* (W2Pt) (( (ptr) arc←v6632)+2) ) = v2←v6604; (* (W2Pt) (( (ptr) arc←v6632)+4) ) = v0←v6548; (* (( (ptr) arc←v6632)+6) ) = theta2←v9996; (* (( (ptr) arc←v6632)+7) ) = deltaTheta←v10024; (* (( (ptr) arc←v6632)+8) ) = 0; }; }; }; }; }; }; } static void CopyArc←P1200(from←v6692, to←v6720) word from←v6692; word to←v6720; { register ptr gf←c19692 = (ptr) &globalframe; /* CopyArc: */ SOURCE(9093, 302) SOURCE(9139, 34) (void) CopyCircle←P120((* (ptr) from←v6692 ), (* (ptr) to←v6720 )); SOURCE(9175, 17) (* (( (ptr) to←v6720)+1) ) = (* (( (ptr) from←v6692)+1) ); SOURCE(9194, 15) (* (W2Pt) (( (ptr) to←v6720)+2) ) = (* (W2Pt) (( (ptr) from←v6692)+2) ); SOURCE(9211, 15) (* (W2Pt) (( (ptr) to←v6720)+4) ) = (* (W2Pt) (( (ptr) from←v6692)+4) ); SOURCE(9228, 23) (* (( (ptr) to←v6720)+6) ) = (* (( (ptr) from←v6692)+6) ); SOURCE(9253, 31) (* (( (ptr) to←v6720)+7) ) = (* (( (ptr) from←v6692)+7) ); SOURCE(9286, 109) if (((* (( (ptr) from←v6692)+8) ) != 0)) { SOURCE(9312, 35) { word pd259; pd259 = (* (( (ptr) (* (( (ptr) gf←c19692)+69)/* var←c17516 */ ))+25) ); (* (( (ptr) to←v6720)+8) ) = (word) ( *( (fPt) ((* (ptr) pd259 ))))(pd259); }; SOURCE(9349, 46) { word pd260; pd260 = (* (( (ptr) (* (( (ptr) gf←c19692)+69)/* var←c17516 */ ))+26) ); (void) ( *( (fPt) ((* (ptr) pd260 ))))((* (( (ptr) from←v6692)+8) ), (* (( (ptr) to←v6720)+8) ), pd260); }; }; } static word CirclePointOnArc←P1260(pt←v6780, arc←v6808) W2 pt←v6780; word arc←v6808; { register ptr gf←c19724 = (ptr) &globalframe; word var←c6852; W2 direction←v10180; word angle←v10208; /* CirclePointOnArc: */ SOURCE(9404, 320) SOURCE(9476, 56) { word pd261; pd261 = (* (( (ptr) (* (( (ptr) gf←c19724)+68)/* var←c17356 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd261 ))))((word) &direction←v10180, pt←v6780, (* (W2Pt) (* (ptr) arc←v6808 ) ), pd261); }; SOURCE(9534, 50) { word pd262; pd262 = (* (( (ptr) (* (( (ptr) gf←c19724)+68)/* var←c17356 */ ))+6) ); angle←v10208 = (word) ( *( (fPt) ((* (ptr) pd262 ))))(direction←v10180, pd262); }; SOURCE(9586, 68) if (((* (( (ptr) arc←v6808)+8) ) != 0)) { SOURCE(9609, 45) { word pd263; pd263 = (* (( (ptr) (* (( (ptr) gf←c19724)+69)/* var←c17516 */ ))+48) ); return((word) ( *( (fPt) ((* (ptr) pd263 ))))(pt←v6780, (* (( (ptr) arc←v6808)+8) ), pd263)); }; }; SOURCE(9656, 68) { word pd264; pd264 = (* (( (ptr) (* (( (ptr) gf←c19724)+71)/* var←c18636 */ ))+13) ); return((word) ( *( (fPt) ((* (ptr) pd264 ))))(angle←v10208, (* (( (ptr) arc←v6808)+6) ), (* (( (ptr) arc←v6808)+7) ), pd264) ); }; } static void ArcMeetsLine←P1320(formal←c0251, arc←v6912, line←v6940) word formal←c0251; word arc←v6912; word line←v6940; { register ptr gf←c19756 = (ptr) &globalframe; W4 points←v6984; word hitCount←v7012; word tangent←v7040; /* ArcMeetsLine: */ SOURCE(9730, 502) SOURCE(9730, 502) tangent←v7040 = 0; SOURCE(9864, 368) if (((* (( (ptr) arc←v6912)+8) ) != 0)) { SOURCE(9887, 110) { word noHit←v10252; SOURCE(9902, 58) { W3 var←c18796; { word pd265; pd265 = (* (( (ptr) (* (( (ptr) gf←c19756)+69)/* var←c17516 */ ))+35) ); (void) ( *( (fPt) ((* (ptr) pd265 ))))((word) &var←c18796, line←v6940, (* (( (ptr) arc←v6912)+8) ), pd265); }; noHit←v10252 = var←c18796.f2; (* (W2Pt) &points←v6984 ) = (* (W2Pt) &var←c18796 ); }; SOURCE(9962, 33) { word idx266; hitCount←v7012 = ( idx266 = (word) ( (0 != noHit←v10252) ? 0 : 1 ) , BCK(idx266, 3) ); }; }; } else { SOURCE(10004, 242) { W4 pts←v10296; word hCount←v10324; SOURCE(10050, 58) { W6 var←c18828; (void) CircleMeetsLine←P480((word) &var←c18828, (* (ptr) arc←v6912 ), line←v6940); tangent←v7040 = var←c18828.f5; hCount←v10324 = var←c18828.f4; pts←v10296 = (* (W4Pt) &var←c18828 ); }; SOURCE(10110, 12) hitCount←v7012 = 0; SOURCE(10124, 108) { register word i←v10424 = 1; register word noName←c18860; noName←c18860 = hCount←v10324; if ((i←v10424 > noName←c18860)) { goto lab←L100015; }; lab←L100018: ; SOURCE(10153, 79) if ((0 != (word) OnArc←P1800((* (( (W2Pt) &pts←v10296)+BCK((i←v10424 - 1), 2)) ), arc←v6912))) { SOURCE(10182, 23) hitCount←v7012 = BCK((hitCount←v7012 + 1), 3); SOURCE(10207, 25) (* (( (W2Pt) &points←v6984)+BCK((hitCount←v7012 - 1), 2)) ) = (* (( (W2Pt) &pts←v10296)+BCK((i←v10424 - 1), 2)) ); }; if ((i←v10424 >= noName←c18860)) { goto lab←L100015; }; i←v10424 = (i←v10424 + 1); goto lab←L100018; lab←L100015: ; }; }; }; /* removed tail goto */ (* (W4Pt) formal←c0251 ) = points←v6984; (* (( (ptr) formal←c0251)+4) ) = hitCount←v7012; (* (( (ptr) formal←c0251)+5) ) = tangent←v7040; return; } static void ArcMeetsEdge←P1380(formal←c0266, arc←v7156, edge←v7184) word formal←c0266; word arc←v7156; word edge←v7184; { register ptr gf←c19788 = (ptr) &globalframe; W4 points←v7228; word hitCount←v7256; word tangent←v7284; /* ArcMeetsEdge: */ SOURCE(10253, 502) SOURCE(10253, 502) tangent←v7284 = 0; SOURCE(10387, 368) if (((* (( (ptr) arc←v7156)+8) ) != 0)) { SOURCE(10410, 110) { word noHit←v10468; SOURCE(10425, 58) { W3 var←c18892; { word pd267; pd267 = (* (( (ptr) (* (( (ptr) gf←c19788)+69)/* var←c17516 */ ))+36) ); (void) ( *( (fPt) ((* (ptr) pd267 ))))((word) &var←c18892, edge←v7184, (* (( (ptr) arc←v7156)+8) ), pd267); }; noHit←v10468 = var←c18892.f2; (* (W2Pt) &points←v7228 ) = (* (W2Pt) &var←c18892 ); }; SOURCE(10485, 33) { word idx268; hitCount←v7256 = ( idx268 = (word) ( (0 != noHit←v10468) ? 0 : 1 ) , BCK(idx268, 3) ); }; }; } else { SOURCE(10527, 242) { W4 pts←v10512; word hCount←v10540; SOURCE(10573, 58) { W6 var←c18924; (void) CircleMeetsEdge←P540((word) &var←c18924, (* (ptr) arc←v7156 ), edge←v7184); tangent←v7284 = var←c18924.f5; hCount←v10540 = var←c18924.f4; pts←v10512 = (* (W4Pt) &var←c18924 ); }; SOURCE(10633, 12) hitCount←v7256 = 0; SOURCE(10647, 108) { register word i←v10640 = 1; register word noName←c18956; noName←c18956 = hCount←v10540; if ((i←v10640 > noName←c18956)) { goto lab←L100020; }; lab←L100023: ; SOURCE(10676, 79) if ((0 != (word) OnArc←P1800((* (( (W2Pt) &pts←v10512)+BCK((i←v10640 - 1), 2)) ), arc←v7156))) { SOURCE(10705, 23) hitCount←v7256 = BCK((hitCount←v7256 + 1), 3); SOURCE(10730, 25) (* (( (W2Pt) &points←v7228)+BCK((hitCount←v7256 - 1), 2)) ) = (* (( (W2Pt) &pts←v10512)+BCK((i←v10640 - 1), 2)) ); }; if ((i←v10640 >= noName←c18956)) { goto lab←L100020; }; i←v10640 = (i←v10640 + 1); goto lab←L100023; lab←L100020: ; }; }; }; /* removed tail goto */ (* (W4Pt) formal←c0266 ) = points←v7228; (* (( (ptr) formal←c0266)+4) ) = hitCount←v7256; (* (( (ptr) formal←c0266)+5) ) = tangent←v7284; return; } static void ArcMeetsArc←P1440(formal←c0280, arc1←v7400, arc2←v7428) word formal←c0280; word arc1←v7400; word arc2←v7428; { W4 points←v7472; word hitCount←v7500; word tangent←v7528; /* ArcMeetsArc: */ SOURCE(10776, 438) SOURCE(10896, 318) if (((* (( (ptr) arc1←v7400)+8) ) != 0)) { SOURCE(10920, 65) { W6 var←c18988; (void) ArcMeetsEdge←P1380((word) &var←c18988, arc2←v7428, (* (( (ptr) arc1←v7400)+8) )); tangent←v7528 = var←c18988.f5; hitCount←v7500 = var←c18988.f4; points←v7472 = (* (W4Pt) &var←c18988 ); }; } else { SOURCE(10985, 243) { W4 pts←v10684; word hCount←v10712; SOURCE(11031, 58) { W6 var←c19020; (void) CircleMeetsArc←P660((word) &var←c19020, (* (ptr) arc1←v7400 ), arc2←v7428); tangent←v7528 = var←c19020.f5; hCount←v10712 = var←c19020.f4; pts←v10684 = (* (W4Pt) &var←c19020 ); }; SOURCE(11091, 12) hitCount←v7500 = 0; SOURCE(11105, 109) { register word i←v10812 = 1; register word noName←c19052; noName←c19052 = hCount←v10712; if ((i←v10812 > noName←c19052)) { goto lab←L100025; }; lab←L100028: ; SOURCE(11134, 80) if ((0 != (word) OnArc←P1800((* (( (W2Pt) &pts←v10684)+BCK((i←v10812 - 1), 2)) ), arc1←v7400))) { SOURCE(11164, 23) hitCount←v7500 = BCK((hitCount←v7500 + 1), 3); SOURCE(11189, 25) (* (( (W2Pt) &points←v7472)+BCK((hitCount←v7500 - 1), 2)) ) = (* (( (W2Pt) &pts←v10684)+BCK((i←v10812 - 1), 2)) ); }; if ((i←v10812 >= noName←c19052)) { goto lab←L100025; }; i←v10812 = (i←v10812 + 1); goto lab←L100028; lab←L100025: ; }; }; }; /* removed tail goto */ (* (W4Pt) formal←c0280 ) = points←v7472; (* (( (ptr) formal←c0280)+4) ) = hitCount←v7500; (* (( (ptr) formal←c0280)+5) ) = tangent←v7528; return; } static void NearestEndpoint←P1500(formal←c0288, pt←v7644, arc←v7672) word formal←c0288; W2 pt←v7644; word arc←v7672; { register ptr gf←c19820 = (ptr) &globalframe; W2 endpoint←v7716; /* NearestEndpoint: */ SOURCE(11235, 522) SOURCE(11317, 68) if (((* (( (ptr) arc←v7672)+8) ) != 0)) { SOURCE(11340, 45) { W2 var←c19116; { word pd269; pd269 = (* (( (ptr) (* (( (ptr) gf←c19820)+69)/* var←c17516 */ ))+42) ); (void) ( *( (fPt) ((* (ptr) pd269 ))))((word) &var←c19116, pt←v7644, (* (( (ptr) arc←v7672)+8) ), pd269); }; endpoint←v7716 = var←c19116; goto lab←L100029; }; }; SOURCE(11387, 370) SOURCE(11393, 207) { float tf270; word x271; word x272; float tf273; word x274; word x275; if ((FABS((( x271 = pt←v7644.f0, *(float*)&x271 ) - ( x272 = (* (( (ptr) arc←v7672)+2) ), *(float*)&x272 )), tf270) <= FABS((( x274 = pt←v7644.f0, *(float*)&x274 ) - ( x275 = (* (( (ptr) arc←v7672)+4) ), *(float*)&x275 )), tf273))) { SOURCE(11444, 69) { float tf276; word x277; word x278; float tf279; word x280; word x281; if ((FABS((( x277 = pt←v7644.f1, *(float*)&x277 ) - ( x278 = (* (( (ptr) arc←v7672)+3) ), *(float*)&x278 )), tf276) <= FABS((( x280 = pt←v7644.f1, *(float*)&x280 ) - ( x281 = (* (( (ptr) arc←v7672)+5) ), *(float*)&x281 )), tf279))) { SOURCE(11493, 20) endpoint←v7716 = (* (W2Pt) (( (ptr) arc←v7672)+2) ); goto lab←L100029; } else { SOURCE(11513, 12) goto lab←L100030; }; }; } else { SOURCE(11532, 68) { float tf282; word x283; word x284; float tf285; word x286; word x287; if ((FABS((( x283 = pt←v7644.f1, *(float*)&x283 ) - ( x284 = (* (( (ptr) arc←v7672)+3) ), *(float*)&x284 )), tf282) > FABS((( x286 = pt←v7644.f1, *(float*)&x286 ) - ( x287 = (* (( (ptr) arc←v7672)+5) ), *(float*)&x287 )), tf285))) { SOURCE(11580, 20) endpoint←v7716 = (* (W2Pt) (( (ptr) arc←v7672)+4) ); goto lab←L100029; } else { SOURCE(11600, 11) goto lab←L100030; }; }; }; }; /* c2c skipped dead code */ lab←L100030: ; SOURCE(11629, 126) { word pd288; word x289; word pd290; word x291; pd288 = (* (( (ptr) (* (( (ptr) gf←c19820)+68)/* var←c17356 */ ))+21) ); pd290 = (* (( (ptr) (* (( (ptr) gf←c19820)+68)/* var←c17356 */ ))+21) ); if ((( x289 = (word) ( *( (fPt) ((* (ptr) pd288 ))))(pt←v7644, (* (W2Pt) (( (ptr) arc←v7672)+2) ), pd288), *(float*)&x289 ) < ( x291 = (word) ( *( (fPt) ((* (ptr) pd290 ))))(pt←v7644, (* (W2Pt) (( (ptr) arc←v7672)+4) ), pd290), *(float*)&x291 ))) { SOURCE(11715, 23) endpoint←v7716 = (* (W2Pt) (( (ptr) arc←v7672)+2) ); } else { SOURCE(11738, 17) endpoint←v7716 = (* (W2Pt) (( (ptr) arc←v7672)+4) ); }; }; /* removed tail goto */ lab←L100029: ; (* (W2Pt) formal←c0288 ) = endpoint←v7716; return; } static word DistanceSquaredToNearestEndpoint←P1560(pt←v7776, arc←v7804) W2 pt←v7776; word arc←v7804; { register ptr gf←c19852 = (ptr) &globalframe; word distanceSquared←v7848; word distance2ToPLo←v10856; word distance2ToPHi←v10884; /* DistanceSquaredToNearestEndpoint: */ SOURCE(11766, 297) SOURCE(11908, 54) { word pd292; pd292 = (* (( (ptr) (* (( (ptr) gf←c19852)+68)/* var←c17356 */ ))+21) ); distance2ToPLo←v10856 = (word) ( *( (fPt) ((* (ptr) pd292 ))))(pt←v7776, (* (W2Pt) (( (ptr) arc←v7804)+2) ), pd292); }; SOURCE(11964, 54) { word pd293; pd293 = (* (( (ptr) (* (( (ptr) gf←c19852)+68)/* var←c17356 */ ))+21) ); distance2ToPHi←v10884 = (word) ( *( (fPt) ((* (ptr) pd293 ))))(pt←v7776, (* (W2Pt) (( (ptr) arc←v7804)+4) ), pd293); }; SOURCE(12020, 43) { word x294; float tf295; float tf296; word x297; float tf298; return(( tf298 = FMIN(( x294 = distance2ToPLo←v10856, *(float*)&x294 ), ( x297 = distance2ToPHi←v10884, *(float*)&x297 ), tf295, tf296), *(word*)&tf298 )); }; } static void NearestPointOnArc←P1620(formal←c0302, pt←v7908, arc←v7936) word formal←c0302; W2 pt←v7908; word arc←v7936; { register ptr gf←c19884 = (ptr) &globalframe; W2 onArc←v7980; W2 projectedPt←v10928; /* NearestPointOnArc: */ SOURCE(12069, 329) SOURCE(12169, 71) if (((* (( (ptr) arc←v7936)+8) ) != 0)) { SOURCE(12192, 48) { W2 var←c19244; { word pd299; pd299 = (* (( (ptr) (* (( (ptr) gf←c19884)+69)/* var←c17516 */ ))+46) ); (void) ( *( (fPt) ((* (ptr) pd299 ))))((word) &var←c19244, pt←v7908, (* (( (ptr) arc←v7936)+8) ), pd299); }; onArc←v7980 = var←c19244; goto lab←L100032; }; }; SOURCE(12242, 54) (void) PointProjectedOntoCircle←P840((word) &projectedPt←v10928, pt←v7908, (* (ptr) arc←v7936 )); SOURCE(12298, 100) if ((0 != (word) CirclePointOnArc←P1260(projectedPt←v10928, arc←v7936))) { SOURCE(12341, 25) onArc←v7980 = projectedPt←v10928; } else { SOURCE(12366, 32) (void) NearestEndpoint←P1500((word) &onArc←v7980, pt←v7908, arc←v7936); }; /* removed tail goto */ lab←L100032: ; (* (W2Pt) formal←c0302 ) = onArc←v7980; return; } static word DistancePointToArc←P1680(pt←v8040, arc←v8068) W2 pt←v8040; word arc←v8068; { register ptr gf←c19916 = (ptr) &globalframe; word distance←v8112; W2 projectedPt←v10972; W2 nearEndpoint←v11000; /* DistancePointToArc: */ SOURCE(12404, 433) SOURCE(12522, 72) if (((* (( (ptr) arc←v8068)+8) ) != 0)) { SOURCE(12545, 49) { word pd300; pd300 = (* (( (ptr) (* (( (ptr) gf←c19916)+69)/* var←c17516 */ ))+44) ); return((word) ( *( (fPt) ((* (ptr) pd300 ))))(pt←v8040, (* (( (ptr) arc←v8068)+8) ), pd300)); }; }; SOURCE(12596, 54) (void) PointProjectedOntoCircle←P840((word) &projectedPt←v10972, pt←v8040, (* (ptr) arc←v8068 )); SOURCE(12652, 185) if ((0 != (word) CirclePointOnArc←P1260(projectedPt←v10972, arc←v8068))) { SOURCE(12695, 52) { float tf301; word x302; float tf303; distance←v8112 = ( tf303 = FABS(( x302 = (word) CircleDistance←P780(pt←v8040, (* (ptr) arc←v8068 )), *(float*)&x302 ), tf301), *(word*)&tf303 ); }; } else { SOURCE(12749, 39) (void) NearestEndpoint←P1500((word) &nearEndpoint←v11000, pt←v8040, arc←v8068); SOURCE(12790, 47) { word pd304; pd304 = (* (( (ptr) (* (( (ptr) gf←c19916)+68)/* var←c17356 */ ))+19) ); distance←v8112 = (word) ( *( (fPt) ((* (ptr) pd304 ))))(pt←v8040, nearEndpoint←v11000, pd304); }; }; SOURCE(12404, 433) return(distance←v8112); } static word DistanceSquaredPointToArc←P1740(pt←v8172, arc←v8200) W2 pt←v8172; word arc←v8200; { register ptr gf←c19948 = (ptr) &globalframe; word distanceSquared←v8244; W2 projectedPt←v11044; /* DistanceSquaredPointToArc: */ SOURCE(12846, 465) SOURCE(12964, 79) if (((* (( (ptr) arc←v8200)+8) ) != 0)) { SOURCE(12987, 56) { word pd305; pd305 = (* (( (ptr) (* (( (ptr) gf←c19948)+69)/* var←c17516 */ ))+43) ); return((word) ( *( (fPt) ((* (ptr) pd305 ))))(pt←v8172, (* (( (ptr) arc←v8200)+8) ), pd305)); }; }; SOURCE(13045, 54) (void) PointProjectedOntoCircle←P840((word) &projectedPt←v11044, pt←v8172, (* (ptr) arc←v8200 )); SOURCE(13101, 210) if ((0 != (word) CirclePointOnArc←P1260(projectedPt←v11044, arc←v8200))) { SOURCE(13145, 48) distanceSquared←v8244 = (word) CircleDistance←P780(pt←v8172, (* (ptr) arc←v8200 )); SOURCE(13196, 49) { word x306; word x307; *(float*)&distanceSquared←v8244 = ( x306 = distanceSquared←v8244, *(float*)&x306 ) * ( x307 = distanceSquared←v8244, *(float*)&x307 ); }; } else { SOURCE(13252, 59) distanceSquared←v8244 = (word) DistanceSquaredToNearestEndpoint←P1560(pt←v8172, arc←v8200); }; SOURCE(12846, 465) return(distanceSquared←v8244); } static word OnArc←P1800(pt←v8304, arc←v8332) W2 pt←v8304; word arc←v8332; { word var←c8376; word d2←v11088; /* OnArc: */ SOURCE(13317, 155) SOURCE(13411, 39) d2←v11088 = (word) DistanceSquaredPointToArc←P1740(pt←v8304, arc←v8332); SOURCE(13452, 20) { word x308; word x309; return((( x308 = d2←v11088, *(float*)&x308 ) < ( x309 = (* (ptr) &fc79 ), *(float*)&x309 ))); }; } /* file: GGCirclesImpl, module: GGCirclesImpl, compiled at: February 5, 1993 1:54:48 pm PST */ extern void XR←install←GGCirclesImpl() { NoName←Q2484(); } extern void XR←run←GGCirclesImpl() { XR←Start(&globalframe); }