/* 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); }