/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */ /* time: December 9, 1992 4:41:22 pm PST */ /* C2C version: October 7, 1992 (native) */ /* ref-counting: off */ /* file: RopeOtherImpl, module: RopeOtherImpl */ /* switches: bcfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> static char versionStamp[] = "@(#)mob←version [2700058451,2909426187] RopeOtherImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef word (*fPt)(); #define SOURCE(p, l) /* source p, l */ #define MAX(cast, x, y) ( ( cast x) > ( cast y) ? (x) : (y) ) #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) ) #define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i ) static void NoName←Q2100(); static void RopeOtherImpl←P0(); static word ReserveChars←P60(); static word Append←P120(); static word AppendChar←P180(); static word AppendRope←P240(); static word New←P300(); static word ObtainScratch←P360(); static void ReleaseScratch←P420(); static word ObtainInternal←P480(); static void ReleaseInternal←P540(); static word CreatePool←P600(); static word FromRefText←P660(); static word FromRope←P720(); static void Init←P780(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\240\357\237\123\300\255\152\122\013\100\214\000\000"}; static struct {unsigned f; char r[12];} string2 = {589833, "\011\000\004\100\300\040\000\034\001\000\000"}; static struct {unsigned f; char r[44];} string3 = {2752556, "\260\007\006\154\145\156\147\164\150\210\241\000\200\177\377\005\004\164\145\170\164\254\206\012\011\155\141\170\114\145\156\147\164\150\210\241\000\200\177\377\243\261\000"}; static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\240\357\237\123\300\255\152\122\013\100\200\000\000"}; static struct {unsigned f; char r[4];} string5 = {196611, "\004A\360"}; static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\122\171\164\025\300\243\020\252\320\100\164\000\000"}; static struct {unsigned f; char r[12];} string7 = {1382377044, "extExtras"}; static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\353\320\266\116\300\006\152\040\366\100\150\000\000"}; static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"}; static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\277\374\326\303\300\302\136\022\175\100\150\000\000"}; static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\332\223\177\020\300\304\076\102\260\100\164\000\000"}; static struct {unsigned f; char r[24];} string12 = {1310744, "\211\010\007\120\157\157\154\117\142\152\300\353\320\266\116\300\006\152\040\366\000\000\000"}; static struct {unsigned f; char r[16];} string13 = {851984, "\257\300\070\313\200\317\300\150\067\321\062\100\150\000\000"}; static struct { word f0[14]; 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[6]; } globalframe = { {0}, (word) Init←P780, 0, (word) FromRope←P720, 0, (word) FromRefText←P660, 0, (word) CreatePool←P600, 0, (word) ReleaseInternal←P540, 0, (word) ObtainInternal←P480, 0, (word) ReleaseScratch←P420, 0, (word) ObtainScratch←P360, 0, (word) New←P300, 0, (word) AppendRope←P240, 0, (word) AppendChar←P180, 0, (word) Append←P120, 0, (word) ReserveChars←P60, 0, (word) RopeOtherImpl←P0, {0} }; static void NoName←Q2100() { register ptr gf←c0115 = (ptr) &globalframe; word var←c13304; (* (( (ptr) gf←c0115)+9) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2); (* (( (ptr) gf←c0115)+12) ) = (word) XR←GetTypeIndexS((word) (&string3)); (void) XR←DeclareGlobalFrame((word) "RopeOtherImpl", &globalframe, (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5) , (word) (( (bPt) gf←c0115)+160)/* var←c12312 */ ); var←c13304 = (word) XR←ImportInterface((word) "Checksum", (word) XR←GetTypeIndexS((word) (&string6)), 3); (* (( (ptr) gf←c0115)+44)/* var←c13080 */ ) = var←c13304; (void) XR←ImportProcS(var←c13304, 68157444); var←c13304 = (word) XR←ImportInterface((word) &string7, (word) XR←GetTypeIndexS((word) (&string8)), 16); (* (( (ptr) gf←c0115)+43)/* var←c12696 */ ) = var←c13304; (void) XR←ImportProcS(var←c13304, 528130); (void) XR←ImportProcS(var←c13304, 67374593); var←c13304 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string9)), 43); (* (( (ptr) gf←c0115)+42)/* var←c12472 */ ) = var←c13304; (void) XR←ImportProcS(var←c13304, 67634434); (void) XR←ImportProcS(var←c13304, 68166660); (void) XR←ImportProcS(var←c13304, 67373825); var←c13304 = (word) XR←ImportInterface((word) "SafeStorage", (word) XR←GetTypeIndexS((word) (&string10)), 27); (* (( (ptr) gf←c0115)+45)/* var←c13272 */ ) = var←c13304; (void) XR←ImportProcS(var←c13304, 67109376); var←c13304 = (word) XR←ExportInterface((word) "RefText", (word) XR←GetTypeIndexS((word) (&string11)), 26); (* (( (ptr) gf←c0115)+46)/* var←c13336 */ ) = var←c13304; (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+120)/* var←c12152 */ , 67371009); (void) XR←ExportVar(var←c13304, 1, (word) (( (bPt) gf←c0115)+52)/* var←c11864 */ ); (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+112)/* var←c12120 */ , 67371521); (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+104)/* var←c12088 */ , 262913); (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+144)/* var←c12248 */ , 68158468); (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+128)/* var←c12184 */ , 68158980); (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+136)/* var←c12216 */ , 67634946); (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+152)/* var←c12280 */ , 67635458); var←c13304 = (word) XR←ExportInterface((word) &string7, (word) XR←GetTypeIndexS((word) (&string8)), 16); (* (( (ptr) gf←c0115)+46)/* var←c13336 */ ) = var←c13304; (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+80)/* var←c11992 */ , 67635202); (void) XR←ExportType((word) "PoolObj", (word) XR←GetTypeIndexS((word) (&string12)), (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2) ); (void) XR←ExportVar(var←c13304, 10, (word) (( (bPt) gf←c0115)+20)/* pool16←v3448 */ ); (void) XR←ExportVar(var←c13304, 11, (word) (( (bPt) gf←c0115)+24)/* pool100←v3476 */ ); (void) XR←ExportVar(var←c13304, 12, (word) (( (bPt) gf←c0115)+28)/* pool512←v3504 */ ); (void) XR←ExportVar(var←c13304, 13, (word) (( (bPt) gf←c0115)+32)/* pool8192←v3532 */ ); (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+96)/* var←c12056 */ , 67374593); (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+88)/* var←c12024 */ , 528130); var←c13304 = (word) XR←ExportInterface((word) "RopeHash", (word) XR←GetTypeIndexS((word) (&string13)), 2); (* (( (ptr) gf←c0115)+46)/* var←c13336 */ ) = var←c13304; (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+72)/* var←c11960 */ , 67633154); (void) XR←ExportProcS(var←c13304, (word) (( (bPt) gf←c0115)+64)/* var←c11928 */ , 68419845); } static void RopeOtherImpl←P0(formal←c029, formal←c028) word formal←c029; word formal←c028; { /* RopeOtherImpl: */ SOURCE(307, 7925) SOURCE(8226, 6) (void) Init←P780(); } static word ReserveChars←P60(to←v3840, nChars←v3868) word to←v3840; word nChars←v3868; { register ptr gf←c13368 = (ptr) &globalframe; word var←c3924; word newMinLength←v5676; /* ReserveChars: */ SOURCE(711, 635) SOURCE(794, 48) newMinLength←v5676 = ((* (hPt) to←v3840 ) + nChars←v3868); SOURCE(876, 48) if (( (int)newMinLength←v5676 <= (int)(* (( (hPt) to←v3840)+1) ))) { SOURCE(913, 11) return(to←v3840); }; SOURCE(926, 91) if (( (int)newMinLength←v5676 > (int)32767)) { goto then014;}; if (((* (hPt) to←v3840 ) > (* (( (hPt) to←v3840)+1) ))) { then014: ; SOURCE(992, 25) (void) XR←RaiseBoundsFault(); }; SOURCE(1019, 329) { word expandBy←v5720; word newLength←v5748; word newText←v5776; SOURCE(1021, 51) { word x15; word x16; expandBy←v5720 = (x15 = (* (( (hPt) to←v3840)+1) ), x16 = MAX( (unsigned) , 16, x15), MAX( (unsigned) , x16, nChars←v3868)); }; SOURCE(1074, 111) { word tc17; if ((expandBy←v5720 > (32767 - (* (( (hPt) to←v3840)+1) )))) { tc17 = (word) 32767; } else { tc17 = (word) (expandBy←v5720 + (* (( (hPt) to←v3840)+1) )); }; newLength←v5748 = tc17; }; SOURCE(1187, 53) { word var←c12344; word var←c12376; var←c12344 = ((word) ((word) (newLength←v5748 + 3) >> 2) << 2); { word pd18; pd18 = (* (ptr) (* (( (ptr) gf←c13368)+4)/* untracedZone←v3420 */ ) ); var←c12376 = (word) ( *( (fPt) ((* (ptr) pd18 ))))((* (( (ptr) gf←c13368)+4)/* untracedZone←v3420 */ ), (4 + var←c12344), (* ( ( (ptr) gf←c13368)+12) ), pd18); }; (* (( (hPt) var←c12376)+1) ) = newLength←v5748; newText←v5776 = var←c12376; }; SOURCE(1242, 58) { register word i←v5832 = 0; register word noName←c12408; noName←c12408 = (* (hPt) to←v3840 ); if ((i←v5832 >= noName←c12408)) { goto lab←L100000; }; lab←L100003: ; SOURCE(1274, 26) { word limit19; word limit20; (* ((( (bPt) newText←v5776)+4)+( limit19 = (word) (* (( (hPt) newText←v5776)+1) ), BCK(i←v5832, limit19) )) ) = (word) (* ((( (bPt) to←v3840)+4)+( limit20 = (word) (* (( (hPt) to←v3840)+1) ), BCK(i←v5832, limit20) )) ); }; i←v5832 = (i←v5832 + 1); if ((i←v5832 < noName←c12408)) { goto lab←L100003; }; lab←L100000: ; }; SOURCE(1302, 26) (* (hPt) newText←v5776 ) = (* (hPt) to←v3840 ); SOURCE(1330, 16) return(newText←v5776); }; } static word Append←P120(to←v3996, from←v4024, start←v4052, len←v4080) word to←v3996; word from←v4024; word start←v4052; word len←v4080; { word var←c4148; /* Append: */ SOURCE(1354, 176) SOURCE(1479, 51) return((word) AppendRope←P240(to←v3996, from←v4024, start←v4052, len←v4080)); } static word AppendChar←P180(to←v4220, from←v4248) word to←v4220; word from←v4248; { word var←c4304; /* AppendChar: */ SOURCE(1536, 231) SOURCE(1610, 92) if (((* (hPt) to←v4220 ) >= (* (( (hPt) to←v4220)+1) ))) { SOURCE(1678, 24) to←v4220 = (word) ReserveChars←P60(to←v4220, 1); }; SOURCE(1707, 20) { word idx21; word limit22; (* ((( (bPt) to←v4220)+4)+( idx21 = (word) (* (hPt) to←v4220 ), limit22 = (word) (* (( (hPt) to←v4220)+1) ), BCK(idx21, limit22) )) ) = from←v4248; }; SOURCE(1729, 25) { word idx23; (* (hPt) to←v4220 ) = ( idx23 = (word) ((* (hPt) to←v4220 ) + 1), BCK(idx23, 32768) ); }; SOURCE(1756, 11) return(to←v4220); } static word AppendRope←P240(to←v4376, from←v4404, start←v4432, len←v4460) word to←v4376; word from←v4404; word start←v4432; word len←v4460; { register ptr gf←c13400 = (ptr) &globalframe; word var←c4516; word rem←v5876; /* AppendRope: */ SOURCE(1773, 328) SOURCE(1875, 34) { word pd24; pd24 = (* (( (ptr) (* (( (ptr) gf←c13400)+42)/* var←c12472 */ ))+15) ); rem←v5876 = ((word) ( *( (fPt) ((* (ptr) pd24 ))))(from←v4404, pd24) - start←v4432); }; SOURCE(1911, 54) if (( (int)start←v4432 < (int)0) || ( (int)rem←v5876 < (int)0)) { SOURCE(1940, 25) (void) XR←RaiseBoundsFault(); }; SOURCE(1967, 27) if (( (int)len←v4460 < (int)rem←v5876)) { SOURCE(1985, 9) rem←v5876 = len←v4460; }; SOURCE(1996, 89) if (( (int)rem←v5876 > (int)0)) { SOURCE(2014, 26) to←v4376 = (word) ReserveChars←P60(to←v4376, BCK(rem←v5876, 32768)); SOURCE(2042, 43) { word var←c12504; word pd25; pd25 = (* (( (ptr) (* (( (ptr) gf←c13400)+42)/* var←c12472 */ ))+40) ); var←c12504 = (word) ( *( (fPt) ((* (ptr) pd25 ))))(to←v4376, from←v4404, start←v4432, rem←v5876, pd25); }; }; SOURCE(2090, 11) return(to←v4376); } static word New←P300(nChars←v4588) word nChars←v4588; { register ptr gf←c13432 = (ptr) &globalframe; word var←c4632; word text←v5920 = 0; word maxLength←v5948; /* New: */ SOURCE(2107, 273) SOURCE(2183, 67) maxLength←v5948 = ((word) ((word) (((word) nChars←v4588 << 3) + 31) >> 5) << 2); SOURCE(2252, 55) if ((maxLength←v5948 > 32767)) { SOURCE(2284, 23) maxLength←v5948 = 32767; }; SOURCE(2309, 40) { word var←c12536; word var←c12568; word var←c12600; var←c12536 = BCK(maxLength←v5948, 32768); var←c12568 = ((word) ((word) (var←c12536 + 3) >> 2) << 2); { word pd26; pd26 = (* (ptr) (* (( (ptr) gf←c13432)+4)/* untracedZone←v3420 */ ) ); var←c12600 = (word) ( *( (fPt) ((* (ptr) pd26 ))))((* (( (ptr) gf←c13432)+4)/* untracedZone←v3420 */ ), (4 + var←c12568), (* ( ( (ptr) gf←c13432)+12) ), pd26); }; (* (( (hPt) var←c12600)+1) ) = var←c12536; text←v5920 = var←c12600; }; SOURCE(2351, 15) (* (hPt) text←v5920 ) = 0; SOURCE(2368, 12) return(text←v5920); } static word ObtainScratch←P360(nChars←v4764) word nChars←v4764; { register ptr gf←c13464 = (ptr) &globalframe; word var←c4808; /* ObtainScratch: */ SOURCE(2439, 309) SOURCE(2524, 224) if ((nChars←v4764 > 512)) { SOURCE(2544, 95) if ((nChars←v4764 > 8192)) { SOURCE(2565, 26) return((word) New←P300(nChars←v4764)); } else { SOURCE(2591, 48) { word pd27; pd27 = (* (( (ptr) (* (( (ptr) gf←c13464)+43)/* var←c12696 */ ))+18) ); return((word) ( *( (fPt) ((* (ptr) pd27 ))))((* (ptr) ((* (( (ptr) (* (( (ptr) gf←c13464)+43)/* var←c12696 */ ))+17) )) ), pd27) ); }; }; } else { SOURCE(2639, 109) if ((nChars←v4764 > 100)) { SOURCE(2659, 47) { word pd28; pd28 = (* (( (ptr) (* (( (ptr) gf←c13464)+43)/* var←c12696 */ ))+18) ); return((word) ( *( (fPt) ((* (ptr) pd28 ))))((* (ptr) ((* (( (ptr) (* (( (ptr) gf←c13464)+43)/* var←c12696 */ ))+16) )) ), pd28) ); }; } else { SOURCE(2706, 42) { word pd29; pd29 = (* (( (ptr) (* (( (ptr) gf←c13464)+43)/* var←c12696 */ ))+18) ); return((word) ( *( (fPt) ((* (ptr) pd29 ))))((* (ptr) ((* (( (ptr) (* (( (ptr) gf←c13464)+43)/* var←c12696 */ ))+15) )) ), pd29) ); }; }; }; } static void ReleaseScratch←P420(t←v4880) word t←v4880; { register ptr gf←c13496 = (ptr) &globalframe; /* ReleaseScratch: */ SOURCE(2752, 240) SOURCE(2798, 194) { word var←c12792; var←c12792 = (* (( (hPt) t←v4880)+1) ); switch (var←c12792) { case 16: SOURCE(2828, 33) { word t←v11720; t←v11720 = t←v4880; { word pd30; pd30 = (* (( (ptr) (* (( (ptr) gf←c13496)+43)/* var←c12696 */ ))+19) ); (void) ( *( (fPt) ((* (ptr) pd30 ))))((* (ptr) (* (( (ptr) (* (( (ptr) gf←c13496)+43)/* var←c12696 */ ))+14) ) ), t←v11720, pd30) ; }; }; break; case 100: SOURCE(2870, 34) { word t←v11672; t←v11672 = t←v4880; { word pd31; pd31 = (* (( (ptr) (* (( (ptr) gf←c13496)+43)/* var←c12696 */ ))+19) ); (void) ( *( (fPt) ((* (ptr) pd31 ))))((* (ptr) (* (( (ptr) (* (( (ptr) gf←c13496)+43)/* var←c12696 */ ))+15) ) ), t←v11672, pd31) ; }; }; break; case 512: SOURCE(2913, 34) { word t←v11624; t←v11624 = t←v4880; { word pd32; pd32 = (* (( (ptr) (* (( (ptr) gf←c13496)+43)/* var←c12696 */ ))+19) ); (void) ( *( (fPt) ((* (ptr) pd32 ))))((* (ptr) (* (( (ptr) (* (( (ptr) gf←c13496)+43)/* var←c12696 */ ))+16) ) ), t←v11624, pd32) ; }; }; break; case 8192: SOURCE(2957, 35) { word t←v11576; t←v11576 = t←v4880; { word pd33; pd33 = (* (( (ptr) (* (( (ptr) gf←c13496)+43)/* var←c12696 */ ))+19) ); (void) ( *( (fPt) ((* (ptr) pd33 ))))((* (ptr) (* (( (ptr) (* (( (ptr) gf←c13496)+43)/* var←c12696 */ ))+17) ) ), t←v11576, pd33) ; }; }; break; }; }; } static word ObtainInternal←P480(pool←v4952) word pool←v4952; { register ptr gf←c13528 = (ptr) &globalframe; word var←c12856; word var←c12888; word thisText←v4996; /* ObtainInternal: */ SOURCE(3088, 333) (void) (XR←MonitorEntry(pool←v4952)); SOURCE(3088, 333) thisText←v4996 = 0; SOURCE(3168, 253) if (( (int)(* (( (ptr) pool←v4952)+5) ) == (int) (word) -1)) { SOURCE(3200, 53) { word var←c12824; { word idx34; var←c12824 = (word) New←P300(( idx34 = (* (( (ptr) pool←v4952)+4) ), BCK(idx34, 32768) )); }; (void) (XR←MonitorExit(pool←v4952)); return(var←c12824); }; } else { SOURCE(3255, 41) { word idx35; word limit36; thisText←v4996 = (* ((( (ptr) pool←v4952)+7)+( idx35 = (* (( (ptr) pool←v4952)+5) ), limit36 = (* (( (ptr) pool←v4952)+6) ), BCK(idx35, limit36) )) ); }; SOURCE(3298, 42) (* (( (ptr) pool←v4952)+5) ) = ((* (( (ptr) pool←v4952)+5) ) - 1); SOURCE(3342, 79) if (((* (hPt) thisText←v4996 ) != 0)) { SOURCE(3370, 51) var←c12856 = (word) (( (bPt) gf←c13528)+52)/* var←c11864 */ ; var←c12888 = 0; (void) (XR←MonitorExit(pool←v4952)); goto lab←L100004; }; }; SOURCE(3088, 333) (void) (XR←MonitorExit(pool←v4952)); return(thisText←v4996); /* c2c skipped dead code */ lab←L100004: ; SOURCE(3370, 51) { word var←c076; var←c076 = var←c12888; (void) XR←RaiseError(var←c12856, (word) &var←c076); }; } static void ReleaseInternal←P540(pool←v5068, t←v5096) word pool←v5068; word t←v5096; { /* ReleaseInternal: */ SOURCE(3430, 255) (void) (XR←MonitorEntry(pool←v5068)); SOURCE(3495, 22) if ((t←v5096 == 0)) { SOURCE(3511, 6) (void) (XR←MonitorExit(pool←v5068)); return; }; SOURCE(3519, 12) (* (hPt) t←v5096 ) = 0; SOURCE(3533, 152) if (( (int)(* (( (ptr) pool←v5068)+5) ) == (int)((* (( (ptr) pool←v5068)+6) ) - 1))) { SOURCE(3576, 28) (void) (XR←MonitorExit(pool←v5068)); return; } else { SOURCE(3606, 43) (* (( (ptr) pool←v5068)+5) ) = ((* (( (ptr) pool←v5068)+5) ) + 1); SOURCE(3651, 34) { word idx37; word limit38; (* ((( (ptr) pool←v5068)+7)+( idx37 = (* (( (ptr) pool←v5068)+5) ), limit38 = (* (( (ptr) pool←v5068)+6) ), BCK(idx37, limit38) )) ) = t←v5096; }; }; SOURCE(3430, 255) (void) (XR←MonitorExit(pool←v5068)); return; } static word CreatePool←P600(charsPerText←v5168, textsInPool←v5196) word charsPerText←v5168; word textsInPool←v5196; { register ptr gf←c13560 = (ptr) &globalframe; word pool←v5240; /* CreatePool: */ SOURCE(3694, 262) SOURCE(3694, 262) pool←v5240 = 0; SOURCE(3783, 32) { word var←c12920; word var←c12952; word var←c12984; var←c12920 = BCK(textsInPool←v5196, 67108863); var←c12952 = ((word) var←c12920 << 2); var←c12984 = XR←NewObject((28 + var←c12952), (* (( (ptr) gf←c13560)+9) )); (* (( (ptr) var←c12984)+6) ) = var←c12920; (* (( (ptr) var←c12984)+5) ) = (word) -1; pool←v5240 = var←c12984; }; SOURCE(3817, 32) (* (( (ptr) pool←v5240)+4) ) = SGNCK(charsPerText←v5168); SOURCE(3851, 36) (* (( (ptr) pool←v5240)+5) ) = (textsInPool←v5196 - 1); SOURCE(3889, 67) { register word i←v6004 = 0; register word noName←c13016; noName←c13016 = textsInPool←v5196; if ((i←v6004 >= noName←c13016)) { goto lab←L100006; }; lab←L100009: ; SOURCE(3923, 33) { word var←c13048; var←c13048 = (word) New←P300(BCK(charsPerText←v5168, 32768)); { word limit39; (* ((( (ptr) pool←v5240)+7)+( limit39 = (* (( (ptr) pool←v5240)+6) ), BCK(i←v6004, limit39) )) ) = var←c13048; }; }; i←v6004 = (i←v6004 + 1); if ((i←v6004 < noName←c13016)) { goto lab←L100009; }; lab←L100006: ; }; SOURCE(3694, 262) return(pool←v5240); } static word FromRefText←P660(text←v5336, seed←v5364) word text←v5336; word seed←v5364; { register ptr gf←c13592 = (ptr) &globalframe; word hash←v5408; word len←v6048; word nLeft←v6076; word nWhole←v6104; word p←v6132; /* FromRefText: */ SOURCE(6402, 625) SOURCE(6506, 28) len←v6048 = (* (hPt) text←v5336 ); SOURCE(6536, 37) nLeft←v6076 = (len←v6048 & 1); SOURCE(6575, 25) nWhole←v6104 = (len←v6048 - nLeft←v6076); SOURCE(6602, 57) p←v6132 = (text←v5336 + 4); SOURCE(6661, 11) hash←v5408 = seed←v5364; SOURCE(6674, 102) if ((nWhole←v6104 >= 2)) { SOURCE(6711, 65) { word pd40; pd40 = (* (( (ptr) (* (( (ptr) gf←c13592)+44)/* var←c13080 */ ))+4) ); hash←v5408 = (word) ( *( (fPt) ((* (ptr) pd40 ))))(BCK(hash←v5408, 65536), ((word) nWhole←v6104 >> 1), p←v6132, 0, pd40) ; }; }; SOURCE(6781, 246) if ((nLeft←v6076 != 0)) { SOURCE(6807, 222) { word leftovers←v6200 = 0; SOURCE(6847, 79) { register word j←v6244 = 0; if ((j←v6244 >= nLeft←v6076)) { goto lab←L100010; }; lab←L100013: ; SOURCE(6875, 51) { word var←c13112; { word pd41; pd41 = (* (( (ptr) (* (( (ptr) gf←c13592)+42)/* var←c12472 */ ))+9) ); var←c13112 = (word) ( *( (fPt) ((* (ptr) pd41 ))))(text←v5336, SGNCK((nWhole←v6104 + j←v6244)), pd41); }; (* (( (bPt) &leftovers←v6200)+(BCK(j←v6244, 2) + 2)) ) = var←c13112; }; j←v6244 = (j←v6244 + 1); if ((j←v6244 < nLeft←v6076)) { goto lab←L100013; }; lab←L100010: ; }; SOURCE(6937, 90) { word pd42; pd42 = (* (( (ptr) (* (( (ptr) gf←c13592)+44)/* var←c13080 */ ))+4) ); hash←v5408 = (word) ( *( (fPt) ((* (ptr) pd42 ))))(BCK(hash←v5408, 65536), 1, (word) &leftovers←v6200, 0, pd42); }; }; }; SOURCE(6402, 625) return(hash←v5408); } static word FromRope←P720(rope←v5468, case←v5496, start←v5524, len←v5552, seed←v5580) word rope←v5468; word case←v5496; word start←v5524; word len←v5552; word seed←v5580; { register ptr gf←c13624 = (ptr) &globalframe; word hash←v5624; word rem←v6288; /* FromRope: */ SOURCE(7049, 867) SOURCE(7171, 74) { word x←v11816; { word pd43; pd43 = (* (( (ptr) (* (( (ptr) gf←c13624)+42)/* var←c12472 */ ))+15) ); x←v11816 = ((word) ( *( (fPt) ((* (ptr) pd43 ))))(rope←v5468, pd43) - start←v5524); }; rem←v6288 = SGNCK(x←v11816); }; SOURCE(7247, 27) if (( (int)rem←v6288 < (int)len←v5552)) { SOURCE(7265, 9) len←v5552 = rem←v6288; }; SOURCE(7276, 124) if ( ( ( (0 != case←v5496) ? ( (int)start←v5524 == (int)0) : 0 ) ? ( (int)rem←v6288 == (int)len←v5552) : 0 ) ) { SOURCE(7317, 83) { word var←c13176; var←c13176 = rope←v5468; if ((var←c13176 == 0)) { goto lab←L100015; }; if (((*(( short *)var←c13176 + 1)<0) == 0)) { { word text←v6332; text←v6332 = var←c13176; SOURCE(7359, 41) return((word) FromRefText←P660(text←v6332, seed←v5580)); }; } else { lab←L100015: ; }; }; }; SOURCE(7411, 507) { word buf←v6376; word p←v6404; word bytes←v6432 = 0; SOURCE(7413, 38) buf←v6376 = (word) ObtainScratch←P360(256); SOURCE(7453, 61) p←v6404 = (buf←v6376 + 4); SOURCE(7532, 11) hash←v5624 = seed←v5580; SOURCE(7545, 326) lab←L100018: ; if (( (int)len←v5552 > (int)0)) { } else { goto lab←L100016; }; SOURCE(7562, 14) (* (hPt) buf←v6376 ) = 0; SOURCE(7578, 47) { word pd44; pd44 = (* (( (ptr) (* (( (ptr) gf←c13624)+42)/* var←c12472 */ ))+40) ); bytes←v6432 = (word) ( *( (fPt) ((* (ptr) pd44 ))))(buf←v6376, rope←v5468, start←v5524, len←v5552, pd44); }; SOURCE(7627, 162) if ((0 == case←v5496)) { SOURCE(7644, 145) { register word i←v6512 = 0; register word noName←c13240; noName←c13240 = bytes←v6432; if ((i←v6512 >= noName←c13240)) { goto lab←L100019; }; lab←L100022: ; { word c←v6556; SOURCE(7672, 38) { word pd45; pd45 = (* (( (ptr) (* (( (ptr) gf←c13624)+42)/* var←c12472 */ ))+9) ); c←v6556 = (word) ( *( (fPt) ((* (ptr) pd45 ))))(buf←v6376, i←v6512, pd45); }; SOURCE(7712, 77) if ( ( (c←v6556 <= 90) ? (c←v6556 >= 65) : 0 ) ) { SOURCE(7740, 49) { word c←v11768; c←v11768 = BCK((c←v6556 + 32), 256); (* ((( (bPt) buf←v6376)+4)+i←v6512) ) = c←v11768; }; }; }; i←v6512 = (i←v6512 + 1); if ((i←v6512 < noName←c13240)) { goto lab←L100022; }; lab←L100019: ; }; }; SOURCE(7800, 29) hash←v5624 = (word) FromRefText←P660(buf←v6376, hash←v5624); SOURCE(7831, 21) start←v5524 = (start←v5524 + bytes←v6432); SOURCE(7854, 17) len←v5552 = (len←v5552 - bytes←v6432); goto lab←L100018; lab←L100016: ; SOURCE(7882, 19) (void) ReleaseScratch←P420(buf←v6376); SOURCE(7903, 13) return(hash←v5624); }; } static void Init←P780() { register ptr gf←c13656 = (ptr) &globalframe; /* Init: */ SOURCE(8030, 190) SOURCE(8053, 45) SOURCE(8054, 44) { word pd46; pd46 = (* (( (ptr) (* (( (ptr) gf←c13656)+45)/* var←c13272 */ ))+6) ); (* (( (ptr) gf←c13656)+4)/* untracedZone←v3420 */ ) = (word) ( *( (fPt) ((* (ptr) pd46 ))))(pd46); }; SOURCE(8101, 27) (* (( (ptr) gf←c13656)+5)/* pool16←v3448 */ ) = (word) CreatePool←P600(16, 10); SOURCE(8130, 28) (* (( (ptr) gf←c13656)+6)/* pool100←v3476 */ ) = (word) CreatePool←P600(100, 4); SOURCE(8160, 28) (* (( (ptr) gf←c13656)+7)/* pool512←v3504 */ ) = (word) CreatePool←P600(512, 4); SOURCE(8190, 30) (* (( (ptr) gf←c13656)+8)/* pool8192←v3532 */ ) = (word) CreatePool←P600(8192, 4); } /* file: RopeOtherImpl, module: RopeOtherImpl, compiled at: December 9, 1992 4:41:21 pm PST */ extern void XR←install←RopeOtherImpl() { NoName←Q2100(); } extern void XR←run←RopeOtherImpl() { XR←Start(&globalframe); }