/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1994 by Xerox Corporation.  All rights reserved. */
/* time: April 11, 1994 1:52:47 pm PDT */
/* C2C version: January 12, 1994 (sun4) */
/* ref-counting: off */
/* file: RopeImpl, module: RopeImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2372217448,2569016102] RopeImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1;} W2;
typedef struct {W8 f; word r;} W9;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef struct {W8 f; W8 r;} W16;
typedef struct {W8 f; W2 r;} W10;
typedef W10 *W10Pt;
typedef struct {word f0, f1, f2;} W3;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {W8 f; W6 r;} W14;
typedef struct {W16 f; W16 r;} W32;
typedef struct {W32 f; W32 r;} W64;
typedef struct {W64 f; W32 r;} W96;
typedef struct {W16 f; W2 r;} W18;
typedef struct {W64 f; W18 r;} W82;
typedef struct {W64 f; W16 r;} W80;
typedef W80 *W80Pt;
typedef W2 *W2Pt;
#define SOURCE(p, l) /* source p, l */
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
#define INEG(x)  ( (word) ( - ((int) (word) (x)) ) )
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
#define MAX(cast, x, y)  ( ( cast x) > ( cast y) ? (x) : (y) )
#define IOP2(op, x, y)  ( (word) ((x) op (y)) )
#define MIN(cast, x, y)  ( ( cast x) < ( cast y) ? (x) : (y) )
#define IABS(i) ( ((int)(word)(i) > 0) ? (i) : (word)(-(int)(word)(i)) )
static void NoName←Q13464();
static void RopeImpl←P0();
static word NewText←P60();
static word Substr←P120();
static word Cat←P180();
static word Concat←P240();
static word AddChar←P3252();
static word Replace←P300();
static word AddChar←P3456();
static word Fetch←P420();
static word Map←P480();
static word Translate←P540();
static word each←P4476();
static word Lower←P600();
static word Upper←P660();
static word Flatten←P720();
static word MakeRope←P780();
static word FromProc←P840();
static word FromChars←P900();
static void genRopesFromChars←P4728();
static void putChar←P4788();
static word FromRopes←P960();
static void putRope←P4848();
static word FromChar←P1020();
static word MakeConstantRope←P1080();
static word ConstFetch←P1140();
static word ConstMap←P1200();
static word ConstMove←P1260();
static word FromRefText←P1320();
static word ToRefText←P1380();
static void DoMoveChars←P1440();
static word action←P5436();
static word AppendChars←P1500();
static word UnsafeMoveChars←P1560();
static word Equal←P1620();
static word Compare←P1680();
static word CompareSubstrs←P1740();
static word EqualSubstrs←P1800();
static void ContainingPiece←P1860();
static word IsEmpty←P1920();
static word Length←P1980();
static word InlineSize←P2040();
static word Size←P2100();
static word Run←P2220();
static word IsPrefix←P2280();
static word Index←P2340();
static word Cmp←P6648();
static word LCmp←P6756();
static word Find←P2400();
static word FindBackward←P2460();
static word Match←P2520();
static word submatch←P7056();
static word SkipTo←P2580();
static word CharMatch←P7356();
static word SkipOver←P2640();
static word CharMatch←P7512();
static void VerifyStructure←P2700();
static void InitMinSizeForHeight←P2760();
static word PartIsBalanced←P2820();
static word Balance←P2880();
static word NewBalance←P2940();
static void StoreA←P8004();
static void ASub←P8064();
static void SavePart←P8124();
static word BalanceRange←P8184();
static void MapParts←P3000();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\104\304\000\000"};
static struct {unsigned f; char r[24];} string2 = {1376277, "\007\000\001\002\007\020\001\002\000\007\036\002\004\003\002\004\014\016\015\003\001\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\215e*h\300\231 \023&B<\000\000"};
static struct {unsigned f; char r[44];} string4 = {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[8];} string5 = {393224, "\205\210\242\000\037\242\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\215\145\052\150\300\231\040\023\046\105\000\000\000"};
static struct {unsigned f; char r[12];} string7 = {720907, "\006\002\004\010\000\010(\001AD\001"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\215\145\052\150\300\231\040\023\046\100\164\000\000"};
static struct {unsigned f; char r[24];} string9 = {1441814, "\006\007\020\001\024\001\030\001\034\001\040\001\044\010\000\004\101\000\001\104\044\001\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\332\223\177\020\300\304\076\102\260\100\164\000\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\277\374\326\303\300\302\136\022\175\100\150\000\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {
   word f0[284]; word f284; word f285; word f286; 
   word f287; word f288; word f289; word f290; 
   word f291; word f292; word f293; word f294; 
   word f295; word f296; word f297; word f298; 
   word f299; word f300; word f301; word f302; 
   word f303; word f304; word f305; word f306; 
   word f307; word f308; word f309; word f310; 
   word f311; word f312; word f313; word f314; 
   word f315; word f316; word f317; word f318; 
   word f319; word f320; word f321; word f322; 
   word f323; word f324; word f325; word f326; 
   word f327; word f328; word f329; word f330; 
   word f331; word f332; word f333; word f334; 
   word f335; word f336; word f337; word f338; 
   word f339; word f340; word f341; word f342; 
   word f343; word f344; word f345; word f346; 
   word f347; word f348; word f349; word f350; 
   word f351; word f352; word f353; word f354; 
   word f355; word f356; word f357; word f358; 
   word f359; word f360; word f361; word f362; 
   word f363; word f364; word f365; word f366; 
   word f367; word f368; word f369; word f370; 
   word f371; word f372; word f373; word f374; 
   word f375; word f376; word f377; word f378; 
   word f379; word f380; word f381[4]; 
   } globalframe = {
   {0}, (word) MapParts←P3000, 0, (word) NewBalance←P2940, 
   0, (word) Balance←P2880, 0, (word) PartIsBalanced←P2820, 
   0, (word) InitMinSizeForHeight←P2760, 0, (word) VerifyStructure←P2700, 
   0, (word) SkipOver←P2640, 0, (word) SkipTo←P2580, 
   0, (word) Match←P2520, 0, (word) FindBackward←P2460, 
   0, (word) Find←P2400, 0, (word) Index←P2340, 
   0, (word) IsPrefix←P2280, 0, (word) Run←P2220, 
   0, (word) Size←P2100, 0, (word) InlineSize←P2040, 
   0, (word) Length←P1980, 0, (word) IsEmpty←P1920, 
   0, (word) ContainingPiece←P1860, 0, (word) EqualSubstrs←P1800, 
   0, (word) CompareSubstrs←P1740, 0, (word) Compare←P1680, 
   0, (word) Equal←P1620, 0, (word) UnsafeMoveChars←P1560, 
   0, (word) AppendChars←P1500, 0, (word) DoMoveChars←P1440, 
   0, (word) ToRefText←P1380, 0, (word) FromRefText←P1320, 
   0, (word) ConstMove←P1260, 0, (word) ConstMap←P1200, 
   0, (word) ConstFetch←P1140, 0, (word) MakeConstantRope←P1080, 
   0, (word) FromChar←P1020, 0, (word) FromRopes←P960, 
   0, (word) FromChars←P900, 0, (word) FromProc←P840, 
   0, (word) MakeRope←P780, 0, (word) Flatten←P720, 
   0, (word) Upper←P660, 0, (word) Lower←P600, 
   0, (word) Translate←P540, 0, (word) Map←P480, 
   0, (word) Fetch←P420, 0, (word) Replace←P300, 
   0, (word) Concat←P240, 0, (word) Cat←P180, 
   0, (word) Substr←P120, 0, (word) NewText←P60, 
   0, (word) RopeImpl←P0, {0}
   };

static void NoName←Q13464()
   {
   register ptr gf←c0830 =  (ptr) &globalframe;
   word var←c49112;
   (* (( (ptr) gf←c0830)+266) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0830)+276) ) = (word) XR←GetTypeIndexS((word) (&string3));
   (* (( (ptr) gf←c0830)+277) ) = (word) XR←GetTypeIndexS((word) (&string4));
   (* (( (ptr) gf←c0830)+278) ) = (word) XR←GetTypeIndexS((word) (&string5));
   (* (( (ptr) gf←c0830)+279) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7);
   (void) XR←DeclareGlobalFrame((word) "RopeImpl", &globalframe, (word) XR←GetTypeIndex((word) &string8, 0, (word) &string9)
      , (word) (( (bPt) gf←c0830)+1520)/* var←c40696 */ );
   var←c49112 = (word) XR←ImportInterface((word) "RefText", (word) XR←GetTypeIndexS((word) (&string10)), 26);
   (* (( (ptr) gf←c0830)+383)/* var←c43800 */  ) = var←c49112;
   (void) XR←ImportProcS(var←c49112, 262913);
   (void) XR←ImportProcS(var←c49112, 67371521);
   var←c49112 = (word) XR←ImportInterface((word) "SafeStorage", (word) XR←GetTypeIndexS((word) (&string11)), 27);
   (* (( (ptr) gf←c0830)+382)/* var←c40760 */  ) = var←c49112;
   (void) XR←ImportProcS(var←c49112, 67109376);
   var←c49112 = (word) XR←ExportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string12)), 43);
   (* (( (ptr) gf←c0830)+384)/* var←c49144 */  ) = var←c49112;
   (void) XR←ExportVar(var←c49112, 0, (word) (( (bPt) gf←c0830)+1124));
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1496)/* var←c40600 */ , 68419845, (word) "Cat");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1488)/* var←c40568 */ , 67633666, (word) "Concat");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1304)/* var←c39832 */ , 67896067, (word) "Compare");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1312)/* var←c39864 */ , 67896323, (word) "Equal");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1472)/* var←c40504 */ , 67634434, (word) "Fetch");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1224)/* var←c39512 */ , 68158980, (word) "Index");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1216)/* var←c39480 */ , 68159236, (word) "Find");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1208)/* var←c39448 */ , 68159492, (word) "FindBackward");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1272)/* var←c39704 */ , 67373313, (word) "IsEmpty");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1264)/* var←c39672 */ , 67373569, (word) "Length");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1248)/* var←c39608 */ , 67373825, (word) "Size");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1480)/* var←c40536 */ , 68160516, (word) "Replace");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1504)/* var←c40632 */ , 67898627, (word) "Substr");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1296)/* var←c39800 */ , 68947463, (word) "CompareSubstrs");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1288)/* var←c39768 */ , 68947719, (word) "EqualSubstrs");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1240)/* var←c39576 */ , 68686086, (word) "Run");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1232)/* var←c39544 */ , 67899907, (word) "IsPrefix");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1200)/* var←c39416 */ , 67900163, (word) "Match");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1192)/* var←c39384 */ , 67900419, (word) "SkipTo");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1184)/* var←c39352 */ , 67900675, (word) "SkipOver");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1464)/* var←c40472 */ , 68163076, (word) "Map");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1456)/* var←c40440 */ , 68163332, (word) "Translate");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1448)/* var←c40408 */ , 67377153, (word) "Lower");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1440)/* var←c40376 */ , 67377409, (word) "Upper");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1432)/* var←c40344 */ , 67901955, (word) "Flatten");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1416)/* var←c40280 */ , 67902211, (word) "FromProc");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1408)/* var←c40248 */ , 67378177, (word) "FromChars");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1400)/* var←c40216 */ , 67378433, (word) "FromRopes");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1512)/* var←c40664 */ , 67378689, (word) "NewText");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1352)/* var←c40024 */ , 67903235, (word) "FromRefText");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1344)/* var←c39992 */ , 67379201, (word) "ToRefText");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1392)/* var←c40184 */ , 67379457, (word) "FromChar");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1424)/* var←c40312 */ , 68428293, (word) "MakeRope");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1384)/* var←c40152 */ , 67642114, (word) "MakeConstantRope");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1328)/* var←c39928 */ , 68166660, (word) "AppendChars");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1320)/* var←c39896 */ , 68429059, (word) "UnsafeMoveChars");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1280)/* var←c39736 */ , 201860610, (word) "ContainingPiece");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1152)/* var←c39224 */ , 68167428, (word) "Balance");
   (void) XR←ExportProcS(var←c49112, (word) (( (bPt) gf←c0830)+1176)/* var←c39320 */ , 201598977, (word) "VerifyStructure");
   (void) XR←ExportVar(var←c49112, 41, (word) (( (bPt) gf←c0830)+1128));
   }

static void RopeImpl←P0(formal←c065, formal←c063)
   word formal←c065;
   word formal←c063;
   {
   register ptr gf←c49176 =  (ptr) &globalframe;
   /* RopeImpl: */ 
SOURCE(68, 33760)
SOURCE(376, 33)
   {
      word var←c40728;
      var←c40728 = XR←NewObject(4, (* (( (ptr) gf←c49176)+266) ));
      (*  (ptr) var←c40728 ) &= 4294934528;
      (* (( (ptr) gf←c49176)+4)/* emptyRope←v2804 */  ) = var←c40728;
      };
SOURCE(33782, 46)
SOURCE(33783, 44)
   {
      word pd13;
      pd13 = (* (( (ptr) (* (( (ptr) gf←c49176)+382)/* var←c40760 */  ))+6) );
      (* (( (ptr) gf←c49176)+8)/* untracedZone←v2916 */  ) = (word) ( *( (fPt) ((*  (ptr) pd13 ))))(pd13);
      };
   }

static word NewText←P60(size←v4752)
   word size←v4752;
   {
   register ptr gf←c49208 =  (ptr) &globalframe;
   word text←v4796;
   /* NewText: */ 
SOURCE(546, 159)
SOURCE(546, 159)
   text←v4796 = 0;
SOURCE(610, 35)
   if ((size←v4752 == 0)) {
SOURCE(627, 18)
      return((* (( (ptr) gf←c49208)+4)/* emptyRope←v2804 */  ));
      };
SOURCE(647, 38)
   {
      word var←c40792;
      word var←c40824;
      var←c40792 = ((word) ((word) (size←v4752 + 3) >> 2) << 2);
      {
         word pd14;
         pd14 = (*  (ptr) (* (( (ptr) gf←c49208)+8)/* untracedZone←v2916 */  ) );
         var←c40824 = (word) ( *( (fPt) ((*  (ptr) pd14 ))))((* (( (ptr) gf←c49208)+8)/* untracedZone←v2916 */  ), (4 + var←c40792), (* (
               ( (ptr) gf←c49208)+266) ), pd14);
         };
      {
         word tadr15;
         tadr15 = (word) var←c40824;
         (*  (ptr) tadr15 ) = ((*  (ptr) tadr15 ) & 4294934528) | ((word) ( (((unsigned)size←v4752 << 17) >> 17) ));
         };
      text←v4796 = var←c40824;
      };
SOURCE(687, 18)
   {
      word tadr16;
      tadr16 = (word) text←v4796;
      (*  (ptr) tadr16 ) = ((*  (ptr) tadr16 ) & 2147549183) | (((word) ( (((unsigned)size←v4752 << 17) >> 17) )) << 16);
      };
SOURCE(546, 159)
   return(text←v4796);
   }

static word Substr←P120(base←v4856, start←v4884, len←v4912)
   word base←v4856;
   word start←v4884;
   word len←v4912;
   {
   register ptr gf←c49240 =  (ptr) &globalframe;
   word new←v4956;
   word size←v13060;
   word rem←v13088;
   word depth←v13116 = 1;
   /* Substr: */ 
SOURCE(711, 1317)
SOURCE(711, 1317)
   new←v4956 = 0;
SOURCE(811, 28)
   size←v13060 = (word) InlineSize←P2040(base←v4856);
SOURCE(841, 39)
   {
      word x←v39080;
      x←v39080 = (size←v13060 - start←v4884);
      rem←v13088 = SGNCK(x←v39080);
      };
SOURCE(902, 68)
   if (( (int)len←v4912 <=  (int)0)) {
SOURCE(919, 24)
      return((* (( (ptr) gf←c49240)+4)/* emptyRope←v2804 */  ));
      }
   else {
SOURCE(943, 27)
      if (( (int)len←v4912 >  (int)rem←v13088)) {
SOURCE(961, 9)
         len←v4912 = rem←v13088;
         };
      };
SOURCE(972, 45)
   if ( ( ( (int)start←v4884 ==  (int)0) ? ( (int)len←v4912 ==  (int)rem←v13088) : 0 ) ) {
SOURCE(1004, 13)
      return(base←v4856);
      };
SOURCE(1019, 57)
   if (( (int)len←v4912 <=  (int)24)) {
SOURCE(1042, 34)
      return((word) Flatten←P720(base←v4856, start←v4884, len←v4912));
      };
SOURCE(1078, 745)
   lab←L100003: ;
SOURCE(1082, 671)
   {
      word var←c40920;
      var←c40920 =  (unsigned) (*(( short *)base←v4856 + 1)<0);
      if ((var←c40920 == 0)) {
SOURCE(1115, 4)
         goto lab←L100002;
         }
      else {
         if ((var←c40920 == 1)) {
SOURCE(1129, 599)
            {
               word var←c40952;
               var←c40952 =  (unsigned) ((* (( (bPt) base←v4856)+3) ) & 3);
               switch (var←c40952) {
                  case 0: 
SOURCE(1163, 23)
                     start←v4884 = (start←v4884 + (* (( (ptr) base←v4856)+3) ));
SOURCE(1188, 13)
                     base←v4856 = (* (( (ptr) base←v4856)+2) );
                     break;
                  case 1: 
SOURCE(1216, 139)
                     {
                        word rem←v13160;
SOURCE(1218, 24)
                        rem←v13160 = ((* (( (ptr) base←v4856)+4) ) - start←v4884);
SOURCE(1244, 108)
                        if (( (int)rem←v13160 >  (int)0)) {
SOURCE(1261, 34)
                           if (( (int)len←v4912 >  (int)rem←v13160)) {
SOURCE(1280, 15)
/*1*/   depth←v13116 =  (unsigned) (((unsigned)(* (( (hPt) base←v4856)+1) ) << 17) >> 19);
SOURCE(1297, 4)
/*1*/   goto lab←L100002;
/*1*/   };
SOURCE(1304, 13)
                           base←v4856 = (* (( (ptr) base←v4856)+2) );
                           }
                        else {
SOURCE(1325, 12)
                           start←v4884 = INEG(rem←v13160);
SOURCE(1339, 13)
                           base←v4856 = (* (( (ptr) base←v4856)+3) );
                           };
                        };
                     break;
                  case 2: 
SOURCE(1369, 317)
                     {
                        word len1←v13204;
SOURCE(1371, 27)
                        len1←v13204 = ((* (( (ptr) base←v4856)+4) ) - start←v4884);
SOURCE(1400, 278)
                        if (( (int)len1←v13204 >  (int)0)) {
SOURCE(1419, 35)
                           if (( (int)len←v4912 >  (int)len1←v13204)) {
SOURCE(1439, 15)
/*1*/   depth←v13116 =  (unsigned) (((unsigned)(* (( (hPt) base←v4856)+1) ) << 17) >> 19);
SOURCE(1456, 4)
/*1*/   goto lab←L100002;
/*1*/   };
SOURCE(1463, 13)
                           base←v4856 = (* (( (ptr) base←v4856)+2) );
                           }
                        else {
SOURCE(1485, 198)
                           {
/*1*/   word xnew←v13248;
/*1*/   word len2←v13276;
SOURCE(1487, 20)
/*1*/   xnew←v13248 = (* (( (ptr) base←v4856)+6) );
SOURCE(1509, 24)
/*1*/   len2←v13276 = (xnew←v13248 - start←v4884);
SOURCE(1535, 143)
/*1*/   if (( (int)len2←v13276 >  (int)0)) {
SOURCE(1554, 35)
/*1*/      if (( (int)len←v4912 >  (int)len2←v13276)) {
SOURCE(1574, 15)
/*1*/         depth←v13116 =  (unsigned) (((unsigned)(* (( (hPt) base←v4856)+1) ) << 17) >> 19);
SOURCE(1591, 4)
/*1*/         goto lab←L100002;
/*1*/         };
SOURCE(1598, 13)
/*1*/      start←v4884 = INEG(len1←v13204);
SOURCE(1613, 16)
/*1*/      base←v4856 = (* (( (ptr) base←v4856)+3) );
/*1*/      }
/*1*/   else {
SOURCE(1640, 23)
/*1*/      start←v4884 = ((* (( (ptr) base←v4856)+5) ) - len2←v13276);
SOURCE(1665, 13)
/*1*/      base←v4856 = (* (( (ptr) base←v4856)+2) );
/*1*/      };
/*1*/   };
                           };
                        };
                     break;
                  case 3: 
SOURCE(1699, 4)
                     goto lab←L100002;
                  default: 
SOURCE(1716, 12)
                     (void) XR←RaiseError((word) (( (bPt) gf←c49240)+1124), 0);
                     break;
                  };
               };
            }
         else {
SOURCE(1741, 12)
            (void) XR←RaiseError((word) (( (bPt) gf←c49240)+1124), 0);
            };
         };
      };
SOURCE(1755, 18)
   if (( (int)start←v4884 !=  (int)0)) {
SOURCE(1773, 4)
      goto lab←L100003;
      };
SOURCE(1779, 44)
   if (( (int)len←v4912 ==  (int)(word) InlineSize←P2040(base←v4856))) {
SOURCE(1810, 13)
      return(base←v4856);
      };
   goto lab←L100003;
   lab←L100002: ;
SOURCE(1872, 110)
   {
      word var←c40984;
      var←c40984 = XR←NewObject(16, (* (( (ptr) gf←c49240)+266) ));
      {
         word tadr17;
         tadr17 = (word) var←c40984;
         (*  (ptr) tadr17 ) = ((*  (ptr) tadr17 ) & 4294901763) | (((word) ( (((unsigned)(BCK((depth←v13116 + 1), 8192) + 8192) << 18) >> 18) ))
             << 2);
         };
      (* (( (ptr) var←c40984)+1) ) = len←v4912;
      (* (( (ptr) var←c40984)+2) ) = base←v4856;
      (* (( (ptr) var←c40984)+3) ) = start←v4884;
      new←v4956 = var←c40984;
      };
SOURCE(1984, 44)
   if (( (int)depth←v13116 >=  (int)32)) {
SOURCE(2010, 18)
      new←v4956 = (word) Balance←P2880(new←v4956, 0, 2147483647, 24);
      };
SOURCE(711, 1317)
   return(new←v4956);
   }

static word Cat←P180(r1←v5016, r2←v5044, r3←v5072, r4←v5100, r5←v5128)
   word r1←v5016;
   word r2←v5044;
   word r3←v5072;
   word r4←v5100;
   word r5←v5128;
   {
   word var←c5172;
   /* Cat: */ 
SOURCE(2034, 129)
SOURCE(2105, 58)
   {
      word var←c41048;
      word var←c41080;
      word var←c41112;
      var←c41048 = (word) Concat←P240(r1←v5016, r2←v5044);
      var←c41112 = (word) Concat←P240(r3←v5072, r4←v5100);
      var←c41080 = (word) Concat←P240(var←c41112, r5←v5128);
      return((word) Concat←P240(var←c41048, var←c41080));
      };
   }

static word Concat←P240(base←v5232, rest←v5260)
   word base←v5232;
   word rest←v5260;
   {
   W8 var←c49272;
   register ptr gf←c49304 =  (ptr) &globalframe;
   word new←v5304;
   /* declaration of var←c41144 skipped */ 
   word baseStr←v13320 = 0;
   word restStr←v13348 = 0;
   word baseLen←v13376;
   word restLen←v13404;
   word size←v13432;
   word depth←v13460 = 1;
   /* Concat: */ 
SOURCE(2170, 1612)
   {
      word tmpAddr18;
      tmpAddr18 = (word) (( (ptr) &var←c49272)+4)/* var←c41144 */ ;
      (*  (ptr) tmpAddr18 ) = ( ((word)  (fPt) AddChar←P3252) );
      (* (( (ptr) tmpAddr18) + 1) ) = 1;
      };
SOURCE(2170, 1612)
   new←v5304 = 0;
SOURCE(2314, 32)
   if ((rest←v5260 == 0)) {
SOURCE(2333, 13)
      return(base←v5232);
      };
SOURCE(2348, 37)
   {
      W2 var←c41336;
      {
         word var←c41208;
         var←c41208 = base←v5232;
         if ((var←c41208 == 0)) {
            goto lab←L100004;
            };
         {
            word var←c41304;
            var←c41304 =  (unsigned) (*(( short *)var←c41208 + 1)<0);
            if ((var←c41304 == 0)) {
               {
                  word text←v29144;
                  text←v29144 = var←c41208;
                  (*  (ptr) (word) &var←c41336 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v29144 ) << 17) >> 17) );
                  (* (( (ptr) (word) &var←c41336) + 1) ) = text←v29144;
                  };
               }
            else {
               if ((var←c41304 == 1)) {
                  {
                     word node←v29176;
                     word var←c41272;
                     word base←v29516;
                     node←v29176 = var←c41208;
                     base←v29516 = node←v29176;
                     var←c41272 = (* (( (ptr) base←v29516)+1) );
                     (*  (ptr) (word) &var←c41336 ) = var←c41272;
                     (* (( (ptr) (word) &var←c41336) + 1) ) = 0;
                     };
                  }
               else {
                  lab←L100004: ;
                  (*  (ptr) (word) &var←c41336 ) = 0;
                  (* (( (ptr) (word) &var←c41336) + 1) ) = 0;
                  goto lab←L100005;
                  };
               };
            };
         };
      lab←L100005: ;
      baseStr←v13320 = var←c41336.f1;
      baseLen←v13376 = var←c41336.f0;
      };
SOURCE(2387, 33)
   if (( (int)baseLen←v13376 ==  (int)0)) {
SOURCE(2407, 13)
      return(rest←v5260);
      };
SOURCE(2422, 37)
   {
      W2 var←c41528;
      {
         word var←c41400;
         var←c41400 = rest←v5260;
         if ((var←c41400 == 0)) {
            goto lab←L100007;
            };
         {
            word var←c41496;
            var←c41496 =  (unsigned) (*(( short *)var←c41400 + 1)<0);
            if ((var←c41496 == 0)) {
               {
                  word text←v38228;
                  text←v38228 = var←c41400;
                  (*  (ptr) (word) &var←c41528 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v38228 ) << 17) >> 17) );
                  (* (( (ptr) (word) &var←c41528) + 1) ) = text←v38228;
                  };
               }
            else {
               if ((var←c41496 == 1)) {
                  {
                     word node←v38272;
                     word var←c41464;
                     word base←v38316;
                     node←v38272 = var←c41400;
                     base←v38316 = node←v38272;
                     var←c41464 = (* (( (ptr) base←v38316)+1) );
                     (*  (ptr) (word) &var←c41528 ) = var←c41464;
                     (* (( (ptr) (word) &var←c41528) + 1) ) = 0;
                     };
                  }
               else {
                  lab←L100007: ;
                  (*  (ptr) (word) &var←c41528 ) = 0;
                  (* (( (ptr) (word) &var←c41528) + 1) ) = 0;
                  goto lab←L100008;
                  };
               };
            };
         };
      lab←L100008: ;
      restStr←v13348 = var←c41528.f1;
      restLen←v13404 = var←c41528.f0;
      };
SOURCE(2461, 33)
   if (( (int)restLen←v13404 ==  (int)0)) {
SOURCE(2481, 13)
      return(base←v5232);
      };
SOURCE(2496, 36)
   size←v13432 = (baseLen←v13376 + restLen←v13404);
SOURCE(2534, 556)
   if (( (int)size←v13432 <=  (int)24)) {
SOURCE(2558, 534)
      {
         /* declaration of str←v13504 skipped */ 
         /* declaration of index←v13532 skipped */ 
SOURCE(2560, 33)
         var←c49272.f6/* str←v13504 */  = (word) NewText←P60(size←v13432);
SOURCE(2595, 19)
         var←c49272.f7/* index←v13532 */  = 0;
SOURCE(2728, 164)
         if ((baseStr←v13320 == 0)) {
SOURCE(2750, 41)
            {
               word var←c41560;
               var←c41560 = (word) Map←P480(base←v5232, 0, baseLen←v13376, (word) (( (bPt) &var←c49272)+16)/* var←c41144 */ );
               };
            }
         else {
SOURCE(2791, 101)
            {
               register word i←v13708 = 0;
               register word noName←c41592;
               noName←c41592 = baseLen←v13376;
               if ((i←v13708 >= noName←c41592)) {
                  goto lab←L100010;
                  };
               lab←L100013: ;
SOURCE(2835, 38)
               {
                  word c←v37292;
                  c←v37292 =  (unsigned) (word) (* ((( (bPt) baseStr←v13320)+4)+i←v13708) );
                  (* ((( (bPt) var←c49272.f6/* str←v13504 */ )+4)+var←c49272.f7/* index←v13532 */ ) ) = c←v37292;
                  };
SOURCE(2875, 17)
               var←c49272.f7/* index←v13532 */  = (var←c49272.f7/* index←v13532 */  + 1);
               i←v13708 = (i←v13708 + 1);
               if ((i←v13708 < noName←c41592)) {
                  goto lab←L100013;
                  };
               lab←L100010: ;
               };
            };
SOURCE(2903, 164)
         if ((restStr←v13348 == 0)) {
SOURCE(2925, 41)
            {
               word var←c41624;
               var←c41624 = (word) Map←P480(rest←v5260, 0, restLen←v13404, (word) (( (bPt) &var←c49272)+16)/* var←c41144 */ );
               };
            }
         else {
SOURCE(2966, 101)
            {
               register word i←v13752 = 0;
               register word noName←c41656;
               noName←c41656 = restLen←v13404;
               if ((i←v13752 >= noName←c41656)) {
                  goto lab←L100014;
                  };
               lab←L100017: ;
SOURCE(3010, 38)
               {
                  word c←v37244;
                  c←v37244 =  (unsigned) (word) (* ((( (bPt) restStr←v13348)+4)+i←v13752) );
                  (* ((( (bPt) var←c49272.f6/* str←v13504 */ )+4)+var←c49272.f7/* index←v13532 */ ) ) = c←v37244;
                  };
SOURCE(3050, 17)
               var←c49272.f7/* index←v13532 */  = (var←c49272.f7/* index←v13532 */  + 1);
               i←v13752 = (i←v13752 + 1);
               if ((i←v13752 < noName←c41656)) {
                  goto lab←L100017;
                  };
               lab←L100014: ;
               };
            };
SOURCE(3078, 12)
         return(var←c49272.f6/* str←v13504 */ );
         };
      };
   if (( (int)restLen←v13404 <  (int)24)) {
SOURCE(3135, 159)
      {
         word var←c41688;
         var←c41688 =  (unsigned) (*(( short *)base←v5232 + 1)<0);
         if ((var←c41688 == 1)) {
SOURCE(3168, 126)
            {
               word var←c41720;
               var←c41720 =  (unsigned) ((* (( (bPt) base←v5232)+3) ) & 3);
               if ((var←c41720 == 1)) {
SOURCE(3200, 94)
                  if (( (int)((* (( (ptr) base←v5232)+1) ) - (* (( (ptr) base←v5232)+4) )) <  (int)12)) {
SOURCE(3235, 15)
                     baseLen←v13376 = (* (( (ptr) base←v5232)+4) );
SOURCE(3252, 27)
                     rest←v5260 = (word) Concat←P240((* (( (ptr) base←v5232)+3) ), rest←v5260);
SOURCE(3281, 13)
                     base←v5232 = (* (( (ptr) base←v5232)+2) );
                     };
                  };
               };
            };
         };
      }
   else {
      if (( (int)baseLen←v13376 <  (int)24)) {
SOURCE(3343, 160)
         {
            word var←c41752;
            var←c41752 =  (unsigned) (*(( short *)base←v5232 + 1)<0);
            if ((var←c41752 == 1)) {
SOURCE(3376, 127)
               {
                  word var←c41784;
                  var←c41784 =  (unsigned) ((* (( (bPt) base←v5232)+3) ) & 3);
                  if ((var←c41784 == 1)) {
SOURCE(3408, 95)
                     if (( (int)(* (( (ptr) base←v5232)+4) ) <  (int)12)) {
SOURCE(3436, 13)
                        rest←v5260 = (* (( (ptr) base←v5232)+3) );
SOURCE(3451, 23)
                        baseLen←v13376 = ((* (( (ptr) base←v5232)+4) ) + baseLen←v13376);
SOURCE(3476, 27)
                        base←v5232 = (word) Concat←P240(base←v5232, (* (( (ptr) base←v5232)+2) ));
                        };
                     };
                  };
               };
            };
         };
      };
SOURCE(3536, 25)
   {
      word var←c41848;
      {
         word x←v39032;
         x←v39032 = (size←v13432 - baseLen←v13376);
         var←c41848 = SGNCK(x←v39032);
         };
      };
SOURCE(3563, 53)
   {
      word var←c41880;
      word var←c41944;
      if ((base←v5232 == 0)) {
         var←c41880 = 0;
         goto lab←L100019;
         };
      {
         word var←c41912;
         var←c41912 = base←v5232;
         if ((var←c41912 == 0)) {
            goto lab←L100020;
            };
         if (( (unsigned) (*(( short *)var←c41912 + 1)<0) == 1)) {
            {
               word node←v30928;
               node←v30928 = var←c41912;
               var←c41880 =  (unsigned) (((unsigned)(* (( (hPt) node←v30928)+1) ) << 17) >> 19);
               };
            }
         else {
            lab←L100020: ;
            var←c41880 = 1;
            goto lab←L100019;
            };
         };
      lab←L100019: ;
      if ((rest←v5260 == 0)) {
         var←c41944 = 0;
         goto lab←L100021;
         };
      {
         word var←c41976;
         var←c41976 = rest←v5260;
         if ((var←c41976 == 0)) {
            goto lab←L100022;
            };
         if (( (unsigned) (*(( short *)var←c41976 + 1)<0) == 1)) {
            {
               word node←v37060;
               node←v37060 = var←c41976;
               var←c41944 =  (unsigned) (((unsigned)(* (( (hPt) node←v37060)+1) ) << 17) >> 19);
               };
            }
         else {
            lab←L100022: ;
            var←c41944 = 1;
            goto lab←L100021;
            };
         };
      lab←L100021: ;
      depth←v13460 = ((MAX((int)(word), var←c41880, var←c41944)) + 1);
      };
SOURCE(3618, 119)
   {
      word var←c42008;
      var←c42008 = XR←NewObject(20, (* (( (ptr) gf←c49304)+266) ));
      (* (( (hPt) var←c42008)+1) ) = (((word) BCK(depth←v13460, 8192) << 2) + 32769);
      (* (( (ptr) var←c42008)+1) ) = size←v13432;
      (* (( (ptr) var←c42008)+2) ) = base←v5232;
      (* (( (ptr) var←c42008)+3) ) = rest←v5260;
      (* (( (ptr) var←c42008)+4) ) = baseLen←v13376;
      new←v5304 = var←c42008;
      };
SOURCE(3739, 43)
   if (( (int)depth←v13460 >  (int)32)) {
SOURCE(3764, 18)
      new←v5304 = (word) Balance←P2880(new←v5304, 0, 2147483647, 24);
      };
SOURCE(2170, 1612)
   return(new←v5304);
   }

static word AddChar←P3252(c←v13636, formal←c49336)
   word c←v13636;
   word formal←c49336;
   {
   word var←c13680;
   formal←c49336 = (formal←c49336 - 16);
   /* AddChar: */ 
SOURCE(2616, 15)
SOURCE(2667, 21)
   (* ((( (bPt) (* (( (ptr) formal←c49336)+6) ))+4)+(* (( (ptr) formal←c49336)+7) )) ) = c←v13636;
SOURCE(2690, 17)
   (* (( (ptr) formal←c49336)+7) ) = ((* (( (ptr) formal←c49336)+7) ) + 1);
SOURCE(2709, 14)
   return(0);
   }

static word Replace←P300(base←v5364, start←v5392, len←v5420, with←v5448)
   word base←v5364;
   word start←v5392;
   word len←v5420;
   word with←v5448;
   {
   W8 var←c49368;
   register ptr gf←c49400 =  (ptr) &globalframe;
   word new←v5492;
   /* declaration of var←c42040 skipped */ 
   word baseSize←v13796;
   word repSize←v13824;
   word rem←v13852;
   word depth←v13880 = 0;
   word oldPos←v13908;
   word newPos←v13936;
   word size←v13964;
   /* Replace: */ 
SOURCE(3788, 1733)
   {
      word tmpAddr19;
      tmpAddr19 = (word) (( (ptr) &var←c49368)+4)/* var←c42040 */ ;
      (*  (ptr) tmpAddr19 ) = ( ((word)  (fPt) AddChar←P3456) );
      (* (( (ptr) tmpAddr19) + 1) ) = 1;
      };
SOURCE(3788, 1733)
   new←v5492 = 0;
SOURCE(3907, 32)
   baseSize←v13796 = (word) InlineSize←P2040(base←v5364);
SOURCE(3941, 32)
   repSize←v13824 = (word) InlineSize←P2040(with←v5448);
SOURCE(3975, 43)
   {
      word x←v38984;
      x←v38984 = (baseSize←v13796 - start←v5392);
      rem←v13852 = SGNCK(x←v38984);
      };
SOURCE(4040, 89)
   {
      word var←c0874;
      {
         word tc20;
         if (( (int)len←v5420 <  (int)0)) {
            len←v5420 = 0;
            tc20 =  (word) 0;
            }
         else {
            if (( (int)len←v5420 >  (int)rem←v13852)) {
               len←v5420 = rem←v13852;
               tc20 =  (word) rem←v13852;
               }
            else {
               tc20 =  (word) len←v5420;
               };
            };
         var←c0874 = tc20;
         };
      oldPos←v13908 = (start←v5392 + var←c0874);
      };
SOURCE(4131, 41)
   newPos←v13936 = (start←v5392 + repSize←v13824);
SOURCE(4174, 47)
   {
      word x←v37340;
      x←v37340 = (baseSize←v13796 - len←v5420);
      size←v13964 = SGNCK((x←v37340 + repSize←v13824));
      };
SOURCE(4223, 36)
   if (( (int)size←v13964 ==  (int)repSize←v13824)) {
SOURCE(4246, 13)
      return(with←v5448);
      };
SOURCE(4261, 45)
   if ( ( ( (int)len←v5420 ==  (int)0) ? ( (int)repSize←v13824 ==  (int)0) : 0 ) ) {
SOURCE(4293, 13)
      return(base←v5364);
      };
SOURCE(4327, 386)
   if (( (int)size←v13964 <=  (int)24)) {
SOURCE(4351, 364)
      {
         /* declaration of str←v14008 skipped */ 
         /* declaration of index←v14036 skipped */ 
SOURCE(4353, 33)
         var←c49368.f6/* str←v14008 */  = (word) NewText←P60(size←v13964);
SOURCE(4388, 20)
         var←c49368.f7/* index←v14036 */  = 0;
SOURCE(4522, 51)
         if (( (int)start←v5392 >  (int)0)) {
SOURCE(4540, 33)
            {
               word var←c42136;
               var←c42136 = (word) Map←P480(base←v5364, 0, start←v5392, (word) (( (bPt) &var←c49368)+16)/* var←c42040 */ );
               };
            };
SOURCE(4575, 55)
         if (( (int)repSize←v13824 >  (int)0)) {
SOURCE(4595, 35)
            {
               word var←c42168;
               var←c42168 = (word) Map←P480(with←v5448, 0, repSize←v13824, (word) (( (bPt) &var←c49368)+16)/* var←c42040 */ );
               };
            };
SOURCE(4632, 67)
         if (( (int)oldPos←v13908 <  (int)baseSize←v13796)) {
SOURCE(4658, 41)
            {
               word var←c42200;
               var←c42200 = (word) Map←P480(base←v5364, oldPos←v13908, baseSize←v13796, (word) (( (bPt) &var←c49368)+16)/* var←c42040 */ )
               ;
               };
            };
SOURCE(4701, 12)
         return(var←c49368.f6/* str←v14008 */ );
         };
      };
SOURCE(4718, 391)
   {
      word var←c42232;
      var←c42232 =  (unsigned) (*(( short *)base←v5364 + 1)<0);
      if ((var←c42232 == 1)) {
SOURCE(4751, 358)
         {
            word var←c42264;
            var←c42264 =  (unsigned) ((* (( (bPt) base←v5364)+3) ) & 3);
            if ((var←c42264 == 2)) {
SOURCE(4784, 342)
               {
                  word xnewPos←v14212;
                  word xstart←v14240;
SOURCE(4786, 23)
                  xnewPos←v14212 = (* (( (ptr) base←v5364)+6) );
SOURCE(4811, 21)
                  xstart←v14240 = (* (( (ptr) base←v5364)+4) );
                  if ( ( ( (int)start←v5392 <=  (int)xstart←v14240) ? ( (int)oldPos←v13908 >=  (int)xnewPos←v14212) : 0 ) ) {
SOURCE(4894, 38)
                     oldPos←v13908 = ((* (( (ptr) base←v5364)+5) ) + (oldPos←v13908 - xnewPos←v14212));
SOURCE(4934, 13)
                     base←v5364 = (* (( (ptr) base←v5364)+2) );
                     }
                  else {
                     if (( (int)start←v5392 ==  (int)xnewPos←v14212)) {
SOURCE(4973, 136)
                        if (( (int)(repSize←v13824 + (xnewPos←v14212 - xstart←v14240)) <=  (int)24)) {
SOURCE(5023, 30)
                           with←v5448 = (word) Concat←P240((* (( (ptr) base←v5364)+3) ), with←v5448);
SOURCE(5055, 14)
                           start←v5392 = xstart←v14240;
SOURCE(5071, 23)
                           oldPos←v13908 = ((* (( (ptr) base←v5364)+5) ) + len←v5420);
SOURCE(5096, 13)
                           base←v5364 = (* (( (ptr) base←v5364)+2) );
                           };
                        };
                     };
                  };
               };
            };
         };
      };
SOURCE(5147, 43)
   {
      word var←c42328;
      {
         word x←v38936;
         x←v38936 = (newPos←v13936 - start←v5392);
         var←c42328 = SGNCK(x←v38936);
         };
      };
SOURCE(5192, 35)
   {
      word var←c42392;
      {
         word x←v38888;
         x←v38888 = (oldPos←v13908 - start←v5392);
         var←c42392 = SGNCK(x←v38888);
         };
      };
SOURCE(5229, 34)
   {
      word var←c42456;
      {
         word x←v38840;
         x←v38840 = (size←v13964 - newPos←v13936);
         var←c42456 = SGNCK(x←v38840);
         };
      };
SOURCE(5265, 53)
   {
      word var←c42488;
      word var←c42552;
      if ((base←v5364 == 0)) {
         var←c42488 = 0;
         goto lab←L100028;
         };
      {
         word var←c42520;
         var←c42520 = base←v5364;
         if ((var←c42520 == 0)) {
            goto lab←L100029;
            };
         if (( (unsigned) (*(( short *)var←c42520 + 1)<0) == 1)) {
            {
               word node←v37016;
               node←v37016 = var←c42520;
               var←c42488 =  (unsigned) (((unsigned)(* (( (hPt) node←v37016)+1) ) << 17) >> 19);
               };
            }
         else {
            lab←L100029: ;
            var←c42488 = 1;
            goto lab←L100028;
            };
         };
      lab←L100028: ;
      if ((with←v5448 == 0)) {
         var←c42552 = 0;
         goto lab←L100030;
         };
      {
         word var←c42584;
         var←c42584 = with←v5448;
         if ((var←c42584 == 0)) {
            goto lab←L100031;
            };
         if (( (unsigned) (*(( short *)var←c42584 + 1)<0) == 1)) {
            {
               word node←v36972;
               node←v36972 = var←c42584;
               var←c42552 =  (unsigned) (((unsigned)(* (( (hPt) node←v36972)+1) ) << 17) >> 19);
               };
            }
         else {
            lab←L100031: ;
            var←c42552 = 1;
            goto lab←L100030;
            };
         };
      lab←L100030: ;
      depth←v13880 = ((MAX((int)(word), var←c42488, var←c42552)) + 1);
      };
SOURCE(5320, 156)
   {
      word var←c42616;
      var←c42616 = XR←NewObject(28, (* (( (ptr) gf←c49400)+266) ));
      (* (( (hPt) var←c42616)+1) ) = (((word) BCK(depth←v13880, 8192) << 2) + 32770);
      (* (( (ptr) var←c42616)+1) ) = size←v13964;
      (* (( (ptr) var←c42616)+2) ) = base←v5364;
      (* (( (ptr) var←c42616)+3) ) = with←v5448;
      (* (( (ptr) var←c42616)+4) ) = start←v5392;
      (* (( (ptr) var←c42616)+5) ) = oldPos←v13908;
      (* (( (ptr) var←c42616)+6) ) = newPos←v13936;
      new←v5492 = var←c42616;
      };
SOURCE(5478, 43)
   if (( (int)depth←v13880 >  (int)32)) {
SOURCE(5503, 18)
      new←v5492 = (word) Balance←P2880(new←v5492, 0, 2147483647, 24);
      };
SOURCE(3788, 1733)
   return(new←v5492);
   }

static word AddChar←P3456(c←v14140, formal←c49432)
   word c←v14140;
   word formal←c49432;
   {
   word var←c14184;
   formal←c49432 = (formal←c49432 - 16);
   /* AddChar: */ 
SOURCE(4410, 15)
SOURCE(4461, 21)
   (* ((( (bPt) (* (( (ptr) formal←c49432)+6) ))+4)+(* (( (ptr) formal←c49432)+7) )) ) = c←v14140;
SOURCE(4484, 17)
   {
      word idx21;
      (* (( (ptr) formal←c49432)+7) ) = (
         idx21 = (word) ((* (( (ptr) formal←c49432)+7) ) + 1),
         BCK(idx21, 32768)
         );
      };
SOURCE(4503, 14)
   return(0);
   }

static word Fetch←P420(base←v5684, index←v5712)
   word base←v5684;
   word index←v5712;
   {
   register ptr gf←c49464 =  (ptr) &globalframe;
   word var←c5756;
   /* Fetch: */ 
SOURCE(5628, 823)
SOURCE(5703, 176)
   {
      word var←c42648;
      var←c42648 = base←v5684;
      if ((var←c42648 == 0)) {
         goto lab←L100032;
         };
      {
         word var←c42776;
         var←c42776 =  (unsigned) (*(( short *)var←c42648 + 1)<0);
         if ((var←c42776 == 0)) {
            {
               word text←v14284;
               text←v14284 = var←c42648;
SOURCE(5739, 20)
               {
                  word limit22;
                  return( (unsigned) (word) (* ((( (bPt) text←v14284)+4)+(
                        limit22 = (word)  (unsigned) ( (((unsigned)(* (( (hPt) text←v14284)+1) ) << 17) >> 17) ),
                        BCK(index←v5712, limit22)
                        )) ));
                  };
               };
            }
         else {
            if ((var←c42776 == 1)) {
               {
                  word node←v14328;
                  node←v14328 = var←c42648;
SOURCE(5789, 49)
                  {
                     word var←c42744;
                     {
                        word arg←v36808;
                        word limit←v36836;
                        arg←v36808 = index←v5712;
                        {
                           word var←c42712;
                           word base←v37388;
                           base←v37388 = node←v14328;
                           var←c42712 = (* (( (ptr) base←v37388)+1) );
                           limit←v36836 = SGNCK(var←c42712);
                           };
                        if ((arg←v36808 >= limit←v36836)) {
                           (void) XR←RaiseBoundsFault();
                           };
                        var←c42744 = BCK(arg←v36808, 2147483647);
                        };
                     };
                  };
               }
            else {
               lab←L100032: ;
SOURCE(5854, 25)
               (void) XR←RaiseBoundsFault();
               };
            };
         };
      };
SOURCE(5899, 552)
   lab←L100037: ;
SOURCE(5902, 549)
   {
      word var←c42808;
      var←c42808 = base←v5684;
      if ((var←c42808 == 0)) {
         goto lab←L100038;
         };
      {
         word var←c42968;
         var←c42968 =  (unsigned) (*(( short *)var←c42808 + 1)<0);
         if ((var←c42968 == 0)) {
            {
               word x←v14384;
               x←v14384 = var←c42808;
SOURCE(5943, 24)
               {
                  word var←c42872;
                  word base←v37168;
                  word index←v37196;
                  base←v37168 = x←v14384;
                  index←v37196 = BCK(index←v5712, 65536);
                  var←c42872 =  (unsigned) (word) (* ((( (bPt) base←v37168)+4)+index←v37196) );
                  return(var←c42872);
                  };
               };
            }
         else {
            if ((var←c42968 == 1)) {
               {
                  word x←v14440;
                  x←v14440 = var←c42808;
SOURCE(5993, 433)
                  {
                     word var←c42904;
                     var←c42904 =  (unsigned) ((* (( (bPt) x←v14440)+3) ) & 3);
                     switch (var←c42904) {
                        case 0: 
SOURCE(6026, 23)
                           index←v5712 = (index←v5712 + (* (( (ptr) x←v14440)+3) ));
SOURCE(6051, 13)
                           base←v5684 = (* (( (ptr) x←v14440)+2) );
                           break;
                        case 1: 
SOURCE(6080, 36)
                           if (( (int)index←v5712 <  (int)(* (( (ptr) x←v14440)+4) ))) {
SOURCE(6103, 13)
/*1*/   base←v5684 = (* (( (ptr) x←v14440)+2) );
SOURCE(6118, 4)
/*1*/   goto lab←L100037;
/*1*/   };
SOURCE(6125, 21)
                           index←v5712 = (index←v5712 - (* (( (ptr) x←v14440)+4) ));
SOURCE(6148, 13)
                           base←v5684 = (* (( (ptr) x←v14440)+3) );
                           break;
                        case 2: 
SOURCE(6179, 38)
                           if (( (int)index←v5712 <  (int)(* (( (ptr) x←v14440)+4) ))) {
SOURCE(6204, 13)
/*1*/   base←v5684 = (* (( (ptr) x←v14440)+2) );
SOURCE(6219, 4)
/*1*/   goto lab←L100037;
/*1*/   };
SOURCE(6226, 68)
                           if (( (int)index←v5712 <  (int)(* (( (ptr) x←v14440)+6) ))) {
SOURCE(6253, 23)
/*1*/   index←v5712 = (index←v5712 - (* (( (ptr) x←v14440)+4) ));
SOURCE(6278, 16)
/*1*/   base←v5684 = (* (( (ptr) x←v14440)+3) );
SOURCE(6296, 4)
/*1*/   goto lab←L100037;
/*1*/   };
SOURCE(6305, 35)
                           index←v5712 = ((index←v5712 - (* (( (ptr) x←v14440)+6) )) + (* (( (ptr) x←v14440)+5) ));
SOURCE(6342, 13)
                           base←v5684 = (* (( (ptr) x←v14440)+2) );
                           break;
                        case 3: 
SOURCE(6370, 31)
                           {
/*1*/   word pd23;
/*1*/   pd23 = (* (( (ptr) x←v14440)+3) );
/*1*/   return((word) ( *( (fPt) ((*  (ptr) pd23 ))))((* (( (ptr) x←v14440)+2) ), index←v5712, pd23));
/*1*/   };
                        default: 
SOURCE(6414, 12)
                           (void) XR←RaiseError((word) (( (bPt) gf←c49464)+1124), 0);
                           break;
                        };
                     };
                  };
               }
            else {
               lab←L100038: ;
SOURCE(6439, 12)
               (void) XR←RaiseError((word) (( (bPt) gf←c49464)+1124), 0);
               };
            };
         };
      };
   goto lab←L100037;
   }

static word Map←P480(base←v5816, start←v5844, len←v5872, action←v5900)
   word base←v5816;
   word start←v5844;
   word len←v5872;
   word action←v5900;
   {
   register ptr gf←c49496 =  (ptr) &globalframe;
   word var←c5944;
   word rem←v14496;
   /* Map: */ 
SOURCE(6466, 1611)
SOURCE(6579, 51)
   {
      word x←v38792;
      x←v38792 = ((word) InlineSize←P2040(base←v5816) - start←v5844);
      rem←v14496 = SGNCK(x←v38792);
      };
SOURCE(6632, 27)
   if (( (int)len←v5872 >  (int)rem←v14496)) {
SOURCE(6650, 9)
      len←v5872 = rem←v14496;
      };
SOURCE(6661, 1391)
   lab←L100043: ;
   if (( (int)len←v5872 >  (int)0)) {
      }
   else {
      goto lab←L100041;
      };
SOURCE(6678, 1374)
   {
      word var←c43032;
      var←c43032 =  (unsigned) (*(( short *)base←v5816 + 1)<0);
      if ((var←c43032 == 0)) {
SOURCE(6711, 146)
         {
            word st←v14540;
SOURCE(6713, 29)
            st←v14540 = start←v5844;
SOURCE(6744, 86)
            {
               register word i←v14584;
               register word noName←c43064;
               word var←c43096;
               i←v14584 = st←v14540;
               noName←c43064 = (st←v14540 + len←v5872);
               if ((i←v14584 >= noName←c43064)) {
                  goto lab←L100044;
                  };
               lab←L100047: ;
SOURCE(6788, 42)
               {
                  word var←c43128;
                  word base←v37120;
                  base←v37120 = (word) base←v5816;
                  var←c43128 =  (unsigned) (word) (* ((( (bPt) base←v37120)+4)+i←v14584) );
                  var←c43096 = var←c43128;
                  };
               if ((0 != (word) ( *( (fPt) ((*  (ptr) action←v5900 ))))(var←c43096, action←v5900))) {
SOURCE(6817, 13)
                  return(1);
                  };
               i←v14584 = (i←v14584 + 1);
               if ((i←v14584 < noName←c43064)) {
                  goto lab←L100047;
                  };
               lab←L100044: ;
               };
SOURCE(6841, 14)
            return(0);
            };
         }
      else {
         if ((var←c43032 == 1)) {
SOURCE(6868, 1159)
            {
               word var←c43160;
               var←c43160 =  (unsigned) ((* (( (bPt) base←v5816)+3) ) & 3);
               switch (var←c43160) {
                  case 0: 
SOURCE(6901, 23)
                     start←v5844 = (start←v5844 + (* (( (ptr) base←v5816)+3) ));
SOURCE(6926, 13)
                     base←v5816 = (* (( (ptr) base←v5816)+2) );
SOURCE(6941, 4)
                     goto lab←L100043;
                  case 1: 
SOURCE(6959, 252)
                     {
                        word xpos←v14628;
SOURCE(6961, 17)
                        xpos←v14628 = (* (( (ptr) base←v5816)+4) );
SOURCE(6980, 40)
                        if (( (int)(start←v5844 + len←v5872) <=  (int)xpos←v14628)) {
SOURCE(7007, 13)
                           base←v5816 = (* (( (ptr) base←v5816)+2) );
SOURCE(7022, 4)
                           goto lab←L100043;
                           };
SOURCE(7029, 140)
                        if (( (int)start←v5844 <  (int)xpos←v14628)) {
SOURCE(7051, 120)
                           {
/*1*/   word subLen←v14672;
SOURCE(7053, 24)
/*1*/   subLen←v14672 = (xpos←v14628 - start←v5844);
SOURCE(7079, 56)
/*1*/   if ((0 != (word) Map←P480((* (( (ptr) base←v5816)+2) ), start←v5844, subLen←v14672, action←v5900))) {
SOURCE(7122, 13)
/*1*/      return(1);
/*1*/      };
SOURCE(7137, 12)
/*1*/   start←v5844 = xpos←v14628;
SOURCE(7151, 18)
/*1*/   len←v5872 = (len←v5872 - subLen←v14672);
/*1*/   };
                           };
SOURCE(7174, 20)
                        start←v5844 = (start←v5844 - xpos←v14628);
SOURCE(7196, 13)
                        base←v5816 = (* (( (ptr) base←v5816)+3) );
                        };
                     break;
                  case 2: 
SOURCE(7225, 518)
                     {
                        word xstart←v14716;
                        word xnew←v14744;
SOURCE(7227, 21)
                        xstart←v14716 = (* (( (ptr) base←v5816)+4) );
SOURCE(7250, 20)
                        xnew←v14744 = (* (( (ptr) base←v5816)+6) );
SOURCE(7272, 190)
                        if (( (int)start←v5844 <  (int)xstart←v14716)) {
SOURCE(7295, 169)
                           {
/*1*/   word subLen←v14788;
SOURCE(7297, 26)
/*1*/   subLen←v14788 = (xstart←v14716 - start←v5844);
SOURCE(7325, 36)
/*1*/   if (( (int)subLen←v14788 >=  (int)len←v5872)) {
SOURCE(7348, 13)
/*1*/      base←v5816 = (* (( (ptr) base←v5816)+2) );
SOURCE(7363, 4)
/*1*/      goto lab←L100043;
/*1*/      };
SOURCE(7370, 56)
/*1*/   if ((0 != (word) Map←P480((* (( (ptr) base←v5816)+2) ), start←v5844, subLen←v14788, action←v5900))) {
SOURCE(7413, 13)
/*1*/      return(1);
/*1*/      };
SOURCE(7428, 14)
/*1*/   start←v5844 = xstart←v14716;
SOURCE(7444, 18)
/*1*/   len←v5872 = (len←v5872 - subLen←v14788);
/*1*/   };
                           };
SOURCE(7467, 225)
                        if (( (int)start←v5844 <  (int)xnew←v14744)) {
SOURCE(7488, 206)
                           {
/*1*/   word subLen←v14832;
/*1*/   word st←v14860;
SOURCE(7490, 24)
/*1*/   subLen←v14832 = (xnew←v14744 - start←v5844);
SOURCE(7516, 24)
/*1*/   st←v14860 = (start←v5844 - xstart←v14716);
SOURCE(7542, 51)
/*1*/   if (( (int)subLen←v14832 >=  (int)len←v5872)) {
SOURCE(7565, 10)
/*1*/      start←v5844 = st←v14860;
SOURCE(7577, 16)
/*1*/      base←v5816 = (* (( (ptr) base←v5816)+3) );
SOURCE(7595, 4)
/*1*/      goto lab←L100043;
/*1*/      };
SOURCE(7602, 56)
/*1*/   if ((0 != (word) Map←P480((* (( (ptr) base←v5816)+3) ), st←v14860, subLen←v14832, action←v5900))) {
SOURCE(7645, 13)
/*1*/      return(1);
/*1*/      };
SOURCE(7660, 12)
/*1*/   start←v5844 = xnew←v14744;
SOURCE(7674, 18)
/*1*/   len←v5872 = (len←v5872 - subLen←v14832);
/*1*/   };
                           };
SOURCE(7697, 31)
                        start←v5844 = ((start←v5844 - xnew←v14744) + (* (( (ptr) base←v5816)+5) ));
SOURCE(7730, 13)
                        base←v5816 = (* (( (ptr) base←v5816)+2) );
                        };
                     break;
                  case 3: 
SOURCE(7756, 245)
                     {
                        word map←v14904;
                        word data←v14932;
SOURCE(7758, 20)
                        map←v14904 = (* (( (ptr) base←v5816)+4) );
SOURCE(7780, 18)
                        data←v14932 = (* (( (ptr) base←v5816)+2) );
SOURCE(7800, 196)
                        if ((map←v14904 != 0)) {
SOURCE(7818, 43)
                           return((word) ( *( (fPt) ((*  (ptr) map←v14904 ))))(data←v14932, start←v5844, len←v5872, action←v5900, map←v14904));
                           }
                        else {
SOURCE(7861, 137)
                           {
/*1*/   word fetch←v14988;
SOURCE(7863, 26)
/*1*/   fetch←v14988 = (* (( (ptr) base←v5816)+3) );
SOURCE(7891, 80)
/*1*/   {
/*1*/      register word i←v15032;
/*1*/      register word noName←c43224;
/*1*/      word var←c43256;
/*1*/      i←v15032 = start←v5844;
/*1*/      noName←c43224 = (start←v5844 + len←v5872);
/*1*/      if (( (int)i←v15032 >=  (int)noName←c43224)) {
/*1*/         goto lab←L100049;
/*1*/         };
/*1*/      lab←L100052: ;
SOURCE(7927, 44)
/*1*/      var←c43256 = (word) ( *( (fPt) ((*  (ptr) fetch←v14988 ))))(data←v14932, i←v15032, fetch←v14988);
/*1*/      if ((0 != (word) ( *( (fPt) ((*  (ptr) action←v5900 ))))(var←c43256, action←v5900))) {
SOURCE(7958, 13)
/*1*/         return(1);
/*1*/         };
/*1*/      i←v15032 = (i←v15032 + 1);
/*1*/      if (( (int)i←v15032 <  (int)noName←c43224)) {
/*1*/         goto lab←L100052;
/*1*/         };
/*1*/      lab←L100049: ;
/*1*/      };
SOURCE(7982, 14)
/*1*/   return(0);
/*1*/   };
                           };
                        };
                  default: 
SOURCE(8015, 12)
                     (void) XR←RaiseError((word) (( (bPt) gf←c49496)+1124), 0);
                     break;
                  };
               };
            }
         else {
SOURCE(8040, 12)
            (void) XR←RaiseError((word) (( (bPt) gf←c49496)+1124), 0);
            };
         };
      };
   goto lab←L100043;
   lab←L100041: ;
SOURCE(8063, 14)
   return(0);
   }

static word Translate←P540(formal←c0908, start←v6032, len←v6060, formal←c0909)
   word formal←c0908;
   word start←v6032;
   word len←v6060;
   word formal←c0909;
   {
   W9 var←c49528;
   /* declaration of base←v6004 skipped */ 
   /* declaration of translator←v6088 skipped */ 
   register ptr gf←c49560 =  (ptr) &globalframe;
   word new←v6132;
   /* declaration of var←c43288 skipped */ 
   /* declaration of index←v15076 skipped */ 
   word intRem←v15104;
   word rem←v15132;
   word text←v15160 = 0;
   (* (( (ptr) &var←c49528)+4)/* base←v6004 */  ) = formal←c0908;
   (* (( (ptr) &var←c49528)+5)/* translator←v6088 */  ) = formal←c0909;
   /* Translate: */ 
SOURCE(8083, 763)
   {
      word tmpAddr24;
      tmpAddr24 = (word) (( (ptr) &var←c49528)+6)/* var←c43288 */ ;
      (*  (ptr) tmpAddr24 ) = ( ((word)  (fPt) each←P4476) );
      (* (( (ptr) tmpAddr24) + 1) ) = 1;
      };
SOURCE(8083, 763)
   new←v6132 = 0;
SOURCE(8221, 18)
   (* (( (ptr) &var←c49528)+8)/* index←v15076 */  ) = start←v6032;
SOURCE(8241, 54)
   {
      word x←v38744;
      x←v38744 = ((word) InlineSize←P2040((* ((( (ptr) &var←c49528)+4)/* base←v6004 */ ) )) - start←v6032);
      intRem←v15104 = SGNCK(x←v38744);
      };
SOURCE(8297, 17)
   rem←v15132 = intRem←v15104;
SOURCE(8334, 46)
   if (( (int)len←v6060 <=  (int)0) || ( (int)rem←v15132 ==  (int)0)) {
SOURCE(8362, 18)
      return((* (( (ptr) gf←c49560)+4)/* emptyRope←v2804 */  ));
      };
SOURCE(8382, 27)
   if (( (int)len←v6060 <  (int)rem←v15132)) {
SOURCE(8400, 9)
      rem←v15132 = len←v6060;
      };
SOURCE(8411, 435)
   {
      word var←c43352;
      var←c43352 = (* (( (ptr) &var←c49528)+4)/* base←v6004 */  );
      if ((var←c43352 == 0)) {
         goto lab←L100054;
         };
      if (( (unsigned) (*(( short *)var←c43352 + 1)<0) == 0)) {
         {
            word t←v15204;
            t←v15204 = var←c43352;
SOURCE(8444, 206)
            {
               word short←v15248;
SOURCE(8446, 24)
               {
                  word idx25;
                  short←v15248 = (
                     idx25 = (* (( (ptr) &var←c49528)+8)/* index←v15076 */  ),
                     BCK(idx25, 32768)
                     );
                  };
SOURCE(8472, 19)
               text←v15160 = (word) NewText←P60(BCK(rem←v15132, 32768));
SOURCE(8493, 134)
               {
                  register word i←v15292 = 0;
                  register word noName←c43384;
                  noName←c43384 = SGNCK(rem←v15132);
                  if ((i←v15292 >= noName←c43384)) {
                     goto lab←L100055;
                     };
                  lab←L100058: ;
                  {
                     word c←v15336;
SOURCE(8525, 26)
                     c←v15336 =  (unsigned) (word) (* ((( (bPt) t←v15204)+4)+short←v15248) );
SOURCE(8553, 42)
                     if (((* (( (ptr) &var←c49528)+5)/* translator←v6088 */  ) != 0)) {
SOURCE(8578, 17)
                        {
                           word pd26;
                           pd26 = (* (( (ptr) &var←c49528)+5)/* translator←v6088 */  );
                           c←v15336 = (word) ( *( (fPt) ((*  (ptr) pd26 ))))(c←v15336, pd26);
                           };
                        };
SOURCE(8597, 11)
                     {
                        word limit27;
                        (* ((( (bPt) text←v15160)+4)+(
/*1*/   limit27 = (word)  (unsigned) ( (((unsigned)(* (( (hPt) text←v15160)+1) ) << 17) >> 17) ),
/*1*/   BCK(i←v15292, limit27)
/*1*/   )) ) = c←v15336;
                        };
SOURCE(8610, 17)
                     short←v15248 = BCK((short←v15248 + 1), 32768);
                     };
                  i←v15292 = (i←v15292 + 1);
                  if ((i←v15292 < noName←c43384)) {
                     goto lab←L100058;
                     };
                  lab←L100055: ;
                  };
SOURCE(8638, 10)
               new←v6132 = text←v15160;
               };
            };
         }
      else {
         lab←L100054: ;
SOURCE(8664, 184)
SOURCE(8818, 28)
         return((word) FromProc←P840(rem←v15132, (word) (( (bPt) &var←c49528)+24)/* var←c43288 */ , 2147483647));
         };
      };
SOURCE(8083, 763)
   return(new←v6132);
   }

static word each←P4476(formal←c49592)
   word formal←c49592;
   {
   word var←c15456;
   word c←v15484;
   formal←c49592 = (formal←c49592 - 24);
   /* each: */ 
SOURCE(8666, 20)
SOURCE(8704, 34)
   c←v15484 = (word) Fetch←P420((* (( (ptr) formal←c49592)+4) ), (* (( (ptr) formal←c49592)+8) ));
SOURCE(8740, 17)
   (* (( (ptr) formal←c49592)+8) ) = ((* (( (ptr) formal←c49592)+8) ) + 1);
SOURCE(8759, 42)
   if (((* (( (ptr) formal←c49592)+5) ) != 0)) {
SOURCE(8784, 17)
      {
         word pd28;
         pd28 = (* (( (ptr) formal←c49592)+5) );
         c←v15484 = (word) ( *( (fPt) ((*  (ptr) pd28 ))))(c←v15484, pd28);
         };
      };
SOURCE(8803, 10)
   return(c←v15484);
   }

static word Lower←P600(old←v28104)
   word old←v28104;
   {
   word var←c28148;
   /* Lower: */ 
SOURCE(8856, 59)
SOURCE(8889, 26)
   if (((old←v28104 - 65) <= 25)) {
      return((old←v28104 + 32));
      }
   else {
      return(old←v28104);
      };
   }

static word Upper←P660(old←v28208)
   word old←v28208;
   {
   word var←c28252;
   /* Upper: */ 
SOURCE(8919, 59)
SOURCE(8952, 26)
   if (((old←v28208 - 97) <= 25)) {
      return((old←v28208 - 32));
      }
   else {
      return(old←v28208);
      };
   }

static word Flatten←P720(base←v6192, start←v6220, len←v6248)
   word base←v6192;
   word start←v6220;
   word len←v6248;
   {
   register ptr gf←c49624 =  (ptr) &globalframe;
   word var←c6292;
   word size←v15528;
   word rem←v15556;
   /* Flatten: */ 
SOURCE(8982, 470)
SOURCE(9078, 28)
   size←v15528 = (word) InlineSize←P2040(base←v6192);
SOURCE(9108, 39)
   {
      word x←v38696;
      x←v38696 = (size←v15528 - start←v6220);
      rem←v15556 = SGNCK(x←v38696);
      };
SOURCE(9149, 27)
   if (( (int)len←v6248 >  (int)rem←v15556)) {
SOURCE(9167, 9)
      len←v6248 = rem←v15556;
      };
SOURCE(9178, 114)
   if ( ( ( (int)start←v6220 ==  (int)0) ? ( (int)len←v6248 ==  (int)rem←v15556) : 0 ) ) {
SOURCE(9212, 31)
      if ((base←v6192 == 0)) {
SOURCE(9231, 12)
         return(0);
         };
SOURCE(9245, 47)
      if (( (unsigned) (*(( short *)base←v6192 + 1)<0) == 0)) {
SOURCE(9269, 23)
         return(base←v6192);
         };
      };
SOURCE(9297, 155)
   if (( (int)len←v6248 <=  (int)0)) {
SOURCE(9314, 24)
      return((* (( (ptr) gf←c49624)+4)/* emptyRope←v2804 */  ));
      }
   else {
SOURCE(9338, 116)
      {
         word rtn←v15600;
SOURCE(9340, 31)
         rtn←v15600 = (word) NewText←P60(len←v6248);
SOURCE(9373, 14)
         (*  (ptr) rtn←v15600 ) &= 2147549183;
SOURCE(9389, 49)
         {
            word var←c43480;
            var←c43480 = (word) AppendChars←P1500(rtn←v15600, base←v6192, start←v6220, len←v6248);
            };
SOURCE(9440, 12)
         return(rtn←v15600);
         };
      };
   }

static word MakeRope←P780(base←v6352, size←v6380, fetch←v6408, map←v6436, move←v6464)
   word base←v6352;
   word size←v6380;
   word fetch←v6408;
   word map←v6436;
   word move←v6464;
   {
   register ptr gf←c49656 =  (ptr) &globalframe;
   word var←c6524;
   /* MakeRope: */ 
SOURCE(9461, 285)
SOURCE(9581, 35)
   if (( (int)size←v6380 ==  (int)0)) {
SOURCE(9598, 18)
      return((* (( (ptr) gf←c49656)+4)/* emptyRope←v2804 */  ));
      };
SOURCE(9618, 128)
   {
      word var←c43544;
      var←c43544 = XR←NewObject(24, (* (( (ptr) gf←c49656)+266) ));
      (* (( (hPt) var←c43544)+1) ) = 32775;
      (* (( (ptr) var←c43544)+1) ) = size←v6380;
      (* (( (ptr) var←c43544)+2) ) = base←v6352;
      (* (( (ptr) var←c43544)+3) ) = fetch←v6408;
      (* (( (ptr) var←c43544)+4) ) = map←v6436;
      (* (( (ptr) var←c43544)+5) ) = move←v6464;
      return(var←c43544);
      };
   }

static word FromProc←P840(len←v6584, p←v6612, maxPiece←v6640)
   word len←v6584;
   word p←v6612;
   word maxPiece←v6640;
   {
   register ptr gf←c49688 =  (ptr) &globalframe;
   word var←c6744;
   /* FromProc: */ 
SOURCE(9752, 520)
SOURCE(9860, 35)
   if (( (int)len←v6584 <=  (int)0)) {
SOURCE(9877, 18)
      return((* (( (ptr) gf←c49688)+4)/* emptyRope←v2804 */  ));
      };
SOURCE(9897, 99)
   {
      word var←c43576;
      var←c43576 = maxPiece←v6640;
      if (( (int)var←c43576 <  (int)24)) {
SOURCE(9931, 18)
         maxPiece←v6640 = 24;
         }
      else {
         if (( (int)var←c43576 >  (int)32767)) {
SOURCE(9971, 25)
            maxPiece←v6640 = 32767;
            };
         };
      };
SOURCE(10007, 265)
   if (( (int)len←v6584 <=  (int)maxPiece←v6640)) {
SOURCE(10031, 113)
      {
         word rtn←v15644;
SOURCE(10033, 32)
         rtn←v15644 = (word) NewText←P60(len←v6584);
SOURCE(10067, 52)
         {
            register word i←v15688 = 0;
            register word noName←c43608;
            noName←c43608 = len←v6584;
            if ((i←v15688 >= noName←c43608)) {
               goto lab←L100060;
               };
            lab←L100063: ;
SOURCE(10107, 12)
            {
               word var←c43640;
               var←c43640 = (word) ( *( (fPt) ((*  (ptr) p←v6612 ))))(p←v6612);
               {
                  word limit29;
                  (* ((( (bPt) rtn←v15644)+4)+(
                        limit29 = (word)  (unsigned) ( (((unsigned)(* (( (hPt) rtn←v15644)+1) ) << 17) >> 17) ),
                        BCK(i←v15688, limit29)
                        )) ) = var←c43640;
                  };
               };
            i←v15688 = (i←v15688 + 1);
            if ((i←v15688 < noName←c43608)) {
               goto lab←L100063;
               };
            lab←L100060: ;
            };
SOURCE(10130, 12)
         return(rtn←v15644);
         };
      }
   else {
SOURCE(10151, 123)
      {
         word left←v15732;
         word right←v15760;
SOURCE(10153, 41)
         left←v15732 = (word) FromProc←P840(IOP2( / ,  (int)len←v6584,  (int)2), p←v6612, maxPiece←v6640);
SOURCE(10196, 46)
         right←v15760 = (word) FromProc←P840(IOP2( / ,  (int)(len←v6584 + 1),  (int)2), p←v6612, maxPiece←v6640);
SOURCE(10244, 28)
         return((word) Concat←P240(left←v15732, right←v15760));
         };
      };
   }

static word FromChars←P900(formal←c0910)
   word formal←c0910;
   {
   W7 var←c49720;
   /* declaration of genChars←v6804 skipped */ 
   word var←c6968;
   /* declaration of var←c43704 skipped */ 
   var←c49720.f4/* genChars←v6804 */  = formal←c0910;
   /* FromChars: */ 
SOURCE(10281, 489)
   {
      word tmpAddr30;
      tmpAddr30 = (word) (( (ptr) &var←c49720)+5)/* var←c43704 */ ;
      (*  (ptr) tmpAddr30 ) = ( ((word)  (fPt) genRopesFromChars←P4728) );
      (* (( (ptr) tmpAddr30) + 1) ) = 1;
      };
SOURCE(10734, 36)
   return((word) FromRopes←P960((word) ((( (bPt) &var←c49720)+20)/* var←c43704 */ )));
   }

static void genRopesFromChars←P4728(formal←c0911, formal←c49816)
   word formal←c0911;
   word formal←c49816;
   {
   W8 var←c49752;
   /* declaration of putRope←v15880 skipped */ 
   register ptr gf←c49784 =  (ptr) &globalframe;
   /* declaration of var←c43768 skipped */ 
   /* declaration of buf←v15968 skipped */ 
   formal←c49816 = (formal←c49816 - 20);
   var←c49752.f4/* putRope←v15880 */  = formal←c0911;
   var←c49752.f0 = formal←c49816;
   /* genRopesFromChars: */ 
SOURCE(10354, 375)
   {
      word tmpAddr31;
      tmpAddr31 = (word) (( (ptr) &var←c49752)+5)/* var←c43768 */ ;
      (*  (ptr) tmpAddr31 ) = ( ((word)  (fPt) putChar←P4788) );
      (* (( (ptr) tmpAddr31) + 1) ) = 1;
      };
SOURCE(10405, 42)
   {
      word pd32;
      pd32 = (* (( (ptr) (* (( (ptr) gf←c49784)+383)/* var←c43800 */  ))+6) );
      var←c49752.f7/* buf←v15968 */  = (word) ( *( (fPt) ((*  (ptr) pd32 ))))(512, pd32);
      };
SOURCE(10635, 17)
   {
      word pd33;
      pd33 = (* (( (ptr) formal←c49816)+4) );
      (void) ( *( (fPt) ((*  (ptr) pd33 ))))((word) ((( (bPt) &var←c49752)+20)/* var←c43768 */ ), pd33);
      };
SOURCE(10654, 46)
   if (( (unsigned) (*  (hPt) var←c49752.f7/* buf←v15968 */  ) > 0)) {
SOURCE(10675, 25)
      {
         word var←c43832;
         var←c43832 = (word) FromRefText←P1320(var←c49752.f7/* buf←v15968 */ , 0, 32767);
         {
            word pd34;
            pd34 = (word) (var←c49752.f4/* putRope←v15880 */ );
            (void) ( *( (fPt) ((*  (ptr) pd34 ))))(var←c43832, pd34);
            };
         };
      };
SOURCE(10702, 27)
   {
      word pd35;
      pd35 = (* (( (ptr) (* (( (ptr) gf←c49784)+383)/* var←c43800 */  ))+7) );
      (void) ( *( (fPt) ((*  (ptr) pd35 ))))(var←c49752.f7/* buf←v15968 */ , pd35);
      };
   }

static void putChar←P4788(c←v16084, formal←c49848)
   word c←v16084;
   word formal←c49848;
   {
   word text←v16112;
   word len←v16140;
   formal←c49848 = (formal←c49848 - 20);
   /* putChar: */ 
SOURCE(10449, 181)
SOURCE(10477, 20)
   text←v16112 = (* (( (ptr) formal←c49848)+7) );
SOURCE(10499, 22)
   len←v16140 =  (unsigned) (*  (hPt) text←v16112 );
SOURCE(10523, 68)
   if ((len←v16140 >=  (unsigned) (* (( (hPt) text←v16112)+1) ))) {
SOURCE(10556, 26)
      {
         word var←c43864;
         var←c43864 = (word) FromRefText←P1320(text←v16112, 0, 32767);
         {
            word pd36;
            pd36 = (* (( (ptr) formal←c49848)+4) );
            (void) ( *( (fPt) ((*  (ptr) pd36 ))))(var←c43864, pd36);
            };
         };
SOURCE(10584, 7)
      len←v16140 = 0;
      };
SOURCE(10596, 13)
   {
      word limit37;
      (* ((( (bPt) text←v16112)+4)+(
            limit37 = (word)  (unsigned) (* (( (hPt) text←v16112)+1) ),
            BCK(len←v16140, limit37)
            )) ) = c←v16084;
      };
SOURCE(10611, 19)
   (*  (hPt) text←v16112 ) = BCK((len←v16140 + 1), 32768);
   }

static word FromRopes←P960(genRopes←v7028)
   word genRopes←v7028;
   {
   W16 var←c49880;
   word result←v7192;
   /* declaration of var←c43896 skipped */ 
   /* declaration of s←v16224 skipped */ 
   /* FromRopes: */ 
SOURCE(10776, 452)
   {
      word tmpAddr38;
      tmpAddr38 = (word) (( (ptr) &var←c49880)+4)/* var←c43896 */ ;
      (*  (ptr) tmpAddr38 ) = ( ((word)  (fPt) putRope←P4848) );
      (* (( (ptr) tmpAddr38) + 1) ) = 1;
      };
SOURCE(10776, 452)
   result←v7192 = 0;
SOURCE(10884, 42)
   XR←FillWords(&(* (W10Pt) ((( (ptr) &var←c49880)+6)/* s←v16224 */ )), 10, 0);
SOURCE(11118, 17)
   (void) ( *( (fPt) ((*  (ptr) genRopes←v7028 ))))((word) ((( (bPt) &var←c49880)+16)/* var←c43896 */ ), genRopes←v7028);
SOURCE(11137, 91)
   {
      register word i←v16392 = 9;
      lab←L100067: ;
SOURCE(11180, 48)
      if (((* ((( (ptr) &var←c49880)+6)/* s←v16224 */ +BCK(i←v16392, 10)) ) != 0)) {
SOURCE(11199, 29)
         result←v7192 = (word) Concat←P240((* ((( (ptr) &var←c49880)+6)/* s←v16224 */ +BCK(i←v16392, 10)) ), result←v7192);
         };
      if ((0 >= i←v16392)) {
         goto lab←L100064;
         };
      i←v16392 = (i←v16392 - 1);
      goto lab←L100067;
      lab←L100064: ;
      };
SOURCE(10776, 452)
   return(result←v7192);
   }

static void putRope←P4848(rope←v16364, formal←c49912)
   word rope←v16364;
   word formal←c49912;
   {
   formal←c49912 = (formal←c49912 - 16);
   /* putRope: */ 
SOURCE(10928, 185)
SOURCE(10959, 131)
   {
      register word i←v16436 = 9;
      lab←L100071: ;
SOURCE(11002, 88)
      if (((* ((( (ptr) formal←c49912)+6)+BCK(i←v16436, 10)) ) == 0)) {
SOURCE(11023, 11)
         (* ((( (ptr) formal←c49912)+6)+BCK(i←v16436, 10)) ) = rope←v16364;
SOURCE(11036, 7)
         return;
         }
      else {
SOURCE(11052, 25)
         rope←v16364 = (word) Concat←P240((* ((( (ptr) formal←c49912)+6)+BCK(i←v16436, 10)) ), rope←v16364);
SOURCE(11079, 11)
         (* ((( (ptr) formal←c49912)+6)+BCK(i←v16436, 10)) ) = 0;
         };
      if ((0 >= i←v16436)) {
         goto lab←L100068;
         };
      i←v16436 = (i←v16436 - 1);
      goto lab←L100071;
      lab←L100068: ;
      };
SOURCE(11102, 11)
   (* (( (ptr) formal←c49912)+6) ) = rope←v16364;
   }

static word FromChar←P1020(c←v7268)
   word c←v7268;
   {
   register ptr gf←c49944 =  (ptr) &globalframe;
   word var←c7312;
   word rtn←v16480;
   /* FromChar: */ 
SOURCE(11286, 188)
SOURCE(11345, 24)
   rtn←v16480 = (* ((( (ptr) gf←c49944)+9)/* fromChars←v3392 */ +c←v7268) );
SOURCE(11371, 66)
   if ((rtn←v16480 == 0)) {
SOURCE(11389, 16)
      rtn←v16480 = (word) NewText←P60(1);
SOURCE(11407, 10)
      {
         word limit39;
         (* ((( (bPt) rtn←v16480)+4)+(
               limit39 = (word)  (unsigned) ( (((unsigned)(* (( (hPt) rtn←v16480)+1) ) << 17) >> 17) ),
               BCK(0, limit39)
               )) ) = c←v7268;
         };
SOURCE(11419, 18)
      (* ((( (ptr) gf←c49944)+9)/* fromChars←v3392 */ +c←v7268) ) = rtn←v16480;
      };
SOURCE(11462, 12)
   return(rtn←v16480);
   }

static word MakeConstantRope←P1080(char←v7372, length←v7400)
   word char←v7372;
   word length←v7400;
   {
   register ptr gf←c49976 =  (ptr) &globalframe;
   word var←c7444;
   /* MakeConstantRope: */ 
SOURCE(11480, 164)
SOURCE(11555, 89)
   {
      word var←c43992;
      word var←c43960;
      var←c43992 = XR←NewObject(8, (* (( (ptr) gf←c49976)+276) ));
      (*  (ptr) var←c43992 ) = char←v7372;
      (* (( (ptr) var←c43992)+1) ) = length←v7400;
      var←c43960 = var←c43992;
      return((word) MakeRope←P780(var←c43960, length←v7400, (word) (( (bPt) gf←c49976)+1376)/* var←c40120 */ , (word) (( (bPt) gf←c49976)+1368)
         /* var←c40088 */ , (word) (( (bPt) gf←c49976)+1360)/* var←c40056 */ ));
      };
   }

static word ConstFetch←P1140(data←v7576, index←v7604)
   word data←v7576;
   word index←v7604;
   {
   register ptr gf←c50008 =  (ptr) &globalframe;
   word var←c7660;
   word c←v16524;
   /* ConstFetch: */ 
SOURCE(11700, 107)
SOURCE(11760, 30)
   c←v16524 = XR←Narrow(data←v7576, (* (( (ptr) gf←c50008)+276) ));
SOURCE(11792, 15)
   return((*  (ptr) c←v16524 ));
   }

static word ConstMap←P1200(base←v7720, start←v7748, len←v7776, action←v7804)
   word base←v7720;
   word start←v7748;
   word len←v7776;
   word action←v7804;
   {
   register ptr gf←c50040 =  (ptr) &globalframe;
   word quit←v7860;
   word c←v16580;
   /* ConstMap: */ 
SOURCE(11811, 233)
SOURCE(11811, 233)
   quit←v7860 = 0;
SOURCE(11908, 30)
   c←v16580 = XR←Narrow(base←v7720, (* (( (ptr) gf←c50040)+276) ));
SOURCE(11940, 79)
   {
      register word noName←c44024 = 1;
      register word noName←c44056;
      {
         word x40;
         noName←c44056 = (x40 = ((* (( (ptr) c←v16580)+1) ) - start←v7748),
            MIN((int)(word), x40, len←v7776));
         };
      if (( (int)noName←c44024 >  (int)noName←c44056)) {
         goto lab←L100072;
         };
      lab←L100075: ;
SOURCE(11983, 36)
      if ((0 != (word) ( *( (fPt) ((*  (ptr) action←v7804 ))))((*  (ptr) (c←v16580) ), action←v7804))) {
SOURCE(12006, 13)
         return(1);
         };
      if (( (int)noName←c44024 >=  (int)noName←c44056)) {
         goto lab←L100072;
         };
      noName←c44024 = (noName←c44024 + 1);
      goto lab←L100075;
      lab←L100072: ;
      };
SOURCE(12030, 14)
   return(0);
   }

static word ConstMove←P1260(block←v7920, data←v7948, start←v7976)
   W3 block←v7920;
   word data←v7948;
   word start←v7976;
   {
   register ptr gf←c50072 =  (ptr) &globalframe;
   word charsMoved←v8032;
   word c←v16636;
   word value←v16664;
   word n←v16692;
   /* ConstMove: */ 
SOURCE(12048, 427)
SOURCE(12048, 427)
   charsMoved←v8032 = 0;
SOURCE(12166, 30)
   c←v16636 = XR←Narrow(data←v7948, (* (( (ptr) gf←c50072)+276) ));
SOURCE(12198, 25)
   value←v16664 = (*  (ptr) c←v16636 );
SOURCE(12225, 41)
   {
      word x41;
      word x42;
      n←v16692 = (x41 = ((* (( (ptr) c←v16636)+1) ) - start←v7976),
         x42 = block←v7920.f2,
         MIN((int)(word), x41, x42));
      };
SOURCE(12268, 207)
   lab←L100078: ;
   if (( (int)charsMoved←v8032 <  (int)n←v16692)) {
      }
   else {
      goto lab←L100076;
      };
   {
      word count←v16748;
SOURCE(12290, 48)
      count←v16748 = (MIN( (unsigned) , (n←v16692 - charsMoved←v8032), 65535));
SOURCE(12340, 104)
      (void) Basics←FillBytes(block←v7920.f0, (block←v7920.f1 + charsMoved←v8032), count←v16748, value←v16664);
SOURCE(12446, 29)
      charsMoved←v8032 = (charsMoved←v8032 + count←v16748);
      };
   goto lab←L100078;
   lab←L100076: ;
SOURCE(12048, 427)
   return(charsMoved←v8032);
   }

static word FromRefText←P1320(s←v8092, start←v8120, len←v8148)
   word s←v8092;
   word start←v8120;
   word len←v8148;
   {
   register ptr gf←c50104 =  (ptr) &globalframe;
   word rtn←v8204;
   /* FromRefText: */ 
SOURCE(12490, 416)
SOURCE(12490, 416)
   rtn←v8204 = 0;
SOURCE(12631, 275)
   if ((s←v8092 != 0)) {
SOURCE(12655, 253)
      {
         word rem←v16792;
SOURCE(12657, 31)
         {
            word idx43;
            rem←v16792 = (
               idx43 = (word) ( (unsigned) (*  (hPt) s←v8092 ) - start←v8120),
               BCK(idx43, 32768)
               );
            };
SOURCE(12690, 25)
         if ((rem←v16792 < len←v8148)) {
SOURCE(12706, 9)
            len←v8148 = rem←v16792;
            };
SOURCE(12717, 34)
         if ((len←v8148 == 0)) {
SOURCE(12733, 18)
            return((* (( (ptr) gf←c50104)+4)/* emptyRope←v2804 */  ));
            };
SOURCE(12753, 18)
         rtn←v8204 = (word) NewText←P60(len←v8148);
SOURCE(12773, 133)
         {
            word var←c44088;
            {
               word text←v36712;
               text←v36712 = s←v8092;
               var←c44088 = (text←v36712 + 4);
               };
            (void) Basics←CopyBytes((rtn←v8204 + 4), 0, var←c44088, start←v8120, len←v8148);
            };
         };
      };
SOURCE(12490, 416)
   return(rtn←v8204);
   }

static word ToRefText←P1380(base←v8264)
   word base←v8264;
   {
   register ptr gf←c50136 =  (ptr) &globalframe;
   word var←c8308;
   word len←v16836;
   word rtn←v16864;
   /* ToRefText: */ 
SOURCE(12915, 434)
SOURCE(12982, 40)
   {
      word x←v36760;
      x←v36760 = (word) InlineSize←P2040(base←v8264);
      len←v16836 = BCK(x←v36760, 32768);
      };
SOURCE(13024, 43)
   {
      word var←c44184;
      word var←c44216;
      var←c44184 = ((word) ((word) (len←v16836 + 3) >> 2) << 2);
      {
         word pd44;
         pd44 = (*  (ptr) (* (( (ptr) gf←c50136)+8)/* untracedZone←v2916 */  ) );
         var←c44216 = (word) ( *( (fPt) ((*  (ptr) pd44 ))))((* (( (ptr) gf←c50136)+8)/* untracedZone←v2916 */  ), (4 + var←c44184), (* (
               ( (ptr) gf←c50136)+277) ), pd44);
         };
      (* (( (hPt) var←c44216)+1) ) = len←v16836;
      rtn←v16864 = var←c44216;
      };
SOURCE(13069, 263)
   if ((len←v16836 != 0)) {
SOURCE(13087, 245)
      {
         word var←c44248;
         var←c44248 = base←v8264;
         if ((var←c44248 == 0)) {
            goto lab←L100081;
            };
         if (( (unsigned) (*(( short *)var←c44248 + 1)<0) == 0)) {
            {
               word txt←v16920;
               txt←v16920 = var←c44248;
SOURCE(13130, 153)
SOURCE(13132, 131)
               {
                  word var←c44280;
                  {
                     word text←v36664;
                     text←v36664 = rtn←v16864;
                     var←c44280 = (text←v36664 + 4);
                     };
                  (void) Basics←CopyBytes(var←c44280, 0, (txt←v16920 + 4), 0, len←v16836);
                  };
SOURCE(13265, 16)
               (*  (hPt) rtn←v16864 ) = len←v16836;
               };
            }
         else {
            lab←L100081: ;
SOURCE(13297, 35)
            {
               word var←c44344;
               var←c44344 = (word) AppendChars←P1500(rtn←v16864, base←v8264, 0, len←v16836);
               };
            };
         };
      };
SOURCE(13337, 12)
   return(rtn←v16864);
   }

static void DoMoveChars←P1440(pointer←v8380, index←v8408, rope←v8436, start←v8464, len←v8492)
   word pointer←v8380;
   word index←v8408;
   word rope←v8436;
   word start←v8464;
   word len←v8492;
   {
   W9 var←c50168;
   register ptr gf←c50200 =  (ptr) &globalframe;
   /* declaration of var←c44376 skipped */ 
   /* DoMoveChars: */ 
SOURCE(13355, 1636)
   {
      word tmpAddr45;
      tmpAddr45 = (word) (( (ptr) &var←c50168)+4)/* var←c44376 */ ;
      (*  (ptr) tmpAddr45 ) = ( ((word)  (fPt) action←P5436) );
      (* (( (ptr) tmpAddr45) + 1) ) = 1;
      };
SOURCE(13468, 1523)
   lab←L100085: ;
   if (( (int)len←v8492 !=  (int)0)) {
      }
   else {
      goto lab←L100083;
      };
   {
      word base←v16964 = 0;
      word bStart←v16992;
      word bLen←v17020;
SOURCE(13516, 51)
      {
         W3 var←c44408;
         (void) ContainingPiece←P1860((word) &var←c44408, rope←v8436, start←v8464);
         bLen←v17020 = var←c44408.f2;
         bStart←v16992 = var←c44408.f1;
         base←v16964 = var←c44408.f0;
         };
SOURCE(13569, 29)
      if (( (int)bLen←v17020 >  (int)len←v8492)) {
SOURCE(13588, 10)
         bLen←v17020 = len←v8492;
         };
SOURCE(13600, 29)
      if (( (int)bLen←v17020 ==  (int)0)) {
SOURCE(13617, 12)
         (void) XR←RaiseError((word) (( (bPt) gf←c50200)+1124), 0);
         };
SOURCE(13631, 1271)
      {
         word var←c44440;
         var←c44440 = base←v16964;
         if ((var←c44440 == 0)) {
            goto lab←L100086;
            };
         {
            word var←c44632;
            var←c44632 =  (unsigned) (*(( short *)var←c44440 + 1)<0);
            if ((var←c44632 == 0)) {
               {
                  word txt←v17064;
                  txt←v17064 = var←c44440;
SOURCE(13674, 129)
SOURCE(13676, 125)
                  (void) Basics←CopyBytes(pointer←v8380, SGNCK(index←v8408), (txt←v17064 + 4), SGNCK(bStart←v16992), SGNCK(bLen←v17020));
                  };
               }
            else {
               if ((var←c44632 == 1)) {
                  {
                     word n←v17108;
                     n←v17108 = var←c44440;
SOURCE(13831, 1016)
                     {
                        word var←c44472;
                        var←c44472 = n←v17108;
                        if ((var←c44472 == 0)) {
                           goto lab←L100087;
                           };
                        if (( (unsigned) ((* (( (bPt) var←c44472)+3) ) & 3) == 3)) {
                           {
/*1*/   word obj←v17164;
/*1*/   obj←v17164 = var←c44472;
/*1*/   if (((* (( (ptr) obj←v17164)+5) ) != 0)) {
SOURCE(13925, 102)
/*1*/      {
/*1*/         word moved←v17220;
SOURCE(13927, 63)
/*1*/         {
/*1*/            W3 var←c44504;
/*1*/            var←c44504.f0 = pointer←v8380;
/*1*/            var←c44504.f1 = index←v8408;
/*1*/            var←c44504.f2 = bLen←v17020;
/*1*/            {
/*1*/               word pd46;
/*1*/               pd46 = (* (( (ptr) obj←v17164)+5) );
/*1*/               moved←v17220 = (word) ( *( (fPt) ((*  (ptr) pd46 ))))(var←c44504, (* (( (ptr) obj←v17164)+2) ), bStart←v16992, pd46);
/*1*/               };
/*1*/            };
SOURCE(13992, 33)
/*1*/         if (( (int)moved←v17220 !=  (int)bLen←v17020)) {
SOURCE(14013, 12)
/*1*/            (void) XR←RaiseError((word) (( (bPt) gf←c50200)+1124), 0);
/*1*/            };
/*1*/         };
/*1*/      }
/*1*/   else {
/*1*/      if (((* (( (ptr) obj←v17164)+4) ) != 0)) {
SOURCE(14047, 397)
/*1*/         {
/*1*/            /* declaration of toPointer←v17264 skipped */ 
/*1*/            /* declaration of toIndex←v17292 skipped */ 
/*1*/            /* declaration of moved←v17320 skipped */ 
SOURCE(14049, 42)
/*1*/            (* (( (ptr) &var←c50168)+6)/* toPointer←v17264 */  ) = pointer←v8380;
SOURCE(14093, 20)
/*1*/            (* (( (ptr) &var←c50168)+7)/* toIndex←v17292 */  ) = index←v8408;
SOURCE(14115, 14)
/*1*/            (* (( (ptr) &var←c50168)+8)/* moved←v17320 */  ) = 0;
SOURCE(14363, 44)
/*1*/            {
/*1*/               word var←c44536;
/*1*/               word pd47;
/*1*/               pd47 = (* (( (ptr) obj←v17164)+4) );
/*1*/               var←c44536 = (word) ( *( (fPt) ((*  (ptr) pd47 ))))((* (( (ptr) obj←v17164)+2) ), bStart←v16992, bLen←v17020, (word) (( (bPt) &var←c50168)+16)
/*1*/                  /* var←c44376 */ , pd47);
/*1*/               };
SOURCE(14409, 33)
/*1*/            if (( (int)(* (( (ptr) &var←c50168)+8)/* moved←v17320 */  ) !=  (int)bLen←v17020)) {
SOURCE(14430, 12)
/*1*/               (void) XR←RaiseError((word) (( (bPt) gf←c50200)+1124), 0);
/*1*/               };
/*1*/            };
/*1*/         }
/*1*/      else {
SOURCE(14466, 355)
/*1*/         {
/*1*/            word toPointer←v17392;
/*1*/            word toIndex←v17420;
/*1*/            word fetch←v17448;
/*1*/            word data←v17476;
SOURCE(14468, 42)
/*1*/            toPointer←v17392 = pointer←v8380;
SOURCE(14512, 20)
/*1*/            toIndex←v17420 = index←v8408;
SOURCE(14534, 28)
/*1*/            fetch←v17448 = (* (( (ptr) obj←v17164)+3) );
SOURCE(14564, 20)
/*1*/            data←v17476 = (* (( (ptr) obj←v17164)+2) );
SOURCE(14586, 224)
/*1*/            {
/*1*/               register word i←v17532 = 0;
/*1*/               register word noName←c44568;
/*1*/               noName←c44568 = bLen←v17020;
/*1*/               if (( (int)i←v17532 >=  (int)noName←c44568)) {
/*1*/                  goto lab←L100088;
/*1*/                  };
/*1*/               lab←L100091: ;
SOURCE(14613, 127)
/*1*/               if (( (int)toIndex←v17420 >  (int)32767)) {
SOURCE(14648, 56)
/*1*/                  toPointer←v17392 = (toPointer←v17392 + IOP2( * ,  (int)IOP2( / ,  (int)toIndex←v17420,  (int)4),  (int)4));
SOURCE(14706, 34)
/*1*/                  toIndex←v17420 = IOP2( % ,  (int)toIndex←v17420,  (int)4);
/*1*/                  };
SOURCE(14745, 42)
/*1*/               {
/*1*/                  word var←c44600;
/*1*/                  var←c44600 = (word) ( *( (fPt) ((*  (ptr) fetch←v17448 ))))(data←v17476, (bStart←v16992 + i←v17532), fetch←v17448);
/*1*/                  (* (( (bPt) toPointer←v17392)+toIndex←v17420) ) = var←c44600;
/*1*/                  };
SOURCE(14789, 21)
/*1*/               toIndex←v17420 = (toIndex←v17420 + 1);
/*1*/               i←v17532 = (i←v17532 + 1);
/*1*/               if (( (int)i←v17532 <  (int)noName←c44568)) {
/*1*/                  goto lab←L100091;
/*1*/                  };
/*1*/               lab←L100088: ;
/*1*/               };
/*1*/            };
/*1*/         };
/*1*/      };
/*1*/   };
                           }
                        else {
                           lab←L100087: ;
SOURCE(14835, 12)
                           (void) XR←RaiseError((word) (( (bPt) gf←c50200)+1124), 0);
                           };
                        };
                     };
                  }
               else {
                  lab←L100086: ;
SOURCE(14890, 12)
                  (void) XR←RaiseError((word) (( (bPt) gf←c50200)+1124), 0);
                  };
               };
            };
         };
SOURCE(14931, 16)
      len←v8492 = (len←v8492 - bLen←v17020);
SOURCE(14949, 20)
      start←v8464 = (start←v8464 + bLen←v17020);
SOURCE(14971, 20)
      index←v8408 = (index←v8408 + bLen←v17020);
      };
   goto lab←L100085;
   lab←L100083: ;
   }

static word action←P5436(c←v34100, formal←c50232)
   word c←v34100;
   word formal←c50232;
   {
   word quit←v34144;
   formal←c50232 = (formal←c50232 - 16);
   /* action: */ 
SOURCE(14131, 29)
SOURCE(14131, 29)
   quit←v34144 = 0;
SOURCE(14162, 127)
   if (( (int)(* (( (ptr) formal←c50232)+7) ) >  (int)32767)) {
SOURCE(14197, 56)
      (* (( (ptr) formal←c50232)+6) ) = ((* (( (ptr) formal←c50232)+6) ) + IOP2( * ,  (int)IOP2( / ,  (int)(* (( (ptr) formal←c50232)+7)
             ),  (int)4),  (int)4));
SOURCE(14255, 34)
      (* (( (ptr) formal←c50232)+7) ) = IOP2( % ,  (int)(* (( (ptr) formal←c50232)+7) ),  (int)4);
      };
SOURCE(14294, 22)
   (* (( (bPt) (* (( (ptr) formal←c50232)+6) ))+(* (( (ptr) formal←c50232)+7) )) ) = c←v34100;
SOURCE(14318, 21)
   (* (( (ptr) formal←c50232)+7) ) = ((* (( (ptr) formal←c50232)+7) ) + 1);
SOURCE(14341, 17)
   (* (( (ptr) formal←c50232)+8) ) = ((* (( (ptr) formal←c50232)+8) ) + 1);
SOURCE(14131, 29)
   return(quit←v34144);
   }

static word AppendChars←P1500(buffer←v8564, rope←v8592, start←v8620, len←v8648)
   word buffer←v8564;
   word rope←v8592;
   word start←v8620;
   word len←v8648;
   {
   word charsMoved←v8704;
   word rem←v17576;
   /* AppendChars: */ 
SOURCE(15006, 535)
SOURCE(15006, 535)
   charsMoved←v8704 = 0;
SOURCE(15140, 49)
   {
      word x←v38648;
      x←v38648 = ((word) InlineSize←P2040(rope←v8592) - start←v8620);
      rem←v17576 = SGNCK(x←v38648);
      };
SOURCE(15191, 27)
   if (( (int)rem←v17576 >  (int)len←v8648)) {
SOURCE(15209, 9)
      rem←v17576 = len←v8648;
      };
SOURCE(15220, 321)
   if ( ( ( (int)rem←v17576 >  (int)0) ? (buffer←v8564 != 0) : 0 ) ) {
SOURCE(15261, 282)
      {
         word bufPos←v17620;
         word bufRem←v17648;
SOURCE(15263, 33)
         bufPos←v17620 =  (unsigned) (*  (hPt) buffer←v8564 );
SOURCE(15298, 45)
         {
            word idx48;
            bufRem←v17648 = (
               idx48 = (word) ( (unsigned) (* (( (hPt) buffer←v8564)+1) ) - bufPos←v17620),
               BCK(idx48, 32768)
               );
            };
SOURCE(15345, 41)
         if (( (int)bufRem←v17648 >  (int)rem←v17576)) {
SOURCE(15366, 20)
            bufRem←v17648 = rem←v17576;
            };
SOURCE(15388, 105)
         {
            word var←c44696;
            {
               word text←v36616;
               text←v36616 = buffer←v8564;
               var←c44696 = (text←v36616 + 4);
               };
            (void) DoMoveChars←P1440(var←c44696, bufPos←v17620, rope←v8592, start←v8620, bufRem←v17648);
            };
SOURCE(15495, 29)
         (*  (hPt) buffer←v8564 ) = BCK((bufPos←v17620 + bufRem←v17648), 32768);
SOURCE(15526, 15)
         return(bufRem←v17648);
         };
      };
SOURCE(15006, 535)
   return(charsMoved←v8704);
   }

static word UnsafeMoveChars←P1560(block←v8764, rope←v8792, start←v8820)
   W3 block←v8764;
   word rope←v8792;
   word start←v8820;
   {
   word charsMoved←v8864;
   word rem←v17692;
   /* UnsafeMoveChars: */ 
SOURCE(15550, 359)
SOURCE(15550, 359)
   charsMoved←v8864 = 0;
SOURCE(15669, 49)
   {
      word x←v38600;
      x←v38600 = ((word) InlineSize←P2040(rope←v8792) - start←v8820);
      rem←v17692 = SGNCK(x←v38600);
      };
SOURCE(15720, 43)
   if (( (int)rem←v17692 >  (int)block←v8764.f2)) {
SOURCE(15746, 17)
      rem←v17692 = block←v8764.f2;
      };
SOURCE(15765, 144)
   if (( (int)rem←v17692 >  (int)0)) {
SOURCE(15789, 120)
SOURCE(15791, 102)
      (void) DoMoveChars←P1440(block←v8764.f0, block←v8764.f1, rope←v8792, start←v8820, rem←v17692);
SOURCE(15895, 12)
      return(rem←v17692);
      };
SOURCE(15550, 359)
   return(charsMoved←v8864);
   }

static word Equal←P1620(s1←v8924, s2←v8952, case←v8980)
   word s1←v8924;
   word s2←v8952;
   word case←v8980;
   {
   word var←c9024;
   word len1←v17736;
   word len2←v17764;
   word str1←v17792 = 0;
   word str2←v17820 = 0;
   /* Equal: */ 
SOURCE(15916, 811)
SOURCE(16037, 29)
   {
      W2 var←c44952;
      {
         word var←c44824;
         var←c44824 = s1←v8924;
         if ((var←c44824 == 0)) {
            goto lab←L100095;
            };
         {
            word var←c44920;
            var←c44920 =  (unsigned) (*(( short *)var←c44824 + 1)<0);
            if ((var←c44920 == 0)) {
               {
                  word text←v38096;
                  text←v38096 = var←c44824;
                  (*  (ptr) (word) &var←c44952 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v38096 ) << 17) >> 17) );
                  (* (( (ptr) (word) &var←c44952) + 1) ) = text←v38096;
                  };
               }
            else {
               if ((var←c44920 == 1)) {
                  {
                     word node←v38140;
                     word var←c44888;
                     word base←v38184;
                     node←v38140 = var←c44824;
                     base←v38184 = node←v38140;
                     var←c44888 = (* (( (ptr) base←v38184)+1) );
                     (*  (ptr) (word) &var←c44952 ) = var←c44888;
                     (* (( (ptr) (word) &var←c44952) + 1) ) = 0;
                     };
                  }
               else {
                  lab←L100095: ;
                  (*  (ptr) (word) &var←c44952 ) = 0;
                  (* (( (ptr) (word) &var←c44952) + 1) ) = 0;
                  goto lab←L100096;
                  };
               };
            };
         };
      lab←L100096: ;
      str1←v17792 = var←c44952.f1;
      len1←v17736 = var←c44952.f0;
      };
SOURCE(16068, 29)
   {
      W2 var←c45144;
      {
         word var←c45016;
         var←c45016 = s2←v8952;
         if ((var←c45016 == 0)) {
            goto lab←L100098;
            };
         {
            word var←c45112;
            var←c45112 =  (unsigned) (*(( short *)var←c45016 + 1)<0);
            if ((var←c45112 == 0)) {
               {
                  word text←v37964;
                  text←v37964 = var←c45016;
                  (*  (ptr) (word) &var←c45144 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v37964 ) << 17) >> 17) );
                  (* (( (ptr) (word) &var←c45144) + 1) ) = text←v37964;
                  };
               }
            else {
               if ((var←c45112 == 1)) {
                  {
                     word node←v38008;
                     word var←c45080;
                     word base←v38052;
                     node←v38008 = var←c45016;
                     base←v38052 = node←v38008;
                     var←c45080 = (* (( (ptr) base←v38052)+1) );
                     (*  (ptr) (word) &var←c45144 ) = var←c45080;
                     (* (( (ptr) (word) &var←c45144) + 1) ) = 0;
                     };
                  }
               else {
                  lab←L100098: ;
                  (*  (ptr) (word) &var←c45144 ) = 0;
                  (* (( (ptr) (word) &var←c45144) + 1) ) = 0;
                  goto lab←L100099;
                  };
               };
            };
         };
      lab←L100099: ;
      str2←v17820 = var←c45144.f1;
      len2←v17764 = var←c45144.f0;
      };
   if (( (int)len1←v17736 !=  (int)len2←v17764)) {
SOURCE(16131, 14)
      return(0);
      }
   else {
      if ((s1←v8924 == s2←v8952) || ( (int)len1←v17736 ==  (int)0)) {
SOURCE(16170, 13)
         return(1);
         }
      else {
         if ( (  ( (0 != case←v8980) ? (str1←v17792 != 0) : 0 )  ? (str2←v17820 != 0) : 0 ) ) {
SOURCE(16223, 454)
            {
               word len←v17864;
               word wp1←v17892;
               word wp2←v17920;
SOURCE(16225, 29)
               len←v17864 = len1←v17736;
SOURCE(16256, 54)
               wp1←v17892 = (str1←v17792 + 4);
SOURCE(16312, 54)
               wp2←v17920 = (str2←v17820 + 4);
SOURCE(16368, 139)
               lab←L100103: ;
               if ((len←v17864 >= 4)) {
                  }
               else {
                  goto lab←L100101;
                  };
SOURCE(16397, 34)
               if (((*  (ptr) wp1←v17892 ) != (*  (ptr) wp2←v17920 ))) {
SOURCE(16417, 14)
                  return(0);
                  };
SOURCE(16433, 23)
               wp1←v17892 = (wp1←v17892 + 4);
SOURCE(16458, 23)
               wp2←v17920 = (wp2←v17920 + 4);
SOURCE(16483, 24)
               len←v17864 = BCK((len←v17864 - 4), 32768);
               goto lab←L100103;
               lab←L100101: ;
SOURCE(16518, 133)
               {
                  register word i←v17964 = 0;
                  register word noName←c45176;
                  noName←c45176 = (len←v17864 & 3);
                  if ((i←v17964 >= noName←c45176)) {
                     goto lab←L100104;
                     };
                  lab←L100107: ;
SOURCE(16567, 84)
                  if (( (unsigned) (word) (* (( (bPt) wp1←v17892)+i←v17964) ) !=  (unsigned) (word) (* (( (bPt) wp2←v17920)+i←v17964) ))) {
SOURCE(16637, 14)
                     return(0);
                     };
                  i←v17964 = (i←v17964 + 1);
                  if ((i←v17964 < noName←c45176)) {
                     goto lab←L100107;
                     };
                  lab←L100104: ;
                  };
SOURCE(16662, 13)
               return(1);
               };
            }
         else {
SOURCE(16691, 36)
            return( (unsigned) ((word) Compare←P1680(s1←v8924, s2←v8952, case←v8980) == 1));
            };
         };
      };
   }

static word Compare←P1680(s1←v9084, s2←v9112, case←v9140)
   word s1←v9084;
   word s2←v9112;
   word case←v9140;
   {
   word var←c9184;
   word len1←v18008;
   word len2←v18036;
   word str1←v18064 = 0;
   word str2←v18092 = 0;
   /* Compare: */ 
SOURCE(16733, 1568)
SOURCE(16862, 29)
   {
      W2 var←c45400;
      {
         word var←c45272;
         var←c45272 = s1←v9084;
         if ((var←c45272 == 0)) {
            goto lab←L100108;
            };
         {
            word var←c45368;
            var←c45368 =  (unsigned) (*(( short *)var←c45272 + 1)<0);
            if ((var←c45368 == 0)) {
               {
                  word text←v37832;
                  text←v37832 = var←c45272;
                  (*  (ptr) (word) &var←c45400 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v37832 ) << 17) >> 17) );
                  (* (( (ptr) (word) &var←c45400) + 1) ) = text←v37832;
                  };
               }
            else {
               if ((var←c45368 == 1)) {
                  {
                     word node←v37876;
                     word var←c45336;
                     word base←v37920;
                     node←v37876 = var←c45272;
                     base←v37920 = node←v37876;
                     var←c45336 = (* (( (ptr) base←v37920)+1) );
                     (*  (ptr) (word) &var←c45400 ) = var←c45336;
                     (* (( (ptr) (word) &var←c45400) + 1) ) = 0;
                     };
                  }
               else {
                  lab←L100108: ;
                  (*  (ptr) (word) &var←c45400 ) = 0;
                  (* (( (ptr) (word) &var←c45400) + 1) ) = 0;
                  goto lab←L100109;
                  };
               };
            };
         };
      lab←L100109: ;
      str1←v18064 = var←c45400.f1;
      len1←v18008 = var←c45400.f0;
      };
SOURCE(16893, 29)
   {
      W2 var←c45592;
      {
         word var←c45464;
         var←c45464 = s2←v9112;
         if ((var←c45464 == 0)) {
            goto lab←L100111;
            };
         {
            word var←c45560;
            var←c45560 =  (unsigned) (*(( short *)var←c45464 + 1)<0);
            if ((var←c45560 == 0)) {
               {
                  word text←v37700;
                  text←v37700 = var←c45464;
                  (*  (ptr) (word) &var←c45592 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v37700 ) << 17) >> 17) );
                  (* (( (ptr) (word) &var←c45592) + 1) ) = text←v37700;
                  };
               }
            else {
               if ((var←c45560 == 1)) {
                  {
                     word node←v37744;
                     word var←c45528;
                     word base←v37788;
                     node←v37744 = var←c45464;
                     base←v37788 = node←v37744;
                     var←c45528 = (* (( (ptr) base←v37788)+1) );
                     (*  (ptr) (word) &var←c45592 ) = var←c45528;
                     (* (( (ptr) (word) &var←c45592) + 1) ) = 0;
                     };
                  }
               else {
                  lab←L100111: ;
                  (*  (ptr) (word) &var←c45592 ) = 0;
                  (* (( (ptr) (word) &var←c45592) + 1) ) = 0;
                  goto lab←L100112;
                  };
               };
            };
         };
      lab←L100112: ;
      str2←v18092 = var←c45592.f1;
      len2←v18036 = var←c45592.f0;
      };
SOURCE(16924, 671)
   if ( ( (str1←v18064 != 0) ? (str2←v18092 != 0) : 0 ) ) {
SOURCE(16958, 639)
      {
         word sz1←v18136;
         word sz2←v18164;
         word sz←v18192;
SOURCE(16960, 29)
         sz1←v18136 = len1←v18008;
SOURCE(16991, 29)
         sz2←v18164 = len2←v18036;
SOURCE(17022, 29)
         sz←v18192 = (MIN( (unsigned) , sz1←v18136, sz2←v18164));
SOURCE(17053, 448)
         if ((0 != case←v9140)) {
SOURCE(17067, 160)
            {
               register word i←v18236 = 0;
               register word noName←c45624;
               noName←c45624 = sz←v18192;
               if ((i←v18236 >= noName←c45624)) {
                  goto lab←L100114;
                  };
               lab←L100117: ;
               {
                  word c1←v18280;
                  word c2←v18308;
SOURCE(17098, 26)
                  c1←v18280 =  (unsigned) (word) (* ((( (bPt) str1←v18064)+4)+i←v18236) );
SOURCE(17126, 26)
                  c2←v18308 =  (unsigned) (word) (* ((( (bPt) str2←v18092)+4)+i←v18236) );
SOURCE(17154, 16)
                  if ((c1←v18280 == c2←v18308)) {
SOURCE(17170, 4)
                     goto lab←L100116;
                     };
SOURCE(17176, 51)
                  if ((c1←v18280 < c2←v18308)) {
SOURCE(17192, 19)
                     return(0);
                     }
                  else {
SOURCE(17211, 16)
                     return(2);
                     };
                  };
               lab←L100116: ;
               i←v18236 = (i←v18236 + 1);
               if ((i←v18236 < noName←c45624)) {
                  goto lab←L100117;
                  };
               lab←L100114: ;
               };
            }
         else {
SOURCE(17243, 258)
            {
               register word i←v18352 = 0;
               register word noName←c45656;
               noName←c45656 = sz←v18192;
               if ((i←v18352 >= noName←c45656)) {
                  goto lab←L100118;
                  };
               lab←L100121: ;
               {
                  word c1←v18396;
                  word c2←v18424;
SOURCE(17274, 26)
                  c1←v18396 =  (unsigned) (word) (* ((( (bPt) str1←v18064)+4)+i←v18352) );
SOURCE(17302, 26)
                  c2←v18424 =  (unsigned) (word) (* ((( (bPt) str2←v18092)+4)+i←v18352) );
SOURCE(17330, 47)
                  if ( ( (c1←v18396 <= 90) ? (c1←v18396 >= 65) : 0 ) ) {
SOURCE(17360, 17)
                     c1←v18396 = BCK((c1←v18396 + 32), 256);
                     };
SOURCE(17379, 47)
                  if ( ( (c2←v18424 <= 90) ? (c2←v18424 >= 65) : 0 ) ) {
SOURCE(17409, 17)
                     c2←v18424 = BCK((c2←v18424 + 32), 256);
                     };
SOURCE(17428, 16)
                  if ((c1←v18396 == c2←v18424)) {
SOURCE(17444, 4)
                     goto lab←L100120;
                     };
SOURCE(17450, 51)
                  if ((c1←v18396 < c2←v18424)) {
SOURCE(17466, 19)
                     return(0);
                     }
                  else {
SOURCE(17485, 16)
                     return(2);
                     };
                  };
               lab←L100120: ;
               i←v18352 = (i←v18352 + 1);
               if ((i←v18352 < noName←c45656)) {
                  goto lab←L100121;
                  };
               lab←L100118: ;
               };
            };
SOURCE(17512, 34)
         if ((sz1←v18136 > sz2←v18164)) {
SOURCE(17530, 16)
            return(2);
            };
SOURCE(17548, 31)
         if ((sz1←v18136 < sz2←v18164)) {
SOURCE(17566, 13)
            return(0);
            };
SOURCE(17581, 14)
         return(1);
         };
      };
SOURCE(17600, 712)
   {
      word r1←v18468 = 0;
      word r2←v18496 = 0;
      word pos1←v18524 = 0;
      word st1←v18552 = 0;
      word sz1←v18580 = 0;
      word lm1←v18608 = 0;
      word pos2←v18636 = 0;
      word st2←v18664 = 0;
      word sz2←v18692 = 0;
      word lm2←v18720 = 0;
      word c1←v18748;
      word c2←v18776;
SOURCE(17688, 613)
      lab←L100124: ;
SOURCE(17691, 183)
      if (( (int)st1←v18552 ==  (int)lm1←v18608)) {
         {
            word var←c0875;
SOURCE(17711, 79)
            pos1←v18524 = (pos1←v18524 + sz1←v18580);
            var←c0875 = pos1←v18524;
            if (( (int)var←c0875 ==  (int)len1←v18008)) {
SOURCE(17746, 44)
               {
                  word idx49;
                  return((
                     idx49 = (word)  ( ( (int)pos1←v18524 ==  (int)len2←v18036) ? 1 : 0 ) ,
                     BCK(idx49, 3)
                     ));
                  };
               };
SOURCE(17792, 42)
            {
               W3 var←c45688;
               (void) ContainingPiece←P1860((word) &var←c45688, s1←v9084, pos1←v18524);
               sz1←v18580 = var←c45688.f2;
               st1←v18552 = var←c45688.f1;
               r1←v18468 = var←c45688.f0;
               };
SOURCE(17836, 16)
            if (( (int)sz1←v18580 ==  (int)0)) {
SOURCE(17852, 5)
               (void) XR←RaiseUnnamedError();
               };
SOURCE(17859, 15)
            lm1←v18608 = (st1←v18552 + sz1←v18580);
            };
         };
SOURCE(17879, 155)
      if (( (int)st2←v18664 ==  (int)lm2←v18720)) {
         {
            word var←c0876;
SOURCE(17899, 51)
            pos2←v18636 = (pos2←v18636 + sz2←v18692);
            var←c0876 = pos2←v18636;
            if (( (int)var←c0876 ==  (int)len2←v18036)) {
SOURCE(17934, 16)
               return(2);
               };
SOURCE(17952, 42)
            {
               W3 var←c45720;
               (void) ContainingPiece←P1860((word) &var←c45720, s2←v9112, pos2←v18636);
               sz2←v18692 = var←c45720.f2;
               st2←v18664 = var←c45720.f1;
               r2←v18496 = var←c45720.f0;
               };
SOURCE(17996, 16)
            if (( (int)sz2←v18692 ==  (int)0)) {
SOURCE(18012, 5)
               (void) XR←RaiseUnnamedError();
               };
SOURCE(18019, 15)
            lm2←v18720 = (st2←v18664 + sz2←v18692);
            };
         };
SOURCE(18039, 25)
      c1←v18748 = (word) Fetch←P420(r1←v18468, st1←v18552);
SOURCE(18066, 25)
      c2←v18776 = (word) Fetch←P420(r2←v18496, st2←v18664);
SOURCE(18093, 115)
      if ((0 == case←v9140)) {
SOURCE(18112, 47)
         if ( ( (c1←v18748 <= 90) ? (c1←v18748 >= 65) : 0 ) ) {
SOURCE(18142, 17)
            c1←v18748 = BCK((c1←v18748 + 32), 256);
            };
SOURCE(18161, 47)
         if ( ( (c2←v18776 <= 90) ? (c2←v18776 >= 65) : 0 ) ) {
SOURCE(18191, 17)
            c2←v18776 = BCK((c2←v18776 + 32), 256);
            };
         };
SOURCE(18213, 58)
      if ((c1←v18748 != c2←v18776)) {
SOURCE(18229, 42)
         {
            word idx50;
            return((
               idx50 = (word)  ( (c1←v18748 < c2←v18776) ? 0 : 2 ) ,
               BCK(idx50, 3)
               ));
            };
         };
SOURCE(18273, 13)
      st1←v18552 = (st1←v18552 + 1);
SOURCE(18288, 13)
      st2←v18664 = (st2←v18664 + 1);
      goto lab←L100124;
      };
   }

static word CompareSubstrs←P1740(s1←v9244, start1←v9272, len1←v9300, s2←v9328, start2←v9356, len2←v9384, case←v9412)
   word s1←v9244;
   word start1←v9272;
   word len1←v9300;
   word s2←v9328;
   word start2←v9356;
   word len2←v9384;
   word case←v9412;
   {
   word var←c9456;
   word rem1←v18820;
   word rem2←v18848;
   word rem←v18876;
   word r1←v18904 = 0;
   word r2←v18932 = 0;
   word st1←v18960 = 0;
   word sz1←v18988 = 0;
   word lm1←v19016 = 0;
   word st2←v19044 = 0;
   word sz2←v19072 = 0;
   word lm2←v19100 = 0;
   /* CompareSubstrs: */ 
SOURCE(18319, 1101)
SOURCE(18489, 85)
   if (( (int)len1←v9300 <=  (int)0)) {
      rem1←v18820 = 0;
      }
   else {
      {
         word var←c45752;
         word x←v38552;
         x←v38552 = ((word) InlineSize←P2040(s1←v9244) - start1←v9272);
         var←c45752 = SGNCK(x←v38552);
         rem1←v18820 = (MIN((int)(word), len1←v9300, var←c45752));
         };
      };
SOURCE(18576, 85)
   if (( (int)len2←v9384 <=  (int)0)) {
      rem2←v18848 = 0;
      }
   else {
      {
         word var←c45784;
         word x←v38504;
         x←v38504 = ((word) InlineSize←P2040(s2←v9328) - start2←v9356);
         var←c45784 = SGNCK(x←v38504);
         rem2←v18848 = (MIN((int)(word), len2←v9384, var←c45784));
         };
      };
SOURCE(18663, 26)
   rem←v18876 = (MIN((int)(word), rem1←v18820, rem2←v18848));
SOURCE(18759, 612)
   lab←L100129: ;
   if (( (int)rem←v18876 !=  (int)0)) {
      }
   else {
      goto lab←L100127;
      };
SOURCE(18776, 118)
   if (( (int)st1←v18960 ==  (int)lm1←v19016)) {
SOURCE(18796, 59)
      {
         W3 var←c45816;
         {
            W3 var←c0494;
            {
               word var←c0877;
               start1←v9272 = (start1←v9272 + sz1←v18988);
               var←c0877 = start1←v9272;
               (void) ContainingPiece←P1860((word) &var←c0494, s1←v9244, var←c0877);
               };
            var←c45816 = var←c0494;
            };
         sz1←v18988 = var←c45816.f2;
         st1←v18960 = var←c45816.f1;
         r1←v18904 = var←c45816.f0;
         };
SOURCE(18857, 16)
      if (( (int)sz1←v18988 ==  (int)0)) {
SOURCE(18873, 4)
         goto lab←L100128;
         };
SOURCE(18879, 15)
      lm1←v19016 = (st1←v18960 + sz1←v18988);
      };
SOURCE(18899, 118)
   if (( (int)st2←v19044 ==  (int)lm2←v19100)) {
SOURCE(18919, 59)
      {
         W3 var←c45848;
         {
            W3 var←c0496;
            {
               word var←c0878;
               start2←v9356 = (start2←v9356 + sz2←v19072);
               var←c0878 = start2←v9356;
               (void) ContainingPiece←P1860((word) &var←c0496, s2←v9328, var←c0878);
               };
            var←c45848 = var←c0496;
            };
         sz2←v19072 = var←c45848.f2;
         st2←v19044 = var←c45848.f1;
         r2←v18932 = var←c45848.f0;
         };
SOURCE(18980, 16)
      if (( (int)sz2←v19072 ==  (int)0)) {
SOURCE(18996, 4)
         goto lab←L100128;
         };
SOURCE(19002, 15)
      lm2←v19100 = (st2←v19044 + sz2←v19072);
      };
SOURCE(19022, 303)
   {
      word c1←v19144;
      word c2←v19172;
SOURCE(19024, 31)
      c1←v19144 = (word) Fetch←P420(r1←v18904, st1←v18960);
SOURCE(19057, 31)
      c2←v19172 = (word) Fetch←P420(r2←v18932, st2←v19044);
SOURCE(19090, 232)
      if ((c1←v19144 != c2←v19172)) {
SOURCE(19106, 216)
SOURCE(19108, 133)
         if ((0 == case←v9412)) {
SOURCE(19127, 47)
            if ( ( (c1←v19144 <= 90) ? (c1←v19144 >= 65) : 0 ) ) {
SOURCE(19157, 17)
               c1←v19144 = BCK((c1←v19144 + 32), 256);
               };
SOURCE(19176, 47)
            if ( ( (c2←v19172 <= 90) ? (c2←v19172 >= 65) : 0 ) ) {
SOURCE(19206, 17)
               c2←v19172 = BCK((c2←v19172 + 32), 256);
               };
SOURCE(19225, 16)
            if ((c1←v19144 == c2←v19172)) {
SOURCE(19241, 11)
               goto lab←L100130;
               };
            };
SOURCE(19257, 44)
         {
            word var←c45880;
            {
               word a←v36540;
               word b←v36568;
               a←v36540 = c1←v19144;
               b←v36568 = c2←v19172;
               {
                  word idx51;
                  var←c45880 = (
                     idx51 = (word)  ( ( (int)a←v36540 ==  (int)b←v36568) ? 1 :  ( ( (int)a←v36540 >  (int)b←v36568) ? 2 : 0 )  ) ,
                     BCK(idx51, 3)
                     );
                  };
               };
            return(var←c45880);
            };
         /* c2c skipped dead code */ 
         lab←L100130: ;
         };
      };
SOURCE(19328, 13)
   st1←v18960 = (st1←v18960 + 1);
SOURCE(19343, 13)
   st2←v19044 = (st2←v19044 + 1);
SOURCE(19358, 13)
   rem←v18876 = (rem←v18876 - 1);
   goto lab←L100129;
   lab←L100127: ;
   lab←L100128: ;
SOURCE(19382, 38)
   if (( (int)rem1←v18820 ==  (int)rem2←v18848)) {
      return(1);
      }
   else {
      if (( (int)rem1←v18820 >  (int)rem2←v18848)) {
         return(2);
         }
      else {
         return(0);
         };
      };
   }

static word EqualSubstrs←P1800(s1←v9516, start1←v9544, len1←v9572, s2←v9600, start2←v9628, len2←v9656, case←v9684)
   word s1←v9516;
   word start1←v9544;
   word len1←v9572;
   word s2←v9600;
   word start2←v9628;
   word len2←v9656;
   word case←v9684;
   {
   word var←c9728;
   word rem1←v19216;
   word rem2←v19244;
   /* EqualSubstrs: */ 
SOURCE(19426, 1054)
SOURCE(19588, 85)
   if (( (int)len1←v9572 <=  (int)0)) {
      rem1←v19216 = 0;
      }
   else {
      {
         word var←c45944;
         word x←v38456;
         x←v38456 = ((word) InlineSize←P2040(s1←v9516) - start1←v9544);
         var←c45944 = SGNCK(x←v38456);
         rem1←v19216 = (MIN((int)(word), len1←v9572, var←c45944));
         };
      };
SOURCE(19675, 85)
   if (( (int)len2←v9656 <=  (int)0)) {
      rem2←v19244 = 0;
      }
   else {
      {
         word var←c45976;
         word x←v38408;
         x←v38408 = ((word) InlineSize←P2040(s2←v9600) - start2←v9628);
         var←c45976 = SGNCK(x←v38408);
         rem2←v19244 = (MIN((int)(word), len2←v9656, var←c45976));
         };
      };
SOURCE(19762, 699)
   if (( (int)rem1←v19216 ==  (int)rem2←v19244)) {
SOURCE(19782, 681)
      {
         word r1←v19288 = 0;
         word r2←v19316 = 0;
         word st1←v19344 = 0;
         word sz1←v19372 = 0;
         word lm1←v19400 = 0;
         word st2←v19428 = 0;
         word sz2←v19456 = 0;
         word lm2←v19484 = 0;
SOURCE(19852, 585)
         lab←L100137: ;
         if (( (int)rem1←v19216 !=  (int)0)) {
            }
         else {
            goto lab←L100135;
            };
SOURCE(19870, 118)
         if (( (int)st1←v19344 ==  (int)lm1←v19400)) {
SOURCE(19890, 59)
            {
               W3 var←c46008;
               {
                  W3 var←c0525;
                  {
                     word var←c0879;
                     start1←v9544 = (start1←v9544 + sz1←v19372);
                     var←c0879 = start1←v9544;
                     (void) ContainingPiece←P1860((word) &var←c0525, s1←v9516, var←c0879);
                     };
                  var←c46008 = var←c0525;
                  };
               sz1←v19372 = var←c46008.f2;
               st1←v19344 = var←c46008.f1;
               r1←v19288 = var←c46008.f0;
               };
SOURCE(19951, 16)
            if (( (int)sz1←v19372 ==  (int)0)) {
SOURCE(19967, 4)
               goto lab←L100136;
               };
SOURCE(19973, 15)
            lm1←v19400 = (st1←v19344 + sz1←v19372);
            };
SOURCE(19993, 118)
         if (( (int)st2←v19428 ==  (int)lm2←v19484)) {
SOURCE(20013, 59)
            {
               W3 var←c46040;
               {
                  W3 var←c0527;
                  {
                     word var←c0880;
                     start2←v9628 = (start2←v9628 + sz2←v19456);
                     var←c0880 = start2←v9628;
                     (void) ContainingPiece←P1860((word) &var←c0527, s2←v9600, var←c0880);
                     };
                  var←c46040 = var←c0527;
                  };
               sz2←v19456 = var←c46040.f2;
               st2←v19428 = var←c46040.f1;
               r2←v19316 = var←c46040.f0;
               };
SOURCE(20074, 16)
            if (( (int)sz2←v19456 ==  (int)0)) {
SOURCE(20090, 4)
               goto lab←L100136;
               };
SOURCE(20096, 15)
            lm2←v19484 = (st2←v19428 + sz2←v19456);
            };
SOURCE(20116, 273)
         {
            word c1←v19528;
            word c2←v19556;
SOURCE(20118, 31)
            c1←v19528 = (word) Fetch←P420(r1←v19288, st1←v19344);
SOURCE(20151, 31)
            c2←v19556 = (word) Fetch←P420(r2←v19316, st2←v19428);
SOURCE(20184, 202)
            if ((c1←v19528 != c2←v19556)) {
SOURCE(20200, 186)
SOURCE(20202, 133)
               if ((0 == case←v9684)) {
SOURCE(20221, 47)
                  if ( ( (c1←v19528 <= 90) ? (c1←v19528 >= 65) : 0 ) ) {
SOURCE(20251, 17)
                     c1←v19528 = BCK((c1←v19528 + 32), 256);
                     };
SOURCE(20270, 47)
                  if ( ( (c2←v19556 <= 90) ? (c2←v19556 >= 65) : 0 ) ) {
SOURCE(20300, 17)
                     c2←v19556 = BCK((c2←v19556 + 32), 256);
                     };
SOURCE(20319, 16)
                  if ((c1←v19528 == c2←v19556)) {
SOURCE(20335, 11)
                     goto lab←L100138;
                     };
                  };
SOURCE(20351, 14)
               return(0);
               /* c2c skipped dead code */ 
               lab←L100138: ;
               };
            };
SOURCE(20392, 13)
         st1←v19344 = (st1←v19344 + 1);
SOURCE(20407, 13)
         st2←v19428 = (st2←v19428 + 1);
SOURCE(20422, 15)
         rem1←v19216 = (rem1←v19216 - 1);
         goto lab←L100137;
         lab←L100135: ;
         lab←L100136: ;
SOURCE(20448, 13)
         return(1);
         };
      };
SOURCE(20466, 14)
   return(0);
   }

static void ContainingPiece←P1860(formal←c0541, rope←v9788, index←v9816)
   word formal←c0541;
   word rope←v9788;
   word index←v9816;
   {
   register ptr gf←c50264 =  (ptr) &globalframe;
   word base←v9860;
   word start←v9888;
   word len←v9916;
   /* ContainingPiece: */ 
SOURCE(20486, 935)
SOURCE(20486, 935)
   base←v9860 = 0;
SOURCE(20599, 22)
   len←v9916 = (word) InlineSize←P2040(rope←v9788);
SOURCE(20623, 52)
   if (( (int)index←v9816 <  (int)0) || ( (int)index←v9816 >=  (int)len←v9916)) {
SOURCE(20657, 18)
      base←v9860 = 0;
      start←v9888 = 0;
      len←v9916 = 0;
      goto lab←L100140;
      };
SOURCE(20677, 11)
   base←v9860 = rope←v9788;
SOURCE(20690, 13)
   start←v9888 = index←v9816;
SOURCE(20705, 17)
   len←v9916 = (len←v9916 - start←v9888);
SOURCE(20724, 697)
   lab←L100143: ;
SOURCE(20724, 697)
   {
      word nlen←v19600;
SOURCE(20727, 15)
      nlen←v19600 = len←v9916;
SOURCE(20744, 638)
      {
         word var←c46072;
         var←c46072 =  (unsigned) (*(( short *)base←v9860 + 1)<0);
         if ((var←c46072 == 0)) {
SOURCE(20777, 6)
            goto lab←L100140;
            }
         else {
            if ((var←c46072 == 1)) {
SOURCE(20793, 564)
               {
                  word var←c46104;
                  var←c46104 =  (unsigned) ((* (( (bPt) base←v9860)+3) ) & 3);
                  switch (var←c46104) {
                     case 0: 
SOURCE(20827, 21)
                        nlen←v19600 = ((* (( (ptr) base←v9860)+1) ) - start←v9888);
SOURCE(20850, 23)
                        start←v9888 = (start←v9888 + (* (( (ptr) base←v9860)+3) ));
SOURCE(20875, 13)
                        base←v9860 = (* (( (ptr) base←v9860)+2) );
                        break;
                     case 1: 
SOURCE(20903, 135)
                        {
                           word del1←v19644;
SOURCE(20905, 25)
                           del1←v19644 = ((* (( (ptr) base←v9860)+4) ) - start←v9888);
SOURCE(20932, 103)
                           if (( (int)del1←v19644 >  (int)0)) {
SOURCE(20950, 11)
/*1*/   nlen←v19600 = del1←v19644;
SOURCE(20963, 13)
/*1*/   base←v9860 = (* (( (ptr) base←v9860)+2) );
/*1*/   }
                           else {
SOURCE(20984, 21)
/*1*/   nlen←v19600 = ((* (( (ptr) base←v9860)+1) ) - start←v9888);
SOURCE(21007, 13)
/*1*/   start←v9888 = INEG(del1←v19644);
SOURCE(21022, 13)
/*1*/   base←v9860 = (* (( (ptr) base←v9860)+3) );
/*1*/   };
                           };
                        break;
                     case 2: 
SOURCE(21052, 259)
                        {
                           word del2←v19688;
                           word del1←v19716;
SOURCE(21054, 28)
                           del2←v19688 = ((* (( (ptr) base←v9860)+6) ) - start←v9888);
SOURCE(21084, 27)
                           del1←v19716 = ((* (( (ptr) base←v9860)+4) ) - start←v9888);
                           if (( (int)del1←v19716 >  (int)0)) {
SOURCE(21143, 11)
/*1*/   nlen←v19600 = del1←v19716;
SOURCE(21156, 13)
/*1*/   base←v9860 = (* (( (ptr) base←v9860)+2) );
/*1*/   }
                           else {
/*1*/   if (( (int)del2←v19688 >  (int)0)) {
SOURCE(21185, 13)
/*1*/      start←v9888 = INEG(del1←v19716);
SOURCE(21200, 11)
/*1*/      nlen←v19600 = del2←v19688;
SOURCE(21213, 16)
/*1*/      base←v9860 = (* (( (ptr) base←v9860)+3) );
/*1*/      }
/*1*/   else {
SOURCE(21245, 21)
/*1*/      nlen←v19600 = ((* (( (ptr) base←v9860)+1) ) - start←v9888);
SOURCE(21268, 23)
/*1*/      start←v9888 = ((* (( (ptr) base←v9860)+5) ) - del2←v19688);
SOURCE(21293, 13)
/*1*/      base←v9860 = (* (( (ptr) base←v9860)+2) );
/*1*/      };
/*1*/   };
                           };
                        break;
                     case 3: 
SOURCE(21325, 6)
                        goto lab←L100140;
                     default: 
SOURCE(21345, 12)
                        (void) XR←RaiseError((word) (( (bPt) gf←c50264)+1124), 0);
                        break;
                     };
                  };
               }
            else {
SOURCE(21370, 12)
               (void) XR←RaiseError((word) (( (bPt) gf←c50264)+1124), 0);
               };
            };
         };
SOURCE(21384, 37)
      if (( (int)nlen←v19600 <  (int)len←v9916)) {
SOURCE(21403, 18)
         len←v9916 = nlen←v19600;
         };
      };
   goto lab←L100143;
   lab←L100140: ;
   (*  (ptr) formal←c0541 ) = base←v9860;
   (* (( (ptr) formal←c0541)+1) ) = start←v9888;
   (* (( (ptr) formal←c0541)+2) ) = len←v9916;
   return;
   }

static word IsEmpty←P1920(r←v9976)
   word r←v9976;
   {
   word var←c10020;
   /* IsEmpty: */ 
SOURCE(21436, 69)
SOURCE(21487, 18)
   return( (unsigned) ( (int)(word) Size←P2100(r←v9976) ==  (int)0));
   }

static word Length←P1980(base←v10080)
   word base←v10080;
   {
   word var←c10124;
   /* Length: */ 
SOURCE(21511, 71)
SOURCE(21563, 19)
   return((word) Size←P2100(base←v10080));
   }

static word InlineSize←P2040(base←v10184)
   word base←v10184;
   {
   word var←c10228;
   /* InlineSize: */ 
SOURCE(21588, 196)
   if ((base←v10184 == 0)) {
SOURCE(21667, 10)
      return(0);
      }
   else {
      if (( (unsigned) (*(( short *)base←v10184 + 1)<0) == 0)) {
SOURCE(21698, 20)
         return( (unsigned) ( (((unsigned)(*  (hPt) base←v10184 ) << 17) >> 17) ));
         }
      else {
SOURCE(21739, 45)
SOURCE(21741, 41)
         return((* (( (ptr) base←v10184)+1) ));
         };
      };
   }

static word Size←P2100(base←v10288)
   word base←v10288;
   {
   word var←c10332;
   /* Size: */ 
SOURCE(21791, 282)
SOURCE(21841, 232)
   {
      word var←c46200;
      var←c46200 = base←v10288;
      if ((var←c46200 == 0)) {
         goto lab←L100144;
         };
      {
         word var←c46232;
         var←c46232 =  (unsigned) (*(int*)var←c46200<0);
         if ((var←c46232 == 0)) {
            {
               word base←v19772;
               base←v19772 = var←c46200;
SOURCE(21896, 44)
               if (( (unsigned) (*(( short *)base←v19772 + 1)<0) == 0)) {
SOURCE(21920, 20)
                  return( (unsigned) ( (((unsigned)(*  (hPt) base←v19772 ) << 17) >> 17) ));
                  };
SOURCE(21950, 45)
SOURCE(21952, 41)
               return((* (( (ptr) base←v19772)+1) ));
               };
            }
         else {
            if ((var←c46232 == 1)) {
               {
                  word base←v19840;
                  base←v19840 = var←c46200;
SOURCE(22032, 18)
                  return(( (((unsigned)(*  (ptr) base←v19840 ) << 1) >> 1) ));
                  };
               }
            else {
               lab←L100144: ;
SOURCE(22063, 10)
               return(0);
               };
            };
         };
      };
   }

static word Run←P2220(s1←v10496, pos1←v10524, s2←v10552, pos2←v10580, case←v10608, len←v10636)
   word s1←v10496;
   word pos1←v10524;
   word s2←v10552;
   word pos2←v10580;
   word case←v10608;
   word len←v10636;
   {
   word result←v10680;
   word len1←v19896;
   word str1←v19924 = 0;
   /* Run: */ 
SOURCE(22165, 948)
SOURCE(22165, 948)
   result←v10680 = 0;
SOURCE(22325, 29)
   {
      W2 var←c46424;
      {
         word var←c46296;
         var←c46296 = s1←v10496;
         if ((var←c46296 == 0)) {
            goto lab←L100145;
            };
         {
            word var←c46392;
            var←c46392 =  (unsigned) (*(( short *)var←c46296 + 1)<0);
            if ((var←c46392 == 0)) {
               {
                  word text←v37568;
                  text←v37568 = var←c46296;
                  (*  (ptr) (word) &var←c46424 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v37568 ) << 17) >> 17) );
                  (* (( (ptr) (word) &var←c46424) + 1) ) = text←v37568;
                  };
               }
            else {
               if ((var←c46392 == 1)) {
                  {
                     word node←v37612;
                     word var←c46360;
                     word base←v37656;
                     node←v37612 = var←c46296;
                     base←v37656 = node←v37612;
                     var←c46360 = (* (( (ptr) base←v37656)+1) );
                     (*  (ptr) (word) &var←c46424 ) = var←c46360;
                     (* (( (ptr) (word) &var←c46424) + 1) ) = 0;
                     };
                  }
               else {
                  lab←L100145: ;
                  (*  (ptr) (word) &var←c46424 ) = 0;
                  (* (( (ptr) (word) &var←c46424) + 1) ) = 0;
                  goto lab←L100146;
                  };
               };
            };
         };
      lab←L100146: ;
      str1←v19924 = var←c46424.f1;
      len1←v19896 = var←c46424.f0;
      };
SOURCE(22356, 757)
   if (( (int)pos1←v10524 <  (int)len1←v19896)) {
SOURCE(22384, 743)
      {
         word len2←v19968;
         word str2←v19996 = 0;
SOURCE(22410, 29)
         {
            W2 var←c46616;
            {
               word var←c46488;
               var←c46488 = s2←v10552;
               if ((var←c46488 == 0)) {
                  goto lab←L100148;
                  };
               {
                  word var←c46584;
                  var←c46584 =  (unsigned) (*(( short *)var←c46488 + 1)<0);
                  if ((var←c46584 == 0)) {
                     {
                        word text←v37436;
                        text←v37436 = var←c46488;
                        (*  (ptr) (word) &var←c46616 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v37436 ) << 17) >> 17) );
                        (* (( (ptr) (word) &var←c46616) + 1) ) = text←v37436;
                        };
                     }
                  else {
                     if ((var←c46584 == 1)) {
                        {
                           word node←v37480;
                           word var←c46552;
                           word base←v37524;
                           node←v37480 = var←c46488;
                           base←v37524 = node←v37480;
                           var←c46552 = (* (( (ptr) base←v37524)+1) );
                           (*  (ptr) (word) &var←c46616 ) = var←c46552;
                           (* (( (ptr) (word) &var←c46616) + 1) ) = 0;
                           };
                        }
                     else {
                        lab←L100148: ;
                        (*  (ptr) (word) &var←c46616 ) = 0;
                        (* (( (ptr) (word) &var←c46616) + 1) ) = 0;
                        goto lab←L100149;
                        };
                     };
                  };
               };
            lab←L100149: ;
            str2←v19996 = var←c46616.f1;
            len2←v19968 = var←c46616.f0;
            };
SOURCE(22441, 672)
         if (( (int)pos2←v10580 <  (int)len2←v19968)) {
SOURCE(22469, 655)
            {
               word r1←v20040 = 0;
               word r2←v20068 = 0;
               word st1←v20096 = 0;
               word sz1←v20124 = 0;
               word lm1←v20152 = 0;
               word st2←v20180 = 0;
               word sz2←v20208 = 0;
               word lm2←v20236 = 0;
SOURCE(22534, 579)
               lab←L100153: ;
               if (( (int)result←v10680 <  (int)len←v10636)) {
                  }
               else {
                  goto lab←L100151;
                  };
SOURCE(22554, 116)
               if (( (int)st1←v20096 ==  (int)lm1←v20152)) {
SOURCE(22574, 55)
                  {
                     W3 var←c46648;
                     {
                        W3 var←c0588;
                        {
                           word var←c0881;
                           pos1←v10524 = (pos1←v10524 + sz1←v20124);
                           var←c0881 = pos1←v10524;
                           (void) ContainingPiece←P1860((word) &var←c0588, s1←v10496, var←c0881);
                           };
                        var←c46648 = var←c0588;
                        };
                     sz1←v20124 = var←c46648.f2;
                     st1←v20096 = var←c46648.f1;
                     r1←v20040 = var←c46648.f0;
                     };
SOURCE(22631, 22)
                  if (( (int)sz1←v20124 ==  (int)0)) {
SOURCE(22647, 6)
                     return(result←v10680);
                     };
SOURCE(22655, 15)
                  lm1←v20152 = (st1←v20096 + sz1←v20124);
                  };
SOURCE(22675, 116)
               if (( (int)st2←v20180 ==  (int)lm2←v20236)) {
SOURCE(22695, 55)
                  {
                     W3 var←c46680;
                     {
                        W3 var←c0590;
                        {
                           word var←c0882;
                           pos2←v10580 = (pos2←v10580 + sz2←v20208);
                           var←c0882 = pos2←v10580;
                           (void) ContainingPiece←P1860((word) &var←c0590, s2←v10552, var←c0882);
                           };
                        var←c46680 = var←c0590;
                        };
                     sz2←v20208 = var←c46680.f2;
                     st2←v20180 = var←c46680.f1;
                     r2←v20068 = var←c46680.f0;
                     };
SOURCE(22752, 22)
                  if (( (int)sz2←v20208 ==  (int)0)) {
SOURCE(22768, 6)
                     return(result←v10680);
                     };
SOURCE(22776, 15)
                  lm2←v20236 = (st2←v20180 + sz2←v20208);
                  };
SOURCE(22796, 265)
               {
                  word c1←v20280;
                  word c2←v20308;
SOURCE(22798, 31)
                  c1←v20280 = (word) Fetch←P420(r1←v20040, st1←v20096);
SOURCE(22831, 31)
                  c2←v20308 = (word) Fetch←P420(r2←v20068, st2←v20180);
SOURCE(22864, 194)
                  if ((c1←v20280 != c2←v20308)) {
SOURCE(22880, 178)
SOURCE(22882, 133)
                     if ((0 == case←v10608)) {
SOURCE(22901, 47)
                        if ( ( (c1←v20280 <= 90) ? (c1←v20280 >= 65) : 0 ) ) {
SOURCE(22931, 17)
                           c1←v20280 = BCK((c1←v20280 + 32), 256);
                           };
SOURCE(22950, 47)
                        if ( ( (c2←v20308 <= 90) ? (c2←v20308 >= 65) : 0 ) ) {
SOURCE(22980, 17)
                           c2←v20308 = BCK((c2←v20308 + 32), 256);
                           };
SOURCE(22999, 16)
                        if ((c1←v20280 == c2←v20308)) {
SOURCE(23015, 11)
                           goto lab←L100154;
                           };
                        };
SOURCE(23031, 6)
                     return(result←v10680);
                     /* c2c skipped dead code */ 
                     lab←L100154: ;
                     };
                  };
SOURCE(23064, 19)
               result←v10680 = (result←v10680 + 1);
SOURCE(23085, 13)
               st1←v20096 = (st1←v20096 + 1);
SOURCE(23100, 13)
               st2←v20180 = (st2←v20180 + 1);
               goto lab←L100153;
               lab←L100151: ;
               };
            };
         };
      };
SOURCE(22165, 948)
   return(result←v10680);
   }

static word IsPrefix←P2280(prefix←v10740, subject←v10768, case←v10796)
   word prefix←v10740;
   word subject←v10768;
   word case←v10796;
   {
   word var←c10840;
   /* IsPrefix: */ 
SOURCE(23134, 150)
SOURCE(23224, 60)
   return( (unsigned) ( (int)(word) Run←P2220(prefix←v10740, 0, subject←v10768, 0, case←v10796, 2147483647) ==  (int)(word) InlineSize←P2040(
      prefix←v10740)));
   }

static word Index←P2340(formal←c0912, formal←c0913, formal←c0914, formal←c0915)
   word formal←c0912;
   word formal←c0913;
   word formal←c0914;
   word formal←c0915;
   {
   W14 var←c50296;
   /* declaration of s1←v10900 skipped */ 
   /* declaration of pos1←v10928 skipped */ 
   /* declaration of s2←v10956 skipped */ 
   /* declaration of case←v10984 skipped */ 
   word var←c11028;
   /* declaration of var←c46744 skipped */ 
   /* declaration of var←c46776 skipped */ 
   word len1←v20352;
   /* declaration of len2←v20380 skipped */ 
   word rem←v20408;
   word both←v20436;
   (* (( (ptr) &var←c50296)+4)/* s1←v10900 */  ) = formal←c0912;
   (* (( (ptr) &var←c50296)+5)/* pos1←v10928 */  ) = formal←c0913;
   (* (( (ptr) &var←c50296)+6)/* s2←v10956 */  ) = formal←c0914;
   (* (( (ptr) &var←c50296)+7)/* case←v10984 */  ) = formal←c0915;
   /* Index: */ 
SOURCE(23290, 876)
   {
      word tmpAddr52;
      tmpAddr52 = (word) (( (ptr) &var←c50296)+8)/* var←c46744 */ ;
      (*  (ptr) tmpAddr52 ) = ( ((word)  (fPt) LCmp←P6756) );
      (* (( (ptr) tmpAddr52) + 1) ) = 1;
      };
   {
      word tmpAddr53;
      tmpAddr53 = (word) (( (ptr) &var←c50296)+10)/* var←c46776 */ ;
      (*  (ptr) tmpAddr53 ) = ( ((word)  (fPt) Cmp←P6648) );
      (* (( (ptr) tmpAddr53) + 1) ) = 1;
      };
SOURCE(23419, 37)
   {
      W3 var←c47224;
      {
         word s1←v36340;
         word s2←v36368;
         word both←v36396;
         {
            word t1←v35072 = 0;
            word t2←v35104 = 0;
            {
               W2 var←c47000;
               {
                  word var←c46872;
                  var←c46872 = (* (( (ptr) &var←c50296)+4)/* s1←v10900 */  );
                  if ((var←c46872 == 0)) {
                     goto lab←L100156;
                     };
                  {
                     word var←c46968;
                     var←c46968 =  (unsigned) (*(( short *)var←c46872 + 1)<0);
                     if ((var←c46968 == 0)) {
                        {
                           word text←v35576;
                           text←v35576 = var←c46872;
                           (*  (ptr) (word) &var←c47000 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v35576 ) << 17) >> 17) );
                           (* (( (ptr) (word) &var←c47000) + 1) ) = text←v35576;
                           };
                        }
                     else {
                        if ((var←c46968 == 1)) {
                           {
/*1*/   word node←v35624;
/*1*/   word var←c46936;
/*1*/   word base←v35656;
/*1*/   node←v35624 = var←c46872;
/*1*/   base←v35656 = node←v35624;
/*1*/   var←c46936 = (* (( (ptr) base←v35656)+1) );
/*1*/   (*  (ptr) (word) &var←c47000 ) = var←c46936;
/*1*/   (* (( (ptr) (word) &var←c47000) + 1) ) = 0;
/*1*/   };
                           }
                        else {
                           lab←L100156: ;
                           (*  (ptr) (word) &var←c47000 ) = 0;
                           (* (( (ptr) (word) &var←c47000) + 1) ) = 0;
                           goto lab←L100157;
                           };
                        };
                     };
                  };
               lab←L100157: ;
               t1←v35072 = var←c47000.f1;
               s1←v36340 = var←c47000.f0;
               };
            {
               W2 var←c47192;
               {
                  word var←c47064;
                  var←c47064 = (* (( (ptr) &var←c50296)+6)/* s2←v10956 */  );
                  if ((var←c47064 == 0)) {
                     goto lab←L100159;
                     };
                  {
                     word var←c47160;
                     var←c47160 =  (unsigned) (*(( short *)var←c47064 + 1)<0);
                     if ((var←c47160 == 0)) {
                        {
                           word text←v35720;
                           text←v35720 = var←c47064;
                           (*  (ptr) (word) &var←c47192 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v35720 ) << 17) >> 17) );
                           (* (( (ptr) (word) &var←c47192) + 1) ) = text←v35720;
                           };
                        }
                     else {
                        if ((var←c47160 == 1)) {
                           {
/*1*/   word node←v35768;
/*1*/   word var←c47128;
/*1*/   word base←v35800;
/*1*/   node←v35768 = var←c47064;
/*1*/   base←v35800 = node←v35768;
/*1*/   var←c47128 = (* (( (ptr) base←v35800)+1) );
/*1*/   (*  (ptr) (word) &var←c47192 ) = var←c47128;
/*1*/   (* (( (ptr) (word) &var←c47192) + 1) ) = 0;
/*1*/   };
                           }
                        else {
                           lab←L100159: ;
                           (*  (ptr) (word) &var←c47192 ) = 0;
                           (* (( (ptr) (word) &var←c47192) + 1) ) = 0;
                           goto lab←L100160;
                           };
                        };
                     };
                  };
               lab←L100160: ;
               t2←v35104 = var←c47192.f1;
               s2←v36368 = var←c47192.f0;
               };
            if ((t1←v35072 != 0)) {
               both←v36396 =  (unsigned) (t2←v35104 != 0);
               }
            else {
               both←v36396 =  (unsigned) 0;
               };
            (*  (ptr) (word) &var←c47224 ) = s1←v36340;
            (* (( (ptr) (word) &var←c47224) + 1) ) = s2←v36368;
            (* (( (ptr) (word) &var←c47224) + 2) ) = both←v36396;
            };
         };
      both←v20436 = var←c47224.f2;
      (* (( (ptr) &var←c50296)+12)/* len2←v20380 */  ) = var←c47224.f1;
      len1←v20352 = var←c47224.f0;
      };
SOURCE(23458, 53)
   if (( (int)(* (( (ptr) &var←c50296)+5)/* pos1←v10928 */  ) >=  (int)len1←v20352)) {
      rem←v20408 = 0;
      }
   else {
      rem←v20408 = (len1←v20352 - (* (( (ptr) &var←c50296)+5)/* pos1←v10928 */  ));
      };
SOURCE(23513, 632)
   if (( (int)rem←v20408 >=  (int)(* (( (ptr) &var←c50296)+12)/* len2←v20380 */  ))) {
SOURCE(23533, 617)
      {
         /* declaration of c←v20480 skipped */ 
SOURCE(23544, 30)
         if (( (int)(* (( (ptr) &var←c50296)+12)/* len2←v20380 */  ) ==  (int)0)) {
SOURCE(23561, 13)
            return((* (( (ptr) &var←c50296)+5)/* pos1←v10928 */  ));
            };
SOURCE(23576, 22)
         (* (( (ptr) &var←c50296)+13)/* c←v20480 */  ) = (word) Fetch←P420((* (( (ptr) &var←c50296)+6)/* s2←v10956 */  ), 0);
SOURCE(23600, 20)
         rem←v20408 = ((rem←v20408 - (* (( (ptr) &var←c50296)+12)/* len2←v20380 */  )) + 1);
SOURCE(23622, 523)
         if ((0 != (* (( (ptr) &var←c50296)+7)/* case←v10984 */  ))) {
SOURCE(23635, 204)
SOURCE(23793, 46)
            if ((0 != (word) Map←P480((* (( (ptr) &var←c50296)+4)/* s1←v10900 */  ), (* (( (ptr) &var←c50296)+5)/* pos1←v10928 */  ), rem←v20408, (word) (
                  ( (bPt) &var←c50296)+40)/* var←c46776 */ ))) {
SOURCE(23825, 14)
               return((* (( (ptr) &var←c50296)+5)/* pos1←v10928 */  ));
               };
            }
         else {
SOURCE(23846, 301)
SOURCE(24054, 43)
            if ( ( ((* (( (ptr) &var←c50296)+13)/* c←v20480 */  ) <= 90) ? ((* (( (ptr) &var←c50296)+13)/* c←v20480 */  ) >= 65) : 0 ) ) {
SOURCE(24082, 15)
               {
                  word idx54;
                  (* (( (ptr) &var←c50296)+13)/* c←v20480 */  ) = (
                     idx54 = (word) ((* (( (ptr) &var←c50296)+13)/* c←v20480 */  ) + 32),
                     BCK(idx54, 256)
                     );
                  };
               };
SOURCE(24099, 46)
            if ((0 != (word) Map←P480((* (( (ptr) &var←c50296)+4)/* s1←v10900 */  ), (* (( (ptr) &var←c50296)+5)/* pos1←v10928 */  ), rem←v20408, (word) (
                  ( (bPt) &var←c50296)+32)/* var←c46744 */ ))) {
SOURCE(24132, 13)
               return((* (( (ptr) &var←c50296)+5)/* pos1←v10928 */  ));
               };
            };
         };
      };
SOURCE(24153, 13)
   return(len1←v20352);
   }

static word Cmp←P6648(cc←v20600, formal←c50328)
   word cc←v20600;
   word formal←c50328;
   {
   word var←c20644;
   formal←c50328 = (formal←c50328 - 40);
   /* Cmp: */ 
SOURCE(23637, 11)
SOURCE(23685, 70)
   if ( ( ((* (( (ptr) formal←c50328)+13) ) == cc←v20600) ? ( (int)((word) Run←P2220((* (( (ptr) formal←c50328)+4) ), ((* (( (ptr) formal←c50328)+5)
       ) + 1), (* (( (ptr) formal←c50328)+6) ), 1, (* (( (ptr) formal←c50328)+7) ), 2147483647) + 1) ==  (int)(* (( (ptr) formal←c50328)+12)
    )) : 0 ) ) {
SOURCE(23742, 13)
      return(1);
      };
SOURCE(23757, 15)
   (* (( (ptr) formal←c50328)+5) ) = ((* (( (ptr) formal←c50328)+5) ) + 1);
SOURCE(23774, 14)
   return(0);
   }

static word LCmp←P6756(cc←v20748, formal←c50360)
   word cc←v20748;
   word formal←c50360;
   {
   word var←c20792;
   formal←c50360 = (formal←c50360 - 32);
   /* LCmp: */ 
SOURCE(23848, 12)
SOURCE(23897, 47)
   if ( ( (cc←v20748 <= 90) ? (cc←v20748 >= 65) : 0 ) ) {
SOURCE(23927, 17)
      cc←v20748 = BCK((cc←v20748 + 32), 256);
      };
SOURCE(23946, 70)
   if ( ( ((* (( (ptr) formal←c50360)+13) ) == cc←v20748) ? ( (int)((word) Run←P2220((* (( (ptr) formal←c50360)+4) ), ((* (( (ptr) formal←c50360)+5)
       ) + 1), (* (( (ptr) formal←c50360)+6) ), 1, (* (( (ptr) formal←c50360)+7) ), 2147483647) + 1) ==  (int)(* (( (ptr) formal←c50360)+12)
    )) : 0 ) ) {
SOURCE(24003, 13)
      return(1);
      };
SOURCE(24018, 15)
   (* (( (ptr) formal←c50360)+5) ) = ((* (( (ptr) formal←c50360)+5) ) + 1);
SOURCE(24035, 14)
   return(0);
   }

static word Find←P2400(s1←v11088, s2←v11116, pos1←v11144, case←v11172)
   word s1←v11088;
   word s2←v11116;
   word pos1←v11144;
   word case←v11172;
   {
   word var←c11216;
   word index←v20820;
   /* Find: */ 
SOURCE(24173, 183)
SOURCE(24258, 38)
   index←v20820 = (word) Index←P2340(s1←v11088, pos1←v11144, s2←v11116, case←v11172);
SOURCE(24298, 42)
   if (( (int)index←v20820 ==  (int)(word) InlineSize←P2040(s1←v11088))) {
SOURCE(24329, 11)
      return( (word) -1);
      };
SOURCE(24342, 14)
   return(index←v20820);
   }

static word FindBackward←P2460(s1←v11276, s2←v11304, pos1←v11332, case←v11360)
   word s1←v11276;
   word s2←v11304;
   word pos1←v11332;
   word case←v11360;
   {
   word var←c11404;
   word len1←v20864;
   word len2←v20892;
   word both←v20920;
   /* FindBackward: */ 
SOURCE(24362, 848)
SOURCE(24489, 37)
   {
      W3 var←c47672;
      {
         word s1←v35916;
         word s2←v35944;
         word both←v35972;
         {
            word t1←v36004 = 0;
            word t2←v36032 = 0;
            {
               W2 var←c47448;
               {
                  word var←c47320;
                  var←c47320 = s1←v11276;
                  if ((var←c47320 == 0)) {
                     goto lab←L100163;
                     };
                  {
                     word var←c47416;
                     var←c47416 =  (unsigned) (*(( short *)var←c47320 + 1)<0);
                     if ((var←c47416 == 0)) {
                        {
                           word text←v36076;
                           text←v36076 = var←c47320;
                           (*  (ptr) (word) &var←c47448 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v36076 ) << 17) >> 17) );
                           (* (( (ptr) (word) &var←c47448) + 1) ) = text←v36076;
                           };
                        }
                     else {
                        if ((var←c47416 == 1)) {
                           {
/*1*/   word node←v36120;
/*1*/   word var←c47384;
/*1*/   word base←v36164;
/*1*/   node←v36120 = var←c47320;
/*1*/   base←v36164 = node←v36120;
/*1*/   var←c47384 = (* (( (ptr) base←v36164)+1) );
/*1*/   (*  (ptr) (word) &var←c47448 ) = var←c47384;
/*1*/   (* (( (ptr) (word) &var←c47448) + 1) ) = 0;
/*1*/   };
                           }
                        else {
                           lab←L100163: ;
                           (*  (ptr) (word) &var←c47448 ) = 0;
                           (* (( (ptr) (word) &var←c47448) + 1) ) = 0;
                           goto lab←L100164;
                           };
                        };
                     };
                  };
               lab←L100164: ;
               t1←v36004 = var←c47448.f1;
               s1←v35916 = var←c47448.f0;
               };
            {
               W2 var←c47640;
               {
                  word var←c47512;
                  var←c47512 = s2←v11304;
                  if ((var←c47512 == 0)) {
                     goto lab←L100166;
                     };
                  {
                     word var←c47608;
                     var←c47608 =  (unsigned) (*(( short *)var←c47512 + 1)<0);
                     if ((var←c47608 == 0)) {
                        {
                           word text←v36208;
                           text←v36208 = var←c47512;
                           (*  (ptr) (word) &var←c47640 ) =  (unsigned) ( (((unsigned)(*  (hPt) text←v36208 ) << 17) >> 17) );
                           (* (( (ptr) (word) &var←c47640) + 1) ) = text←v36208;
                           };
                        }
                     else {
                        if ((var←c47608 == 1)) {
                           {
/*1*/   word node←v36252;
/*1*/   word var←c47576;
/*1*/   word base←v36296;
/*1*/   node←v36252 = var←c47512;
/*1*/   base←v36296 = node←v36252;
/*1*/   var←c47576 = (* (( (ptr) base←v36296)+1) );
/*1*/   (*  (ptr) (word) &var←c47640 ) = var←c47576;
/*1*/   (* (( (ptr) (word) &var←c47640) + 1) ) = 0;
/*1*/   };
                           }
                        else {
                           lab←L100166: ;
                           (*  (ptr) (word) &var←c47640 ) = 0;
                           (* (( (ptr) (word) &var←c47640) + 1) ) = 0;
                           goto lab←L100167;
                           };
                        };
                     };
                  };
               lab←L100167: ;
               t2←v36032 = var←c47640.f1;
               s2←v35944 = var←c47640.f0;
               };
            if ((t1←v36004 != 0)) {
               both←v35972 =  (unsigned) (t2←v36032 != 0);
               }
            else {
               both←v35972 =  (unsigned) 0;
               };
            (*  (ptr) (word) &var←c47672 ) = s1←v35916;
            (* (( (ptr) (word) &var←c47672) + 1) ) = s2←v35944;
            (* (( (ptr) (word) &var←c47672) + 2) ) = both←v35972;
            };
         };
      both←v20920 = var←c47672.f2;
      len2←v20892 = var←c47672.f1;
      len1←v20864 = var←c47672.f0;
      };
SOURCE(24528, 37)
   if (( (int)pos1←v11332 >  (int)len1←v20864)) {
SOURCE(24554, 11)
      pos1←v11332 = len1←v20864;
      };
SOURCE(24567, 30)
   if (( (int)len2←v20892 ==  (int)0)) {
SOURCE(24584, 13)
      return(pos1←v11332);
      };
SOURCE(24599, 583)
   if (( (int)len1←v20864 >=  (int)len2←v20892)) {
SOURCE(24620, 576)
      {
         word c2←v20964;
         word rem2←v20992;
SOURCE(24622, 29)
         c2←v20964 = (word) Fetch←P420(s2←v11304, 0);
SOURCE(24678, 18)
         rem2←v20992 = (len2←v20892 - 1);
SOURCE(24728, 41)
         if (( (int)(len1←v20864 - pos1←v11332) <  (int)len2←v20892)) {
SOURCE(24753, 16)
            pos1←v11332 = (len1←v20864 - len2←v20892);
            };
SOURCE(24771, 411)
         if ((0 != case←v11360)) {
SOURCE(24786, 139)
            {
               register word i←v21036;
               i←v21036 = pos1←v11332;
               if (( (int)0 >  (int)i←v21036)) {
                  goto lab←L100170;
                  };
               lab←L100173: ;
               {
                  word c1←v21080;
SOURCE(24823, 29)
                  c1←v21080 = (word) Fetch←P420(s1←v11276, i←v21036);
SOURCE(24854, 71)
                  if ( ( (c1←v21080 == c2←v20964) ?  ( ( (int)rem2←v20992 ==  (int)0) ? 1 : ( (int)(word) Run←P2220(s1←v11276, (i←v21036 + 
                     1), s2←v11304, 1, case←v11360, 2147483647) ==  (int)rem2←v20992) )  : 0 ) ) {
SOURCE(24915, 10)
                     return(i←v21036);
                     };
                  };
               if (( (int)0 >=  (int)i←v21036)) {
                  goto lab←L100170;
                  };
               i←v21036 = (i←v21036 - 1);
               goto lab←L100173;
               lab←L100170: ;
               };
            }
         else {
SOURCE(24945, 47)
            if ( ( (c2←v20964 <= 90) ? (c2←v20964 >= 65) : 0 ) ) {
SOURCE(24975, 17)
               c2←v20964 = BCK((c2←v20964 + 32), 256);
               };
SOURCE(24994, 188)
            {
               register word i←v21124;
               i←v21124 = pos1←v11332;
               if (( (int)0 >  (int)i←v21124)) {
                  goto lab←L100174;
                  };
               lab←L100177: ;
               {
                  word c1←v21168;
SOURCE(25031, 29)
                  c1←v21168 = (word) Fetch←P420(s1←v11276, i←v21124);
SOURCE(25062, 47)
                  if ( ( (c1←v21168 <= 90) ? (c1←v21168 >= 65) : 0 ) ) {
SOURCE(25092, 17)
                     c1←v21168 = BCK((c1←v21168 + 32), 256);
                     };
SOURCE(25111, 71)
                  if ( ( (c1←v21168 == c2←v20964) ?  ( ( (int)rem2←v20992 ==  (int)0) ? 1 : ( (int)(word) Run←P2220(s1←v11276, (i←v21124 + 
                     1), s2←v11304, 1, case←v11360, 2147483647) ==  (int)rem2←v20992) )  : 0 ) ) {
SOURCE(25172, 10)
                     return(i←v21124);
                     };
                  };
               if (( (int)0 >=  (int)i←v21124)) {
                  goto lab←L100174;
                  };
               i←v21124 = (i←v21124 - 1);
               goto lab←L100177;
               lab←L100174: ;
               };
            };
         };
      };
SOURCE(25199, 11)
   return( (word) -1);
   }

static word Match←P2520(formal←c0916, formal←c0917, formal←c0918)
   word formal←c0916;
   word formal←c0917;
   word formal←c0918;
   {
   W9 var←c50392;
   /* declaration of pattern←v11464 skipped */ 
   /* declaration of object←v11492 skipped */ 
   /* declaration of case←v11520 skipped */ 
   word var←c11564;
   /* declaration of var←c47704 skipped */ 
   word len1←v21240;
   word len2←v21268;
   (* (( (ptr) &var←c50392)+4)/* pattern←v11464 */  ) = formal←c0916;
   (* (( (ptr) &var←c50392)+5)/* object←v11492 */  ) = formal←c0917;
   (* (( (ptr) &var←c50392)+6)/* case←v11520 */  ) = formal←c0918;
   /* Match: */ 
SOURCE(25216, 1289)
   {
      word tmpAddr55;
      tmpAddr55 = (word) (( (ptr) &var←c50392)+7)/* var←c47704 */ ;
      (*  (ptr) tmpAddr55 ) = ( ((word)  (fPt) submatch←P7056) );
      (* (( (ptr) tmpAddr55) + 1) ) = 1;
      };
SOURCE(26045, 31)
   len1←v21240 = (word) InlineSize←P2040((* ((( (ptr) &var←c50392)+4)/* pattern←v11464 */ ) ));
SOURCE(26078, 30)
   len2←v21268 = (word) InlineSize←P2040((* ((( (ptr) &var←c50392)+5)/* object←v11492 */ ) ));
SOURCE(26110, 348)
   lab←L100180: ;
   if (( (int)len1←v21240 >  (int)0)) {
      }
   else {
      goto lab←L100178;
      };
   {
      word n←v21500;
      word c1←v21528;
      word c2←v21556;
SOURCE(26128, 17)
      n←v21500 = (len1←v21240 - 1);
SOURCE(26147, 34)
      c1←v21528 = (word) Fetch←P420((* (( (ptr) &var←c50392)+4)/* pattern←v11464 */  ), n←v21500);
SOURCE(26193, 16)
      if ((c1←v21528 == 42)) {
SOURCE(26209, 4)
         goto lab←L100179;
         };
SOURCE(26215, 31)
      if (( (int)len2←v21268 ==  (int)0)) {
SOURCE(26232, 14)
         return(0);
         };
SOURCE(26248, 8)
      len1←v21240 = n←v21500;
SOURCE(26258, 15)
      len2←v21268 = (len2←v21268 - 1);
SOURCE(26275, 30)
      c2←v21556 = (word) Fetch←P420((* (( (ptr) &var←c50392)+5)/* object←v11492 */  ), len2←v21268);
SOURCE(26307, 116)
      if ((0 == (* (( (ptr) &var←c50392)+6)/* case←v11520 */  ))) {
SOURCE(26327, 47)
         if ( ( (c1←v21528 <= 90) ? (c1←v21528 >= 65) : 0 ) ) {
SOURCE(26357, 17)
            c1←v21528 = BCK((c1←v21528 + 32), 256);
            };
SOURCE(26376, 47)
         if ( ( (c2←v21556 <= 90) ? (c2←v21556 >= 65) : 0 ) ) {
SOURCE(26406, 17)
            c2←v21556 = BCK((c2←v21556 + 32), 256);
            };
         };
SOURCE(26428, 30)
      if ((c1←v21528 != c2←v21556)) {
SOURCE(26444, 14)
         return(0);
         };
      };
   goto lab←L100180;
   lab←L100178: ;
   lab←L100179: ;
SOURCE(26469, 36)
   return((word) submatch←P7056(0, len1←v21240, 0, len2←v21268, (word) (( (bPt) &var←c50392)+28)/* var←c47704 */ ));
   }

static word submatch←P7056(i1←v21344, len1←v21372, i2←v21400, len2←v21428, formal←c50424)
   word i1←v21344;
   word len1←v21372;
   word i2←v21400;
   word len2←v21428;
   word formal←c50424;
   {
   word var←c21472;
   formal←c50424 = (formal←c50424 - 28);
   /* submatch: */ 
SOURCE(25305, 735)
SOURCE(25388, 624)
   lab←L100183: ;
   if (( (int)len1←v21372 >  (int)0)) {
      }
   else {
      goto lab←L100181;
      };
   {
      word c1←v21600;
SOURCE(25406, 35)
      c1←v21600 = (word) Fetch←P420((* (( (ptr) formal←c50424)+4) ), i1←v21344);
SOURCE(25443, 280)
      if ((c1←v21600 == 42)) {
SOURCE(25461, 30)
         if (( (int)len1←v21372 ==  (int)1)) {
SOURCE(25478, 13)
            return(1);
            };
SOURCE(25493, 213)
         {
            word j1←v21644;
            word nlen1←v21672;
            word j2←v21700;
            word nlen2←v21728;
SOURCE(25517, 16)
            j1←v21644 = (i1←v21344 + 1);
SOURCE(25535, 21)
            nlen1←v21672 = (len1←v21372 - 1);
SOURCE(25558, 12)
            j2←v21700 = i2←v21400;
SOURCE(25572, 17)
            nlen2←v21728 = len2←v21428;
SOURCE(25591, 104)
            lab←L100186: ;
            if (( (int)nlen2←v21728 >=  (int)0)) {
               }
            else {
               goto lab←L100184;
               };
SOURCE(25611, 52)
            if ((0 != (word) submatch←P7056(j1←v21644, nlen1←v21672, j2←v21700, nlen2←v21728, (word) (( (bPt) formal←c50424)+28)))) {
SOURCE(25650, 13)
               return(1);
               };
SOURCE(25665, 11)
            j2←v21700 = (j2←v21700 + 1);
SOURCE(25678, 17)
            nlen2←v21728 = (nlen2←v21728 - 1);
            goto lab←L100186;
            lab←L100184: ;
            };
SOURCE(25709, 14)
         return(0);
         };
SOURCE(25728, 32)
      if (( (int)len2←v21428 <=  (int)0)) {
SOURCE(25746, 14)
         return(0);
         };
SOURCE(25762, 189)
      {
         word c2←v21772;
SOURCE(25763, 34)
         c2←v21772 = (word) Fetch←P420((* (( (ptr) formal←c50424)+5) ), i2←v21400);
SOURCE(25799, 115)
         if ((0 == (* (( (ptr) formal←c50424)+6) ))) {
SOURCE(25818, 47)
            if ( ( (c1←v21600 <= 90) ? (c1←v21600 >= 65) : 0 ) ) {
SOURCE(25848, 17)
               c1←v21600 = BCK((c1←v21600 + 32), 256);
               };
SOURCE(25867, 47)
            if ( ( (c2←v21772 <= 90) ? (c2←v21772 >= 65) : 0 ) ) {
SOURCE(25897, 17)
               c2←v21772 = BCK((c2←v21772 + 32), 256);
               };
            };
SOURCE(25919, 30)
         if ((c1←v21600 != c2←v21772)) {
SOURCE(25935, 14)
            return(0);
            };
         };
SOURCE(25954, 11)
      i1←v21344 = (i1←v21344 + 1);
SOURCE(25967, 15)
      len1←v21372 = (len1←v21372 - 1);
SOURCE(25984, 11)
      i2←v21400 = (i2←v21400 + 1);
SOURCE(25997, 15)
      len2←v21428 = (len2←v21428 - 1);
      };
   goto lab←L100183;
   lab←L100181: ;
SOURCE(26023, 17)
   return( (unsigned) ( (int)len2←v21428 ==  (int)0));
   }

static word SkipTo←P2580(s←v11624, formal←c0919, skip←v11680)
   word s←v11624;
   word formal←c0919;
   word skip←v11680;
   {
   W9 var←c50456;
   /* declaration of pos←v11652 skipped */ 
   word var←c11724;
   /* declaration of var←c47768 skipped */ 
   word len←v21816;
   /* declaration of skipText←v21844 skipped */ 
   /* declaration of skiplen←v21872 skipped */ 
   (* (( (ptr) &var←c50456)+4)/* pos←v11652 */  ) = formal←c0919;
   /* SkipTo: */ 
SOURCE(26512, 475)
   {
      word tmpAddr56;
      tmpAddr56 = (word) (( (ptr) &var←c50456)+5)/* var←c47768 */ ;
      (*  (ptr) tmpAddr56 ) = ( ((word)  (fPt) CharMatch←P7356) );
      (* (( (ptr) tmpAddr56) + 1) ) = 1;
      };
SOURCE(26590, 24)
   len←v21816 = (word) InlineSize←P2040(s←v11624);
SOURCE(26616, 35)
   (* (( (ptr) &var←c50456)+7)/* skipText←v21844 */  ) = (word) Flatten←P720(skip←v11680, 0, 2147483647);
SOURCE(26653, 60)
   {
      word tc57;
      if (((* (( (ptr) &var←c50456)+7)/* skipText←v21844 */  ) == 0)) {
         tc57 =  (word) 0;
         }
      else {
         tc57 =  (word)  (unsigned) ( (((unsigned)(*  (hPt) (* (( (ptr) &var←c50456)+7)/* skipText←v21844 */  ) ) << 17) >> 17) );
         };
      (* (( (ptr) &var←c50456)+8)/* skiplen←v21872 */  ) = tc57;
      };
SOURCE(26715, 255)
   if ( ( ( (int)(* (( (ptr) &var←c50456)+4)/* pos←v11652 */  ) <  (int)len←v21816) ? ((* (( (ptr) &var←c50456)+8)/* skiplen←v21872 */  ) != 0) : 0 ) ) {
SOURCE(26749, 223)
SOURCE(26916, 54)
      if ((0 != (word) Map←P480(s←v11624, (* (( (ptr) &var←c50456)+4)/* pos←v11652 */  ), (len←v21816 - (* (( (ptr) &var←c50456)+4)
         /* pos←v11652 */  )), (word) (( (bPt) &var←c50456)+20)/* var←c47768 */ ))) {
SOURCE(26958, 12)
         return((* (( (ptr) &var←c50456)+4)/* pos←v11652 */  ));
         };
      };
SOURCE(26975, 12)
   return(len←v21816);
   }

static word CharMatch←P7356(c←v21992, formal←c50488)
   word c←v21992;
   word formal←c50488;
   {
   word var←c22036;
   formal←c50488 = (formal←c50488 - 20);
   /* CharMatch: */ 
SOURCE(26751, 17)
SOURCE(26804, 67)
   {
      register word i←v22064 = 0;
      register word noName←c47800;
      noName←c47800 = (* (( (ptr) formal←c50488)+8) );
      if ((i←v22064 >= noName←c47800)) {
         goto lab←L100187;
         };
      lab←L100190: ;
SOURCE(26834, 37)
      {
         word limit58;
         if ((c←v21992 ==  (unsigned) (word) (* ((( (bPt) (* (( (ptr) formal←c50488)+7) ))+4)+(
               limit58 = (word)  (unsigned) ( (((unsigned)(* (( (hPt) (* (( (ptr) formal←c50488)+7) ))+1) ) << 17) >> 17) ),
               BCK(i←v22064, limit58)
               )) ))) {
SOURCE(26858, 13)
            return(1);
            };
         };
      i←v22064 = (i←v22064 + 1);
      if ((i←v22064 < noName←c47800)) {
         goto lab←L100190;
         };
      lab←L100187: ;
      };
SOURCE(26882, 13)
   (* (( (ptr) formal←c50488)+4) ) = ((* (( (ptr) formal←c50488)+4) ) + 1);
SOURCE(26897, 14)
   return(0);
   }

static word SkipOver←P2640(s←v11784, formal←c0920, skip←v11840)
   word s←v11784;
   word formal←c0920;
   word skip←v11840;
   {
   W9 var←c50520;
   /* declaration of pos←v11812 skipped */ 
   word var←c11884;
   /* declaration of var←c47832 skipped */ 
   word len←v22108;
   /* declaration of skipText←v22136 skipped */ 
   /* declaration of skiplen←v22164 skipped */ 
   (* (( (ptr) &var←c50520)+4)/* pos←v11812 */  ) = formal←c0920;
   /* SkipOver: */ 
SOURCE(26995, 526)
   {
      word tmpAddr59;
      tmpAddr59 = (word) (( (ptr) &var←c50520)+5)/* var←c47832 */ ;
      (*  (ptr) tmpAddr59 ) = ( ((word)  (fPt) CharMatch←P7512) );
      (* (( (ptr) tmpAddr59) + 1) ) = 1;
      };
SOURCE(27075, 24)
   len←v22108 = (word) InlineSize←P2040(s←v11784);
SOURCE(27101, 35)
   (* (( (ptr) &var←c50520)+7)/* skipText←v22136 */  ) = (word) Flatten←P720(skip←v11840, 0, 2147483647);
SOURCE(27138, 60)
   {
      word tc60;
      if (((* (( (ptr) &var←c50520)+7)/* skipText←v22136 */  ) == 0)) {
         tc60 =  (word) 0;
         }
      else {
         tc60 =  (word)  (unsigned) ( (((unsigned)(*  (hPt) (* (( (ptr) &var←c50520)+7)/* skipText←v22136 */  ) ) << 17) >> 17) );
         };
      (* (( (ptr) &var←c50520)+8)/* skiplen←v22164 */  ) = tc60;
      };
SOURCE(27200, 31)
   if (( (int)(* (( (ptr) &var←c50520)+4)/* pos←v11812 */  ) >=  (int)len←v22108)) {
SOURCE(27219, 12)
      return(len←v22108);
      };
SOURCE(27233, 271)
   if (((* (( (ptr) &var←c50520)+8)/* skiplen←v22164 */  ) != 0)) {
SOURCE(27253, 253)
SOURCE(27450, 54)
      if ((0 != (word) Map←P480(s←v11784, (* (( (ptr) &var←c50520)+4)/* pos←v11812 */  ), (len←v22108 - (* (( (ptr) &var←c50520)+4)
         /* pos←v11812 */  )), (word) (( (bPt) &var←c50520)+20)/* var←c47832 */ ))) {
SOURCE(27492, 12)
         return((* (( (ptr) &var←c50520)+4)/* pos←v11812 */  ));
         };
      };
SOURCE(27509, 12)
   return((* (( (ptr) &var←c50520)+4)/* pos←v11812 */  ));
   }

static word CharMatch←P7512(c←v22284, formal←c50552)
   word c←v22284;
   word formal←c50552;
   {
   word var←c22328;
   formal←c50552 = (formal←c50552 - 20);
   /* CharMatch: */ 
SOURCE(27255, 17)
SOURCE(27306, 141)
SOURCE(27308, 54)
   {
      register word i←v22356 = 0;
      register word noName←c47864;
      noName←c47864 = (* (( (ptr) formal←c50552)+8) );
      if ((i←v22356 >= noName←c47864)) {
         goto lab←L100192;
         };
      lab←L100195: ;
SOURCE(27338, 24)
      {
         word limit61;
         if ((c←v22284 ==  (unsigned) (word) (* ((( (bPt) (* (( (ptr) formal←c50552)+7) ))+4)+(
               limit61 = (word)  (unsigned) ( (((unsigned)(* (( (hPt) (* (( (ptr) formal←c50552)+7) ))+1) ) << 17) >> 17) ),
               BCK(i←v22356, limit61)
               )) ))) {
SOURCE(27362, 11)
            goto lab←L100191;
            };
         };
      i←v22356 = (i←v22356 + 1);
      if ((i←v22356 < noName←c47864)) {
         goto lab←L100195;
         };
      lab←L100192: ;
      };
SOURCE(27384, 13)
   return(1);
   /* c2c skipped dead code */ 
   lab←L100191: ;
SOURCE(27415, 13)
   (* (( (ptr) formal←c50552)+4) ) = ((* (( (ptr) formal←c50552)+4) ) + 1);
SOURCE(27430, 14)
   return(0);
   }

static void VerifyStructure←P2700(formal←c0753, s←v11944)
   word formal←c0753;
   word s←v11944;
   {
   register ptr gf←c50584 =  (ptr) &globalframe;
   word leaves←v11988;
   word nodes←v12016;
   word maxDepth←v12044;
   /* VerifyStructure: */ 
SOURCE(27527, 1715)
SOURCE(27527, 1715)
   leaves←v11988 = 0;
SOURCE(27527, 1715)
   nodes←v12016 = 0;
SOURCE(27527, 1715)
   maxDepth←v12044 = 0;
   {
      word var←c48120;
SOURCE(27619, 22)
      if ((s←v11944 == 0)) {
SOURCE(27635, 6)
         goto lab←L100197;
         };
SOURCE(27643, 1520)
      {
         word var←c47896;
         var←c47896 =  (unsigned) (*(( short *)s←v11944 + 1)<0);
         if ((var←c47896 == 0)) {
SOURCE(27675, 10)
            leaves←v11988 = 1;
SOURCE(27687, 43)
            if (( (unsigned) ( (((unsigned)(*  (hPt) s←v11944 ) << 17) >> 17) ) >  (unsigned) ( (((unsigned)(* (( (hPt) s←v11944)+1) ) << 17) >> 17) ))) {
SOURCE(27712, 18)
               (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
               };
            }
         else {
            if ((var←c47896 == 1)) {
SOURCE(27741, 1397)
               {
                  word var←c47928;
                  var←c47928 =  (unsigned) ((* (( (bPt) s←v11944)+3) ) & 3);
                  switch (var←c47928) {
                     case 0: 
SOURCE(27773, 222)
                        {
                           word ref←v22400;
                           word len1←v22428;
SOURCE(27775, 18)
                           ref←v22400 = (* (( (ptr) s←v11944)+2) );
SOURCE(27795, 24)
                           len1←v22428 = (word) Size←P2100((* ((( (ptr) s←v11944)+2)) ));
SOURCE(27821, 53)
                           if (( (int)(* (( (ptr) s←v11944)+3) ) <  (int)0) || ( (int)(* (( (ptr) s←v11944)+1) ) <=  (int)0)) {
SOURCE(27856, 18)
/*1*/   (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
/*1*/   };
SOURCE(27876, 50)
                           if (( (int)len1←v22428 <  (int)((* (( (ptr) s←v11944)+3) ) + (* (( (ptr) s←v11944)+1) )))) {
SOURCE(27908, 18)
/*1*/   (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
/*1*/   };
SOURCE(27928, 48)
                           {
/*1*/   W3 var←c47960;
/*1*/   (void) VerifyStructure←P2700((word) &var←c47960, ref←v22400);
/*1*/   maxDepth←v12044 = var←c47960.f2;
/*1*/   nodes←v12016 = var←c47960.f1;
/*1*/   leaves←v11988 = var←c47960.f0;
/*1*/   };
SOURCE(27978, 17)
                           nodes←v12016 = (nodes←v12016 + 1);
                           };
                        break;
                     case 1: 
SOURCE(28008, 432)
                        {
                           word leaves1←v22472;
                           word nodes1←v22500;
                           word maxDepth1←v22528;
                           word left←v22556;
                           word lSize←v22584;
                           word right←v22612;
                           word rSize←v22640;
SOURCE(28041, 19)
                           left←v22556 = (* (( (ptr) s←v11944)+2) );
SOURCE(28062, 23)
                           lSize←v22584 = (word) Size←P2100(left←v22556);
SOURCE(28087, 20)
                           right←v22612 = (* (( (ptr) s←v11944)+3) );
SOURCE(28109, 24)
                           rSize←v22640 = (word) Size←P2100(right←v22612);
SOURCE(28135, 52)
                           {
/*1*/   W3 var←c47992;
/*1*/   (void) VerifyStructure←P2700((word) &var←c47992, left←v22556);
/*1*/   maxDepth1←v22528 = var←c47992.f2;
/*1*/   nodes1←v22500 = var←c47992.f1;
/*1*/   leaves1←v22472 = var←c47992.f0;
/*1*/   };
SOURCE(28189, 50)
                           {
/*1*/   W3 var←c48024;
/*1*/   (void) VerifyStructure←P2700((word) &var←c48024, right←v22612);
/*1*/   maxDepth←v12044 = var←c48024.f2;
/*1*/   nodes←v12016 = var←c48024.f1;
/*1*/   leaves←v11988 = var←c48024.f0;
/*1*/   };
SOURCE(28241, 25)
                           leaves←v11988 = (leaves←v11988 + leaves1←v22472);
SOURCE(28268, 26)
                           nodes←v12016 = ((nodes←v12016 + nodes1←v22500) + 1);
SOURCE(28296, 49)
                           if (( (int)maxDepth1←v22528 >  (int)maxDepth←v12044)) {
SOURCE(28325, 20)
/*1*/   maxDepth←v12044 = maxDepth1←v22528;
/*1*/   };
SOURCE(28347, 49)
                           if (( (int)(* (( (ptr) s←v11944)+1) ) !=  (int)(lSize←v22584 + rSize←v22640))) {
SOURCE(28378, 18)
/*1*/   (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
/*1*/   };
SOURCE(28398, 40)
                           if (( (int)(* (( (ptr) s←v11944)+4) ) !=  (int)lSize←v22584)) {
SOURCE(28420, 18)
/*1*/   (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
/*1*/   };
                           };
                        break;
                     case 2: 
SOURCE(28454, 575)
                        {
                           word leaves1←v22684;
                           word nodes1←v22712;
                           word maxDepth1←v22740;
                           word old←v22768;
                           word oldSize←v22796;
                           word repl←v22824;
                           word replSize←v22852;
SOURCE(28487, 18)
                           old←v22768 = (* (( (ptr) s←v11944)+2) );
SOURCE(28507, 24)
                           oldSize←v22796 = (word) Size←P2100(old←v22768);
SOURCE(28533, 22)
                           repl←v22824 = (* (( (ptr) s←v11944)+3) );
SOURCE(28557, 26)
                           replSize←v22852 = (word) Size←P2100(repl←v22824);
SOURCE(28585, 48)
                           {
/*1*/   W3 var←c48056;
/*1*/   (void) VerifyStructure←P2700((word) &var←c48056, old←v22768);
/*1*/   maxDepth←v12044 = var←c48056.f2;
/*1*/   nodes←v12016 = var←c48056.f1;
/*1*/   leaves←v11988 = var←c48056.f0;
/*1*/   };
SOURCE(28635, 52)
                           {
/*1*/   W3 var←c48088;
/*1*/   (void) VerifyStructure←P2700((word) &var←c48088, repl←v22824);
/*1*/   maxDepth1←v22740 = var←c48088.f2;
/*1*/   nodes1←v22712 = var←c48088.f1;
/*1*/   leaves1←v22684 = var←c48088.f0;
/*1*/   };
SOURCE(28689, 25)
                           leaves←v11988 = (leaves←v11988 + leaves1←v22684);
SOURCE(28716, 26)
                           nodes←v12016 = ((nodes←v12016 + nodes1←v22712) + 1);
SOURCE(28744, 49)
                           if (( (int)maxDepth←v12044 <  (int)maxDepth1←v22740)) {
SOURCE(28773, 20)
/*1*/   maxDepth←v12044 = maxDepth1←v22740;
/*1*/   };
SOURCE(28795, 67)
                           if (( (int)(* (( (ptr) s←v11944)+4) ) >  (int)(* (( (ptr) s←v11944)+5) )) || ( (int)(* (( (ptr) s←v11944)+4) ) >  (int)(* (
/*1*/   ( (ptr) s←v11944)+6) ))) {
SOURCE(28844, 18)
/*1*/   (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
/*1*/   };
SOURCE(28864, 56)
                           if (( (int)((* (( (ptr) s←v11944)+6) ) - (* (( (ptr) s←v11944)+4) )) !=  (int)replSize←v22852)) {
SOURCE(28902, 18)
/*1*/   (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
/*1*/   };
SOURCE(28922, 58)
                           if (( (int)(* (( (ptr) s←v11944)+4) ) <  (int)0) || ( (int)(* (( (ptr) s←v11944)+4) ) >  (int)(* (( (ptr) s←v11944)+1) ))) {
SOURCE(28962, 18)
/*1*/   (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
/*1*/   };
SOURCE(28982, 45)
                           if (( (int)(* (( (ptr) s←v11944)+5) ) >  (int)oldSize←v22796)) {
SOURCE(29009, 18)
/*1*/   (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
/*1*/   };
                           };
                        break;
                     case 3: 
SOURCE(29044, 10)
                        leaves←v11988 = 1;
SOURCE(29056, 54)
                        if (( (int)(* (( (ptr) s←v11944)+1) ) <  (int)0) || ((* (( (ptr) s←v11944)+3) ) == 0)) {
SOURCE(29092, 18)
                           (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
                           };
                        break;
                     default: 
SOURCE(29126, 12)
                        (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1124), 0);
                        break;
                     };
                  };
               }
            else {
SOURCE(29151, 12)
               (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1124), 0);
               };
            };
         };
SOURCE(29165, 23)
      maxDepth←v12044 = (maxDepth←v12044 + 1);
SOURCE(29190, 52)
      {
         word x62;
         if ((s←v11944 == 0)) {
            var←c48120 = 0;
            goto lab←L100198;
            };
         {
            word var←c48152;
            var←c48152 = s←v11944;
            if ((var←c48152 == 0)) {
               goto lab←L100199;
               };
            if (( (unsigned) (*(( short *)var←c48152 + 1)<0) == 1)) {
               {
                  word node←v36928;
                  node←v36928 = var←c48152;
                  var←c48120 =  (unsigned) (((unsigned)(* (( (hPt) node←v36928)+1) ) << 17) >> 19);
                  };
               }
            else {
               lab←L100199: ;
               var←c48120 = 1;
               goto lab←L100198;
               };
            };
         lab←L100198: ;
         x62 =  (word) ( (int)maxDepth←v12044 !=  (int)var←c48120);
         if (x62) {
SOURCE(29224, 18)
            (void) XR←RaiseError((word) (( (bPt) gf←c50584)+1128), 0);
            };
         };
      };
   /* removed tail goto */ 
   lab←L100197: ;
   (*  (ptr) formal←c0753 ) = leaves←v11988;
   (* (( (ptr) formal←c0753)+1) ) = nodes←v12016;
   (* (( (ptr) formal←c0753)+2) ) = maxDepth←v12044;
   return;
   }

static void InitMinSizeForHeight←P2760()
   {
   register ptr gf←c50616 =  (ptr) &globalframe;
   /* InitMinSizeForHeight: */ 
SOURCE(29493, 311)
SOURCE(29524, 280)
   if (((* (( (ptr) gf←c50616)+265)/* minSizeForHeight←v4372 */  ) == 0)) {
SOURCE(29555, 251)
      {
         word h←v22896;
SOURCE(29557, 50)
         {
            word pd63;
            pd63 = (*  (ptr) (* (( (ptr) gf←c50616)+8)/* untracedZone←v2916 */  ) );
            h←v22896 = (word) ( *( (fPt) ((*  (ptr) pd63 ))))((* (( (ptr) gf←c50616)+8)/* untracedZone←v2916 */  ), 128, (* (( (ptr) gf←c50616)+278)
                ), pd63);
            };
SOURCE(29609, 8)
         (*  (ptr) h←v22896 ) = 0;
SOURCE(29619, 8)
         (* (( (ptr) h←v22896)+1) ) = 1;
SOURCE(29629, 21)
         (* (( (ptr) h←v22896)+2) ) = 25;
SOURCE(29652, 121)
         {
            register word i←v22952 = 3;
            lab←L100203: ;
SOURCE(29695, 78)
            if (( (int)(2147483647 - (* (( (ptr) h←v22896)+BCK((i←v22952 - 1), 32)) )) <  (int)(* (( (ptr) h←v22896)+BCK((i←v22952 - 2), 32)
               ) ))) {
SOURCE(29730, 21)
               (* (( (ptr) h←v22896)+BCK(i←v22952, 32)) ) = 2147483647;
               }
            else {
SOURCE(29751, 22)
               (* (( (ptr) h←v22896)+BCK(i←v22952, 32)) ) = ((* (( (ptr) h←v22896)+BCK((i←v22952 - 1), 32)) ) + (* (( (ptr) h←v22896)+BCK(
                     (i←v22952 - 2), 32)) ));
               };
            if ((i←v22952 >= 31)) {
               goto lab←L100200;
               };
            i←v22952 = (i←v22952 + 1);
            goto lab←L100203;
            lab←L100200: ;
            };
SOURCE(29784, 20)
         (* (( (ptr) gf←c50616)+265)/* minSizeForHeight←v4372 */  ) = h←v22896;
         };
      };
   }

static word PartIsBalanced←P2820(part←v28344)
   W3 part←v28344;
   {
   register ptr gf←c50648 =  (ptr) &globalframe;
   word var←c28388;
   word size←v22996;
   word height←v23024;
   /* PartIsBalanced: */ 
SOURCE(29813, 516)
SOURCE(29841, 33)
   size←v22996 = (word) InlineSize←P2040(part←v28344.f0);
SOURCE(29876, 36)
   if ((part←v28344.f0 == 0)) {
      height←v23024 = 0;
      goto lab←L100204;
      };
   {
      word var←c48216;
      var←c48216 = part←v28344.f0;
      if ((var←c48216 == 0)) {
         goto lab←L100205;
         };
      if (( (unsigned) (*(( short *)var←c48216 + 1)<0) == 1)) {
         {
            word node←v36884;
            node←v36884 = var←c48216;
            height←v23024 =  (unsigned) (((unsigned)(* (( (hPt) node←v36884)+1) ) << 17) >> 19);
            };
         }
      else {
         lab←L100205: ;
         height←v23024 = 1;
         goto lab←L100204;
         };
      };
   lab←L100204: ;
SOURCE(29914, 78)
   if ((( (int)part←v28344.f1 !=  (int)0) || ( (int)part←v28344.f2 !=  (int)size←v22996)) || ( (int)height←v23024 >=  (int)32)) {
SOURCE(29978, 14)
      return(0);
      };
SOURCE(29994, 53)
   if (((* (( (ptr) gf←c50648)+265)/* minSizeForHeight←v4372 */  ) == 0)) {
SOURCE(30025, 22)
      (void) InitMinSizeForHeight←P2760();
      };
SOURCE(30049, 54)
   if (( (int)size←v22996 <  (int)(* (( (ptr) (* (( (ptr) gf←c50648)+265)/* minSizeForHeight←v4372 */  ))+BCK(height←v23024, 32)
      ) ))) {
SOURCE(30089, 14)
      return(0);
      };
SOURCE(30105, 224)
   {
      word var←c48248;
      var←c48248 = part←v28344.f0;
      if ((var←c48248 == 0)) {
         goto lab←L100206;
         };
      {
         word tc65;
         word tc66;
         word tc67;
         if (( (unsigned) (*(( short *)var←c48248 + 1)<0) == 1)) {
            tc65 =  (word) ( (unsigned) ((* (( (bPt) var←c48248)+3) ) & 3) == 0);
            }
         else {
            tc65 =  (word) 0;
            };
         if (tc65) {
            {
               word substr←v23068;
               substr←v23068 = var←c48248;
SOURCE(30172, 18)
               return( (unsigned) ( (int)height←v23024 <=  (int)1));
               };
            };
         if (( (unsigned) (*(( short *)var←c48248 + 1)<0) == 1)) {
            tc66 =  (word) ( (unsigned) ((* (( (bPt) var←c48248)+3) ) & 3) == 1);
            }
         else {
            tc66 =  (word) 0;
            };
         if (tc66) {
            {
               word concat←v23124;
               concat←v23124 = var←c48248;
SOURCE(30232, 13)
               return(1);
               };
            };
         if (( (unsigned) (*(( short *)var←c48248 + 1)<0) == 1)) {
            tc67 =  (word) ( (unsigned) ((* (( (bPt) var←c48248)+3) ) & 3) == 2);
            }
         else {
            tc67 =  (word) 0;
            };
         if (tc67) {
            {
               word replace←v23180;
               replace←v23180 = var←c48248;
SOURCE(30289, 14)
               return(0);
               };
            };
         lab←L100206: ;
SOURCE(30316, 13)
         return(1);
         };
      };
   }

static word Balance←P2880(base←v12388, start←v12416, len←v12444, flat←v12472)
   word base←v12388;
   word start←v12416;
   word len←v12444;
   word flat←v12472;
   {
   word var←c12516;
   /* Balance: */ 
SOURCE(30335, 154)
SOURCE(30444, 45)
   {
      word var←c48312;
      var←c48312 = (word) NewBalance←P2940(base←v12388);
      return((word) Substr←P120(var←c48312, start←v12416, len←v12444));
      };
   }

static word NewBalance←P2940(rope←v12796)
   word rope←v12796;
   {
   W96 var←c50680;
   register ptr gf←c50712 =  (ptr) &globalframe;
   word var←c12840;
   /* declaration of var←c48344 skipped */ 
   /* declaration of var←c48376 skipped */ 
   /* declaration of var←c48408 skipped */ 
   /* declaration of var←c48440 skipped */ 
   /* declaration of a←v23236 skipped */ 
   /* declaration of accel←v23264 skipped */ 
   /* declaration of aN←v23292 skipped */ 
   W3 part←v23432;
   /* NewBalance: */ 
SOURCE(30644, 1576)
   {
      word tmpAddr68;
      tmpAddr68 = (word) (( (ptr) &var←c50680)+4)/* var←c48344 */ ;
      (*  (ptr) tmpAddr68 ) = ( ((word)  (fPt) BalanceRange←P8184) );
      (* (( (ptr) tmpAddr68) + 1) ) = 1;
      };
   {
      word tmpAddr69;
      tmpAddr69 = (word) (( (ptr) &var←c50680)+6)/* var←c48376 */ ;
      (*  (ptr) tmpAddr69 ) = ( ((word)  (fPt) SavePart←P8124) );
      (* (( (ptr) tmpAddr69) + 1) ) = 1;
      };
   {
      word tmpAddr70;
      tmpAddr70 = (word) (( (ptr) &var←c50680)+8)/* var←c48408 */ ;
      (*  (ptr) tmpAddr70 ) = ( ((word)  (fPt) ASub←P8064) );
      (* (( (ptr) tmpAddr70) + 1) ) = 1;
      };
   {
      word tmpAddr71;
      tmpAddr71 = (word) (( (ptr) &var←c50680)+10)/* var←c48440 */ ;
      (*  (ptr) tmpAddr71 ) = ( ((word)  (fPt) StoreA←P8004) );
      (* (( (ptr) tmpAddr71) + 1) ) = 1;
      };
SOURCE(30693, 7)
   (* (( (ptr) &var←c50680)+12) ) = 0;
   {
      W2 var←c48504;
      var←c48504.f0 = 0;
      var←c48504.f1 = 0;
      XR←FillLongWords(&(* (W80Pt) ((( (ptr) &var←c50680)+13))), &var←c48504, 2, 40);
      };
   (* (( (ptr) &var←c50680)+93) ) = 0;
SOURCE(30760, 21)
   (* (( (ptr) &var←c50680)+94)/* accel←v23264 */  ) = 0;
SOURCE(30783, 11)
   (* (( (ptr) &var←c50680)+95)/* aN←v23292 */  ) = 0;
SOURCE(32092, 34)
   part←v23432.f0 = rope←v12796;
   part←v23432.f1 = 0;
   part←v23432.f2 = (word) Size←P2100(rope←v12796);
SOURCE(32128, 40)
   (void) MapParts←P3000(part←v23432, (word) (( (bPt) &var←c50680)+24)/* var←c48376 */ , (word) (( (bPt) gf←c50712)+1160)/* var←c39256 */ )
   ;
SOURCE(32170, 50)
   return((word) BalanceRange←P8184(0, (* (( (ptr) &var←c50680)+95)/* aN←v23292 */  ), (part←v23432.f2 - part←v23432.f1), (word) (
         ( (bPt) &var←c50680)+16)/* var←c48344 */ ));
   }

static void StoreA←P8004(i←v23520, e←v23548, formal←c50776)
   word i←v23520;
   W2 e←v23548;
   word formal←c50776;
   {
   register ptr gf←c50744 =  (ptr) &globalframe;
   formal←c50776 = (formal←c50776 - 40);
   /* StoreA: */ 
SOURCE(30796, 366)
SOURCE(30835, 327)
   if (( (int)(i←v23520 - (* (( (ptr) formal←c50776)+12) )) <  (int)40)) {
SOURCE(30857, 26)
      {
         word idx72;
         (* (( (W2Pt) (( (ptr) formal←c50776)+13))+(
               idx72 = (word) (i←v23520 - (* (( (ptr) formal←c50776)+12) )),
               BCK(idx72, 40)
               )) ) = e←v23548;
         };
      }
   else {
SOURCE(30885, 65)
      if (((* (( (ptr) formal←c50776)+93) ) == 0)) {
SOURCE(30907, 26)
         {
            word var←c48600;
            var←c48600 = XR←NewObject(328, (* (( (ptr) gf←c50744)+279) ));
            (* (( (ptr) formal←c50776)+94) ) = var←c48600;
            (* (( (ptr) formal←c50776)+93) ) = var←c48600;
            };
SOURCE(30935, 15)
         (*  (ptr) (* (( (ptr) formal←c50776)+94) ) ) = 40;
         };
SOURCE(30953, 38)
      if (( (int)i←v23520 <  (int)(*  (ptr) (* (( (ptr) formal←c50776)+94) ) ))) {
SOURCE(30977, 14)
         (* (( (ptr) formal←c50776)+94) ) = (* (( (ptr) formal←c50776)+93) );
         };
SOURCE(30993, 130)
      lab←L100209: ;
      if (( (int)(i←v23520 - (*  (ptr) (* (( (ptr) formal←c50776)+94) ) )) >=  (int)40)) {
         }
      else {
         goto lab←L100207;
         };
SOURCE(31021, 81)
      if (((* (( (ptr) (* (( (ptr) formal←c50776)+94) ))+81) ) == 0)) {
SOURCE(31048, 22)
         (* (( (ptr) (* (( (ptr) formal←c50776)+94) ))+81) ) = XR←NewObject(328, (* (( (ptr) gf←c50744)+279) ));
SOURCE(31072, 30)
         (*  (ptr) (* (( (ptr) (* (( (ptr) formal←c50776)+94) ))+81) ) ) = ((*  (ptr) (* (( (ptr) formal←c50776)+94) ) ) + 40);
         };
SOURCE(31105, 18)
      (* (( (ptr) formal←c50776)+94) ) = (* (( (ptr) (* (( (ptr) formal←c50776)+94) ))+81) );
      goto lab←L100209;
      lab←L100207: ;
SOURCE(31134, 28)
      {
         word idx73;
         (* (( (W2Pt) (( (ptr) (* (( (ptr) formal←c50776)+94) ))+1))+(
               idx73 = (word) (i←v23520 - (*  (ptr) (* (( (ptr) formal←c50776)+94) ) )),
               BCK(idx73, 40)
               )) ) = e←v23548;
         };
      };
   }

static void ASub←P8064(formal←c0788, i←v23608, formal←c50808)
   word formal←c0788;
   word i←v23608;
   word formal←c50808;
   {
   W2 e←v23652;
   formal←c50808 = (formal←c50808 - 32);
   /* ASub: */ 
SOURCE(31170, 220)
SOURCE(31170, 220)
   e←v23652.f0 = 0;
   e←v23652.f1 = 0;
SOURCE(31216, 174)
   if (( (int)(i←v23608 - (* (( (ptr) formal←c50808)+12) )) <  (int)40)) {
SOURCE(31238, 26)
      {
         word idx74;
         e←v23652 = (* (( (W2Pt) (( (ptr) formal←c50808)+13))+(
               idx74 = (word) (i←v23608 - (* (( (ptr) formal←c50808)+12) )),
               BCK(idx74, 40)
               )) );
         };
      }
   else {
SOURCE(31266, 38)
      if (( (int)i←v23608 <  (int)(*  (ptr) (* (( (ptr) formal←c50808)+94) ) ))) {
SOURCE(31290, 14)
         (* (( (ptr) formal←c50808)+94) ) = (* (( (ptr) formal←c50808)+93) );
         };
SOURCE(31306, 54)
      lab←L100213: ;
      if (( (int)(i←v23608 - (*  (ptr) (* (( (ptr) formal←c50808)+94) ) )) >=  (int)40)) {
         }
      else {
         goto lab←L100211;
         };
SOURCE(31334, 26)
      (* (( (ptr) formal←c50808)+94) ) = (* (( (ptr) (* (( (ptr) formal←c50808)+94) ))+81) );
      goto lab←L100213;
      lab←L100211: ;
SOURCE(31362, 28)
      {
         word idx75;
         e←v23652 = (* (( (W2Pt) (( (ptr) (* (( (ptr) formal←c50808)+94) ))+1))+(
               idx75 = (word) (i←v23608 - (*  (ptr) (* (( (ptr) formal←c50808)+94) ) )),
               BCK(idx75, 40)
               )) );
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0788 ) = e←v23652;
   return;
   }

static void SavePart←P8124(part←v23712, formal←c50840)
   W3 part←v23712;
   word formal←c50840;
   {
   formal←c50840 = (formal←c50840 - 24);
   /* SavePart: */ 
SOURCE(31398, 178)
SOURCE(31430, 146)
   if (( (int)part←v23712.f2 >  (int)part←v23712.f1)) {
SOURCE(31460, 118)
      {
         word rope←v23900;
SOURCE(31462, 63)
         rope←v23900 = (word) Substr←P120(part←v23712.f0, part←v23712.f1, (part←v23712.f2 - part←v23712.f1));
SOURCE(31527, 36)
         {
            word var←c48696;
            var←c48696 = (word) InlineSize←P2040(rope←v23900);
            {
               W2 var←c48728;
               var←c48728.f0 = rope←v23900;
               var←c48728.f1 = var←c48696;
               (void) StoreA←P8004((* (( (ptr) formal←c50840)+95) ), var←c48728, (word) (( (bPt) formal←c50840)+40));
               };
            };
SOURCE(31565, 11)
         (* (( (ptr) formal←c50840)+95) ) = ((* (( (ptr) formal←c50840)+95) ) + 1);
         };
      };
   }

static word BalanceRange←P8184(first←v23772, end←v23800, size←v23828, formal←c50872)
   word first←v23772;
   word end←v23800;
   word size←v23828;
   word formal←c50872;
   {
   word var←c23872;
   formal←c50872 = (formal←c50872 - 16);
   /* BalanceRange: */ 
SOURCE(31584, 501)
   if (( (int)first←v23772 ==  (int)end←v23800)) {
SOURCE(31688, 11)
      return(0);
      }
   else {
      if (( (int)(end←v23800 - first←v23772) ==  (int)1)) {
SOURCE(31718, 24)
         {
            word var←c0883;
            W2 var←c0797;
            (void) ASub←P8064((word) &var←c0797, first←v23772, (word) (( (bPt) formal←c50872)+32));
            var←c0883 = var←c0797.f0;
            return(var←c0883);
            };
         }
      else {
SOURCE(31755, 332)
         {
            word i←v23944;
            word sizetoi←v23972;
            W2 var←c0800;
SOURCE(31757, 16)
            i←v23944 = (first←v23772 + 1);
SOURCE(31775, 31)
            (void) ASub←P8064((word) &var←c0800, first←v23772, (word) (( (bPt) formal←c50872)+32));
            sizetoi←v23972 = var←c0800.f1;
SOURCE(31808, 183)
            {
               register word sizei←v24016;
               W2 var←c0802;
               W2 var←c0803;
               (void) ASub←P8064((word) &var←c0802, i←v23944, (word) (( (bPt) formal←c50872)+32));
               sizei←v24016 = var←c0802.f1;
               lab←L100217: ;
               {
                  word tc76;
                  word x77;
                  word x78;
                  if (( (int)i←v23944 <  (int)(end←v23800 - 1))) {
                     if (( (int)IOP2( * ,  (int)(sizetoi←v23972 + sizei←v24016),  (int)2) <  (int)size←v23828)) {
                        tc76 =  (word) 1;
                        }
                     else {
                        tc76 =  (word) ((
                           x77 = (IOP2( * ,  (int)sizetoi←v23972,  (int)2) - size←v23828),
                           IABS(x77)
                           ) > (
                           x78 = (IOP2( * ,  (int)(sizetoi←v23972 + sizei←v24016),  (int)2) - size←v23828),
                           IABS(x78)
                           ));
                        };
                     }
                  else {
                     tc76 =  (word) 0;
                     };
                  if (tc76) {
                     }
                  else {
                     goto lab←L100214;
                     };
                  };
SOURCE(31955, 25)
               sizetoi←v23972 = (sizetoi←v23972 + sizei←v24016);
SOURCE(31982, 9)
               i←v23944 = (i←v23944 + 1);
               (void) ASub←P8064((word) &var←c0803, i←v23944, (word) (( (bPt) formal←c50872)+32));
               sizei←v24016 = var←c0803.f1;
               goto lab←L100217;
               lab←L100214: ;
               };
SOURCE(32002, 83)
            {
               word var←c48824;
               word var←c48856;
               var←c48824 = (word) BalanceRange←P8184(first←v23772, i←v23944, sizetoi←v23972, (word) (( (bPt) formal←c50872)+16));
               var←c48856 = (word) BalanceRange←P8184(i←v23944, end←v23800, (size←v23828 - sizetoi←v23972), (word) (( (bPt) formal←c50872)+16)
                  );
               return((word) Concat←P240(var←c48824, var←c48856));
               };
            };
         };
      };
   }

static void MapParts←P3000(part←v12916, action←v12944, stopDescent←v12972)
   W3 part←v12916;
   word action←v12944;
   word stopDescent←v12972;
   {
   register ptr gf←c50904 =  (ptr) &globalframe;
   /* MapParts: */ 
SOURCE(32249, 1515)
SOURCE(32325, 1439)
   {
      word tc79;
      if ((stopDescent←v12972 != 0)) {
         tc79 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) stopDescent←v12972 ))))(part←v12916, stopDescent←v12972));
         }
      else {
         tc79 =  (word) 0;
         };
      if (tc79) {
SOURCE(32371, 18)
         (void) ( *( (fPt) ((*  (ptr) action←v12944 ))))(part←v12916, action←v12944);
         }
      else {
SOURCE(32389, 1377)
         {
            word size←v24060;
SOURCE(32391, 33)
            size←v24060 = (word) InlineSize←P2040(part←v12916.f0);
SOURCE(32426, 85)
            if (( (int)part←v12916.f1 <  (int)0) ||  ( ( (int)part←v12916.f2 <  (int)part←v12916.f1) ? 1 : ( (int)part←v12916.f2 >  (int)(part←v12916.f1 + 
            size←v24060)) ) ) {
SOURCE(32498, 13)
               (void) XR←RaiseError((word) (( (bPt) gf←c50904)+1132), 0);
               };
SOURCE(32513, 1251)
            {
               word var←c48888;
               var←c48888 = part←v12916.f0;
               if ((var←c48888 == 0)) {
                  goto lab←L100218;
                  };
               {
                  word tc81;
                  word tc82;
                  word tc86;
                  if (( (unsigned) (*(( short *)var←c48888 + 1)<0) == 1)) {
                     tc81 =  (word) ( (unsigned) ((* (( (bPt) var←c48888)+3) ) & 3) == 0);
                     }
                  else {
                     tc81 =  (word) 0;
                     };
                  if (tc81) {
                     {
                        word substr←v24104;
                        substr←v24104 = var←c48888;
SOURCE(32582, 92)
                        {
                           W3 var←c48920;
                           var←c48920.f0 = (* (( (ptr) substr←v24104)+2) );
                           var←c48920.f1 = ((* (( (ptr) substr←v24104)+3) ) + part←v12916.f1);
                           var←c48920.f2 = ((* (( (ptr) substr←v24104)+3) ) + part←v12916.f2);
                           (void) MapParts←P3000(var←c48920, action←v12944, stopDescent←v12972);
                           };
                        };
                     goto endif080;
                     };
                  if (( (unsigned) (*(( short *)var←c48888 + 1)<0) == 1)) {
                     tc82 =  (word) ( (unsigned) ((* (( (bPt) var←c48888)+3) ) & 3) == 1);
                     }
                  else {
                     tc82 =  (word) 0;
                     };
                  if (tc82) {
                     {
                        word concat←v24160;
                        concat←v24160 = var←c48888;
SOURCE(32721, 117)
                        if (( (int)part←v12916.f1 <  (int)(* (( (ptr) concat←v24160)+4) ))) {
SOURCE(32755, 83)
                           {
/*1*/   W3 var←c48952;
/*1*/   var←c48952.f0 = (* (( (ptr) concat←v24160)+2) );
/*1*/   var←c48952.f1 = part←v12916.f1;
/*1*/   {
/*1*/      word x83;
/*1*/      word x84;
/*1*/      var←c48952.f2 = (x83 = part←v12916.f2,
/*1*/         x84 = (* (( (ptr) concat←v24160)+4) ),
/*1*/         MIN((int)(word), x83, x84));
/*1*/      };
/*1*/   (void) MapParts←P3000(var←c48952, action←v12944, stopDescent←v12972);
/*1*/   };
                           };
SOURCE(32843, 176)
                        if (( (int)part←v12916.f2 >  (int)(* (( (ptr) concat←v24160)+4) ))) {
SOURCE(32873, 148)
                           {
/*1*/   word newStart←v24216;
/*1*/   word newEnd←v24244;
SOURCE(32875, 45)
/*1*/   {
/*1*/      word x85;
/*1*/      newStart←v24216 = (x85 = (part←v12916.f1 - (* (( (ptr) concat←v24160)+4) )),
/*1*/         MAX((int)(word), x85, 0));
/*1*/      };
SOURCE(32922, 33)
/*1*/   newEnd←v24244 = (part←v12916.f2 - (* (( (ptr) concat←v24160)+4) ));
SOURCE(32957, 62)
/*1*/   {
/*1*/      W3 var←c48984;
/*1*/      var←c48984.f0 = (* (( (ptr) concat←v24160)+3) );
/*1*/      var←c48984.f1 = newStart←v24216;
/*1*/      var←c48984.f2 = newEnd←v24244;
/*1*/      (void) MapParts←P3000(var←c48984, action←v12944, stopDescent←v12972);
/*1*/      };
/*1*/   };
                           };
                        };
                     goto endif080;
                     };
                  if (( (unsigned) (*(( short *)var←c48888 + 1)<0) == 1)) {
                     tc86 =  (word) ( (unsigned) ((* (( (bPt) var←c48888)+3) ) & 3) == 2);
                     }
                  else {
                     tc86 =  (word) 0;
                     };
                  if (tc86) {
                     {
                        word replace←v24288;
                        replace←v24288 = var←c48888;
SOURCE(33069, 669)
                        {
                           word len1←v24344;
                           word len2←v24372;
                           word len3←v24400;
                           word offset3←v24428;
SOURCE(33071, 25)
                           len1←v24344 = (* (( (ptr) replace←v24288)+4) );
SOURCE(33098, 40)
                           len2←v24372 = ((* (( (ptr) replace←v24288)+6) ) - (* (( (ptr) replace←v24288)+4) ));
SOURCE(33140, 39)
                           len3←v24400 = ((* (( (ptr) replace←v24288)+1) ) - (* (( (ptr) replace←v24288)+6) ));
SOURCE(33181, 29)
                           offset3←v24428 = (* (( (ptr) replace←v24288)+5) );
SOURCE(33212, 106)
                           if (( (int)part←v12916.f1 <  (int)len1←v24344)) {
SOURCE(33240, 78)
/*1*/   {
/*1*/      W3 var←c49016;
/*1*/      var←c49016.f0 = (* (( (ptr) replace←v24288)+2) );
/*1*/      var←c49016.f1 = part←v12916.f1;
/*1*/      {
/*1*/         word x87;
/*1*/         var←c49016.f2 = (x87 = part←v12916.f2,
/*1*/            MIN((int)(word), x87, len1←v24344));
/*1*/         };
/*1*/      (void) MapParts←P3000(var←c49016, action←v12944, stopDescent←v12972);
/*1*/      };
/*1*/   };
SOURCE(33323, 200)
                           if ( ( ( (int)part←v12916.f1 <  (int)(len1←v24344 + len2←v24372)) ? ( (int)part←v12916.f2 >  (int)len1←v24344) : 0 ) ) {
SOURCE(33374, 151)
/*1*/   {
/*1*/      word newStart←v24472;
/*1*/      word newEnd←v24500;
SOURCE(33376, 39)
/*1*/      {
/*1*/         word x88;
/*1*/         newStart←v24472 = (x88 = (part←v12916.f1 - len1←v24344),
/*1*/            MAX((int)(word), x88, 0));
/*1*/         };
SOURCE(33417, 38)
/*1*/      {
/*1*/         word x89;
/*1*/         newEnd←v24500 = (x89 = (part←v12916.f2 - len1←v24344),
/*1*/            MIN((int)(word), x89, len2←v24372));
/*1*/         };
SOURCE(33457, 66)
/*1*/      {
/*1*/         W3 var←c49048;
/*1*/         var←c49048.f0 = (* (( (ptr) replace←v24288)+3) );
/*1*/         var←c49048.f1 = newStart←v24472;
/*1*/         var←c49048.f2 = newEnd←v24500;
/*1*/         (void) MapParts←P3000(var←c49048, action←v12944, stopDescent←v12972);
/*1*/         };
/*1*/      };
/*1*/   };
SOURCE(33528, 205)
                           if (( (int)part←v12916.f2 >  (int)(len1←v24344 + len2←v24372))) {
SOURCE(33557, 178)
/*1*/   {
/*1*/      word newStart←v24544;
/*1*/      word newEnd←v24572;
SOURCE(33559, 54)
/*1*/      {
/*1*/         word x90;
/*1*/         newStart←v24544 = ((x90 = (part←v12916.f1 - (len1←v24344 + len2←v24372)),
/*1*/            MAX((int)(word), x90, 0)) + offset3←v24428);
/*1*/         };
SOURCE(33615, 53)
/*1*/      {
/*1*/         word x91;
/*1*/         newEnd←v24572 = ((x91 = (part←v12916.f2 - (len1←v24344 + len2←v24372)),
/*1*/            MIN((int)(word), x91, len3←v24400)) + offset3←v24428);
/*1*/         };
SOURCE(33670, 63)
/*1*/      {
/*1*/         W3 var←c49080;
/*1*/         var←c49080.f0 = (* (( (ptr) replace←v24288)+2) );
/*1*/         var←c49080.f1 = newStart←v24544;
/*1*/         var←c49080.f2 = newEnd←v24572;
/*1*/         (void) MapParts←P3000(var←c49080, action←v12944, stopDescent←v12972);
/*1*/         };
/*1*/      };
/*1*/   };
                           };
                        };
                     goto endif080;
                     };
                  lab←L100218: ;
SOURCE(33752, 12)
                  (void) ( *( (fPt) ((*  (ptr) action←v12944 ))))(part←v12916, action←v12944);
                  goto endif080;
                  endif080: ;
                  };
               };
            };
         };
      };
   }

/* file: RopeImpl, module: RopeImpl, compiled at: April 11, 1994 1:52:45 pm PDT */ 
extern void XR←install←RopeImpl() {
   NoName←Q13464();
   }
extern void XR←run←RopeImpl() { XR←Start(&globalframe); }