/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation. All rights reserved. */
/* time: July 28, 1993 10:20:12 am PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: ImagerManhattanImpl, module: ImagerManhattanImpl */
/* switches: bcfhklnouw */
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1906274210,780468037] ImagerManhattanImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef struct {W8 f; W5 r;} W13;
typedef struct {word f0, f1;} W2;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef W6 *W6Pt;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef W7 *W7Pt;
typedef struct {word f0, f1, f2;} W3;
typedef struct {W8 f; W3 r;} W11;
typedef W2 *W2Pt;
typedef struct {W8 f; word r;} W9;
#define SOURCE(p, l) /* source p, l */
#define MIN(cast, x, y) ( ( cast x) < ( cast y) ? (x) : (y) )
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
#define MAX(cast, x, y) ( ( cast x) > ( cast y) ? (x) : (y) )
static void NoName←Q5532();
static void ImagerManhattanImpl←P0();
static word Validate←P60();
static word CreateFromRuns←P120();
static void Run←P2304();
static void Repeat←P2364();
static word TryToMergeRows←P180();
static void Destroy←P240();
static word Copy←P300();
static void Advance←P420();
static void SkipTo←P480();
static void TestReader←P540();
static void Run←P2616();
static word Union←P600();
static void Runs←P2676();
static word Intersection←P660();
static void Runs←P2832();
static word Invert←P720();
static void Emit←P2988();
static word Difference←P780();
static void Shift←P840();
static word FullyDestructiveUnion←P900();
static word DestructiveUnion←P960();
static word DestructiveIntersection←P1020();
static word DestructiveClip←P1080();
static word DestructiveDifference←P1140();
static word SplitOffSecondHalf←P1200();
static word Canonicalize←P1260();
static word CreateFromBoxes←P1320();
static word NoName←Q5592();
static void AddBox←P3240();
static void BoundingBox←P1380();
static word CountBoxes←P1440();
static word CountRuns←P1500();
static word TestCreate←P1560();
static void Runs←P3492();
static void boxAction←P3552();
static void Map←P1620();
static void Clip←P1680();
static word IsVisible←P1740();
static void ClipBoxToMask←P1800();
static word Equal←P1860();
static word FromList←P1920();
static word CreateFromBox←P1980();
static word GetScratch←P2040();
static void FreeScratch←P2100();
static void NoName←Q5652();
static struct {unsigned f; char r[4];} string1 = {65540, "\242\000\000"};
static struct {unsigned f; char r[44];} string2 = {2752556, "\260\006\005\146\151\162\163\164\257\300\243\162\130\311\300\344\000\142\023\101\130\005\004\162\145\163\164\214\257\300\243\162\130\311\300\344\000\142\023\101\130\261\000"};
static struct {unsigned f; char r[4];} string3 = {131074, "\003\004\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\161\237\157\242\300\056\204\377\105\100\164\000\000"};
static struct {unsigned f; char r[4];} string5 = {131074, "\003\010\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\350\311\135\367\300\362\215\374\250\100\150\000\000"};
static struct {
word f0[16]; 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; word f68; word f69; word f70;
word f71; word f72; word f73; word f74;
word f75; word f76; word f77; word f78;
word f79; word f80; word f81; word f82;
word f83; word f84; word f85; word f86;
word f87[3]; word f90; word f91[7];
} globalframe = {
{0}, (word) FreeScratch←P2100, 0, (word) GetScratch←P2040,
0, (word) CreateFromBox←P1980, 0, (word) FromList←P1920,
0, (word) Equal←P1860, 0, (word) ClipBoxToMask←P1800,
0, (word) IsVisible←P1740, 0, (word) Clip←P1680,
0, (word) Map←P1620, 0, (word) TestCreate←P1560,
0, (word) CountRuns←P1500, 0, (word) CountBoxes←P1440,
0, (word) BoundingBox←P1380, 0, (word) CreateFromBoxes←P1320,
0, (word) Canonicalize←P1260, 0, (word) SplitOffSecondHalf←P1200,
0, (word) DestructiveDifference←P1140, 0, (word) DestructiveClip←P1080,
0, (word) DestructiveIntersection←P1020, 0, (word) DestructiveUnion←P960,
0, (word) FullyDestructiveUnion←P900, 0, (word) Shift←P840,
0, (word) Difference←P780, 0, (word) Invert←P720,
0, (word) Intersection←P660, 0, (word) Union←P600,
0, (word) TestReader←P540, 0, (word) SkipTo←P480,
0, (word) Advance←P420, 0, (word) Copy←P300,
0, (word) Destroy←P240, 0, (word) TryToMergeRows←P180,
0, (word) CreateFromRuns←P120, 0, (word) Validate←P60,
0, (word) ImagerManhattanImpl←P0, 0, (word) 2147483647,
{0}, (word) 1, {0}
};
static void NoName←Q5532()
{
register ptr gf←c0339 = (ptr) &globalframe;
word var←c24648;
(* (( (ptr) gf←c0339)+13) ) = (word) XR←GetTypeIndexS((word) (&string1));
(* (( (ptr) gf←c0339)+14) ) = (word) XR←GetTypeIndex((word) &string2, 0, (word) &string3);
(void) XR←DeclareGlobalFrame((word) "ImagerManhattanImpl", &globalframe, (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5)
, (word) (( (bPt) gf←c0339)+336)/* var←c22216 */ );
var←c24648 = (word) XR←ExportInterface((word) "ImagerManhattan", (word) XR←GetTypeIndexS((word) (&string6)), 24);
(* (( (ptr) gf←c0339)+97)/* var←c24616 */ ) = var←c24648;
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+328)/* var←c22184 */ , 67371009, (word) "Validate");
(void) XR←ExportVar(var←c24648, 1, (word) (( (bPt) gf←c0339)+60)/* var←c21096 */ );
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+320)/* var←c22152 */ , 67371521, (word) "CreateFromRuns");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+80)/* var←c21192 */ , 68158209, (word) "CreateFromBox");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+168)/* var←c21544 */ , 67372033, (word) "CreateFromBoxes");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+304)/* var←c22088 */ , 263425, (word) "Destroy");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+296)/* var←c22056 */ , 67372545, (word) "Copy");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+264)/* var←c21928 */ , 67634946, (word) "Union");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+256)/* var←c21896 */ , 67635202, (word) "Intersection");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+240)/* var←c21832 */ , 67635458, (word) "Difference");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+232)/* var←c21800 */ , 788995, (word) "Shift");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+176)/* var←c21576 */ , 67373825, (word) "Canonicalize");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+160)/* var←c21512 */ , 268700673, (word) "BoundingBox");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+152)/* var←c21480 */ , 67374337, (word) "CountBoxes");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+144)/* var←c21448 */ , 67374593, (word) "CountRuns");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+128)/* var←c21384 */ , 790275, (word) "Map");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+120)/* var←c21352 */ , 1839108, (word) "Clip");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+96)/* var←c21256 */ , 67637506, (word) "Equal");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+112)/* var←c21320 */ , 67637762, (word) "IsVisible");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+104)/* var←c21288 */ , 1577731, (word) "ClipBoxToMask");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+216)/* var←c21736 */ , 67638274, (word) "DestructiveUnion");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+208)/* var←c21704 */ , 67638530, (word) "DestructiveIntersection")
;
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+200)/* var←c21672 */ , 68425218, (word) "DestructiveClip");
(void) XR←ExportProcS(var←c24648, (word) (( (bPt) gf←c0339)+192)/* var←c21640 */ , 67639042, (word) "DestructiveDifference")
;
}
static void ImagerManhattanImpl←P0(formal←c050, formal←c049)
word formal←c050;
word formal←c049;
{
register ptr gf←c24680 = (ptr) &globalframe;
/* ImagerManhattanImpl: */
SOURCE(151, 19108)
/* moved to installation proc */
/* moved to installation proc */
SOURCE(18099, 22)
(* (( (ptr) gf←c24680)+10)/* availLimit←v3588 */ ) = 1000;
SOURCE(18123, 25)
(* (( (ptr) gf←c24680)+11)/* scratchChunkSize←v3616 */ ) = 8;
}
static word Validate←P60(polygon←v3796)
word polygon←v3796;
{
register ptr gf←c24712 = (ptr) &globalframe;
word var←c3840;
/* Validate: */
SOURCE(371, 729)
SOURCE(434, 632)
if ((polygon←v3796 != 0)) {
SOURCE(456, 624)
{
word a←v9080;
word amins←v9108;
word aminf←v9136;
word amaxs←v9164;
word amaxf←v9192;
SOURCE(458, 20)
a←v9080 = polygon←v3796;
SOURCE(480, 30)
amins←v9108 = (* (ptr) a←v9080 );
SOURCE(512, 30)
aminf←v9136 = (* (( (ptr) a←v9080)+1) );
SOURCE(544, 30)
amaxs←v9164 = (* (( (ptr) a←v9080)+2) );
SOURCE(576, 30)
amaxf←v9192 = (* (( (ptr) a←v9080)+3) );
SOURCE(608, 458)
lab←L100002: ;
SOURCE(608, 458)
{
word b←v9236;
SOURCE(611, 19)
b←v9236 = (* (( (ptr) a←v9080)+4) );
SOURCE(632, 70)
if (( (int)amins←v9108 >= (int)amaxs←v9164) || ( (int)aminf←v9136 >= (int)amaxf←v9192)) {
SOURCE(673, 29)
(void) XR←RaiseError((word) (( (bPt) gf←c24712)+60)/* var←c21096 */ , 0);
};
SOURCE(704, 362)
if ((b←v9236 == 0)) {
SOURCE(720, 10)
goto lab←L100001;
}
else {
SOURCE(730, 338)
{
word bmins←v9280;
word bminf←v9308;
word bmaxs←v9336;
word bmaxf←v9364;
SOURCE(732, 30)
bmins←v9280 = (* (ptr) b←v9236 );
SOURCE(764, 30)
bminf←v9308 = (* (( (ptr) b←v9236)+1) );
SOURCE(796, 30)
bmaxs←v9336 = (* (( (ptr) b←v9236)+2) );
SOURCE(828, 30)
bmaxf←v9364 = (* (( (ptr) b←v9236)+3) );
if (( (int)amaxs←v9164 <= (int)bmins←v9280)) {
}
else {
if ( ( ( ( (int)amins←v9108 == (int)bmins←v9280) ? ( (int)amaxs←v9164 == (int)bmaxs←v9336) : 0 ) ? ( (int)amaxf←v9192 <= (int)bminf←v9308) : 0 ) ) {
}
else {
SOURCE(970, 29)
(void) XR←RaiseError((word) (( (bPt) gf←c24712)+60)/* var←c21096 */ , 0);
};
};
SOURCE(1001, 5)
a←v9080 = b←v9236;
SOURCE(1008, 13)
amins←v9108 = bmins←v9280;
SOURCE(1023, 13)
aminf←v9136 = bminf←v9308;
SOURCE(1038, 13)
amaxs←v9164 = bmaxs←v9336;
SOURCE(1053, 13)
amaxf←v9192 = bmaxf←v9364;
};
};
};
goto lab←L100002;
lab←L100001: ;
};
};
SOURCE(1083, 17)
return(polygon←v3796);
}
static word CreateFromRuns←P120(runs←v3900)
word runs←v3900;
{
W13 var←c24744;
word polygon←v4208;
/* declaration of var←c22376 skipped */
/* declaration of var←c22408 skipped */
word scratch←v9408;
/* declaration of last←v9436 skipped */
/* declaration of secondLastRowStart←v9464 skipped */
/* declaration of lastRowStart←v9492 skipped */
/* declaration of secondLastRowCount←v9520 skipped */
/* declaration of lastRowCount←v9548 skipped */
/* CreateFromRuns: */
SOURCE(1104, 2232)
{
word tmpAddr7;
tmpAddr7 = (word) (( (ptr) &var←c24744)+4)/* var←c22376 */ ;
(* (ptr) tmpAddr7 ) = ( ((word) (fPt) Repeat←P2364) );
(* (( (ptr) tmpAddr7) + 1) ) = 1;
};
{
word tmpAddr8;
tmpAddr8 = (word) (( (ptr) &var←c24744)+6)/* var←c22408 */ ;
(* (ptr) tmpAddr8 ) = ( ((word) (fPt) Run←P2304) );
(* (( (ptr) tmpAddr8) + 1) ) = 1;
};
SOURCE(1104, 2232)
polygon←v4208 = 0;
SOURCE(1263, 9)
scratch←v9408 = (word) GetScratch←P2040();
SOURCE(1303, 6)
(* (( (ptr) &var←c24744)+8)/* last←v9436 */ ) = scratch←v9408;
SOURCE(1335, 20)
(* (( (ptr) &var←c24744)+9)/* secondLastRowStart←v9464 */ ) = 0;
SOURCE(1377, 14)
(* (( (ptr) &var←c24744)+10)/* lastRowStart←v9492 */ ) = (* (( (ptr) &var←c24744)+8)/* last←v9436 */ );
SOURCE(1414, 32)
(* (( (ptr) &var←c24744)+11)/* secondLastRowCount←v9520 */ ) = (word) -1;
SOURCE(1448, 25)
(* (( (ptr) &var←c24744)+12)/* lastRowCount←v9548 */ ) = 0;
SOURCE(2723, 81)
(* (ptr) (* (( (ptr) &var←c24744)+8)/* last←v9436 */ ) ) = 2147483648;
(* (( (ptr) (* (( (ptr) &var←c24744)+8)/* last←v9436 */ ))+1) ) = 2147483648;
(* (( (ptr) (* (( (ptr) &var←c24744)+8)/* last←v9436 */ ))+2) ) = 2147483648;
(* (( (ptr) (* (( (ptr) &var←c24744)+8)/* last←v9436 */ ))+3) ) = 2147483648;
SOURCE(2806, 17)
(void) ( *( (fPt) ((* (ptr) runs←v3900 ))))((word) (( (bPt) &var←c24744)+24)/* var←c22408 */ , (word) (( (bPt) &var←c24744)+16)
/* var←c22376 */ , runs←v3900);
SOURCE(2825, 233)
if ( ( ( ( (int)(* (( (ptr) &var←c24744)+11)/* secondLastRowCount←v9520 */ ) == (int)(* (( (ptr) &var←c24744)+12)/* lastRowCount←v9548 */ )) ? ( (int)(* (
( (ptr) (* (( (ptr) &var←c24744)+9)/* secondLastRowStart←v9464 */ ))+2) ) == (int)(* (ptr) (* (( (ptr) &var←c24744)+10)
/* lastRowStart←v9492 */ ) )) : 0 ) ? (0 != (word) TryToMergeRows←P180((* (( (ptr) &var←c24744)+9)/* secondLastRowStart←v9464 */ ), (* (
( (ptr) &var←c24744)+12)/* lastRowCount←v9548 */ ))) : 0 ) ) {
SOURCE(2984, 25)
(* (( (ptr) &var←c24744)+8)/* last←v9436 */ ) = (* (( (ptr) &var←c24744)+9)/* secondLastRowStart←v9464 */ );
SOURCE(3011, 47)
{
register word noName←c22440 = 0;
register word noName←c22472;
noName←c22472 = ((* (( (ptr) &var←c24744)+12)/* lastRowCount←v9548 */ ) - 1);
if (( (int)noName←c22440 >= (int)noName←c22472)) {
goto lab←L100003;
};
lab←L100006: ;
SOURCE(3042, 16)
(* (( (ptr) &var←c24744)+8)/* last←v9436 */ ) = (* (( (ptr) (* (( (ptr) &var←c24744)+8)/* last←v9436 */ ))+4) );
noName←c22440 = (noName←c22440 + 1);
if (( (int)noName←c22440 < (int)noName←c22472)) {
goto lab←L100006;
};
lab←L100003: ;
};
};
if (( (int)(* (( (ptr) scratch←v9408)+3) ) > (int)(* (( (ptr) scratch←v9408)+1) ))) {
SOURCE(3136, 17)
polygon←v4208 = scratch←v9408;
SOURCE(3155, 19)
scratch←v9408 = (* (( (ptr) (* (( (ptr) &var←c24744)+8)/* last←v9436 */ ))+4) );
SOURCE(3176, 15)
(* (( (ptr) (* (( (ptr) &var←c24744)+8)/* last←v9436 */ ))+4) ) = 0;
}
else {
if (((* (( (ptr) &var←c24744)+8)/* last←v9436 */ ) == scratch←v9408)) {
SOURCE(3216, 14)
polygon←v4208 = 0;
}
else {
SOURCE(3246, 22)
polygon←v4208 = (* (( (ptr) scratch←v9408)+4) );
SOURCE(3270, 24)
(* (( (ptr) scratch←v9408)+4) ) = (* (( (ptr) (* (( (ptr) &var←c24744)+8)/* last←v9436 */ ))+4) );
SOURCE(3296, 15)
(* (( (ptr) (* (( (ptr) &var←c24744)+8)/* last←v9436 */ ))+4) ) = 0;
};
};
SOURCE(3316, 20)
(void) FreeScratch←P2100(scratch←v9408);
SOURCE(1104, 2232)
return(polygon←v4208);
}
static void Run←P2304(sMin←v10016, fMin←v10044, fSize←v10072, formal←c24776)
word sMin←v10016;
word fMin←v10044;
word fSize←v10072;
word formal←c24776;
{
word fMaxCurrent←v10160;
formal←c24776 = (formal←c24776 - 24);
/* Run: */
SOURCE(1475, 1048)
SOURCE(1522, 39)
fMaxCurrent←v10160 = (* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+3) );
SOURCE(1563, 960)
if ( ( ( (int)(* (( (ptr) formal←c24776)+12) ) > (int)0) ? ( (int)sMin←v10016 == (int)(* (ptr) (* (( (ptr) formal←c24776)+8)
) )) : 0 ) ) {
SOURCE(1618, 46)
if (( (int)((* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+2) ) - (* (ptr) (* (( (ptr) formal←c24776)+8) ) )) != (int)1)) {
SOURCE(1664, 5)
(void) XR←RaiseUnnamedError();
};
SOURCE(1671, 272)
{
word var←c22504;
var←c22504 = fMin←v10044;
if (( (int)var←c22504 == (int)fMaxCurrent←v10160)) {
SOURCE(1706, 43)
(* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+3) ) = ((* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+3) ) + fSize←v10072);
}
else {
if (( (int)var←c22504 > (int)fMaxCurrent←v10160)) {
SOURCE(1771, 48)
if (((* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+4) ) == 0)) {
SOURCE(1795, 24)
{
word var←c22536;
var←c22536 = (word) GetScratch←P2040();
(* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+4) ) = var←c22536;
};
};
SOURCE(1821, 16)
(* (( (ptr) formal←c24776)+8) ) = (* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+4) );
SOURCE(1839, 71)
(* (ptr) (* (( (ptr) formal←c24776)+8) ) ) = sMin←v10016;
(* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+1) ) = fMin←v10044;
(* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+2) ) = (sMin←v10016 + 1);
(* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+3) ) = (fMin←v10044 + fSize←v10072);
SOURCE(1912, 31)
(* (( (ptr) formal←c24776)+12) ) = ((* (( (ptr) formal←c24776)+12) ) + 1);
}
else {
SOURCE(1959, 5)
(void) XR←RaiseUnnamedError();
};
};
};
}
else {
SOURCE(1975, 315)
if ( ( ( ( (int)(* (( (ptr) formal←c24776)+11) ) == (int)(* (( (ptr) formal←c24776)+12) )) ? ( (int)(* (( (ptr) (* (( (ptr) formal←c24776)+9)
))+2) ) == (int)(* (ptr) (* (( (ptr) formal←c24776)+10) ) )) : 0 ) ? (0 != (word) TryToMergeRows←P180((* (( (ptr) formal←c24776)+9)
), (* (( (ptr) formal←c24776)+12) ))) : 0 ) ) {
SOURCE(2134, 19)
(* (( (ptr) formal←c24776)+8) ) = (* (( (ptr) formal←c24776)+10) );
SOURCE(2155, 33)
(* (( (ptr) formal←c24776)+10) ) = (* (( (ptr) formal←c24776)+9) );
SOURCE(2190, 23)
(* (( (ptr) formal←c24776)+11) ) = (word) -1;
}
else {
SOURCE(2224, 48)
if (((* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+4) ) == 0)) {
SOURCE(2248, 24)
{
word var←c22568;
var←c22568 = (word) GetScratch←P2040();
(* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+4) ) = var←c22568;
};
};
SOURCE(2274, 16)
(* (( (ptr) formal←c24776)+8) ) = (* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+4) );
};
SOURCE(2295, 33)
(* (( (ptr) formal←c24776)+9) ) = (* (( (ptr) formal←c24776)+10) );
SOURCE(2330, 33)
(* (( (ptr) formal←c24776)+11) ) = (* (( (ptr) formal←c24776)+12) );
SOURCE(2365, 71)
(* (ptr) (* (( (ptr) formal←c24776)+8) ) ) = sMin←v10016;
(* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+1) ) = fMin←v10044;
(* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+2) ) = (sMin←v10016 + 1);
(* (( (ptr) (* (( (ptr) formal←c24776)+8) ))+3) ) = (fMin←v10044 + fSize←v10072);
SOURCE(2438, 19)
(* (( (ptr) formal←c24776)+10) ) = (* (( (ptr) formal←c24776)+8) );
SOURCE(2459, 16)
(* (( (ptr) formal←c24776)+12) ) = 1;
SOURCE(2477, 46)
if (( (int)(* (( (ptr) (* (( (ptr) formal←c24776)+9) ))+2) ) > (int)sMin←v10016)) {
SOURCE(2523, 5)
(void) XR←RaiseUnnamedError();
};
};
}
static void Repeat←P2364(timesToRepeatScanline←v10132, formal←c24808)
word timesToRepeatScanline←v10132;
word formal←c24808;
{
word t←v10204;
formal←c24808 = (formal←c24808 - 16);
/* Repeat: */
SOURCE(2536, 173)
SOURCE(2581, 3)
t←v10204 = (* (( (ptr) formal←c24808)+10) );
SOURCE(2615, 94)
{
register word noName←c22600 = 0;
register word noName←c22632;
noName←c22632 = (* (( (ptr) formal←c24808)+12) );
if (( (int)noName←c22600 >= (int)noName←c22632)) {
goto lab←L100007;
};
lab←L100010: ;
SOURCE(2644, 53)
(* (( (ptr) t←v10204)+2) ) = ((* (( (ptr) t←v10204)+2) ) + timesToRepeatScanline←v10132);
SOURCE(2699, 10)
t←v10204 = (* (( (ptr) t←v10204)+4) );
noName←c22600 = (noName←c22600 + 1);
if (( (int)noName←c22600 < (int)noName←c22632)) {
goto lab←L100010;
};
lab←L100007: ;
};
}
static word TryToMergeRows←P180(secondLastRowStart←v4268, boxesPerRow←v4296)
word secondLastRowStart←v4268;
word boxesPerRow←v4296;
{
word success←v4424;
word max←v10332;
word s←v10360;
word t←v10388;
/* TryToMergeRows: */
SOURCE(3342, 589)
SOURCE(3463, 3)
s←v10360 = secondLastRowStart←v4268;
SOURCE(3503, 3)
t←v10388 = secondLastRowStart←v4268;
SOURCE(3543, 52)
{
register word i←v10600 = 0;
register word noName←c22664;
noName←c22664 = boxesPerRow←v4296;
if (( (int)i←v10600 >= (int)noName←c22664)) {
goto lab←L100011;
};
lab←L100014: ;
SOURCE(3577, 18)
t←v10388 = (* (( (ptr) t←v10388)+4) );
i←v10600 = (i←v10600 + 1);
if (( (int)i←v10600 < (int)noName←c22664)) {
goto lab←L100014;
};
lab←L100011: ;
};
SOURCE(3597, 37)
if (( (int)boxesPerRow←v4296 == (int)0)) {
SOURCE(3621, 13)
return(1);
};
SOURCE(3636, 143)
{
register word i←v10644 = 0;
register word noName←c22696;
noName←c22696 = boxesPerRow←v4296;
if (( (int)i←v10644 >= (int)noName←c22696)) {
goto lab←L100015;
};
lab←L100018: ;
SOURCE(3670, 85)
if (( (int)(* (( (ptr) s←v10360)+1) ) != (int)(* (( (ptr) t←v10388)+1) )) || ( (int)(* (( (ptr) s←v10360)+3) ) != (int)(* (
( (ptr) t←v10388)+3) ))) {
SOURCE(3741, 14)
return(0);
};
SOURCE(3757, 10)
s←v10360 = (* (( (ptr) s←v10360)+4) );
SOURCE(3769, 10)
t←v10388 = (* (( (ptr) t←v10388)+4) );
i←v10644 = (i←v10644 + 1);
if (( (int)i←v10644 < (int)noName←c22696)) {
goto lab←L100018;
};
lab←L100015: ;
};
SOURCE(3790, 5)
t←v10388 = s←v10360;
SOURCE(3797, 22)
s←v10360 = secondLastRowStart←v4268;
SOURCE(3821, 19)
max←v10332 = (* (( (ptr) t←v10388)+2) );
SOURCE(3842, 65)
{
register word i←v10688 = 0;
register word noName←c22728;
noName←c22728 = boxesPerRow←v4296;
if (( (int)i←v10688 >= (int)noName←c22728)) {
goto lab←L100019;
};
lab←L100022: ;
SOURCE(3876, 19)
(* (( (ptr) s←v10360)+2) ) = max←v10332;
SOURCE(3897, 10)
s←v10360 = (* (( (ptr) s←v10360)+4) );
i←v10688 = (i←v10688 + 1);
if (( (int)i←v10688 < (int)noName←c22728)) {
goto lab←L100022;
};
lab←L100019: ;
};
SOURCE(3918, 13)
return(1);
}
static void Destroy←P240(rectangleList←v4484)
word rectangleList←v4484;
{
/* Destroy: */
SOURCE(3937, 83)
SOURCE(3994, 26)
(void) FreeScratch←P2100(rectangleList←v4484);
}
static word Copy←P300(polygon←v4628)
word polygon←v4628;
{
word copy←v4672;
word scratch←v10732;
word last←v10760;
/* Copy: */
SOURCE(4026, 419)
SOURCE(4026, 419)
copy←v4672 = 0;
SOURCE(4091, 9)
scratch←v10732 = (word) GetScratch←P2040();
SOURCE(4131, 6)
last←v10760 = scratch←v10732;
SOURCE(4163, 143)
lab←L100025: ;
if ((polygon←v4628 != 0)) {
}
else {
goto lab←L100023;
};
SOURCE(4186, 49)
if (((* (( (ptr) last←v10760)+4) ) == 0)) {
SOURCE(4211, 24)
(* (( (ptr) last←v10760)+4) ) = (word) GetScratch←P2040();
};
SOURCE(4238, 16)
last←v10760 = (* (( (ptr) last←v10760)+4) );
SOURCE(4256, 26)
(* (W4Pt) last←v10760 ) = (* (W4Pt) polygon←v4628 );
SOURCE(4284, 22)
polygon←v4628 = (* (( (ptr) polygon←v4628)+4) );
goto lab←L100025;
lab←L100023: ;
SOURCE(4317, 103)
if ((last←v10760 == scratch←v10732)) {
SOURCE(4340, 16)
copy←v4672 = 0;
}
else {
SOURCE(4358, 19)
copy←v4672 = (* (( (ptr) scratch←v10732)+4) );
SOURCE(4379, 24)
(* (( (ptr) scratch←v10732)+4) ) = (* (( (ptr) last←v10760)+4) );
SOURCE(4405, 15)
(* (( (ptr) last←v10760)+4) ) = 0;
};
SOURCE(4425, 20)
(void) FreeScratch←P2100(scratch←v10732);
SOURCE(4026, 419)
return(copy←v4672);
}
static void Advance←P420(r←v5132)
word r←v5132;
{
word next←v10972;
/* Advance: */
SOURCE(4923, 573)
SOURCE(4981, 33)
next←v10972 = (* (( (ptr) (* (( (ptr) r←v5132)+6) ))+4) );
SOURCE(5016, 289)
if ((next←v10972 == 0) || ( (int)(* (ptr) next←v10972 ) != (int)(* (ptr) (* (( (ptr) r←v5132)+5) ) ))) {
SOURCE(5084, 221)
if (((* (( (ptr) r←v5132)+3) ) > 1)) {
SOURCE(5112, 33)
(* (( (ptr) r←v5132)+3) ) = ((* (( (ptr) r←v5132)+3) ) - 1);
SOURCE(5147, 13)
(* (ptr) r←v5132 ) = ((* (ptr) r←v5132 ) + 1);
SOURCE(5162, 19)
next←v10972 = (* (( (ptr) r←v5132)+5) );
}
else {
SOURCE(5190, 115)
if ((next←v10972 != 0)) {
SOURCE(5211, 19)
(* (( (ptr) r←v5132)+5) ) = next←v10972;
SOURCE(5232, 49)
(* (( (ptr) r←v5132)+3) ) = ((* (( (ptr) next←v10972)+2) ) - (* (ptr) next←v10972 ));
SOURCE(5283, 22)
(* (ptr) r←v5132 ) = (* (ptr) next←v10972 );
};
};
};
SOURCE(5313, 183)
if ((next←v10972 == 0)) {
SOURCE(5332, 51)
XR←FillWords(&(* (W6Pt) ((( (ptr) r←v5132)+1))), 6, 0);
(* (ptr) r←v5132 ) = 2147483647;
(* (( (ptr) r←v5132)+4) ) = 1;
}
else {
SOURCE(5385, 25)
(* (( (ptr) r←v5132)+1) ) = (* (( (ptr) next←v10972)+1) );
SOURCE(5412, 25)
(* (( (ptr) r←v5132)+2) ) = (* (( (ptr) next←v10972)+3) );
SOURCE(5439, 19)
(* (( (ptr) r←v5132)+6) ) = next←v10972;
SOURCE(5460, 36)
if (((* (( (ptr) r←v5132)+3) ) == 0)) {
SOURCE(5486, 10)
(void) Advance←P420(r←v5132);
};
};
}
static void SkipTo←P480(r←v5204, s←v5232)
word r←v5204;
word s←v5232;
{
/* SkipTo: */
SOURCE(5505, 285)
SOURCE(5574, 216)
lab←L100028: ;
if (( (int)(* (ptr) r←v5204 ) < (int)s←v5232)) {
}
else {
goto lab←L100026;
};
SOURCE(5591, 199)
if ( ( ((* (( (ptr) r←v5204)+5) ) == (* (( (ptr) r←v5204)+6) )) ? ((* (( (ptr) r←v5204)+3) ) > 1) : 0 ) ) {
SOURCE(5649, 124)
{
word delta←v11016;
SOURCE(5651, 53)
{
word idx9;
word x10;
word x11;
delta←v11016 = (x10 = ((
idx9 = (* (( (ptr) r←v5204)+3) ),
SGNCK(idx9)
) - 1),
x11 = (s←v5232 - (* (ptr) r←v5204 )),
MIN((int)(word), x10, x11));
};
SOURCE(5706, 17)
(* (ptr) r←v5204 ) = ((* (ptr) r←v5204 ) + delta←v11016);
SOURCE(5725, 46)
{
word idx12;
(* (( (ptr) r←v5204)+3) ) = ((
idx12 = (* (( (ptr) r←v5204)+3) ),
SGNCK(idx12)
) - delta←v11016);
};
};
}
else {
SOURCE(5780, 10)
(void) Advance←P420(r←v5204);
};
goto lab←L100028;
lab←L100026: ;
}
static void TestReader←P540(polygon←v5304)
word polygon←v5304;
{
W13 var←c24840;
register ptr gf←c24872 = (ptr) &globalframe;
/* declaration of var←c22760 skipped */
/* declaration of reader←v11060 skipped */
/* TestReader: */
SOURCE(5805, 365)
{
word tmpAddr13;
tmpAddr13 = (word) (( (ptr) &var←c24840)+4)/* var←c22760 */ ;
(* (ptr) tmpAddr13 ) = ( ((word) (fPt) Run←P2616) );
(* (( (ptr) tmpAddr13) + 1) ) = 1;
};
SOURCE(5845, 35)
SOURCE(4643, 276)
if ((polygon←v5304 == 0)) {
SOURCE(4665, 55)
(* (W7Pt) (( (ptr) &var←c24840)+6)/* reader←v11060 */ ) = (* (W7Pt) (( (ptr) gf←c24872)+86)/* var←c22280 */ );
}
else {
SOURCE(4720, 199)
(* (( (ptr) &var←c24840)+6) ) = (* (ptr) polygon←v5304 );
(* (( (ptr) &var←c24840)+7) ) = (* (( (ptr) polygon←v5304)+1) );
(* (( (ptr) &var←c24840)+8) ) = (* (( (ptr) polygon←v5304)+3) );
(* (( (ptr) &var←c24840)+9) ) = ((* (( (ptr) polygon←v5304)+2) ) - (* (ptr) polygon←v5304 ));
(* (( (ptr) &var←c24840)+10) ) = 0;
(* (( (ptr) &var←c24840)+11) ) = polygon←v5304;
(* (( (ptr) &var←c24840)+12) ) = polygon←v5304;
};
SOURCE(6121, 23)
(void) Map←P1620(polygon←v5304, (word) (( (bPt) &var←c24840)+16)/* var←c22760 */ , 1);
SOURCE(6146, 24)
if ((0 == (* (( (ptr) &var←c24840)+10) ))) {
SOURCE(6170, 5)
(void) XR←RaiseUnnamedError();
};
}
static void Run←P2616(box←v11164, formal←c24904)
W4 box←v11164;
word formal←c24904;
{
formal←c24904 = (formal←c24904 - 16);
/* Run: */
SOURCE(5882, 233)
SOURCE(5910, 20)
if ((0 != (* (( (ptr) formal←c24904)+10) ))) {
SOURCE(5930, 5)
(void) XR←RaiseUnnamedError();
};
SOURCE(5937, 29)
if (( (int)box←v11164.f0 != (int)(* (( (ptr) formal←c24904)+6) ))) {
SOURCE(5966, 5)
(void) XR←RaiseUnnamedError();
};
SOURCE(5973, 32)
if (( (int)(box←v11164.f2 - box←v11164.f0) != (int)1)) {
SOURCE(6005, 5)
(void) XR←RaiseUnnamedError();
};
SOURCE(6012, 32)
if (( (int)box←v11164.f1 != (int)(* (( (ptr) formal←c24904)+7) ))) {
SOURCE(6044, 5)
(void) XR←RaiseUnnamedError();
};
SOURCE(6051, 32)
if (( (int)box←v11164.f3 != (int)(* (( (ptr) formal←c24904)+8) ))) {
SOURCE(6083, 5)
(void) XR←RaiseUnnamedError();
};
SOURCE(6098, 17)
SOURCE(6099, 16)
(void) Advance←P420((word) ((( (bPt) formal←c24904)+24)));
}
static word Union←P600(formal←c0377, formal←c0378)
word formal←c0377;
word formal←c0378;
{
W8 var←c24936;
/* declaration of a←v5364 skipped */
/* declaration of b←v5392 skipped */
word var←c5436;
/* declaration of var←c22856 skipped */
var←c24936.f4/* a←v5364 */ = formal←c0377;
var←c24936.f5/* b←v5392 */ = formal←c0378;
/* Union: */
SOURCE(6181, 1196)
{
word tmpAddr14;
tmpAddr14 = (word) (( (ptr) &var←c24936)+6)/* var←c22856 */ ;
(* (ptr) tmpAddr14 ) = ( ((word) (fPt) Runs←P2676) );
(* (( (ptr) tmpAddr14) + 1) ) = 1;
};
SOURCE(7349, 28)
return((word) CreateFromRuns←P120((word) ((( (bPt) &var←c24936)+24)/* var←c22856 */ )));
}
static void Runs←P2676(run←v11268, repeat←v11296, formal←c25000)
word run←v11268;
word repeat←v11296;
word formal←c25000;
{
register ptr gf←c24968 = (ptr) &globalframe;
W7 aReader←v11500;
W7 bReader←v11528;
formal←c25000 = (formal←c25000 - 24);
/* Runs: */
SOURCE(6238, 1094)
SOURCE(6347, 30)
{
word polygon←v20824;
polygon←v20824 = (* (( (ptr) formal←c25000)+4) );
SOURCE(4643, 276)
if ((polygon←v20824 == 0)) {
SOURCE(4665, 55)
aReader←v11500 = (* (W7Pt) (( (ptr) gf←c24968)+86)/* var←c22280 */ );
}
else {
SOURCE(4720, 199)
aReader←v11500.f0 = (* (ptr) polygon←v20824 );
aReader←v11500.f1 = (* (( (ptr) polygon←v20824)+1) );
aReader←v11500.f2 = (* (( (ptr) polygon←v20824)+3) );
aReader←v11500.f3 = ((* (( (ptr) polygon←v20824)+2) ) - (* (ptr) polygon←v20824 ));
aReader←v11500.f4 = 0;
aReader←v11500.f5 = polygon←v20824;
aReader←v11500.f6 = polygon←v20824;
};
};
SOURCE(6379, 30)
{
word polygon←v20776;
polygon←v20776 = (* (( (ptr) formal←c25000)+5) );
SOURCE(4643, 276)
if ((polygon←v20776 == 0)) {
SOURCE(4665, 55)
bReader←v11528 = (* (W7Pt) (( (ptr) gf←c24968)+86)/* var←c22280 */ );
}
else {
SOURCE(4720, 199)
bReader←v11528.f0 = (* (ptr) polygon←v20776 );
bReader←v11528.f1 = (* (( (ptr) polygon←v20776)+1) );
bReader←v11528.f2 = (* (( (ptr) polygon←v20776)+3) );
bReader←v11528.f3 = ((* (( (ptr) polygon←v20776)+2) ) - (* (ptr) polygon←v20776 ));
bReader←v11528.f4 = 0;
bReader←v11528.f5 = polygon←v20776;
bReader←v11528.f6 = polygon←v20776;
};
};
SOURCE(6411, 921)
lab←L100034: ;
if ((0 == aReader←v11500.f4) || (0 == bReader←v11528.f4)) {
}
else {
goto lab←L100032;
};
{
word as←v11572;
word bs←v11600;
word s←v11628;
word duplicates←v11656;
word somethingInScanline←v11684 = 0;
SOURCE(6450, 23)
as←v11572 = aReader←v11500.f0;
SOURCE(6475, 23)
bs←v11600 = bReader←v11528.f0;
SOURCE(6500, 24)
s←v11628 = (MIN((int)(word), as←v11572, bs←v11600));
SOURCE(6526, 63)
{
word x15;
word x16;
duplicates←v11656 = (x15 = aReader←v11500.f3,
x16 = bReader←v11528.f3,
MIN( (unsigned) , x15, x16));
};
SOURCE(6629, 532)
lab←L100037: ;
if (( (int)s←v11628 == (int)aReader←v11500.f0) || ( (int)s←v11628 == (int)bReader←v11528.f0)) {
}
else {
goto lab←L100035;
};
{
word fStart←v11728 = 2147483647;
word fEnd←v11756;
SOURCE(6717, 44)
if (( (int)s←v11628 == (int)aReader←v11500.f0)) {
SOURCE(6740, 21)
fStart←v11728 = aReader←v11500.f1;
};
SOURCE(6764, 57)
if (( (int)s←v11628 == (int)bReader←v11528.f0)) {
SOURCE(6787, 34)
{
word x17;
fStart←v11728 = (x17 = bReader←v11528.f1,
MIN((int)(word), fStart←v11728, x17));
};
};
SOURCE(6824, 13)
fEnd←v11756 = fStart←v11728;
SOURCE(6839, 211)
lab←L100040: ;
if ( ( ( (int)s←v11628 == (int)aReader←v11500.f0) ? ( (int)aReader←v11500.f1 <= (int)fEnd←v11756) : 0 ) ) {
SOURCE(6903, 30)
{
word x18;
fEnd←v11756 = (x18 = aReader←v11500.f2,
MAX((int)(word), fEnd←v11756, x18));
};
SOURCE(6935, 17)
(void) Advance←P420((word) (&aReader←v11500));
}
else {
if ( ( ( (int)s←v11628 == (int)bReader←v11528.f0) ? ( (int)bReader←v11528.f1 <= (int)fEnd←v11756) : 0 ) ) {
SOURCE(7001, 30)
{
word x19;
fEnd←v11756 = (x19 = bReader←v11528.f2,
MAX((int)(word), fEnd←v11756, x19));
};
SOURCE(7033, 17)
(void) Advance←P420((word) (&bReader←v11528));
}
else {
SOURCE(7066, 4)
goto lab←L100039;
};
};
goto lab←L100040;
lab←L100039: ;
SOURCE(7081, 80)
if (( (int)fEnd←v11756 > (int)fStart←v11728)) {
SOURCE(7104, 29)
(void) ( *( (fPt) ((* (ptr) run←v11268 ))))(s←v11628, fStart←v11728, SGNCK((fEnd←v11756 - fStart←v11728)), run←v11268);
SOURCE(7135, 26)
somethingInScanline←v11684 = 1;
};
};
goto lab←L100037;
lab←L100035: ;
SOURCE(7173, 159)
if ( ( ( ( (int)as←v11572 == (int)s←v11628) ? ( (int)bs←v11600 == (int)s←v11628) : 0 ) ? (duplicates←v11656 > 1) : 0 ) ) {
SOURCE(7220, 48)
if ((0 != somethingInScanline←v11684)) {
SOURCE(7248, 20)
(void) ( *( (fPt) ((* (ptr) repeat←v11296 ))))(SGNCK((duplicates←v11656 - 1)), repeat←v11296);
};
SOURCE(7270, 30)
(void) SkipTo←P480((word) &aReader←v11500, (s←v11628 + duplicates←v11656));
SOURCE(7302, 30)
(void) SkipTo←P480((word) &bReader←v11528, (s←v11628 + duplicates←v11656));
};
};
goto lab←L100034;
lab←L100032: ;
}
static word Intersection←P660(formal←c0379, formal←c0380)
word formal←c0379;
word formal←c0380;
{
W8 var←c25032;
/* declaration of a←v5496 skipped */
/* declaration of b←v5524 skipped */
word var←c5568;
/* declaration of var←c23048 skipped */
var←c25032.f4/* a←v5496 */ = formal←c0379;
var←c25032.f5/* b←v5524 */ = formal←c0380;
/* Intersection: */
SOURCE(7383, 1072)
{
word tmpAddr20;
tmpAddr20 = (word) (( (ptr) &var←c25032)+6)/* var←c23048 */ ;
(* (ptr) tmpAddr20 ) = ( ((word) (fPt) Runs←P2832) );
(* (( (ptr) tmpAddr20) + 1) ) = 1;
};
SOURCE(8427, 28)
return((word) CreateFromRuns←P120((word) ((( (bPt) &var←c25032)+24)/* var←c23048 */ )));
}
static void Runs←P2832(run←v11876, repeat←v11904, formal←c25096)
word run←v11876;
word repeat←v11904;
word formal←c25096;
{
register ptr gf←c25064 = (ptr) &globalframe;
W7 aReader←v12108;
W7 bReader←v12136;
formal←c25096 = (formal←c25096 - 24);
/* Runs: */
SOURCE(7447, 963)
SOURCE(7556, 30)
{
word polygon←v20728;
polygon←v20728 = (* (( (ptr) formal←c25096)+4) );
SOURCE(4643, 276)
if ((polygon←v20728 == 0)) {
SOURCE(4665, 55)
aReader←v12108 = (* (W7Pt) (( (ptr) gf←c25064)+86)/* var←c22280 */ );
}
else {
SOURCE(4720, 199)
aReader←v12108.f0 = (* (ptr) polygon←v20728 );
aReader←v12108.f1 = (* (( (ptr) polygon←v20728)+1) );
aReader←v12108.f2 = (* (( (ptr) polygon←v20728)+3) );
aReader←v12108.f3 = ((* (( (ptr) polygon←v20728)+2) ) - (* (ptr) polygon←v20728 ));
aReader←v12108.f4 = 0;
aReader←v12108.f5 = polygon←v20728;
aReader←v12108.f6 = polygon←v20728;
};
};
SOURCE(7588, 30)
{
word polygon←v20680;
polygon←v20680 = (* (( (ptr) formal←c25096)+5) );
SOURCE(4643, 276)
if ((polygon←v20680 == 0)) {
SOURCE(4665, 55)
bReader←v12136 = (* (W7Pt) (( (ptr) gf←c25064)+86)/* var←c22280 */ );
}
else {
SOURCE(4720, 199)
bReader←v12136.f0 = (* (ptr) polygon←v20680 );
bReader←v12136.f1 = (* (( (ptr) polygon←v20680)+1) );
bReader←v12136.f2 = (* (( (ptr) polygon←v20680)+3) );
bReader←v12136.f3 = ((* (( (ptr) polygon←v20680)+2) ) - (* (ptr) polygon←v20680 ));
bReader←v12136.f4 = 0;
bReader←v12136.f5 = polygon←v20680;
bReader←v12136.f6 = polygon←v20680;
};
};
SOURCE(7620, 790)
lab←L100045: ;
SOURCE(7620, 790)
{
word duplicates←v12180;
word s←v12208;
word somethingInScanline←v12236 = 0;
SOURCE(7690, 57)
if (( (int)aReader←v12108.f0 < (int)bReader←v12136.f0)) {
SOURCE(7720, 27)
(void) SkipTo←P480((word) &aReader←v12108, bReader←v12136.f0);
};
SOURCE(7749, 21)
if ((0 != aReader←v12108.f4)) {
SOURCE(7770, 4)
goto lab←L100044;
};
SOURCE(7776, 57)
if (( (int)aReader←v12108.f0 > (int)bReader←v12136.f0)) {
SOURCE(7806, 27)
(void) SkipTo←P480((word) &bReader←v12136, aReader←v12108.f0);
};
SOURCE(7835, 21)
if ((0 != bReader←v12136.f4)) {
SOURCE(7856, 4)
goto lab←L100044;
};
SOURCE(7862, 13)
s←v12208 = aReader←v12108.f0;
SOURCE(7877, 62)
{
word x21;
word x22;
word idx23;
duplicates←v12180 = (
idx23 = (word) ((x21 = aReader←v12108.f3,
x22 = bReader←v12136.f3,
MIN( (unsigned) , x21, x22)) - 1),
SGNCK(idx23)
);
};
SOURCE(7941, 304)
lab←L100048: ;
if ( ( ( (int)s←v12208 == (int)aReader←v12108.f0) ? ( (int)s←v12208 == (int)bReader←v12136.f0) : 0 ) ) {
}
else {
goto lab←L100046;
};
{
word fMin←v12280;
word fMax←v12308;
SOURCE(7982, 47)
{
word x24;
word x25;
fMin←v12280 = (x24 = aReader←v12108.f1,
x25 = bReader←v12136.f1,
MAX((int)(word), x24, x25));
};
SOURCE(8031, 47)
{
word x26;
word x27;
fMax←v12308 = (x26 = aReader←v12108.f2,
x27 = bReader←v12136.f2,
MIN((int)(word), x26, x27));
};
SOURCE(8080, 74)
if (( (int)fMin←v12280 < (int)fMax←v12308)) {
SOURCE(8101, 25)
(void) ( *( (fPt) ((* (ptr) run←v11876 ))))(s←v12208, fMin←v12280, SGNCK((fMax←v12308 - fMin←v12280)), run←v11876);
SOURCE(8128, 26)
somethingInScanline←v12236 = 1;
};
SOURCE(8157, 88)
{
word var←c23240;
var←c23240 = fMax←v12308;
if (( (int)var←c23240 == (int)aReader←v12108.f2)) {
SOURCE(8191, 17)
(void) Advance←P420((word) (&aReader←v12108));
}
else {
if (( (int)var←c23240 == (int)bReader←v12136.f2)) {
SOURCE(8228, 17)
(void) Advance←P420((word) (&bReader←v12136));
}
else {
SOURCE(8259, 5)
(void) XR←RaiseUnnamedError();
};
};
};
};
goto lab←L100048;
lab←L100046: ;
SOURCE(8275, 135)
if ( ( (0 != somethingInScanline←v12236) ? (duplicates←v12180 > 0) : 0 ) ) {
SOURCE(8324, 18)
(void) ( *( (fPt) ((* (ptr) repeat←v11904 ))))(duplicates←v12180, repeat←v11904);
SOURCE(8344, 32)
(void) SkipTo←P480((word) &aReader←v12108, ((s←v12208 + duplicates←v12180) + 1));
SOURCE(8378, 32)
(void) SkipTo←P480((word) &bReader←v12136, ((s←v12208 + duplicates←v12180) + 1));
};
};
goto lab←L100045;
lab←L100044: ;
}
static word Invert←P720(b←v5628, formal←c0381)
word b←v5628;
W4 formal←c0381;
{
W11 var←c25128;
/* declaration of universe←v5656 skipped */
word inverse←v5700;
/* declaration of var←c23272 skipped */
word c←v12352;
/* declaration of last←v12380 skipped */
W4 bb←v12408;
word sMin←v12436;
word fMin←v12464;
word sMax←v12492;
word fMax←v12520;
word s←v12576;
word f←v12604;
(* (W4Pt) (( (ptr) &var←c25128)+4)/* universe←v5656 */ ) = formal←c0381;
/* Invert: */
SOURCE(8461, 1154)
{
word tmpAddr28;
tmpAddr28 = (word) (( (ptr) &var←c25128)+8)/* var←c23272 */ ;
(* (ptr) tmpAddr28 ) = ( ((word) (fPt) Emit←P2988) );
(* (( (ptr) tmpAddr28) + 1) ) = 1;
};
SOURCE(8461, 1154)
inverse←v5700 = 0;
SOURCE(8536, 3)
c←v12352 = (word) GetScratch←P2040();
SOURCE(8570, 6)
(* (( (ptr) &var←c25128)+10)/* last←v12380 */ ) = c←v12352;
SOURCE(8596, 27)
(void) BoundingBox←P1380((word) &bb←v12408, b←v5628);
SOURCE(8625, 45)
{
word x29;
word x30;
sMin←v12436 = (x29 = (* (( (ptr) &var←c25128)+4) ),
x30 = bb←v12408.f0,
MIN((int)(word), x29, x30));
};
SOURCE(8672, 45)
{
word x31;
word x32;
fMin←v12464 = (x31 = (* (( (ptr) &var←c25128)+5) ),
x32 = bb←v12408.f1,
MIN((int)(word), x31, x32));
};
SOURCE(8719, 45)
{
word x33;
word x34;
sMax←v12492 = (x33 = (* (( (ptr) &var←c25128)+6) ),
x34 = bb←v12408.f2,
MAX((int)(word), x33, x34));
};
SOURCE(8766, 45)
{
word x35;
word x36;
fMax←v12520 = (x35 = (* (( (ptr) &var←c25128)+7) ),
x36 = bb←v12408.f3,
MAX((int)(word), x35, x36));
};
SOURCE(9113, 17)
s←v12576 = sMin←v12436;
SOURCE(9132, 17)
f←v12604 = fMax←v12520;
SOURCE(9151, 292)
{
register word p←v12960;
p←v12960 = b←v5628;
lab←L100052: ;
if ((p←v12960 != 0)) {
}
else {
goto lab←L100049;
};
{
W4 r←v13088;
SOURCE(9200, 19)
r←v13088 = (* (W4Pt) p←v12960 );
SOURCE(9221, 134)
if (( (int)r←v13088.f0 > (int)sMin←v12436) || (p←v12960 == b←v5628)) {
SOURCE(9253, 22)
(void) Emit←P2988(sMin←v12436, f←v12604, s←v12576, fMax←v12520, (word) (( (bPt) &var←c25128)+32)/* var←c23272 */ );
SOURCE(9277, 8)
f←v12604 = fMin←v12464;
SOURCE(9287, 8)
sMin←v12436 = s←v12576;
SOURCE(9297, 11)
s←v12576 = r←v13088.f0;
SOURCE(9310, 22)
(void) Emit←P2988(sMin←v12436, f←v12604, s←v12576, fMax←v12520, (word) (( (bPt) &var←c25128)+32)/* var←c23272 */ );
SOURCE(9334, 8)
sMin←v12436 = s←v12576;
SOURCE(9344, 11)
s←v12576 = r←v13088.f2;
};
SOURCE(9360, 38)
if (( (int)sMin←v12436 != (int)r←v13088.f0) || ( (int)s←v12576 != (int)r←v13088.f2)) {
SOURCE(9398, 5)
(void) XR←RaiseUnnamedError();
};
SOURCE(9405, 25)
(void) Emit←P2988(sMin←v12436, f←v12604, s←v12576, r←v13088.f1, (word) (( (bPt) &var←c25128)+32)/* var←c23272 */ );
SOURCE(9432, 11)
f←v12604 = r←v13088.f3;
};
p←v12960 = (* (( (ptr) p←v12960)+4) );
goto lab←L100052;
lab←L100049: ;
};
SOURCE(9454, 22)
(void) Emit←P2988(sMin←v12436, f←v12604, s←v12576, fMax←v12520, (word) (( (bPt) &var←c25128)+32)/* var←c23272 */ );
SOURCE(9478, 25)
(void) Emit←P2988(s←v12576, fMin←v12464, sMax←v12492, fMax←v12520, (word) (( (bPt) &var←c25128)+32)/* var←c23272 */ );
SOURCE(9505, 91)
if ((c←v12352 == (* (( (ptr) &var←c25128)+10)/* last←v12380 */ ))) {
SOURCE(9522, 19)
inverse←v5700 = 0;
}
else {
SOURCE(9543, 16)
inverse←v5700 = (* (( (ptr) c←v12352)+4) );
SOURCE(9561, 18)
(* (( (ptr) c←v12352)+4) ) = (* (( (ptr) (* (( (ptr) &var←c25128)+10)/* last←v12380 */ ))+4) );
SOURCE(9581, 15)
(* (( (ptr) (* (( (ptr) &var←c25128)+10)/* last←v12380 */ ))+4) ) = 0;
};
SOURCE(9601, 14)
(void) FreeScratch←P2100(c←v12352);
SOURCE(8461, 1154)
return(inverse←v5700);
}
static void Emit←P2988(s0←v12848, f0←v12876, s1←v12904, f1←v12932, formal←c25160)
word s0←v12848;
word f0←v12876;
word s1←v12904;
word f1←v12932;
word formal←c25160;
{
formal←c25160 = (formal←c25160 - 32);
/* Emit: */
SOURCE(8813, 292)
SOURCE(8854, 28)
{
word x37;
s0←v12848 = (x37 = (* (( (ptr) formal←c25160)+4) ),
MAX((int)(word), s0←v12848, x37));
};
SOURCE(8884, 28)
{
word x38;
s1←v12904 = (x38 = (* (( (ptr) formal←c25160)+6) ),
MIN((int)(word), s1←v12904, x38));
};
SOURCE(8914, 28)
{
word x39;
f0←v12876 = (x39 = (* (( (ptr) formal←c25160)+5) ),
MAX((int)(word), f0←v12876, x39));
};
SOURCE(8944, 28)
{
word x40;
f1←v12932 = (x40 = (* (( (ptr) formal←c25160)+7) ),
MIN((int)(word), f1←v12932, x40));
};
SOURCE(8974, 131)
if ( ( ( (int)s0←v12848 < (int)s1←v12904) ? ( (int)f0←v12876 < (int)f1←v12932) : 0 ) ) {
SOURCE(9004, 48)
if (((* (( (ptr) (* (( (ptr) formal←c25160)+10) ))+4) ) == 0)) {
SOURCE(9028, 24)
{
word var←c23304;
var←c23304 = (word) GetScratch←P2040();
(* (( (ptr) (* (( (ptr) formal←c25160)+10) ))+4) ) = var←c23304;
};
};
SOURCE(9054, 16)
(* (( (ptr) formal←c25160)+10) ) = (* (( (ptr) (* (( (ptr) formal←c25160)+10) ))+4) );
SOURCE(9072, 33)
(* (ptr) (* (( (ptr) formal←c25160)+10) ) ) = s0←v12848;
(* (( (ptr) (* (( (ptr) formal←c25160)+10) ))+1) ) = f0←v12876;
(* (( (ptr) (* (( (ptr) formal←c25160)+10) ))+2) ) = s1←v12904;
(* (( (ptr) (* (( (ptr) formal←c25160)+10) ))+3) ) = f1←v12932;
};
}
static word Difference←P780(a←v5760, b←v5788)
word a←v5760;
word b←v5788;
{
word diff←v5832;
W4 bb←v13132;
word bInverse←v13160;
/* Difference: */
SOURCE(9621, 248)
SOURCE(9621, 248)
diff←v5832 = 0;
SOURCE(9689, 27)
(void) BoundingBox←P1380((word) &bb←v13132, a←v5760);
SOURCE(9718, 33)
bInverse←v13160 = (word) Invert←P720(b←v5788, bb←v13132);
SOURCE(9753, 116)
if ( ( (a←v5760 != 0) ? ((* (( (ptr) a←v5760)+4) ) == 0) : 0 ) ) {
SOURCE(9788, 16)
diff←v5832 = bInverse←v13160;
}
else {
SOURCE(9813, 32)
diff←v5832 = (word) Intersection←P660(a←v5760, bInverse←v13160);
SOURCE(9847, 22)
(void) FreeScratch←P2100(bInverse←v13160);
};
SOURCE(9621, 248)
return(diff←v5832);
}
static void Shift←P840(polygon←v5892, sShift←v5920, fShift←v5948)
word polygon←v5892;
word sShift←v5920;
word fShift←v5948;
{
W2 shift←v13204;
/* Shift: */
SOURCE(9876, 272)
SOURCE(9943, 38)
shift←v13204.f0 = sShift←v5920;
shift←v13204.f1 = fShift←v5948;
SOURCE(9983, 165)
lab←L100055: ;
if ((polygon←v5892 != 0)) {
}
else {
goto lab←L100053;
};
SOURCE(10006, 58)
{
W2 var←c23368;
W2 v1←v21048;
v1←v21048 = (* (W2Pt) polygon←v5892 );
var←c23368.f0 = (v1←v21048.f0 + shift←v13204.f0);
var←c23368.f1 = (v1←v21048.f1 + shift←v13204.f1);
(* (W2Pt) polygon←v5892 ) = var←c23368;
};
SOURCE(10066, 58)
{
W2 var←c23432;
W2 v1←v21000;
v1←v21000 = (* (W2Pt) (( (ptr) polygon←v5892)+2) );
var←c23432.f0 = (v1←v21000.f0 + shift←v13204.f0);
var←c23432.f1 = (v1←v21000.f1 + shift←v13204.f1);
(* (W2Pt) (( (ptr) polygon←v5892)+2) ) = var←c23432;
};
SOURCE(10126, 22)
polygon←v5892 = (* (( (ptr) polygon←v5892)+4) );
goto lab←L100055;
lab←L100053: ;
}
static word FullyDestructiveUnion←P900(a←v6008, b←v6036)
word a←v6008;
word b←v6036;
{
word u←v6080;
/* FullyDestructiveUnion: */
SOURCE(10163, 116)
SOURCE(10163, 116)
u←v6080 = 0;
SOURCE(10232, 15)
u←v6080 = (word) Union←P600(a←v6008, b←v6036);
SOURCE(10249, 14)
(void) FreeScratch←P2100(a←v6008);
SOURCE(10265, 14)
(void) FreeScratch←P2100(b←v6036);
SOURCE(10163, 116)
return(u←v6080);
}
static word DestructiveUnion←P960(a←v6140, b←v6168)
word a←v6140;
word b←v6168;
{
word u←v6212;
/* DestructiveUnion: */
SOURCE(10285, 102)
SOURCE(10285, 102)
u←v6212 = 0;
SOURCE(10356, 15)
u←v6212 = (word) Union←P600(a←v6140, b←v6168);
SOURCE(10373, 14)
(void) FreeScratch←P2100(a←v6140);
SOURCE(10285, 102)
return(u←v6212);
}
static word DestructiveIntersection←P1020(a←v6272, b←v6300)
word a←v6272;
word b←v6300;
{
word i←v6344;
/* DestructiveIntersection: */
SOURCE(10393, 228)
SOURCE(10393, 228)
i←v6344 = 0;
SOURCE(10477, 39)
if ((a←v6272 == 0) || (b←v6300 == 0)) {
SOURCE(10504, 12)
return(0);
};
SOURCE(10518, 103)
if (((* (( (ptr) b←v6300)+4) ) == 0)) {
SOURCE(10541, 32)
i←v6344 = (word) DestructiveClip←P1080(a←v6272, (* (W4Pt) b←v6300 ));
}
else {
SOURCE(10582, 22)
i←v6344 = (word) Intersection←P660(a←v6272, b←v6300);
SOURCE(10606, 15)
(void) FreeScratch←P2100(a←v6272);
};
SOURCE(10393, 228)
return(i←v6344);
}
static word DestructiveClip←P1080(a←v6404, b←v6432)
word a←v6404;
W4 b←v6432;
{
word i←v6476;
word last←v13248 = 0;
word junk←v13276 = 0;
/* DestructiveClip: */
SOURCE(10628, 589)
SOURCE(10628, 589)
i←v6476 = 0;
SOURCE(10754, 396)
lab←L100060: ;
if ((a←v6404 != 0)) {
}
else {
goto lab←L100058;
};
{
word p←v13320;
word sMin←v13348;
word fMin←v13376;
word sMax←v13404;
word fMax←v13432;
SOURCE(10771, 14)
p←v13320 = a←v6404;
SOURCE(10787, 43)
{
word x41;
word x42;
sMin←v13348 = (x41 = (* (ptr) p←v13320 ),
x42 = b←v6432.f0,
MAX((int)(word), x41, x42));
};
SOURCE(10832, 43)
{
word x43;
word x44;
fMin←v13376 = (x43 = (* (( (ptr) p←v13320)+1) ),
x44 = b←v6432.f1,
MAX((int)(word), x43, x44));
};
SOURCE(10877, 43)
{
word x45;
word x46;
sMax←v13404 = (x45 = (* (( (ptr) p←v13320)+2) ),
x46 = b←v6432.f2,
MIN((int)(word), x45, x46));
};
SOURCE(10922, 43)
{
word x47;
word x48;
fMax←v13432 = (x47 = (* (( (ptr) p←v13320)+3) ),
x48 = b←v6432.f3,
MIN((int)(word), x47, x48));
};
SOURCE(10967, 10)
a←v6404 = (* (( (ptr) a←v6404)+4) );
SOURCE(10979, 171)
if (( (int)sMax←v13404 <= (int)sMin←v13348) || ( (int)fMax←v13432 <= (int)fMin←v13376)) {
SOURCE(11017, 13)
(* (( (ptr) p←v13320)+4) ) = junk←v13276;
SOURCE(11032, 8)
junk←v13276 = p←v13320;
}
else {
SOURCE(11049, 38)
(* (ptr) p←v13320 ) = sMin←v13348;
(* (( (ptr) p←v13320)+1) ) = fMin←v13376;
(* (( (ptr) p←v13320)+2) ) = sMax←v13404;
(* (( (ptr) p←v13320)+3) ) = fMax←v13432;
SOURCE(11089, 61)
if ((last←v13248 == 0)) {
SOURCE(11108, 18)
i←v6476 = p←v13320;
last←v13248 = p←v13320;
}
else {
SOURCE(11127, 13)
(* (( (ptr) last←v13248)+4) ) = p←v13320;
SOURCE(11142, 8)
last←v13248 = p←v13320;
};
};
};
goto lab←L100060;
lab←L100058: ;
SOURCE(11164, 34)
if ((last←v13248 != 0)) {
SOURCE(11183, 15)
(* (( (ptr) last←v13248)+4) ) = 0;
};
SOURCE(11200, 17)
(void) FreeScratch←P2100(junk←v13276);
SOURCE(10628, 589)
return(i←v6476);
}
static word DestructiveDifference←P1140(a←v6536, b←v6564)
word a←v6536;
word b←v6564;
{
word d←v6608;
/* DestructiveDifference: */
SOURCE(11223, 112)
SOURCE(11223, 112)
d←v6608 = 0;
SOURCE(11299, 20)
d←v6608 = (word) Difference←P780(a←v6536, b←v6564);
SOURCE(11321, 14)
(void) FreeScratch←P2100(a←v6536);
SOURCE(11223, 112)
return(d←v6608);
}
static word SplitOffSecondHalf←P1200(a←v6668)
word a←v6668;
{
word r←v6796;
word b←v13476;
word n←v13504 = 0;
/* SplitOffSecondHalf: */
SOURCE(11341, 268)
SOURCE(11341, 268)
r←v6796 = 0;
SOURCE(11418, 3)
b←v13476 = a←v6668;
SOURCE(11453, 93)
lab←L100063: ;
if ((a←v6668 != 0)) {
}
else {
goto lab←L100061;
};
SOURCE(11468, 10)
a←v6668 = (* (( (ptr) a←v6668)+4) );
SOURCE(11480, 9)
n←v13504 = (n←v13504 + 1);
SOURCE(11491, 10)
b←v13476 = (* (( (ptr) b←v13476)+4) );
SOURCE(11503, 16)
if ((a←v6668 == 0)) {
SOURCE(11519, 4)
goto lab←L100062;
};
SOURCE(11525, 10)
a←v6668 = (* (( (ptr) a←v6668)+4) );
SOURCE(11537, 9)
n←v13504 = (n←v13504 + 1);
goto lab←L100063;
lab←L100061: ;
lab←L100062: ;
SOURCE(11557, 52)
if (( (int)n←v13504 < (int)8)) {
SOURCE(11571, 13)
r←v6796 = 0;
}
else {
SOURCE(11585, 10)
r←v6796 = (* (( (ptr) b←v13476)+4) );
SOURCE(11597, 12)
(* (( (ptr) b←v13476)+4) ) = 0;
};
SOURCE(11341, 268)
return(r←v6796);
}
static word Canonicalize←P1260(rectangleList←v6940)
word rectangleList←v6940;
{
word var←c7068;
word b←v13632;
word a←v13660;
/* Canonicalize: */
SOURCE(11616, 418)
SOURCE(11696, 3)
b←v13632 = (word) SplitOffSecondHalf←P1200(rectangleList←v6940);
SOURCE(11751, 3)
a←v13660 = rectangleList←v6940;
SOURCE(11786, 248)
if ((b←v13632 == 0)) {
SOURCE(11804, 137)
lab←L100066: ;
if ((a←v13660 != 0)) {
}
else {
goto lab←L100064;
};
{
word a1←v13872;
word var←c23528;
W4 box←v20872;
SOURCE(11821, 4)
a1←v13872 = a←v13660;
SOURCE(11845, 11)
a←v13660 = (* (( (ptr) a1←v13872)+4) );
SOURCE(11858, 13)
(* (( (ptr) a1←v13872)+4) ) = 0;
SOURCE(11873, 68)
box←v20872 = (* (W4Pt) a1←v13872 );
if (( (int)box←v20872.f0 < (int)box←v20872.f2)) {
var←c23528 = (unsigned) ( (int)box←v20872.f1 < (int)box←v20872.f3);
}
else {
var←c23528 = (unsigned) 0;
};
if ((0 != var←c23528)) {
SOURCE(11909, 32)
b←v13632 = (word) FullyDestructiveUnion←P900(b←v13632, a1←v13872);
};
};
goto lab←L100066;
lab←L100064: ;
SOURCE(11952, 11)
return(b←v13632);
}
else {
SOURCE(11970, 64)
{
word var←c23592;
word var←c23624;
var←c23592 = (word) Canonicalize←P1260(a←v13660);
var←c23624 = (word) Canonicalize←P1260(b←v13632);
return((word) FullyDestructiveUnion←P900(var←c23592, var←c23624));
};
};
}
static word CreateFromBoxes←P1320(boxes←v7128)
word boxes←v7128;
{
W9 var←c25192;
word var←c7172;
/* declaration of var←c23656 skipped */
word head←v14000;
/* declaration of last←v14028 skipped */
/* declaration of new←v14056 skipped */
/* CreateFromBoxes: */
SOURCE(12040, 548)
{
word tmpAddr49;
tmpAddr49 = (word) (( (ptr) &var←c25192)+4)/* var←c23656 */ ;
(* (ptr) tmpAddr49 ) = ( ((word) (fPt) AddBox←P3240) );
(* (( (ptr) tmpAddr49) + 1) ) = 1;
};
SOURCE(12116, 6)
head←v14000 = (word) GetScratch←P2040();
SOURCE(12153, 6)
(* (( (ptr) &var←c25192)+6)/* last←v14028 */ ) = head←v14000;
SOURCE(12182, 5)
(* (( (ptr) &var←c25192)+7)/* new←v14056 */ ) = 0;
SOURCE(12365, 13)
(void) ( *( (fPt) ((* (ptr) boxes←v7128 ))))((word) ((( (bPt) &var←c25192)+16)/* var←c23656 */ ), boxes←v7128);
SOURCE(12380, 79)
{
word t←v14440;
SOURCE(12381, 3)
t←v14440 = (* (( (ptr) (* (( (ptr) &var←c25192)+6)/* last←v14028 */ ))+4) );
SOURCE(12412, 15)
(* (( (ptr) (* (( (ptr) &var←c25192)+6)/* last←v14028 */ ))+4) ) = 0;
SOURCE(12429, 15)
(* (( (ptr) &var←c25192)+7)/* new←v14056 */ ) = (* (( (ptr) head←v14000)+4) );
SOURCE(12446, 13)
(* (( (ptr) head←v14000)+4) ) = t←v14440;
};
SOURCE(12462, 17)
(void) FreeScratch←P2100(head←v14000);
SOURCE(12481, 17)
(* (( (ptr) &var←c25192)+6)/* last←v14028 */ ) = 0;
head←v14000 = 0;
SOURCE(12500, 50)
SOURCE(12500, 50)
{
/* declaration of var←c01 skipped */
{
word var←c02;
var←c02 = (word) XR←Enable(( ((word) (fPt) NoName←Q5592) ), ( ((word) (fPt) NoName←Q5652) ), (word) &var←c25192);
if ((var←c02 == 2)) {
goto lab←L100069;
};
};
return((* (( (ptr) &var←c25192)+8)/* var←c01 */ ));
};
lab←L100069: ;
SOURCE(12562, 26)
return((word) Canonicalize←P1260((* ((( (ptr) &var←c25192)+7)/* new←v14056 */ ) )));
}
static word NoName←Q5592(formal←c0351)
word formal←c0351;
{
SOURCE(12500, 50)
(* (( (ptr) formal←c0351)+8) ) = (word) Validate←P60((* ((( (ptr) formal←c0351)+7)) ));
return(0);
}
static void AddBox←P3240(box←v14412, formal←c25224)
W4 box←v14412;
word formal←c25224;
{
formal←c25224 = (formal←c25224 - 16);
/* AddBox: */
SOURCE(12209, 148)
SOURCE(12240, 117)
if ( ( ( (int)box←v14412.f0 < (int)box←v14412.f2) ? ( (int)box←v14412.f1 < (int)box←v14412.f3) : 0 ) ) {
SOURCE(12273, 48)
if (((* (( (ptr) (* (( (ptr) formal←c25224)+6) ))+4) ) == 0)) {
SOURCE(12297, 24)
{
word var←c23752;
var←c23752 = (word) GetScratch←P2040();
(* (( (ptr) (* (( (ptr) formal←c25224)+6) ))+4) ) = var←c23752;
};
};
SOURCE(12323, 16)
(* (( (ptr) formal←c25224)+6) ) = (* (( (ptr) (* (( (ptr) formal←c25224)+6) ))+4) );
SOURCE(12341, 16)
(* (W4Pt) (* (( (ptr) formal←c25224)+6) ) ) = box←v14412;
};
}
static void BoundingBox←P1380(formal←c0242, polygon←v7232)
word formal←c0242;
word polygon←v7232;
{
register ptr gf←c25256 = (ptr) &globalframe;
W4 var←c7276;
/* BoundingBox: */
SOURCE(12594, 715)
SOURCE(12659, 598)
if ((polygon←v7232 != 0)) {
SOURCE(12681, 578)
{
word bmins←v14568;
word bminf←v14596;
word bmaxs←v14624;
word bmaxf←v14652;
SOURCE(12683, 36)
bmins←v14568 = (* (ptr) polygon←v7232 );
SOURCE(12721, 36)
bminf←v14596 = (* (( (ptr) polygon←v7232)+1) );
SOURCE(12759, 36)
bmaxs←v14624 = (* (( (ptr) polygon←v7232)+2) );
SOURCE(12797, 36)
bmaxf←v14652 = (* (( (ptr) polygon←v7232)+3) );
SOURCE(12835, 348)
{
register word each←v14696;
each←v14696 = (* (( (ptr) polygon←v7232)+4) );
lab←L100076: ;
if ((each←v14696 != 0)) {
}
else {
goto lab←L100073;
};
{
word emins←v14740;
word eminf←v14768;
word emaxs←v14796;
word emaxf←v14824;
SOURCE(12897, 33)
emins←v14740 = (* (ptr) each←v14696 );
SOURCE(12932, 33)
eminf←v14768 = (* (( (ptr) each←v14696)+1) );
SOURCE(12967, 33)
emaxs←v14796 = (* (( (ptr) each←v14696)+2) );
SOURCE(13002, 33)
emaxf←v14824 = (* (( (ptr) each←v14696)+3) );
SOURCE(13037, 35)
if (( (int)emins←v14740 < (int)bmins←v14568)) {
SOURCE(13059, 13)
bmins←v14568 = emins←v14740;
};
SOURCE(13074, 35)
if (( (int)eminf←v14768 < (int)bminf←v14596)) {
SOURCE(13096, 13)
bminf←v14596 = eminf←v14768;
};
SOURCE(13111, 35)
if (( (int)emaxs←v14796 > (int)bmaxs←v14624)) {
SOURCE(13133, 13)
bmaxs←v14624 = emaxs←v14796;
};
SOURCE(13148, 35)
if (( (int)emaxf←v14824 > (int)bmaxf←v14652)) {
SOURCE(13170, 13)
bmaxf←v14652 = emaxf←v14824;
};
};
each←v14696 = (* (( (ptr) each←v14696)+4) );
goto lab←L100076;
lab←L100073: ;
};
SOURCE(13194, 63)
var←c7276.f0 = bmins←v14568;
var←c7276.f1 = bminf←v14596;
var←c7276.f2 = bmaxs←v14624;
var←c7276.f3 = bmaxf←v14652;
goto lab←L100072;
};
};
SOURCE(13262, 47)
var←c7276 = (* (W4Pt) (( (ptr) gf←c25256)+93)/* var←c22344 */ );
/* removed tail goto */
lab←L100072: ;
(* (W4Pt) formal←c0242 ) = var←c7276;
return;
}
static word CountBoxes←P1440(polygon←v7336)
word polygon←v7336;
{
word boxes←v7380;
/* CountBoxes: */
SOURCE(13315, 136)
SOURCE(13315, 136)
boxes←v7380 = 0;
SOURCE(13387, 64)
lab←L100079: ;
if ((polygon←v7336 != 0)) {
}
else {
goto lab←L100077;
};
SOURCE(13410, 17)
boxes←v7380 = (boxes←v7380 + 1);
SOURCE(13429, 22)
polygon←v7336 = (* (( (ptr) polygon←v7336)+4) );
goto lab←L100079;
lab←L100077: ;
SOURCE(13315, 136)
return(boxes←v7380);
}
static word CountRuns←P1500(polygon←v7440)
word polygon←v7440;
{
word runs←v7484;
/* CountRuns: */
SOURCE(13466, 175)
SOURCE(13466, 175)
runs←v7484 = 0;
SOURCE(13536, 105)
lab←L100082: ;
if ((polygon←v7440 != 0)) {
}
else {
goto lab←L100080;
};
SOURCE(13559, 58)
{
word idx50;
runs←v7484 = (runs←v7484 + (
idx50 = (word) ((* (( (ptr) polygon←v7440)+2) ) - (* (ptr) polygon←v7440 )),
SGNCK(idx50)
));
};
SOURCE(13619, 22)
polygon←v7440 = (* (( (ptr) polygon←v7440)+4) );
goto lab←L100082;
lab←L100080: ;
SOURCE(13466, 175)
return(runs←v7484);
}
static word TestCreate←P1560(formal←c0382)
word formal←c0382;
{
W7 var←c25288;
/* declaration of polygon←v7544 skipped */
word var←c7588;
/* declaration of var←c23848 skipped */
var←c25288.f4/* polygon←v7544 */ = formal←c0382;
/* TestCreate: */
SOURCE(13656, 347)
{
word tmpAddr51;
tmpAddr51 = (word) (( (ptr) &var←c25288)+5)/* var←c23848 */ ;
(* (ptr) tmpAddr51 ) = ( ((word) (fPt) Runs←P3492) );
(* (( (ptr) tmpAddr51) + 1) ) = 1;
};
SOURCE(13973, 30)
return((word) CreateFromRuns←P120((word) ((( (bPt) &var←c25288)+20)/* var←c23848 */ )));
}
static void Runs←P3492(formal←c0383, repeat←v14972, formal←c25352)
word formal←c0383;
word repeat←v14972;
word formal←c25352;
{
W7 var←c25320;
/* declaration of run←v14944 skipped */
/* declaration of var←c23912 skipped */
formal←c25352 = (formal←c25352 - 20);
var←c25320.f4/* run←v14944 */ = formal←c0383;
var←c25320.f0 = formal←c25352;
/* Runs: */
SOURCE(13714, 254)
{
word tmpAddr52;
tmpAddr52 = (word) (( (ptr) &var←c25320)+5)/* var←c23912 */ ;
(* (ptr) tmpAddr52 ) = ( ((word) (fPt) boxAction←P3552) );
(* (( (ptr) tmpAddr52) + 1) ) = 1;
};
SOURCE(13913, 55)
(void) Map←P1620((* (( (ptr) formal←c25352)+4) ), (word) (( (bPt) &var←c25320)+20)/* var←c23912 */ , 1);
}
static void boxAction←P3552(box←v20472, formal←c25384)
W4 box←v20472;
word formal←c25384;
{
formal←c25384 = (formal←c25384 - 20);
/* boxAction: */
SOURCE(13816, 94)
SOURCE(13844, 66)
{
word pd53;
word idx54;
pd53 = (* (( (ptr) formal←c25384)+4) );
(void) ( *( (fPt) ((* (ptr) pd53 ))))(box←v20472.f0, box←v20472.f1, (
idx54 = (word) (box←v20472.f3 - box←v20472.f1),
SGNCK(idx54)
), pd53);
};
}
static void Map←P1620(polygon←v7648, boxAction←v7676, runs←v7704)
word polygon←v7648;
word boxAction←v7676;
word runs←v7704;
{
/* Map: */
SOURCE(14007, 604)
SOURCE(14092, 519)
if ((0 != runs←v7704)) {
SOURCE(14107, 397)
lab←L100085: ;
if ((polygon←v7648 != 0)) {
}
else {
goto lab←L100083;
};
{
word sMinRow←v15220;
word sMaxRow←v15248;
SOURCE(14130, 38)
sMinRow←v15220 = (* (ptr) polygon←v7648 );
SOURCE(14170, 38)
sMaxRow←v15248 = (* (( (ptr) polygon←v7648)+2) );
SOURCE(14210, 194)
{
register word s←v15292;
s←v15292 = sMinRow←v15220;
if (( (int)s←v15292 >= (int)sMaxRow←v15248)) {
goto lab←L100086;
};
lab←L100089: ;
SOURCE(14250, 154)
{
register word t←v15336;
t←v15336 = polygon←v7648;
lab←L100093: ;
if ( ( (t←v15336 != 0) ? ( (int)(* (ptr) t←v15336 ) == (int)sMinRow←v15220) : 0 ) ) {
}
else {
goto lab←L100090;
};
SOURCE(14329, 75)
{
W4 var←c23944;
var←c23944.f0 = s←v15292;
var←c23944.f1 = (* (( (ptr) t←v15336)+1) );
var←c23944.f2 = (s←v15292 + 1);
var←c23944.f3 = (* (( (ptr) t←v15336)+3) );
(void) ( *( (fPt) ((* (ptr) boxAction←v7676 ))))(var←c23944, boxAction←v7676);
};
t←v15336 = (* (( (ptr) t←v15336)+4) );
goto lab←L100093;
lab←L100090: ;
};
s←v15292 = (s←v15292 + 1);
if (( (int)s←v15292 < (int)sMaxRow←v15248)) {
goto lab←L100089;
};
lab←L100086: ;
};
SOURCE(14424, 80)
lab←L100096: ;
if ( ( (polygon←v7648 != 0) ? ( (int)(* (ptr) polygon←v7648 ) == (int)sMinRow←v15220) : 0 ) ) {
}
else {
goto lab←L100094;
};
SOURCE(14482, 22)
polygon←v7648 = (* (( (ptr) polygon←v7648)+4) );
goto lab←L100096;
lab←L100094: ;
};
goto lab←L100085;
lab←L100083: ;
}
else {
SOURCE(14533, 78)
{
register word each←v15380;
each←v15380 = polygon←v7648;
lab←L100100: ;
if ((each←v15380 != 0)) {
}
else {
goto lab←L100097;
};
SOURCE(14590, 21)
(void) ( *( (fPt) ((* (ptr) boxAction←v7676 ))))((* (W4Pt) (each←v15380) ), boxAction←v7676);
each←v15380 = (* (( (ptr) each←v15380)+4) );
goto lab←L100100;
lab←L100097: ;
};
};
}
static void Clip←P1680(polygon←v7764, box←v7792, boxAction←v7820, runs←v7848)
word polygon←v7764;
W4 box←v7792;
word boxAction←v7820;
word runs←v7848;
{
/* Clip: */
SOURCE(14629, 1057)
SOURCE(14720, 966)
if ((0 != runs←v7848)) {
SOURCE(14733, 676)
{
word row←v15424;
SOURCE(14735, 22)
row←v15424 = polygon←v7764;
SOURCE(14759, 639)
lab←L100103: ;
if ((row←v15424 != 0)) {
}
else {
goto lab←L100101;
};
{
word smin←v15468;
word smax←v15496;
SOURCE(14776, 31)
smin←v15468 = (* (ptr) row←v15424 );
SOURCE(14809, 31)
smax←v15496 = (* (( (ptr) row←v15424)+2) );
SOURCE(14842, 470)
if (( (int)smax←v15496 <= (int)box←v7792.f0)) {
}
else {
SOURCE(14876, 436)
if (( (int)smin←v15468 >= (int)box←v7792.f2)) {
SOURCE(14900, 10)
goto lab←L100102;
}
else {
SOURCE(14910, 402)
{
register word s←v15540;
register word noName←c23976;
{
word x55;
s←v15540 = (x55 = box←v7792.f0,
MAX((int)(word), smin←v15468, x55));
};
{
word x56;
noName←c23976 = (x56 = box←v7792.f2,
MIN((int)(word), smax←v15496, x56));
};
if (( (int)s←v15540 >= (int)noName←c23976)) {
goto lab←L100104;
};
lab←L100107: ;
{
W4 run←v15584;
SOURCE(14976, 54)
run←v15584.f0 = s←v15540;
run←v15584.f1 = 0;
run←v15584.f2 = (s←v15540 + 1);
run←v15584.f3 = 0;
SOURCE(15032, 280)
{
register word t←v15628;
t←v15628 = row←v15424;
lab←L100111: ;
if ( ( (t←v15628 != 0) ? ( (int)(* (ptr) t←v15628 ) == (int)smin←v15468) : 0 ) ) {
/*1*/ }
else {
/*1*/ goto lab←L100108;
/*1*/ };
{
/*1*/ word fmin←v15672;
/*1*/ word fmax←v15700;
SOURCE(15098, 29)
/*1*/ fmin←v15672 = (* (( (ptr) t←v15628)+1) );
SOURCE(15129, 29)
/*1*/ fmax←v15700 = (* (( (ptr) t←v15628)+3) );
SOURCE(15160, 152)
/*1*/ if (( (int)fmax←v15700 <= (int)box←v7792.f1)) {
/*1*/ }
/*1*/ else {
SOURCE(15194, 118)
/*1*/ if (( (int)fmin←v15672 >= (int)box←v7792.f3)) {
SOURCE(15218, 10)
/*1*/ goto lab←L100109;
/*1*/ }
/*1*/ else {
SOURCE(15230, 32)
/*1*/ {
/*1*/ word x57;
/*1*/ run←v15584.f1 = (x57 = box←v7792.f1,
/*1*/ MAX((int)(word), fmin←v15672, x57));
/*1*/ };
SOURCE(15264, 32)
/*1*/ {
/*1*/ word x58;
/*1*/ run←v15584.f3 = (x58 = box←v7792.f3,
/*1*/ MIN((int)(word), fmax←v15700, x58));
/*1*/ };
SOURCE(15298, 14)
/*1*/ (void) ( *( (fPt) ((* (ptr) boxAction←v7820 ))))(run←v15584, boxAction←v7820);
/*1*/ };
/*1*/ };
/*1*/ };
t←v15628 = (* (( (ptr) t←v15628)+4) );
goto lab←L100111;
lab←L100108: ;
lab←L100109: ;
};
};
s←v15540 = (s←v15540 + 1);
if (( (int)s←v15540 < (int)noName←c23976)) {
goto lab←L100107;
};
lab←L100104: ;
};
};
};
SOURCE(15335, 63)
lab←L100114: ;
if ( ( (row←v15424 != 0) ? ( (int)(* (ptr) row←v15424 ) == (int)smin←v15468) : 0 ) ) {
}
else {
goto lab←L100112;
};
SOURCE(15376, 22)
row←v15424 = (* (( (ptr) row←v15424)+4) );
goto lab←L100114;
lab←L100112: ;
};
goto lab←L100103;
lab←L100101: ;
lab←L100102: ;
};
}
else {
SOURCE(15418, 268)
{
register word each←v15744;
each←v15744 = polygon←v7764;
lab←L100118: ;
if ((each←v15744 != 0)) {
}
else {
goto lab←L100115;
};
SOURCE(15475, 211)
if (( (int)(* (( (ptr) each←v15744)+2) ) <= (int)box←v7792.f0)) {
}
else {
SOURCE(15521, 165)
if (( (int)(* (ptr) each←v15744 ) >= (int)box←v7792.f2)) {
SOURCE(15557, 10)
goto lab←L100116;
}
else {
SOURCE(15567, 121)
{
W4 clippedBox←v15788;
SOURCE(15569, 56)
{
W4 box1←v20920;
box1←v20920 = (* (W4Pt) each←v15744 );
{
W2 v1←v19412;
W2 v2←v19444;
v1←v19412 = (* (W2Pt) &box←v7792 );
v2←v19444 = (* (W2Pt) &box1←v20920 );
if (( (int)v2←v19444.f0 >= (int)v1←v19412.f0)) {
clippedBox←v15788.f0 = v2←v19444.f0;
}
else {
clippedBox←v15788.f0 = v1←v19412.f0;
};
if (( (int)v2←v19444.f1 >= (int)v1←v19412.f1)) {
clippedBox←v15788.f1 = v2←v19444.f1;
}
else {
clippedBox←v15788.f1 = v1←v19412.f1;
};
};
{
W2 v1←v19788;
W2 v2←v19820;
v1←v19788 = (* (W2Pt) (( (ptr) &box1←v20920)+2) );
v2←v19820 = (* (W2Pt) (( (ptr) &box←v7792)+2) );
if (( (int)v1←v19788.f0 <= (int)v2←v19820.f0)) {
clippedBox←v15788.f2 = v1←v19788.f0;
}
else {
clippedBox←v15788.f2 = v2←v19820.f0;
};
if (( (int)v1←v19788.f1 <= (int)v2←v19820.f1)) {
clippedBox←v15788.f3 = v1←v19788.f1;
}
else {
clippedBox←v15788.f3 = v2←v19820.f1;
};
};
};
SOURCE(15627, 59)
if ( ( ( (int)clippedBox←v15788.f0 < (int)clippedBox←v15788.f2) ? ( (int)clippedBox←v15788.f1 < (int)clippedBox←v15788.f3) : 0 ) ) {
SOURCE(15665, 21)
(void) ( *( (fPt) ((* (ptr) boxAction←v7820 ))))(clippedBox←v15788, boxAction←v7820);
};
};
};
};
each←v15744 = (* (( (ptr) each←v15744)+4) );
goto lab←L100118;
lab←L100115: ;
lab←L100116: ;
};
};
}
static word IsVisible←P1740(mask←v7908, clipper←v7936)
word mask←v7908;
word clipper←v7936;
{
word visibility←v7980;
/* IsVisible: */
SOURCE(15707, 821)
SOURCE(15792, 54)
if ((mask←v7908 == 0) || (clipper←v7936 == 0)) {
SOURCE(15828, 18)
return(2);
};
SOURCE(15848, 680)
if ( ( ((* (( (ptr) mask←v7908)+4) ) == 0) ? ((* (( (ptr) clipper←v7936)+4) ) == 0) : 0 ) ) {
SOURCE(15895, 413)
{
word sMin←v15832;
word sMax←v15860;
word fMin←v15888;
word fMax←v15916;
W4 var←c24232;
SOURCE(15897, 58)
{
word x59;
word x60;
sMin←v15832 = (x59 = (* (ptr) mask←v7908 ),
x60 = (* (ptr) clipper←v7936 ),
MAX((int)(word), x59, x60));
};
SOURCE(15957, 58)
{
word x61;
word x62;
sMax←v15860 = (x61 = (* (( (ptr) mask←v7908)+2) ),
x62 = (* (( (ptr) clipper←v7936)+2) ),
MIN((int)(word), x61, x62));
};
SOURCE(16017, 58)
{
word x63;
word x64;
fMin←v15888 = (x63 = (* (( (ptr) mask←v7908)+1) ),
x64 = (* (( (ptr) clipper←v7936)+1) ),
MAX((int)(word), x63, x64));
};
SOURCE(16077, 58)
{
word x65;
word x66;
fMax←v15916 = (x65 = (* (( (ptr) mask←v7908)+3) ),
x66 = (* (( (ptr) clipper←v7936)+3) ),
MIN((int)(word), x65, x66));
};
SOURCE(16137, 55)
if (( (int)sMax←v15860 <= (int)sMin←v15832) || ( (int)fMax←v15916 <= (int)fMin←v15888)) {
SOURCE(16174, 18)
return(2);
};
SOURCE(16194, 88)
var←c24232.f0 = sMin←v15832;
var←c24232.f1 = fMin←v15888;
var←c24232.f2 = sMax←v15860;
var←c24232.f3 = fMax←v15916;
if (XR←EqualWords(mask←v7908, &(var←c24232
), 4)) {
SOURCE(16266, 16)
return(0);
};
SOURCE(16284, 22)
return(1);
};
}
else {
SOURCE(16315, 215)
{
word intersection←v15960;
SOURCE(16317, 51)
intersection←v15960 = (word) Intersection←P660(mask←v7908, clipper←v7936);
SOURCE(16370, 115)
if ((intersection←v15960 == 0)) {
visibility←v7980 = 2;
}
else {
if ((0 != (word) Equal←P1860(intersection←v15960, mask←v7908))) {
visibility←v7980 = 0;
}
else {
visibility←v7980 = 1;
};
};
SOURCE(16487, 21)
(void) Destroy←P240(intersection←v15960);
SOURCE(16510, 18)
intersection←v15960 = 0;
};
};
SOURCE(15707, 821)
return(visibility←v7980);
}
static void ClipBoxToMask←P1800(box←v8040, mask←v8068, action←v8096)
W4 box←v8040;
word mask←v8068;
word action←v8096;
{
word bmins←v16004;
word bminf←v16032;
word bmaxs←v16060;
word bmaxf←v16088;
/* ClipBoxToMask: */
SOURCE(16537, 672)
SOURCE(16620, 26)
bmins←v16004 = box←v8040.f0;
SOURCE(16648, 26)
bminf←v16032 = box←v8040.f1;
SOURCE(16676, 26)
bmaxs←v16060 = box←v8040.f2;
SOURCE(16704, 26)
bmaxf←v16088 = box←v8040.f3;
SOURCE(16732, 477)
if ( ( ( (int)bmins←v16004 < (int)bmaxs←v16060) ? ( (int)bminf←v16032 < (int)bmaxf←v16088) : 0 ) ) {
SOURCE(16772, 437)
{
register word list←v16132;
list←v16132 = mask←v8068;
lab←L100125: ;
if ((list←v16132 != 0)) {
}
else {
goto lab←L100122;
};
{
word mins←v16260;
word maxs←v16288;
SOURCE(16833, 32)
mins←v16260 = (* (ptr) list←v16132 );
SOURCE(16867, 32)
maxs←v16288 = (* (( (ptr) list←v16132)+2) );
SOURCE(16901, 33)
if (( (int)bmins←v16004 > (int)mins←v16260)) {
SOURCE(16922, 12)
mins←v16260 = bmins←v16004;
};
SOURCE(16936, 33)
if (( (int)bmaxs←v16060 < (int)maxs←v16288)) {
SOURCE(16957, 12)
maxs←v16288 = bmaxs←v16060;
};
SOURCE(16971, 238)
if (( (int)mins←v16260 < (int)maxs←v16288)) {
SOURCE(16991, 220)
{
word minf←v16332;
word maxf←v16360;
SOURCE(16993, 32)
minf←v16332 = (* (( (ptr) list←v16132)+1) );
SOURCE(17027, 32)
maxf←v16360 = (* (( (ptr) list←v16132)+3) );
SOURCE(17061, 33)
if (( (int)bminf←v16032 > (int)minf←v16332)) {
SOURCE(17082, 12)
minf←v16332 = bminf←v16032;
};
SOURCE(17096, 33)
if (( (int)bmaxf←v16088 < (int)maxf←v16360)) {
SOURCE(17117, 12)
maxf←v16360 = bmaxf←v16088;
};
SOURCE(17131, 78)
if (( (int)minf←v16332 < (int)maxf←v16360)) {
SOURCE(17151, 58)
{
W4 var←c24264;
var←c24264.f0 = mins←v16260;
var←c24264.f1 = minf←v16332;
var←c24264.f2 = maxs←v16288;
var←c24264.f3 = maxf←v16360;
(void) ( *( (fPt) ((* (ptr) action←v8096 ))))(var←c24264, action←v8096);
};
};
};
};
};
list←v16132 = (* (( (ptr) list←v16132)+4) );
goto lab←L100125;
lab←L100122: ;
};
};
}
static word Equal←P1860(a←v8216, b←v8244)
word a←v8216;
word b←v8244;
{
word var←c8288;
/* Equal: */
SOURCE(17227, 179)
SOURCE(17284, 97)
lab←L100128: ;
if ( ( ( (a←v8216 != 0) ? (b←v8244 != 0) : 0 ) ? (a←v8216 != b←v8244) : 0 ) ) {
}
else {
goto lab←L100126;
};
SOURCE(17317, 40)
if ( ! XR←EqualWords(a←v8216, b←v8244, 4)) {
SOURCE(17343, 14)
return(0);
};
SOURCE(17359, 10)
a←v8216 = (* (( (ptr) a←v8216)+4) );
SOURCE(17371, 10)
b←v8244 = (* (( (ptr) b←v8244)+4) );
goto lab←L100128;
lab←L100126: ;
SOURCE(17392, 14)
return( (unsigned) (a←v8216 == b←v8244));
}
static word FromList←P1920(numbers←v8348)
word numbers←v8348;
{
register ptr gf←c25416 = (ptr) &globalframe;
word new←v8492;
word scratch←v16404;
word last←v16432;
/* FromList: */
SOURCE(17412, 623)
SOURCE(17412, 623)
new←v8492 = 0;
SOURCE(17484, 9)
scratch←v16404 = (word) GetScratch←P2040();
SOURCE(17524, 6)
last←v16432 = scratch←v16404;
SOURCE(17556, 363)
lab←L100131: ;
if ((numbers←v8348 != 0)) {
}
else {
goto lab←L100129;
};
{
word sMin←v16644;
word fMin←v16672;
word sMax←v16700;
word fMax←v16728;
SOURCE(17579, 37)
sMin←v16644 = XR←Narrow((* (ptr) numbers←v8348 ), (* (( (ptr) gf←c25416)+13) ));
SOURCE(17618, 42)
fMin←v16672 = XR←Narrow((* (ptr) (* (( (ptr) numbers←v8348)+1) ) ), (* (( (ptr) gf←c25416)+13) ));
SOURCE(17662, 47)
sMax←v16700 = XR←Narrow((* (ptr) (* (( (ptr) (* (( (ptr) numbers←v8348)+1) ))+1) ) ), (* (( (ptr) gf←c25416)+13) ));
SOURCE(17711, 52)
fMax←v16728 = XR←Narrow((* (ptr) (* (( (ptr) (* (( (ptr) (* (( (ptr) numbers←v8348)+1) ))+1) ))+1) ) ), (* (( (ptr) gf←c25416)+13)
));
SOURCE(17765, 49)
if (((* (( (ptr) last←v16432)+4) ) == 0)) {
SOURCE(17790, 24)
(* (( (ptr) last←v16432)+4) ) = (word) GetScratch←P2040();
};
SOURCE(17817, 16)
last←v16432 = (* (( (ptr) last←v16432)+4) );
SOURCE(17835, 45)
(* (( (ptr) last←v16432)+1) ) = (* (ptr) fMin←v16672 );
(* (( (ptr) last←v16432)+2) ) = (* (ptr) sMax←v16700 );
(* (( (ptr) last←v16432)+3) ) = (* (ptr) fMax←v16728 );
(* (ptr) last←v16432 ) = (* (ptr) sMin←v16644 );
SOURCE(17882, 37)
numbers←v8348 = (* (( (ptr) (* (( (ptr) (* (( (ptr) (* (( (ptr) numbers←v8348)+1) ))+1) ))+1) ))+1) );
};
goto lab←L100131;
lab←L100129: ;
SOURCE(17930, 105)
if ((last←v16432 == scratch←v16404)) {
SOURCE(17955, 10)
new←v8492 = 0;
}
else {
SOURCE(17974, 18)
new←v8492 = (* (( (ptr) scratch←v16404)+4) );
SOURCE(17994, 24)
(* (( (ptr) scratch←v16404)+4) ) = (* (( (ptr) last←v16432)+4) );
SOURCE(18020, 15)
(* (( (ptr) last←v16432)+4) ) = 0;
};
SOURCE(17412, 623)
return(new←v8492);
}
static word CreateFromBox←P1980(box←v8720)
W4 box←v8720;
{
register ptr gf←c25448 = (ptr) &globalframe;
word polygon←v8764;
/* CreateFromBox: */
SOURCE(18151, 282)
(void) (XR←MonitorEntry((word) (( (bPt) gf←c25448)+16)/* LOCK←v2496 */ ));
SOURCE(18151, 282)
polygon←v8764 = 0;
SOURCE(18229, 40)
if (( (int)box←v8720.f0 >= (int)box←v8720.f2) || ( (int)box←v8720.f1 >= (int)box←v8720.f3)) {
SOURCE(18257, 12)
(void) (XR←MonitorExit((word) (( (bPt) gf←c25448)+16)/* LOCK←v2496 */ ));
return(0);
};
SOURCE(18271, 41)
if (( (int)(* (( (ptr) gf←c25448)+9)/* availCount←v3560 */ ) == (int)0)) {
SOURCE(18294, 18)
{
word var←c24392;
{
word var←c24424;
word var←c24456;
var←c24424 = XR←NewObject(20, (* (( (ptr) gf←c25448)+14) ));
var←c24456 = var←c24424;
(* (W4Pt) var←c24456 ) = box←v8720;
var←c24392 = var←c24424;
};
(void) (XR←MonitorExit((word) (( (bPt) gf←c25448)+16)/* LOCK←v2496 */ ));
return(var←c24392);
};
};
SOURCE(18314, 21)
polygon←v8764 = (* (( (ptr) gf←c25448)+8)/* globalAvail←v3532 */ );
SOURCE(18337, 19)
(* (W4Pt) polygon←v8764 ) = box←v8720;
SOURCE(18358, 26)
(* (( (ptr) gf←c25448)+8)/* globalAvail←v3532 */ ) = (* (( (ptr) polygon←v8764)+4) );
SOURCE(18386, 18)
(* (( (ptr) polygon←v8764)+4) ) = 0;
SOURCE(18406, 27)
(* (( (ptr) gf←c25448)+9)/* availCount←v3560 */ ) = ((* (( (ptr) gf←c25448)+9)/* availCount←v3560 */ ) - 1);
SOURCE(18151, 282)
(void) (XR←MonitorExit((word) (( (bPt) gf←c25448)+16)/* LOCK←v2496 */ ));
return(polygon←v8764);
}
static word GetScratch←P2040()
{
register ptr gf←c25480 = (ptr) &globalframe;
word scratch←v8824;
word t←v16848 = 0;
/* GetScratch: */
SOURCE(18439, 391)
(void) (XR←MonitorEntry((word) (( (bPt) gf←c25480)+16)/* LOCK←v2496 */ ));
SOURCE(18439, 391)
scratch←v8824 = 0;
SOURCE(18553, 106)
lab←L100134: ;
if (( (int)(* (( (ptr) gf←c25480)+9)/* availCount←v3560 */ ) < (int)(* (( (ptr) gf←c25480)+11)/* scratchChunkSize←v3616 */ ))) {
}
else {
goto lab←L100132;
};
SOURCE(18592, 38)
{
word var←c24488;
var←c24488 = XR←NewObject(20, (* (( (ptr) gf←c25480)+14) ));
(* (( (ptr) var←c24488)+4) ) = (* (( (ptr) gf←c25480)+8)/* globalAvail←v3532 */ );
(* (( (ptr) gf←c25480)+8)/* globalAvail←v3532 */ ) = var←c24488;
};
SOURCE(18632, 27)
(* (( (ptr) gf←c25480)+9)/* availCount←v3560 */ ) = ((* (( (ptr) gf←c25480)+9)/* availCount←v3560 */ ) + 1);
goto lab←L100134;
lab←L100132: ;
SOURCE(18670, 25)
{
word var←c24520;
var←c24520 = (* (( (ptr) gf←c25480)+8)/* globalAvail←v3532 */ );
t←v16848 = var←c24520;
scratch←v8824 = var←c24520;
};
SOURCE(18697, 53)
{
register word noName←c24552 = 0;
register word noName←c24584;
noName←c24584 = ((* (( (ptr) gf←c25480)+11)/* scratchChunkSize←v3616 */ ) - 1);
if (( (int)noName←c24552 >= (int)noName←c24584)) {
goto lab←L100135;
};
lab←L100138: ;
SOURCE(18732, 18)
t←v16848 = (* (( (ptr) t←v16848)+4) );
noName←c24552 = (noName←c24552 + 1);
if (( (int)noName←c24552 < (int)noName←c24584)) {
goto lab←L100138;
};
lab←L100135: ;
};
SOURCE(18752, 20)
(* (( (ptr) gf←c25480)+8)/* globalAvail←v3532 */ ) = (* (( (ptr) t←v16848)+4) );
SOURCE(18774, 42)
(* (( (ptr) gf←c25480)+9)/* availCount←v3560 */ ) = ((* (( (ptr) gf←c25480)+9)/* availCount←v3560 */ ) - (* (( (ptr) gf←c25480)+11)
/* scratchChunkSize←v3616 */ ));
SOURCE(18818, 12)
(* (( (ptr) t←v16848)+4) ) = 0;
SOURCE(18439, 391)
(void) (XR←MonitorExit((word) (( (bPt) gf←c25480)+16)/* LOCK←v2496 */ ));
return(scratch←v8824);
}
static void FreeScratch←P2100(scratch←v8968)
word scratch←v8968;
{
register ptr gf←c25512 = (ptr) &globalframe;
word limit←v16976;
/* FreeScratch: */
SOURCE(18836, 423)
(void) (XR←MonitorEntry((word) (( (bPt) gf←c25512)+16)/* LOCK←v2496 */ ));
SOURCE(18890, 31)
{
word x67;
limit←v16976 = (x67 = (* (( (ptr) gf←c25512)+10)/* availLimit←v3588 */ ),
MAX((int)(word), x67, 0));
};
SOURCE(18923, 197)
if ((scratch←v8968 != 0)) {
SOURCE(18945, 177)
{
word t←v17020;
SOURCE(18947, 3)
t←v17020 = scratch←v8968;
SOURCE(18976, 61)
lab←L100141: ;
if (((* (( (ptr) t←v17020)+4) ) != 0)) {
}
else {
goto lab←L100139;
};
SOURCE(18998, 10)
t←v17020 = (* (( (ptr) t←v17020)+4) );
SOURCE(19010, 27)
(* (( (ptr) gf←c25512)+9)/* availCount←v3560 */ ) = ((* (( (ptr) gf←c25512)+9)/* availCount←v3560 */ ) + 1);
goto lab←L100141;
lab←L100139: ;
SOURCE(19048, 27)
(* (( (ptr) gf←c25512)+9)/* availCount←v3560 */ ) = ((* (( (ptr) gf←c25512)+9)/* availCount←v3560 */ ) + 1);
SOURCE(19077, 20)
(* (( (ptr) t←v17020)+4) ) = (* (( (ptr) gf←c25512)+8)/* globalAvail←v3532 */ );
SOURCE(19099, 21)
(* (( (ptr) gf←c25512)+8)/* globalAvail←v3532 */ ) = scratch←v8968;
};
};
SOURCE(19125, 134)
lab←L100144: ;
if (( (int)(* (( (ptr) gf←c25512)+9)/* availCount←v3560 */ ) > (int)limit←v16976)) {
}
else {
goto lab←L100142;
};
{
word t←v17148;
SOURCE(19153, 3)
t←v17148 = (* (( (ptr) gf←c25512)+8)/* globalAvail←v3532 */ );
SOURCE(19186, 30)
(* (( (ptr) gf←c25512)+8)/* globalAvail←v3532 */ ) = (* (( (ptr) (* (( (ptr) gf←c25512)+8)/* globalAvail←v3532 */ ))+4)
);
SOURCE(19218, 12)
(* (( (ptr) t←v17148)+4) ) = 0;
SOURCE(19232, 27)
(* (( (ptr) gf←c25512)+9)/* availCount←v3560 */ ) = ((* (( (ptr) gf←c25512)+9)/* availCount←v3560 */ ) - 1);
};
goto lab←L100144;
lab←L100142: ;
SOURCE(18836, 423)
(void) (XR←MonitorExit((word) (( (bPt) gf←c25512)+16)/* LOCK←v2496 */ ));
return;
}
static void NoName←Q5652(formal←c0338, formal←c200000, formal←c200001, formal←c200002, formal←c200003)
word formal←c0338;
word formal←c200000;
word formal←c200001;
word formal←c200002;
word formal←c200003;
{
register ptr gf←c0360 = (ptr) &globalframe;
if ((formal←c200001 == (word) (( (bPt) gf←c0360)+60)/* var←c21096 */ )) {
SOURCE(12550, 10)
(* (ptr) formal←c0338 ) = 2;
(* (( (ptr) formal←c0338)+1) ) = 2;
return;
};
(* (ptr) formal←c0338 ) = 0;
(* (( (ptr) formal←c0338)+1) ) = 0;
return;
}
/* file: ImagerManhattanImpl, module: ImagerManhattanImpl, compiled at: July 28, 1993 10:20:11 am PDT */
extern void XR←install←ImagerManhattanImpl() {
NoName←Q5532();
}
extern void XR←run←ImagerManhattanImpl() { XR←Start(&globalframe); }