/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1993 by Xerox Corporation. All rights reserved. */ /* time: July 28, 1993 10:21:18 am PDT */ /* C2C version: April 20, 1993 (sun4) */ /* ref-counting: off */ /* file: ImagerPenImpl, module: ImagerPenImpl */ /* switches: bcfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> static char versionStamp[] = "@(#)mob←version [1357448558,2214319797] ImagerPenImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef word (*fPt)(); typedef struct {word f0, f1;} W2; typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8; typedef struct {word f0, f1, f2, f3;} W4; typedef struct {W8 f; W4 r;} W12; typedef struct {word f0, f1, f2, f3, f4, f5;} W6; typedef W6 *W6Pt; typedef W2 *W2Pt; typedef struct {word f0, f1, f2;} W3; typedef struct {W8 f; W3 r;} W11; #define SOURCE(p, l) /* source p, l */ static float fc12 = 0.0; #define FMAX(x, y, tx, ty) ( (tx=((float) x)) >= (ty=((float) y)) ? tx : ty ) static float fc36 = 0.5; #define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) ) static float fc54 = 90.0; static float fc59 = 180.0; static float fc62 = -90.0; #define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i ) #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) ) #define IABS(i) ( ((int)(word)(i) > 0) ? (i) : (word)(-(int)(word)(i)) ) static float fc114 = -99999.0; static float fc115 = 1.0; #define INEG(x) ( (word) ( - ((int) (word) (x)) ) ) static float fc120 = -1.0; #define MIN(cast, x, y) ( ( cast x) < ( cast y) ? (x) : (y) ) static void NoName←Q1956(); static void ImagerPenImpl←P0(); static word ScaleFactor←P60(); static word MakeTransformedCircle←P120(); static word MakeThickenedTransformedCircle←P180(); static word NoName←Q2016(); static word MakeEllipse←P300(); static word CheckCache←P360(); static void EnterCache←P420(); static word Round←P480(); static word MakeHalfEllipse←P540(); static word MoveToNextpqr←P1500(); static void RemoveLinepqAndAdjustq←P1560(); static word AllocNode←P600(); static void FreeNode←P660(); static void FreeVertexList←P720(); static word CountVertexList←P780(); static word PythAdd←P840(); static void CalculateGreek←P900(); static word IntegerDistanceToEllipseTowards←P960(); static void NoName←Q2076(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\166\022\273\153\300\125\117\023\206\100\164\000\000"}; static struct {unsigned f; char r[48];} string2 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\166\022\273\153\300\125\117\023\206\100\164\005\004\162\145\163\164\214\216\257\300\166\022\273\153\300\125\117\023\206\100\164\261\000\000\000"}; static struct {unsigned f; char r[4];} string3 = {131074, "\004\003\000"}; static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\120\351\005\156\300\203\373\326\265\101\050\000\000"}; static struct {unsigned f; char r[4];} string5 = {131074, "\003\006\000"}; static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\120\351\005\156\300\203\373\326\265\100\164\000\000"}; static struct {unsigned f; char r[4];} string7 = {196611, "\004e\000"}; static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"}; static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\166\022\273\153\300\125\117\023\206\100\150\000\000"}; static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\130\073\236\351\300\154\373\320\354\100\150\000\000"}; static struct { word f0[18]; 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[4]; } globalframe = { {0}, (word) IntegerDistanceToEllipseTowards←P960, 0, (word) CalculateGreek←P900, 0, (word) PythAdd←P840, 0, (word) CountVertexList←P780, 0, (word) FreeVertexList←P720, 0, (word) FreeNode←P660, 0, (word) AllocNode←P600, 0, (word) MakeHalfEllipse←P540, 0, (word) Round←P480, 0, (word) EnterCache←P420, 0, (word) CheckCache←P360, 0, (word) MakeEllipse←P300, 0, (word) MakeThickenedTransformedCircle←P180, 0, (word) MakeTransformedCircle←P120, 0, (word) ScaleFactor←P60, 0, (word) ImagerPenImpl←P0, {0} }; static void NoName←Q1956() { register ptr gf←c0190 = (ptr) &globalframe; word var←c12856; (* (( (ptr) gf←c0190)+15) ) = (word) XR←GetTypeIndexS((word) (&string1)); (* (( (ptr) gf←c0190)+16) ) = (word) XR←GetTypeIndex((word) &string2, 0, (word) &string3); (* (( (ptr) gf←c0190)+17) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5); (void) XR←DeclareGlobalFrame((word) "ImagerPenImpl", &globalframe, (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7) , (word) (( (bPt) gf←c0190)+192)/* var←c11320 */ ); var←c12856 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string8)), 55); (* (( (ptr) gf←c0190)+51)/* var←c11480 */ ) = var←c12856; (void) XR←ImportProcS(var←c12856, 262401); (void) XR←ImportProcS(var←c12856, 402927105); (void) XR←ImportProcS(var←c12856, 67899394); var←c12856 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string9)), 36); (* (( (ptr) gf←c0190)+50)/* var←c11352 */ ) = var←c12856; (void) XR←ImportProcS(var←c12856, 67372801); (void) XR←ImportProcS(var←c12856, 67373313); (void) XR←ImportProcS(var←c12856, 67372289); var←c12856 = (word) XR←ExportInterface((word) "ImagerPen", (word) XR←GetTypeIndexS((word) (&string10)), 2); (* (( (ptr) gf←c0190)+52)/* var←c12888 */ ) = var←c12856; (void) XR←ExportProcS(var←c12856, (word) (( (bPt) gf←c0190)+176)/* var←c11256 */ , 68157443, (word) "MakeTransformedCircle") ; (void) XR←ExportProcS(var←c12856, (word) (( (bPt) gf←c0190)+160)/* var←c11192 */ , 67895555, (word) "MakeEllipse"); var←c12856 = (word) XR←ExportInterface((word) "ImagerPenExtras", (word) XR←GetTypeIndexS((word) (&string11)), 1); (* (( (ptr) gf←c0190)+52)/* var←c12888 */ ) = var←c12856; (void) XR←ExportProcS(var←c12856, (word) (( (bPt) gf←c0190)+168)/* var←c11224 */ , 68681732, (word) "MakeThickenedTransformedCircle") ; } static void ImagerPenImpl←P0(formal←c032, formal←c031) word formal←c032; word formal←c031; { register ptr gf←c12920 = (ptr) &globalframe; /* ImagerPenImpl: */ SOURCE(269, 8386) SOURCE(632, 36) (* (( (ptr) gf←c12920)+8)/* hairline←v2832 */ ) = (word) MakeEllipse←P300((* (ptr) &fc12 ), (* (ptr) &fc12 ), (* (ptr) &fc12 )) ; SOURCE(3178, 18) (* (( (ptr) gf←c12920)+9)/* cacheSize←v3000 */ ) = 5; } static word ScaleFactor←P60(a←v3568, b←v3596, strokeWidth←v3624, thickening←v3652, minThickness←v3680) word a←v3568; word b←v3596; word strokeWidth←v3624; word thickening←v3652; word minThickness←v3680; { register ptr gf←c12952 = (ptr) &globalframe; word var←c3724; word e←v6276; /* ScaleFactor: */ SOURCE(671, 1190) SOURCE(766, 33) { word pd13; word x14; word x15; word x16; word x17; float tf18; pd13 = (* (( (ptr) (* (( (ptr) gf←c12952)+50)/* var←c11352 */ ))+9) ); e←v6276 = (word) ( *( (fPt) ((* (ptr) pd13 ))))(( tf18 = (( x14 = a←v3568, *(float*)&x14 ) * ( x15 = a←v3568, *(float*)&x15 )) + (( x16 = b←v3596, *(float*)&x16 ) * ( x17 = b←v3596, *(float*)&x17 )), *(word*)&tf18 ), pd13); }; SOURCE(801, 36) { word x19; word x20; if ((( x19 = e←v6276, *(float*)&x19 ) == ( x20 = (* (ptr) &fc12 ), *(float*)&x20 ))) { SOURCE(817, 20) return(strokeWidth←v3624); }; }; SOURCE(892, 61) { word x21; float tf22; float tf23; word x24; word x25; float tf26; float tf27; float tf28; word x29; word x30; word x31; float tf32; tf26 = FMAX(( x21 = (* (ptr) &fc12 ), *(float*)&x21 ), (( x24 = minThickness←v3680, *(float*)&x24 ) / ( x25 = e←v6276, *(float*)&x25 )), tf22, tf23); return(( tf32 = FMAX(tf26, (( x29 = strokeWidth←v3624, *(float*)&x29 ) + (( x30 = thickening←v3652, *(float*)&x30 ) / ( x31 = e←v6276, *(float*)&x31 ))), tf27, tf28), *(word*)&tf32 )); }; } static word MakeTransformedCircle←P120(strokeWidth←v3784, m←v3812, thickening←v3840) word strokeWidth←v3784; word m←v3812; W2 thickening←v3840; { word var←c3884; /* MakeTransformedCircle: */ SOURCE(959, 902) SOURCE(1081, 780) { word var←c0206; { W2 var←c11416; var←c11416.f0 = (* (ptr) &fc12 ); var←c11416.f1 = (* (ptr) &fc12 ); var←c0206 = (word) MakeThickenedTransformedCircle←P180(strokeWidth←v3784, m←v3812, thickening←v3840, var←c11416); }; return(var←c0206); }; } static word MakeThickenedTransformedCircle←P180(strokeWidth←v3944, m←v3972, thickening←v4000, minThickness←v4028) word strokeWidth←v3944; word m←v3972; W2 thickening←v4000; W2 minThickness←v4028; { W12 var←c12984; register ptr gf←c13016 = (ptr) &globalframe; word var←c4072; /* MakeThickenedTransformedCircle: */ SOURCE(1207, 1075) SOURCE(1370, 912) { word x33; word x34; word x35; word x37; word x38; word x39; word x40; word x41; word x42; word x43; if ( ( ( ( ( (( x33 = strokeWidth←v3944, *(float*)&x33 ) == ( x34 = (* (ptr) &fc12 ), *(float*)&x34 )) ? (( x35 = thickening←v4000.f0, *(float*)&x35 ) < ( x37 = (* (ptr) &fc36 ), *(float*)&x37 )) : 0 ) ? (( x38 = thickening←v4000.f1, *(float*)&x38 ) < ( x39 = (* (ptr) &fc36 ), *(float*)&x39 )) : 0 ) ? (( x40 = minThickness←v4028.f0, *(float*)&x40 ) < ( x41 = (* (ptr) &fc36 ), *(float*)&x41 )) : 0 ) ? (( x42 = minThickness←v4028.f1, *(float*)&x42 ) < ( x43 = (* (ptr) &fc36 ), *(float*)&x43 )) : 0 ) ) { SOURCE(1494, 18) return((* (( (ptr) gf←c13016)+8)/* hairline←v2832 */ )); } else { SOURCE(1519, 765) { word sx←v6320; word sy←v6348; /* declaration of mm←v6376 skipped */ W6 f←v6404; word majorAxis←v6432; word minorAxis←v6460; word theta←v6488; SOURCE(1521, 75) sx←v6320 = (word) ScaleFactor←P60((* (ptr) m←v3972 ), (* (( (ptr) m←v3972)+1) ), strokeWidth←v3944, thickening←v4000.f0, minThickness←v4028.f0) ; SOURCE(1598, 75) sy←v6348 = (word) ScaleFactor←P60((* (( (ptr) m←v3972)+3) ), (* (( (ptr) m←v3972)+4) ), strokeWidth←v3944, thickening←v4000.f1, minThickness←v4028.f1) ; SOURCE(1675, 71) { W2 var←c11448; var←c11448.f0 = sx←v6320; var←c11448.f1 = sy←v6348; { word pd44; pd44 = (* (( (ptr) (* (( (ptr) gf←c13016)+51)/* var←c11480 */ ))+20) ); (* (( (ptr) &var←c12984)+4)/* mm←v6376 */ ) = (word) ( *( (fPt) ((* (ptr) pd44 ))))(m←v3972, var←c11448, pd44); }; }; SOURCE(1748, 106) { /* declaration of var←c01 skipped */ (* (( (ptr) &var←c12984)+5)/* var←c01 */ ) = (* (( (ptr) (* (( (ptr) gf←c13016)+51)/* var←c11480 */ ))+50) ); { /* declaration of var←c02 skipped */ { word var←c0207; var←c0207 = (word) &var←c12984; (void) (word) XR←Enable(( ((word) (fPt) NoName←Q2016) ), ( ((word) (fPt) NoName←Q2076) ), var←c0207); }; f←v6404 = (* (W6Pt) (( (ptr) &var←c12984)+6)/* var←c02 */ ); }; }; SOURCE(1863, 28) { float tf45; word x46; float tf47; majorAxis←v6432 = ( tf47 = FABS(( x46 = f←v6404.f1, *(float*)&x46 ), tf45), *(word*)&tf47 ); }; SOURCE(1893, 28) { float tf48; word x49; float tf50; minorAxis←v6460 = ( tf50 = FABS(( x49 = f←v6404.f2, *(float*)&x49 ), tf48), *(word*)&tf50 ); }; SOURCE(1923, 21) theta←v6488 = f←v6404.f3; SOURCE(1946, 111) { word x51; word x52; if ((( x51 = majorAxis←v6432, *(float*)&x51 ) < ( x52 = minorAxis←v6460, *(float*)&x52 ))) { SOURCE(1976, 83) { word t←v6532; SOURCE(1978, 19) t←v6532 = majorAxis←v6432; SOURCE(1999, 21) majorAxis←v6432 = minorAxis←v6460; SOURCE(2022, 13) minorAxis←v6460 = t←v6532; SOURCE(2037, 20) { word x53; word x55; *(float*)&theta←v6488 = ( x53 = theta←v6488, *(float*)&x53 ) + ( x55 = (* (ptr) &fc54 ), *(float*)&x55 ); }; }; }; }; SOURCE(2062, 51) lab←L100004: ; { word x56; word x57; if ((( x56 = theta←v6488, *(float*)&x56 ) > ( x57 = (* (ptr) &fc54 ), *(float*)&x57 ))) { } else { goto lab←L100002; }; }; SOURCE(2084, 29) { word x58; word x60; *(float*)&theta←v6488 = ( x58 = theta←v6488, *(float*)&x58 ) - ( x60 = (* (ptr) &fc59 ), *(float*)&x60 ); }; goto lab←L100004; lab←L100002: ; SOURCE(2115, 53) lab←L100007: ; { word x61; word x63; if ((( x61 = theta←v6488, *(float*)&x61 ) <= ( x63 = (* (ptr) &fc62 ), *(float*)&x63 ))) { } else { goto lab←L100005; }; }; SOURCE(2139, 29) { word x64; word x65; *(float*)&theta←v6488 = ( x64 = theta←v6488, *(float*)&x64 ) + ( x65 = (* (ptr) &fc59 ), *(float*)&x65 ); }; goto lab←L100007; lab←L100005: ; SOURCE(2170, 32) { word pd66; pd66 = (* (( (ptr) (* (( (ptr) gf←c13016)+51)/* var←c11480 */ ))+5) ); (void) ( *( (fPt) ((* (ptr) pd66 ))))((* ((( (ptr) &var←c12984)+4)/* mm←v6376 */ ) ), pd66); }; SOURCE(2204, 78) return((word) MakeEllipse←P300(majorAxis←v6432, minorAxis←v6460, theta←v6488)); }; }; }; } static word NoName←Q2016(formal←c0194) word formal←c0194; { SOURCE(1748, 106) { word pd67; pd67 = (* (( (ptr) formal←c0194)+5) ); (void) ( *( (fPt) ((* (ptr) pd67 ))))((word) (( (bPt) formal←c0194)+24), (* (( (ptr) formal←c0194)+4) ), pd67); }; return(0); } static word MakeEllipse←P300(majorAxis←v4236, minorAxis←v4264, theta←v4292) word majorAxis←v4236; word minorAxis←v4264; word theta←v4292; { register ptr gf←c13048 = (ptr) &globalframe; word p←v4336; /* MakeEllipse: */ SOURCE(2365, 805) SOURCE(2365, 805) p←v4336 = 0; SOURCE(2456, 714) { word tc68; if (((* (( (ptr) gf←c13048)+9)/* cacheSize←v3000 */ ) > 0)) { p←v4336 = (word) CheckCache←P360(majorAxis←v4236, minorAxis←v4264, theta←v4292); tc68 = (word) (p←v4336 != 0); } else { tc68 = (word) 0; }; if (tc68) { SOURCE(2532, 12) return(p←v4336); } else { SOURCE(2544, 628) { word v←v6576; word n←v6604; word i←v6632 = 0; SOURCE(2546, 60) v←v6576 = (word) MakeHalfEllipse←P540(majorAxis←v4236, minorAxis←v4264, theta←v4292); SOURCE(2608, 29) { word idx69; n←v6604 = ( idx69 = (word) ((word) CountVertexList←P780(v←v6576) - 1), SGNCK(idx69) ); }; SOURCE(2651, 20) { word var←c11544; word var←c11576; word var←c11608; { word idx70; var←c11544 = ( idx70 = (word) ((word) n←v6604 << 1), BCK(idx70, 33554431) ); }; var←c11576 = ((word) var←c11544 << 3); var←c11608 = XR←NewObject((24 + var←c11576), (* (( (ptr) gf←c13048)+15) )); (* (( (ptr) var←c11608)+5) ) = var←c11544; p←v4336 = var←c11608; }; SOURCE(2673, 23) (* (( (ptr) p←v4336)+2) ) = majorAxis←v4236; SOURCE(2698, 23) (* (( (ptr) p←v4336)+3) ) = minorAxis←v4264; SOURCE(2723, 15) (* (( (ptr) p←v4336)+4) ) = theta←v4292; SOURCE(2740, 102) { register word t←v6676; t←v6676 = v←v6576; lab←L100011: ; if (((* (( (ptr) t←v6676)+6) ) != 0)) { } else { goto lab←L100008; }; SOURCE(2790, 41) { word var←c11640; word var←c11704; word var←c11768; { word var←c11672; word real←v10792; real←v10792 = (* (ptr) t←v6676 ); SOURCE(2341, 20) { word x71; word x72; *(float*)&var←c11672 = ( x71 = (* (ptr) &fc36 ), *(float*)&x71 ) * ( x72 = real←v10792, *(float*)&x72 ); }; var←c11640 = var←c11672; }; { word var←c11736; word real←v10744; real←v10744 = (* (( (ptr) t←v6676)+1) ); SOURCE(2341, 20) { word x73; word x74; *(float*)&var←c11736 = ( x73 = (* (ptr) &fc36 ), *(float*)&x73 ) * ( x74 = real←v10744, *(float*)&x74 ); }; var←c11704 = var←c11736; }; { word limit75; var←c11768 = (word) (( (W2Pt) (( (bPt) p←v4336)+24))+( limit75 = (* (( (ptr) p←v4336)+5) ), BCK(i←v6632, limit75) )); }; (* (ptr) var←c11768 ) = var←c11640; (* (( (ptr) var←c11768)+1) ) = var←c11704; }; SOURCE(2833, 9) i←v6632 = (i←v6632 + 1); t←v6676 = (* (( (ptr) t←v6676)+6) ); goto lab←L100011; lab←L100008: ; }; SOURCE(2853, 104) { register word t←v6720; t←v6720 = v←v6576; lab←L100017: ; if (((* (( (ptr) t←v6720)+6) ) != 0)) { } else { goto lab←L100014; }; SOURCE(2903, 43) { word var←c11800; word var←c11864; word var←c11928; { word var←c11832; word real←v10696; real←v10696 = (* (ptr) t←v6720 ); SOURCE(2341, 20) { word x76; word x77; *(float*)&var←c11832 = ( x76 = (* (ptr) &fc36 ), *(float*)&x76 ) * ( x77 = real←v10696, *(float*)&x77 ); }; { word x78; *(float*)&var←c11800 = - ( x78 = var←c11832, *(float*)&x78 ); }; }; { word var←c11896; word real←v10648; real←v10648 = (* (( (ptr) t←v6720)+1) ); SOURCE(2341, 20) { word x79; word x80; *(float*)&var←c11896 = ( x79 = (* (ptr) &fc36 ), *(float*)&x79 ) * ( x80 = real←v10648, *(float*)&x80 ); }; { word x81; *(float*)&var←c11864 = - ( x81 = var←c11896, *(float*)&x81 ); }; }; { word limit82; var←c11928 = (word) (( (W2Pt) (( (bPt) p←v4336)+24))+( limit82 = (* (( (ptr) p←v4336)+5) ), BCK(i←v6632, limit82) )); }; (* (ptr) var←c11928 ) = var←c11800; (* (( (ptr) var←c11928)+1) ) = var←c11864; }; SOURCE(2948, 9) i←v6632 = (i←v6632 + 1); t←v6720 = (* (( (ptr) t←v6720)+6) ); goto lab←L100017; lab←L100014: ; }; SOURCE(2968, 113) { register word i←v6764 = 0; register word noName←c11960; noName←c11960 = (* (( (ptr) p←v4336)+5) ); if ((i←v6764 >= noName←c11960)) { goto lab←L100020; }; lab←L100023: ; SOURCE(2997, 41) { word x83; float tf84; float tf85; float tf86; word limit87; word x88; float tf89; (* (ptr) p←v4336 ) = ( tf89 = FMAX(( x83 = (* (ptr) p←v4336 ), *(float*)&x83 ), FABS(( /*1*/ x88 = (* (( (W2Pt) (( (ptr) p←v4336)+6))+( /*1*/ limit87 = (* (( (ptr) p←v4336)+5) ), /*1*/ BCK(i←v6764, limit87) /*1*/ )) ).f0, *(float*)&x88 /*1*/ ), tf86), tf84, tf85), *(word*)&tf89 ); }; SOURCE(3040, 41) { word x90; float tf91; float tf92; float tf93; word limit94; word x95; float tf96; (* (( (ptr) p←v4336)+1) ) = ( tf96 = FMAX(( x90 = (* (( (ptr) p←v4336)+1) ), *(float*)&x90 ), FABS(( /*1*/ x95 = (* (( (W2Pt) (( (ptr) p←v4336)+6))+( /*1*/ limit94 = (* (( (ptr) p←v4336)+5) ), /*1*/ BCK(i←v6764, limit94) /*1*/ )) ).f1, *(float*)&x95 /*1*/ ), tf93), tf91, tf92), *(word*)&tf96 ); }; i←v6764 = (i←v6764 + 1); if ((i←v6764 < noName←c11960)) { goto lab←L100023; }; lab←L100020: ; }; SOURCE(3092, 17) if ((i←v6632 != (* (( (ptr) p←v4336)+5) ))) { SOURCE(3109, 5) (void) XR←RaiseUnnamedError(); }; SOURCE(3116, 35) if (((* (( (ptr) gf←c13048)+9)/* cacheSize←v3000 */ ) > 0)) { SOURCE(3138, 13) (void) EnterCache←P420(p←v4336); }; SOURCE(3153, 17) (void) FreeVertexList←P720(v←v6576); }; }; }; SOURCE(2365, 805) return(p←v4336); } static word CheckCache←P360(majorAxis←v4480, minorAxis←v4508, theta←v4536) word majorAxis←v4480; word minorAxis←v4508; word theta←v4536; { register ptr gf←c13080 = (ptr) &globalframe; word var←c4580; word prev←v6808 = 0; /* CheckCache: */ SOURCE(3267, 470) (void) (XR←MonitorEntry((word) (( (bPt) gf←c13080)+16)/* LOCK←v2636 */ )); SOURCE(3378, 304) { register word c←v6936; c←v6936 = (* (( (ptr) gf←c13080)+10)/* cache←v3028 */ ); lab←L100027: ; if ((c←v6936 != 0)) { } else { goto lab←L100024; }; SOURCE(3430, 239) { word x97; word x98; word x99; word x100; word x101; word x102; word x103; word x104; if ( ( ( (( x97 = (* (( (ptr) (* (ptr) c←v6936 ))+2) ), *(float*)&x97 ) == ( x98 = majorAxis←v4480, *(float*)&x98 )) ? (( x99 = (* (( (ptr) (* (ptr) c←v6936 ))+3) ), *(float*)&x99 ) == ( x100 = minorAxis←v4508, *(float*)&x100 )) : 0 ) ? ( (( x101 = (* (( (ptr) (* (ptr) c←v6936 ))+4) ), *(float*)&x101 ) == ( x102 = theta←v4536, *(float*)&x102 )) ? 1 : (( x103 = majorAxis←v4480, *(float*)&x103 ) == ( x104 = minorAxis←v4508, *(float*)&x104 )) ) : 0 ) ) { SOURCE(3555, 66) if ((prev←v6808 != 0)) { SOURCE(3576, 18) (* (( (ptr) prev←v6808)+1) ) = (* (( (ptr) c←v6936)+1) ); SOURCE(3596, 14) (* (( (ptr) c←v6936)+1) ) = (* (( (ptr) gf←c13080)+10)/* cache←v3028 */ ); SOURCE(3612, 9) (* (( (ptr) gf←c13080)+10)/* cache←v3028 */ ) = c←v6936; }; SOURCE(3626, 25) (* (( (ptr) gf←c13080)+11)/* cacheHits←v3056 */ ) = ((* (( (ptr) gf←c13080)+11)/* cacheHits←v3056 */ ) + 1); SOURCE(3653, 16) { word var←c11992; var←c11992 = (* (ptr) c←v6936 ); (void) (XR←MonitorExit((word) (( (bPt) gf←c13080)+16)/* LOCK←v2636 */ )); return(var←c11992); }; }; }; SOURCE(3674, 8) prev←v6808 = c←v6936; c←v6936 = (* (( (ptr) c←v6936)+1) ); goto lab←L100027; lab←L100024: ; }; SOURCE(3693, 29) (* (( (ptr) gf←c13080)+12)/* cacheMisses←v3084 */ ) = ((* (( (ptr) gf←c13080)+12)/* cacheMisses←v3084 */ ) + 1); SOURCE(3724, 13) (void) (XR←MonitorExit((word) (( (bPt) gf←c13080)+16)/* LOCK←v2636 */ )); return(0); } static void EnterCache←P420(pen←v4640) word pen←v4640; { register ptr gf←c13112 = (ptr) &globalframe; word majorAxis←v7064; word minorAxis←v7092; word theta←v7120; word new←v7148 = 0; word prev←v7176 = 0; word i←v7204 = 2; /* EnterCache: */ SOURCE(3741, 431) (void) (XR←MonitorEntry((word) (( (bPt) gf←c13112)+16)/* LOCK←v2636 */ )); SOURCE(3779, 31) majorAxis←v7064 = (* (( (ptr) pen←v4640)+2) ); SOURCE(3812, 31) minorAxis←v7092 = (* (( (ptr) pen←v4640)+3) ); SOURCE(3845, 26) theta←v7120 = (* (( (ptr) pen←v4640)+4) ); SOURCE(3934, 198) { register word p←v7416; p←v7416 = (* (( (ptr) gf←c13112)+10)/* cache←v3028 */ ); lab←L100031: ; SOURCE(3972, 32) if ((p←v7416 == 0)) { SOURCE(3989, 15) { word var←c12024; word var←c12056; var←c12024 = XR←NewObject(8, (* (( (ptr) gf←c13112)+16) )); var←c12056 = var←c12024; (* (ptr) var←c12056 ) = pen←v4640; new←v7148 = var←c12024; }; SOURCE(4006, 4) goto lab←L100029; }; SOURCE(4013, 99) if ( ( (i←v7204 >= (* (( (ptr) gf←c13112)+9)/* cacheSize←v3000 */ )) ? ((* (( (ptr) p←v7416)+1) ) != 0) : 0 ) ) { SOURCE(4053, 12) new←v7148 = (* (( (ptr) p←v7416)+1) ); SOURCE(4067, 12) (* (( (ptr) p←v7416)+1) ) = 0; SOURCE(4081, 14) (* (( (ptr) new←v7148)+1) ) = 0; SOURCE(4097, 15) (* (ptr) new←v7148 ) = pen←v4640; SOURCE(4114, 4) goto lab←L100029; }; SOURCE(4123, 9) i←v7204 = (i←v7204 + 1); p←v7416 = (* (( (ptr) p←v7416)+1) ); goto lab←L100031; lab←L100029: ; }; SOURCE(4143, 16) (* (( (ptr) new←v7148)+1) ) = (* (( (ptr) gf←c13112)+10)/* cache←v3028 */ ); SOURCE(4161, 11) (* (( (ptr) gf←c13112)+10)/* cache←v3028 */ ) = new←v7148; SOURCE(3741, 431) (void) (XR←MonitorExit((word) (( (bPt) gf←c13112)+16)/* LOCK←v2636 */ )); return; } static word Round←P480(r←v4908) word r←v4908; { word var←c4952; /* Round: */ SOURCE(4338, 74) SOURCE(4378, 34) { word x105; word x106; float tf107; return((word) XR←REAL32←Floor(( tf107 = ( x105 = r←v4908, *(float*)&x105 ) + ( x106 = (* (ptr) &fc36 ), *(float*)&x106 ), *(word*)&tf107 ))); }; } static word MakeHalfEllipse←P540(semiMajorAxis←v5012, semiMinorAxis←v5040, theta←v5068) word semiMajorAxis←v5012; word semiMinorAxis←v5040; word theta←v5068; { W11 var←c13144; register ptr gf←c13176 = (ptr) &globalframe; word halfPen←v5112; /* declaration of var←c12120 skipped */ /* declaration of var←c12152 skipped */ word cos←v7572; word sin←v7600; /* declaration of p←v7628 skipped */ /* declaration of q←v7656 skipped */ /* declaration of r←v7684 skipped */ word s←v7712 = 0; /* MakeHalfEllipse: */ SOURCE(4418, 2473) { word tmpAddr108; tmpAddr108 = (word) (( (ptr) &var←c13144)+4)/* var←c12120 */ ; (* (ptr) tmpAddr108 ) = ( ((word) (fPt) RemoveLinepqAndAdjustq←P1560) ); (* (( (ptr) tmpAddr108) + 1) ) = 1; }; { word tmpAddr109; tmpAddr109 = (word) (( (ptr) &var←c13144)+6)/* var←c12152 */ ; (* (ptr) tmpAddr109 ) = ( ((word) (fPt) MoveToNextpqr←P1500) ); (* (( (ptr) tmpAddr109) + 1) ) = 1; }; SOURCE(4418, 2473) halfPen←v5112 = 0; SOURCE(4545, 33) { word pd110; pd110 = (* (( (ptr) (* (( (ptr) gf←c13176)+50)/* var←c11352 */ ))+13) ); cos←v7572 = (word) ( *( (fPt) ((* (ptr) pd110 ))))(theta←v5068, pd110); }; SOURCE(4580, 33) { word pd111; pd111 = (* (( (ptr) (* (( (ptr) gf←c13176)+50)/* var←c11352 */ ))+11) ); sin←v7600 = (word) ( *( (fPt) ((* (ptr) pd111 ))))(theta←v5068, pd111); }; SOURCE(4615, 22) (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ) = 0; (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ) = 0; (* (( (ptr) &var←c13144)+10)/* r←v7684 */ ) = 0; SOURCE(4639, 732) { word alpha←v7756; word beta←v7784; word gamma←v7812; SOURCE(4670, 77) { W3 var←c12184; (void) CalculateGreek←P900((word) &var←c12184, semiMajorAxis←v5012, semiMinorAxis←v5040, cos←v7572, sin←v7600); gamma←v7812 = var←c12184.f2; beta←v7784 = var←c12184.f1; alpha←v7756 = var←c12184.f0; }; SOURCE(4749, 25) if (( (int)beta←v7784 == (int)0)) { SOURCE(4766, 8) beta←v7784 = 1; }; SOURCE(4776, 27) if (( (int)gamma←v7812 == (int)0)) { SOURCE(4794, 9) gamma←v7812 = 1; }; SOURCE(4805, 93) if (( (int)gamma←v7812 <= (int)IABS(alpha←v7756))) { SOURCE(4840, 58) if (( (int)alpha←v7756 > (int)0)) { SOURCE(4858, 23) alpha←v7756 = (gamma←v7812 - 1); } else { SOURCE(4881, 17) alpha←v7756 = (1 - gamma←v7812); }; }; SOURCE(4903, 118) { W2 var←c12216; { float tf112; var←c12216.f0 = ( tf112 = (float)(int)alpha←v7756, *(word*)&tf112 ); }; { float tf113; var←c12216.f1 = ( tf113 = (float)(int)beta←v7784, *(word*)&tf113 ); }; s←v7712 = (word) AllocNode←P600(var←c12216, (* (ptr) &fc114 ), (* (ptr) &fc115 ), 4294867297, (gamma←v7812 - alpha←v7756), 0) ; }; SOURCE(5023, 109) { W2 var←c12248; { float tf116; var←c12248.f0 = ( tf116 = (float)(int)gamma←v7812, *(word*)&tf116 ); }; { float tf117; var←c12248.f1 = ( tf117 = (float)(int)beta←v7784, *(word*)&tf117 ); }; (* (( (ptr) &var←c13144)+10)/* r←v7684 */ ) = (word) AllocNode←P600(var←c12248, (* (ptr) &fc12 ), (* (ptr) &fc12 ), beta←v7784, (beta←v7784 + beta←v7784), s←v7712); }; SOURCE(5134, 114) { W2 var←c12280; { float tf118; var←c12280.f0 = ( tf118 = (float)(int)gamma←v7812, *(word*)&tf118 ); }; { float tf119; var←c12280.f1 = ( tf119 = (float)(int)INEG(beta←v7784), *(word*)&tf119 ); }; (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ) = (word) AllocNode←P600(var←c12280, (* (ptr) &fc115 ), (* (ptr) &fc120 ), gamma←v7812, (gamma←v7812 + alpha←v7756), (* (( (ptr) &var←c13144)+10)/* r←v7684 */ )); }; SOURCE(5250, 119) { word var←c12312; { W2 var←c12344; { float tf121; var←c12344.f0 = ( tf121 = (float)(int)INEG(alpha←v7756), *(word*)&tf121 ); }; { float tf122; var←c12344.f1 = ( tf122 = (float)(int)INEG(beta←v7784), *(word*)&tf122 ); }; var←c12312 = (word) AllocNode←P600(var←c12344, (* (ptr) &fc12 ), (* (ptr) &fc114 ), beta←v7784, 4294867297, (* (( (ptr) &var←c13144)+9) /* q←v7656 */ )); }; (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ) = var←c12312; halfPen←v5112 = var←c12312; }; }; SOURCE(5376, 1363) SOURCE(6019, 705) lab←L100034: ; SOURCE(6019, 705) { word u←v8076; word v←v8104; word delta←v8132; SOURCE(6022, 29) { word x123; word x124; *(float*)&u←v8076 = ( x123 = (* (( (ptr) (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ))+2) ), *(float*)&x123 ) + ( x124 = (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+2) ), *(float*)&x124 ); }; SOURCE(6053, 27) { word x125; word x126; *(float*)&v←v8104 = ( x125 = (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+3) ), *(float*)&x125 ) + ( x126 = (* (( (ptr) (* (( (ptr) &var←c13144)+10)/* r←v7684 */ ))+3) ), *(float*)&x126 ); }; SOURCE(6082, 122) delta←v8132 = (((* (( (ptr) (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ))+4) ) + (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+4) )) - (word) IntegerDistanceToEllipseTowards←P960(u←v8076, v←v8104, semiMajorAxis←v5012, semiMinorAxis←v5040, cos←v7572, sin←v7600) ); SOURCE(6206, 488) if (( (int)delta←v8132 > (int)0)) { SOURCE(6226, 32) { word x127; delta←v8132 = (x127 = (* (( (ptr) (* (( (ptr) &var←c13144)+10)/* r←v7684 */ ))+5) ), MIN((int)(word), delta←v8132, x127)); }; SOURCE(6260, 417) if (( (int)delta←v8132 >= (int)(* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+5) ))) { SOURCE(6290, 34) (void) RemoveLinepqAndAdjustq←P1560(u←v8076, v←v8104, (word) (( (bPt) &var←c13144)+16)/* var←c12120 */ ); } else { SOURCE(6326, 196) { W2 var←c12376; { word x128; word x129; *(float*)&var←c12376.f0 = ( x128 = (* (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ) ), *(float*)&x128 ) + ((float)(int)delta←v8132 * ( x129 = (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+3) ), *(float*)&x129 )); }; { word x130; word x131; *(float*)&var←c12376.f1 = ( x130 = (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+1) ), *(float*)&x130 ) - ((float)(int)delta←v8132 * ( x131 = (* (( (ptr) (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ))+2) ), *(float*)&x131 )); }; s←v7712 = (word) AllocNode←P600(var←c12376, u←v8076, (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+3) ), (((* ( ( (ptr) (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ))+4) ) + (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+4) )) - delta←v8132), ((* ( ( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+5) ) - delta←v8132), (* (( (ptr) &var←c13144)+9)/* q←v7656 */ )); }; SOURCE(6524, 10) (* (( (ptr) (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ))+6) ) = s←v7712; SOURCE(6536, 71) { word var←c12408; word var←c12472; { word x132; word x133; *(float*)&var←c12408 = ( x132 = (* (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ) ), *(float*)&x132 ) - ((float)(int)delta←v8132 * ( x133 = (* (( (ptr) (* (( (ptr) &var←c13144)+10)/* r←v7684 */ ))+3) ), *(float*)&x133 )); }; { word x134; word x135; *(float*)&var←c12472 = ( x134 = (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+1) ), *(float*)&x134 ) + ((float)(int)delta←v8132 * ( x135 = (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+2) ), *(float*)&x135 )); }; (* (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ) ) = var←c12408; (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+1) ) = var←c12472; }; SOURCE(6609, 11) (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+3) ) = v←v8104; SOURCE(6622, 20) (* (( (ptr) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ))+5) ) = delta←v8132; SOURCE(6644, 33) (* (( (ptr) (* (( (ptr) &var←c13144)+10)/* r←v7684 */ ))+5) ) = ((* (( (ptr) (* (( (ptr) &var←c13144)+10)/* r←v7684 */ ))+5) ) - delta←v8132); }; } else { SOURCE(6689, 5) (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ) = (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ); }; SOURCE(6696, 28) if ((0 == (word) MoveToNextpqr←P1500((word) ((( (bPt) &var←c13144)+24)/* var←c12152 */ )))) { SOURCE(6724, 4) goto lab←L100033; }; }; goto lab←L100034; lab←L100033: ; SOURCE(6750, 141) if (((* (( (ptr) &var←c13144)+9)/* q←v7656 */ ) != 0)) { SOURCE(6768, 99) { word x136; word x137; if ((( x136 = (* (( (ptr) halfPen←v5112)+2) ), *(float*)&x136 ) == ( x137 = (* (ptr) &fc12 ), *(float*)&x137 ))) { SOURCE(6795, 11) (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ) = halfPen←v5112; SOURCE(6808, 16) halfPen←v5112 = (* (( (ptr) (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ))+6) ); SOURCE(6826, 11) (void) FreeNode←P660((* ((( (ptr) &var←c13144)+8)/* p←v7628 */ ) )); SOURCE(6839, 28) { word x138; *(float*)(* (( (ptr) &var←c13144)+9)/* q←v7656 */ ) = - ( x138 = (* (ptr) halfPen←v5112 ), *(float*)&x138 ); }; }; }; SOURCE(6872, 5) (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ) = (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ); } else { SOURCE(6886, 5) (* (( (ptr) &var←c13144)+9)/* q←v7656 */ ) = (* (( (ptr) &var←c13144)+8)/* p←v7628 */ ); }; SOURCE(4418, 2473) return(halfPen←v5112); } static word MoveToNextpqr←P1500(formal←c13208) word formal←c13208; { word found←v7960; formal←c13208 = (formal←c13208 - 24); /* MoveToNextpqr: */ SOURCE(5382, 29) SOURCE(5428, 307) lab←L100037: ; SOURCE(5431, 10) (* (( (ptr) formal←c13208)+9) ) = (* (( (ptr) (* (( (ptr) formal←c13208)+8) ))+6) ); SOURCE(5443, 37) if (((* (( (ptr) formal←c13208)+9) ) == 0)) { SOURCE(5459, 21) return(0); }; SOURCE(5482, 253) if (( (int)(* (( (ptr) (* (( (ptr) formal←c13208)+9) ))+5) ) == (int)0)) { SOURCE(5509, 15) (* (( (ptr) (* (( (ptr) formal←c13208)+8) ))+6) ) = (* (( (ptr) (* (( (ptr) formal←c13208)+9) ))+6) ); SOURCE(5526, 27) (* (( (ptr) (* (( (ptr) formal←c13208)+8) ))+4) ) = (* (( (ptr) (* (( (ptr) formal←c13208)+9) ))+4) ); SOURCE(5555, 19) (* (( (ptr) (* (( (ptr) formal←c13208)+8) ))+2) ) = (* (( (ptr) (* (( (ptr) formal←c13208)+9) ))+2) ); SOURCE(5576, 11) (void) FreeNode←P660((* ((( (ptr) formal←c13208)+9)) )); } else { SOURCE(5598, 10) (* (( (ptr) formal←c13208)+10) ) = (* (( (ptr) (* (( (ptr) formal←c13208)+9) ))+6) ); SOURCE(5610, 37) if (((* (( (ptr) formal←c13208)+10) ) == 0)) { SOURCE(5626, 21) return(0); }; SOURCE(5649, 86) if (( (int)(* (( (ptr) (* (( (ptr) formal←c13208)+10) ))+5) ) == (int)0)) { SOURCE(5676, 10) (* (( (ptr) (* (( (ptr) formal←c13208)+8) ))+6) ) = (* (( (ptr) formal←c13208)+10) ); SOURCE(5688, 11) (void) FreeNode←P660((* ((( (ptr) formal←c13208)+9)) )); SOURCE(5701, 5) (* (( (ptr) formal←c13208)+8) ) = (* (( (ptr) formal←c13208)+10) ); } else { SOURCE(5715, 20) return(1); }; }; goto lab←L100037; } static void RemoveLinepqAndAdjustq←P1560(u←v8020, v←v8048, formal←c13240) word u←v8020; word v←v8048; word formal←c13240; { word delta←v8176; formal←c13240 = (formal←c13240 - 16); /* RemoveLinepqAndAdjustq: */ SOURCE(5752, 30) SOURCE(5798, 25) delta←v8176 = (* (( (ptr) (* (( (ptr) formal←c13240)+9) ))+5) ); SOURCE(5825, 52) (* (( (ptr) (* (( (ptr) formal←c13240)+8) ))+4) ) = (((* (( (ptr) (* (( (ptr) formal←c13240)+8) ))+4) ) + (* (( (ptr) (* ( ( (ptr) formal←c13240)+9) ))+4) )) - delta←v8176); SOURCE(5879, 12) (* (( (ptr) (* (( (ptr) formal←c13240)+8) ))+2) ) = u←v8020; SOURCE(5893, 11) (* (( (ptr) (* (( (ptr) formal←c13240)+9) ))+3) ) = v←v8048; SOURCE(5906, 71) { word var←c12504; word var←c12568; { word x139; word x140; *(float*)&var←c12504 = ( x139 = (* (ptr) (* (( (ptr) formal←c13240)+9) ) ), *(float*)&x139 ) - ((float)(int)delta←v8176 * ( x140 = (* (( (ptr) (* (( (ptr) formal←c13240)+10) ))+3) ), *(float*)&x140 )); }; { word x141; word x142; *(float*)&var←c12568 = ( x141 = (* (( (ptr) (* (( (ptr) formal←c13240)+9) ))+1) ), *(float*)&x141 ) + ((float)(int)delta←v8176 * ( x142 = (* (( (ptr) (* (( (ptr) formal←c13240)+9) ))+2) ), *(float*)&x142 )); }; (* (ptr) (* (( (ptr) formal←c13240)+9) ) ) = var←c12504; (* (( (ptr) (* (( (ptr) formal←c13240)+9) ))+1) ) = var←c12568; }; SOURCE(5979, 35) (* (( (ptr) (* (( (ptr) formal←c13240)+10) ))+5) ) = ((* (( (ptr) (* (( (ptr) formal←c13240)+10) ))+5) ) - delta←v8176); } static word AllocNode←P600(coord←v5184, rightU←v5212, leftV←v5240, rightClass←v5268, leftLength←v5296, link←v5324) W2 coord←v5184; word rightU←v5212; word leftV←v5240; word rightClass←v5268; word leftLength←v5296; word link←v5324; { register ptr gf←c13272 = (ptr) &globalframe; word var←c5380; word p←v8220; /* AllocNode: */ SOURCE(6935, 478) (void) (XR←MonitorEntry((word) (( (bPt) gf←c13272)+16)/* LOCK←v2636 */ )); SOURCE(7089, 28) p←v8220 = (* (( (ptr) gf←c13272)+13)/* freeNodes←v3280 */ ); SOURCE(7119, 282) if ((p←v8220 != 0)) { SOURCE(7137, 18) (* (( (ptr) gf←c13272)+13)/* freeNodes←v3280 */ ) = (* (( (ptr) p←v8220)+6) ); SOURCE(7157, 109) (* (W2Pt) p←v8220 ) = coord←v5184; (* (( (ptr) p←v8220)+2) ) = rightU←v5212; (* (( (ptr) p←v8220)+3) ) = leftV←v5240; (* (( (ptr) p←v8220)+4) ) = rightClass←v5268; (* (( (ptr) p←v8220)+5) ) = leftLength←v5296; (* (( (ptr) p←v8220)+6) ) = link←v5324; } else { SOURCE(7275, 126) { word var←c12600; var←c12600 = XR←NewObject(28, (* (( (ptr) gf←c13272)+17) )); (* (W2Pt) var←c12600 ) = coord←v5184; (* (( (ptr) var←c12600)+2) ) = rightU←v5212; (* (( (ptr) var←c12600)+3) ) = leftV←v5240; (* (( (ptr) var←c12600)+4) ) = rightClass←v5268; (* (( (ptr) var←c12600)+5) ) = leftLength←v5296; (* (( (ptr) var←c12600)+6) ) = link←v5324; p←v8220 = var←c12600; }; }; SOURCE(7403, 10) (void) (XR←MonitorExit((word) (( (bPt) gf←c13272)+16)/* LOCK←v2636 */ )); return(p←v8220); } static void FreeNode←P660(p←v5452) word p←v5452; { register ptr gf←c13304 = (ptr) &globalframe; /* FreeNode: */ SOURCE(7419, 95) (void) (XR←MonitorEntry((word) (( (bPt) gf←c13304)+16)/* LOCK←v2636 */ )); SOURCE(7463, 51) if ((p←v5452 != 0)) { SOURCE(7481, 18) (* (( (ptr) p←v5452)+6) ) = (* (( (ptr) gf←c13304)+13)/* freeNodes←v3280 */ ); SOURCE(7501, 13) (* (( (ptr) gf←c13304)+13)/* freeNodes←v3280 */ ) = p←v5452; }; SOURCE(7419, 95) (void) (XR←MonitorExit((word) (( (bPt) gf←c13304)+16)/* LOCK←v2636 */ )); return; } static void FreeVertexList←P720(p←v5524) word p←v5524; { register ptr gf←c13336 = (ptr) &globalframe; word lag←v8276; /* FreeVertexList: */ SOURCE(7523, 197) (void) (XR←MonitorEntry((word) (( (bPt) gf←c13336)+16)/* LOCK←v2636 */ )); SOURCE(7570, 19) lag←v8276 = p←v5524; SOURCE(7591, 129) if ((lag←v8276 != 0)) { SOURCE(7609, 111) lab←L100040: ; SOURCE(7609, 111) { word next←v8320; SOURCE(7612, 27) next←v8320 = (* (( (ptr) lag←v8276)+6) ); SOURCE(7641, 64) if ((next←v8320 == 0)) { SOURCE(7662, 20) (* (( (ptr) lag←v8276)+6) ) = (* (( (ptr) gf←c13336)+13)/* freeNodes←v3280 */ ); SOURCE(7684, 13) (* (( (ptr) gf←c13336)+13)/* freeNodes←v3280 */ ) = p←v5524; SOURCE(7699, 6) (void) (XR←MonitorExit((word) (( (bPt) gf←c13336)+16)/* LOCK←v2636 */ )); return; }; SOURCE(7710, 10) lag←v8276 = next←v8320; }; goto lab←L100040; }; SOURCE(7523, 197) (void) (XR←MonitorExit((word) (( (bPt) gf←c13336)+16)/* LOCK←v2636 */ )); return; } static word CountVertexList←P780(p←v5584) word p←v5584; { word n←v5628; /* CountVertexList: */ SOURCE(7735, 110) SOURCE(7735, 110) n←v5628 = 0; SOURCE(7798, 47) lab←L100043: ; if ((p←v5584 != 0)) { } else { goto lab←L100041; }; SOURCE(7815, 10) p←v5584 = (* (( (ptr) p←v5584)+6) ); SOURCE(7827, 18) n←v5628 = (n←v5628 + 1); goto lab←L100043; lab←L100041: ; SOURCE(7735, 110) return(n←v5628); } static word PythAdd←P840(a←v5688, b←v5716) word a←v5688; word b←v5716; { register ptr gf←c13368 = (ptr) &globalframe; word c←v5760; /* PythAdd: */ SOURCE(7849, 76) SOURCE(7898, 27) { word pd143; word x144; word x145; word x146; word x147; float tf148; pd143 = (* (( (ptr) (* (( (ptr) gf←c13368)+50)/* var←c11352 */ ))+9) ); c←v5760 = (word) ( *( (fPt) ((* (ptr) pd143 ))))(( tf148 = (( x144 = a←v5688, *(float*)&x144 ) * ( x145 = a←v5688, *(float*)&x145 )) + (( x146 = b←v5716, *(float*)&x146 ) * ( x147 = b←v5716, *(float*)&x147 )), *(word*)&tf148 ), pd143); }; SOURCE(7849, 76) return(c←v5760); } static void CalculateGreek←P900(formal←c0173, semiMajorAxis←v5820, semiMinorAxis←v5848, cos←v5876, sin←v5904) word formal←c0173; word semiMajorAxis←v5820; word semiMinorAxis←v5848; word cos←v5876; word sin←v5904; { word var←c5948; word var←c5976; word var←c6004; word a←v8364; word b←v8392; word g←v8420; /* CalculateGreek: */ SOURCE(7931, 442) SOURCE(8048, 282) { word x149; word x150; word x151; word x152; if ((( x149 = sin←v5904, *(float*)&x149 ) == ( x150 = (* (ptr) &fc12 ), *(float*)&x150 )) || (( x151 = semiMajorAxis←v5820, *(float*)&x151 ) == ( x152 = semiMinorAxis←v5848, *(float*)&x152 ))) { SOURCE(8101, 5) a←v8364 = (* (ptr) &fc12 ); SOURCE(8108, 17) b←v8392 = semiMinorAxis←v5848; SOURCE(8127, 17) g←v8420 = semiMajorAxis←v5820; } else { SOURCE(8153, 179) { word d←v8464; SOURCE(8155, 27) { word x153; word x154; *(float*)&d←v8464 = ( x153 = semiMinorAxis←v5848, *(float*)&x153 ) * ( x154 = cos←v5876, *(float*)&x154 ); }; SOURCE(8184, 21) { word x155; word x156; *(float*)&g←v8420 = ( x155 = semiMajorAxis←v5820, *(float*)&x155 ) * ( x156 = sin←v5904, *(float*)&x156 ); }; SOURCE(8207, 17) b←v8392 = (word) PythAdd←P840(g←v8420, d←v8464); SOURCE(8226, 53) { word x157; word x158; word x159; word x160; word x161; word x162; word x163; word x164; *(float*)&a←v8364 = ((( x157 = semiMajorAxis←v5820, *(float*)&x157 ) * (( x158 = g←v8420, *(float*)&x158 ) / ( x159 = b←v8392, *(float*)&x159 ))) * ( x160 = cos←v5876, *(float*)&x160 )) - ((( x161 = semiMinorAxis←v5848, *(float*)&x161 ) * (( x162 = d←v8464, *(float*)&x162 ) / ( x163 = b←v8392, *(float*)&x163 ))) * ( x164 = sin←v5904, *(float*)&x164 )); }; SOURCE(8281, 49) { word x165; word x166; float tf167; word x168; word x169; float tf170; g←v8420 = (word) PythAdd←P840(( tf167 = ( x165 = semiMajorAxis←v5820, *(float*)&x165 ) * ( x166 = cos←v5876, *(float*)&x166 ), *(word*)&tf167 ), ( tf170 = ( x168 = semiMinorAxis←v5848, *(float*)&x168 ) * ( x169 = sin←v5904, *(float*)&x169 ), *(word*)&tf170 )); }; }; }; }; SOURCE(8335, 38) { word var←c12728; word var←c12760; word var←c12792; var←c12728 = (word) Round←P480(a←v8364); var←c12760 = (word) Round←P480(b←v8392); var←c12792 = (word) Round←P480(g←v8420); var←c5948 = var←c12728; var←c5976 = var←c12760; var←c6004 = var←c12792; /* removed tail goto */ }; (* (ptr) formal←c0173 ) = var←c5948; (* (( (ptr) formal←c0173)+1) ) = var←c5976; (* (( (ptr) formal←c0173)+2) ) = var←c6004; return; } static word IntegerDistanceToEllipseTowards←P960(u←v6064, v←v6092, semiMajorAxis←v6120, semiMinorAxis←v6148, cos←v6176, sin←v6204) word u←v6064; word v←v6092; word semiMajorAxis←v6120; word semiMinorAxis←v6148; word cos←v6176; word sin←v6204; { word var←c6248; word alpha←v8508; word beta←v8536; word dReal←v8564; /* IntegerDistanceToEllipseTowards: */ SOURCE(8377, 278) SOURCE(8498, 29) { word x171; word x172; word x173; word x174; *(float*)&alpha←v8508 = (( x171 = u←v6064, *(float*)&x171 ) * ( x172 = cos←v6176, *(float*)&x172 )) + (( x173 = v←v6092, *(float*)&x173 ) * ( x174 = sin←v6204, *(float*)&x174 )); }; SOURCE(8529, 28) { word x175; word x176; word x177; word x178; *(float*)&beta←v8536 = (( x175 = v←v6092, *(float*)&x175 ) * ( x176 = cos←v6176, *(float*)&x176 )) - (( x177 = u←v6064, *(float*)&x177 ) * ( x178 = sin←v6204, *(float*)&x178 )); }; SOURCE(8559, 62) { word x179; word x180; float tf181; word x182; word x183; float tf184; dReal←v8564 = (word) PythAdd←P840(( tf181 = ( x179 = semiMajorAxis←v6120, *(float*)&x179 ) * ( x180 = alpha←v8508, *(float*)&x180 ), *(word*)&tf181 ), ( tf184 = ( x182 = semiMinorAxis←v6148, *(float*)&x182 ) * ( x183 = beta←v8536, *(float*)&x183 ), *(word*)&tf184 )); }; SOURCE(8623, 32) { word x185; float tf186; float tf187; word x188; float tf189; float tf190; float tf191; word x192; float tf193; tf189 = FMAX(( x185 = dReal←v8564, *(float*)&x185 ), ( x188 = u←v6064, *(float*)&x188 ), tf186, tf187); return((word) Round←P480(( tf193 = FMAX(tf189, ( x192 = v←v6092, *(float*)&x192 ), tf190, tf191), *(word*)&tf193 ))); }; } static void NoName←Q2076(formal←c0189, formal←c200000, formal←c200001, formal←c200002, formal←c200003) word formal←c0189; word formal←c200000; word formal←c200001; word formal←c200002; word formal←c200003; { register ptr gf←c0205 = (ptr) &globalframe; if ((formal←c200001 == (* (( (ptr) (* (( (ptr) gf←c0205)+51)/* var←c11480 */ ))+57) ))) { { word real←v10196; real←v10196 = (* (ptr) formal←c200003 ); SOURCE(1854, 7) (* (ptr) formal←c0189 ) = 1; (* (( (ptr) formal←c0189)+1) ) = 0; return; }; }; (* (ptr) formal←c0189 ) = 0; (* (( (ptr) formal←c0189)+1) ) = 0; return; } /* file: ImagerPenImpl, module: ImagerPenImpl, compiled at: July 28, 1993 10:21:17 am PDT */ extern void XR←install←ImagerPenImpl() { NoName←Q1956(); } extern void XR←run←ImagerPenImpl() { XR←Start(&globalframe); }