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