#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  !!%CONTROL 0
//     2  %BEGIN

int main(int argc, char **argv) { /*%begin*/
  _imp_initialise(argc, argv);

  //     3
  //     4  %routine newpage

  void NEWPAGE(void) {
    //     5    printsymbol('L'&31)

    _imp_PRINTSYMBOL(76 & 31);

    //     6  %end

    return;
  } /* end of NEWPAGE */

  //     7
  //     8  %routine xreadsym(%integername sym)

  void XREADSYM(int *SYM) {
    //     9    readsymbol(sym) ; printsymbol(sym)

    _imp_READSYMBOL(SYM);
    _imp_PRINTSYMBOL(*SYM);

    //    10  %end

    return;
  } /* end of XREADSYM */

  //    11
  //    12  %routine readsymbol(%integername sym)

  void READSYMBOL(int *SYM) {
    //    13    xreadsym(sym)

    XREADSYM(SYM);

    //    14  %end

    return;
  } /* end of READSYMBOL */

  //    15
  //    16  %routine xread(%integername num)

  void XREAD(int *NUM) {
    //    17    read(num) ; write(num,0)

    _imp_READ(NUM);
    _imp_WRITE(*NUM, 0);

    //    18  %end

    return;
  } /* end of XREAD */

  //    19
  //    20  %routine read(%integername num)

  void READ(int *NUM) {
    //    21    xread(num)

    XREAD(NUM);

    //    22  %end

    return;
  } /* end of READ */

  //    23
  //    24  %INTEGERARRAY RMN,REG(0:15)

  int RMN[16];
  int REG[16];

  //    25  %INTEGERARRAY IMN(1:31)

  int IMN[31];

  //    26  %INTEGERARRAY LMN,LAD(1:20)

  int LMN[20];
  int LAD[20];

  //    27  %INTEGERARRAY R(1:4000)

  int R[4000];

  //    28  %INTEGERARRAY S(0:16383)

  int S[16384];

  //    29  %INTEGER LP,RP,SP,I,J,K,L,M,N,F,MR,TR,ST,CT

  int LP;
  int RP;
  int SP;
  int I;
  int J;
  int K;
  int L;
  int M;
  int N;
  int F;
  int MR;
  int TR;
  int ST;
  int CT;
  auto void READMN(int *MN, int *NEXT);

  auto void FAULT(int I, int J, int K, int L);

  auto void OUT(int I);

  auto void DUMP(void);

  //    30  %ROUTINESPEC READMN(%INTEGERNAME MN,NEXT)
  //    31  %ROUTINESPEC FAULT(%INTEGER I,J,K,L)
  //    32  %ROUTINESPEC OUT(%INTEGER I)
  //    33  %ROUTINESPEC DUMP
  //    34  %SWITCH INS(1:31)

  int INS_index;
  int INS_line;
  char *INS_file;
  static const void *INS[31] = {
      &&case_INS_1,  &&case_INS_2,  &&case_INS_3,  &&case_INS_4,  &&case_INS_5,  &&case_INS_6,  &&case_INS_7,
      &&case_INS_8,  &&case_INS_9,  &&case_INS_10, &&case_INS_11, &&case_INS_12, &&case_INS_13, &&case_INS_14,
      &&case_INS_15, &&case_INS_16, &&case_INS_17, &&case_INS_18, &&case_INS_19, &&case_INS_20, &&case_INS_21,
      &&case_INS_22, &&case_INS_23, &&case_INS_24, &&case_INS_25, &&case_INS_26, &&case_INS_27, &&case_INS_28,
      &&case_INS_29, &&case_INS_30, &&case_INS_31};

  //    35  %SWITCH IOR(0:10)

  int IOR_index;
  int IOR_line;
  char *IOR_file;
  static const void *IOR[11] = {&&case_IOR_0, &&case_IOR_1, &&case_IOR_2, &&case_IOR_3, &&case_IOR_4, &&case_IOR_5,
                                &&case_IOR_6, &&case_IOR_7, &&case_IOR_8, &&case_IOR_9, &&case_IOR_10};

  //    36  !!%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
  //    37       RMN(0)=M'BR0'  ;  RMN(1)=M'BR1'  ;  RMN(2)=M'BR2'

  RMN[0] = 4346416;
  RMN[1] = 4346417;
  RMN[2] = 4346418;

  //    38       RMN(3)=M'BR3'  ;  RMN(4)=M'BR4'  ;  RMN(5)=M'BR5'

  RMN[3] = 4346419;
  RMN[4] = 4346420;
  RMN[5] = 4346421;

  //    39       RMN(6)=M'BR6'  ;  RMN(7)=M'BR7'  ;  RMN(8)=M'BR8'

  RMN[6] = 4346422;
  RMN[7] = 4346423;
  RMN[8] = 4346424;

  //    40       RMN(9)=M'BR9'  ;  RMN(10)=M'BR10';  RMN(11)=M'BR11'

  RMN[9] = 4346425;
  RMN[10] = 1112682800;
  RMN[11] = 1112682801;

  //    41       RMN(12)=M'BR12';  RMN(13)=M'WK'  ;  RMN(14)=M'STP'

  RMN[12] = 1112682802;
  RMN[13] = 22347;
  RMN[14] = 5461072;

  //    42       RMN(15)=M'ACC'

  RMN[15] = 4277059;

  //    43       IMN(1)=M'LOAD' ;  IMN(2)=M'LDA'  ;  IMN(3)=M'ADD'

  IMN[0] = 1280262468;
  IMN[1] = 4998209;
  IMN[2] = 4277316;

  //    44       IMN(4)=M'SUB'  ;  IMN(5)=M'MLT'  ;  IMN(6)=M'DIV'

  IMN[3] = 5461314;
  IMN[4] = 5065812;
  IMN[5] = 4475222;

  //    45       IMN(7)=M'EXP'  ;  IMN(8)=M'STR'  ;  IMN(9)=M'NEG'

  IMN[6] = 4544592;
  IMN[7] = 5461074;
  IMN[8] = 5129543;

  //    46       IMN(10)=M'NOT' ;  IMN(11)=M'SHL' ;  IMN(12)=M'SHR'

  IMN[9] = 5132116;
  IMN[10] = 5457996;
  IMN[11] = 5458002;

  //    47       IMN(13)=M'AND' ;  IMN(14)=M'OR'  ;  IMN(15)=M'XOR'

  IMN[12] = 4279876;
  IMN[13] = 20306;
  IMN[14] = 5787474;

  //    48       IMN(16)=M'BAL' ;  IMN(17)=M'B'   ;  IMN(18)=M'BZ'

  IMN[15] = 4342092;
  IMN[16] = 66;
  IMN[17] = 16986;

  //    49       IMN(19)=M'BNZ' ;  IMN(20)=M'BG'  ;  IMN(21)=M'BNG'

  IMN[18] = 4345434;
  IMN[19] = 16967;
  IMN[20] = 4345415;

  //    50       IMN(22)=M'BL'  ;  IMN(23)=M'BNL' ;  IMN(24)=M'STOP'

  IMN[21] = 16972;
  IMN[22] = 4345420;
  IMN[23] = 1398034256;

  //    51       IMN(25)=M'ADDF';  IMN(26)=M'SUBF';  IMN(27)=M'MLTF'

  IMN[24] = 1094992966;
  IMN[25] = 1398096454;
  IMN[26] = 1296847942;

  //    52       IMN(28)=M'DIVF';  IMN(29)=M'EXPF';  IMN(30)=M'NEGF'

  IMN[27] = 1145656902;
  IMN[28] = 1163415622;
  IMN[29] = 1313163078;

  //    53       IMN(31)=M'FLT'

  IMN[30] = 4607060;

  //    54       LP=1

  LP = 1;

  //    55       RP=1

  RP = 1;

  //    56       SP=0

  SP = 0;

  //    57       F=0

  F = 0;

  //    58       MR=0

  MR = 0;

  //    59       TR=0

  TR = 0;

  //    60  !!     DEFINE('STREAM01,SKIMPO')
  //    61       open input(1, "skimp77.asm")

  _imp_OPENINPUT(1, _imp_str_literal("skimp77.asm"));

  //    62       SELECT INPUT(1)

  _imp_SELECTINPUT(1);

  //    63  !!L1:  READ SYMBOL(I)
  //    64  L1:  %begin

U_1000:;
  { /*%begin*/

    //    65         %on %event 9 %start

    if (!_imp_on_event(9)) goto L_0001;

      //    66           print string("End of file reading skimp77.asm, not while executing it..."); newline

    _imp_PRINTSTRING(_imp_str_literal("End of file reading skimp77.asm, not while executing it..."));
    _imp_NEWLINE();

    //    67           ! So what is supposed to signify end of the skimp assembly code?
    //    68           %stop

    _imp_stop(0);

    //    69         %finish

  L_0001:;

  //    70         READ SYMBOL(I)

    READSYMBOL(/*?*/ &I);

    //    71       %end

    goto end_1000;
  end_1000:;
  }

  //    72       %if i = ';' %then %start

  if (I != 59) goto L_0002;

    //    73         %cycle  ;! skip comments.  comments with a '.' in them were causing errors.

L_0003:;

//    74           read symbol(i)

  READSYMBOL(/*?*/ &I);

  //    75         %repeat %until i = NL

  if (I == 10) goto L_0004;
  goto L_0003;
L_0004:;

//    76         ->L1

  goto U_1000;

  //    77       %finish

L_0002:;

//    78       %IF I='''' %THEN %START

  if (I != 39) goto L_0005;

    //    79  L10:    READ SYMBOL(I)

U_1001:;
  READSYMBOL(/*?*/ &I);

  //    80          %IF I\='''' %THEN ->L10

  if (I == 39) goto L_0006;
  goto U_1001;
L_0006:;

//    81          ->L1 ; %FINISH

  goto U_1000;
L_0005:;

//    82       %IF I\='.' %THEN ->L1

  if (I == 46) goto L_0007;
  goto U_1000;
L_0007:;

//    83       READMN(I,J)

  READMN(/*?*/ &I, /*?*/ &J);

  //    84       %IF J=':' %THEN %START

  if (J != 58) goto L_0008;

    //    85          %IF LP=1 %THEN ->L2

  if (LP != 1) goto L_0009;
  goto U_1002;
L_0009:;

//    86          K=1

  K = 1;

  //    87  L4:     %IF I=LMN(K) %THEN %START

U_1003:;
  if (I != LMN[K - 1]) goto L_000A;

    //    88             %IF LAD(K)>=0 %THEN FAULT(M'LABE',M'L SE',M'T TW',M'ICE ')

  if (LAD[K - 1] < 0) goto L_000B;
  FAULT(1279345221, 1277186885, 1411404887, 1229145376);
L_000B:;

//    89             ->L3 ; %FINISH

  goto U_1004;
L_000A:;

//    90          K=K+1

  K = K + 1;

  //    91          %IF K<LP %THEN ->L4

  if (K >= LP) goto L_000C;
  goto U_1003;
L_000C:;

//    92          %IF LP>20 %THEN %START

  if (LP <= 20) goto L_000D;

    //    93             FAULT(M'TOO ',M'MANY',M' LAB',M'ELS ')

  FAULT(1414483744, 1296125529, 541868354, 1162629920);

  //    94             ->L25 ; %FINISH

  goto U_1005;
L_000D:;

//    95  L2:     LMN(LP)=I

U_1002:;
  LMN[LP - 1] = I;

  //    96          K=LP

  K = LP;

  //    97          LP=LP+1

  LP = LP + 1;

  //    98  L3:     LAD(K)=SP

U_1004:;
  LAD[K - 1] = SP;

  //    99  L25:    %IF I=M'ST' %THEN %START

U_1005:;
  if (I != 21332) goto L_000E;

    //   100             ST=SP

  ST = SP;

  //   101             ->L18 ; %FINISH

  goto U_1006;
L_000E:;

//   102          ->L1 ; %FINISH

  goto U_1000;
L_0008:;

//   103       %IF J='=' %THEN %START

  if (J != 61) goto L_000F;

    //   104          READ(K)

  READ(/*?*/ &K);

  //   105          %IF K<0 %OR K>15 %THEN %START

  if (K < 0) goto L_0010;
  if (K <= 15) goto L_0011;
L_0010:;

//   106             FAULT(M'EQUA',M'TE N',M'UMBE',M'R ? ')

  FAULT(1162958145, 1413816398, 1431126597, 1377845024);

  //   107             ->L1 ; %FINISH

  goto U_1000;
L_0011:;

//   108          RMN(K)=I

  RMN[K] = I;

  //   109          ->L1 ; %FINISH

  goto U_1000;
L_000F:;

//   110       %IF I=M'REGS' %AND J=10 %THEN %START

  if (I != 1380271955) goto L_0012;
  if (J != 10) goto L_0012;

    //   111          MR=MR!128

  MR = MR | 128;

  //   112          ->L1 ; %FINISH

  goto U_1000;
L_0012:;

//   113       %IF I=M'TON' %AND J=10 %THEN %START

  if (I != 5525326) goto L_0013;
  if (J != 10) goto L_0013;

    //   114          MR=MR!64

  MR = MR | 64;

  //   115          ->L1 ; %FINISH

  goto U_1000;
L_0013:;

//   116       %IF I=M'TOFF' %AND J=10 %THEN %START

  if (I != 1414481478) goto L_0014;
  if (J != 10) goto L_0014;

    //   117          MR=MR!32

  MR = MR | 32;

  //   118          ->L1 ; %FINISH

  goto U_1000;
L_0014:;

//   119       %IF J\=',' %THEN FAULT(M'SYNT',M'AX ?',0,0)

  if (J == 44) goto L_0015;
  FAULT(1398361684, 1096294463, 0, 0);
L_0015:;

//   120       %IF I=0 %THEN %START

  if (I != 0) goto L_0016;

    //   121          READMN(I,J)

  READMN(/*?*/ &I, /*?*/ &J);

  //   122          %IF I\=0 %OR J\=',' %THEN FAULT(M'SYNT',M'AX ?',0,0)

  if (I != 0) goto L_0017;
  if (J == 44) goto L_0018;
L_0017:;
  FAULT(1398361684, 1096294463, 0, 0);
L_0018:;

//   123          READMN(I,J)

  READMN(/*?*/ &I, /*?*/ &J);

  //   124          %IF I\=0 %OR J\=',' %THEN FAULT(M'SYNT',M'AX ?',0,0)

  if (I != 0) goto L_0019;
  if (J == 44) goto L_001A;
L_0019:;
  FAULT(1398361684, 1096294463, 0, 0);
L_001A:;

//   125          %IF SP>=16384 %THEN %START

  if (SP < 16384) goto L_001B;

    //   126             FAULT(M'PROG',M'RAM ',M'TOO ',M'BIG ')

  FAULT(1347571527, 1380011296, 1414483744, 1112098592);

  //   127             %STOP ; %FINISH

  _imp_stop(0);
L_001B:;

//   128          READ(S(SP))

  READ(/*?*/ &S[SP]);

  //   129          SP=SP+1

  SP = SP + 1;

  //   130          MR=0

  MR = 0;

  //   131          ->L1 ; %FINISH

  goto U_1000;
L_0016:;

//   132       K=1

  K = 1;

  //   133  L6:  %IF I=IMN(K) %THEN ->L5

U_1007:;
  if (I != IMN[K - 1]) goto L_001C;
  goto U_1008;
L_001C:;

//   134       K=K+1

  K = K + 1;

  //   135       %IF K<=31 %THEN ->L6

  if (K > 31) goto L_001D;
  goto U_1007;
L_001D:;

//   136       FAULT(M'INST',M'RUCT',M'ION ',M'?   ')

  FAULT(1229869908, 1381319508, 1229934112, 1059069984);

  //   137  L5:  READMN(I,J)

U_1008:;
  READMN(/*?*/ &I, /*?*/ &J);

  //   138       %IF J\=',' %THEN FAULT(M'SYNT',M'AX ?',0,0)

  if (J == 44) goto L_001E;
  FAULT(1398361684, 1096294463, 0, 0);
L_001E:;

//   139       %IF I=0 %THEN L=0 %ELSE %START

  if (I != 0) goto L_001F;
  L = 0;
  goto L_0020;
L_001F:;

//   140          L=0

  L = 0;

  //   141  L8:     %IF I=RMN(L) %THEN ->L7

U_1009:;
  if (I != RMN[L]) goto L_0021;
  goto U_100A;
L_0021:;

//   142          L=L+1

  L = L + 1;

  //   143          %IF L<=15 %THEN ->L8

  if (L > 15) goto L_0022;
  goto U_1009;
L_0022:;

//   144          FAULT(M'REGI',M'STER',M' ?  ',0)

  FAULT(1380271945, 1398031698, 541007904, 0);

  //   145          %FINISH

L_0020:;

//   146  L7:  K=K<<4!L

U_100A:;
  K = K << 4 | L;

  //   147       READMN(I,J)

  READMN(/*?*/ &I, /*?*/ &J);

  //   148       %IF J='+' %THEN %START

  if (J != 43) goto L_0023;

    //   149          READ(M)

  READ(/*?*/ &M);

  //   150          %IF M>=65536 %THEN FAULT(M'DISP',M'. TO',M'O BI',M'G   ')

  if (M < 65536) goto L_0024;
  FAULT(1145656144, 773870671, 1327514185, 1193287712);
L_0024:;

//   151          %IF LP=1 %THEN ->L9

  if (LP != 1) goto L_0025;
  goto U_100B;
L_0025:;

//   152          L=1

  L = 1;

  //   153  L12:    %IF I=LMN(L) %THEN %START

U_100C:;
  if (I != LMN[L - 1]) goto L_0026;

    //   154             %IF LAD(L)<0 %THEN ->L11

  if (LAD[L - 1] >= 0) goto L_0027;
  goto U_100D;
L_0027:;

//   155             K=K<<20!(LAD(L)+M)

  K = K << 20 | LAD[L - 1] + M;

  //   156             ->L13 ; %FINISH

  goto U_100E;
L_0026:;

//   157          L=L+1

  L = L + 1;

  //   158          %IF L<LP %THEN ->L12

  if (L >= LP) goto L_0028;
  goto U_100C;
L_0028:;

//   159          %IF LP>20 %THEN %START

  if (LP <= 20) goto L_0029;

    //   160             FAULT(M'TOO ',M'MANY',M' LAB',M'ELS ')

  FAULT(1414483744, 1296125529, 541868354, 1162629920);

  //   161             ->L11 ; %FINISH

  goto U_100D;
L_0029:;

//   162  L9:     LMN(LP)=I

U_100B:;
  LMN[LP - 1] = I;

  //   163          LAD(LP)=-1

  LAD[LP - 1] = -1;

  //   164          L=LP

  L = LP;

  //   165          LP=LP+1

  LP = LP + 1;

  //   166  L11:    %IF RP>4000 %THEN %START

U_100D:;
  if (RP <= 4000) goto L_002A;

    //   167             FAULT(M'TOO ',M'MANY',M' REL',M'OCS.')

  FAULT(1414483744, 1296125529, 542262604, 1329812270);

  //   168             %STOP ; %FINISH

  _imp_stop(0);
L_002A:;

//   169          R(RP)=L<<16!SP

  R[RP - 1] = L << 16 | SP;

  //   170          RP=RP+1

  RP = RP + 1;

  //   171  L14:    K=K<<20!M

U_100F:;
  K = K << 20 | M;

  //   172  L13:    %IF SP>=16384 %THEN %START

U_100E:;
  if (SP < 16384) goto L_002B;

    //   173             FAULT(M'PROG',M'RAM ',M'TOO ',M'BIG ')

  FAULT(1347571527, 1380011296, 1414483744, 1112098592);

  //   174             %STOP ; %FINISH

  _imp_stop(0);
L_002B:;

//   175          S(SP)=K!MR<<24

  S[SP] = K | MR << 24;

  //   176          SP=SP+1

  SP = SP + 1;

  //   177          MR=0

  MR = 0;

  //   178          ->L1 ; %FINISH

  goto U_1000;
L_0023:;

//   179       %IF ('A'<=J %AND J<='Z') %OR J=10 %THEN %START

  if (65 > J) goto L_002C;
  if (J <= 90) goto L_002D;
L_002C:;
  if (J != 10) goto L_002E;
L_002D:;

//   180          %IF I=M'READ' %AND J='S' %THEN %START

  if (I != 1380270404) goto L_002F;
  if (J != 83) goto L_002F;

    //   181             M=16384

  M = 16384;

  //   182  L15:       READMN(I,J)

U_1010:;
  READMN(/*?*/ &I, /*?*/ &J);

  //   183             %IF I\=M'YMBO' %OR J\='L' %THEN ->L26

  if (I != 1498235471) goto L_0030;
  if (J == 76) goto L_0031;
L_0030:;
  goto U_1011;
L_0031:;

//   184             READ SYMBOL(I)

  READSYMBOL(/*?*/ &I);

  //   185             %IF I\=10 %THEN ->L26

  if (I == 10) goto L_0032;
  goto U_1011;
L_0032:;

//   186             ->L14 ; %FINISH

  goto U_100F;
L_002F:;

//   187          %IF I=M'NEXT' %AND J='S' %THEN %START

  if (I != 1313167444) goto L_0033;
  if (J != 83) goto L_0033;

    //   188             M=16385

  M = 16385;

  //   189             ->L15 ; %FINISH

  goto U_1010;
L_0033:;

//   190          %IF I=M'SKIP' %AND J='S' %THEN %START

  if (I != 1397442896) goto L_0034;
  if (J != 83) goto L_0034;

    //   191             M=16386

  M = 16386;

  //   192             ->L15 ; %FINISH

  goto U_1010;
L_0034:;

//   193          %IF I=M'PRIN' %AND J='T' %THEN %START

  if (I != 1347569998) goto L_0035;
  if (J != 84) goto L_0035;

    //   194             READ SYMBOL(I)

  READSYMBOL(/*?*/ &I);

  //   195             %IF I\='S' %THEN ->L26

  if (I == 83) goto L_0036;
  goto U_1011;
L_0036:;

//   196             M=16387

  M = 16387;

  //   197             ->L15 ; %FINISH

  goto U_1010;
L_0035:;

//   198          %IF I=M'SPAC' %AND J='E' %THEN %START

  if (I != 1397768515) goto L_0037;
  if (J != 69) goto L_0037;

    //   199             READMN(I,J)

  READMN(/*?*/ &I, /*?*/ &J);

  //   200             %IF I=0 %AND J=10 %THEN %START

  if (I != 0) goto L_0038;
  if (J != 10) goto L_0038;

    //   201                M=16388

  M = 16388;

  //   202                ->L14 ; %FINISH

  goto U_100F;
L_0038:;

//   203             %IF I='S' %AND J=10 %THEN %START

  if (I != 83) goto L_0039;
  if (J != 10) goto L_0039;

    //   204                M=16389

  M = 16389;

  //   205                ->L14 ; %FINISH

  goto U_100F;
L_0039:;

//   206             ->L26

  goto U_1011;

  //   207             %FINISH

L_0037:;

//   208          %IF I=M'NEWL' %AND J='I' %THEN %START

  if (I != 1313167180) goto L_003A;
  if (J != 73) goto L_003A;

    //   209             READMN(I,J)

  READMN(/*?*/ &I, /*?*/ &J);

  //   210             %IF I=M'NE' %AND J=10 %THEN %START

  if (I != 20037) goto L_003B;
  if (J != 10) goto L_003B;

    //   211                M=16390

  M = 16390;

  //   212                ->L14 ; %FINISH

  goto U_100F;
L_003B:;

//   213             %IF I=M'NES' %AND J=10 %THEN %START

  if (I != 5129555) goto L_003C;
  if (J != 10) goto L_003C;

    //   214                M=16391

  M = 16391;

  //   215                ->L14 ; %FINISH

  goto U_100F;
L_003C:;

//   216             ->L26

  goto U_1011;

  //   217             %FINISH

L_003A:;

//   218          %IF I=M'NEWP' %AND J='A' %THEN %START

  if (I != 1313167184) goto L_003D;
  if (J != 65) goto L_003D;

    //   219             READMN(I,J)

  READMN(/*?*/ &I, /*?*/ &J);

  //   220             %IF I\=M'GE' %OR J\=10 %THEN ->L26

  if (I != 18245) goto L_003E;
  if (J == 10) goto L_003F;
L_003E:;
  goto U_1011;
L_003F:;

//   221             M=16392

  M = 16392;

  //   222             ->L14 ; %FINISH

  goto U_100F;
L_003D:;

//   223          %IF I=M'READ' %AND J=10 %THEN %START

  if (I != 1380270404) goto L_0040;
  if (J != 10) goto L_0040;

    //   224             M=16393

  M = 16393;

  //   225             ->L14 ; %FINISH

  goto U_100F;
L_0040:;

//   226          %IF I=M'WRIT' %AND J='E' %THEN %START

  if (I != 1465010516) goto L_0041;
  if (J != 69) goto L_0041;

    //   227             READ SYMBOL(I)

  READSYMBOL(/*?*/ &I);

  //   228             %IF I\=10 %THEN ->L26

  if (I == 10) goto L_0042;
  goto U_1011;
L_0042:;

//   229             M=16394

  M = 16394;

  //   230             ->L14 ; %FINISH

  goto U_100F;
L_0041:;

//   231  L26:    FAULT(M'I-O ',M'NAME',M' ?  ',0)

U_1011:;
  FAULT(1227706144, 1312902469, 541007904, 0);

  //   232          ->L13

  goto U_100E;

  //   233          %FINISH

L_002E:;

//   234       %IF J\=',' %THEN FAULT(M'SYNT',M'AX ?',0,0)

  if (J == 44) goto L_0043;
  FAULT(1398361684, 1096294463, 0, 0);
L_0043:;

//   235       %IF I=0 %THEN L=0 %ELSE %START

  if (I != 0) goto L_0044;
  L = 0;
  goto L_0045;
L_0044:;

//   236          L=0

  L = 0;

  //   237  L17:    %IF I=RMN(L) %THEN ->L16

U_1012:;
  if (I != RMN[L]) goto L_0046;
  goto U_1013;
L_0046:;

//   238          L=L+1

  L = L + 1;

  //   239          %IF L<=15 %THEN ->L17

  if (L > 15) goto L_0047;
  goto U_1012;
L_0047:;

//   240          FAULT(M'BASE',M' REG',M'ISTE',M'R ? ')

  FAULT(1111577413, 542262599, 1230197829, 1377845024);

  //   241          %FINISH

L_0045:;

//   242  L16: K=K<<4!L

U_1013:;
  K = K << 4 | L;

  //   243       READ(M)

  READ(/*?*/ &M);

  //   244       %IF M>=65536 %THEN FAULT(M'DISP',M'. TO',M'O BI',M'G   ')

  if (M < 65536) goto L_0048;
  FAULT(1145656144, 773870671, 1327514185, 1193287712);
L_0048:;

//   245       K=K<<16!M

  K = K << 16 | M;

  //   246       ->L13

  goto U_100E;

  //   247  L18: READ(I)

U_1006:;
  READ(/*?*/ &I);

  //   248       %IF I\=0 %THEN %START

  if (I == 0) goto L_0049;

    //   249          NEWLINE

  _imp_NEWLINE();

  //   250          OUT(M'PROG') ; OUT(M'RAM ') ; OUT(M'FAUL') ; OUT(M'TY !')

  OUT(1347571527);
  OUT(1380011296);
  OUT(1178686796);
  OUT(1415127073);

  //   251          NEWLINE

  _imp_NEWLINE();

  //   252          %STOP ; %FINISH

  _imp_stop(0);
L_0049:;

//   253  L38: READ SYMBOL(I)

U_1014:;
  READSYMBOL(/*?*/ &I);

  //   254       %IF I\='.' %THEN ->L38

  if (I == 46) goto L_004A;
  goto U_1014;
L_004A:;

//   255       SELECT INPUT(0)

  _imp_SELECTINPUT(0);

  //   256       I=ST

  I = ST;

  //   257  L28: %IF I>16383 %THEN ->L29

U_1015:;
  if (I <= 16383) goto L_004B;
  goto U_1016;
L_004B:;

//   258       S(I)=999999

  S[I] = 999999;

  //   259       I=I+1

  I = I + 1;

  //   260       ->L28

  goto U_1015;

  //   261  L29: NEWLINE

U_1016:;
  _imp_NEWLINE();

  //   262       OUT(M'LABE') ; OUT(M'LS  ')

  OUT(1279345221);
  OUT(1280516128);

  //   263       NEWLINE

  _imp_NEWLINE();

  //   264       I=0

  I = 0;

  //   265       J=1

  J = 1;

  //   266  L20: OUT(LMN(J)) ; OUT(M'  : ')

U_1017:;
  OUT(LMN[J - 1]);
  OUT(538982944);

  //   267       %IF LAD(J)<0 %THEN %START

  if (LAD[J - 1] >= 0) goto L_004C;

    //   268          OUT(M'NOT ') ; OUT(M'SET ')

  OUT(1313821728);
  OUT(1397052448);

  //   269          I=1

  I = 1;

  //   270          %FINISH %ELSE WRITE(LAD(J),1)

  goto L_004D;
L_004C:;
  _imp_WRITE(LAD[J - 1], 1);
L_004D:;

//   271       NEWLINE

  _imp_NEWLINE();

  //   272       %IF LMN(J)=M'CT' %THEN CT=LAD(J)

  if (LMN[J - 1] != 17236) goto L_004E;
  CT = LAD[J - 1];
L_004E:;

//   273       J=J+1

  J = J + 1;

  //   274       %IF J<LP %THEN ->L20

  if (J >= LP) goto L_004F;
  goto U_1017;
L_004F:;

//   275       %IF I\=0 %OR F\=0 %THEN %STOP

  if (I != 0) goto L_0050;
  if (F == 0) goto L_0051;
L_0050:;
  _imp_stop(0);
L_0051:;

//   276       %IF RP=1 %THEN ->L21

  if (RP != 1) goto L_0052;
  goto U_1018;
L_0052:;

//   277       M=1

  M = 1;

  //   278  L22: I=R(M)>>16

U_1019:;
  I = (unsigned int)R[M - 1] >> 16;

  //   279       J=R(M)&65535

  J = R[M - 1] & 65535;

  //   280       K=S(J)&65535

  K = S[J] & 65535;

  //   281       L=LAD(I)+K

  L = LAD[I - 1] + K;

  //   282       %IF L>=65536 %THEN %START

  if (L < 65536) goto L_0053;

    //   283          OUT(M'ADDR') ; OUT(M' TRU') ; OUT(M'NCAT') ; OUT(M'ED  ')

  OUT(1094992978);
  OUT(542397013);
  OUT(1313030484);
  OUT(1162092576);

  //   284          WRITE(J,1)

  _imp_WRITE(J, 1);

  //   285          NEWLINE

  _imp_NEWLINE();

  //   286          L=L&65535

  L = L & 65535;

  //   287          %FINISH

L_0053:;

//   288       S(J)=S(J)>>16<<16!L

  S[J] = (unsigned int)S[J] >> 16 << 16 | L;

  //   289       M=M+1

  M = M + 1;

  //   290       %IF M<RP %THEN ->L22

  if (M >= RP) goto L_0054;
  goto U_1019;
L_0054:;

//   291  L21: I=0

U_1018:;
  I = 0;

  //   292  L23: REG(I)=0

U_101A:;
  REG[I] = 0;

  //   293       I=I+1

  I = I + 1;

  //   294       %IF I<=15 %THEN ->L23

  if (I > 15) goto L_0055;
  goto U_101A;
L_0055:;

//   295       SP=0

  SP = 0;

  //   296  L24: %IF SP<0 %OR SP>=CT %THEN %START

U_101B:;
  if (SP < 0) goto L_0056;
  if (SP < CT) goto L_0057;
L_0056:;

//   297          %IF SP>=16384 %AND SP<=16394 %THEN ->IOR(SP-16384)

  if (SP < 16384) goto L_0058;
  if (SP > 16394) goto L_0058;
  IOR_line = __LINE__;
  IOR_file = __FILE__;
  IOR_index = SP - 16384;
  goto case_IOR_dispatch;
L_0058:;

//   298          NEWLINE

  _imp_NEWLINE();

  //   299          OUT(M'**  ')

  OUT(707403808);

  //   300          WRITE(SP,1)

  _imp_WRITE(SP, 1);

  //   301          SPACES(4)

  _imp_SPACES(4);

  //   302          OUT(M'INST') ; OUT(M'R AD') ; OUT(M'DR ?')

  OUT(1229869908);
  OUT(1377845572);
  OUT(1146232895);

  //   303          %STOP ; %FINISH

  _imp_stop(0);
L_0057:;

//   304       I=S(SP)

  I = S[SP];

  //   305       J=I>>20&15

  J = (unsigned int)I >> 20 & 15;

  //   306       K=I>>16&15

  K = (unsigned int)I >> 16 & 15;

  //   307       L=I&65535

  L = I & 65535;

  //   308       %IF K=0 %THEN M=L %ELSE M=REG(K)+L

  if (K != 0) goto L_005A;
  M = L;
  goto L_005B;
L_005A:;
  M = REG[K] + L;
L_005B:;

//   309       I=I>>24

  I = (unsigned int)I >> 24;

  //   310       %IF I>128 %THEN %START

  if (I <= 128) goto L_005C;

    //   311          NEWLINE

  _imp_NEWLINE();

  //   312          N=0

  N = 0;

  //   313  L27:    OUT(RMN(N))

U_101C:;
  OUT(RMN[N]);

  //   314          OUT(M'  : ')

  OUT(538982944);

  //   315          WRITE(REG(N),1)

  _imp_WRITE(REG[N], 1);

  //   316          NEWLINE

  _imp_NEWLINE();

  //   317          N=N+1

  N = N + 1;

  //   318          %IF N<=15 %THEN ->L27

  if (N > 15) goto L_005D;
  goto U_101C;
L_005D:;

//   319          I=I-128

  I = I - 128;

  //   320          %FINISH

L_005C:;

//   321       %IF I>64 %THEN %START

  if (I <= 64) goto L_005E;

    //   322          TR=1

  TR = 1;

  //   323          I=I-64

  I = I - 64;

  //   324          %FINISH

L_005E:;

//   325       %IF I>32 %THEN %START

  if (I <= 32) goto L_005F;

    //   326          TR=0

  TR = 0;

  //   327          I=I-32

  I = I - 32;

  //   328          %FINISH

L_005F:;

//   329       %IF X'3E00F9FA'>>I&1\=0 %AND (M<CT %OR M>=16384) %THEN %START

  if ((unsigned int)1040251386 >> I & 1 == 0) goto L_0060;
  if (M < CT) goto L_0061;
  if (M < 16384) goto L_0060;
L_0061:;

//   330          NEWLINE

  _imp_NEWLINE();

  //   331          OUT(M'**  ')

  OUT(707403808);

  //   332          WRITE(SP,1)

  _imp_WRITE(SP, 1);

  //   333          SPACES(4)

  _imp_SPACES(4);

  //   334          OUT(M'EFFE') ; OUT(M'CTIV') ; OUT(M'E AD') ; OUT(M'DR ?')

  OUT(1162233413);
  OUT(1129597270);
  OUT(1159741764);
  OUT(1146232895);

  //   335          WRITE(M,1)

  _imp_WRITE(M, 1);

  //   336          DUMP

  DUMP();

  //   337          %STOP ; %FINISH

  _imp_stop(0);
L_0060:;

//   338       %IF I=0 %THEN %START

  if (I != 0) goto L_0062;

    //   339          NEWLINE

  _imp_NEWLINE();

  //   340          OUT(M'**  ')

  OUT(707403808);

  //   341          WRITE(SP,1)

  _imp_WRITE(SP, 1);

  //   342          SPACES(4)

  _imp_SPACES(4);

  //   343          OUT(M'INST') ; OUT(M'RUCT') ; OUT(M'ION?')

  OUT(1229869908);
  OUT(1381319508);
  OUT(1229934143);

  //   344          DUMP

  DUMP();

  //   345          %STOP ; %FINISH

  _imp_stop(0);
L_0062:;

//   346       %IF TR#0 %THEN %START

  if (TR == 0) goto L_0063;

    //   347          NEWLINE

  _imp_NEWLINE();

  //   348          WRITE(SP,3)

  _imp_WRITE(SP, 3);

  //   349          SPACES(2)

  _imp_SPACES(2);

  //   350          OUT(IMN(I))

  OUT(IMN[I - 1]);

  //   351          SPACES(2)

  _imp_SPACES(2);

  //   352          OUT(RMN(J))

  OUT(RMN[J]);

  //   353          WRITE(M,4)

  _imp_WRITE(M, 4);

  //   354          SPACES(6)

  _imp_SPACES(6);

  //   355          %FINISH

L_0063:;

//   356       ->INS(I)

  INS_line = __LINE__;
  INS_file = __FILE__;
  INS_index = I;
  goto case_INS_dispatch;

  //   357  INS(1):! LOAD

case_INS_1:;

//   358       REG(J)=S(M)

  REG[J] = S[M];

  //   359       SP=SP+1

  SP = SP + 1;

  //   360       ->L24

  goto U_101B;

  //   361  INS(2):! LDA

case_INS_2:;

//   362       REG(J)=M

  REG[J] = M;

  //   363       SP=SP+1

  SP = SP + 1;

  //   364       ->L24

  goto U_101B;

  //   365  INS(3):! ADD

case_INS_3:;

//   366       REG(J)=REG(J)+S(M)

  REG[J] = REG[J] + S[M];

  //   367       SP=SP+1

  SP = SP + 1;

  //   368       ->L24

  goto U_101B;

  //   369  INS(4):! SUB

case_INS_4:;

//   370       REG(J)=REG(J)-S(M)

  REG[J] = REG[J] - S[M];

  //   371       SP=SP+1

  SP = SP + 1;

  //   372       ->L24

  goto U_101B;

  //   373  INS(5):! MLT

case_INS_5:;

//   374       REG(J)=REG(J)*S(M)

  REG[J] = REG[J] * S[M];

  //   375       SP=SP+1

  SP = SP + 1;

  //   376       ->L24

  goto U_101B;

  //   377  INS(6):! DIV

case_INS_6:;

//   378       REG(J)=REG(J)//S(M)

  REG[J] = ((long)REG[J] / (long)S[M]);

  //   379       SP=SP+1

  SP = SP + 1;

  //   380       ->L24

  goto U_101B;

  //   381  INS(7):! EXP

case_INS_7:;

//   382       REG(J)=REG(J)^^S(M)

  REG[J] = _imp_IEXP(REG[J], S[M]);

  //   383  !!     REG(J)=REG(J)**S(M)
  //   384       SP=SP+1

  SP = SP + 1;

  //   385       ->L24

  goto U_101B;

  //   386  INS(8):! STR

case_INS_8:;

//   387       S(M)=REG(J)

  S[M] = REG[J];

  //   388       SP=SP+1

  SP = SP + 1;

  //   389       ->L24

  goto U_101B;

  //   390  INS(9):! NEG

case_INS_9:;

//   391       REG(J)=-REG(J)

  REG[J] = -REG[J];

  //   392       SP=SP+1

  SP = SP + 1;

  //   393       ->L24

  goto U_101B;

  //   394  INS(10):! NOT

case_INS_10:;

//   395       REG(J)=\REG(J)

  REG[J] = (~REG[J]);

  //   396       SP=SP+1

  SP = SP + 1;

  //   397       ->L24

  goto U_101B;

  //   398  INS(11):! SHL

case_INS_11:;

//   399       REG(J)=REG(J)<<S(M)

  REG[J] = REG[J] << S[M];

  //   400       SP=SP+1

  SP = SP + 1;

  //   401       ->L24

  goto U_101B;

  //   402  INS(12):! SHR

case_INS_12:;

//   403       REG(J)=REG(J)>>S(M)

  REG[J] = (unsigned int)REG[J] >> S[M];

  //   404       SP=SP+1

  SP = SP + 1;

  //   405       ->L24

  goto U_101B;

  //   406  INS(13):! AND

case_INS_13:;

//   407       REG(J)=REG(J)&S(M)

  REG[J] = REG[J] & S[M];

  //   408       SP=SP+1

  SP = SP + 1;

  //   409       ->L24

  goto U_101B;

  //   410  INS(14):! OR

case_INS_14:;

//   411       REG(J)=REG(J)!S(M)

  REG[J] = REG[J] | S[M];

  //   412       SP=SP+1

  SP = SP + 1;

  //   413       ->L24

  goto U_101B;

  //   414  INS(15):! XOR

case_INS_15:;

//   415       REG(J)=REG(J)!!S(M)

  REG[J] = REG[J] ^ S[M];

  //   416       SP=SP+1

  SP = SP + 1;

  //   417       ->L24

  goto U_101B;

  //   418  INS(16):! BAL

case_INS_16:;

//   419       REG(J)=SP+1

  REG[J] = SP + 1;

  //   420       SP=M

  SP = M;

  //   421       ->L24

  goto U_101B;

  //   422  INS(17):! B

case_INS_17:;

//   423       SP=M

  SP = M;

  //   424       ->L24

  goto U_101B;

  //   425  INS(18):! BZ

case_INS_18:;

//   426       %IF REG(J)=0 %THEN SP=M %ELSE SP=SP+1

  if (REG[J] != 0) goto L_0065;
  SP = M;
  goto L_0066;
L_0065:;
  SP = SP + 1;
L_0066:;

//   427       ->L24

  goto U_101B;

  //   428  INS(19):! BNZ

case_INS_19:;

//   429       %IF REG(J)\=0 %THEN SP=M %ELSE SP=SP+1

  if (REG[J] == 0) goto L_0067;
  SP = M;
  goto L_0068;
L_0067:;
  SP = SP + 1;
L_0068:;

//   430       ->L24

  goto U_101B;

  //   431  INS(20):! BG

case_INS_20:;

//   432       %IF REG(J)>0 %THEN SP=M %ELSE SP=SP+1

  if (REG[J] <= 0) goto L_0069;
  SP = M;
  goto L_006A;
L_0069:;
  SP = SP + 1;
L_006A:;

//   433       ->L24

  goto U_101B;

  //   434  INS(21):! BNG

case_INS_21:;

//   435       %IF REG(J)<=0 %THEN SP=M %ELSE SP=SP+1

  if (REG[J] > 0) goto L_006B;
  SP = M;
  goto L_006C;
L_006B:;
  SP = SP + 1;
L_006C:;

//   436       ->L24

  goto U_101B;

  //   437  INS(22):! BL

case_INS_22:;

//   438       %IF REG(J)<0 %THEN SP=M %ELSE SP=SP+1

  if (REG[J] >= 0) goto L_006D;
  SP = M;
  goto L_006E;
L_006D:;
  SP = SP + 1;
L_006E:;

//   439       ->L24

  goto U_101B;

  //   440  INS(23):! BNL

case_INS_23:;

//   441       %IF REG(J)>=0 %THEN SP=M %ELSE SP=SP+1

  if (REG[J] < 0) goto L_006F;
  SP = M;
  goto L_0070;
L_006F:;
  SP = SP + 1;
L_0070:;

//   442       ->L24

  goto U_101B;

  //   443  INS(24):! STOP

case_INS_24:;

//   444       NEWLINE

  _imp_NEWLINE();

  //   445       OUT(M'STOP') ; OUT(M'PED ') ; OUT(M'AT  ')

  OUT(1398034256);
  OUT(1346716704);
  OUT(1096032288);

  //   446       WRITE(SP,1)

  _imp_WRITE(SP, 1);

  //   447       %STOP

  _imp_stop(0);

  //   448  INS(25):! ADDF

case_INS_25:;

//   449       REAL(ADDR(REG(J)))=REAL(ADDR(REG(J)))+REAL(ADDR(S(M)))

  *_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) = *_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) + *_imp_REAL(_imp_ADDR(/*?*/ &S[M]));

  //   450       SP=SP+1

  SP = SP + 1;

  //   451       ->L24

  goto U_101B;

  //   452  INS(26):! SUBF

case_INS_26:;

//   453       REAL(ADDR(REG(J)))=REAL(ADDR(REG(J)))-REAL(ADDR(S(M)))

  *_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) = *_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) - *_imp_REAL(_imp_ADDR(/*?*/ &S[M]));

  //   454       SP=SP+1

  SP = SP + 1;

  //   455       ->L24

  goto U_101B;

  //   456  INS(27):! MLTF

case_INS_27:;

//   457       REAL(ADDR(REG(J)))=REAL(ADDR(REG(J)))*REAL(ADDR(S(M)))

  *_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) = *_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) * *_imp_REAL(_imp_ADDR(/*?*/ &S[M]));

  //   458       SP=SP+1

  SP = SP + 1;

  //   459       ->L24

  goto U_101B;

  //   460  INS(28):! DIVF

case_INS_28:;

//   461       REAL(ADDR(REG(J)))=REAL(ADDR(REG(J)))/REAL(ADDR(S(M)))

  *_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) =
      (double)(*_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) / *_imp_REAL(_imp_ADDR(/*?*/ &S[M])));

  //   462       SP=SP+1

  SP = SP + 1;

  //   463       ->L24

  goto U_101B;

  //   464  INS(29):! EXPF

case_INS_29:;

//   465       REAL(ADDR(REG(J)))=REAL(ADDR(REG(J)))^S(M)

  *_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) = _imp_REXP(*_imp_REAL(_imp_ADDR(/*?*/ &REG[J])), S[M]);

  //   466  !!     REAL(ADDR(REG(J)))=REAL(ADDR(REG(J)))**S(M)
  //   467       SP=SP+1

  SP = SP + 1;

  //   468       ->L24

  goto U_101B;

  //   469  INS(30):! NEGF

case_INS_30:;

//   470       REAL(ADDR(REG(J)))=-REAL(ADDR(REG(J)))

  *_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) = -*_imp_REAL(_imp_ADDR(/*?*/ &REG[J]));

  //   471       SP=SP+1

  SP = SP + 1;

  //   472       ->L24

  goto U_101B;

  //   473  INS(31):! FLT

case_INS_31:;

//   474       REAL(ADDR(REG(J)))=REG(J)

  *_imp_REAL(_imp_ADDR(/*?*/ &REG[J])) = REG[J];

  //   475       SP=SP+1

  SP = SP + 1;

  //   476       ->L24

  goto U_101B;

  //   477  IOR(0):! READ SYMBOL

case_IOR_0:;

//   478       READ SYMBOL(S(S(REG(14)+10)))

  READSYMBOL(/*?*/ &S[S[REG[14] + 10]]);

  //   479       SP=REG(13)

  SP = REG[13];

  //   480       ->L24

  goto U_101B;

  //   481  IOR(1):! NEXT SYMBOL

case_IOR_1:;

//   482       REG(15)=NEXT SYMBOL

  REG[15] = _imp_NEXTSYMBOL();

  //   483       SP=REG(13)

  SP = REG[13];

  //   484       ->L24

  goto U_101B;

  //   485  IOR(2):! SKIP SYMBOL

case_IOR_2:;

//   486       SKIP SYMBOL

  _imp_SKIPSYMBOL();

  //   487       SP=REG(13)

  SP = REG[13];

  //   488       ->L24

  goto U_101B;

  //   489  IOR(3):! PRINT SYMBOL

case_IOR_3:;

//   490       PRINT SYMBOL(S(REG(14)+10))

  _imp_PRINTSYMBOL(S[REG[14] + 10]);

  //   491       SP=REG(13)

  SP = REG[13];

  //   492       ->L24

  goto U_101B;

  //   493  IOR(4):! SPACE

case_IOR_4:;

//   494       SPACE

  _imp_SPACE();

  //   495       SP=REG(13)

  SP = REG[13];

  //   496       ->L24

  goto U_101B;

  //   497  IOR(5):! SPACES

case_IOR_5:;

//   498       SPACES(S(REG(14)+10))

  _imp_SPACES(S[REG[14] + 10]);

  //   499       SP=REG(13)

  SP = REG[13];

  //   500       ->L24

  goto U_101B;

  //   501  IOR(6):! NEWLINE

case_IOR_6:;

//   502       NEWLINE

  _imp_NEWLINE();

  //   503       SP=REG(13)

  SP = REG[13];

  //   504       ->L24

  goto U_101B;

  //   505  IOR(7):! NEWLINES

case_IOR_7:;

//   506       NEWLINES(S(REG(14)+10))

  _imp_NEWLINES(S[REG[14] + 10]);

  //   507       SP=REG(13)

  SP = REG[13];

  //   508       ->L24

  goto U_101B;

  //   509  IOR(8):! NEWPAGE

case_IOR_8:;

//   510       NEWPAGE

  NEWPAGE();

  //   511       SP=REG(13)

  SP = REG[13];

  //   512       ->L24

  goto U_101B;

  //   513  IOR(9):! READ

case_IOR_9:;

//   514       READ(S(S(REG(14)+10)))

  READ(/*?*/ &S[S[REG[14] + 10]]);

  //   515       SP=REG(13)

  SP = REG[13];

  //   516       ->L24

  goto U_101B;

  //   517  IOR(10):! WRITE

case_IOR_10:;

//   518       WRITE(S(REG(14)+10),S(REG(14)+11))

  _imp_WRITE(S[REG[14] + 10], S[REG[14] + 11]);

  //   519       SP=REG(13)

  SP = REG[13];

  //   520       ->L24

  goto U_101B;

  //   521  %ROUTINE READMN(%INTEGERNAME MN,NEXT)

  void READMN(int *MN, int *NEXT) {
    //   522  %INTEGER I,J,K

    int I;
    int J;
    int K;

    //   523  L1:  READ SYMBOL(I)

  U_101D:;
    READSYMBOL(/*?*/ &I);

    //   524       %IF I=' ' %THEN ->L1

    if (I != 32) goto L_0071;
    goto U_101D;
  L_0071:;

  //   525       %IF I<'A' %OR I>'Z' %THEN %START

    if (I < 65) goto L_0072;
    if (I <= 90) goto L_0073;
  L_0072:;

  //   526          MN=0

    *MN = 0;

    //   527          NEXT=I

    *NEXT = I;

    //   528          %RETURN ; %FINISH

    return;
  L_0073:;

  //   529       J=1

    J = 1;

    //   530  L2:  READ SYMBOL(K)

  U_101E:;
    READSYMBOL(/*?*/ &K);

    //   531       %IF J=4 %OR K<'0' %OR (K>'9' %AND K<'A') %OR K>'Z' %THEN %START

    if (J == 4) goto L_0074;
    if (K < 48) goto L_0074;
    if (K <= 57) goto L_0075;
    if (K < 65) goto L_0074;
  L_0075:;
    if (K <= 90) goto L_0076;
  L_0074:;

  //   532          MN=I

    *MN = I;

    //   533          NEXT=K

    *NEXT = K;

    //   534          %RETURN ; %FINISH

    return;
  L_0076:;

  //   535       I=I<<8!K

    I = I << 8 | K;

    //   536       J=J+1

    J = J + 1;

    //   537       ->L2

    goto U_101E;

    //   538  %END

  } /* end of READMN */

  //   539  %ROUTINE FAULT(%INTEGER I,J,K,L)

  void FAULT(int I, int J, int K, int L) {
    //   540       OUT(M'*** ')

    OUT(707406368);

    //   541       WRITE(SP,4)

    _imp_WRITE(SP, 4);

    //   542       SPACES(6)

    _imp_SPACES(6);

    //   543       OUT(I)

    OUT(I);

    //   544       OUT(J)

    OUT(J);

    //   545       OUT(K)

    OUT(K);

    //   546       OUT(L)

    OUT(L);

    //   547       NEWLINE

    _imp_NEWLINE();

    //   548       F=F+1

    F = F + 1;

    //   549  %END

    return;
  } /* end of FAULT */

  //   550  %ROUTINE OUT(%INTEGER I)

  void OUT(int I) {
    //   551       PRINT SYMBOL(I>>24) %if I>>24 # 0

    if ((unsigned int)I >> 24 == 0) goto L_0077;
    _imp_PRINTSYMBOL((unsigned int)I >> 24);
  L_0077:;

  //   552       PRINT SYMBOL(I>>16&255) %if I>>16&255 # 0

    if ((unsigned int)I >> 16 & 255 == 0) goto L_0078;
    _imp_PRINTSYMBOL((unsigned int)I >> 16 & 255);
  L_0078:;

  //   553       PRINT SYMBOL(I>>8&255) %if I>>8&255 # 0

    if ((unsigned int)I >> 8 & 255 == 0) goto L_0079;
    _imp_PRINTSYMBOL((unsigned int)I >> 8 & 255);
  L_0079:;

  //   554       PRINT SYMBOL(I&255) %if I&255 # 0

    if (I & 255 == 0) goto L_007A;
    _imp_PRINTSYMBOL(I & 255);
  L_007A:;

  //   555  %END

    return;
  } /* end of OUT */

  //   556  %ROUTINE DUMP

  void DUMP(void) {
    //   557  %INTEGER I,J

    int I;
    int J;

    //   558       NEWLINE

    _imp_NEWLINE();

    //   559       I=0

    I = 0;

    //   560  L1:  OUT(RMN(I))

  U_101F:;
    OUT(RMN[I]);

    //   561       OUT(M'  : ')

    OUT(538982944);

    //   562       WRITE(REG(I),1)

    _imp_WRITE(REG[I], 1);

    //   563       NEWLINE

    _imp_NEWLINE();

    //   564       I=I+1

    I = I + 1;

    //   565       %IF I<=15 %THEN ->L1

    if (I > 15) goto L_007B;
    goto U_101F;
  L_007B:;

  //   566       %IF REG(14)<ST %THEN %START

    if (REG[14] >= ST) goto L_007C;

      //   567          OUT(M'STP<')

    OUT(1398034492);

    //   568          OUT(M'ST: ')

    OUT(1398028832);

    //   569          NEWLINE

    _imp_NEWLINE();

    //   570          %RETURN ; %FINISH

    return;
  L_007C:;

  //   571       I=ST

    I = ST;

    //   572       J=0

    J = 0;

    //   573  L2:  %IF J=0 %THEN %START

  U_1020:;
    if (J != 0) goto L_007D;

      //   574          NEWLINE

    _imp_NEWLINE();

    //   575          WRITE(I,5)

    _imp_WRITE(I, 5);

    //   576          SPACES(4)

    _imp_SPACES(4);

    //   577          %FINISH

  L_007D:;

  //   578       WRITE(S(I),6)

    _imp_WRITE(S[I], 6);

    //   579       I=I+1

    I = I + 1;

    //   580       J=J+1

    J = J + 1;

    //   581       %IF J=8 %THEN J=0

    if (J != 8) goto L_007E;
    J = 0;
  L_007E:;

  //   582       %IF I<=REG(14) %THEN ->L2

    if (I > REG[14]) goto L_007F;
    goto U_1020;
  L_007F:;

  //   583  %END

    return;
  } /* end of DUMP */

  //   584  %ENDOFPROGRAM

  _imp_stop(0);
  return 0;

case_INS_dispatch:
  if (INS_index < 1 || INS_index > 31)
    _imp_signalf(6, 3, INS_index, "->INS(%d) out of bounds at %s line %d", INS_index, INS_file, INS_line);
  goto *INS[INS_index - 1];

case_IOR_dispatch:
  if (IOR_index < 0 || IOR_index > 10)
    _imp_signalf(6, 3, IOR_index, "->IOR(%d) out of bounds at %s line %d", IOR_index, IOR_file, IOR_line);
  goto *IOR[IOR_index - 0];
end_0:;
}