/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */
/* time: February 21, 1992 11:09:51 pm PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: RedBlackTreeImpl, module: RedBlackTreeImpl */
/* switches: bcfhklnouw */
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1624683341,2573725874] RedBlackTreeImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef word (*fPt)();
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {W8 f; word r;} W9;
typedef struct {W8 f; W2 r;} W10;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {word f0, f1, f2;} W3;
typedef struct {W8 f; W3 r;} W11;
#define SOURCE(p, l) /* source p, l */
static void NoName←Q2316();
static void RedBlackTreeImpl←P0();
static void DoInner←P60();
static word NoName←Q2376();
static word Create←P120();
static word Size←P180();
static void inner←P1188();
static void Insert←P240();
static void InsertNode←P300();
static void inner←P1248();
static word Delete←P360();
static void inner←P1308();
static word LookupNode←P420();
static void inner←P1368();
static word Lookup←P480();
static void inner←P1428();
static void Lookup3←P540();
static void inner←P1488();
static word LookupSmallest←P600();
static void inner←P1548();
static word LookupNextLarger←P660();
static void inner←P1608();
static word LookupLargest←P720();
static void inner←P1668();
static word LookupNextSmaller←P780();
static void inner←P1728();
static void DestroyTable←P840();
static void inner←P1788();
static void EnumerateIncreasing←P900();
static void inner←P1848();
static word VisitSubtree←P1908();
static void EnumerateDecreasing←P960();
static void inner←P1968();
static word VisitSubtree←P2028();
static void CheckTable←P1020();
static void inner←P2088();
static void Assert←P2148();
static void Check1←P2208();
static word Balance←P1080();
static void NoName←Q2436();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\140\326\263\115\300\231\147\360\262\100\200\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\030\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\312\362\073\257\300\141\275\076\344\100\164\000\000"};
static struct {unsigned f; char r[4];} string4 = {131074, "\004\013\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\312\362\073\257\300\141\275\076\344\100\200\000\000"};
static struct {unsigned f; char r[4];} string6 = {131074, "\0040\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\140\326\263\115\300\231\147\360\262\100\164\000\000"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\312\362\073\257\300\141\275\076\344\100\150\000\000"};
static struct {
word f0[10]; word f10; word f11; word f12;
word f13; word f14; word f15; word f16;
word f17; word f18; word f19; word f20;
word f21; word f22; word f23; word f24;
word f25; word f26; word f27; word f28;
word f29; word f30; word f31; word f32;
word f33; word f34; word f35; word f36;
word f37; word f38; word f39; word f40;
word f41; word f42; word f43; word f44;
word f45; word f46; word f47[2];
} globalframe = {
{0}, (word) Balance←P1080, 0, (word) CheckTable←P1020,
0, (word) EnumerateDecreasing←P960, 0, (word) EnumerateIncreasing←P900,
0, (word) DestroyTable←P840, 0, (word) LookupNextSmaller←P780,
0, (word) LookupLargest←P720, 0, (word) LookupNextLarger←P660,
0, (word) LookupSmallest←P600, 0, (word) Lookup3←P540,
0, (word) Lookup←P480, 0, (word) LookupNode←P420,
0, (word) Delete←P360, 0, (word) InsertNode←P300,
0, (word) Insert←P240, 0, (word) Size←P180,
0, (word) Create←P120, 0, (word) DoInner←P60,
0, (word) RedBlackTreeImpl←P0, {0}
};
static void NoName←Q2316()
{
register ptr gf←c0227 = (ptr) &globalframe;
word var←c13656;
(* (( (ptr) gf←c0227)+4) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
(* (( (ptr) gf←c0227)+5) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
(* (( (ptr) gf←c0227)+7) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
(void) XR←DeclareGlobalFrame((word) "RedBlackTreeImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string7)), (word) (
( (bPt) gf←c0227)+184)/* var←c12216 */ );
var←c13656 = (word) XR←ExportInterface((word) "RedBlackTree", (word) XR←GetTypeIndexS((word) (&string8)), 18);
(* (( (ptr) gf←c0227)+48)/* var←c13624 */ ) = var←c13656;
(void) XR←ExportVar(var←c13656, 0, (word) (( (bPt) gf←c0227)+36));
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+168)/* var←c12152 */ , 67633410);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+72)/* var←c11768 */ , 262657);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+160)/* var←c12120 */ , 67371777);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+152)/* var←c12088 */ , 787459);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+144)/* var←c12056 */ , 787715);
(void) XR←ExportVar(var←c13656, 6, (word) (( (bPt) gf←c0227)+32));
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+136)/* var←c12024 */ , 67634946);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+128)/* var←c11992 */ , 67635202);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+120)/* var←c11960 */ , 67635458);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+96)/* var←c11864 */ , 67635714);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+80)/* var←c11800 */ , 67635970);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+104)/* var←c11896 */ , 67374081);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+88)/* var←c11832 */ , 67374337);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+112)/* var←c11928 */ , 201854466);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+64)/* var←c11736 */ , 528130);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+56)/* var←c11704 */ , 528386);
(void) XR←ExportProcS(var←c13656, (word) (( (bPt) gf←c0227)+48)/* var←c11672 */ , 266497);
}
static void RedBlackTreeImpl←P0(formal←c026, formal←c025)
word formal←c026;
word formal←c025;
{
/* RedBlackTreeImpl: */
}
static void DoInner←P60(formal←c0289, formal←c0290)
word formal←c0289;
word formal←c0290;
{
W7 var←c13688;
/* declaration of self←v3644 skipped */
/* declaration of inner←v3672 skipped */
/* declaration of var←c12248 skipped */
var←c13688.f4/* self←v3644 */ = formal←c0289;
var←c13688.f5/* inner←v3672 */ = formal←c0290;
/* DoInner: */
SOURCE(697, 265)
(void) (XR←MonitorEntry(var←c13688.f4/* self←v3644 */ ));
SOURCE(761, 201)
{
word var←c01;
{
word var←c0252;
var←c0252 = (word) &var←c13688;
var←c01 = (word) XR←Enable(( ((word) (fPt) NoName←Q2376) ), ( ((word) (fPt) NoName←Q2436) ), var←c0252);
};
if ((var←c01 == 2)) {
goto lab←L100002;
};
};
SOURCE(697, 265)
(void) (XR←MonitorExit(var←c13688.f4/* self←v3644 */ ));
return;
/* c2c skipped dead code */
lab←L100002: ;
SOURCE(892, 26)
(void) XR←RaiseError(var←c13688.f6/* var←c12248 */ , 0);
}
static word NoName←Q2376(formal←c0229)
word formal←c0229;
{
register ptr gf←c0228 = (ptr) &globalframe;
SOURCE(784, 41)
{
word private←v5708;
word root←v5736;
SOURCE(784, 41)
private←v5708 = (* (( (ptr) (* (( (ptr) formal←c0229)+4) ))+5) );
SOURCE(827, 22)
root←v5736 = (* (( (ptr) (* (( (ptr) formal←c0229)+4) ))+4) );
SOURCE(851, 67)
if ((root←v5736 == 0) || ((* (ptr) root←v5736 ) != 0)) {
SOURCE(892, 26)
(* (( (ptr) formal←c0229)+6) ) = (word) (( (bPt) gf←c0228)+36);
(void) (XR←MonitorExit(* (( (ptr) formal←c0229)+4) ));
return(2);
};
SOURCE(920, 42)
{
word pd9;
pd9 = (* (( (ptr) formal←c0229)+5) );
(void) ( *( (fPt) ((* (ptr) pd9 ))))(private←v5708, (* (( (ptr) private←v5708)+3) ), (* (( (ptr) private←v5708)+4) ), root←v5736, pd9)
;
};
};
return(0);
}
static word Create←P120(getKey←v3732, compare←v3760)
word getKey←v3732;
word compare←v3760;
{
register ptr gf←c13720 = (ptr) &globalframe;
word table←v3804;
word private←v5780;
word root←v5808;
word y←v5836;
word z←v5864;
/* Create: */
SOURCE(969, 484)
SOURCE(969, 484)
table←v3804 = 0;
SOURCE(1051, 114)
{
word var←c12280;
word var←c12344;
word var←c12408;
var←c12280 = XR←NewObject(16, (* (( (ptr) gf←c13720)+5) ));
var←c12344 = XR←NewObject(16, (* (( (ptr) gf←c13720)+5) ));
var←c12408 = XR←NewObject(20, (* (( (ptr) gf←c13720)+4) ));
(* (( (ptr) var←c12408)+1) ) = XR←CheckProc(getKey←v3732);
(* (( (ptr) var←c12408)+2) ) = XR←CheckProc(compare←v3760);
(* (( (ptr) var←c12408)+3) ) = var←c12280;
(* (( (ptr) var←c12408)+4) ) = var←c12344;
private←v5780 = var←c12408;
};
SOURCE(1167, 25)
root←v5808 = XR←NewObject(16, (* (( (ptr) gf←c13720)+5) ));
SOURCE(1194, 19)
y←v5836 = (* (( (ptr) private←v5780)+3) );
SOURCE(1215, 19)
z←v5864 = (* (( (ptr) private←v5780)+4) );
SOURCE(1236, 21)
table←v3804 = XR←NewObject(24, (* (( (ptr) gf←c13720)+7) ));
SOURCE(1259, 17)
(* (( (ptr) table←v3804)+4) ) = root←v5808;
SOURCE(1278, 23)
(* (( (ptr) table←v3804)+5) ) = private←v5780;
SOURCE(1303, 20)
(* (( (ptr) root←v5808)+2) ) = 0;
SOURCE(1325, 18)
(* (ptr) root←v5808 ) = 0;
SOURCE(1345, 16)
(* (( (ptr) root←v5808)+1) ) = z←v5864;
SOURCE(1363, 15)
(* (( (ptr) y←v5836)+2) ) = 1;
SOURCE(1380, 27)
(* (( (ptr) y←v5836)+1) ) = 0;
(* (ptr) y←v5836 ) = 0;
SOURCE(1409, 17)
(* (( (ptr) z←v5864)+2) ) = 0;
SOURCE(1428, 25)
(* (ptr) z←v5864 ) = y←v5836;
(* (( (ptr) z←v5864)+1) ) = y←v5836;
SOURCE(969, 484)
return(table←v3804);
}
static word Size←P180(self←v3864)
word self←v3864;
{
W7 var←c13752;
/* declaration of size←v3908 skipped */
/* declaration of var←c12536 skipped */
/* Size: */
SOURCE(1459, 144)
{
word tmpAddr10;
tmpAddr10 = (word) (( (ptr) &var←c13752)+5)/* var←c12536 */ ;
(* (ptr) tmpAddr10 ) = ( ((word) (fPt) inner←P1188) );
(* (( (ptr) tmpAddr10) + 1) ) = 1;
};
SOURCE(1459, 144)
var←c13752.f4/* size←v3908 */ = 0;
SOURCE(1564, 39)
if ((self←v3864 != 0)) {
SOURCE(1583, 20)
(void) DoInner←P60(self←v3864, (word) (( (bPt) &var←c13752)+20)/* var←c12536 */ );
};
SOURCE(1459, 144)
return(var←c13752.f4/* size←v3908 */ );
}
static void inner←P1188(private←v9444, y←v9472, z←v9500, root←v9528, formal←c13784)
word private←v9444;
word y←v9472;
word z←v9500;
word root←v9528;
word formal←c13784;
{
formal←c13784 = (formal←c13784 - 20);
/* inner: */
SOURCE(1519, 40)
SOURCE(1540, 19)
(* (( (ptr) formal←c13784)+4) ) = (* (ptr) private←v9444 );
}
static void Insert←P240(self←v3968, dataToInsert←v3996, insertKey←v4024)
word self←v3968;
word dataToInsert←v3996;
word insertKey←v4024;
{
register ptr gf←c13816 = (ptr) &globalframe;
word node←v5952;
/* Insert: */
SOURCE(1609, 161)
SOURCE(1687, 48)
node←v5952 = XR←NewObject(16, (* (( (ptr) gf←c13816)+5) ));
(* (( (ptr) node←v5952)+3) ) = dataToInsert←v3996;
SOURCE(1737, 33)
(void) InsertNode←P300(self←v3968, node←v5952, insertKey←v4024);
}
static void InsertNode←P300(self←v4084, formal←c0291, formal←c0292)
word self←v4084;
word formal←c0291;
word formal←c0292;
{
W9 var←c13848;
/* declaration of nodeToInsert←v4112 skipped */
/* declaration of insertKey←v4140 skipped */
register ptr gf←c13880 = (ptr) &globalframe;
/* declaration of var←c12600 skipped */
/* declaration of keyAlreadyPresent←v5996 skipped */
(* (( (ptr) &var←c13848)+4)/* nodeToInsert←v4112 */ ) = formal←c0291;
(* (( (ptr) &var←c13848)+5)/* insertKey←v4140 */ ) = formal←c0292;
/* InsertNode: */
SOURCE(1776, 1078)
{
word tmpAddr11;
tmpAddr11 = (word) (( (ptr) &var←c13848)+6)/* var←c12600 */ ;
(* (ptr) tmpAddr11 ) = ( ((word) (fPt) inner←P1248) );
(* (( (ptr) tmpAddr11) + 1) ) = 1;
};
SOURCE(1854, 31)
(* (( (ptr) &var←c13848)+8)/* keyAlreadyPresent←v5996 */ ) = 0;
SOURCE(2788, 20)
(void) DoInner←P60(self←v4084, (word) (( (bPt) &var←c13848)+24)/* var←c12600 */ );
SOURCE(2810, 44)
if ((0 != (* (( (ptr) &var←c13848)+8)/* keyAlreadyPresent←v5996 */ ))) {
SOURCE(2836, 18)
(void) XR←RaiseError((word) (( (bPt) gf←c13880)+32), 0);
};
}
static void inner←P1248(private←v9588, y←v9616, z←v9644, root←v9672, formal←c13912)
word private←v9588;
word y←v9616;
word z←v9644;
word root←v9672;
word formal←c13912;
{
word x←v6068 = 0;
word gg←v6096 = 0;
word g←v6124 = 0;
word f←v6152 = 0;
word c←v6180 = 2;
formal←c13912 = (formal←c13912 - 24);
/* inner: */
SOURCE(1887, 873)
SOURCE(2012, 8)
f←v6152 = root←v9672;
SOURCE(2022, 13)
x←v6068 = (* (( (ptr) f←v6152)+1) );
SOURCE(2037, 684)
lab←L100006: ;
SOURCE(2040, 402)
if ( ( ((* (( (ptr) (* (ptr) x←v6068 ))+2) ) == 1) ? ((* (( (ptr) (* (( (ptr) x←v6068)+1) ))+2) ) == 1) : 0 ) ) {
SOURCE(2102, 209)
if ((x←v6068 == z←v9644)) {
SOURCE(2118, 43)
if ((c←v6180 == 1)) {
SOURCE(2137, 24)
(* (( (ptr) formal←c13912)+8) ) = 1;
SOURCE(2163, 4)
goto lab←L100005;
};
SOURCE(2170, 16)
x←v6068 = (* (( (ptr) formal←c13912)+4) );
SOURCE(2188, 13)
(* (ptr) x←v6068 ) = z←v9644;
SOURCE(2203, 13)
(* (( (ptr) x←v6068)+1) ) = z←v9644;
SOURCE(2218, 49)
if ((c←v6180 == 0)) {
SOURCE(2235, 19)
(* (ptr) f←v6152 ) = x←v6068;
}
else {
SOURCE(2254, 13)
(* (( (ptr) f←v6152)+1) ) = x←v6068;
};
SOURCE(2269, 9)
c←v6180 = 1;
SOURCE(2280, 31)
(* (ptr) private←v9588 ) = ((* (ptr) private←v9588 ) + 1);
};
SOURCE(2316, 25)
(* (( (ptr) (* (ptr) x←v6068 ))+2) ) = 0;
SOURCE(2343, 25)
(* (( (ptr) (* (( (ptr) x←v6068)+1) ))+2) ) = 0;
SOURCE(2370, 15)
(* (( (ptr) x←v6068)+2) ) = 1;
SOURCE(2387, 55)
if (((* (( (ptr) f←v6152)+2) ) == 1)) {
SOURCE(2411, 24)
g←v6124 = (word) Balance←P1080(gg←v6096, g←v6124, f←v6152, x←v6068);
SOURCE(2437, 5)
x←v6068 = g←v6124;
};
};
SOURCE(2450, 18)
if ((c←v6180 == 1)) {
SOURCE(2468, 4)
goto lab←L100005;
};
SOURCE(2474, 6)
gg←v6096 = g←v6124;
SOURCE(2482, 5)
g←v6124 = f←v6152;
SOURCE(2489, 5)
f←v6152 = x←v6068;
SOURCE(2584, 38)
{
word pd12;
pd12 = (* (( (ptr) private←v9588)+2) );
c←v6180 = (word) ( *( (fPt) ((* (ptr) pd12 ))))((* (( (ptr) formal←c13912)+5) ), (* (( (ptr) x←v6068)+3) ), pd12);
};
SOURCE(2624, 43)
if ((c←v6180 == 1)) {
SOURCE(2643, 24)
(* (( (ptr) formal←c13912)+8) ) = 1;
SOURCE(2669, 4)
goto lab←L100005;
};
SOURCE(2676, 45)
if ((c←v6180 == 0)) {
x←v6068 = (* (ptr) x←v6068 );
}
else {
x←v6068 = (* (( (ptr) x←v6068)+1) );
};
goto lab←L100006;
lab←L100005: ;
SOURCE(2732, 28)
(* (( (ptr) (* (( (ptr) root←v9672)+1) ))+2) ) = 0;
}
static word Delete←P360(self←v4200, formal←c0293)
word self←v4200;
word formal←c0293;
{
W8 var←c13944;
/* declaration of deleteKey←v4228 skipped */
/* declaration of deletedNode←v4272 skipped */
/* declaration of var←c12632 skipped */
var←c13944.f4/* deleteKey←v4228 */ = formal←c0293;
/* Delete: */
SOURCE(2860, 1894)
{
word tmpAddr13;
tmpAddr13 = (word) (( (ptr) &var←c13944)+6)/* var←c12632 */ ;
(* (ptr) tmpAddr13 ) = ( ((word) (fPt) inner←P1308) );
(* (( (ptr) tmpAddr13) + 1) ) = 1;
};
SOURCE(2860, 1894)
var←c13944.f5/* deletedNode←v4272 */ = 0;
SOURCE(4734, 20)
(void) DoInner←P60(self←v4200, (word) (( (bPt) &var←c13944)+24)/* var←c12632 */ );
SOURCE(2860, 1894)
return(var←c13944.f5/* deletedNode←v4272 */ );
}
static void inner←P1308(private←v9828, y←v9856, z←v9884, root←v9912, formal←c13976)
word private←v9828;
word y←v9856;
word z←v9884;
word root←v9912;
word formal←c13976;
{
word f←v6268 = 0;
word result←v6296 = 0;
word parentOfResult←v6324 = 0;
word x←v6352 = 0;
word g←v6380 = 0;
word b←v6408 = 0;
word c←v6436;
formal←c13976 = (formal←c13976 - 24);
/* inner: */
SOURCE(2948, 1781)
SOURCE(3032, 12)
result←v6296 = 0;
SOURCE(3046, 8)
f←v6268 = root←v9912;
SOURCE(3056, 13)
x←v6352 = (* (( (ptr) f←v6268)+1) );
SOURCE(3071, 20)
if ((x←v6352 == z←v9884)) {
SOURCE(3085, 6)
return;
};
SOURCE(3093, 17)
(* (( (ptr) y←v9856)+2) ) = 0;
SOURCE(3183, 83)
if ( ( ((* (( (ptr) (* (ptr) x←v6352 ))+2) ) == 0) ? ((* (( (ptr) (* (( (ptr) x←v6352)+1) ))+2) ) == 0) : 0 ) ) {
SOURCE(3251, 15)
(* (( (ptr) x←v6352)+2) ) = 1;
};
SOURCE(3268, 89)
{
word pd14;
pd14 = (* (( (ptr) private←v9828)+2) );
c←v6436 = (word) ( *( (fPt) ((* (ptr) pd14 ))))((* (( (ptr) formal←c13976)+4) ), (* (( (ptr) x←v6352)+3) ), pd14);
};
if ((c←v6436 == 1)) {
SOURCE(3327, 10)
result←v6296 = x←v6352;
SOURCE(3339, 18)
parentOfResult←v6324 = f←v6268;
};
SOURCE(3362, 924)
lab←L100009: ;
SOURCE(3365, 921)
SOURCE(3367, 5)
g←v6380 = f←v6268;
SOURCE(3374, 5)
f←v6268 = x←v6352;
SOURCE(3381, 82)
if ((c←v6436 == 0)) {
SOURCE(3399, 13)
b←v6408 = (* (( (ptr) x←v6352)+1) );
SOURCE(3414, 13)
x←v6352 = (* (ptr) x←v6352 );
}
else {
SOURCE(3435, 13)
b←v6408 = (* (ptr) x←v6352 );
SOURCE(3450, 13)
x←v6352 = (* (( (ptr) x←v6352)+1) );
};
SOURCE(3466, 99)
{
word tc15;
if ((x←v6352 != z←v9884)) {
{
word pd16;
pd16 = (* (( (ptr) private←v9828)+2) );
c←v6436 = (word) ( *( (fPt) ((* (ptr) pd16 ))))((* (( (ptr) formal←c13976)+4) ), (* (( (ptr) x←v6352)+3) ), pd16);
};
tc15 = (word) (c←v6436 == 1);
}
else {
tc15 = (word) 0;
};
if (tc15) {
SOURCE(3535, 10)
result←v6296 = x←v6352;
SOURCE(3547, 18)
parentOfResult←v6324 = f←v6268;
};
};
SOURCE(3570, 72)
if ((((* (( (ptr) x←v6352)+2) ) == 1) || ((* (( (ptr) (* (ptr) x←v6352 ))+2) ) == 1)) || ((* (( (ptr) (* (( (ptr) x←v6352)+1)
))+2) ) == 1)) {
SOURCE(3642, 4)
goto lab←L100009;
};
SOURCE(3648, 236)
if (((* (( (ptr) b←v6408)+2) ) == 1)) {
SOURCE(3672, 109)
if ((b←v6408 == (* (ptr) f←v6268 ))) {
SOURCE(3696, 21)
(* (ptr) f←v6268 ) = (* (( (ptr) b←v6408)+1) );
SOURCE(3720, 13)
(* (( (ptr) b←v6408)+1) ) = f←v6268;
}
else {
SOURCE(3744, 21)
(* (( (ptr) f←v6268)+1) ) = (* (ptr) b←v6408 );
SOURCE(3768, 13)
(* (ptr) b←v6408 ) = f←v6268;
};
SOURCE(3786, 15)
(* (( (ptr) f←v6268)+2) ) = 1;
SOURCE(3804, 17)
(* (( (ptr) b←v6408)+2) ) = 0;
SOURCE(3823, 54)
if ((f←v6268 == (* (ptr) g←v6380 ))) {
SOURCE(3845, 19)
(* (ptr) g←v6380 ) = b←v6408;
}
else {
SOURCE(3864, 13)
(* (( (ptr) g←v6380)+1) ) = b←v6408;
};
SOURCE(3879, 5)
x←v6352 = b←v6408;
SOURCE(3887, 15)
goto lab←L100010;
};
SOURCE(3925, 14)
if ((x←v6352 == z←v9884)) {
SOURCE(3939, 4)
goto lab←L100008;
};
SOURCE(3945, 15)
(* (( (ptr) x←v6352)+2) ) = 1;
SOURCE(3962, 92)
if (((* (( (ptr) (* (ptr) b←v6408 ))+2) ) == 1)) {
SOURCE(3996, 25)
(* (( (ptr) (* (ptr) b←v6408 ))+2) ) = 0;
SOURCE(4023, 31)
x←v6352 = (word) Balance←P1080(g←v6380, f←v6268, b←v6408, (* (ptr) b←v6408 ));
SOURCE(4056, 15)
goto lab←L100010;
};
SOURCE(4076, 92)
if (((* (( (ptr) (* (( (ptr) b←v6408)+1) ))+2) ) == 1)) {
SOURCE(4110, 25)
(* (( (ptr) (* (( (ptr) b←v6408)+1) ))+2) ) = 0;
SOURCE(4137, 31)
x←v6352 = (word) Balance←P1080(g←v6380, f←v6268, b←v6408, (* (( (ptr) b←v6408)+1) ));
SOURCE(4170, 15)
goto lab←L100010;
};
SOURCE(4190, 17)
(* (( (ptr) f←v6268)+2) ) = 0;
SOURCE(4209, 15)
(* (( (ptr) b←v6408)+2) ) = 1;
goto lab←L100011;
lab←L100010: ;
SOURCE(4246, 38)
{
word pd17;
pd17 = (* (( (ptr) private←v9828)+2) );
c←v6436 = (word) ( *( (fPt) ((* (ptr) pd17 ))))((* (( (ptr) formal←c13976)+4) ), (* (( (ptr) x←v6352)+3) ), pd17);
};
lab←L100011: ;
goto lab←L100009;
lab←L100008: ;
SOURCE(4298, 28)
(* (( (ptr) (* (( (ptr) root←v9912)+1) ))+2) ) = 0;
SOURCE(4328, 17)
(* (( (ptr) z←v9884)+2) ) = 0;
SOURCE(4347, 15)
(* (( (ptr) y←v9856)+2) ) = 1;
SOURCE(4385, 319)
if ((result←v6296 != 0)) {
SOURCE(4408, 54)
if (((* (ptr) g←v6380 ) == f←v6268)) {
SOURCE(4430, 19)
(* (ptr) g←v6380 ) = z←v9884;
}
else {
SOURCE(4449, 13)
(* (( (ptr) g←v6380)+1) ) = z←v9884;
};
SOURCE(4464, 204)
if ((f←v6268 != result←v6296)) {
SOURCE(4485, 98)
if (((* (ptr) parentOfResult←v6324 ) == result←v6296)) {
SOURCE(4525, 32)
(* (ptr) parentOfResult←v6324 ) = f←v6268;
}
else {
SOURCE(4557, 26)
(* (( (ptr) parentOfResult←v6324)+1) ) = f←v6268;
};
SOURCE(4585, 26)
(* (ptr) f←v6268 ) = (* (ptr) result←v6296 );
SOURCE(4614, 26)
(* (( (ptr) f←v6268)+1) ) = (* (( (ptr) result←v6296)+1) );
SOURCE(4642, 26)
(* (( (ptr) f←v6268)+2) ) = (* (( (ptr) result←v6296)+2) );
};
SOURCE(4673, 31)
(* (ptr) private←v9828 ) = ((* (ptr) private←v9828 ) - 1);
};
SOURCE(4709, 20)
(* (( (ptr) formal←c13976)+5) ) = result←v6296;
}
static word LookupNode←P420(self←v4332, formal←c0294)
word self←v4332;
word formal←c0294;
{
W8 var←c14008;
/* declaration of lookupKey←v4360 skipped */
/* declaration of node←v4404 skipped */
/* declaration of var←c12664 skipped */
var←c14008.f4/* lookupKey←v4360 */ = formal←c0294;
/* LookupNode: */
SOURCE(4760, 343)
{
word tmpAddr18;
tmpAddr18 = (word) (( (ptr) &var←c14008)+6)/* var←c12664 */ ;
(* (ptr) tmpAddr18 ) = ( ((word) (fPt) inner←P1368) );
(* (( (ptr) tmpAddr18) + 1) ) = 1;
};
SOURCE(4760, 343)
var←c14008.f5/* node←v4404 */ = 0;
SOURCE(5083, 20)
(void) DoInner←P60(self←v4332, (word) (( (bPt) &var←c14008)+24)/* var←c12664 */ );
SOURCE(4760, 343)
return(var←c14008.f5/* node←v4404 */ );
}
static void inner←P1368(private←v9972, y←v10000, z←v10028, root←v10056, formal←c14040)
word private←v9972;
word y←v10000;
word z←v10028;
word root←v10056;
word formal←c14040;
{
formal←c14040 = (formal←c14040 - 24);
/* inner: */
SOURCE(4845, 206)
SOURCE(4866, 19)
(* (( (ptr) formal←c14040)+5) ) = (* (( (ptr) root←v10056)+1) );
SOURCE(4887, 164)
lab←L100014: ;
SOURCE(4890, 28)
if (((* (( (ptr) formal←c14040)+5) ) == z←v10028)) {
SOURCE(4908, 10)
(* (( (ptr) formal←c14040)+5) ) = 0;
SOURCE(4920, 4)
goto lab←L100013;
};
SOURCE(4927, 124)
{
word var←c12696;
{
word pd19;
pd19 = (* (( (ptr) private←v9972)+2) );
var←c12696 = (word) ( *( (fPt) ((* (ptr) pd19 ))))((* (( (ptr) formal←c14040)+4) ), (* (( (ptr) (* (( (ptr) formal←c14040)+5)
))+3) ), pd19);
};
switch (var←c12696) {
case 1:
SOURCE(4986, 4)
goto lab←L100013;
case 0:
SOURCE(5000, 19)
(* (( (ptr) formal←c14040)+5) ) = (* (ptr) (* (( (ptr) formal←c14040)+5) ) );
break;
case 2:
SOURCE(5032, 19)
(* (( (ptr) formal←c14040)+5) ) = (* (( (ptr) (* (( (ptr) formal←c14040)+5) ))+1) );
break;
default:
SOURCE(5064, 5)
(void) XR←RaiseUnnamedError();
break;
};
};
goto lab←L100014;
lab←L100013: ;
}
static word Lookup←P480(self←v4464, formal←c0295)
word self←v4464;
word formal←c0295;
{
W8 var←c14072;
/* declaration of lookupKey←v4492 skipped */
/* declaration of data←v4536 skipped */
/* declaration of var←c12728 skipped */
var←c14072.f4/* lookupKey←v4492 */ = formal←c0295;
/* Lookup: */
SOURCE(5109, 395)
{
word tmpAddr20;
tmpAddr20 = (word) (( (ptr) &var←c14072)+6)/* var←c12728 */ ;
(* (ptr) tmpAddr20 ) = ( ((word) (fPt) inner←P1428) );
(* (( (ptr) tmpAddr20) + 1) ) = 1;
};
SOURCE(5109, 395)
var←c14072.f5/* data←v4536 */ = 0;
SOURCE(5484, 20)
(void) DoInner←P60(self←v4464, (word) (( (bPt) &var←c14072)+24)/* var←c12728 */ );
SOURCE(5109, 395)
return(var←c14072.f5/* data←v4536 */ );
}
static void inner←P1428(private←v10116, y←v10144, z←v10172, root←v10200, formal←c14104)
word private←v10116;
word y←v10144;
word z←v10172;
word root←v10200;
word formal←c14104;
{
word equalNode←v6568;
formal←c14104 = (formal←c14104 - 24);
/* inner: */
SOURCE(5194, 285)
SOURCE(5215, 30)
equalNode←v6568 = (* (( (ptr) root←v10200)+1) );
SOURCE(5247, 182)
lab←L100017: ;
SOURCE(5250, 28)
if ((equalNode←v6568 == z←v10172)) {
SOURCE(5272, 6)
return;
};
SOURCE(5280, 149)
{
word var←c12760;
{
word pd21;
pd21 = (* (( (ptr) private←v10116)+2) );
var←c12760 = (word) ( *( (fPt) ((* (ptr) pd21 ))))((* (( (ptr) formal←c14104)+4) ), (* (( (ptr) equalNode←v6568)+3) ), pd21)
;
};
switch (var←c12760) {
case 1:
SOURCE(5344, 4)
goto lab←L100016;
case 0:
SOURCE(5358, 29)
equalNode←v6568 = (* (ptr) equalNode←v6568 );
break;
case 2:
SOURCE(5400, 29)
equalNode←v6568 = (* (( (ptr) equalNode←v6568)+1) );
break;
default:
SOURCE(5442, 5)
(void) XR←RaiseUnnamedError();
break;
};
};
goto lab←L100017;
lab←L100016: ;
SOURCE(5458, 21)
(* (( (ptr) formal←c14104)+5) ) = (* (( (ptr) equalNode←v6568)+3) );
}
static void Lookup3←P540(formal←c0108, self←v4596, formal←c0296)
word formal←c0108;
word self←v4596;
word formal←c0296;
{
W10 var←c14136;
/* declaration of lookupKey←v4624 skipped */
/* declaration of leftData←v4668 skipped */
/* declaration of equalData←v4696 skipped */
/* declaration of rightData←v4724 skipped */
/* declaration of var←c12792 skipped */
(* (( (ptr) &var←c14136)+4)/* lookupKey←v4624 */ ) = formal←c0296;
/* Lookup3: */
SOURCE(5510, 937)
{
word tmpAddr22;
tmpAddr22 = (word) (( (ptr) &var←c14136)+8)/* var←c12792 */ ;
(* (ptr) tmpAddr22 ) = ( ((word) (fPt) inner←P1488) );
(* (( (ptr) tmpAddr22) + 1) ) = 1;
};
SOURCE(5510, 937)
(* (( (ptr) &var←c14136)+5)/* leftData←v4668 */ ) = 0;
SOURCE(5510, 937)
(* (( (ptr) &var←c14136)+6)/* equalData←v4696 */ ) = 0;
SOURCE(5510, 937)
(* (( (ptr) &var←c14136)+7)/* rightData←v4724 */ ) = 0;
SOURCE(6427, 20)
(void) DoInner←P60(self←v4596, (word) (( (bPt) &var←c14136)+32)/* var←c12792 */ );
/* removed tail goto */
(* (ptr) formal←c0108 ) = (* (( (ptr) &var←c14136)+5)/* leftData←v4668 */ );
(* (( (ptr) formal←c0108)+1) ) = (* (( (ptr) &var←c14136)+6)/* equalData←v4696 */ );
(* (( (ptr) formal←c0108)+2) ) = (* (( (ptr) &var←c14136)+7)/* rightData←v4724 */ );
return;
}
static void inner←P1488(private←v10260, y←v10288, z←v10316, root←v10344, formal←c14168)
word private←v10260;
word y←v10288;
word z←v10316;
word root←v10344;
word formal←c14168;
{
word equalNode←v6656;
word leftNode←v6684 = 0;
word rightNode←v6712 = 0;
formal←c14168 = (formal←c14168 - 32);
/* inner: */
SOURCE(5622, 800)
SOURCE(5643, 30)
equalNode←v6656 = (* (( (ptr) root←v10344)+1) );
SOURCE(5720, 520)
lab←L100021: ;
SOURCE(5723, 38)
if ((equalNode←v6656 == z←v10316)) {
SOURCE(5746, 15)
equalNode←v6656 = 0;
SOURCE(5763, 4)
goto lab←L100020;
};
SOURCE(5770, 470)
{
word var←c12824;
{
word pd23;
pd23 = (* (( (ptr) private←v10260)+2) );
var←c12824 = (word) ( *( (fPt) ((* (ptr) pd23 ))))((* (( (ptr) formal←c14168)+4) ), (* (( (ptr) equalNode←v6656)+3) ), pd23)
;
};
switch (var←c12824) {
case 1:
SOURCE(5836, 127)
if (((* (ptr) equalNode←v6656 ) != z←v10316)) {
SOURCE(5868, 28)
leftNode←v6684 = (* (ptr) equalNode←v6656 );
SOURCE(5898, 65)
lab←L100024: ;
if (((* (( (ptr) leftNode←v6684)+1) ) != z←v10316)) {
}
else {
goto lab←L100022;
};
SOURCE(5928, 35)
leftNode←v6684 = (* (( (ptr) leftNode←v6684)+1) );
goto lab←L100024;
lab←L100022: ;
};
SOURCE(5968, 131)
if (((* (( (ptr) equalNode←v6656)+1) ) != z←v10316)) {
SOURCE(6000, 29)
rightNode←v6712 = (* (( (ptr) equalNode←v6656)+1) );
SOURCE(6031, 68)
lab←L100027: ;
if (((* (ptr) rightNode←v6712 ) != z←v10316)) {
}
else {
goto lab←L100025;
};
SOURCE(6062, 37)
rightNode←v6712 = (* (ptr) rightNode←v6712 );
goto lab←L100027;
lab←L100025: ;
};
SOURCE(6104, 4)
goto lab←L100020;
case 0:
SOURCE(6122, 21)
rightNode←v6712 = equalNode←v6656;
SOURCE(6145, 29)
equalNode←v6656 = (* (ptr) equalNode←v6656 );
break;
case 2:
SOURCE(6189, 20)
leftNode←v6684 = equalNode←v6656;
SOURCE(6211, 29)
equalNode←v6656 = (* (( (ptr) equalNode←v6656)+1) );
break;
default:
SOURCE(6255, 5)
(void) XR←RaiseUnnamedError();
break;
};
};
goto lab←L100021;
lab←L100020: ;
SOURCE(6271, 50)
if ((equalNode←v6656 != 0)) {
SOURCE(6295, 26)
(* (( (ptr) formal←c14168)+6) ) = (* (( (ptr) equalNode←v6656)+3) );
};
SOURCE(6323, 47)
if ((leftNode←v6684 != 0)) {
SOURCE(6346, 24)
(* (( (ptr) formal←c14168)+5) ) = (* (( (ptr) leftNode←v6684)+3) );
};
SOURCE(6372, 50)
if ((rightNode←v6712 != 0)) {
SOURCE(6396, 26)
(* (( (ptr) formal←c14168)+7) ) = (* (( (ptr) rightNode←v6712)+3) );
};
}
static word LookupSmallest←P600(self←v4784)
word self←v4784;
{
W7 var←c14200;
/* declaration of data←v4828 skipped */
/* declaration of var←c12856 skipped */
/* LookupSmallest: */
SOURCE(6453, 290)
{
word tmpAddr24;
tmpAddr24 = (word) (( (ptr) &var←c14200)+5)/* var←c12856 */ ;
(* (ptr) tmpAddr24 ) = ( ((word) (fPt) inner←P1548) );
(* (( (ptr) tmpAddr24) + 1) ) = 1;
};
SOURCE(6453, 290)
var←c14200.f4/* data←v4828 */ = 0;
SOURCE(6723, 20)
(void) DoInner←P60(self←v4784, (word) (( (bPt) &var←c14200)+20)/* var←c12856 */ );
SOURCE(6453, 290)
return(var←c14200.f4/* data←v4828 */ );
}
static void inner←P1548(private←v10404, y←v10432, z←v10460, root←v10488, formal←c14232)
word private←v10404;
word y←v10432;
word z←v10460;
word root←v10488;
word formal←c14232;
{
word smallestNode←v6800;
formal←c14232 = (formal←c14232 - 20);
/* inner: */
SOURCE(6530, 188)
SOURCE(6551, 33)
smallestNode←v6800 = (* (( (ptr) root←v10488)+1) );
SOURCE(6586, 29)
if ((smallestNode←v6800 == z←v10460)) {
SOURCE(6609, 6)
return;
};
SOURCE(6617, 75)
lab←L100030: ;
if (((* (ptr) smallestNode←v6800 ) != z←v10460)) {
}
else {
goto lab←L100028;
};
SOURCE(6649, 43)
smallestNode←v6800 = (* (ptr) smallestNode←v6800 );
goto lab←L100030;
lab←L100028: ;
SOURCE(6694, 24)
(* (( (ptr) formal←c14232)+4) ) = (* (( (ptr) smallestNode←v6800)+3) );
}
static word LookupNextLarger←P660(self←v4888, formal←c0297)
word self←v4888;
word formal←c0297;
{
W8 var←c14264;
/* declaration of lookupKey←v4916 skipped */
/* declaration of data←v4960 skipped */
/* declaration of var←c12888 skipped */
var←c14264.f4/* lookupKey←v4916 */ = formal←c0297;
/* LookupNextLarger: */
SOURCE(6749, 360)
{
word tmpAddr25;
tmpAddr25 = (word) (( (ptr) &var←c14264)+6)/* var←c12888 */ ;
(* (ptr) tmpAddr25 ) = ( ((word) (fPt) inner←P1608) );
(* (( (ptr) tmpAddr25) + 1) ) = 1;
};
SOURCE(6749, 360)
var←c14264.f5/* data←v4960 */ = 0;
SOURCE(7089, 20)
(void) DoInner←P60(self←v4888, (word) (( (bPt) &var←c14264)+24)/* var←c12888 */ );
SOURCE(6749, 360)
return(var←c14264.f5/* data←v4960 */ );
}
static void inner←P1608(private←v10548, y←v10576, z←v10604, root←v10632, formal←c14296)
word private←v10548;
word y←v10576;
word z←v10604;
word root←v10632;
word formal←c14296;
{
word largerNode←v6888 = 0;
word x←v6916;
formal←c14296 = (formal←c14296 - 24);
/* inner: */
SOURCE(6844, 240)
SOURCE(6889, 22)
x←v6916 = (* (( (ptr) root←v10632)+1) );
SOURCE(6913, 113)
lab←L100033: ;
if ((x←v6916 != z←v10604)) {
}
else {
goto lab←L100031;
};
SOURCE(6926, 100)
{
word pd26;
pd26 = (* (( (ptr) private←v10548)+2) );
if (((word) ( *( (fPt) ((* (ptr) pd26 ))))((* (( (ptr) formal←c14296)+4) ), (* (( (ptr) x←v6916)+3) ), pd26) == 0)) {
SOURCE(6977, 14)
largerNode←v6888 = x←v6916;
SOURCE(6993, 13)
x←v6916 = (* (ptr) x←v6916 );
}
else {
SOURCE(7013, 13)
x←v6916 = (* (( (ptr) x←v6916)+1) );
};
};
goto lab←L100033;
lab←L100031: ;
SOURCE(7037, 47)
if ((largerNode←v6888 != 0)) {
SOURCE(7062, 22)
(* (( (ptr) formal←c14296)+5) ) = (* (( (ptr) largerNode←v6888)+3) );
};
}
static word LookupLargest←P720(self←v5020)
word self←v5020;
{
W7 var←c14328;
/* declaration of data←v5064 skipped */
/* declaration of var←c12920 skipped */
/* LookupLargest: */
SOURCE(7115, 304)
{
word tmpAddr27;
tmpAddr27 = (word) (( (ptr) &var←c14328)+5)/* var←c12920 */ ;
(* (ptr) tmpAddr27 ) = ( ((word) (fPt) inner←P1668) );
(* (( (ptr) tmpAddr27) + 1) ) = 1;
};
SOURCE(7115, 304)
var←c14328.f4/* data←v5064 */ = 0;
SOURCE(7399, 20)
(void) DoInner←P60(self←v5020, (word) (( (bPt) &var←c14328)+20)/* var←c12920 */ );
SOURCE(7115, 304)
return(var←c14328.f4/* data←v5064 */ );
}
static void inner←P1668(private←v10692, y←v10720, z←v10748, root←v10776, formal←c14360)
word private←v10692;
word y←v10720;
word z←v10748;
word root←v10776;
word formal←c14360;
{
word largestNode←v7004;
formal←c14360 = (formal←c14360 - 20);
/* inner: */
SOURCE(7191, 203)
SOURCE(7212, 32)
largestNode←v7004 = (* (( (ptr) root←v10776)+1) );
SOURCE(7246, 48)
if ((largestNode←v7004 == z←v10748)) {
SOURCE(7269, 17)
largestNode←v7004 = 0;
SOURCE(7288, 6)
return;
};
SOURCE(7297, 72)
lab←L100036: ;
if (((* (( (ptr) largestNode←v7004)+1) ) != z←v10748)) {
}
else {
goto lab←L100034;
};
SOURCE(7328, 41)
largestNode←v7004 = (* (( (ptr) largestNode←v7004)+1) );
goto lab←L100036;
lab←L100034: ;
SOURCE(7371, 23)
(* (( (ptr) formal←c14360)+4) ) = (* (( (ptr) largestNode←v7004)+3) );
}
static word LookupNextSmaller←P780(self←v5124, formal←c0298)
word self←v5124;
word formal←c0298;
{
W8 var←c14392;
/* declaration of lookupKey←v5152 skipped */
/* declaration of data←v5196 skipped */
/* declaration of var←c12952 skipped */
var←c14392.f4/* lookupKey←v5152 */ = formal←c0298;
/* LookupNextSmaller: */
SOURCE(7425, 370)
{
word tmpAddr28;
tmpAddr28 = (word) (( (ptr) &var←c14392)+6)/* var←c12952 */ ;
(* (ptr) tmpAddr28 ) = ( ((word) (fPt) inner←P1728) );
(* (( (ptr) tmpAddr28) + 1) ) = 1;
};
SOURCE(7425, 370)
var←c14392.f5/* data←v5196 */ = 0;
SOURCE(7775, 20)
(void) DoInner←P60(self←v5124, (word) (( (bPt) &var←c14392)+24)/* var←c12952 */ );
SOURCE(7425, 370)
return(var←c14392.f5/* data←v5196 */ );
}
static void inner←P1728(private←v10836, y←v10864, z←v10892, root←v10920, formal←c14424)
word private←v10836;
word y←v10864;
word z←v10892;
word root←v10920;
word formal←c14424;
{
word smallerNode←v7092 = 0;
word x←v7120;
formal←c14424 = (formal←c14424 - 24);
/* inner: */
SOURCE(7521, 249)
SOURCE(7567, 22)
x←v7120 = (* (( (ptr) root←v10920)+1) );
SOURCE(7591, 119)
lab←L100039: ;
if ((x←v7120 != z←v10892)) {
}
else {
goto lab←L100037;
};
SOURCE(7604, 106)
{
word pd29;
pd29 = (* (( (ptr) private←v10836)+2) );
if (((word) ( *( (fPt) ((* (ptr) pd29 ))))((* (( (ptr) formal←c14424)+4) ), (* (( (ptr) x←v7120)+3) ), pd29) == 2)) {
SOURCE(7659, 15)
smallerNode←v7092 = x←v7120;
SOURCE(7676, 14)
x←v7120 = (* (( (ptr) x←v7120)+1) );
}
else {
SOURCE(7697, 13)
x←v7120 = (* (ptr) x←v7120 );
};
};
goto lab←L100039;
lab←L100037: ;
SOURCE(7721, 49)
if ((smallerNode←v7092 != 0)) {
SOURCE(7747, 23)
(* (( (ptr) formal←c14424)+5) ) = (* (( (ptr) smallerNode←v7092)+3) );
};
}
static void DestroyTable←P840(formal←c0299)
word formal←c0299;
{
W7 var←c14456;
/* declaration of self←v5256 skipped */
/* declaration of var←c12984 skipped */
var←c14456.f4/* self←v5256 */ = formal←c0299;
/* DestroyTable: */
SOURCE(7801, 192)
{
word tmpAddr30;
tmpAddr30 = (word) (( (ptr) &var←c14456)+5)/* var←c12984 */ ;
(* (ptr) tmpAddr30 ) = ( ((word) (fPt) inner←P1788) );
(* (( (ptr) tmpAddr30) + 1) ) = 1;
};
SOURCE(7973, 20)
(void) DoInner←P60(var←c14456.f4/* self←v5256 */ , (word) (( (bPt) &var←c14456)+20)/* var←c12984 */ );
}
static void inner←P1788(private←v10980, y←v11008, z←v11036, root←v11064, formal←c14488)
word private←v10980;
word y←v11008;
word z←v11036;
word root←v11064;
word formal←c14488;
{
word new←v7208;
formal←c14488 = (formal←c14488 - 20);
/* inner: */
SOURCE(7845, 123)
SOURCE(7866, 52)
new←v7208 = (word) Create←P120((* (( (ptr) private←v10980)+1) ), (* (( (ptr) private←v10980)+2) ));
SOURCE(7920, 26)
(* (( (ptr) (* (( (ptr) formal←c14488)+4) ))+5) ) = (* (( (ptr) new←v7208)+5) );
SOURCE(7948, 20)
(* (( (ptr) (* (( (ptr) formal←c14488)+4) ))+4) ) = (* (( (ptr) new←v7208)+4) );
}
static void EnumerateIncreasing←P900(self←v5316, formal←c0300)
word self←v5316;
word formal←c0300;
{
W7 var←c14520;
/* declaration of procToApply←v5344 skipped */
/* declaration of var←c13016 skipped */
var←c14520.f4/* procToApply←v5344 */ = formal←c0300;
/* EnumerateIncreasing: */
SOURCE(7999, 461)
{
word tmpAddr31;
tmpAddr31 = (word) (( (ptr) &var←c14520)+5)/* var←c13016 */ ;
(* (ptr) tmpAddr31 ) = ( ((word) (fPt) inner←P1848) );
(* (( (ptr) tmpAddr31) + 1) ) = 1;
};
SOURCE(8440, 20)
(void) DoInner←P60(self←v5316, (word) (( (bPt) &var←c14520)+20)/* var←c13016 */ );
}
static void inner←P1848(private←v11124, y←v11152, formal←c0301, root←v11208, formal←c14584)
word private←v11124;
word y←v11152;
word formal←c0301;
word root←v11208;
word formal←c14584;
{
W7 var←c14552;
/* declaration of z←v11180 skipped */
/* declaration of var←c13048 skipped */
formal←c14584 = (formal←c14584 - 20);
var←c14552.f4/* z←v11180 */ = formal←c0301;
var←c14552.f0 = formal←c14584;
/* inner: */
SOURCE(8073, 362)
{
word tmpAddr32;
tmpAddr32 = (word) (( (ptr) &var←c14552)+5)/* var←c13048 */ ;
(* (ptr) tmpAddr32 ) = ( ((word) (fPt) VisitSubtree←P1908) );
(* (( (ptr) tmpAddr32) + 1) ) = 1;
};
SOURCE(8357, 45)
if ((root←v11208 == 0) || ((* (( (ptr) root←v11208)+1) ) == var←c14552.f4/* z←v11180 */ )) {
SOURCE(8396, 6)
return;
};
SOURCE(8404, 31)
{
word var←c13080;
var←c13080 = (word) VisitSubtree←P1908((* (( (ptr) root←v11208)+1) ), (word) (( (bPt) &var←c14552)+20)/* var←c13048 */ );
};
}
static word VisitSubtree←P1908(node←v7372, formal←c14616)
word node←v7372;
word formal←c14616;
{
word stop←v7416;
word link←v7444;
formal←c14616 = (formal←c14616 - 20);
/* VisitSubtree: */
SOURCE(8094, 258)
SOURCE(8094, 258)
stop←v7416 = 0;
SOURCE(8159, 25)
link←v7444 = (* (ptr) node←v7372 );
SOURCE(8186, 53)
if ( ( (link←v7444 != (* (( (ptr) formal←c14616)+4) )) ? (0 != (word) VisitSubtree←P1908(link←v7444, (word) (( (bPt) formal←c14616)+20)
)) : 0 ) ) {
SOURCE(8226, 13)
return(1);
};
SOURCE(8241, 44)
{
word pd33;
pd33 = (* (( (ptr) (* (ptr) formal←c14616 ))+4) );
if ((0 != (word) ( *( (fPt) ((* (ptr) pd33 ))))((* ((( (ptr) node←v7372)+3)) ), pd33))) {
SOURCE(8272, 13)
return(1);
};
};
SOURCE(8287, 19)
link←v7444 = (* (( (ptr) node←v7372)+1) );
SOURCE(8308, 44)
if ((link←v7444 != (* (( (ptr) formal←c14616)+4) ))) {
SOURCE(8325, 27)
return((word) VisitSubtree←P1908(link←v7444, (word) (( (bPt) formal←c14616)+20)));
};
SOURCE(8094, 258)
return(stop←v7416);
}
static void EnumerateDecreasing←P960(self←v5404, formal←c0302)
word self←v5404;
word formal←c0302;
{
W7 var←c14648;
/* declaration of procToApply←v5432 skipped */
/* declaration of var←c13144 skipped */
var←c14648.f4/* procToApply←v5432 */ = formal←c0302;
/* EnumerateDecreasing: */
SOURCE(8466, 461)
{
word tmpAddr34;
tmpAddr34 = (word) (( (ptr) &var←c14648)+5)/* var←c13144 */ ;
(* (ptr) tmpAddr34 ) = ( ((word) (fPt) inner←P1968) );
(* (( (ptr) tmpAddr34) + 1) ) = 1;
};
SOURCE(8907, 20)
(void) DoInner←P60(self←v5404, (word) (( (bPt) &var←c14648)+20)/* var←c13144 */ );
}
static void inner←P1968(private←v11268, y←v11296, formal←c0303, root←v11352, formal←c14712)
word private←v11268;
word y←v11296;
word formal←c0303;
word root←v11352;
word formal←c14712;
{
W7 var←c14680;
/* declaration of z←v11324 skipped */
/* declaration of var←c13176 skipped */
formal←c14712 = (formal←c14712 - 20);
var←c14680.f4/* z←v11324 */ = formal←c0303;
var←c14680.f0 = formal←c14712;
/* inner: */
SOURCE(8540, 362)
{
word tmpAddr35;
tmpAddr35 = (word) (( (ptr) &var←c14680)+5)/* var←c13176 */ ;
(* (ptr) tmpAddr35 ) = ( ((word) (fPt) VisitSubtree←P2028) );
(* (( (ptr) tmpAddr35) + 1) ) = 1;
};
SOURCE(8824, 45)
if ((root←v11352 == 0) || ((* (( (ptr) root←v11352)+1) ) == var←c14680.f4/* z←v11324 */ )) {
SOURCE(8863, 6)
return;
};
SOURCE(8871, 31)
{
word var←c13208;
var←c13208 = (word) VisitSubtree←P2028((* (( (ptr) root←v11352)+1) ), (word) (( (bPt) &var←c14680)+20)/* var←c13176 */ );
};
}
static word VisitSubtree←P2028(node←v7608, formal←c14744)
word node←v7608;
word formal←c14744;
{
word stop←v7652;
word link←v7680;
formal←c14744 = (formal←c14744 - 20);
/* VisitSubtree: */
SOURCE(8561, 258)
SOURCE(8561, 258)
stop←v7652 = 0;
SOURCE(8626, 25)
link←v7680 = (* (( (ptr) node←v7608)+1) );
SOURCE(8653, 53)
if ( ( (link←v7680 != (* (( (ptr) formal←c14744)+4) )) ? (0 != (word) VisitSubtree←P2028(link←v7680, (word) (( (bPt) formal←c14744)+20)
)) : 0 ) ) {
SOURCE(8693, 13)
return(1);
};
SOURCE(8708, 44)
{
word pd36;
pd36 = (* (( (ptr) (* (ptr) formal←c14744 ))+4) );
if ((0 != (word) ( *( (fPt) ((* (ptr) pd36 ))))((* ((( (ptr) node←v7608)+3)) ), pd36))) {
SOURCE(8739, 13)
return(1);
};
};
SOURCE(8754, 19)
link←v7680 = (* (ptr) node←v7608 );
SOURCE(8775, 44)
if ((link←v7680 != (* (( (ptr) formal←c14744)+4) ))) {
SOURCE(8792, 27)
return((word) VisitSubtree←P2028(link←v7680, (word) (( (bPt) formal←c14744)+20)));
};
SOURCE(8561, 258)
return(stop←v7652);
}
static void CheckTable←P1020(self←v5492)
word self←v5492;
{
W6 var←c14776;
/* declaration of var←c13272 skipped */
/* CheckTable: */
SOURCE(8933, 919)
{
word tmpAddr37;
tmpAddr37 = (word) (( (ptr) &var←c14776)+4)/* var←c13272 */ ;
(* (ptr) tmpAddr37 ) = ( ((word) (fPt) inner←P2088) );
(* (( (ptr) tmpAddr37) + 1) ) = 1;
};
SOURCE(9832, 20)
(void) DoInner←P60(self←v5492, (word) (( (bPt) &var←c14776)+16)/* var←c13272 */ );
}
static void inner←P2088(formal←c0304, y←v11440, formal←c0305, root←v11496, formal←c14840)
word formal←c0304;
word y←v11440;
word formal←c0305;
word root←v11496;
word formal←c14840;
{
W11 var←c14808;
/* declaration of private←v11412 skipped */
/* declaration of z←v11468 skipped */
/* declaration of var←c13304 skipped */
/* declaration of var←c13336 skipped */
/* declaration of count←v7824 skipped */
formal←c14840 = (formal←c14840 - 16);
(* (( (ptr) &var←c14808)+4)/* private←v11412 */ ) = formal←c0304;
(* (( (ptr) &var←c14808)+5)/* z←v11468 */ ) = formal←c0305;
(* (ptr) &var←c14808 ) = formal←c14840;
/* inner: */
SOURCE(8976, 848)
{
word tmpAddr38;
tmpAddr38 = (word) (( (ptr) &var←c14808)+6)/* var←c13304 */ ;
(* (ptr) tmpAddr38 ) = ( ((word) (fPt) Check1←P2208) );
(* (( (ptr) tmpAddr38) + 1) ) = 1;
};
{
word tmpAddr39;
tmpAddr39 = (word) (( (ptr) &var←c14808)+8)/* var←c13336 */ ;
(* (ptr) tmpAddr39 ) = ( ((word) (fPt) Assert←P2148) );
(* (( (ptr) tmpAddr39) + 1) ) = 1;
};
SOURCE(9584, 14)
(* (( (ptr) &var←c14808)+10)/* count←v7824 */ ) = 0;
SOURCE(9600, 19)
(void) Assert←P2148(((* (ptr) (* (( (ptr) &var←c14808)+5)/* z←v11468 */ ) ) == y←v11440), (word) (( (bPt) &var←c14808)+32)
/* var←c13336 */ );
SOURCE(9621, 19)
(void) Assert←P2148(((* (( (ptr) (* (( (ptr) &var←c14808)+5)/* z←v11468 */ ))+1) ) == y←v11440), (word) (( (bPt) &var←c14808)+32)
/* var←c13336 */ );
SOURCE(9643, 181)
if (((* (( (ptr) root←v11496)+1) ) != (* (( (ptr) &var←c14808)+5)/* z←v11468 */ ))) {
SOURCE(9668, 158)
{
word smallest←v8116;
SOURCE(9670, 29)
smallest←v8116 = (* (( (ptr) root←v11496)+1) );
SOURCE(9701, 65)
lab←L100042: ;
if (((* (ptr) smallest←v8116 ) != (* (( (ptr) &var←c14808)+5)/* z←v11468 */ ))) {
}
else {
goto lab←L100040;
};
SOURCE(9731, 35)
smallest←v8116 = (* (ptr) smallest←v8116 );
goto lab←L100042;
lab←L100040: ;
SOURCE(9768, 56)
{
W3 var←c13400;
{
word var←c13368;
{
word pd40;
pd40 = (* (( (ptr) (* (( (ptr) &var←c14808)+4)/* private←v11412 */ ))+1) );
var←c13368 = (word) ( *( (fPt) ((* (ptr) pd40 ))))((* ((( (ptr) smallest←v8116)+3)) ), pd40);
};
(void) Check1←P2208((word) &var←c13400, (* (( (ptr) root←v11496)+1) ), var←c13368, (word) (( (bPt) &var←c14808)+24)/* var←c13304 */ )
;
};
};
};
};
}
static void Assert←P2148(p←v7900, formal←c14904)
word p←v7900;
word formal←c14904;
{
register ptr gf←c14872 = (ptr) &globalframe;
formal←c14904 = (formal←c14904 - 32);
/* Assert: */
SOURCE(8997, 55)
SOURCE(9023, 29)
if ((0 == p←v7900)) {
SOURCE(9037, 15)
(void) XR←RaiseError((word) (( (bPt) gf←c14872)+36), 0);
};
}
static void Check1←P2208(formal←c0214, x←v7960, maxKey←v7988, formal←c14936)
word formal←c0214;
word x←v7960;
word maxKey←v7988;
word formal←c14936;
{
word var←c8032;
word var←c8060;
word var←c8088;
word dl←v8160;
word dr←v8188;
word redChild←v8216;
formal←c14936 = (formal←c14936 - 24);
/* Check1: */
SOURCE(9055, 524)
SOURCE(9157, 39)
if ((x←v7960 == (* (( (ptr) formal←c14936)+5) ))) {
SOURCE(9171, 25)
var←c8032 = maxKey←v7988;
var←c8060 = 0;
var←c8088 = 0;
goto lab←L100043;
};
SOURCE(9198, 50)
{
W3 var←c13432;
(void) Check1←P2208((word) &var←c13432, (* (ptr) x←v7960 ), maxKey←v7988, (word) (( (bPt) formal←c14936)+24));
redChild←v8216 = var←c13432.f2;
dl←v8160 = var←c13432.f1;
maxKey←v7988 = var←c13432.f0;
};
SOURCE(9250, 39)
(void) Assert←P2148( ( (0 == redChild←v8216) ? 1 : ((* (( (ptr) x←v7960)+2) ) != 1) ) , (word) (( (bPt) formal←c14936)+32)
);
SOURCE(9291, 74)
{
word var←c13464;
{
word pd41;
pd41 = (* (( (ptr) (* (( (ptr) formal←c14936)+4) ))+2) );
var←c13464 = ((word) ( *( (fPt) ((* (ptr) pd41 ))))(maxKey←v7988, (* (( (ptr) x←v7960)+3) ), pd41) == ( ( (int)(* (( (ptr) formal←c14936)+10)
) == (int)0) ? 1 : 0 ) );
};
(void) Assert←P2148(var←c13464, (word) (( (bPt) formal←c14936)+32));
};
SOURCE(9367, 17)
(* (( (ptr) formal←c14936)+10) ) = ((* (( (ptr) formal←c14936)+10) ) + 1);
SOURCE(9386, 66)
{
W3 var←c13528;
{
word var←c13496;
{
word pd42;
pd42 = (* (( (ptr) (* (( (ptr) formal←c14936)+4) ))+1) );
var←c13496 = (word) ( *( (fPt) ((* (ptr) pd42 ))))((* ((( (ptr) x←v7960)+3)) ), pd42);
};
(void) Check1←P2208((word) &var←c13528, (* (( (ptr) x←v7960)+1) ), var←c13496, (word) (( (bPt) formal←c14936)+24));
};
redChild←v8216 = var←c13528.f2;
dr←v8188 = var←c13528.f1;
maxKey←v7988 = var←c13528.f0;
};
SOURCE(9454, 39)
(void) Assert←P2148( ( (0 == redChild←v8216) ? 1 : ((* (( (ptr) x←v7960)+2) ) != 1) ) , (word) (( (bPt) formal←c14936)+32)
);
SOURCE(9495, 13)
(void) Assert←P2148(( (int)dl←v8160 == (int)dr←v8188), (word) (( (bPt) formal←c14936)+32));
SOURCE(9510, 69)
{
word var←c13560;
var←c13560 = (dl←v8160 + ( ((* (( (ptr) x←v7960)+2) ) == 0) ? 1 : 0 ) );
var←c8088 = ((* (( (ptr) x←v7960)+2) ) == 1);
var←c8032 = maxKey←v7988;
var←c8060 = var←c13560;
/* removed tail goto */
};
lab←L100043: ;
(* (ptr) formal←c0214 ) = var←c8032;
(* (( (ptr) formal←c0214)+1) ) = var←c8060;
(* (( (ptr) formal←c0214)+2) ) = var←c8088;
return;
}
static word Balance←P1080(gg←v5552, g←v5580, f←v5608, x←v5636)
word gg←v5552;
word g←v5580;
word f←v5608;
word x←v5636;
{
word var←c5680;
word t←v8260 = 0;
word tc←v8288;
/* Balance: */
SOURCE(9859, 520)
SOURCE(9936, 196)
if ((f←v5608 == (* (ptr) g←v5580 ))) {
SOURCE(9958, 80)
if ((x←v5636 == (* (( (ptr) f←v5608)+1) ))) {
SOURCE(9980, 21)
(* (( (ptr) f←v5608)+1) ) = (* (ptr) x←v5636 );
SOURCE(10004, 13)
(* (ptr) x←v5636 ) = f←v5608;
SOURCE(10019, 5)
t←v8260 = f←v5608;
SOURCE(10026, 5)
f←v5608 = x←v5636;
SOURCE(10033, 5)
x←v5636 = t←v8260;
};
}
else {
SOURCE(10052, 80)
if ((x←v5636 == (* (ptr) f←v5608 ))) {
SOURCE(10074, 21)
(* (ptr) f←v5608 ) = (* (( (ptr) x←v5636)+1) );
SOURCE(10098, 13)
(* (( (ptr) x←v5636)+1) ) = f←v5608;
SOURCE(10113, 5)
t←v8260 = f←v5608;
SOURCE(10120, 5)
f←v5608 = x←v5636;
SOURCE(10127, 5)
x←v5636 = t←v8260;
};
};
SOURCE(10140, 107)
if ((x←v5636 == (* (ptr) f←v5608 ))) {
SOURCE(10162, 21)
(* (ptr) g←v5580 ) = (* (( (ptr) f←v5608)+1) );
SOURCE(10186, 13)
(* (( (ptr) f←v5608)+1) ) = g←v5580;
}
else {
SOURCE(10210, 21)
(* (( (ptr) g←v5580)+1) ) = (* (ptr) f←v5608 );
SOURCE(10234, 13)
(* (ptr) f←v5608 ) = g←v5580;
};
SOURCE(10252, 57)
if ((g←v5580 == (* (( (ptr) gg←v5552)+1) ))) {
SOURCE(10275, 20)
(* (( (ptr) gg←v5552)+1) ) = f←v5608;
}
else {
SOURCE(10295, 14)
(* (ptr) gg←v5552 ) = f←v5608;
};
SOURCE(10311, 14)
tc←v8288 = (* (( (ptr) g←v5580)+2) );
SOURCE(10328, 21)
(* (( (ptr) g←v5580)+2) ) = (* (( (ptr) f←v5608)+2) );
SOURCE(10352, 14)
(* (( (ptr) f←v5608)+2) ) = tc←v8288;
SOURCE(10368, 11)
return(f←v5608);
}
static void NoName←Q2436(formal←c0226, formal←c200000, formal←c200001, formal←c200002, formal←c200003)
word formal←c0226;
word formal←c200000;
word formal←c200001;
word formal←c200002;
word formal←c200003;
{
if ((formal←c200001 == XR←Unwind)) {
(void) (XR←MonitorExit(* (( (ptr) formal←c200000)+4) ));
};
(* (ptr) formal←c0226 ) = 0;
(* (( (ptr) formal←c0226)+1) ) = 0;
return;
}
/* file: RedBlackTreeImpl, module: RedBlackTreeImpl, compiled at: February 21, 1992 11:09:50 pm PST */
extern void XR←install←RedBlackTreeImpl() {
NoName←Q2316();
}
extern void XR←run←RedBlackTreeImpl() { XR←Start(&globalframe); }