const char [2] snl ; extern int rem ( int p , int q ); extern void readsymbol ( *p ); extern real float ( int n ); extern char [2] tostring ( int p ); extern char [256] substring ( char [256] s , int f , int t ); extern int freespace (); extern void svc ( int n , struct (null) r *); extern int addr ( *p ); extern int integer ( int n ); extern short int shortinteger ( int n ); extern char int byteinteger ( int n ); extern char [1] string ( int n ); extern struct (null) record ; (/*should not get here any more*/ int n ; /*or here*/) extern real real ( int n ); extern long real longreal ( int n ); extern char int length ( char [256] s ); extern char int charno ( char [256] s , int n ); extern int int ( real x ); extern int intpt ( real x ); extern void iocp ( int n ); extern int typeof ( *n ); extern int sizeof ( *n ); extern real fracpt ( real x ); extern void prompt ( char [16] s ); extern int nextsymbol (); extern void skipsymbol (); extern void printsymbol ( int sym ); extern void printstring ( char [256] s ); extern void write ( int v , int p ); extern void selectinput ( int n ); extern void selectoutput ( int n ); extern void openinput ( int n , char [32] fd ); extern void openoutput ( int n , char [32] fd ); extern void closeinput (); extern void closeoutput (); extern void resetinput (); extern void resetoutput (); extern char [9] time (); extern char [10] date (); extern int cputime (); extern int comreg ( int n ); extern void read ( *x ); extern void print ( real val , int before , int after ); extern void printfl ( real val , int places ); extern void space (); extern void spaces ( int n ); extern void newline (); extern void newlines ( int n ); typedef struct FILEFM filefm (adding record field UNIT , adding record field OWNER , adding record field N1 , adding record field N2 ); typedef struct EVENTFM eventfm (adding record field EVENT , adding record field SUB , adding record field EXTRA , adding record field MESSAGE , adding record field PC , adding record field X ); extern struct EVENTFM event ; extern void closeoutput (); extern void closeinput (); extern void openoutput ( int i , char [256] s ); extern void openinput ( int i , char [256] s ); typedef struct IMPCOMFM impcomfm (adding record field STATEMENTS , adding record field FLAGS , adding record field CODE , adding record field GLA , adding record field DIAGS , adding record field PERM , adding record field FILE , adding record field OPTION ); extern struct IMPCOMFM impcom ; int main(int argc, char **argv) { const char [5] version ; static int sparenames ; typedef struct ARFM arfm (adding record field CLASS , adding record field SUB , adding record field LINK , adding record field PTYPE , adding record field PAPP , adding record field PFORMAT , adding record field X , adding record field POS ); typedef struct TAGFM tagfm (adding record field APP , adding record field FORMAT , adding record field FLAGS , adding record field INDEX , adding record field TEXT , adding record field LINK ); // bounds [0 : 15] const char int *amap ; // bounds [0 : 15] const char int *atoms ; struct ARFM ar *; DIM 0x0001 0x0001 static int class ; static int x ; static int atom1 ; static int atom2 ; static int subatom ; static int type ; static int app ; static int format ; int hashvalue ; static int faulty ; static int faultrate ; static int lines ; static int textline ; static int margin ; static int errormargin ; static int errorsym ; static int column ; static int stats ; static int monpos ; static int sym ; static int symtype ; static int quote ; static int endmark ; static int cont ; static int csym ; static int decl ; static int dim ; static int specgiven ; static int escapeclass ; static int protection ; static int atomflags ; static int otype ; static int realsln ; static int last1 ; static int gentype ; static int ptype ; static int papp ; static int pformat ; static int force ; static int g ; static int gg ; static int mapgg ; static int fdef ; static int this ; static int nmin ; static int nmax ; static int rbase ; static int stbase ; static int gmin ; static int dmax ; static int tmin ; static int ss ; char [64] includefile ; static int includelist ; static int includelevel ; static int include ; static int perm ; static int progmode ; static int sstype ; static int specmode ; static int ocount ; static int limit ; static int copy ; static int order ; static int forwarn ; static int dubious ; static int dp ; static int pos1 ; static int pos2 ; static int pos ; static int dimension ; static int local ; static int fmbase ; static int searchbase ; static int formatlist ; int recid ; // bounds [0 : 133] static char int *char ; int *litpool ; DIM 0x0001 0x0001 static int lit ; static int lp ; static int blockx ; static int list ; static int control ; static int diag ; short int *hash ; DIM 0x0001 0x0001 struct TAGFM tag *; DIM 0x0001 0x0001 short int *dict ; DIM 0x0001 0x0001 char int *buff ; DIM 0x0001 0x0001 static int bp ; // bounds [0 : 255] const char [9] *text ; static int gmax ; // bounds [200 : 255] static short int *phrase ; // bounds [130 : 179] const char int *atomic ; // bounds [0 : 119] const short int *initial ; // bounds [0 : 1720] static short int *gram ; // bounds [0 : 1720] static short int *glink ; // bounds [32 : 607] const short int *kdict ; goto L_0001; void flushbuffer () { int j ; if (faulty != 0) goto L_0002; selectoutput (1); for (j = 1; j += 1; j != bp ) { printsymbol (buff [j ]); } L_0006: selectoutput (2); L_0002: bp = 0; return(0); } L_0001: goto L_0007; void printident ( int p , int mode ) { int j ; int ad ; // SELECT 5 p = /*RHSval*/tag [p ].{field 5}; if (p != 0) goto L_0008; if (mode == 0) goto L_0009; bp = (bp + 1); buff [bp ] = 63; L_0009: return; L_0008: ad = addr (dict [(p + 1)]); if (mode != 0) goto L_000a; printstring (*"TRINGstring!extern char [1] string Nn"(ad )); goto L_000b; L_000a: for (j = (ad + 1); j += 1; j != (ad + **byteinteger (ad ))) { bp = (bp + 1); buff [bp ] = **byteinteger (j ); } L_000f: L_000b: L_0007: goto L_0010; void abandon ( int n ) { // bounds [0 : 9] %switch reason ; int stream ; stream = 2; for (;;) { L_0011: if (sym == 10) goto L_0012; newline (); L_0012: printsymbol (42); write (lines , 4); space (); ->SJUMP_167(n ) SLABEL_167(0): printstring ("compiler error!"); goto U_00a9; SLABEL_167(1): printstring ("switch vector too large"); goto U_00a9; SLABEL_167(2): printstring ("too many names"); goto U_00a9; SLABEL_167(3): printstring ("program too complex"); goto U_00a9; SLABEL_167(4): printstring ("feature not implemented"); goto U_00a9; SLABEL_167(5): printstring ("input ended: "); if (quote == 0) goto L_0013; if (quote >= 0) goto L_0014; printsymbol (39); goto L_0015; L_0014: printsymbol (34); L_0015: goto L_0016; L_0013: printstring ("%endof"); if (progmode < 0) goto L_0017; printstring ("program"); goto L_0018; L_0017: printstring ("file"); L_0018: L_0016: printstring (" missing?"); goto U_00a9; SLABEL_167(6): printstring ("too many faults!"); goto U_00a9; SLABEL_167(7): printstring ("string constant too long"); goto U_00a9; SLABEL_167(8): printstring ("dictionary full"); goto U_00a9; SLABEL_167(9): printstring ("Included file "); U_00a9: newline (); printstring ("*** compilation abandoned ***"); newline (); if (stream != 0) goto L_0019; goto L_001a; L_0019: closeoutput (); stream = 0; selectoutput (0); } L_001a: exit(0); L_0010: goto L_001b; void op ( int code , int param ) { buff [(bp + 1)] = code ; buff [(bp + 2)] = (param >> 8); buff [(bp + 3)] = param ; bp = (bp + 3); L_001b: goto L_001c; void setconst ( int m ) { buff [(bp + 1)] = 78; buff [(bp + 5)] = m ; m = (m >> 8); buff [(bp + 4)] = m ; m = (m >> 8); buff [(bp + 3)] = m ; m = (m >> 8); buff [(bp + 2)] = m ; bp = (bp + 5); L_001c: goto L_001d; void compileblock ( int level , int blocktag , int dmin , int tmax , int id ) { int gapp (); void deletenames ( int quiet ); void analyse (); void compile (); int open ; open = 16384; int dbase ; dbase = dmax ; int tbase ; tbase = tmax ; int tstart ; tstart = tmax ; int label ; label = 4; int access ; access = 1; int inhibit ; inhibit = 0; short int *bflags ; // SELECT 3 bflags = &/*RHSval*/tag [blocktag ].{field 3}; int blocktype ; blocktype = (7 & (*bflags >> 4)); int blockform ; blockform = (15 & *bflags ); int blockfm ; // SELECT 2 blockfm = /*RHSval*/tag [blocktag ].{field 2}; int blockotype ; blockotype = otype ; int *blockapp ; // SELECT 1 blockapp = &/*RHSval*/tag [blocktag ].{field 1}; int l ; int newapp ; goto L_001d; void fault ( int n ) { // bounds [-5 : 22] %switch fm ; int st ; goto L_001d; void printss () { int s ; int p ; if (pos != 0) goto L_001e; return; L_001e: space (); p = 1; for (;;) { L_001f: if (p != pos1 ) goto L_0020; printsymbol (94); L_0020: if (p != pos ) goto L_0021; goto L_0022; L_0021: s = char [p ]; p = (p + 1); if (s == 10) goto L_0023; if (s != 37) goto L_0024; if (p != pos ) goto L_0024; L_0023: goto L_0022; L_0024: if (s >= 32) goto L_0025; if (s != 12) goto L_0026; s = 10; goto L_0027; L_0026: s = 32; L_0027: L_0025: printsymbol (s ); } L_0022: if (list > 0) goto L_0028; pos = 0; L_0028: L_001d: if (pos2 <= pos1 ) goto L_0029; pos1 = pos2 ; L_0029: if (sym == 10) goto L_002a; newline (); L_002a: st = 0; if (n != (-3)) goto L_002b; st = 2; L_002b: for (;;) { L_002c: selectoutput (st ); if (n >= 0) goto L_002d; printsymbol (63); pos1 = 0; goto L_002e; L_002d: printsymbol (42); L_002e: if (st == 0) goto L_002f; if (list > 0) goto L_0030; if (pos1 == 0) goto L_0030; spaces ((pos1 + margin )); printstring (" ! "); L_0030: goto L_0031; L_002f: if (include == 0) goto L_0032; printstring ("NCLUDEFILEincludefile!char [64] includefile INCLUDELIS"); L_0032: write (lines , 4); printsymbol (csym ); space (); L_0031: if ((-5) > n ) goto L_0033; if (n > 22) goto L_0033; ->SJUMP_195(n ) L_0033: printstring ("fault"); write (n , 2); goto U_00c6; SLABEL_195(-5): printstring ("Dubious statement"); dubious = 0; goto U_00c7; SLABEL_195(-4): printstring ("Non-local"); pos1 = forwarn ; forwarn = 0; goto U_00c6; SLABEL_195(-3): printident (x , 0); printstring (" unused"); goto U_00c8; SLABEL_195(-2): printstring ("\"}\""); goto U_00c9; SLABEL_195(-1): printstring ("access"); goto U_00c7; SLABEL_195(0): printstring ("form"); goto U_00c6; SLABEL_195(1): printstring ("atom"); goto U_00c6; SLABEL_195(2): printstring ("not declared"); goto U_00c6; SLABEL_195(3): printstring ("too complex"); goto U_00c6; SLABEL_195(4): printstring ("duplicate "); printident (x , 0); goto U_00c6; SLABEL_195(5): printstring ("type"); goto U_00c6; SLABEL_195(6): printstring ("match"); goto U_00c7; SLABEL_195(7): printstring ("context"); goto U_00c7; SLABEL_195(21): printstring ("context "); printident (this , 0); goto U_00c6; SLABEL_195(8): printstring ("%cycle"); goto U_00c9; SLABEL_195(9): printstring ("%start"); goto U_00c9; SLABEL_195(10): printstring ("size"); if (pos1 != 0) goto L_0034; write (lit , 1); L_0034: goto U_00c6; SLABEL_195(11): printstring ("bounds"); if (ocount < 0) goto L_0035; write (ocount , 1); L_0035: goto U_00c6; SLABEL_195(12): printstring ("index"); goto U_00c6; SLABEL_195(13): printstring ("order"); goto U_00c7; SLABEL_195(14): printstring ("not a location"); goto U_00c6; SLABEL_195(15): printstring ("%begin"); goto U_00c9; SLABEL_195(16): printstring ("%end"); goto U_00c9; SLABEL_195(17): printstring ("%repeat"); goto U_00c9; SLABEL_195(18): printstring ("%finish"); goto U_00c9; SLABEL_195(19): printstring ("result"); goto U_00c9; SLABEL_195(22): printstring ("format"); goto U_00c6; SLABEL_195(20): printsymbol (34); printident (x , 0); printsymbol (34); U_00c9: printstring (" missing"); goto U_00c8; U_00c7: pos1 = 0; U_00c6: printss (); U_00c8: newline (); if (st != 2) goto L_0036; goto L_0037; L_0036: st = 2; } L_0037: if (n < 0) goto L_0038; if ((4096 & diag ) == 0) goto L_0039; exit(0); L_0039: if (n == 13) goto L_003a; ocount = (-1); gg = 0; copy = 0; quote = 0; searchbase = 0; escapeclass = 0; gg = 0; L_003a: faulty = (faulty + 1); faultrate = (faultrate + 3); if (faultrate <= 30) goto L_003b; abandon (6); L_003b: if (faultrate > 0) goto L_003c; faultrate = 3; L_003c: L_0038: tbase = tstart ; if (list > 0) goto L_003d; if (sym == 10) goto L_003d; errormargin = column ; errorsym = sym ; sym = 10; L_003d: for (;;) { L_003e: dmin = (dmin - 1); dict [dmin ] = (-1); if (dmax != dmin ) goto L_003f; abandon (2); L_003f: if (list <= 0) goto L_0040; if (level <= 0) goto L_0040; write (lines , 5); spaces (((3 * level ) - 1)); if (blocktag != 0) goto L_0041; printstring ("Begin"); goto L_0042; L_0041: printstring ("Procedure "); printident (blocktag , 0); L_0042: newline (); L_0040: if (blocktag == 0) goto L_0043; analyse (); if (ss == 0) goto L_0044; compile (); L_0044: if (blockotype == 0) goto L_0045; if ((128 & *bflags ) != 0) goto L_0046; if (progmode > 0) goto L_0047; if (level != 1) goto L_0047; progmode = (-1); goto L_0048; L_0047: fault (7); L_0048: L_0046: L_0045: newapp = gapp (); if (specgiven == 0) goto L_0049; if (newapp == *blockapp ) goto L_004a; fault (6); L_004a: L_0049: *blockapp = newapp ; if (level >= 0) goto L_004b; deletenames (0); return; L_004b: goto L_004c; L_0043: open = 0; L_004c: for (;;) { L_004d: analyse (); if (ss != 0) goto L_004e; goto L_004f; L_004e: compile (); if (dubious == 0) goto L_0050; fault ((-5)); L_0050: if (bp < 128) goto L_0051; flushbuffer (); L_0051: if (sstype <= 0) goto L_0052; if (sstype != 2) goto L_0053; goto L_0054; L_0053: compileblock (specmode , blockx , dmin , tmax , id ); if (ss >= 0) goto L_0055; goto L_0054; L_0055: L_0052: L_004f: } L_0054: if (list <= 0) goto L_0056; if (level <= 0) goto L_0056; write (lines , 5); spaces (((3 * level ) - 1)); printstring ("End"); newline (); L_0056: deletenames (0); return; goto L_003e; int gapp () { void setcell ( int g , int tt ); void class ( struct TAGFM v *); struct TAGFM v *; int p ; int link ; int tp ; int c ; int ap ; int t ; if (tmax != local ) goto L_0057; return(0); L_0057: p = 719; link = 0; t = tmax ; for (;;) { L_0058: /*LHSaddr*/%record {TAGFM} v = &/*RHSval*/tag [t ]; t = (t - 1); class (/*RHSval*/*v ); if (c >= 0) goto L_0059; c = (-c ); setcell (196, tp ); tp = (-1); L_0059: setcell (c , tp ); if (t != local ) goto L_005a; goto L_005b; L_005a: setcell (140, (-1)); } L_005b: if (gmax <= gmin ) goto L_005c; abandon (3); L_005c: return(link ); goto L_003e; void setcell ( int g , int tt ) { for (;;) { L_005d: if (p == gmax ) goto L_005e; p = (p + 1); if (glink [p ] != link ) goto L_005f; if (gram [p ] != g ) goto L_005f; if (tt < 0) goto L_0060; if (gram [(p + 1)] != tt ) goto L_0061; if (glink [(p + 1)] != ap ) goto L_0061; L_0060: link = p ; return; L_0061: L_005f: } L_005e: gmax = (gmax + 1); gram [gmax ] = g ; glink [gmax ] = link ; link = gmax ; if (tt < 0) goto L_0062; gmax = (gmax + 1); gram [gmax ] = tt ; glink [gmax ] = ap ; L_0062: p = gmax ; L_003e: goto L_0063; void class ( struct TAGFM v *) { // bounds [0 : 15] const int *classmap ; int tags ; int type ; int form ; ap = 0; // SELECT 3 tags = /*RHSval*/*v .{field 3}; type = (7 & (tags >> 4)); form = (15 & tags ); // SELECT 2 tp = (type | (/*RHSval*/*v .{field 2} << 3)); c = classmap [form ]; if (type != 0) goto L_0064; if (form != 2) goto L_0064; c = 208; tp = 0; L_0064: if ((4096 & tags ) == 0) goto L_0065; // SELECT 1 ap = /*RHSval*/*v .{field 1}; L_0065: L_0063: for (;;) { L_0066: goto L_0066; void deletenames ( int quiet ) { int flags ; struct TAGFM tx *; for (;;) { L_0067: if (tmax <= tbase ) goto L_0068; x = tmax ; tmax = (tmax - 1); /*LHSaddr*/%record {TAGFM} tx = &/*RHSval*/tag [x ]; // SELECT 3 flags = /*RHSval*/*tx .{field 3}; if ((128 & flags ) == 0) goto L_0069; if ((512 & flags ) != 0) goto L_0069; fault (20); L_0069: if ((32768 & flags ) != 0) goto L_006a; if (level < 0) goto L_006a; if (list > 0) goto L_006a; if (quiet != 0) goto L_006b; fault ((-3)); L_006b: L_006a: // SELECT 5 // SELECT 6 dict [/*RHSval*/*tx .{field 5}] = /*RHSval*/*tx .{field 6}; } L_0068: L_0066: goto L_006c; void analyse () { int strp ; int mark ; int flags ; int proterr ; int k ; int s ; int c ; static int key ; short int node ; short int *z ; struct ARFM arp *; // bounds [180 : 200] %switch act ; // bounds [0 : 15] %switch paction ; goto L_006c; void traceanalysis () { int a ; goto L_006c; void show ( int a ) { if (0 >= a ) goto L_006d; if (a >= 130) goto L_006d; space (); printstring ("EXTtext!const char [9] *text Z"[a ]); goto L_006e; L_006d: write (a , 3); L_006e: L_006c: static int la1 ; static int la2 ; static int lsa ; static int lt ; if (monpos == pos ) goto L_006f; if (sym == 10) goto L_006f; newline (); L_006f: monpos = pos ; write (g , 3); space (); printstring ("EXTtext!const char [9] *text Z"[class ]); if ((16384 & gg ) == 0) goto L_0070; printsymbol (34); L_0070: a = (15 & (gg >> 8)); if (a == 0) goto L_0071; printsymbol (123); write (a , 0); printsymbol (125); L_0071: if (atom1 != la1 ) goto L_0072; if (atom2 != la2 ) goto L_0072; if (lsa != subatom ) goto L_0072; if (lt == type ) goto L_0073; L_0072: printstring (" ["); la1 = atom1 ; show (la1 ); la2 = atom2 ; show (la2 ); lsa = subatom ; write (lsa , 3); lt = type ; write (lt , 5); printsymbol (93); L_0073: newline (); for (;;) { L_0074: goto L_0074; void getsym () { readsymbol (sym ); if (pos == 133) goto L_0075; pos = (pos + 1); L_0075: char [pos ] = sym ; if (list > 0) goto L_0076; printsymbol (sym ); L_0076: column = (column + 1); L_0074: goto L_0077; void readsym () { static int last ; // bounds [0 : 127] const char int *mapped ; if (sym != 10) goto L_0078; U_00d4: lines = (lines + 1); if (endmark == 0) goto L_0079; printsymbol (endmark ); L_0079: U_00d5: pos = 0; pos1 = 0; pos2 = 0; margin = 0; column = 0; last = 0; endmark = 0; if (list > 0) goto L_007a; if (include == 0) goto L_007b; printstring (" &"); write (lines , (-4)); goto L_007c; L_007b: write (lines , 5); L_007c: csym = cont ; printsymbol (csym ); space (); if (errormargin == 0) goto L_007d; lines = (lines - 1); spaces (errormargin ); errormargin = 0; if (errorsym == 0) goto L_007e; printsymbol (errorsym ); pos = 1; **byteinteger ((addr (char [0]) + 1)) = errorsym ; sym = errorsym ; errorsym = 0; goto U_00d6; L_007e: L_007d: L_007a: U_00d7: symtype = 1; L_0078: U_00d8: readsymbol (sym ); if (pos == 133) goto L_007f; pos = (pos + 1); L_007f: char [pos ] = sym ; if (list > 0) goto L_0080; printsymbol (sym ); L_0080: column = (column + 1); U_00d6: if (sym == 10) goto L_0081; last = sym ; if (quote == 0) goto L_0082; return; L_0082: sym = mapped [(127 & sym )]; if (sym > 3) goto L_0083; if (sym != 0) goto L_0084; goto U_00d7; L_0084: if (sym != 1) goto L_0085; symtype = 2; goto U_00d8; L_0085: if (sym != 3) goto L_0086; cont = 43; goto U_00d5; L_0086: for (;;) { L_0087: getsym (); if (sym != 125) goto L_0088; goto U_00d8; L_0088: if (sym != 10) goto L_0089; goto U_00d9; L_0089: } L_0083: key = kdict [sym ]; if ((3 & key ) != 0) goto L_008a; if (symtype != 2) goto L_008a; if (sym != 67) goto L_008b; if (nextsymbol () != 10) goto L_008b; getsym (); cont = 43; goto U_00d4; L_008b: goto L_008c; L_008a: symtype = ((3 & key ) - 2); L_008c: return; L_0081: U_00d9: symtype = quote ; if (last != 0) goto L_008d; if (quote != 0) goto L_008d; goto U_00d4; L_008d: cont = 43; L_0077: goto L_008e; int formatselected () { // SELECT 1 formatlist = /*RHSval*/tag [format ].{field 1}; if (formatlist >= 0) goto L_008f; atom1 = (32768 + 22); return(0); L_008f: if (sym != 95) goto L_0090; escapeclass = 255; // SELECT 2 searchbase = /*RHSval*/tag [format ].{field 2}; L_0090: return(1); L_008e: goto L_0091; void codeatom ( int target ) { int dbase ; int da ; int base ; int n ; int mul ; int pendquote ; int j ; int k ; int l ; int pt ; goto L_0091; void lookup ( int d ) { int newname ; int vid ; int k1 ; int k2 ; int form ; struct TAGFM t *; int new ; new = addr (dict [(dmax + 1)]); k2 = (6700421 * hashvalue ); k2 = (1 | (k2 >> (32 - (11 * 2)))); k1 = (k2 >> 11); for (;;) { L_0092: newname = hash [k1 ]; if (newname != 0) goto L_0093; goto L_0094; L_0093: if (*"TRINGstring!extern char [1] string Nn"(addr (dict [(newname + 1)])) != *"TRINGstring!extern char [1] string Nn"(new )) goto L_0095; goto U_00e8; L_0095: k1 = (2047 & (k1 + k2 )); } L_0094: sparenames = (sparenames - 1); if (sparenames > 0) goto L_0096; abandon (2); L_0096: hash [k1 ] = dmax ; dict [dmax ] = (-1); newname = dmax ; dmax = dp ; goto U_00e9; U_00e8: if (this < 0) goto L_0097; if (d == 0) goto L_0097; searchbase = rbase ; L_0097: if (searchbase == 0) goto L_0098; new = (-1); x = searchbase ; for (;;) { L_0099: if (x >= formatlist ) goto L_009a; goto U_00e9; L_009a: // SELECT 5 if (/*RHSval*/tag [x ].{field 5} != newname ) goto L_009b; goto L_009c; L_009b: x = (x - 1); } L_009c: goto L_009d; L_0098: x = dict [newname ]; if (x > limit ) goto L_009e; goto U_00e9; L_009e: L_009d: subatom = x ; /*LHSaddr*/%record {TAGFM} t = &/*RHSval*/tag [x ]; // SELECT 3 atomflags = /*RHSval*/*t .{field 3}; // SELECT 2 format = /*RHSval*/*t .{field 2}; // SELECT 1 app = /*RHSval*/*t .{field 1}; protection = (256 & atomflags ); type = (7 & (atomflags >> 4)); atom1 = amap [(15 & atomflags )]; if ((8 & diag ) == 0) goto L_009f; printstring ("lookup:"); write (atom1 , 3); write (type , 1); write (app , 3); write (format , 5); write (atomflags , 3); newline (); L_009f: if (d != 0) goto L_00a0; // SELECT 3 // SELECT 3 /*RHSval*/*t .{field 3} = (32768 | /*RHSval*/*t .{field 3}); searchbase = 0; if ((2048 & atomflags ) == 0) goto L_00a1; if (format == 0) goto L_00a1; if (formatselected () != 0) goto L_00a2; return; L_00a2: L_00a1: if ((4096 & atomflags ) == 0) goto L_00a3; if (app != 0) goto L_00a4; atom2 = atom1 ; atom1 = (atom1 - 4); if (97 > atom1 ) goto L_00a5; if (atom1 > 98) goto L_00a5; mapgg = atom1 ; atom1 = 91; L_00a5: goto L_00a6; L_00a4: if (sym != 40) goto L_00a7; searchbase = 0; if (atom1 < 106) goto L_00a8; app = phrase [(app + 200)]; escapeclass = 254; atom1 = (((atom1 - 106) >> 1) + 91); goto L_00a9; L_00a8: escapeclass = 253; atom1 = (atom1 - 4); L_00a9: phrase [200] = app ; L_00a7: L_00a6: pos2 = pos ; return; L_00a3: if ((8192 & atomflags ) == 0) goto L_00aa; if (atom1 != 91) goto L_00aa; mapgg = 93; atom2 = 93; if (type != 1) goto L_00ab; subatom = (-subatom ); L_00ab: L_00aa: return; L_00a0: if (tbase == tstart ) goto L_00ac; goto U_00e9; L_00ac: if (d != ((3 + 128) + 32768)) goto L_00ad; // SELECT 3 // SELECT 3 /*RHSval*/*t .{field 3} = (32768 | /*RHSval*/*t .{field 3}); return; L_00ad: if ((128 & atomflags ) == 0) goto L_00ae; if (d != 3) goto L_00af; // SELECT 3 // SELECT 3 /*RHSval*/*t .{field 3} = (/*RHSval*/*t .{field 3} - 128); return; L_00af: if (7 > (15 & decl )) goto L_00b0; if ((15 & decl ) > 10) goto L_00b0; if ((128 & decl ) != 0) goto L_00b0; if ((127 & (atomflags ^ decl )) != 0) goto L_00b1; // SELECT 3 // SELECT 3 /*RHSval*/*t .{field 3} = (/*RHSval*/*t .{field 3} - 128); specgiven = 1; return; L_00b1: L_00b0: if ((15 & decl ) != 4) goto L_00b2; // SELECT 3 /*RHSval*/*t .{field 3} = ((4 << 4) + 4); // SELECT 2 /*RHSval*/*t .{field 2} = fdef ; return; L_00b2: L_00ae: if (last1 != 54) goto L_00b3; if (atom1 != 105) goto L_00b3; return; L_00b3: if (copy != 0) goto L_00b4; copy = x ; L_00b4: U_00e9: app = 0; vid = 0; atom1 = (32768 + 2); if (d != 0) goto L_00b5; return; L_00b5: type = (7 & (d >> 4)); form = (15 & d ); atom1 = amap [form ]; if (this >= 0) goto L_00b6; new = newname ; tmax = (tmax + 1); x = tmax ; goto L_00b7; L_00b6: new = (-1); recid = (recid - 1); vid = recid ; tmin = (tmin - 1); x = tmin ; formatlist = tmin ; L_00b7: if (11 > form ) goto L_00b8; if (form > 14) goto L_00b8; if (dim != 0) goto L_00b9; dim = 1; L_00b9: app = dim ; L_00b8: if (otype <= 2) goto L_00ba; if ((128 & d ) == 0) goto L_00bb; L_00ba: if (perm != 0) goto L_00bb; if (level != includelevel ) goto L_00bc; L_00bb: d = (32768 | d ); L_00bc: /*LHSaddr*/%record {TAGFM} t = &/*RHSval*/tag [x ]; if (form != 3) goto L_00bd; id = (id + 1); vid = id ; L_00bd: // SELECT 4 /*RHSval*/*t .{field 4} = vid ; // SELECT 5 /*RHSval*/*t .{field 5} = newname ; // SELECT 3 /*RHSval*/*t .{field 3} = d ; // SELECT 1 /*RHSval*/*t .{field 1} = app ; // SELECT 2 /*RHSval*/*t .{field 2} = fdef ; format = fdef ; subatom = x ; if (new < 0) goto L_00be; // SELECT 6 /*RHSval*/*t .{field 6} = dict [new ]; dict [new ] = x ; if (gmin != 1720) goto L_00bf; tmin = (tmin - 1); subatom = tmin ; /*RHSval*/tag [tmin ] = /*RHSval*/*t ; L_00bf: L_00be: if (tmax < tmin ) goto L_00c0; abandon (3); L_00c0: L_0091: U_00e0: pos1 = pos ; subatom = 0; pendquote = 0; atomflags = 0; if (symtype != (-2)) goto L_00c1; goto U_00e1; L_00c1: if (symtype >= 0) goto L_00c2; goto U_00e2; L_00c2: if (symtype != 0) goto L_00c3; atom1 = 20; atom2 = 0; return; L_00c3: if (symtype == 2) goto L_00c4; if (quote == 0) goto L_00c5; goto U_00e3; L_00c5: if (sym != 34) goto L_00c6; goto U_00e4; L_00c6: if (sym != 39) goto L_00c7; goto U_00e5; L_00c7: if (sym != 46) goto L_00c8; if (48 > nextsymbol ()) goto L_00c8; if (nextsymbol () > 57) goto L_00c8; goto U_00e2; L_00c8: L_00c4: k = (key >> 2); readsym (); for (;;) { L_00c9: j = kdict [k ]; if ((16384 & j ) == 0) goto L_00ca; goto L_00cb; L_00ca: if ((127 & j ) != sym ) goto L_00cc; if (symtype >= 0) goto L_00cd; L_00cc: if (j < 0) goto L_00ce; goto U_00e6; L_00ce: k = (k + 1); goto L_00cf; L_00cd: l = (127 & (j >> 7)); readsym (); if (j <= 0) goto L_00d0; if (l == 0) goto L_00d1; if (l != sym ) goto L_00d2; if (symtype >= 0) goto L_00d3; L_00d2: goto U_00e6; L_00d3: readsym (); L_00d1: l = 1; L_00d0: k = (k + l ); L_00cf: } L_00cb: atom1 = (127 & j ); if (atom1 != 0) goto L_00d4; atom1 = 19; subatom = 19; atom2 = 0; if (sym != 10) goto L_00d5; if (ocount < 0) goto L_00d6; return; L_00d6: readsym (); L_00d5: return; L_00d4: atom2 = (127 & (j >> 7)); subatom = (16383 & kdict [(k + 1)]); return; U_00e6: atom1 = (32768 + 1); atom2 = 0; if ((pos - pos1 ) <= 2) goto L_00d7; pos1 = pos ; L_00d7: return; U_00e5: atom1 = 91; atom2 = 93; type = 1; mapgg = 93; protection = 256; subatom = lp ; if (lp < 50) goto L_00d8; abandon (3); L_00d8: quote = (\pendquote ); return; U_00e7: n = 0; cont = 39; for (;;) { L_00d9: readsym (); if (sym != 39) goto L_00da; if (nextsymbol () == 39) goto L_00db; goto L_00dc; L_00db: readsym (); L_00da: if (((\((-1) >> 8)) & n ) == 0) goto L_00dd; pos1 = pos ; atom1 = (32768 + 10); return; L_00dd: if (quote != 0) goto L_00de; goto U_00e6; L_00de: n = ((n << 8) + sym ); quote = (quote + 1); } L_00dc: quote = 0; cont = 32; if (sym == 10) goto L_00df; readsym (); L_00df: litpool [lp ] = n ; lp = (lp + 1); goto U_00e0; U_00e4: atom1 = 91; atom2 = 93; type = 3; subatom = (16384 | (strp - stbase )); mapgg = 93; protection = 256; quote = subatom ; textline = lines ; return; U_00e3: if (quote >= 0) goto L_00e0; goto U_00e7; L_00e0: l = strp ; n = strp ; j = addr (glink [(gmin - 1)]); k = (l + 256); if (j >= k ) goto L_00e1; k = j ; L_00e1: for (;;) { L_00e2: cont = 34; quote = 1; for (;;) { L_00e3: readsym (); if (sym != 34) goto L_00e4; if (nextsymbol () == 34) goto L_00e5; goto L_00e6; L_00e5: readsym (); L_00e4: l = (l + 1); **byteinteger (l ) = sym ; if (l < k ) goto L_00e7; lines = textline ; abandon (7); L_00e7: } L_00e6: **byteinteger (n ) = (l - n ); strp = (l + 1); quote = 0; cont = 32; readsym (); codeatom (target ); if (atom1 != 48) goto L_00e8; if (sym == 34) goto L_00e9; L_00e8: return; L_00e9: } goto L_00ea; void get ( int limit ) { int s ; int shift ; shift = 0; if (base == 10) goto L_00eb; if (base != 16) goto L_00ec; shift = 4; goto L_00ed; L_00ec: if (base != 8) goto L_00ee; shift = 3; goto L_00ef; L_00ee: if (base != 2) goto L_00f0; shift = 1; L_00f0: L_00ef: L_00ed: L_00eb: n = 0; for (;;) { L_00f1: if (symtype != (-1)) goto L_00f2; s = (sym - 48); goto L_00f3; L_00f2: if (symtype >= 0) goto L_00f4; s = ((sym - 65) + 10); goto L_00f5; L_00f4: return; L_00f5: L_00f3: if (s < limit ) goto L_00f6; return; L_00f6: pt = (pt + 1); **byteinteger (pt ) = sym ; if (base != 10) goto L_00f7; if (n < 214748364) goto L_00f8; if (s > 7) goto L_00f9; if (n <= 214748364) goto L_00f8; L_00f9: base = 0; type = 2; n = 0; L_00f8: L_00f7: if (shift != 0) goto L_00fa; n = ((base * n ) + s ); goto L_00fb; L_00fa: n = ((n << shift ) + s ); L_00fb: readsym (); } L_00ea: U_00e2: base = 10; U_00e9: atom1 = 91; atom2 = 93; type = 1; subatom = lp ; mapgg = 93; protection = 256; if (lp < 50) goto L_00fc; abandon (3); L_00fc: pt = strp ; mul = 0; for (;;) { L_00fd: get (base ); if (sym != 95) goto L_00fe; if (base == 0) goto L_00fe; if (pendquote == 0) goto L_00ff; L_00fe: goto L_0100; L_00ff: pt = (pt + 1); **byteinteger (pt ) = 95; readsym (); base = n ; } L_0100: if (pendquote == 0) goto L_0101; if (sym == 39) goto L_0102; goto U_00e6; L_0102: readsym (); L_0101: if (sym != 46) goto L_0103; pt = (pt + 1); **byteinteger (pt ) = 46; readsym (); type = 2; n = base ; base = 0; get (n ); L_0103: if (sym != 64) goto L_0104; pt = (pt + 1); **byteinteger (pt ) = 64; k = pt ; readsym (); type = 1; base = 10; if (sym != 45) goto L_0105; readsym (); get (10); n = (-n ); goto L_0106; L_0105: get (10); L_0106: pt = (k + 1); **byteinteger (pt ) = lp ; litpool [lp ] = n ; lp = (lp + 1); if (base != 0) goto L_0107; atom1 = (32768 + 10); L_0107: type = 2; L_0104: if (type != 2) goto L_0108; **byteinteger (strp ) = (pt - strp ); subatom = (8192 | (strp - stbase )); strp = (pt + 1); goto L_0109; L_0108: litpool [lp ] = n ; lp = (lp + 1); L_0109: return; U_00e1: if (27 > target ) goto L_010a; if (target > 41) goto L_010a; atom1 = 0; return; L_010a: hashvalue = 0; dp = (dmax + 1); da = addr (dict [dp ]); dbase = da ; for (;;) { L_010b: hashvalue = (hashvalue + (hashvalue + sym )); da = (da + 1); **byteinteger (da ) = sym ; readsym (); if (symtype < 0) goto L_010c; goto L_010d; L_010c: } L_010d: if (sym != 39) goto L_010e; pendquote = 100; if (hashvalue != 77) goto L_010f; goto U_00e5; L_010f: readsym (); if (hashvalue != 88) goto L_0110; base = 16; goto U_00e9; L_0110: if (hashvalue == 75) goto L_0111; if (hashvalue != 79) goto L_0112; L_0111: base = 8; goto U_00e9; L_0112: if (hashvalue != 66) goto L_0113; base = 2; goto U_00e9; L_0113: goto U_00e6; L_010e: n = (da - dbase ); **byteinteger (dbase ) = n ; dp = (dp + ((n + 2) >> 1)); if (dp < dmin ) goto L_0114; abandon (8); L_0114: atom2 = 90; if (last1 != 0) goto L_0115; if (sym != 58) goto L_0115; limit = local ; lookup (3); return; L_0115: if (last1 != 54) goto L_0116; limit = local ; lookup (((3 + 128) + 32768)); return; L_0116: if (decl == 0) goto L_0117; if (target != 90) goto L_0117; searchbase = fmbase ; limit = local ; lookup (decl ); searchbase = 0; goto L_0118; L_0117: limit = 0; lookup (0); L_0118: for (;;) { L_0119: goto L_0119; int parsedmachinecode () { goto L_0119; void octal ( int n ) { int m ; m = (n >> 3); if (m == 0) goto L_011a; octal (m ); L_011a: bp = (bp + 1); buff [bp ] = ((7 & n ) + 48); L_0119: if (symtype == (-2)) goto L_011b; atom1 = 32768; return(0); L_011b: if (bp < 128) goto L_011c; flushbuffer (); L_011c: bp = (bp + 1); buff [bp ] = 119; for (;;) { L_011d: bp = (bp + 1); buff [bp ] = sym ; readsym (); if (symtype < 0) goto L_011e; goto L_011f; L_011e: } L_011f: bp = (bp + 1); buff [bp ] = 95; if (symtype == 0) goto L_0120; if (sym == 95) goto L_0121; atom1 = 32768; return(0); L_0121: readsym (); for (;;) { L_0122: if (symtype == 0) goto L_0123; if (symtype >= 0) goto L_0124; codeatom (0); if ((32768 & atom1 ) == 0) goto L_0125; return(0); L_0125: if (atom2 != 93) goto L_0126; if (type != 1) goto L_0126; if (subatom >= 0) goto L_0127; // SELECT 2 octal (/*RHSval*/tag [(-subatom )].{field 2}); goto L_0128; L_0127: octal (litpool [subatom ]); L_0128: goto L_0129; L_0126: if (91 > atom1 ) goto L_012a; if (atom1 > 109) goto L_012a; if (atom1 != 104) goto L_012b; // SELECT 3 if ((16384 & /*RHSval*/tag [subatom ].{field 3}) != 0) goto L_012b; this = subatom ; atom1 = (32768 + 21); return(0); L_012b: // SELECT 4 op (32, /*RHSval*/tag [subatom ].{field 4}); goto L_012c; L_012a: atom1 = 32768; return(0); L_012c: L_0129: goto L_012d; L_0124: bp = (bp + 1); buff [bp ] = sym ; readsym (); L_012d: } L_0123: L_0120: bp = (bp + 1); buff [bp ] = 59; return(1); for (;;) { L_012e: if (gg != 0) goto L_012f; cont = 32; L_012f: last1 = 0; mapgg = 0; s = 0; ss = 0; sstype = (-1); fdef = 0; fmbase = 0; app = 0; margin = column ; pos = 0; stbase = addr (glink [(gmax + 1)]); strp = stbase ; lp = 0; tbase = tstart ; local = tbase ; if (gg == 0) goto L_0130; if (ocount < 0) goto L_0131; L_0130: U_00d5: for (;;) { L_0132: if (symtype != 0) goto L_0133; c = cont ; cont = 32; if (ocount < 0) goto L_0134; cont = 43; L_0134: readsym (); cont = c ; } L_0133: if (sym != 33) goto L_0135; goto U_00d6; L_0135: this = (-1); codeatom (0); if (atom1 != 22) goto L_0136; U_00d6: quote = 1; c = cont ; for (;;) { L_0137: if (sym == 10) goto L_0138; readsym (); cont = c ; } L_0138: quote = 0; symtype = 0; goto U_00d5; L_0136: L_0131: decl = 0; mark = 0; gentype = 0; force = 0; dim = 0; proterr = 0; node = 0; nmax = 0; nmin = (520 + 1); order = 1; gmin = (1720 + 1); if (gg == 0) goto L_0139; sstype = 0; goto U_00d7; L_0139: ptype = 0; specgiven = 0; stats = (stats + 1); if (perm != 0) goto L_013a; op (79, lines ); L_013a: if ((32768 & atom1 ) == 0) goto L_013b; goto U_00d8; L_013b: if (escapeclass == 0) goto L_013c; g = 25; sstype = (-1); goto U_00d9; L_013c: g = initial [atom1 ]; if (g != 0) goto L_013d; g = initial [0]; sstype = 0; goto U_00d9; L_013d: if (g >= 0) goto L_013e; g = (255 & g ); nmax = 1; // SELECT 1 /*RHSval*/ar [1].{field 1} = 0; // SELECT 3 /*RHSval*/ar [1].{field 3} = 0; // SELECT 2 /*RHSval*/ar [1].{field 2} = 25; L_013e: gg = gram [g ]; class = (255 & gg ); sstype = ((3 & (gg >> 12)) - 1); goto U_00da; SLABEL_205(194): ptype = type ; papp = app ; pformat = format ; goto U_00d7; SLABEL_205(196): k = (g + 1); goto U_00db; SLABEL_205(188): // SELECT 2 k = (/*RHSval*/ar [nmax ].{field 2} + 1); U_00db: papp = glink [k ]; k = gram [k ]; if (k != 0) goto L_013f; goto U_00d7; L_013f: ptype = (7 & k ); pformat = (k >> 3); SLABEL_205(183): k = type ; if (gentype == 0) goto L_0140; if (k != 2) goto L_0141; L_0140: gentype = k ; L_0141: if (pformat >= 0) goto L_0142; app = papp ; format = pformat ; if (ptype != 2) goto L_0143; if (type != 1) goto L_0143; k = 2; L_0143: if (force == 0) goto L_0144; k = force ; force = 0; L_0144: L_0142: if (papp != app ) goto L_0145; if (ptype == k ) goto L_0146; if (ptype == 0) goto L_0146; L_0145: goto U_00dc; L_0146: if (pformat == format ) goto L_0147; if (pformat == 0) goto L_0147; if (format != 0) goto L_0148; L_0147: goto U_00d7; L_0148: goto U_00dc; SLABEL_205(197): /*LHSaddr*/%record {ARFM} arp = &/*RHSval*/ar [nmin ]; // SELECT 2 k = /*RHSval*/*arp .{field 2}; if (blockform == (15 & k )) goto L_0149; goto U_00dd; L_0149: // SELECT 2 /*RHSval*/*arp .{field 2} = (k >> 4); type = blocktype ; ptype = blocktype ; pformat = blockfm ; papp = app ; if (ptype == 4) goto L_014a; pformat = (-1); L_014a: goto U_00d7; SLABEL_205(195): if (type == 0) goto L_014b; if (type == 1) goto L_014b; if (type == 2) goto L_014b; goto U_00dc; L_014b: /*LHSaddr*/%record {ARFM} arp = &/*RHSval*/ar [nmin ]; // SELECT 2 k = /*RHSval*/*arp .{field 2}; // SELECT 2 /*RHSval*/*arp .{field 2} = (k >> 2); k = (3 & k ); if (k != 0) goto L_014c; goto U_00d7; L_014c: if (k != 1) goto L_014d; force = 1; if (type == 1) goto L_014e; if (type != 0) goto L_014f; L_014e: goto U_00d7; L_014f: goto U_00dc; L_014d: if (ptype == 2) goto L_0150; if (ptype == 0) goto L_0150; goto U_00dc; L_0150: if (k != 3) goto L_0151; force = 1; L_0151: goto U_00d7; SLABEL_205(198): k = (15 & (gg >> 8)); if (k != 0) goto L_0152; atom1 = last1 ; goto U_00d7; L_0152: if (k != 1) goto L_0153; if (type == 3) goto L_0154; goto U_00dc; L_0154: goto U_00d7; L_0153: if (k != 2) goto L_0155; if (type != 4) goto L_0156; goto U_00dc; L_0156: goto U_00d7; L_0155: if (k != 3) goto L_0157; codeatom (0); if ((512 & atomflags ) != 0) goto L_0158; goto U_00de; L_0158: goto U_00d7; L_0157: if (x > local ) goto L_0159; forwarn = pos1 ; L_0159: goto U_00d7; SLABEL_206(1): if (type != 4) goto L_015a; g = phrase [242]; goto L_015b; L_015a: pformat = (-1); L_015b: goto U_00d9; SLABEL_206(2): ptype = 2; pformat = (-1); goto U_00d9; SLABEL_206(3): ptype = 3; pformat = (-1); goto U_00d9; SLABEL_206(4): ptype = 1; pformat = (-1); goto U_00d9; SLABEL_206(5): if (ptype != 1) goto L_015c; goto U_00d9; L_015c: if (ptype != 2) goto L_015d; g = phrase [212]; pformat = (-1); L_015d: if (ptype != 3) goto L_015e; g = phrase [213]; L_015e: goto U_00d9; SLABEL_206(6): // SELECT 2 ptype = (7 & gram [(/*RHSval*/ar [nmax ].{field 2} + 1)]); pformat = (-1); goto U_00d9; SLABEL_206(7): if (ptype != 1) goto L_015f; ptype = 2; L_015f: pformat = (-1); goto U_00d9; U_00da: last1 = class ; atom1 = 0; s = subatom ; U_00df: if ((16384 & gg ) != 0) goto L_0160; z = &%short node ; for (;;) { L_0161: k = *z ; if ((12288 & gg ) == 0) goto L_0162; if (k != 0) goto L_0163; L_0162: goto L_0164; L_0163: gg = (gg - 4096); // SELECT 3 z = &/*RHSval*/ar [k ].{field 3}; } L_0164: if (mapgg == 0) goto L_0165; if ((255 & gg ) != 91) goto L_0165; gg = mapgg ; L_0165: nmin = (nmin - 1); if (nmin != nmax ) goto L_0166; goto U_00e0; L_0166: *z = nmin ; /*LHSaddr*/%record {ARFM} arp = &/*RHSval*/ar [nmin ]; // SELECT 2 /*RHSval*/*arp .{field 2} = s ; // SELECT 1 /*RHSval*/*arp .{field 1} = (mark | (255 & gg )); // SELECT 3 /*RHSval*/*arp .{field 3} = k ; L_0160: mark = 0; mapgg = 0; U_00d7: g = glink [g ]; SLABEL_206(0): U_00d9: gg = gram [g ]; class = (255 & gg ); if ((1 & diag ) == 0) goto L_0167; traceanalysis (); L_0167: if (class != 0) goto L_0168; goto U_00e1; L_0168: if (class >= 180) goto L_0169; if (class < 130) goto L_016a; class = atomic [class ]; L_016a: if (class < 120) goto L_016b; goto U_00df; L_016b: if (atom1 != 0) goto L_016c; codeatom (class ); L_016c: if (escapeclass == 0) goto L_016d; class = escapeclass ; escapeclass = 0; g = (g + 4096); U_00e2: gg = 0; /*LHSaddr*/%record {ARFM} arp = &/*RHSval*/ar [(nmax + 1)]; // SELECT 5 /*RHSval*/*arp .{field 5} = papp ; // SELECT 7 /*RHSval*/*arp .{field 7} = x ; goto U_00e3; L_016d: if (class == atom1 ) goto L_016e; if (class != atom2 ) goto L_016f; L_016e: goto U_00da; L_016f: U_00de: if (gg < 0) goto L_0170; goto U_00d8; L_0170: g = (g + 1); goto U_00d9; L_0169: if (class < 200) goto L_0171; U_00e3: nmax = (nmax + 1); if (nmax != nmin ) goto L_0172; goto U_00e0; L_0172: /*LHSaddr*/%record {ARFM} arp = &/*RHSval*/ar [nmax ]; // SELECT 4 /*RHSval*/*arp .{field 4} = ptype ; // SELECT 8 /*RHSval*/*arp .{field 8} = pos1 ; // SELECT 6 /*RHSval*/*arp .{field 6} = pformat ; // SELECT 3 /*RHSval*/*arp .{field 3} = gentype ; // SELECT 1 /*RHSval*/*arp .{field 1} = node ; // SELECT 2 /*RHSval*/*arp .{field 2} = g ; node = 0; g = phrase [class ]; if (force == 0) goto L_0173; ptype = force ; force = 0; L_0173: gentype = 0; ->SJUMP_206((15 & (gg >> 8))) L_0171: ->SJUMP_205(class ) U_00e1: s = 0; for (;;) { L_0174: if (node == 0) goto L_0175; // SELECT 3 z = &/*RHSval*/ar [node ].{field 3}; k = *z ; *z = s ; s = node ; node = k ; } L_0175: ss = s ; U_00e4: if (nmax == 0) goto L_0176; k = gentype ; /*LHSaddr*/%record {ARFM} arp = &/*RHSval*/ar [nmax ]; nmax = (nmax - 1); // SELECT 1 node = /*RHSval*/*arp .{field 1}; // SELECT 3 gentype = /*RHSval*/*arp .{field 3}; // SELECT 4 ptype = /*RHSval*/*arp .{field 4}; // SELECT 6 pformat = /*RHSval*/*arp .{field 6}; // SELECT 2 g = /*RHSval*/*arp .{field 2}; if ((4096 & g ) == 0) goto L_0177; g = (g - 4096); // SELECT 5 papp = /*RHSval*/*arp .{field 5}; mark = 255; subatom = s ; goto U_00d9; L_0177: if (gentype == 0) goto L_0178; if (k != 2) goto L_0179; L_0178: gentype = k ; L_0179: type = gentype ; k = gg ; for (;;) { L_017a: gg = gram [g ]; if (k != 0) goto L_017b; goto U_00df; L_017b: if (gg < 0) goto L_017c; goto U_00d8; L_017c: k = (k - 4096); g = (g + 1); } L_0176: if (copy == 0) goto L_017d; fault (4); L_017d: if (order != 0) goto L_017e; fault (13); L_017e: if (forwarn == 0) goto L_017f; fault ((-4)); L_017f: pos1 = 0; faultrate = (faultrate - 1); return; SLABEL_205(193): if (sym == 61) goto L_0180; if (sym == 60) goto L_0180; gg = 0; goto U_00e1; L_0180: SLABEL_205(181): atom1 = amap [(15 & decl )]; goto U_00d7; SLABEL_205(182): class = 252; g = (4096 | glink [g ]); decl = 0; otype = 0; goto U_00e2; SLABEL_205(199): s = 0; for (;;) { L_0181: if (node == 0) goto L_0182; // SELECT 3 z = &/*RHSval*/ar [node ].{field 3}; k = *z ; *z = s ; s = node ; node = k ; } L_0182: ss = s ; if (quote == 0) goto L_0183; codeatom (28); L_0183: compile (); if ((32768 & atom1 ) != 0) goto L_0184; goto U_00d7; L_0184: goto U_00d8; SLABEL_205(184): if (type == 1) goto L_0185; goto U_00e5; L_0185: if (subatom >= 0) goto L_0186; // SELECT 2 lit = /*RHSval*/tag [(-subatom )].{field 2}; goto L_0187; L_0186: lit = litpool [subatom ]; L_0187: if (lit == 0) goto L_0188; goto U_00e5; L_0188: goto U_00d7; SLABEL_205(185): s = 0; for (;;) { L_0189: if (node == 0) goto L_018a; // SELECT 3 z = &/*RHSval*/ar [node ].{field 3}; k = *z ; *z = s ; s = node ; node = k ; } L_018a: ss = s ; // SELECT 1 atom1 = /*RHSval*/ar [s ].{field 1}; atom2 = 0; if (atom1 == 97) goto L_018b; if (atom1 != 98) goto L_018c; L_018b: atom1 = 91; L_018c: /*LHSaddr*/%record {ARFM} arp = &/*RHSval*/ar [nmax ]; // SELECT 7 x = /*RHSval*/*arp .{field 7}; // SELECT 8 pos1 = /*RHSval*/*arp .{field 8}; pos2 = 0; app = 0; // SELECT 2 format = /*RHSval*/tag [x ].{field 2}; // SELECT 3 flags = /*RHSval*/tag [x ].{field 3}; type = (7 & (flags >> 4)); protection = (256 & flags ); if ((1024 & flags ) == 0) goto L_018d; protection = 0; L_018d: if ((2048 & flags ) == 0) goto L_018e; if (format == 0) goto L_018e; if (formatselected () != 0) goto L_018f; goto U_00d8; L_018f: L_018e: goto U_00e4; SLABEL_205(187): protection = 256; goto U_00d7; SLABEL_205(186): if ((256 & protection ) != 0) goto L_0190; goto U_00d7; L_0190: proterr = nmin ; goto U_00de; SLABEL_205(191): k = protection ; codeatom (0); if ((1024 & atomflags ) != 0) goto L_0191; protection = k ; L_0191: goto U_00d7; SLABEL_205(192): if (parsedmachinecode () != 0) goto L_0192; goto U_00d8; L_0192: goto U_00d7; SLABEL_205(189): k = gapp (); deletenames (1); tmax = tbase ; tbase = gram [gmin ]; local = tbase ; gmin = (gmin + 1); // SELECT 1 // SELECT 2 x = /*RHSval*/ar [/*RHSval*/ar [nmax ].{field 1}].{field 2}; // SELECT 1 /*RHSval*/tag [x ].{field 1} = k ; goto U_00d7; SLABEL_205(190): gmin = (gmin - 1); if (gmin > gmax ) goto L_0193; abandon (2); L_0193: gram [gmin ] = tbase ; tbase = tmax ; local = tbase ; goto U_00d7; U_00e5: k = (32768 + 10); goto U_00e6; U_00dd: k = (32768 + 7); goto U_00e6; U_00dc: k = (32768 + 5); pos2 = 0; goto U_00e6; U_00e0: k = (32768 + 3); goto U_00e6; U_00d8: k = atom1 ; pos2 = 0; U_00e6: if ((32 & diag ) == 0) goto L_0194; printstring ("Atom1 ="); write (atom1 , 3); printstring (" Atom2 ="); write (atom2 , 3); printstring (" subatom ="); write (subatom , 3); newline (); printstring ("Type ="); write (type , 1); printstring (" Ptype ="); write (ptype , 1); newline (); printstring ("App ="); write (app , 1); printstring (" Papp ="); write (papp , 1); newline (); printstring ("Format ="); write (format , 1); printstring (" Pformat ="); write (pformat , 1); newline (); exit(0); L_0194: for (;;) { L_0195: if (sym == 10) goto L_0196; if (sym == 59) goto L_0196; quote = 0; readsym (); } L_0196: if ((32768 & k ) == 0) goto L_0197; fault ((255 & k )); goto L_0198; L_0197: if (proterr != nmin ) goto L_0199; fault (14); goto L_019a; L_0199: fault (0); L_019a: L_0198: gg = 0; ss = 0; symtype = 0; L_012e: goto L_019b; void compile () { // bounds [0 : 180] %switch c ; // bounds [1 : 12] %switch litop ; // bounds [1 : 14] const char int *operator ; // bounds [0 : 7] const char int *cc ; // bounds [0 : 15] const char int *anyform ; // bounds [0 : 15] const short int *decmap ; // bounds [0 : 15] static char int *cnest ; int lmode ; int clab ; int dupid ; int resln ; static int lastdef ; static int lb ; static int ub ; int cp ; int ord ; int next ; int link ; int j ; int k ; int n ; int done ; int class ; int lit2 ; int defs ; int decs ; int cident ; int pending ; // bounds [1 : 40] static int *pstack ; static char [9] name ; static int count ; goto L_019b; void deflab ( int l ) { op (58, l ); access = 1; L_019b: goto L_019c; void getnext () { struct ARFM p *; U_00e4: if (next != 0) goto L_019d; if (link != 0) goto L_019e; class = 0; return; L_019e: /*LHSaddr*/%record {ARFM} p = &/*RHSval*/ar [link ]; // SELECT 3 next = /*RHSval*/*p .{field 3}; // SELECT 2 link = /*RHSval*/*p .{field 2}; L_019d: for (;;) { L_019f: /*LHSaddr*/%record {ARFM} p = &/*RHSval*/ar [next ]; // SELECT 2 x = /*RHSval*/*p .{field 2}; // SELECT 1 class = /*RHSval*/*p .{field 1}; if (class >= 180) goto L_01a0; goto L_01a1; L_01a0: if (x != 0) goto L_01a2; // SELECT 3 next = /*RHSval*/*p .{field 3}; goto U_00e4; L_01a2: // SELECT 3 if (/*RHSval*/*p .{field 3} == 0) goto L_01a3; // SELECT 2 /*RHSval*/*p .{field 2} = link ; link = next ; L_01a3: next = x ; } L_01a1: // SELECT 3 next = /*RHSval*/*p .{field 3}; if ((2 & diag ) == 0) goto L_01a4; if ("AMEname!static char [9] name COUNT" == "") goto L_01a5; spaces ((8 - **length ("AMEname!static char [9] name COUNT"))); L_01a5: %string (8) name = "EXTtext!const char [9] *text Z"[class ]; write (x , 2); space (); printstring ("AMEname!static char [9] name COUNT"); space (); count = (count - 1); if (count > 0) goto L_01a6; count = 5; %string (8) name = ""; newline (); L_01a6: L_01a4: L_019c: goto L_01a7; void setsubs ( int n ) { int p ; p = tmax ; for (;;) { L_01a8: if (n <= 0) goto L_01a9; if (p >= tbase ) goto L_01aa; exit(0); L_01aa: // SELECT 1 /*RHSval*/tag [p ].{field 1} = dimension ; p = (p - 1); n = (n - 1); } L_01a9: L_01a7: goto L_01ab; void setbp () { pending = (pending - 2); lb = pstack [(pending + 1)]; ub = pstack [(pending + 2)]; if (((ub - lb ) + 1) >= 0) goto L_01ac; pos1 = 0; next = link ; fault (11); ub = lb ; L_01ac: setconst (lb ); setconst (ub ); if (class == 146) goto L_01ad; bp = (bp + 1); buff [bp ] = 98; L_01ad: L_01ab: goto L_01ae; void compileend ( int type ) { if (access == 0) goto L_01af; open = 0; if (blockform <= 7) goto L_01b0; fault (19); L_01b0: L_01af: for (;;) { L_01b1: if (dict [dmin ] < 0) goto L_01b2; fault ((17 + (1 & dict [dmin ]))); dmin = (dmin + 1); } L_01b2: bp = (bp + 1); buff [bp ] = 59; if (type != 1) goto L_01b3; bp = (bp + 1); buff [bp ] = 59; L_01b3: *bflags = (open | *bflags ); if (blocktag == 0) goto L_01b4; if (level == 1) goto L_01b4; deflab (0); L_01b4: if (type == 2) goto L_01b5; if (level == type ) goto L_01b6; fault (16); L_01b6: goto L_01b7; L_01b5: if (level != 0) goto L_01b8; fault (15); L_01b8: L_01b7: endmark = 11; L_01ae: goto L_01b9; void def ( int p ) { int t ; int f ; int type ; struct TAGFM v *; if (bp == 0) goto L_01ba; flushbuffer (); L_01ba: defs = (defs + 1); /*LHSaddr*/%record {TAGFM} v = &/*RHSval*/tag [p ]; t = 0; // SELECT 4 if (/*RHSval*/*v .{field 4} < 0) goto L_01bb; // SELECT 4 if (/*RHSval*/*v .{field 4} != 0) goto L_01bc; id = (id + 1); // SELECT 4 /*RHSval*/*v .{field 4} = id ; L_01bc: // SELECT 4 lastdef = /*RHSval*/*v .{field 4}; t = lastdef ; L_01bb: op (36, t ); printident (p , 1); // SELECT 3 t = /*RHSval*/*v .{field 3}; type = t ; if (((7 << 4) & type ) < (6 << 4)) goto L_01bd; type = ((\(7 << 4)) & type ); L_01bd: op (44, (127 & type )); // SELECT 2 f = /*RHSval*/*v .{field 2}; if ((112 & t ) != (4 << 4)) goto L_01be; // SELECT 4 f = /*RHSval*/tag [f ].{field 4}; L_01be: if (f >= 0) goto L_01bf; // SELECT 4 f = /*RHSval*/*v .{field 4}; L_01bf: op (44, f ); f = (otype + (120 & (t >> 4))); if (class != 125) goto L_01c0; f = (8 | f ); L_01c0: // SELECT 1 dim = /*RHSval*/*v .{field 1}; if (0 >= dim ) goto L_01c1; if (dim <= 6) goto L_01c2; L_01c1: dim = 0; L_01c2: op (44, (f + (dim << 8))); if ((4096 & t ) != 0) goto L_01c3; defs = 0; L_01c3: f = (15 & t ); // SELECT 3 if ((128 & /*RHSval*/*v .{field 3}) == 0) goto L_01c4; if (3 > f ) goto L_01c5; if (f <= 10) goto L_01c6; L_01c5: // SELECT 3 // SELECT 3 /*RHSval*/*v .{field 3} = ((\128) & /*RHSval*/*v .{field 3}); L_01c6: ocount = (-1); L_01c4: dimension = 0; if (otype != 2) goto L_01c7; if (f == 2) goto L_01c8; if (f == 12) goto L_01c8; if (f != 14) goto L_01c7; L_01c8: // SELECT 3 // SELECT 3 /*RHSval*/*v .{field 3} = (/*RHSval*/*v .{field 3} - 1); L_01c7: L_01b9: goto L_01c9; void defslab ( int n ) { int p ; int l ; int b ; int w ; int bit ; // SELECT 2 p = /*RHSval*/tag [x ].{field 2}; l = dict [p ]; if (l > n ) goto L_01ca; if (n > dict [(p + 1)]) goto L_01ca; b = (n - l ); w = ((b >> 4) + p ); bit = (1 << (15 & b )); if ((bit & dict [(w + 2)]) == 0) goto L_01cb; if (pending == 0) goto L_01cc; fault (4); L_01cc: return; L_01cb: if (pending == 0) goto L_01cd; dict [(w + 2)] = (bit | dict [(w + 2)]); L_01cd: setconst (n ); // SELECT 4 op (95, /*RHSval*/tag [x ].{field 4}); goto L_01ce; L_01ca: fault (12); L_01ce: access = 1; L_01c9: goto L_01cf; void call () { struct TAGFM t *; /*LHSaddr*/%record {TAGFM} t = &/*RHSval*/tag [x ]; // SELECT 4 op (64, /*RHSval*/*t .{field 4}); // SELECT 3 if ((16384 & /*RHSval*/*t .{field 3}) == 0) goto L_01d0; access = 0; L_01d0: // SELECT 1 if (/*RHSval*/*t .{field 1} != 0) goto L_01d1; bp = (bp + 1); buff [bp ] = 69; L_01d1: L_01cf: goto L_01d2; void popdef () { setconst (pstack [pending ]); pending = (pending - 1); L_01d2: goto L_01d3; void poplit () { if (pending != 0) goto L_01d4; lit = 0; goto L_01d5; L_01d4: lit = pstack [pending ]; pending = (pending - 1); L_01d5: L_01d3: if (sstype >= 0) goto L_01d6; if (level != 0) goto L_01d7; fault (13); goto L_01d8; L_01d7: if (access != 0) goto L_01d9; access = 1; fault ((-1)); L_01d9: L_01d8: L_01d6: if ((2 & diag ) == 0) goto L_01da; if (sym == 10) goto L_01db; newline (); L_01db: printstring ("ss ="); write (ss , 1); newline (); count = 5; %string (8) name = ""; L_01da: next = ss ; pending = 0; lmode = 0; link = 0; decs = 0; defs = 0; resln = 0; done = 0; ord = level ; if (this < 0) goto L_01dc; ord = 1; L_01dc: SLABEL_194(0): U_00eb: if (next == link ) goto L_01dd; getnext (); ->SJUMP_194(class ) L_01dd: if ((2 & diag ) == 0) goto L_01de; if (count == 5) goto L_01de; newline (); L_01de: if (((8 | (4 | 16)) & lmode ) == 0) goto L_01df; if ((16 & lmode ) == 0) goto L_01e0; op (66, (label - 1)); L_01e0: if ((4 & lmode ) == 0) goto L_01e1; deflab (label ); L_01e1: if ((8 & lmode ) == 0) goto L_01e2; deflab ((label - 1)); L_01e2: L_01df: if (decs != 0) goto L_01e3; return; L_01e3: if (atom1 == 0) goto L_01e4; atom1 = 32768; return; L_01e4: order = ord ; decl = (((\15) & decl ) + decmap [(15 & decl )]); atom1 = atoms [(15 & decl )]; if (otype == 0) goto L_01e5; if (atom1 == 7) goto L_01e6; atom1 = (atom1 + 1); L_01e6: if (otype != 2) goto L_01e7; n = (15 & decl ); if ((1 & n ) == 0) goto L_01e8; decl = (256 | decl ); if ((127 & decl ) != 17) goto L_01e9; decl = (8192 | decl ); L_01e9: L_01e8: goto L_01ea; L_01e7: decl = (512 | decl ); L_01ea: L_01e5: if (sstype != 0) goto L_01eb; if (atom1 != 7) goto L_01eb; sstype = 1; L_01eb: if ((128 & decl ) == 0) goto L_01ec; atom1 = (atom1 + 1); L_01ec: if (atom1 != 5) goto L_01ed; ocount = 0; cont = 43; L_01ed: if (anyform [(15 & decl )] != 0) goto L_01ee; if ((7 & (decl >> 4)) != 4) goto L_01ef; // SELECT 3 if ((128 & /*RHSval*/tag [fdef ].{field 3}) == 0) goto L_01f0; this = fdef ; L_01f0: if (fdef != this ) goto L_01f1; atom1 = (32768 + 21); L_01f1: L_01ef: if (fdef != 0) goto L_01f2; atom1 = (32768 + 10); L_01f2: L_01ee: return; U_00ec: access = 0; goto U_00eb; SLABEL_194(88): SLABEL_194(28): decl = ((\7) & x ); fdef = (7 & x ); if ((113 & x ) != ((2 << 4) + 1)) goto L_01f3; fdef = realsln ; L_01f3: decs = 1; goto U_00eb; SLABEL_194(34): SLABEL_194(35): otype = x ; ord = 1; goto U_00eb; SLABEL_194(152): decl = (decl + (x << 1)); goto U_00eb; SLABEL_194(31): SLABEL_194(32): specmode = (level + 1); if (x != 9) goto L_01f4; decl = (256 | decl ); L_01f4: SLABEL_194(29): ord = 1; dim = 0; SLABEL_194(30): decl = (decl + x ); decs = 1; goto U_00eb; SLABEL_194(27): lit = 0; if (pending == 0) goto L_01f5; poplit (); if (0 >= lit ) goto L_01f6; if (lit <= 6) goto L_01f7; L_01f6: atom1 = (32768 + 11); return; L_01f7: L_01f5: dim = lit ; decl = (decl + x ); decs = 1; goto U_00eb; SLABEL_194(37): x = (2048 | x ); SLABEL_194(36): lit = 0; if (pending == 0) goto L_01f8; poplit (); if (0 >= lit ) goto L_01f9; if (lit <= 255) goto L_01fa; L_01f9: atom1 = (32768 + 10); return; L_01fa: L_01f8: fdef = lit ; SLABEL_194(33): decl = x ; decs = 1; goto U_00eb; SLABEL_194(39): decl = (128 | decl ); ocount = (-1); specmode = (-1); goto U_00eb; SLABEL_194(38): decl = (64 + 4); order = 1; atom1 = x ; if (atom1 != 12) goto L_01fb; decl = (128 | decl ); L_01fb: fdef = (tmax + 1); return; SLABEL_194(175): id = (id + 1); // SELECT 4 /*RHSval*/tag [x ].{field 4} = id ; return; SLABEL_194(41): decs = 1; decl = (16384 | (128 | x )); goto U_00eb; SLABEL_194(133): recid = 0; rbase = (tmin - 1); this = x ; fmbase = fdef ; formatlist = tmin ; def (this ); goto U_00eb; SLABEL_194(148): if (next != 0) goto L_01fc; fdef = 0; goto U_00eb; L_01fc: getnext (); fdef = x ; goto U_00eb; SLABEL_194(127): bp = (bp + 1); buff [bp ] = 125; goto U_00eb; SLABEL_194(126): bp = (bp + 1); buff [bp ] = 123; goto U_00eb; SLABEL_194(174): setbp (); SLABEL_194(171): SLABEL_194(172): SLABEL_194(173): bp = (bp + 1); buff [bp ] = 126; bp = (bp + 1); buff [bp ] = ((class - 171) + 65); goto U_00eb; SLABEL_194(168): rbase = (-rbase ); sstype = 0; specmode = 0; SLABEL_194(147): searchbase = 0; // SELECT 1 /*RHSval*/tag [this ].{field 1} = tmin ; // SELECT 2 /*RHSval*/tag [this ].{field 2} = rbase ; goto U_00eb; SLABEL_194(45): if (x != 36) goto L_01fd; bp = (bp + 1); buff [bp ] = 85; L_01fd: goto U_00eb; SLABEL_194(46): bp = (bp + 1); buff [bp ] = 92; goto U_00eb; SLABEL_194(47): SLABEL_194(48): SLABEL_194(42): SLABEL_194(43): SLABEL_194(44): bp = (bp + 1); buff [bp ] = operator [x ]; goto U_00eb; goto L_01fe; void push ( int x ) { if ((2 & cnest [cp ]) == x ) goto L_01ff; cnest [cp ] = (1 | cnest [cp ]); x = (x + 4); L_01ff: if ((1 & cnest [cp ]) == 0) goto L_0200; clab = (clab + 1); L_0200: cnest [(cp + 1)] = x ; cp = (cp + 1); L_01fe: goto L_0201; void poplabel ( int mode ) { lmode = dict [dmin ]; if (lmode < 0) goto L_0202; if ((1 & lmode ) == mode ) goto L_0203; L_0202: fault ((mode + 8)); goto L_0204; L_0203: dmin = (dmin + 1); label = (label - 3); L_0204: L_0201: SLABEL_194(56): SLABEL_194(57): push (x ); goto U_00eb; SLABEL_194(58): cnest [cp ] = (2 ^ cnest [cp ]); goto U_00eb; SLABEL_194(138): x = (((128 + 32) + 16) + 4); SLABEL_194(59): SLABEL_194(60): if (class != 138) goto L_0205; op (102, (label - 1)); goto L_0206; L_0205: deflab ((label - 1)); L_0206: SLABEL_194(166): SLABEL_194(62): lmode = ((x >> 3) | ((16 | 8) & lmode )); clab = label ; cp = 1; cnest [1] = (7 & x ); goto U_00eb; SLABEL_194(72): poplabel (0); if ((32 & lmode ) == 0) goto L_0207; deflab ((label + 1)); L_0207: goto U_00ec; SLABEL_194(69): poplabel (1); goto U_00eb; SLABEL_194(163): SLABEL_194(70): poplabel (1); if ((3 & lmode ) != 3) goto L_0208; fault (7); L_0208: SLABEL_194(68): lmode = (3 | (8 & lmode )); if (access == 0) goto L_0209; op (70, (label - 1)); lmode = (3 | 8); L_0209: deflab (label ); if (next == 0) goto L_020a; goto U_00eb; L_020a: SLABEL_194(120): SLABEL_194(67): SLABEL_194(71): U_00ef: if (lmode != 0) goto L_020b; deflab ((label - 1)); lmode = 16; L_020b: dmin = (dmin - 1); if (dmin > dmax ) goto L_020c; abandon (3); L_020c: dict [dmin ] = lmode ; label = (label + 3); return; SLABEL_194(64): if (dict [dmin ] >= 0) goto L_020d; if (inhibit == 0) goto L_020e; L_020d: fault (13); L_020e: inhibit = 1; n = 0; if (pending != 0) goto L_020f; n = 65535; L_020f: for (;;) { L_0210: if (pending <= 0) goto L_0211; poplit (); if (((\15) & lit ) == 0) goto L_0212; fault (10); L_0212: j = (1 << lit ); if ((j & n ) == 0) goto L_0213; dubious = 1; L_0213: n = (j | n ); } L_0211: op (111, n ); op (44, label ); lmode = (1 | 4); goto U_00ef; SLABEL_194(104): // SELECT 4 op (74, /*RHSval*/tag [x ].{field 4}); inhibit = 1; goto U_00ec; SLABEL_194(149): stats = (stats - 1); access = 1; inhibit = 1; // SELECT 4 op (76, /*RHSval*/tag [x ].{field 4}); goto U_00eb; SLABEL_194(63): j = dmin ; l = (label - 3); for (;;) { L_0214: if (dict [j ] >= 0) goto L_0215; fault (7); goto U_00eb; L_0215: if ((1 & dict [j ]) != 0) goto L_0216; goto L_0217; L_0216: j = (j + 1); l = (l - 3); } L_0217: if (x != 32) goto L_0218; l = (l + 1); L_0218: op (70, l ); dict [j ] = (x | dict [j ]); goto U_00ec; SLABEL_194(50): bp = (bp + 1); buff [bp ] = 67; goto U_00f0; SLABEL_194(49): bp = (bp + 1); if (next == 0) goto L_0219; buff [bp ] = 34; push (0); goto L_021a; L_0219: buff [bp ] = 63; L_021a: U_00f0: if ((2 & cnest [cp ]) == 0) goto L_021b; x = (1 ^ x ); L_021b: j = cp ; l = clab ; for (;;) { L_021c: if ((4 & cnest [j ]) != 0) goto L_021d; j = (j - 1); l = (l - (1 & cnest [j ])); } L_021d: op (cc [x ], l ); if ((1 & cnest [cp ]) == 0) goto L_021e; deflab ((clab + 1)); L_021e: cp = (cp - 1); clab = (clab - (1 & cnest [cp ])); goto U_00eb; SLABEL_194(78): SLABEL_194(79): SLABEL_194(80): open = 0; SLABEL_194(82): access = 0; SLABEL_194(89): SLABEL_194(81): bp = (bp + 1); buff [bp ] = x ; goto U_00eb; SLABEL_194(65): poplit (); op (101, lit ); goto U_00ec; SLABEL_194(51): bp = (bp + 1); buff [bp ] = 83; goto U_00eb; SLABEL_194(53): bp = (bp + 1); buff [bp ] = 106; goto U_00eb; SLABEL_194(52): bp = (bp + 1); buff [bp ] = 90; goto U_00eb; SLABEL_194(74): if (level != 0) goto L_021f; if (progmode > 0) goto L_0220; progmode = 1; goto L_0221; L_0220: fault (7); L_0221: L_021f: specmode = (level + 1); blockx = 0; bp = (bp + 1); buff [bp ] = 72; return; SLABEL_194(77): perm = 0; lines = 0; stats = 0; closeinput (); selectinput (1); list = (list - 1); tbase = tmax ; tstart = tmax ; return; SLABEL_194(76): if (include == 0) goto L_0222; if (x != 0) goto L_0222; lines = include ; sstype = 0; closeinput (); list = includelist ; includelevel = 0; include = 0; selectinput (1); return; L_0222: ss = (-1); SLABEL_194(75): compileend (x ); return; SLABEL_194(85): if (x != 0) goto L_0223; control = lit ; goto L_0224; L_0223: if ((3 & (lit >> 14)) != 1) goto L_0225; diag = (16383 & lit ); L_0225: L_0224: op ((122 - x ), lit ); goto U_00eb; SLABEL_194(83): list = ((list + x ) - 2); goto U_00eb; SLABEL_194(84): realsln = x ; goto U_00eb; SLABEL_194(86): if (include == 0) goto L_0226; fault (7); return; L_0226: getnext (); %string (63) includefile = *"TRINGstring!extern char [1] string Nn"(((x - 16384) + stbase )); int main(int argc, char **argv) { ON 0x2c00 L_0227 ? <4> abandon (9); for (;;) { L_0228: openinput (3, "NCLUDEFILEincludefile!char [64] includefile INCLUDELIS"); include = lines ; lines = 0; includelist = list ; includelevel = level ; selectinput (3); goto U_00eb; SLABEL_194(154): dimension = (dimension + 1); if (dimension != (6 + 1)) goto L_0228; fault (11); L_0228: goto U_00eb; SLABEL_194(145): setbp (); goto U_00eb; SLABEL_194(146): setbp (); SLABEL_194(142): if (dimension != 0) goto L_0229; dimension = 1; L_0229: op (100, dimension ); op (44, defs ); if (class == 146) goto L_022a; setsubs (defs ); if (dict [dmin ] >= 0) goto L_022b; if (inhibit != 0) goto L_022b; if (level != 0) goto L_022c; L_022b: fault (13); L_022c: L_022a: dimension = 0; defs = 0; goto U_00eb; SLABEL_194(128): id = dupid ; goto U_00eb; SLABEL_194(130): blockx = x ; if ((128 & decl ) != 0) goto L_022d; if (level == 0) goto L_022d; op (70, 0); L_022d: SLABEL_194(125): dupid = id ; if (level >= 0) goto L_022e; return; L_022e: SLABEL_194(90): def (x ); goto U_00eb; SLABEL_194(131): // SELECT 3 if (((127 + 8192) & /*RHSval*/tag [x ].{field 3}) != (17 + 8192)) goto L_022f; // SELECT 2 /*RHSval*/tag [x ].{field 2} = lit ; goto L_0230; L_022f: if (pending == 0) goto L_0231; setconst (lit ); L_0231: def (x ); op (65, 1); L_0230: cident = x ; goto U_00eb; SLABEL_194(124): // SELECT 3 if ((256 & /*RHSval*/tag [cident ].{field 3}) == 0) goto L_0232; dubious = 1; L_0232: goto U_00eb; SLABEL_194(97): SLABEL_194(98): SLABEL_194(99): SLABEL_194(96): call (); goto U_00eb; SLABEL_194(165): SLABEL_194(100): SLABEL_194(101): SLABEL_194(102): SLABEL_194(103): SLABEL_194(91): SLABEL_194(92): SLABEL_194(106): SLABEL_194(107): SLABEL_194(108): SLABEL_194(109): // SELECT 4 k = /*RHSval*/tag [x ].{field 4}; if (k >= 0) goto L_0233; op (110, (-k )); goto L_0234; L_0233: op (64, k ); L_0234: goto U_00eb; SLABEL_194(121): setconst (0); goto U_00eb; SLABEL_194(167): bp = (bp + 1); buff [bp ] = 71; goto U_00f1; SLABEL_194(93): if (x >= 0) goto L_0235; // SELECT 2 setconst (/*RHSval*/tag [(-x )].{field 2}); goto U_00eb; L_0235: if ((16384 & x ) == 0) goto L_0236; bp = (bp + 1); buff [bp ] = 39; U_00f1: x = ((x - 16384) + stbase ); k = **byteinteger (x ); bp = (bp + 1); buff [bp ] = k ; k = (k + x ); for (;;) { L_0237: if (x != k ) goto L_0238; goto U_00eb; L_0238: x = (x + 1); bp = (bp + 1); buff [bp ] = **byteinteger (x ); } L_0236: if ((8192 & x ) == 0) goto L_0239; x = ((x - 8192) + stbase ); k = **byteinteger (x ); op (68, k ); bp = (bp + 1); buff [bp ] = 44; k = (k + x ); for (;;) { L_023a: if (x != k ) goto L_023b; goto U_00eb; L_023b: x = (x + 1); j = **byteinteger (x ); if (j != 64) goto L_023c; op (64, litpool [**byteinteger ((x + 1))]); goto U_00eb; L_023c: bp = (bp + 1); buff [bp ] = j ; } L_0239: setconst (litpool [x ]); goto U_00eb; SLABEL_194(137): bp = (bp + 1); buff [bp ] = 105; goto U_00eb; SLABEL_194(141): bp = (bp + 1); buff [bp ] = 97; goto U_00eb; SLABEL_194(132): ocount = ((ub - lb ) + 1); def (x ); dimension = 1; setsubs (1); if (next != 0) goto L_023d; if (ocount <= 0) goto L_023e; op (65, ocount ); L_023e: ocount = (-1); goto L_023f; L_023d: getnext (); L_023f: goto U_00eb; SLABEL_194(162): lit = ocount ; goto U_00f2; SLABEL_194(143): poplit (); U_00f2: if (lit >= 0) goto L_0240; fault (10); lit = 0; L_0240: getnext (); goto U_00f3; SLABEL_194(139): SLABEL_194(153): lit = 1; U_00f3: if (pending == 0) goto L_0241; popdef (); L_0241: op (65, lit ); ocount = (ocount - lit ); if (ocount < 0) goto L_0242; if (x == 0) goto L_0243; goto U_00eb; L_0243: if (ocount != 0) goto L_0244; ocount = (-1); return; L_0244: L_0242: fault (11); return; SLABEL_194(105): // SELECT 4 op (87, /*RHSval*/tag [x ].{field 4}); inhibit = 1; goto U_00ec; SLABEL_194(134): def (x ); n = ((ub - lb ) + 1); n = ((n + 15) >> 4); j = dmax ; dmax = ((dmax + n ) + 2); if (dmax < dmin ) goto L_0245; abandon (1); L_0245: // SELECT 2 /*RHSval*/tag [x ].{field 2} = j ; dict [j ] = lb ; dict [(j + 1)] = ub ; for (;;) { L_0246: n = (n - 1); if (n >= 0) goto L_0247; goto U_00eb; L_0247: j = (j + 1); dict [(j + 1)] = 0; } SLABEL_194(151): stats = (stats - 1); if (x >= tbase ) goto L_0248; fault (7); return; L_0248: if (pending == 0) goto L_0249; defslab (pstack [1]); goto L_024a; L_0249: // SELECT 1 if (/*RHSval*/tag [x ].{field 1} == 0) goto L_024b; fault (4); return; L_024b: // SELECT 1 /*RHSval*/tag [x ].{field 1} = 1; // SELECT 2 n = /*RHSval*/tag [x ].{field 2}; for (j = dict [n ]; j += 1; j != dict [(n + 1)]) { defslab (j ); if (bp < 128) goto L_0250; flushbuffer (); L_0250: } L_024f: L_024a: inhibit = 1; return; SLABEL_194(140): bp = (bp + 1); buff [bp ] = 112; goto U_00eb; SLABEL_194(144): buff [(bp + 1)] = 112; buff [(bp + 2)] = 69; bp = (bp + 2); goto U_00eb; SLABEL_194(155): if (x >= 0) goto L_0251; // SELECT 2 lit = /*RHSval*/tag [(-x )].{field 2}; goto L_0252; L_0251: lit = litpool [x ]; L_0252: pending = (pending + 1); pstack [pending ] = lit ; goto U_00eb; SLABEL_194(156): lit = pstack [pending ]; if (lit >= 0) goto L_0253; lit = (-lit ); L_0253: pstack [pending ] = lit ; goto U_00eb; SLABEL_194(157): lit = (-pstack [pending ]); pstack [pending ] = lit ; goto U_00eb; SLABEL_194(158): lit = (\pstack [pending ]); pstack [pending ] = lit ; goto U_00eb; SLABEL_194(159): SLABEL_194(160): SLABEL_194(161): pending = (pending - 1); lit2 = pstack [(pending + 1)]; lit = pstack [pending ]; ->SJUMP_195((x >> 2)) SLABEL_195(10): lit = (lit2 * lit ); goto U_00f4; SLABEL_195(12): SLABEL_195(3): n = 1; if (lit2 >= 0) goto L_0254; fault (10); L_0254: for (;;) { L_0255: if (lit2 <= 0) goto L_0256; lit2 = (lit2 - 1); n = (lit * n ); } L_0256: lit = n ; goto U_00f4; SLABEL_195(1): lit = (lit << lit2 ); goto U_00f4; SLABEL_195(2): lit = (lit >> lit2 ); goto U_00f4; SLABEL_195(5): lit = (lit2 & lit ); goto U_00f4; SLABEL_195(11): SLABEL_195(4): if (lit2 != 0) goto L_0257; fault (10); goto L_0258; L_0257: lit = (lit / lit2 ); L_0258: goto U_00f4; SLABEL_195(8): lit = (lit + lit2 ); goto U_00f4; SLABEL_195(9): lit = (lit - lit2 ); goto U_00f4; SLABEL_195(6): lit = (lit2 | lit ); goto U_00f4; SLABEL_195(7): lit = (lit2 ^ lit ); U_00f4: pstack [pending ] = lit ; goto U_00eb; SLABEL_194(170): // SELECT 8 if (/*RHSval*/impcom .{field 8} == "") goto L_0259; fault (4); L_0259: // SELECT 8 /*RHSval*/impcom .{field 8} = *"TRINGstring!extern char [1] string Nn"(((x - 16384) + stbase )); goto U_00eb; SLABEL_194(135): resln = 2; goto U_00eb; SLABEL_194(136): resln = (resln + 1); goto U_00eb; SLABEL_194(55): op (114, resln ); resln = 0; goto U_00eb; SLABEL_194(164): op (114, (resln + 4)); resln = 0; SLABEL_194(122): x = 6; goto U_00f0; SLABEL_194(87): setconst (pstack [1]); bp = (bp + 1); buff [bp ] = 80; goto U_00eb; for (;;) { L_025a: L_025a: ON 0x2c00 L_0227 ? <4> abandon (5); for (;;) { L_025b: // SELECT 2 /*RHSval*/impcom .{field 2} = 0; // SELECT 8 /*RHSval*/impcom .{field 8} = ""; // SELECT 2 if ((4096 & /*RHSval*/impcom .{field 2}) == 0) goto L_025b; list = 15; L_025b: openoutput (2, "LISTING"); openinput (2, "prims.inc"); selectinput (2); selectoutput (2); /*RHSval*/tag [800] = 0; /*RHSval*/tag [0] = 0; // SELECT 3 /*RHSval*/tag [0].{field 3} = 7; for (x = 0; x += 1; x != 2047) { hash [x ] = 0; } L_025f: printstring (" Edinburgh IMP77 Compiler - Version "); printstring ("ERSIONversion!const char [5] version SPARENAMESsparena"); newlines (2); op (108, 0); compileblock (0, 0, 6000, 0, 0); bp = (bp + 1); buff [bp ] = 10; flushbuffer (); // SELECT 1 /*RHSval*/impcom .{field 1} = stats ; if (faulty == 0) goto L_0260; // SELECT 1 /*RHSval*/impcom .{field 1} = (-faulty ); L_0260: