const char *snl;
          extern int  rem(int p, int q);
          extern void readsymbol(int typeof_P, void  *p);
          extern real  float(int n);
          extern char * tostring(int p);
          extern char * substring(char *s, int f, int t);
          extern int  freespace();
          extern void svc(int n, struct (null) *r);
          extern int  addr(int typeof_P, void  *p);
          extern int  *integer(int n);
          extern short  *shortinteger(int n);
          extern char  *byteinteger(int n);
          extern char * *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  *length(char *s);
          extern char  *charno(char *s, int n);
          extern int  int(real x);
          extern int  intpt(real x);
          extern void iocp(int n);
          extern int  typeof(int typeof_N, void  *n);
          extern int  sizeof(int typeof_N, void  *n);
          extern real  fracpt(real x);
          extern void prompt(char *s);
          extern int  nextsymbol();
          extern void skipsymbol();
          extern void printsymbol(int sym);
          extern void printstring(char *s);
          extern void write(int v, int p);
          extern void selectinput(int n);
          extern void selectoutput(int n);
          extern void openinput(int n, char *fd);
          extern void openoutput(int n, char *fd);
          extern void closeinput();
          extern void closeoutput();
          extern void resetinput();
          extern void resetoutput();
          extern char * time();
          extern char * date();
          extern int  cputime();
          extern int  *comreg(int n);
          extern void read(int typeof_X, void  *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{int unit; int owner; int n1; int n2;} filefm;
          typedef struct EVENTFM{int event; int sub; int extra; char *message; int pc; int x;} eventfm;
          extern struct EVENTFM event;
          extern void closeoutput();
          extern void closeinput();
          extern void openoutput(int i, char *s);
          extern void openinput(int i, char *s);
          typedef struct IMPCOMFM{int statements; int flags; int code; int gla; int diags; int perm; char *file; char *option;} impcomfm;
          extern struct IMPCOMFM impcom;
int main(int argc, char **argv) {
          const char *version;
          static int sparenames;
          typedef struct ARFM{short class; short sub; short link; short ptype; short papp; short pformat; short x; short pos;} arfm;
          typedef struct TAGFM{int app; int format; short flags; short index; short text; short link;} tagfm;
          // bounds [0 : 15]
          // do it now: const char  {*,2}amap {NO INIT}
          // bounds [0 : 15]
          // do it now: const char  {*,2}atoms {NO INIT}
          // ON DIM DO: struct ARFM {*,0}ar
          // bounds [1 : 520]
          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 *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]
          // do it now: static char  {*,1}char {NO INIT}
          // ON DIM DO: int  {*,0}litpool
          // bounds [0 : 50]
          DIM 0x0001 0x0001
          static int lit;
          static int lp;
          static int blockx;
          static int list;
          static int control;
          static int diag;
          // ON DIM DO: short  {*,0}hash
          // bounds [0 : 2047]
          DIM 0x0001 0x0001
          // ON DIM DO: struct TAGFM {*,0}tag
          // bounds [0 : 800]
          DIM 0x0001 0x0001
          // ON DIM DO: short  {*,0}dict
          // bounds [1 : 6000]
          DIM 0x0001 0x0001
          // ON DIM DO: char  {*,0}buff
          // bounds [1 : 512]
          DIM 0x0001 0x0001
          static int bp;
          // bounds [0 : 255]
          // do it now: const char * {*,2}text {NO INIT}
          static int gmax;
          // bounds [200 : 255]
          // do it now: static short  {*,1}phrase {NO INIT}
          // bounds [130 : 179]
          // do it now: const char  {*,2}atomic {NO INIT}
          // bounds [0 : 119]
          // do it now: const short  {*,2}initial {NO INIT}
          // bounds [0 : 1720]
          // do it now: static short  {*,1}gram {NO INIT}
          // bounds [0 : 1720]
          // do it now: static short  {*,1}glink {NO INIT}
          // bounds [32 : 607]
          // do it now: const short  {*,2}kdict {NO INIT}
          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;
          p = tag[p].text;
          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(string(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]
          /*todo: gcc jump table extension*/ void **reason;
          int stream;
          stream = 2;
          for (;;) {
L_0011:
          if (sym == 10) goto L_0012;
          newline();
L_0012:
          printsymbol(42);
          write(lines, 4);
          space();
          goto *reason[n];
reason_0:
          printstring("compiler error!");
          goto U_00a9;
reason_1:
          printstring("switch vector too large");
          goto U_00a9;
reason_2:
          printstring("too many names");
          goto U_00a9;
reason_3:
          printstring("program too complex");
          goto U_00a9;
reason_4:
          printstring("feature not implemented");
          goto U_00a9;
reason_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;
reason_6:
          printstring("too many faults!");
          goto U_00a9;
reason_7:
          printstring("string constant too long");
          goto U_00a9;
reason_8:
          printstring("dictionary full");
          goto U_00a9;
reason_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  *bflags;
          bflags = &tag[blocktag].flags;
          int blocktype;
          blocktype = ((*bflags >> 4) & 7);
          int blockform;
          blockform = (*bflags & 15);
          int blockfm;
          blockfm = tag[blocktag].format;
          int blockotype;
          blockotype = otype;
          int  *blockapp;
          blockapp = &tag[blocktag].app;
          int l;
          int newapp;
          goto L_001d;
          void fault(int n)
{
          // bounds [-5 : 22]
          /*todo: gcc jump table extension*/ void **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(includefile);
L_0032:
          write(lines, 4);
          printsymbol(csym);
          space();
L_0031:
          if ((-5) > n) goto L_0033;
          if (n > 22) goto L_0033;
          goto *fm[n];
L_0033:
          printstring("fault");
          write(n, 2);
          goto U_00c6;
fm_-5:
          printstring("Dubious statement");
          dubious = 0;
          goto U_00c7;
fm_-4:
          printstring("Non-local");
          pos1 = forwarn;
          forwarn = 0;
          goto U_00c6;
fm_-3:
          printident(x, 0);
          printstring(" unused");
          goto U_00c8;
fm_-2:
          printstring("\"}\"");
          goto U_00c9;
fm_-1:
          printstring("access");
          goto U_00c7;
fm_0:
          printstring("form");
          goto U_00c6;
fm_1:
          printstring("atom");
          goto U_00c6;
fm_2:
          printstring("not declared");
          goto U_00c6;
fm_3:
          printstring("too complex");
          goto U_00c6;
fm_4:
          printstring("duplicate ");
          printident(x, 0);
          goto U_00c6;
fm_5:
          printstring("type");
          goto U_00c6;
fm_6:
          printstring("match");
          goto U_00c7;
fm_7:
          printstring("context");
          goto U_00c7;
fm_21:
          printstring("context ");
          printident(this, 0);
          goto U_00c6;
fm_8:
          printstring("%cycle");
          goto U_00c9;
fm_9:
          printstring("%start");
          goto U_00c9;
fm_10:
          printstring("size");
          if (pos1 != 0) goto L_0034;
          write(lit, 1);
L_0034:
          goto U_00c6;
fm_11:
          printstring("bounds");
          if (ocount < 0) goto L_0035;
          write(ocount, 1);
L_0035:
          goto U_00c6;
fm_12:
          printstring("index");
          goto U_00c6;
fm_13:
          printstring("order");
          goto U_00c7;
fm_14:
          printstring("not a location");
          goto U_00c6;
fm_15:
          printstring("%begin");
          goto U_00c9;
fm_16:
          printstring("%end");
          goto U_00c9;
fm_17:
          printstring("%repeat");
          goto U_00c9;
fm_18:
          printstring("%finish");
          goto U_00c9;
fm_19:
          printstring("result");
          goto U_00c9;
fm_22:
          printstring("format");
          goto U_00c6;
fm_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 ((diag & 4096) == 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(((level * 3) - 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 ((*bflags & 128) != 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(((level * 3) - 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:
          v = &tag[t];
          t = (t - 1);
          class(*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]
          // do it now: const int  {*,2}classmap {NO INIT}
          int tags;
          int type;
          int form;
          ap = 0;
          tags = v->flags;
          type = ((tags >> 4) & 7);
          form = (tags & 15);
          tp = ((v->format << 3) | type);
          c = classmap[form];
          if (type != 0) goto L_0064;
          if (form != 2) goto L_0064;
          c = 208;
          tp = 0;
L_0064:
          if ((tags & 4096) == 0) goto L_0065;
          ap = v->app;
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);
          tx = &tag[x];
          flags = tx->flags;
          if ((flags & 128) == 0) goto L_0069;
          if ((flags & 512) != 0) goto L_0069;
          fault(20);
L_0069:
          if ((flags & 32768) != 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:
          dict[tx->text] = tx->link;
          }
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 node;
          short  *z;
          struct ARFM *arp;
          // bounds [180 : 200]
          /*todo: gcc jump table extension*/ void **act;
          // bounds [0 : 15]
          /*todo: gcc jump table extension*/ void **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(text[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(text[class]);
          if ((gg & 16384) == 0) goto L_0070;
          printsymbol(34);
L_0070:
          a = ((gg >> 8) & 15);
          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]
          // do it now: const char  {*,2}mapped {NO INIT}
          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[(sym & 127)];
          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 ((key & 3) != 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 = ((key & 3) - 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()
{
          formatlist = tag[format].app;
          if (formatlist >= 0) goto L_008f;
          atom1 = (32768 + 22);
          return(0);
L_008f:
          if (sym != 95) goto L_0090;
          escapeclass = 255;
          searchbase = tag[format].format;
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 = (hashvalue * 6700421);
          k2 = ((k2 >> (32 - (2 * 11))) | 1);
          k1 = (k2 >> 11);
          for (;;) {
L_0092:
          newname = hash[k1];
          if (newname != 0) goto L_0093;
          goto L_0094;
L_0093:
          if (string(addr(dict[(newname + 1)])) != string(new)) goto L_0095;
          goto U_00e8;
L_0095:
          k1 = ((k1 + k2) & 2047);
          }
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:
          if (tag[x].text != 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;
          t = &tag[x];
          atomflags = t->flags;
          format = t->format;
          app = t->app;
          protection = (atomflags & 256);
          type = ((atomflags >> 4) & 7);
          atom1 = amap[(atomflags & 15)];
          if ((diag & 8) == 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;
          t->flags = (t->flags | 32768);
          searchbase = 0;
          if ((atomflags & 2048) == 0) goto L_00a1;
          if (format == 0) goto L_00a1;
          if (formatselected() != 0) goto L_00a2;
          return;
L_00a2:
L_00a1:
          if ((atomflags & 4096) == 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 ((atomflags & 8192) == 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;
          t->flags = (t->flags | 32768);
          return;
L_00ad:
          if ((atomflags & 128) == 0) goto L_00ae;
          if (d != 3) goto L_00af;
          t->flags = (t->flags - 128);
          return;
L_00af:
          if (7 > (decl & 15)) goto L_00b0;
          if ((decl & 15) > 10) goto L_00b0;
          if ((decl & 128) != 0) goto L_00b0;
          if (((decl ^ atomflags) & 127) != 0) goto L_00b1;
          t->flags = (t->flags - 128);
          specgiven = 1;
          return;
L_00b1:
L_00b0:
          if ((decl & 15) != 4) goto L_00b2;
          t->flags = ((4 << 4) + 4);
          t->format = 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 = ((d >> 4) & 7);
          form = (d & 15);
          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 ((d & 128) == 0) goto L_00bb;
L_00ba:
          if (perm != 0) goto L_00bb;
          if (level != includelevel) goto L_00bc;
L_00bb:
          d = (d | 32768);
L_00bc:
          t = &tag[x];
          if (form != 3) goto L_00bd;
          id = (id + 1);
          vid = id;
L_00bd:
          t->index = vid;
          t->text = newname;
          t->flags = d;
          t->app = app;
          t->format = fdef;
          format = fdef;
          subatom = x;
          if (new < 0) goto L_00be;
          t->link = dict[new];
          dict[new] = x;
          if (gmin != 1720) goto L_00bf;
          tmin = (tmin - 1);
          subatom = tmin;
          tag[tmin] = *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 ((j & 16384) == 0) goto L_00ca;
          goto L_00cb;
L_00ca:
          if ((j & 127) != 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 = ((j >> 7) & 127);
          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 = (j & 127);
          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 = ((j >> 7) & 127);
          subatom = (kdict[(k + 1)] & 16383);
          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 ((n & (\((-1) >> 8))) == 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 = ((strp - stbase) | 16384);
          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 = ((n * base) + 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 = ((strp - stbase) | 8192);
          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] = ((n & 7) + 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 ((atom1 & 32768) == 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;
          octal(tag[(-subatom)].format);
          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;
          if ((tag[subatom].flags & 16384) != 0) goto L_012b;
          this = subatom;
          atom1 = (32768 + 21);
          return(0);
L_012b:
          op(32, tag[subatom].index);
          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 ((atom1 & 32768) == 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 = (g & 255);
          nmax = 1;
          ar[1].class = 0;
          ar[1].link = 0;
          ar[1].sub = 25;
L_013e:
          gg = gram[g];
          class = (gg & 255);
          sstype = (((gg >> 12) & 3) - 1);
          goto U_00da;
act_194:
          ptype = type;
          papp = app;
          pformat = format;
          goto U_00d7;
act_196:
          k = (g + 1);
          goto U_00db;
act_188:
          k = (ar[nmax].sub + 1);
U_00db:
          papp = glink[k];
          k = gram[k];
          if (k != 0) goto L_013f;
          goto U_00d7;
L_013f:
          ptype = (k & 7);
          pformat = (k >> 3);
act_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;
act_197:
          arp = &ar[nmin];
          k = arp->sub;
          if (blockform == (k & 15)) goto L_0149;
          goto U_00dd;
L_0149:
          arp->sub = (k >> 4);
          type = blocktype;
          ptype = blocktype;
          pformat = blockfm;
          papp = app;
          if (ptype == 4) goto L_014a;
          pformat = (-1);
L_014a:
          goto U_00d7;
act_195:
          if (type == 0) goto L_014b;
          if (type == 1) goto L_014b;
          if (type == 2) goto L_014b;
          goto U_00dc;
L_014b:
          arp = &ar[nmin];
          k = arp->sub;
          arp->sub = (k >> 2);
          k = (k & 3);
          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;
act_198:
          k = ((gg >> 8) & 15);
          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 ((atomflags & 512) != 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;
paction_1:
          if (type != 4) goto L_015a;
          g = phrase[242];
          goto L_015b;
L_015a:
          pformat = (-1);
L_015b:
          goto U_00d9;
paction_2:
          ptype = 2;
          pformat = (-1);
          goto U_00d9;
paction_3:
          ptype = 3;
          pformat = (-1);
          goto U_00d9;
paction_4:
          ptype = 1;
          pformat = (-1);
          goto U_00d9;
paction_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;
paction_6:
          ptype = (gram[(ar[nmax].sub + 1)] & 7);
          pformat = (-1);
          goto U_00d9;
paction_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 ((gg & 16384) != 0) goto L_0160;
          z = &node;
          for (;;) {
L_0161:
          k = *z;
          if ((gg & 12288) == 0) goto L_0162;
          if (k != 0) goto L_0163;
L_0162:
          goto L_0164;
L_0163:
          gg = (gg - 4096);
          z = &ar[k].link;
          }
L_0164:
          if (mapgg == 0) goto L_0165;
          if ((gg & 255) != 91) goto L_0165;
          gg = mapgg;
L_0165:
          nmin = (nmin - 1);
          if (nmin != nmax) goto L_0166;
          goto U_00e0;
L_0166:
          *z = nmin;
          arp = &ar[nmin];
          arp->sub = s;
          arp->class = ((gg & 255) | mark);
          arp->link = k;
L_0160:
          mark = 0;
          mapgg = 0;
U_00d7:
          g = glink[g];
paction_0:
U_00d9:
          gg = gram[g];
          class = (gg & 255);
          if ((diag & 1) == 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;
          arp = &ar[(nmax + 1)];
          arp->papp = papp;
          arp->x = 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:
          arp = &ar[nmax];
          arp->ptype = ptype;
          arp->pos = pos1;
          arp->pformat = pformat;
          arp->link = gentype;
          arp->class = node;
          arp->sub = g;
          node = 0;
          g = phrase[class];
          if (force == 0) goto L_0173;
          ptype = force;
          force = 0;
L_0173:
          gentype = 0;
          goto *paction[((gg >> 8) & 15)];
L_0171:
          goto *act[class];
U_00e1:
          s = 0;
          for (;;) {
L_0174:
          if (node == 0) goto L_0175;
          z = &ar[node].link;
          k = *z;
          *z = s;
          s = node;
          node = k;
          }
L_0175:
          ss = s;
U_00e4:
          if (nmax == 0) goto L_0176;
          k = gentype;
          arp = &ar[nmax];
          nmax = (nmax - 1);
          node = arp->class;
          gentype = arp->link;
          ptype = arp->ptype;
          pformat = arp->pformat;
          g = arp->sub;
          if ((g & 4096) == 0) goto L_0177;
          g = (g - 4096);
          papp = arp->papp;
          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;
act_193:
          if (sym == 61) goto L_0180;
          if (sym == 60) goto L_0180;
          gg = 0;
          goto U_00e1;
L_0180:
act_181:
          atom1 = amap[(decl & 15)];
          goto U_00d7;
act_182:
          class = 252;
          g = (glink[g] | 4096);
          decl = 0;
          otype = 0;
          goto U_00e2;
act_199:
          s = 0;
          for (;;) {
L_0181:
          if (node == 0) goto L_0182;
          z = &ar[node].link;
          k = *z;
          *z = s;
          s = node;
          node = k;
          }
L_0182:
          ss = s;
          if (quote == 0) goto L_0183;
          codeatom(28);
L_0183:
          compile();
          if ((atom1 & 32768) != 0) goto L_0184;
          goto U_00d7;
L_0184:
          goto U_00d8;
act_184:
          if (type == 1) goto L_0185;
          goto U_00e5;
L_0185:
          if (subatom >= 0) goto L_0186;
          lit = tag[(-subatom)].format;
          goto L_0187;
L_0186:
          lit = litpool[subatom];
L_0187:
          if (lit == 0) goto L_0188;
          goto U_00e5;
L_0188:
          goto U_00d7;
act_185:
          s = 0;
          for (;;) {
L_0189:
          if (node == 0) goto L_018a;
          z = &ar[node].link;
          k = *z;
          *z = s;
          s = node;
          node = k;
          }
L_018a:
          ss = s;
          atom1 = ar[s].class;
          atom2 = 0;
          if (atom1 == 97) goto L_018b;
          if (atom1 != 98) goto L_018c;
L_018b:
          atom1 = 91;
L_018c:
          arp = &ar[nmax];
          x = arp->x;
          pos1 = arp->pos;
          pos2 = 0;
          app = 0;
          format = tag[x].format;
          flags = tag[x].flags;
          type = ((flags >> 4) & 7);
          protection = (flags & 256);
          if ((flags & 1024) == 0) goto L_018d;
          protection = 0;
L_018d:
          if ((flags & 2048) == 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;
act_187:
          protection = 256;
          goto U_00d7;
act_186:
          if ((protection & 256) != 0) goto L_0190;
          goto U_00d7;
L_0190:
          proterr = nmin;
          goto U_00de;
act_191:
          k = protection;
          codeatom(0);
          if ((atomflags & 1024) != 0) goto L_0191;
          protection = k;
L_0191:
          goto U_00d7;
act_192:
          if (parsedmachinecode() != 0) goto L_0192;
          goto U_00d8;
L_0192:
          goto U_00d7;
act_189:
          k = gapp();
          deletenames(1);
          tmax = tbase;
          tbase = gram[gmin];
          local = tbase;
          gmin = (gmin + 1);
          x = ar[ar[nmax].class].sub;
          tag[x].app = k;
          goto U_00d7;
act_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 ((diag & 32) == 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 ((k & 32768) == 0) goto L_0197;
          fault((k & 255));
          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]
          /*todo: gcc jump table extension*/ void **c;
          // bounds [1 : 12]
          /*todo: gcc jump table extension*/ void **litop;
          // bounds [1 : 14]
          // do it now: const char  {*,2}operator {NO INIT}
          // bounds [0 : 7]
          // do it now: const char  {*,2}cc {NO INIT}
          // bounds [0 : 15]
          // do it now: const char  {*,2}anyform {NO INIT}
          // bounds [0 : 15]
          // do it now: const short  {*,2}decmap {NO INIT}
          // bounds [0 : 15]
          // do it now: static char  {*,1}cnest; /* uninitialised */
          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]
          // do it now: static int  {*,1}pstack; /* uninitialised */
          static char *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:
          p = &ar[link];
          next = p->link;
          link = p->sub;
L_019d:
          for (;;) {
L_019f:
          p = &ar[next];
          x = p->sub;
          class = p->class;
          if (class >= 180) goto L_01a0;
          goto L_01a1;
L_01a0:
          if (x != 0) goto L_01a2;
          next = p->link;
          goto U_00e4;
L_01a2:
          if (p->link == 0) goto L_01a3;
          p->sub = link;
          link = next;
L_01a3:
          next = x;
          }
L_01a1:
          next = p->link;
          if ((diag & 2) == 0) goto L_01a4;
          if (name == "") goto L_01a5;
          spaces((8 - *length(name)));
L_01a5:
          strncpy(name,text[class],8+1);
          write(x, 2);
          space();
          printstring(name);
          space();
          count = (count - 1);
          if (count > 0) goto L_01a6;
          count = 5;
          strncpy(name,"",8+1);
          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:
          tag[p].app = 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 + (dict[dmin] & 1)));
          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 = (*bflags | open);
          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);
          v = &tag[p];
          t = 0;
          if (v->index < 0) goto L_01bb;
          if (v->index != 0) goto L_01bc;
          id = (id + 1);
          v->index = id;
L_01bc:
          lastdef = v->index;
          t = lastdef;
L_01bb:
          op(36, t);
          printident(p, 1);
          t = v->flags;
          type = t;
          if ((type & (7 << 4)) < (6 << 4)) goto L_01bd;
          type = (type & (\(7 << 4)));
L_01bd:
          op(44, (type & 127));
          f = v->format;
          if ((t & 112) != (4 << 4)) goto L_01be;
          f = tag[f].index;
L_01be:
          if (f >= 0) goto L_01bf;
          f = v->index;
L_01bf:
          op(44, f);
          f = (otype + ((t >> 4) & 120));
          if (class != 125) goto L_01c0;
          f = (f | 8);
L_01c0:
          dim = v->app;
          if (0 >= dim) goto L_01c1;
          if (dim <= 6) goto L_01c2;
L_01c1:
          dim = 0;
L_01c2:
          op(44, (f + (dim << 8)));
          if ((t & 4096) != 0) goto L_01c3;
          defs = 0;
L_01c3:
          f = (t & 15);
          if ((v->flags & 128) == 0) goto L_01c4;
          if (3 > f) goto L_01c5;
          if (f <= 10) goto L_01c6;
L_01c5:
          v->flags = (v->flags & (\128));
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:
          v->flags = (v->flags - 1);
L_01c7:
L_01b9:
          goto L_01c9;
          void defslab(int n)
{
          int p;
          int l;
          int b;
          int w;
          int bit;
          p = tag[x].format;
          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 << (b & 15));
          if ((dict[(w + 2)] & bit) == 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)] = (dict[(w + 2)] | bit);
L_01cd:
          setconst(n);
          op(95, tag[x].index);
          goto L_01ce;
L_01ca:
          fault(12);
L_01ce:
          access = 1;
L_01c9:
          goto L_01cf;
          void call()
{
          struct TAGFM *t;
          t = &tag[x];
          op(64, t->index);
          if ((t->flags & 16384) == 0) goto L_01d0;
          access = 0;
L_01d0:
          if (t->app != 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 ((diag & 2) == 0) goto L_01da;
          if (sym == 10) goto L_01db;
          newline();
L_01db:
          printstring("ss =");
          write(ss, 1);
          newline();
          count = 5;
          strncpy(name,"",8+1);
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:
c_0:
U_00eb:
          if (next == link) goto L_01dd;
          getnext();
          goto *c[class];
L_01dd:
          if ((diag & 2) == 0) goto L_01de;
          if (count == 5) goto L_01de;
          newline();
L_01de:
          if ((lmode & ((16 | 4) | 8)) == 0) goto L_01df;
          if ((lmode & 16) == 0) goto L_01e0;
          op(66, (label - 1));
L_01e0:
          if ((lmode & 4) == 0) goto L_01e1;
          deflab(label);
L_01e1:
          if ((lmode & 8) == 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 = ((decl & (\15)) + decmap[(decl & 15)]);
          atom1 = atoms[(decl & 15)];
          if (otype == 0) goto L_01e5;
          if (atom1 == 7) goto L_01e6;
          atom1 = (atom1 + 1);
L_01e6:
          if (otype != 2) goto L_01e7;
          n = (decl & 15);
          if ((n & 1) == 0) goto L_01e8;
          decl = (decl | 256);
          if ((decl & 127) != 17) goto L_01e9;
          decl = (decl | 8192);
L_01e9:
L_01e8:
          goto L_01ea;
L_01e7:
          decl = (decl | 512);
L_01ea:
L_01e5:
          if (sstype != 0) goto L_01eb;
          if (atom1 != 7) goto L_01eb;
          sstype = 1;
L_01eb:
          if ((decl & 128) == 0) goto L_01ec;
          atom1 = (atom1 + 1);
L_01ec:
          if (atom1 != 5) goto L_01ed;
          ocount = 0;
          cont = 43;
L_01ed:
          if (anyform[(decl & 15)] != 0) goto L_01ee;
          if (((decl >> 4) & 7) != 4) goto L_01ef;
          if ((tag[fdef].flags & 128) == 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;
c_88:
c_28:
          decl = (x & (\7));
          fdef = (x & 7);
          if ((x & 113) != ((2 << 4) + 1)) goto L_01f3;
          fdef = realsln;
L_01f3:
          decs = 1;
          goto U_00eb;
c_34:
c_35:
          otype = x;
          ord = 1;
          goto U_00eb;
c_152:
          decl = (decl + (x << 1));
          goto U_00eb;
c_31:
c_32:
          specmode = (level + 1);
          if (x != 9) goto L_01f4;
          decl = (decl | 256);
L_01f4:
c_29:
          ord = 1;
          dim = 0;
c_30:
          decl = (decl + x);
          decs = 1;
          goto U_00eb;
c_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;
c_37:
          x = (x | 2048);
c_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;
c_33:
          decl = x;
          decs = 1;
          goto U_00eb;
c_39:
          decl = (decl | 128);
          ocount = (-1);
          specmode = (-1);
          goto U_00eb;
c_38:
          decl = (64 + 4);
          order = 1;
          atom1 = x;
          if (atom1 != 12) goto L_01fb;
          decl = (decl | 128);
L_01fb:
          fdef = (tmax + 1);
          return;
c_175:
          id = (id + 1);
          tag[x].index = id;
          return;
c_41:
          decs = 1;
          decl = ((x | 128) | 16384);
          goto U_00eb;
c_133:
          recid = 0;
          rbase = (tmin - 1);
          this = x;
          fmbase = fdef;
          formatlist = tmin;
          def(this);
          goto U_00eb;
c_148:
          if (next != 0) goto L_01fc;
          fdef = 0;
          goto U_00eb;
L_01fc:
          getnext();
          fdef = x;
          goto U_00eb;
c_127:
          bp = (bp + 1);
          buff[bp] = 125;
          goto U_00eb;
c_126:
          bp = (bp + 1);
          buff[bp] = 123;
          goto U_00eb;
c_174:
          setbp();
c_171:
c_172:
c_173:
          bp = (bp + 1);
          buff[bp] = 126;
          bp = (bp + 1);
          buff[bp] = ((class - 171) + 65);
          goto U_00eb;
c_168:
          rbase = (-rbase);
          sstype = 0;
          specmode = 0;
c_147:
          searchbase = 0;
          tag[this].app = tmin;
          tag[this].format = rbase;
          goto U_00eb;
c_45:
          if (x != 36) goto L_01fd;
          bp = (bp + 1);
          buff[bp] = 85;
L_01fd:
          goto U_00eb;
c_46:
          bp = (bp + 1);
          buff[bp] = 92;
          goto U_00eb;
c_47:
c_48:
c_42:
c_43:
c_44:
          bp = (bp + 1);
          buff[bp] = operator[x];
          goto U_00eb;
          goto L_01fe;
          void push(int x)
{
          if ((cnest[cp] & 2) == x) goto L_01ff;
          cnest[cp] = (cnest[cp] | 1);
          x = (x + 4);
L_01ff:
          if ((cnest[cp] & 1) == 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 ((lmode & 1) == mode) goto L_0203;
L_0202:
          fault((mode + 8));
          goto L_0204;
L_0203:
          dmin = (dmin + 1);
          label = (label - 3);
L_0204:
L_0201:
c_56:
c_57:
          push(x);
          goto U_00eb;
c_58:
          cnest[cp] = (cnest[cp] ^ 2);
          goto U_00eb;
c_138:
          x = (((128 + 32) + 16) + 4);
c_59:
c_60:
          if (class != 138) goto L_0205;
          op(102, (label - 1));
          goto L_0206;
L_0205:
          deflab((label - 1));
L_0206:
c_166:
c_62:
          lmode = ((lmode & (8 | 16)) | (x >> 3));
          clab = label;
          cp = 1;
          cnest[1] = (x & 7);
          goto U_00eb;
c_72:
          poplabel(0);
          if ((lmode & 32) == 0) goto L_0207;
          deflab((label + 1));
L_0207:
          goto U_00ec;
c_69:
          poplabel(1);
          goto U_00eb;
c_163:
c_70:
          poplabel(1);
          if ((lmode & 3) != 3) goto L_0208;
          fault(7);
L_0208:
c_68:
          lmode = ((lmode & 8) | 3);
          if (access == 0) goto L_0209;
          op(70, (label - 1));
          lmode = (8 | 3);
L_0209:
          deflab(label);
          if (next == 0) goto L_020a;
          goto U_00eb;
L_020a:
c_120:
c_67:
c_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;
c_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 ((lit & (\15)) == 0) goto L_0212;
          fault(10);
L_0212:
          j = (1 << lit);
          if ((n & j) == 0) goto L_0213;
          dubious = 1;
L_0213:
          n = (n | j);
          }
L_0211:
          op(111, n);
          op(44, label);
          lmode = (4 | 1);
          goto U_00ef;
c_104:
          op(74, tag[x].index);
          inhibit = 1;
          goto U_00ec;
c_149:
          stats = (stats - 1);
          access = 1;
          inhibit = 1;
          op(76, tag[x].index);
          goto U_00eb;
c_63:
          j = dmin;
          l = (label - 3);
          for (;;) {
L_0214:
          if (dict[j] >= 0) goto L_0215;
          fault(7);
          goto U_00eb;
L_0215:
          if ((dict[j] & 1) != 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] = (dict[j] | x);
          goto U_00ec;
c_50:
          bp = (bp + 1);
          buff[bp] = 67;
          goto U_00f0;
c_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 ((cnest[cp] & 2) == 0) goto L_021b;
          x = (x ^ 1);
L_021b:
          j = cp;
          l = clab;
          for (;;) {
L_021c:
          if ((cnest[j] & 4) != 0) goto L_021d;
          j = (j - 1);
          l = (l - (cnest[j] & 1));
          }
L_021d:
          op(cc[x], l);
          if ((cnest[cp] & 1) == 0) goto L_021e;
          deflab((clab + 1));
L_021e:
          cp = (cp - 1);
          clab = (clab - (cnest[cp] & 1));
          goto U_00eb;
c_78:
c_79:
c_80:
          open = 0;
c_82:
          access = 0;
c_89:
c_81:
          bp = (bp + 1);
          buff[bp] = x;
          goto U_00eb;
c_65:
          poplit();
          op(101, lit);
          goto U_00ec;
c_51:
          bp = (bp + 1);
          buff[bp] = 83;
          goto U_00eb;
c_53:
          bp = (bp + 1);
          buff[bp] = 106;
          goto U_00eb;
c_52:
          bp = (bp + 1);
          buff[bp] = 90;
          goto U_00eb;
c_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;
c_77:
          perm = 0;
          lines = 0;
          stats = 0;
          closeinput();
          selectinput(1);
          list = (list - 1);
          tbase = tmax;
          tstart = tmax;
          return;
c_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);
c_75:
          compileend(x);
          return;
c_85:
          if (x != 0) goto L_0223;
          control = lit;
          goto L_0224;
L_0223:
          if (((lit >> 14) & 3) != 1) goto L_0225;
          diag = (lit & 16383);
L_0225:
L_0224:
          op((122 - x), lit);
          goto U_00eb;
c_83:
          list = ((list + x) - 2);
          goto U_00eb;
c_84:
          realsln = x;
          goto U_00eb;
c_86:
          if (include == 0) goto L_0226;
          fault(7);
          return;
L_0226:
          getnext();
          strncpy(includefile,string(((x - 16384) + stbase)),63+1);
int main(int argc, char **argv) {
          if (imp_onevent(0x0200)) goto L_0227 /* returns FALSE during longjump setup */
          abandon(9);
L_0227:
          openinput(3, includefile);
          include = lines;
          lines = 0;
          includelist = list;
          includelevel = level;
          selectinput(3);
          goto U_00eb;
c_154:
          dimension = (dimension + 1);
          if (dimension != (6 + 1)) goto L_0228;
          fault(11);
L_0228:
          goto U_00eb;
c_145:
          setbp();
          goto U_00eb;
c_146:
          setbp();
c_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;
c_128:
          id = dupid;
          goto U_00eb;
c_130:
          blockx = x;
          if ((decl & 128) != 0) goto L_022d;
          if (level == 0) goto L_022d;
          op(70, 0);
L_022d:
c_125:
          dupid = id;
          if (level >= 0) goto L_022e;
          return;
L_022e:
c_90:
          def(x);
          goto U_00eb;
c_131:
          if ((tag[x].flags & (127 + 8192)) != (17 + 8192)) goto L_022f;
          tag[x].format = 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;
c_124:
          if ((tag[cident].flags & 256) == 0) goto L_0232;
          dubious = 1;
L_0232:
          goto U_00eb;
c_97:
c_98:
c_99:
c_96:
          call();
          goto U_00eb;
c_165:
c_100:
c_101:
c_102:
c_103:
c_91:
c_92:
c_106:
c_107:
c_108:
c_109:
          k = tag[x].index;
          if (k >= 0) goto L_0233;
          op(110, (-k));
          goto L_0234;
L_0233:
          op(64, k);
L_0234:
          goto U_00eb;
c_121:
          setconst(0);
          goto U_00eb;
c_167:
          bp = (bp + 1);
          buff[bp] = 71;
          goto U_00f1;
c_93:
          if (x >= 0) goto L_0235;
          setconst(tag[(-x)].format);
          goto U_00eb;
L_0235:
          if ((x & 16384) == 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 ((x & 8192) == 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;
c_137:
          bp = (bp + 1);
          buff[bp] = 105;
          goto U_00eb;
c_141:
          bp = (bp + 1);
          buff[bp] = 97;
          goto U_00eb;
c_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;
c_162:
          lit = ocount;
          goto U_00f2;
c_143:
          poplit();
U_00f2:
          if (lit >= 0) goto L_0240;
          fault(10);
          lit = 0;
L_0240:
          getnext();
          goto U_00f3;
c_139:
c_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;
c_105:
          op(87, tag[x].index);
          inhibit = 1;
          goto U_00ec;
c_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:
          tag[x].format = 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;
          }
c_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:
          if (tag[x].app == 0) goto L_024b;
          fault(4);
          return;
L_024b:
          tag[x].app = 1;
          n = tag[x].format;
          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;
c_140:
          bp = (bp + 1);
          buff[bp] = 112;
          goto U_00eb;
c_144:
          buff[(bp + 1)] = 112;
          buff[(bp + 2)] = 69;
          bp = (bp + 2);
          goto U_00eb;
c_155:
          if (x >= 0) goto L_0251;
          lit = tag[(-x)].format;
          goto L_0252;
L_0251:
          lit = litpool[x];
L_0252:
          pending = (pending + 1);
          pstack[pending] = lit;
          goto U_00eb;
c_156:
          lit = pstack[pending];
          if (lit >= 0) goto L_0253;
          lit = (-lit);
L_0253:
          pstack[pending] = lit;
          goto U_00eb;
c_157:
          lit = (-pstack[pending]);
          pstack[pending] = lit;
          goto U_00eb;
c_158:
          lit = (\pstack[pending]);
          pstack[pending] = lit;
          goto U_00eb;
c_159:
c_160:
c_161:
          pending = (pending - 1);
          lit2 = pstack[(pending + 1)];
          lit = pstack[pending];
          goto *litop[(x >> 2)];
litop_10:
          lit = (lit * lit2);
          goto U_00f4;
litop_12:
litop_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 = (n * lit);
          }
L_0256:
          lit = n;
          goto U_00f4;
litop_1:
          lit = (lit << lit2);
          goto U_00f4;
litop_2:
          lit = (lit >> lit2);
          goto U_00f4;
litop_5:
          lit = (lit & lit2);
          goto U_00f4;
litop_11:
litop_4:
          if (lit2 != 0) goto L_0257;
          fault(10);
          goto L_0258;
L_0257:
          lit = (lit / lit2);
L_0258:
          goto U_00f4;
litop_8:
          lit = (lit + lit2);
          goto U_00f4;
litop_9:
          lit = (lit - lit2);
          goto U_00f4;
litop_6:
          lit = (lit | lit2);
          goto U_00f4;
litop_7:
          lit = (lit ^ lit2);
U_00f4:
          pstack[pending] = lit;
          goto U_00eb;
c_170:
          if (impcom.option == "") goto L_0259;
          fault(4);
L_0259:
          impcom.option = string(((x - 16384) + stbase));
          goto U_00eb;
c_135:
          resln = 2;
          goto U_00eb;
c_136:
          resln = (resln + 1);
          goto U_00eb;
c_55:
          op(114, resln);
          resln = 0;
          goto U_00eb;
c_164:
          op(114, (resln + 4));
          resln = 0;
c_122:
          x = 6;
          goto U_00f0;
c_87:
          setconst(pstack[1]);
          bp = (bp + 1);
          buff[bp] = 80;
          goto U_00eb;
          for (;;) {
L_025a:
L_025a:
          if (imp_onevent(0x0200)) goto L_025b /* returns FALSE during longjump setup */
          abandon(5);
L_025b:
          impcom.flags = 0;
          impcom.option = "";
          if ((impcom.flags & 4096) == 0) goto L_025c;
          list = 15;
L_025c:
          openoutput(2, "LISTING");
          openinput(2, "prims.inc");
          selectinput(2);
          selectoutput(2);
          tag[800] = 0;
          tag[0] = 0;
          tag[0].flags = 7;
          for (x = 0; x += 1; x != 2047) {
          hash[x] = 0;
          }
L_0260:
          printstring("         Edinburgh IMP77 Compiler - Version ");
          printstring(version);
          newlines(2);
          op(108, 0);
          compileblock(0, 0, 6000, 0, 0);
          bp = (bp + 1);
          buff[bp] = 10;
          flushbuffer();
          impcom.statements = stats;
          if (faulty == 0) goto L_0261;
          impcom.statements = (-faulty);
L_0261: