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