#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  %EXTERNALROUTINE CHECKINNER(%INTEGER FSTART,FSIZE, %INTEGERNAME PARM)

void CHECKINNER(int FSTART, int FSIZE, int *PARM) {
  //     2  !%EXTERNALLONGREALFNSPEC CPUTIME
  //     3  %LONGREAL TIME1,TIME2

  double TIME1;
  double TIME2;

  //     4  !
  //     5  !DECLARATION CODES
  //     6  %CONSTINTEGER STRINGBIT=X'80', REALBITS=X'30', INTBIT=X'40'
  //     7  %CONSTINTEGER NUMBITS=X'70'
  //     8  %CONSTINTEGER APPMASK=X'FF00'
  //     9  %CONSTINTEGER EXP=1, FN=2
  //    10  %CONSTINTEGER RECFORMAT=4, ROUTINE=6
  //    11  %CONSTINTEGER REF=8, VAR=9, MAP=10
  //    12  %CONSTINTEGER LAB=12, JUMPLAB=13
  //    13  %CONSTINTEGER SWITCH=X'10C'
  //    14  %CONSTINTEGER IMP1MODES=B'01000011111111000000000000000000'
  //    15  %CONSTINTEGER IMPMODES =B'01000011111100000000000000000000'
  //    16  %CONSTINTEGER DESTMODES=B'00000000111100000000000000000000'
  //    17  %CONSTINTEGER ADRMODES =B'01000000111100000000000000000000'
  //    18  %CONSTINTEGER EXPMODES =B'11110000111100000000000000000000'
  //    19  %CONSTINTEGER FMATMODES=B'00001000000000000000000000000000'
  //    20  !SYMBOL INIT CODES
  //    21  ! USED EXPLICITLY
  //    22  ! SPACE=0, DIGIT:ISO, LETTER:ISO, QUOTE=127
  //    23  ! PC=128, PCLET OR PUNCT: 128 + KEYDICT INDEX
  //    24  ! KEYDICT INDEX >= PUNCTMIN FOR PUNCT
  //    25  ! KEYDICT INDEX >= SKIP1MIN FOR  !  *  SEMICOLON  NL
  //    26  %CONSTINTEGER NLCODE=127;  !MASKED FROM 255 ACTUAL
  //    27  !ATOM CODES
  //    28  %CONSTINTEGER IDENT=1, CONST=2, LB=11, COMMA=10, RB=12
  //    29  %CONSTINTEGER TERMINATOR=13, JUMP=15
  //    30  %CONSTINTEGER OP3=6, START=53, CYCLE=54
  //    31  ! VERTICAL BAR
  //    32  %CONSTINTEGER MARKER=124
  //    33
  //    34  %OWNINTEGER STATS=0, ATOMS=-54, IDENTIFIERS=-54, NUMBERS=0, LOOPS=0

  static int STATS = 0;
  static int ATOMS = -54;
  static int IDENTIFIERS = -54;
  static int NUMBERS = 0;
  static int LOOPS = 0;

  //    35  %OWNINTEGER LOOKS=1, TIMES=1

  static int LOOKS = 1;
  static int TIMES = 1;

  //    36  %INTEGER I,J

  int I;
  int J;

  //    37  %INTEGER LINEBASE;     !BASE FOR SOURCE LINE (POINTER)

  int LINEBASE;

  //    38  %INTEGER FPOS;         !CURRENT POSITION IN SOURCE (POINTER)

  int FPOS;

  //    39  %INTEGER FPOS1;        !START OF CURRENT ATOM (POINTER)

  int FPOS1;

  //    40  %INTEGER PRINTPOS;     !'LINE-ALREADY-PRINTED' INDIC

  int PRINTPOS;

  //    41  %INTEGER LINE;         !CURRENT LINE NUMBER

  int LINE;

  //    42  %INTEGER NEXTLINE

  int NEXTLINE;

  //    43  %INTEGER FMAX;  !LAST BYTE IN SOURCE (POINTER)

  int FMAX;

  //    44  %INTEGER FAULTNUM;     !FAULTY NUMBER

  int FAULTNUM;

  //    45  %INTEGER FAULTPOS;     !FAULTY ATOM POSITION (POINTER)

  int FAULTPOS;

  //    46  %INTEGER SYMCODE;  !SYMBOL CODE FOR CURRENT SYMBOL

  int SYMCODE;

  //    47  %INTEGER SKIPMIN;  !=SKIP1MIN OR NLCODE

  int SKIPMIN;

  //    48  !%INTEGER GG;           !=GRAM(G)
  //    49  %INTEGER CLASS;        !GRAMMAR CLASS

  int CLASS;

  //    50  %INTEGER G;            !INDEX TO GRAM

  int G;

  //    51  %INTEGER ATOM;         !ATOM CODE FOR CURRENT ATOM

  int ATOM;

  //    52  %INTEGER ATOMTYPE;     !TYPE FOR CURREMT ATOM

  int ATOMTYPE;

  //    53  %INTEGER ATOMVAL;      !'VALUE' FOR CURRENT ATOM

  int ATOMVAL;

  //    54  %INTEGER DECLTYPE;     !DECLARATION TYPE

  int DECLTYPE;

  //    55  %INTEGER MODES;  !BIT VECTOR FOR PERMISSIBLE IDENT MODES

  int MODES;

  //    56  %INTEGER DIMCOUNT;     !DIMENSION COUNT

  int DIMCOUNT;

  //    57  %INTEGER CONSTCOUNT;   !CONSTANT COUNT (DOWN)

  int CONSTCOUNT;

  //    58  %INTEGER STRINGSIZE

  int STRINGSIZE;

  //    59  %INTEGER PRECISION

  int PRECISION;

  //    60  %INTEGER LASTTYPE,LASTVAL

  int LASTTYPE;
  int LASTVAL;

  //    61  %INTEGER TYPE,VAL

  int TYPE;
  int VAL;

  //    62  %INTEGER NP;           !NEST POINTER (INDEX TO NTYPE,NVAL)

  int NP;

  //    63  %INTEGERARRAY NTYPE,NVAL(1:50);  !NEST

  int NTYPE[50];
  int NVAL[50];

  //    64  %INTEGER LINKMAX;      !GRAMMAR STACK MAX (INDEX TO LINK)

  int LINKMAX;

  //    65  %INTEGERARRAY LINK(1:20);  !GRAMMAR CONTROL STACK

  int LINK[20];

  //    66  %RECORDFORMAT BLOCKINF(%INTEGER STACK,LOCAL,BTYPE)

  struct BLOCKINF {
    union {
      struct {
        int STACK;
        int LOCAL;
        int BTYPE;
      };
    };
  };

  //    67  %INTEGER LEVEL;        !CURRENT BLOCK LEVEL (MAIN=1)

  int LEVEL;

  //    68  %RECORD(BLOCKINF) C;   !INFO FOR CURRENT BLOCK

  struct BLOCKINF C;

  //    69  %RECORD(BLOCKINF)%ARRAY HOLD(1:12);  !INFO FOR GLOBAL BLOCKS

  struct BLOCKINF HOLD[12];

  //    70  %INTEGERARRAY INDEX(0:255);  !HASH INDEX TO IDENT DICT

  int INDEX[256];

  //    71  %INTEGERNAME HEAD;     !HEAD OF IDENT SEARCH LIST

  int *HEAD;

  //    72  %INTEGER DPOS;         !DICT SEARCH POSITION (POINTER)

  int DPOS;

  //    73  %INTEGER DLIM;         !DICT LIMIT (POINTER)

  int DLIM;

  //    74  %INTEGER NEWDLIM

  int NEWDLIM;

  //    75  %INTEGER DBOUND;       !DICT UPPER LIMIT (POINTER);

  int DBOUND;

  //    76  %INTEGER IDENTS;       !POS OF FIRST IDENT IN DECL LIST (POINTER)

  int IDENTS;

  //    77  %INTEGER RECIDENTS;    !POS OF FIRST IDENT IN RECORD LIST (POINTER)

  int RECIDENTS;

  //    78  %INTEGER PIDENTPOS;    !POS OF PROCEDURE IDENT (POINTER)

  int PIDENTPOS;

  //    79  %INTEGER FIDENTPOS;    !POS OF FORMAT IDENT (POINTER)

  int FIDENTPOS;

  //    80  %INTEGER EXTIND;  !SET BY %EXTERNAL

  int EXTIND;

  //    81  %INTEGER CONDIND;  !SET FOR START,CYCLE

  int CONDIND;

  //    82  %INTEGER PARMAX;  !CURRENT MAX IN PARTYPE

  int PARMAX;

  //    83  %INTEGER ADGRAM0, LINK1;  !PRE-COMPUTED GRAMMAR VALUES

  int ADGRAM0;
  int LINK1;

  //    84  %INTEGER APPCONT

  int APPCONT;

  //    85
  //    86  %OWNINTEGERARRAY PARTYPE(0:255) =  0,

  static int PARTYPE[256] = {
      0,   105,      16777321,  33554537, 50331753, 67108969,         83886185,  41,        16777257, 137,      136,
      248, 33554473, 117440553, 16777352, 33554568, [16 ... 251] = 0, -50331543, -33553928, 0,        -16777111};

  //    87+     X'00000069', X'01000069', X'02000069', X'03000069',
  //    88+     X'04000069', X'05000069', X'00000029', X'01000029',
  //    89+     X'00000089', X'00000088', X'000000F8', X'02000029',
  //    90+     X'07000029', X'01000088', X'02000088', 0(236),
  //    91+     X'FD000069', X'FE0001F8', X'00000000', X'FF000069'
  //    92
  //    93  %INTEGERARRAY DICT(1:4000)

  int DICT[4000];

  //    94
  //    95  !* GRAMMAR AND KEYWORD DICTIONARY GENERATED BY TAKEON PROGRAM
  //    96
  //    97  %CONSTINTEGER PUNCTMIN = 43, SKIP1MIN = 86
  //    98
  //    99  %CONSTBYTEINTEGERARRAY SYMINIT( 0: 255) =  %C

  const unsigned char SYMINIT[256] = {
      129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 255, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
      129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 0,   217, 127, 171, 129, 128, 173, 127, 175, 178, 214, 180,
      182, 184, 187, 189, 48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  192, 221, 194, 200, 203, 129, 129, 65,
      66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,
      88,  89,  90,  129, 207, 129, 210, 212, 129, 65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,
      78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  129, 207, 129, 210, 212, 129, 129, 129, 129,
      129, 129, 129, 129, 129, 129, 255, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
      129, 129, 129, 129, 129, 129, 0,   217, 127, 171, 129, 128, 173, 127, 175, 178, 214, 180, 182, 184, 187, 189,
      48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  192, 221, 194, 200, 203, 129, 129, 130, 132, 134, 138, 139,
      142, 129, 129, 146, 129, 129, 148, 150, 152, 154, 157, 158, 159, 161, 167, 169, 129, 170, 129, 129, 129, 129,
      207, 129, 210, 212, 129, 130, 132, 134, 138, 139, 142, 129, 129, 146, 129, 129, 148, 150, 152, 154, 157, 158,
      159, 161, 167, 169, 129, 170, 129, 129, 129, 129, 207, 129, 210, 212};

  //   100+  129, 129, 129, 129, 129, 129, 129, 129,
  //   101+  129, 129, 255, 129, 129, 129, 129, 129,
  //   102+  129, 129, 129, 129, 129, 129, 129, 129,
  //   103+  129, 129, 129, 129, 129, 129, 129, 129,
  //   104+    0, 217, 127, 171, 129, 128, 173, 127,
  //   105+  175, 178, 214, 180, 182, 184, 187, 189,
  //   106+   48,  49,  50,  51,  52,  53,  54,  55,
  //   107+   56,  57, 192, 221, 194, 200, 203, 129,
  //   108+  129,  65,  66,  67,  68,  69,  70,  71,
  //   109+   72,  73,  74,  75,  76,  77,  78,  79,
  //   110+   80,  81,  82,  83,  84,  85,  86,  87,
  //   111+   88,  89,  90, 129, 207, 129, 210, 212,
  //   112+  129,  65,  66,  67,  68,  69,  70,  71,
  //   113+   72,  73,  74,  75,  76,  77,  78,  79,
  //   114+   80,  81,  82,  83,  84,  85,  86,  87,
  //   115+   88,  89,  90, 129, 207, 129, 210, 212,
  //   116+  129, 129, 129, 129, 129, 129, 129, 129,
  //   117+  129, 129, 255, 129, 129, 129, 129, 129,
  //   118+  129, 129, 129, 129, 129, 129, 129, 129,
  //   119+  129, 129, 129, 129, 129, 129, 129, 129,
  //   120+    0, 217, 127, 171, 129, 128, 173, 127,
  //   121+  175, 178, 214, 180, 182, 184, 187, 189,
  //   122+   48,  49,  50,  51,  52,  53,  54,  55,
  //   123+   56,  57, 192, 221, 194, 200, 203, 129,
  //   124+  129, 130, 132, 134, 138, 139, 142, 129,
  //   125+  129, 146, 129, 129, 148, 150, 152, 154,
  //   126+  157, 158, 159, 161, 167, 169, 129, 170,
  //   127+  129, 129, 129, 129, 207, 129, 210, 212,
  //   128+  129, 130, 132, 134, 138, 139, 142, 129,
  //   129+  129, 146, 129, 129, 148, 150, 152, 154,
  //   130+  157, 158, 159, 161, 167, 169, 129, 170,
  //   131+  129, 129, 129, 129, 207, 129, 210, 212
  //   132
  //   133  %CONSTSHORTINTEGERARRAY KEYDICT( 0: 487) =  %C

  const short int KEYDICT[488] = {
      0,      5,      -26642, 6194,   -26523, 6329,   -26385, -26247, 0,      0,      6585,   -26132, -26066, 6776,
      -25887, -25815, -25746, 7151,   -25562, 7342,   -25367, 7471,   -25247, 7599,   -25119, 7727,   -24978, -24782,
      8119,   8178,   8245,   -24475, 8687,   -24024, -23959, -23888, -23820, -23625, 9209,   -23512, 9330,   9390,
      9512,   512,    240,    320,    64,     -23231, 704,    0,      786,    0,      384,    113,    640,    0,
      -23074, 384,    114,    384,    128,    -22961, 320,    48,     1600,   1,      -22835, -22692, -22563, -22434,
      512,    240,    -22307, 576,    240,    -22179, -22050, 512,    240,    -21923, 448,    68,     448,    68,
      192,    0,      -21814, 320,    112,    -21695, -21559, 384,    67,     832,    1,      11364,  11506,  11559,
      11636,  -21075, 11758,  11875,  11950,  12019,  12068,  -20503, 12340,  12469,  12526,  2496,   11,     12594,
      1664,   3,      12788,  12851,  12910,  12976,  13102,  13165,  13236,  -19419, 3264,   1,      2816,   0,
      13422,  13545,  13601,  -19103, -19037, -18969, -18896, -18829, 14004,  14069,  14127,  14183,  14245,  -18463,
      -18385, 14450,  14505,  14579,  14629,  14709,  -18004, 14836,  14889,  3008,   0,      960,    0,      320,
      64,     576,    0,      256,    64,     512,    240,    256,    64,     896,    0,      512,    240,    256,
      64,     512,    240,    256,    112,    384,    68,     3072,   0,      2752,   0,      14945,  15017,  15077,
      15149,  -17549, 15284,  15340,  15393,  15461,  -17169, 3712,   0,      15668,  -16987, 15858,  15916,  15977,
      -16723, 3136,   0,      16101,  16180,  16295,  2496,   3,      16425,  16485,  2880,   0,      16630,  2048,
      0,      16686,  16740,  16812,  17007,  17065,  17125,  17205,  17269,  17332,  17394,  17454,  17507,  17650,
      17712,  17833,  17908,  17972,  18030,  18163,  18213,  18281,  18348,  18425,  18606,  18729,  18789,  18868,
      18994,  19045,  19181,  3328,   1,      19238,  1024,   2,      19442,  19497,  19572,  19699,  19745,  19815,
      1280,   0,      -12887, 19954,  20020,  2240,   1,      20069,  20148,  20210,  -12493, 1984,   25,     20402,
      20467,  20513,  20588,  20658,  20713,  20788,  20897,  2624,   1,      20980,  1024,   0,      21102,  21155,
      21221,  3200,   0,      21300,  21363,  21420,  21541,  -11090, 2112,   256,    3648,   0,      21742,  21806,
      2048,   8,      21871,  3456,   2,      21929,  -10778, -10708, 22128,  22190,  22254,  1472,   0,      22312,
      22452,  22565,  22638,  22693,  22767,  22830,  22900,  22949,  -9748,  23086,  23140,  23284,  23348,  23476,
      23598,  23726,  -8983,  23858,  23916,  3392,   1,      24039,  24168,  24301,  24421,  24499,  1728,   0,
      1728,   0,      24609,  24692,  24756,  24876,  24995,  25129,  25193,  25266,  25313,  25395,  3520,   1,
      2368,   0,      25458,  25588,  25633,  25714,  25908,  26021,  26081,  26159,  26223,  2304,   9,      26277,
      3584,   0,      1088,   0,      1024,   1,      26341,  26478,  26543,  1152,   0,      2176,   137,    1920,
      268,    2688,   0,      26596,  1664,   3,      26669,  26725,  0,      2,      1344,   0,      2688,   0,
      26796,  26867,  26927,  26988,  27113,  1984,   105,    27173,  27244,  -5389,  1152,   0,      3264,   1,
      27448,  27500,  27630,  27698,  27762,  2560,   6,      27892,  27957,  28016,  28069,  28199,  28261,  28404,
      28519,  2432,   0,      28579,  28711,  1984,   41,     28788,  28852,  1984,   57,     28967,  29101,  1856,
      121,    29157,  29236,  29298,  2240,   -255,   29349,  3776,   0,      1280,   0,      29426,  2048,   0,
      29477,  29551,  1216,   0,      1408,   32,     29601,  29671,  29737,  29807,  29874,  29985,  30066,  30192,
      30316,  30437,  30510,  30567,  1984,   73,     30637,  1984,   121,    1024,   0,      1408,   0,      30770,
      30885,  31026,  3776,   1,      1984,   89,     1280,   0,      31073,  31149,  1280,   0};

  //   134+      0,     5,-26642,  6194,-26523,  6329,-26385,-26247,     0,     0,
  //   135+   6585,-26132,-26066,  6776,-25887,-25815,-25746,  7151,-25562,  7342,
  //   136+ -25367,  7471,-25247,  7599,-25119,  7727,-24978,-24782,  8119,  8178,
  //   137+   8245,-24475,  8687,-24024,-23959,-23888,-23820,-23625,  9209,-23512,
  //   138+   9330,  9390,  9512,   512,   240,   320,    64,-23231,   704,     0,
  //   139+    786,     0,   384,   113,   640,     0,-23074,   384,   114,   384,
  //   140+    128,-22961,   320,    48,  1600,     1,-22835,-22692,-22563,-22434,
  //   141+    512,   240,-22307,   576,   240,-22179,-22050,   512,   240,-21923,
  //   142+    448,    68,   448,    68,   192,     0,-21814,   320,   112,-21695,
  //   143+ -21559,   384,    67,   832,     1, 11364, 11506, 11559, 11636,-21075,
  //   144+  11758, 11875, 11950, 12019, 12068,-20503, 12340, 12469, 12526,  2496,
  //   145+     11, 12594,  1664,     3, 12788, 12851, 12910, 12976, 13102, 13165,
  //   146+  13236,-19419,  3264,     1,  2816,     0, 13422, 13545, 13601,-19103,
  //   147+ -19037,-18969,-18896,-18829, 14004, 14069, 14127, 14183, 14245,-18463,
  //   148+ -18385, 14450, 14505, 14579, 14629, 14709,-18004, 14836, 14889,  3008,
  //   149+      0,   960,     0,   320,    64,   576,     0,   256,    64,   512,
  //   150+    240,   256,    64,   896,     0,   512,   240,   256,    64,   512,
  //   151+    240,   256,   112,   384,    68,  3072,     0,  2752,     0, 14945,
  //   152+  15017, 15077, 15149,-17549, 15284, 15340, 15393, 15461,-17169,  3712,
  //   153+      0, 15668,-16987, 15858, 15916, 15977,-16723,  3136,     0, 16101,
  //   154+  16180, 16295,  2496,     3, 16425, 16485,  2880,     0, 16630,  2048,
  //   155+      0, 16686, 16740, 16812, 17007, 17065, 17125, 17205, 17269, 17332,
  //   156+  17394, 17454, 17507, 17650, 17712, 17833, 17908, 17972, 18030, 18163,
  //   157+  18213, 18281, 18348, 18425, 18606, 18729, 18789, 18868, 18994, 19045,
  //   158+  19181,  3328,     1, 19238,  1024,     2, 19442, 19497, 19572, 19699,
  //   159+  19745, 19815,  1280,     0,-12887, 19954, 20020,  2240,     1, 20069,
  //   160+  20148, 20210,-12493,  1984,    25, 20402, 20467, 20513, 20588, 20658,
  //   161+  20713, 20788, 20897,  2624,     1, 20980,  1024,     0, 21102, 21155,
  //   162+  21221,  3200,     0, 21300, 21363, 21420, 21541,-11090,  2112,   256,
  //   163+   3648,     0, 21742, 21806,  2048,     8, 21871,  3456,     2, 21929,
  //   164+ -10778,-10708, 22128, 22190, 22254,  1472,     0, 22312, 22452, 22565,
  //   165+  22638, 22693, 22767, 22830, 22900, 22949, -9748, 23086, 23140, 23284,
  //   166+  23348, 23476, 23598, 23726, -8983, 23858, 23916,  3392,     1, 24039,
  //   167+  24168, 24301, 24421, 24499,  1728,     0,  1728,     0, 24609, 24692,
  //   168+  24756, 24876, 24995, 25129, 25193, 25266, 25313, 25395,  3520,     1,
  //   169+   2368,     0, 25458, 25588, 25633, 25714, 25908, 26021, 26081, 26159,
  //   170+  26223,  2304,     9, 26277,  3584,     0,  1088,     0,  1024,     1,
  //   171+  26341, 26478, 26543,  1152,     0,  2176,   137,  1920,   268,  2688,
  //   172+      0, 26596,  1664,     3, 26669, 26725,     0,     2,  1344,     0,
  //   173+   2688,     0, 26796, 26867, 26927, 26988, 27113,  1984,   105, 27173,
  //   174+  27244, -5389,  1152,     0,  3264,     1, 27448, 27500, 27630, 27698,
  //   175+  27762,  2560,     6, 27892, 27957, 28016, 28069, 28199, 28261, 28404,
  //   176+  28519,  2432,     0, 28579, 28711,  1984,    41, 28788, 28852,  1984,
  //   177+     57, 28967, 29101,  1856,   121, 29157, 29236, 29298,  2240,  -255,
  //   178+  29349,  3776,     0,  1280,     0, 29426,  2048,     0, 29477, 29551,
  //   179+   1216,     0,  1408,    32, 29601, 29671, 29737, 29807, 29874, 29985,
  //   180+  30066, 30192, 30316, 30437, 30510, 30567,  1984,    73, 30637,  1984,
  //   181+    121,  1024,     0,  1408,     0, 30770, 30885, 31026,  3776,     1,
  //   182+   1984,    89,  1280,     0, 31073, 31149,  1280,     0
  //   183
  //   184  %CONSTSHORTINTEGERARRAY PHRASE( 109: 126) =  %C

  const short int PHRASE[18] = {257, 249, 368, 430, 264, 269, 286, 298, 335, 345, 0, 452, 237, 374, 381, 0, 420, 437};

  //   185+   257,  249,  368,  430,  264,  269,  286,  298,  335,  345,
  //   186+     0,  452,  237,  374,  381,    0,  420,  437
  //   187
  //   188  %CONSTINTEGER INITBASE = 472
  //   189
  //   190  {%CONST}%OWNSHORTINTEGERARRAY GRAM( 0: 531) =  %C

  static short int GRAM[532] = {
      66,    4084,  4511,  4898,  5028,  6440,  64,    7071,  7330,  5028,  64,    11553, 1955,  11685, 11945, 12273,
      12321, 2467,  6439,  5617,  12429, 2996,  64,    5786,  5557,  5620,  2157,  12575, 12834, 6440,  64,    12954,
      12955, 6961,  64,    13089, 6439,  5489,  4589,  13345, 1955,  12273, 7433,  12429, 64,    6005,  7602,  5557,
      64,    7925,  13569, 13737, 64,    12429, 5630,  13089, 5489,  7149,  8257,  5557,  14068, 3250,  5558,  64,
      8442,  8538,  4746,  12429, 64,    9042,  9200,  8963,  14217, 14350, 14479, 14617, 9927,  12429, 14763, 66,
      14970, 15098, 15489, 64,    15729, 16129, 64,    8062,  16378, 5576,  12274, 16769, 64,    16897, 64,    5614,
      5618,  69,    6439,  64,    12653, 5621,  17281, 64,    17409, 64,    17612, 13569, 64,    3124,  64,    18154,
      18287, 9976,  9956,  116,   5599,  15199, 10378, 18319, 64,    18636, 15859, 10762, 12429, 64,    18897, 16479,
      11274, 5557,  64,    19021, 17105, 17155, 12239, 19276, 19788, 17736, 19851, 19981, 64,    20218, 9964,  20225,
      64,    20363, 64,    17616, 20619, 64,    19443, 22409, 12429, 64,    12275, 22905, 89,    9963,  23126, 23554,
      64,    20806, 21279, 22306, 21796, 64,    23809, 24609, 24867, 64,    25089, 25889, 24867, 64,    21357, 22593,
      26125, 26362, 26881, 64,    23242, 10378, 12429, 64,    5516,  64,    24014, 24330, 5516,  64,    23809, 20806,
      27649, 64,    23809, 64,    25294, 28682, 25582, 20618, 5516,  64,    28929, 64,    22724, 26458, 22538, 29067,
      29197, 64,    27084, 27402, 17804, 22905, 26881, 22905, 27854, 24586, 28147, 28426, 5516,  64,    27649, 20806,
      25089, 64,    29390, 29562, 91,    25459, 29663, 29836, 64,    30046, 22538, 29197, 64,    30534, 31135, 31522,
      31652, 40,    31691, 35,    39,    66,    31213, 35,    64,    32139, 64,    32385, 64,    32597, 32780, 64,
      88,    33163, 66,    33402, 33503, 33676, 64,    98,    34049, 64,    34252, 33802, 66,    34597, 34801, 34955,
      64,    35194, 35296, 35481, 64,    35677, 35834, 35936, 34954, 36236, 64,    36444, 34570, 66,    36875, 64,
      37114, 37215, 37401, 64,    37608, 37754, 37855, 38028, 64,    99,    39937, 40847, 41104, 39569, 39058, 41363,
      64,    41602, 12429, 14763, 66,    41737, 41870, 64,    40147, 40304, 40067, 14217, 14350, 14479, 9927,  41985,
      64,    12429, 66,    42114, 64,    41184, 42346, 42479, 42582, 9953,  42746, 41196, 42864, 41195, 41162, 43126,
      43520, 43691, 43820, 66,    67,    44022, 43382, 43691, 66,    44939, 44538, 45448, 45577, 45711, 67,    45173,
      45824, 12,    64,    46202, 45544, 120,   46604, 64,    46313, 46728, 46857, 66,    44539, 47098, 46824, 105,
      47361, 64,    47569, 47728, 47491, 66,    49281, 48770, 50182, 50311, 50443, 50607, 64,    50308, 50693, 51078,
      66,    49492, 49648, 49411, 50308, 50693, 51078, 66,    51302, 51453, 51578, 51834, 50941, 51972, 49001, 52200,
      52733, 48873, 48780, 64,    48816, 64,    52861, 52349, 52868, 52997, 49129, 52327, 50921, 53501, 53245, 53508,
      52457, 52329, 53757, 53225, 54401, 2,     54539, 54703, 64,    47572, 45306, 54906, 48,    64,    55307, 66,
      55546, 55615, 55306, 12,    64,    56175, 56288, 56457, 64,    56641, 56826, 56928, 57098, 64,    57338, 57440,
      57610, 64,    57850, 96,    58057, 58251, 58479, 58618, 58721, 58977, 59142, 64,    59276, 64,    59621, 59782,
      64,    58251, 64,    60005, 60143, 60257, 59142, 66,    0,     8833,  0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     40847, 41104, 39569, 39058, 41363, 5524,  10261, 5526,  10391,
      0,     0,     5786,  6299,  0,     10525, 10782, 2079,  928,   0,     3362,  0,     1444,  0,     294,   0,
      6440,  10921, 3498,  0,     0,     0,     0,     0,     0,     11185, 0,     11315, 0,     0,     6838,  2615,
      5560,  11449, 5562,  59};

  //   191+     66,  4084,  4511,  4898,  5028,  6440,    64,  7071,  7330,  5028,
  //   192+     64, 11553,  1955, 11685, 11945, 12273, 12321,  2467,  6439,  5617,
  //   193+  12429,  2996,    64,  5786,  5557,  5620,  2157, 12575, 12834,  6440,
  //   194+     64, 12954, 12955,  6961,    64, 13089,  6439,  5489,  4589, 13345,
  //   195+   1955, 12273,  7433, 12429,    64,  6005,  7602,  5557,    64,  7925,
  //   196+  13569, 13737,    64, 12429,  5630, 13089,  5489,  7149,  8257,  5557,
  //   197+  14068,  3250,  5558,    64,  8442,  8538,  4746, 12429,    64,  9042,
  //   198+   9200,  8963, 14217, 14350, 14479, 14617,  9927, 12429, 14763,    66,
  //   199+  14970, 15098, 15489,    64, 15729, 16129,    64,  8062, 16378,  5576,
  //   200+  12274, 16769,    64, 16897,    64,  5614,  5618,    69,  6439,    64,
  //   201+  12653,  5621, 17281,    64, 17409,    64, 17612, 13569,    64,  3124,
  //   202+     64, 18154, 18287,  9976,  9956,   116,  5599, 15199, 10378, 18319,
  //   203+     64, 18636, 15859, 10762, 12429,    64, 18897, 16479, 11274,  5557,
  //   204+     64, 19021, 17105, 17155, 12239, 19276, 19788, 17736, 19851, 19981,
  //   205+     64, 20218,  9964, 20225,    64, 20363,    64, 17616, 20619,    64,
  //   206+  19443, 22409, 12429,    64, 12275, 22905,    89,  9963, 23126, 23554,
  //   207+     64, 20806, 21279, 22306, 21796,    64, 23809, 24609, 24867,    64,
  //   208+  25089, 25889, 24867,    64, 21357, 22593, 26125, 26362, 26881,    64,
  //   209+  23242, 10378, 12429,    64,  5516,    64, 24014, 24330,  5516,    64,
  //   210+  23809, 20806, 27649,    64, 23809,    64, 25294, 28682, 25582, 20618,
  //   211+   5516,    64, 28929,    64, 22724, 26458, 22538, 29067, 29197,    64,
  //   212+  27084, 27402, 17804, 22905, 26881, 22905, 27854, 24586, 28147, 28426,
  //   213+   5516,    64, 27649, 20806, 25089,    64, 29390, 29562,    91, 25459,
  //   214+  29663, 29836,    64, 30046, 22538, 29197,    64, 30534, 31135, 31522,
  //   215+  31652,    40, 31691,    35,    39,    66, 31213,    35,    64, 32139,
  //   216+     64, 32385,    64, 32597, 32780,    64,    88, 33163,    66, 33402,
  //   217+  33503, 33676,    64,    98, 34049,    64, 34252, 33802,    66, 34597,
  //   218+  34801, 34955,    64, 35194, 35296, 35481,    64, 35677, 35834, 35936,
  //   219+  34954, 36236,    64, 36444, 34570,    66, 36875,    64, 37114, 37215,
  //   220+  37401,    64, 37608, 37754, 37855, 38028,    64,    99, 39937, 40847,
  //   221+  41104, 39569, 39058, 41363,    64, 41602, 12429, 14763,    66, 41737,
  //   222+  41870,    64, 40147, 40304, 40067, 14217, 14350, 14479,  9927, 41985,
  //   223+     64, 12429,    66, 42114,    64, 41184, 42346, 42479, 42582,  9953,
  //   224+  42746, 41196, 42864, 41195, 41162, 43126, 43520, 43691, 43820,    66,
  //   225+     67, 44022, 43382, 43691,    66, 44939, 44538, 45448, 45577, 45711,
  //   226+     67, 45173, 45824,    12,    64, 46202, 45544,   120, 46604,    64,
  //   227+  46313, 46728, 46857,    66, 44539, 47098, 46824,   105, 47361,    64,
  //   228+  47569, 47728, 47491,    66, 49281, 48770, 50182, 50311, 50443, 50607,
  //   229+     64, 50308, 50693, 51078,    66, 49492, 49648, 49411, 50308, 50693,
  //   230+  51078,    66, 51302, 51453, 51578, 51834, 50941, 51972, 49001, 52200,
  //   231+  52733, 48873, 48780,    64, 48816,    64, 52861, 52349, 52868, 52997,
  //   232+  49129, 52327, 50921, 53501, 53245, 53508, 52457, 52329, 53757, 53225,
  //   233+  54401,     2, 54539, 54703,    64, 47572, 45306, 54906,    48,    64,
  //   234+  55307,    66, 55546, 55615, 55306,    12,    64, 56175, 56288, 56457,
  //   235+     64, 56641, 56826, 56928, 57098,    64, 57338, 57440, 57610,    64,
  //   236+  57850,    96, 58057, 58251, 58479, 58618, 58721, 58977, 59142,    64,
  //   237+  59276,    64, 59621, 59782,    64, 58251,    64, 60005, 60143, 60257,
  //   238+  59142,    66,     0,  8833,     0,     0,     0,     0,     0,     0,
  //   239+      0,     0,     0,     0,     0,     0,     0, 40847, 41104, 39569,
  //   240+  39058, 41363,  5524, 10261,  5526, 10391,     0,     0,  5786,  6299,
  //   241+      0, 10525, 10782,  2079,   928,     0,  3362,     0,  1444,     0,
  //   242+    294,     0,  6440, 10921,  3498,     0,     0,     0,     0,     0,
  //   243+      0, 11185,     0, 11315,     0,     0,  6838,  2615,  5560, 11449,
  //   244+   5562,    59
  //   245
  //   246  !!END OF GENERATED SECTION
  //   247
  //   248  {%CONST}%OWNBYTEINTEGERARRAY PERM(1:518) =  %C

  static unsigned char PERM[518] = {
      65, 68, 68, 82, 58, 11,  98,  65, 82,  67,  67, 79, 83, 58,  7,  34,  65, 82, 67, 83, 73, 78, 58, 7,  34,  65,
      82, 82, 65, 89, 58, 252, 248, 65, 82,  67,  84, 65, 78, 58,  13, 34,  66, 89, 84, 69, 73, 78, 84, 69, 71,  69,
      82, 58, 1,  74, 67, 72,  65,  82, 78,  79,  58, 14, 74, 67,  76, 79,  83, 69, 83, 84, 82, 69, 65, 77, 58,  1,
      6,  67, 79, 83, 58, 7,   34,  69, 88,  80,  58, 7,  34, 70,  82, 65,  67, 80, 84, 58, 7,  34, 70, 82, 79,  77,
      83, 84, 82, 73, 78, 71,  58,  15, 130, 73,  77, 79, 68, 58,  1,  98,  73, 78, 84, 58, 7,  98, 73, 78, 84,  80,
      84, 58, 7,  98, 73, 78,  84,  69, 71,  69,  82, 58, 1,  106, 76, 69,  78, 71, 84, 72, 58, 10, 74, 76, 79,  71,
      58, 7,  34, 76, 79, 78,  71,  82, 69,  65,  76, 58, 1,  26,  77, 79,  68, 58, 7,  34, 78, 69, 87, 76, 73,  78,
      69, 58, 0,  6,  78, 69,  87,  76, 73,  78,  69, 83, 58, 1,   6,  78,  69, 87, 80, 65, 71, 69, 58, 0,  6,   78,
      69, 88, 84, 73, 84, 69,  77,  58, 0,   130, 78, 69, 88, 84,  67, 72,  58, 0,  98, 78, 69, 88, 84, 83, 89,  77,
      66, 79, 76, 58, 0,  98,  78,  76, 58,  0,   98, 80, 73, 58,  0,  34,  80, 82, 73, 78, 84, 58, 12, 6,  80,  82,
      73, 78, 84, 67, 72, 58,  1,   6,  80,  82,  73, 78, 84, 70,  76, 58,  8,  6,  80, 82, 73, 78, 84, 83, 84,  82,
      73, 78, 71, 58, 9,  6,   80,  82, 73,  78,  84, 83, 89, 77,  66, 79,  76, 58, 1,  6,  82, 65, 68, 73, 85,  83,
      58, 13, 34, 82, 69, 65,  68,  58, 11,  6,   82, 69, 65, 68,  67, 72,  58, 11, 6,  82, 69, 65, 68, 73, 84,  69,
      77, 58, 10, 6,  82, 69,  65,  68, 83,  84,  82, 73, 78, 71,  58, 10,  6,  82, 69, 65, 68, 83, 89, 77, 66,  79,
      76, 58, 11, 6,  82, 69,  65,  76, 58,  1,   26, 82, 69, 67,  79, 82,  68, 58, 1,  10, 83, 69, 76, 69, 67,  84,
      73, 78, 80, 85, 84, 58,  1,   6,  83,  69,  76, 69, 67, 84,  79, 85,  84, 80, 85, 84, 58, 1,  6,  83, 69,  84,
      77, 65, 82, 71, 73, 78,  83,  58, 3,   6,   83, 72, 79, 82,  84, 73,  78, 84, 69, 71, 69, 82, 58, 1,  90,  83,
      73, 78, 58, 7,  34, 83,  75,  73, 80,  83,  89, 77, 66, 79,  76, 58,  0,  6,  83, 80, 65, 67, 69, 58, 0,   6,
      83, 80, 65, 67, 69, 83,  58,  1,  6,   83,  81, 82, 84, 58,  7,  34,  83, 84, 82, 73, 78, 71, 58, 1,  138, 84,
      65, 78, 58, 7,  34, 84,  79,  83, 84,  82,  73, 78, 71, 58,  1,  130, 87, 82, 73, 84, 69, 58, 2,  6};

  auto void PRINTSS(void);

  auto void REPORT(int N);

  auto void CODEATOM(void);

  auto void POPCONTEXT(void);

  auto void DEFINE(int DISP, int VAL);

  //   249+ 'A','D','D','R',':',X'0B',X'62',
  //   250+ 'A','R','C','C','O','S',':',X'07',X'22',
  //   251+ 'A','R','C','S','I','N',':',X'07',X'22',
  //   252+ 'A','R','R','A','Y',':',X'FC',X'F8',
  //   253+ 'A','R','C','T','A','N',':',X'0D',X'22',
  //   254+ 'B','Y','T','E','I','N','T','E','G','E','R',':',X'01',X'4A',
  //   255+ 'C','H','A','R','N','O',':',X'0E',X'4A',
  //   256+ 'C','L','O','S','E','S','T','R','E','A','M',':',X'01',X'06',
  //   257+ 'C','O','S',':',X'07',X'22',
  //   258+ 'E','X','P',':',X'07',X'22',
  //   259+ 'F','R','A','C','P','T',':',X'07',X'22',
  //   260+ 'F','R','O','M','S','T','R','I','N','G',':',X'0F',X'82',
  //   261+ 'I','M','O','D',':',X'01',X'62',
  //   262+ 'I','N','T',':',X'07',X'62',
  //   263+ 'I','N','T','P','T',':',X'07',X'62',
  //   264+ 'I','N','T','E','G','E','R',':',X'01',X'6A',
  //   265+ 'L','E','N','G','T','H',':',X'0A',X'4A',
  //   266+ 'L','O','G',':',X'07',X'22',
  //   267+ 'L','O','N','G','R','E','A','L',':',X'01',X'1A',
  //   268+ 'M','O','D',':',X'07',X'22',
  //   269+ 'N','E','W','L','I','N','E',':',X'00',X'06',
  //   270+ 'N','E','W','L','I','N','E','S',':',X'01',X'06',
  //   271+ 'N','E','W','P','A','G','E',':',X'00',X'06',
  //   272+ 'N','E','X','T','I','T','E','M',':',X'00',X'82',
  //   273+ 'N','E','X','T','C','H',':',X'00',X'62',
  //   274+ 'N','E','X','T','S','Y','M','B','O','L',':',X'00',X'62',
  //   275+ 'N','L',':',X'00',X'62',
  //   276+ 'P','I',':',X'00',X'22',
  //   277+ 'P','R','I','N','T',':',X'0C',X'06',
  //   278+ 'P','R','I','N','T','C','H',':',X'01',X'06',
  //   279+ 'P','R','I','N','T','F','L',':',X'08',X'06',
  //   280+ 'P','R','I','N','T','S','T','R','I','N','G',':',X'09',X'06',
  //   281+ 'P','R','I','N','T','S','Y','M','B','O','L',':',X'01',X'06',
  //   282+ 'R','A','D','I','U','S',':',X'0D',X'22',
  //   283+ 'R','E','A','D',':',X'0B',X'06',
  //   284+ 'R','E','A','D','C','H',':',X'0B',X'06',
  //   285+ 'R','E','A','D','I','T','E','M',':',X'0A',X'06',
  //   286+ 'R','E','A','D','S','T','R','I','N','G',':',X'0A',X'06',
  //   287+ 'R','E','A','D','S','Y','M','B','O','L',':',X'0B',X'06',
  //   288+ 'R','E','A','L',':',X'01',X'1A',
  //   289+ 'R','E','C','O','R','D',':',X'01',X'0A',
  //   290+ 'S','E','L','E','C','T','I','N','P','U','T',':',X'01',X'06',
  //   291+ 'S','E','L','E','C','T','O','U','T','P','U','T',':',X'01',X'06',
  //   292+ 'S','E','T','M','A','R','G','I','N','S',':',X'03',X'06',
  //   293+ 'S','H','O','R','T','I','N','T','E','G','E','R',':',X'01',X'5A',
  //   294+ 'S','I','N',':',X'07',X'22',
  //   295+ 'S','K','I','P','S','Y','M','B','O','L',':',X'00',X'06',
  //   296+ 'S','P','A','C','E',':',X'00',X'06',
  //   297+ 'S','P','A','C','E','S',':',X'01',X'06',
  //   298+ 'S','Q','R','T',':',X'07',X'22',
  //   299+ 'S','T','R','I','N','G',':',X'01',X'8A',
  //   300+ 'T','A','N',':',X'07',X'22',
  //   301+ 'T','O','S','T','R','I','N','G',':',X'01',X'82',
  //   302+ 'W','R','I','T','E',':',X'02',X'06'
  //   303
  //   304
  //   305  %ROUTINESPEC PRINT SS
  //   306  %ROUTINESPEC REPORT(%INTEGER N)
  //   307  %ROUTINESPEC CODE ATOM
  //   308  %ROUTINESPEC POP CONTEXT
  //   309  %ROUTINESPEC DEFINE(%INTEGER DISP, VAL)
  //   310
  //   311  %ROUTINE FAULT(%INTEGER N)

  void FAULT(int N) {
    //   312      FAULTNUM = N %AND FAULTPOS = FPOS1 %IF FAULTNUM < 0

    if (FAULTNUM >= 0) goto L_0001;
    FAULTNUM = N;
    FAULTPOS = FPOS1;
  L_0001:;

  //   313  %END

    return;
  } /* end of FAULT */

  //   314
  //   315  ! GRAM LAYOUT: LINK<9> CLASS<7>
  //   316  %SWITCH A(0:127)

  int A_index;
  int A_line;
  char *A_file;
  static const void *A[128] = {
      &&case_A_0,       &&case_A_1,       &&case_A_2,       &&case_A_3,       &&case_A_4,       &&case_A_5,
      &&case_A_6,       &&case_A_7,       &&case_A_8,       &&case_A_9,       &&case_A_10,      &&case_A_11,
      &&case_A_12,      &&case_A_13,      &&case_A_14,      &&case_A_15,      &&case_A_16,      &&case_A_17,
      &&case_A_18,      &&case_A_19,      &&case_A_20,      &&case_A_21,      &&case_A_22,      &&case_A_23,
      &&case_A_missing, &&case_A_25,      &&case_A_26,      &&case_A_27,      &&case_A_missing, &&case_A_29,
      &&case_A_30,      &&case_A_31,      &&case_A_32,      &&case_A_33,      &&case_A_34,      &&case_A_35,
      &&case_A_36,      &&case_A_37,      &&case_A_38,      &&case_A_39,      &&case_A_40,      &&case_A_41,
      &&case_A_42,      &&case_A_43,      &&case_A_44,      &&case_A_45,      &&case_A_missing, &&case_A_47,
      &&case_A_48,      &&case_A_missing, &&case_A_50,      &&case_A_51,      &&case_A_52,      &&case_A_53,
      &&case_A_54,      &&case_A_55,      &&case_A_56,      &&case_A_57,      &&case_A_58,      &&case_A_59,
      &&case_A_60,      &&case_A_missing, &&case_A_missing, &&case_A_63,      &&case_A_64,      &&case_A_65,
      &&case_A_66,      &&case_A_67,      &&case_A_68,      &&case_A_69,      &&case_A_70,      &&case_A_71,
      &&case_A_72,      &&case_A_73,      &&case_A_74,      &&case_A_75,      &&case_A_76,      &&case_A_77,
      &&case_A_78,      &&case_A_79,      &&case_A_80,      &&case_A_81,      &&case_A_82,      &&case_A_83,
      &&case_A_84,      &&case_A_85,      &&case_A_86,      &&case_A_missing, &&case_A_88,      &&case_A_89,
      &&case_A_90,      &&case_A_91,      &&case_A_92,      &&case_A_93,      &&case_A_94,      &&case_A_95,
      &&case_A_96,      &&case_A_97,      &&case_A_98,      &&case_A_99,      &&case_A_100,     &&case_A_101,
      &&case_A_102,     &&case_A_103,     &&case_A_104,     &&case_A_105,     &&case_A_106,     &&case_A_107,
      &&case_A_108,     &&case_A_109,     &&case_A_110,     &&case_A_111,     &&case_A_112,     &&case_A_113,
      &&case_A_114,     &&case_A_115,     &&case_A_116,     &&case_A_117,     &&case_A_118,     &&case_A_119,
      &&case_A_120,     &&case_A_121,     &&case_A_122,     &&case_A_123,     &&case_A_124,     &&case_A_125,
      &&case_A_126,     &&case_A_missing};

  //   317  %SWITCH X(0:4)

  int X_index;
  int X_line;
  char *X_file;
  static const void *X[5] = {&&case_X_0, &&case_X_1, &&case_X_2, &&case_X_3, &&case_X_4};

  //   318      TIME1 = CPUTIME

  TIME1 = _imp_CPUTIME();

  //   319      %CYCLE I = 0,1,255

  // %for I = 0, 1, 255 %cycle
  {
    I = -1;
  L_0002:
    if (I == 255) goto L_0003;
    I += 1;

    //   320         INDEX(I) = 0

    INDEX[I] = 0;

    //   321      %REPEAT

    goto L_0002;
  }

L_0003:;

//   322      C = 0

  C = (struct BLOCKINF){0};

  //   323      IDENTS = 0

  IDENTS = 0;

  //   324      PRINTPOS = 0;  PRECISION = 0;  LEVEL = 0

  PRINTPOS = 0;
  PRECISION = 0;
  LEVEL = 0;

  //   325      NEXTLINE = 1;  FAULTNUM = -1;  PARMAX = 15

  NEXTLINE = 1;
  FAULTNUM = -1;
  PARMAX = 15;

  //   326      ADGRAM0 = ADDR(GRAM(0));  LINK1 = GRAM(1)>>6&1022+ADGRAM0

  ADGRAM0 = _imp_ADDR(/*?*/ &GRAM[0]);
  LINK1 = ((unsigned int)GRAM[1] >> 6 & 1022) + ADGRAM0;

  //   327      APPCONT = GRAM(GRAM(PHRASE(112))>>7&511)>>6&1022+ADGRAM0

  APPCONT = ((unsigned int)GRAM[(unsigned int)GRAM[PHRASE[3]] >> 7 & 511] >> 6 & 1022) + ADGRAM0;

  //   328      DLIM = ADDR(DICT(1));  DBOUND = ADDR(DICT(4000))

  DLIM = _imp_ADDR(/*?*/ &DICT[0]);
  DBOUND = _imp_ADDR(/*?*/ &DICT[3999]);

  //   329      FPOS = ADDR(PERM(1))-1;  FMAX = ADDR(PERM(518))

  FPOS = _imp_ADDR(/*?*/ &PERM[0]) - 1;
  FMAX = _imp_ADDR(/*?*/ &PERM[517]);

  //   330      %CYCLE I = 1,1,54

  // %for I = 1, 1, 54 %cycle
  {
    I = 0;
  L_0005:
    if (I == 54) goto L_0006;
    I += 1;

    //   331         SYMCODE = 0

    SYMCODE = 0;

    //   332         CODE ATOM;  %MONITOR %AND %STOP %IF ATOM # IDENT

    CODEATOM();
    if (ATOM == 1) goto L_0007;
      /*_imp_monitor(__LINE__, __FILE__, PRETTY_FUNCTION);*/
    _imp_stop(0);
  L_0007:;

  //   333         INTEGER(DLIM) = BYTEINTEGER(FPOS+1)<<8+BYTEINTEGER(FPOS+2)

    *_imp_INTEGER(DLIM) = (*_imp_BYTEINTEGER(FPOS + 1) << 8) + *_imp_BYTEINTEGER(FPOS + 2);

    //   334         FPOS = FPOS+2

    FPOS = FPOS + 2;

    //   335         INTEGER(DLIM+4) = 0

    *_imp_INTEGER(DLIM + 4) = 0;

    //   336         INTEGER(DLIM+8) = HEAD;  HEAD = DLIM

    *_imp_INTEGER(DLIM + 8) = *HEAD;
    *HEAD = DLIM;

    //   337         DLIM = NEWDLIM

    DLIM = NEWDLIM;

    //   338      %REPEAT

    goto L_0005;
  }

L_0006:;

//   339      C_LOCAL = DLIM

  C.LOCAL = DLIM;

  //   340      FPOS = FSTART-1;  FMAX = FPOS+FSIZE

  FPOS = FSTART - 1;
  FMAX = FPOS + FSIZE;

  //   341      SYMCODE = 0

  SYMCODE = 0;

  //   342  L1: ->ENDED %IF FPOS >= FMAX

U_1000:;
  if (FPOS < FMAX) goto L_0008;
  goto U_1001;
L_0008:;

//   343      LINEBASE = FPOS;  LINE = NEXTLINE

  LINEBASE = FPOS;
  LINE = NEXTLINE;

  //   344  L3: ATOM = JUMP;  !FOR NUMERIC LABEL DETECTION

U_1002:;
  ATOM = 15;

  //   345      SKIPMIN = SKIP1MIN;  !TO IGNORE NULL STATEMENTS AND COMMENTS

  SKIPMIN = 86;

  //   346      CODE ATOM

  CODEATOM();

  //   347      SKIPMIN = NLCODE

  SKIPMIN = 127;

  //   348      STATS = STATS+1

  STATS = STATS + 1;

  //   349      EXTIND = 0;  DECLTYPE = 0

  EXTIND = 0;
  DECLTYPE = 0;

  //   350      CONSTCOUNT = 0;  DIMCOUNT = 0

  CONSTCOUNT = 0;
  DIMCOUNT = 0;

  //   351      NP = 51

  NP = 51;

  //   352      LINKMAX = 1;  LINK(1) = LINK1;    !FOR GRATUITOUS PHRASE EXIT

  LINKMAX = 1;
  LINK[0] = LINK1;

  //   353      I = GRAM(INITBASE+ATOM)

  I = GRAM[472 + ATOM];

  //   354      ->ERR %IF I = 0

  if (I != 0) goto L_0009;
  goto U_1003;
L_0009:;

//   355      G = I>>6&1022+ADGRAM0

  G = ((unsigned int)I >> 6 & 1022) + ADGRAM0;

  //   356      ->A(ATOM)

  A_line = __LINE__;
  A_file = __FILE__;
  A_index = ATOM;
  goto case_A_dispatch;

  //   357  A(1): !IDENT

case_A_1:;

//   358  A(6): !OP3

case_A_6:;

//   359  A(9): !EQ

case_A_9:;

//   360  A(13): !NL

case_A_13:;

//   361  A(25): !COLON

case_A_25:;

//   362      I = SHORTINTEGER(G); G = I>>6&1022+ADGRAM0

  I = *_imp_SHORTINTEGER(G);
  G = ((unsigned int)I >> 6 & 1022) + ADGRAM0;

  //   363      ->A(I&127)

  A_line = __LINE__;
  A_file = __FILE__;
  A_index = I & 127;
  goto case_A_dispatch;

  //   364  A(10): A(11): A(12): A(15): A(18): A(19): A(20):

case_A_10:;
case_A_11:;
case_A_12:;
case_A_15:;
case_A_18:;
case_A_19:;
case_A_20:;

//   365  A(21): A(23): A(27): A(37):

case_A_21:;
case_A_23:;
case_A_27:;
case_A_37:;

//   366  A(43): A(44): A(45):

case_A_43:;
case_A_44:;
case_A_45:;

//   367  A(47): A(48): A(50): A(57): A(65):

case_A_47:;
case_A_48:;
case_A_50:;
case_A_57:;
case_A_65:;

//   368  CODE:

U_1004:;

//   369      CODE ATOM

  CODEATOM();

  //   370  ON:

U_1005:;

//   371  REP:%CYCLE

U_1006:;
L_000B:;

//   372  !     LOOPS = LOOPS+1
//   373         CLASS = SHORTINTEGER(G)&127

  CLASS = *_imp_SHORTINTEGER(G) & 127;

  //   374         %EXIT %IF CLASS >= 60 %OR CLASS = ATOM

  if (CLASS >= 60) goto L_000C;
  if (CLASS != ATOM) goto L_000D;
L_000C:;
  goto L_000E;
L_000D:;

//   375         G = G+2

  G = G + 2;

  //   376      %REPEAT

  goto L_000B;
L_000E:;

//   377      G = SHORTINTEGER(G)>>6&1022+ADGRAM0

  G = ((unsigned int)*_imp_SHORTINTEGER(G) >> 6 & 1022) + ADGRAM0;

  //   378      ->A(CLASS)

  A_line = __LINE__;
  A_file = __FILE__;
  A_index = CLASS;
  goto case_A_dispatch;

  //   379  A(109): A(110): A(111): A(113): A(114):

case_A_109:;
case_A_110:;
case_A_111:;
case_A_113:;
case_A_114:;

//   380  A(115): A(116): A(117): A(118): A(119):

case_A_115:;
case_A_116:;
case_A_117:;
case_A_118:;
case_A_119:;

//   381  A(120): A(121): A(122): A(123): A(124):

case_A_120:;
case_A_121:;
case_A_122:;
case_A_123:;
case_A_124:;

//   382  A(125): A(126):

case_A_125:;
case_A_126:;

//   383  ENTER:

U_1007:;

//   384      LINKMAX = LINKMAX+1;  ->ERR %IF LINKMAX > 20

  LINKMAX = LINKMAX + 1;
  if (LINKMAX <= 20) goto L_000F;
  goto U_1003;
L_000F:;

//   385      LINK(LINKMAX) = G

  LINK[LINKMAX - 1] = G;

  //   386      G = PHRASE(CLASS)<<1+ADGRAM0

  G = (PHRASE[CLASS - 109] << 1) + ADGRAM0;

  //   387      ->REP

  goto U_1006;

  //   388  A(66):

case_A_66:;

//   389  EXIT:

U_1008:;

//   390      G = LINK(LINKMAX);  LINKMAX = LINKMAX-1

  G = LINK[LINKMAX - 1];
  LINKMAX = LINKMAX - 1;

  //   391      ->REP

  goto U_1006;

  //   392
  //   393  A(67): !ALT (ALTERNATIVE PHRASE RECOGNISED)

case_A_67:;

//   394      I = SHORTINTEGER(LINK(LINKMAX));  LINKMAX = LINKMAX-1

  I = *_imp_SHORTINTEGER(LINK[LINKMAX - 1]);
  LINKMAX = LINKMAX - 1;

  //   395      ->ERR %IF I&127 # 0;  !NO ALTERNATIVE

  if (I & 127 == 0) goto L_0010;
  goto U_1003;
L_0010:;

//   396      G = I>>6&1022+ADGRAM0

  G = ((unsigned int)I >> 6 & 1022) + ADGRAM0;

  //   397      ->ON

  goto U_1005;

  //   398  A(68): !BREAK (TERMINATOR WITHIN CONST LIST)

case_A_68:;

//   399      REPORT(FAULTNUM) %IF FAULTNUM >= 0

  if (FAULTNUM < 0) goto L_0011;
  REPORT(FAULTNUM);
L_0011:;

//   400      %IF ATOMTYPE = 0 %START;  !NL

  if (ATOMTYPE != 0) goto L_0012;

    //   401         LINEBASE = FPOS;  LINE = NEXTLINE

  LINEBASE = FPOS;
  LINE = NEXTLINE;

  //   402      %FINISH

L_0012:;

//   403      ->CODE

  goto U_1004;

  //   404
  //   405  UNKNOWN:

U_1009:;

//   406      %WHILE DPOS < 0 %CYCLE

L_0013:;
  if (DPOS >= 0) goto L_0014;

    //   407         ->IGNORE %IF STRING(-DPOS+4) = STRING(DLIM+12)

  if (_imp_strcmp((_imp_string *)_imp_STRING(-DPOS + 4), (_imp_string *)_imp_STRING(DLIM + 12)) != 0) goto L_0015;

  goto U_100A;
L_0015:;

//   408         DPOS = INTEGER(-DPOS)

  DPOS = *_imp_INTEGER(-DPOS);

  //   409      %REPEAT

  goto L_0013;
L_0014:;

//   410      FAULT(2)

  FAULT(2);

  //   411      %CYCLE

L_0016:;

//   412         DBOUND = DBOUND-4;  NEWDLIM = NEWDLIM-4

  DBOUND = DBOUND - 4;
  NEWDLIM = NEWDLIM - 4;

  //   413         %EXIT %IF NEWDLIM = DLIM+8

  if (NEWDLIM != DLIM + 8) goto L_0017;
  goto L_0018;
L_0017:;

//   414         INTEGER(DBOUND) = INTEGER(NEWDLIM)

  *_imp_INTEGER(DBOUND) = *_imp_INTEGER(NEWDLIM);

  //   415      %REPEAT

  goto L_0016;
L_0018:;

//   416      HEAD == INTEGER(HEAD+8) %WHILE HEAD > 0

L_0019:;
  if (*HEAD <= 0) goto L_001A;
  HEAD = (int *)_imp_INTEGER(*HEAD + 8);
  goto L_0019;
L_001A:;

//   417      INTEGER(DBOUND) = HEAD;  HEAD = -DBOUND

  *_imp_INTEGER(DBOUND) = *HEAD;
  *HEAD = -DBOUND;

  //   418      ->IGNORE

  goto U_100A;

  //   419  MODERR:

U_100B:;

//   420      FAULT(3)

  FAULT(3);

  //   421      ->IGNORE

  goto U_100A;

  //   422  A(0): A(64):

case_A_0:;
case_A_64:;

//   423  ERR:FAULTNUM = 0;  FAULTNUM = ATOMTYPE %IF ATOM = 0

U_1003:;
  FAULTNUM = 0;
  if (ATOM != 0) goto L_001B;
  FAULTNUM = ATOMTYPE;
L_001B:;

//   424      ->DISASTER %IF FAULTNUM = 99

  if (FAULTNUM != 99) goto L_001C;
  goto U_100C;
L_001C:;

//   425      FAULTPOS = FPOS1

  FAULTPOS = FPOS1;

  //   426  IGNORE:

U_100A:;

//   427      I=ATOM %AND CODE ATOM %WHILE ATOM # TERMINATOR

L_001D:;
  if (ATOM == 13) goto L_001E;
  I = ATOM;
  CODEATOM();
  goto L_001D;
L_001E:;

//   428      C_STACK = C_STACK<<2+3 %IF I = START

  if (I != 53) goto L_001F;
  C.STACK = (C.STACK << 2) + 3;
L_001F:;

//   429      C_STACK = C_STACK<<2+2 %IF I = CYCLE

  if (I != 54) goto L_0020;
  C.STACK = (C.STACK << 2) + 2;
L_0020:;

//   430      REPORT(FAULTNUM) %IF FAULTNUM >= 0

  if (FAULTNUM < 0) goto L_0021;
  REPORT(FAULTNUM);
L_0021:;

//   431      %WHILE I = COMMA %AND ATOMTYPE = 0 %CYCLE

L_0022:;
  if (I != 10) goto L_0023;
  if (ATOMTYPE != 0) goto L_0023;

    //   432         I=ATOM %AND CODE ATOM %UNTIL ATOM = TERMINATOR

L_0024:;
  I = ATOM;
  CODEATOM();
  if (ATOM == 13) goto L_0025;
  goto L_0024;
L_0025:;

//   433      %REPEAT

  goto L_0022;
L_0023:;

//   434  A(69): !FIN

case_A_69:;

//   435  FIN:REPORT(FAULTNUM) %IF FAULTNUM >= 0

U_100D:;
  if (FAULTNUM < 0) goto L_0026;
  REPORT(FAULTNUM);
L_0026:;

//   436      %IF C_BTYPE&1 # 0 %START;  !PSEUDO BLOCK ENTRY FOR SPEC

  if (C.BTYPE & 1 == 0) goto L_0027;

    //   437         DLIM = C_LOCAL

  DLIM = C.LOCAL;

  //   438         C = HOLD(LEVEL);  LEVEL = LEVEL-1

  C = HOLD[LEVEL - 1];
  LEVEL = LEVEL - 1;

  //   439      %FINISH

L_0027:;

//   440      ->L3 %IF ATOMTYPE # 0;  !COLON OR SEMI-COLON

  if (ATOMTYPE == 0) goto L_0028;
  goto U_1002;
L_0028:;

//   441      ->L1;  !NEWLINE

  goto U_1000;

  //   442  DISASTER:

U_100C:;

//   443      PRINT STRING("** SPACE EXHAUSTED AT LINE");  WRITE(NEXTLINE,1)

  _imp_PRINTSTRING(_imp_str_literal("** SPACE EXHAUSTED AT LINE"));
  _imp_WRITE(NEXTLINE, 1);

  //   444      NEWLINE

  _imp_NEWLINE();

  //   445      %RETURN

  return;

  //   446
  //   447  A(74):

case_A_74:;

//   448  NAPP:

U_100E:;

//   449      -> ON %IF TYPE&APPMASK = 0

  if (TYPE & 65280 != 0) goto L_0029;
  goto U_1005;
L_0029:;

//   450      ->ERR

  goto U_1003;

  //   451  ER20:

U_100F:;

//   452      FAULT(20)

  FAULT(20);

  //   453      ->NAPP

  goto U_100E;

  //   454  ER22:

U_1010:;

//   455      FAULT(22)

  FAULT(22);

  //   456      ->NAPP

  goto U_100E;

  //   457
  //   458  A(22): !PREC

case_A_22:;

//   459      PRECISION = ATOMTYPE

  PRECISION = ATOMTYPE;

  //   460      ->CODE

  goto U_1004;

  //   461  A(38): !EXTERNAL

case_A_38:;

//   462  A(42): !SYSTEM,DYNAMIC

case_A_42:;

//   463      EXTIND = 1

  EXTIND = 1;

  //   464      ->CODE

  goto U_1004;

  //   465  A(70): !RESET

case_A_70:;

//   466      DECLTYPE = 0

  DECLTYPE = 0;

  //   467      ->ON

  goto U_1005;

  //   468  A(36): !RECORD

case_A_36:;

//   469      RECIDENTS = DLIM

  RECIDENTS = DLIM;

  //   470  A(29): !REG

case_A_29:;

//   471  A(30): !SWITCH

case_A_30:;

//   472  A(31): !NTYPE

case_A_31:;

//   473  A(32): !OWN

case_A_32:;

//   474  A(33): !ARRAY

case_A_33:;

//   475  A(34): !STRING

case_A_34:;

//   476  A(35): !NAME

case_A_35:;

//   477  A(39): !FM

case_A_39:;

//   478  A(40): !ROUTINE

case_A_40:;

//   479  A(41): !SPEC

case_A_41:;

//   480      DECLTYPE = DECLTYPE!!ATOMTYPE

  DECLTYPE = DECLTYPE ^ ATOMTYPE;

  //   481      DECLTYPE = DECLTYPE!PRECISION %IF DECLTYPE&X'F0' = X'10'

  if (DECLTYPE & 240 != 16) goto L_002A;
  DECLTYPE = DECLTYPE | PRECISION;
L_002A:;

//   482      IDENTS = DLIM

  IDENTS = DLIM;

  //   483      MODES = \0;      !FOR SPEC LOOKS

  MODES = (~0);

  //   484      ->CODE

  goto U_1004;

  //   485  A(75): !NOTYPE

case_A_75:;

//   486      DECLTYPE = X'F9';         ! '?' VAR

  DECLTYPE = 249;

  //   487      ->ON

  goto U_1005;

  //   488  A(78): !IDENT: DC (DECLARE RECORD COMPONENT)

case_A_78:;

//   489      HEAD == INTEGER(FIDENTPOS+4);  DPOS = HEAD;  !ALTER SEARCH LIST

  HEAD = (int *)_imp_INTEGER(FIDENTPOS + 4);
  DPOS = *HEAD;

  //   490  A(76): !IDENT: D (DECLARE)

case_A_76:;

//   491  D1: ->ADD %IF C_BTYPE&1 # 0;  !WITHIN SPEC PARAMS

U_1011:;
  if (C.BTYPE & 1 == 0) goto L_002B;
  goto U_1012;
L_002B:;

//   492  D2: %CYCLE

U_1013:;
L_002C:;

//   493         ->NEW %IF DPOS < C_LOCAL

  if (DPOS >= C.LOCAL) goto L_002D;
  goto U_1014;
L_002D:;

//   494         %EXIT %IF STRING(DPOS+12) = STRING(DLIM+12)

  if (_imp_strcmp((_imp_string *)_imp_STRING(DPOS + 12), (_imp_string *)_imp_STRING(DLIM + 12)) != 0) goto L_002E;

  goto L_002F;
L_002E:;

//   495         DPOS = INTEGER(DPOS+8)

  DPOS = *_imp_INTEGER(DPOS + 8);

  //   496      %REPEAT

  goto L_002C;
L_002F:;

//   497      ->D5 %IF INTEGER(DPOS)&X'FF'-1 = DECLTYPE %C

  if ((*_imp_INTEGER(DPOS) & 255) - 1 != DECLTYPE) goto L_0030;
  if (DECLTYPE & 6 == 0) goto L_0030;
  if (DECLTYPE & 1 != 0) goto L_0030;
  goto U_1015;
L_0030:;

//   498+       %AND DECLTYPE&6 # 0 %AND DECLTYPE&1 = 0
//   499      FAULT(5);  !DUPLICATE

  FAULT(5);

  //   500  NEW:INTEGER(DLIM+8) = HEAD;  HEAD = DLIM

U_1014:;
  *_imp_INTEGER(DLIM + 8) = *HEAD;
  *HEAD = DLIM;

  //   501  ADD:INTEGER(DLIM) = DECLTYPE;  INTEGER(DLIM+4) = 0

U_1012:;
  *_imp_INTEGER(DLIM) = DECLTYPE;
  *_imp_INTEGER(DLIM + 4) = 0;

  //   502      DLIM = NEWDLIM

  DLIM = NEWDLIM;

  //   503      ->CODE

  goto U_1004;

  //   504     !PROCEDURE BODY AFTER SPEC, LABEL AFTER JUMP
  //   505  D5: INTEGER(DPOS) = DECLTYPE %IF DECLTYPE = LAB

U_1015:;
  if (DECLTYPE != 12) goto L_0031;
  *_imp_INTEGER(DPOS) = DECLTYPE;
L_0031:;

//   506      IDENTS = DPOS

  IDENTS = DPOS;

  //   507      ->CODE

  goto U_1004;

  //   508  A(77): !IDENT: DF (DECLARE RECORD FORMAT)

case_A_77:;

//   509      DECLTYPE = RECFORMAT;  FIDENTPOS = DLIM

  DECLTYPE = 4;
  FIDENTPOS = DLIM;

  //   510      ->D1

  goto U_1011;

  //   511  A(2): !CONST

case_A_2:;

//   512      TYPE = ATOMTYPE;  VAL = ATOMVAL

  TYPE = ATOMTYPE;
  VAL = ATOMVAL;

  //   513      ->CODE

  goto U_1004;

  //   514  A(3): !SUB (ABSORBS FOLLOWING IDENT)

case_A_3:;

//   515      -> ERR %IF TYPE&X'FFF4' # 0 %AND TYPE # RECFORMAT;  !NOT RECORD

  if (TYPE & 65524 == 0) goto L_0032;
  if (TYPE == 4) goto L_0032;
  goto U_1003;
L_0032:;

//   516      CODE ATOM;  ->ERR %IF ATOM # IDENT

  CODEATOM();
  if (ATOM == 1) goto L_0033;
  goto U_1003;
L_0033:;

//   517      ->IGNORE %IF VAL = 0

  if (VAL != 0) goto L_0034;
  goto U_100A;
L_0034:;

//   518      DPOS = VAL;  HEAD == VAL

  DPOS = VAL;
  HEAD = (int *)/*?*/ &VAL;

  //   519  A(81): !IDENT: LOOK

case_A_81:;

//   520  LOOK:

U_1016:;

//   521      LOOKS = LOOKS+1

  LOOKS = LOOKS + 1;

  //   522      %CYCLE

L_0035:;

//   523         TIMES = TIMES+1

  TIMES = TIMES + 1;

  //   524         ->UNKNOWN %IF DPOS <= 0

  if (DPOS > 0) goto L_0036;
  goto U_1009;
L_0036:;

//   525         %EXIT %IF STRING(DPOS+12) = STRING(DLIM+12)

  if (_imp_strcmp((_imp_string *)_imp_STRING(DPOS + 12), (_imp_string *)_imp_STRING(DLIM + 12)) != 0) goto L_0037;

  goto L_0038;
L_0037:;

//   526         DPOS = INTEGER(DPOS+8)

  DPOS = *_imp_INTEGER(DPOS + 8);

  //   527      %REPEAT

  goto L_0035;
L_0038:;

//   528      TYPE = INTEGER(DPOS);  VAL = INTEGER(DPOS+4)

  TYPE = *_imp_INTEGER(DPOS);
  VAL = *_imp_INTEGER(DPOS + 4);

  //   529      ->CODE %IF MODES<<(TYPE&15) < 0

  if (MODES << (TYPE & 15) >= 0) goto L_0039;
  goto U_1004;
L_0039:;

//   530      ->MODERR

  goto U_100B;

  //   531  A(82): !IDENT: IMP1LOOK

case_A_82:;

//   532      MODES = IMP1MODES

  MODES = 1140588544;

  //   533      ->LOOK %IF BYTEINTEGER(FPOS) # ':'

  if (*_imp_BYTEINTEGER(FPOS) == 58) goto L_003A;
  goto U_1016;
L_003A:;

//   534      DECLTYPE = LAB

  DECLTYPE = 12;

  //   535      ->D2

  goto U_1013;

  //   536  A(83): !IDENT: IMPLOOK

case_A_83:;

//   537      MODES = IMPMODES

  MODES = 1139802112;

  //   538      ->LOOK

  goto U_1016;

  //   539  A(84): !IDENT: EXPLOOK

case_A_84:;

//   540      MODES = EXPMODES

  MODES = -252706816;

  //   541      ->LOOK

  goto U_1016;

  //   542  A(85): !IDENT: FLOOK

case_A_85:;

//   543      MODES = FMATMODES

  MODES = 134217728;

  //   544      ->LOOK

  goto U_1016;

  //   545  A(86): !IDENT: JLOOK

case_A_86:;

//   546      %WHILE DPOS >= C_LOCAL %CYCLE

L_003B:;
  if (DPOS < C.LOCAL) goto L_003C;

    //   547         ->JL1 %IF STRING(DPOS+12) = STRING(DLIM+12)

  if (_imp_strcmp((_imp_string *)_imp_STRING(DPOS + 12), (_imp_string *)_imp_STRING(DLIM + 12)) != 0) goto L_003D;

  goto U_1017;
L_003D:;

//   548         DPOS = INTEGER(DPOS+8)

  DPOS = *_imp_INTEGER(DPOS + 8);

  //   549      %REPEAT

  goto L_003B;
L_003C:;

//   550      INTEGER(DLIM+8) = HEAD;  HEAD = DLIM

  *_imp_INTEGER(DLIM + 8) = *HEAD;
  *HEAD = DLIM;

  //   551      INTEGER(DLIM) = JUMPLAB;  INTEGER(DLIM+4) = 0

  *_imp_INTEGER(DLIM) = 13;
  *_imp_INTEGER(DLIM + 4) = 0;

  //   552      DPOS = DLIM;  DLIM = NEWDLIM

  DPOS = DLIM;
  DLIM = NEWDLIM;

  //   553  JL1:TYPE = INTEGER(DPOS)

U_1017:;
  TYPE = *_imp_INTEGER(DPOS);

  //   554      ->CODE %IF TYPE&14 = LAB

  if (TYPE & 14 != 12) goto L_003E;
  goto U_1004;
L_003E:;

//   555      ->MODERR

  goto U_100B;

  //   556  A(79): !RECSPEC

case_A_79:;

//   557      ->MODERR %IF TYPE&X'F4' # 0 %OR VAL # 0 %OR DPOS < C_LOCAL

  if (TYPE & 244 != 0) goto L_0004;
  if (VAL != 0) goto L_0004;
  if (DPOS >= C.LOCAL) goto L_003F;
L_0004:;
  goto U_100B;
L_003F:;

//   558      RECIDENTS = -DPOS

  RECIDENTS = -DPOS;

  //   559      ->ON

  goto U_1005;

  //   560  A(88): !FSET

case_A_88:;

//   561      IDENTS = RECIDENTS

  IDENTS = RECIDENTS;

  //   562      %IF IDENTS >= 0 %THEN DEFINE(4,INTEGER(DPOS+4)) %C

  if (IDENTS < 0) goto L_0040;
  DEFINE(4, *_imp_INTEGER(DPOS + 4));
  goto L_0041;
L_0040:;
  *_imp_INTEGER(-IDENTS + 4) = *_imp_INTEGER(DPOS + 4);
L_0041:;

//   563+     %ELSE INTEGER(-IDENTS+4) = INTEGER(DPOS+4)
//   564      ->ON

  goto U_1005;

  //   565  A(80):  !PROCSPEC

case_A_80:;

//   566      ->MODERR %IF TYPE&X'FF03' # FN %OR DPOS < C_LOCAL

  if (TYPE & 65283 != 2) goto L_0042;
  if (DPOS >= C.LOCAL) goto L_0043;
L_0042:;
  goto U_100B;
L_0043:;

//   567      IDENTS = DPOS

  IDENTS = DPOS;

  //   568      ->ON

  goto U_1005;

  //   569  A(72): !BEG

case_A_72:;

//   570      PIDENTPOS = IDENTS

  PIDENTPOS = IDENTS;

  //   571      LEVEL = LEVEL+1;  ->DISASTER %IF LEVEL > 12

  LEVEL = LEVEL + 1;
  if (LEVEL <= 12) goto L_0044;
  goto U_100C;
L_0044:;

//   572      HOLD(LEVEL) = C

  HOLD[LEVEL - 1] = C;

  //   573      C_BTYPE = DECLTYPE

  C.BTYPE = DECLTYPE;

  //   574      C_STACK = 0

  C.STACK = 0;

  //   575      C_LOCAL = DLIM

  C.LOCAL = DLIM;

  //   576      ->ON

  goto U_1005;

  //   577  A(89): !NL: PARSET

case_A_89:;

//   578      IDENTS = C_LOCAL;  NP = 51

  IDENTS = C.LOCAL;
  NP = 51;

  //   579      %WHILE IDENTS # DLIM %CYCLE

L_0045:;
  if (IDENTS == DLIM) goto L_0046;

    //   580         NP = NP-1;  NTYPE(NP) = INTEGER(IDENTS)

  NP = NP - 1;
  NTYPE[NP - 1] = *_imp_INTEGER(IDENTS);

  //   581         IDENTS = BYTEINTEGER(IDENTS+12)&(\3)+IDENTS+16

  IDENTS = (*_imp_BYTEINTEGER(IDENTS + 12) & (~3)) + IDENTS + 16;

  //   582      %REPEAT

  goto L_0045;
L_0046:;

//   583      I = 0

  I = 0;

  //   584      %WHILE NP # 51 %CYCLE

L_0047:;
  if (NP == 51) goto L_0048;

    //   585         J = I<<24+NTYPE(NP);  NP = NP+1

  J = (I << 24) + NTYPE[NP - 1];
  NP = NP + 1;

  //   586         I = I+1 %UNTIL I > PARMAX %OR PARTYPE(I) = J

L_0049:;
  I = I + 1;
  if (I > PARMAX) goto L_004A;
  if (PARTYPE[I] == J) goto L_004A;
  goto L_0049;
L_004A:;

//   587         %IF I > PARMAX %START

  if (I <= PARMAX) goto L_004B;

    //   588            ->DISASTER %IF I = 252

  if (I != 252) goto L_004C;
  goto U_100C;
L_004C:;

//   589            PARMAX = I

  PARMAX = I;

  //   590            PARTYPE(I) = J

  PARTYPE[I] = J;

  //   591         %FINISH

L_004B:;

//   592      %REPEAT

  goto L_0047;
L_0048:;

//   593      %IF C_BTYPE&1 = 0 %AND INTEGER(PIDENTPOS)&1 # 0 %START

  if (C.BTYPE & 1 != 0) goto L_004D;
  if (*_imp_INTEGER(PIDENTPOS) & 1 == 0) goto L_004D;

    //   594         FAULT(18) %IF BYTEINTEGER(PIDENTPOS+2) # I

  if (*_imp_BYTEINTEGER(PIDENTPOS + 2) == I) goto L_004E;
  FAULT(18);
L_004E:;

//   595         INTEGER(PIDENTPOS) = C_BTYPE

  *_imp_INTEGER(PIDENTPOS) = C.BTYPE;

  //   596      %FINISH

L_004D:;

//   597      BYTEINTEGER(PIDENTPOS+2) = I

  *_imp_BYTEINTEGER(PIDENTPOS + 2) = I;

  //   598      INTEGER(PIDENTPOS) = INTEGER(PIDENTPOS)&(\EXTIND)

  *_imp_INTEGER(PIDENTPOS) = *_imp_INTEGER(PIDENTPOS) & (~EXTIND);

  //   599      ->FIN

  goto U_100D;

  //   600  A(90): !INIT

case_A_90:;

//   601      CONSTCOUNT = CONSTCOUNT-1

  CONSTCOUNT = CONSTCOUNT - 1;

  //   602      ->ER20 %IF TYPE&15 # 0

  if (TYPE & 15 == 0) goto L_004F;
  goto U_100F;
L_004F:;

//   603      ->ER22 %IF TYPE&DECLTYPE = 0

  if (TYPE & DECLTYPE != 0) goto L_0050;
  goto U_1010;
L_0050:;

//   604      !RANGE CHECK
//   605      DEFINE(4,VAL) %IF DECLTYPE&15 = 0

  if (DECLTYPE & 15 != 0) goto L_0051;
  DEFINE(4, VAL);
L_0051:;

//   606      ->ON

  goto U_1005;

  //   607  A(91): !NL: INITFIN

case_A_91:;

//   608      FAULT(21) %IF CONSTCOUNT # 0 %AND CONSTCOUNT < 1000000

  if (CONSTCOUNT == 0) goto L_0052;
  if (CONSTCOUNT >= 1000000) goto L_0052;
  FAULT(21);
L_0052:;

//   609      ->FIN

  goto U_100D;

  //   610  A(92): !DIMSET

case_A_92:;

//   611      DEFINE(0,DIMCOUNT)

  DEFINE(0, DIMCOUNT);

  //   612      DIMCOUNT = 0

  DIMCOUNT = 0;

  //   613      ->ON

  goto U_1005;

  //   614  A(93): !COLON: COUNT

case_A_93:;

//   615      %IF DIMCOUNT = 6 %THEN FAULT(23) %ELSE DIMCOUNT = DIMCOUNT+1

  if (DIMCOUNT != 6) goto L_0053;
  FAULT(23);
  goto L_0054;
L_0053:;
  DIMCOUNT = DIMCOUNT + 1;
L_0054:;

//   616      ->CODE

  goto U_1004;

  //   617  A(94): !REP

case_A_94:;

//   618      CONSTCOUNT = CONSTCOUNT-VAL+1

  CONSTCOUNT = CONSTCOUNT - VAL + 1;

  //   619      ->ON

  goto U_1005;

  //   620  A(95): !LITINT

case_A_95:;

//   621      ->ER20 %IF TYPE&15 # 0

  if (TYPE & 15 == 0) goto L_0055;
  goto U_100F;
L_0055:;

//   622  A(96): !INT

case_A_96:;

//   623      ->ER22 %IF TYPE&INTBIT = 0

  if (TYPE & 64 != 0) goto L_0056;
  goto U_1010;
L_0056:;

//   624      ->NAPP

  goto U_100E;

  //   625  A(97): !STR

case_A_97:;

//   626      ->ER22 %IF TYPE&STRINGBIT = 0

  if (TYPE & 128 != 0) goto L_0057;
  goto U_1010;
L_0057:;

//   627      ->NAPP

  goto U_100E;

  //   628  A(98): !SIZESET

case_A_98:;

//   629      STRINGSIZE = VAL

  STRINGSIZE = VAL;

  //   630      ->ON %IF 0 < VAL <= 255

  {
// Double-sided test on VAL (Part I)
    int tmp;
    if (0 >= (tmp = VAL)) goto L_0058;
// Double-sided test on VAL (Part II)
    if (tmp > 255) goto L_0058;
  }
  goto U_1005;
L_0058:;

//   631      FAULT(19);  STRINGSIZE = 255

  FAULT(19);
  STRINGSIZE = 255;

  //   632      ->ON

  goto U_1005;

  //   633  A(99): !CBSET

case_A_99:;

//   634      LASTVAL = NVAL(NP);  NP = NP+1

  LASTVAL = NVAL[NP - 1];
  NP = NP + 1;

  //   635      ->CBERR %UNLESS -32768 <= LASTVAL <= 32767

  {
// Double-sided test on LASTVAL (Part I)
    int tmp;
    if (-32768 > (tmp = LASTVAL)) goto L_0059;
// Double-sided test on LASTVAL (Part II)
    if (tmp <= 32767) goto L_005A;
  }
L_0059:;
  goto U_1018;
L_005A:;

//   636      CONSTCOUNT = VAL-LASTVAL+1

  CONSTCOUNT = VAL - LASTVAL + 1;

  //   637      ->CBERR %UNLESS 0 < CONSTCOUNT <= 32767

  {
// Double-sided test on CONSTCOUNT (Part I)
    int tmp;
    if (0 >= (tmp = CONSTCOUNT)) goto L_005B;
// Double-sided test on CONSTCOUNT (Part II)
    if (tmp <= 32767) goto L_005C;
  }
L_005B:;
  goto U_1018;
L_005C:;

//   638      %IF DECLTYPE = SWITCH %START

  if (DECLTYPE != 268) goto L_005D;

    //   639         {%UNTIL IDENTS = DLIM} %CYCLE

L_005E:;

//   640            J = DBOUND

  J = DBOUND;

  //   641            DBOUND = J-(CONSTCOUNT+63)>>5<<2

  DBOUND = J - ((unsigned int)CONSTCOUNT + 63 >> 5 << 2);

  //   642            ->DISASTER %IF DBOUND <= DLIM

  if (DBOUND > DLIM) goto L_005F;
  goto U_100C;
L_005F:;

//   643            INTEGER(IDENTS+4) = DBOUND

  *_imp_INTEGER(IDENTS + 4) = DBOUND;

  //   644            INTEGER(DBOUND) = LASTVAL<<16+CONSTCOUNT

  *_imp_INTEGER(DBOUND) = (LASTVAL << 16) + CONSTCOUNT;

  //   645            %CYCLE

L_0060:;

//   646               J = J-4

  J = J - 4;

  //   647               %EXIT %IF J = DBOUND

  if (J != DBOUND) goto L_0061;
  goto L_0062;
L_0061:;

//   648               INTEGER(J) = 0

  *_imp_INTEGER(J) = 0;

  //   649            %REPEAT

  goto L_0060;
L_0062:;

//   650            IDENTS = BYTEINTEGER(IDENTS+12)&(\3)+IDENTS+16

  IDENTS = (*_imp_BYTEINTEGER(IDENTS + 12) & (~3)) + IDENTS + 16;

  //   651         %REPEAT %UNTIL IDENTS = DLIM

  if (IDENTS == DLIM) goto L_0063;
  goto L_005E;
L_0063:;

//   652      %FINISH

L_005D:;

//   653  CB1:IDENTS = DLIM

U_1019:;
  IDENTS = DLIM;

  //   654      ->ON

  goto U_1005;

  //   655  CBERR:

U_1018:;

//   656      FAULT(23);  CONSTCOUNT = 2000000

  FAULT(23);
  CONSTCOUNT = 2000000;

  //   657      ->CB1

  goto U_1019;

  //   658  A(100): !COLON: LAB

case_A_100:;

//   659      ->FIN %IF DECLTYPE # 0;  !SIMPLE LABEL

  if (DECLTYPE == 0) goto L_0064;
  goto U_100D;
L_0064:;

//   660      ->ERR %IF TYPE # JUMPLAB;  !IE SWITCH + APP

  if (TYPE == 13) goto L_0065;
  goto U_1003;
L_0065:;

//   661      FAULT(20) %AND ->FIN %IF LASTTYPE&15 # 0

  if (LASTTYPE & 15 == 0) goto L_0066;
  FAULT(20);
  goto U_100D;
L_0066:;

//   662      ->FIN %IF VAL = 0

  if (VAL != 0) goto L_0067;
  goto U_100D;
L_0067:;

//   663      J = LASTVAL-SHORTINTEGER(VAL)

  J = LASTVAL - *_imp_SHORTINTEGER(VAL);

  //   664      FAULT(19) %AND ->FIN %UNLESS 0 <= J < SHORTINTEGER(VAL+2)

  {
// Double-sided test on J (Part I)
    int tmp;
    if (0 > (tmp = J)) goto L_0068;
// Double-sided test on J (Part II)
    if (tmp < *_imp_SHORTINTEGER(VAL + 2)) goto L_0069;
  }
L_0068:;
  FAULT(19);
  goto U_100D;
L_0069:;

//   665      I = VAL+J>>5<<2;  J = X'80000000'>>(J&31)

  I = VAL + ((unsigned int)J >> 5 << 2);
  J = (unsigned int)(-2147483648) >> (J & 31);

  //   666      FAULT(16) %IF INTEGER(I+4)&J # 0

  if (*_imp_INTEGER(I + 4) & J == 0) goto L_006A;
  FAULT(16);
L_006A:;

//   667      INTEGER(I+4) = INTEGER(I+4)!J

  *_imp_INTEGER(I + 4) = *_imp_INTEGER(I + 4) | J;

  //   668      ->FIN

  goto U_100D;

  //   669  A(101): !OP3: DOT

case_A_101:;

//   670      ->ERR %IF ATOMTYPE # STRINGBIT;  !IE OP3 # '.'

  if (ATOMTYPE == 128) goto L_006B;
  goto U_1003;
L_006B:;

//   671  A(60): !FOR

case_A_60:;

//   672      MODES = DESTMODES

  MODES = 15728640;

  //   673      ->CODE

  goto U_1004;

  //   674  A(73): !RESOL

case_A_73:;

//   675      ->ER22 %IF TYPE&STRINGBIT = 0

  if (TYPE & 128 != 0) goto L_006C;
  goto U_1010;
L_006C:;

//   676      MODES = DESTMODES

  MODES = 15728640;

  //   677      ->ON

  goto U_1005;

  //   678  A(102): !OP3: SIGN

case_A_102:;

//   679      ->ERR %IF ATOMTYPE&3 = 0;  !IE OP3 # '+', '-', '!'

  if (ATOMTYPE & 3 != 0) goto L_006D;
  goto U_1003;
L_006D:;

//   680      TYPE = ATOMTYPE;  VAL = 0

  TYPE = ATOMTYPE;
  VAL = 0;

  //   681      ->OP1

  goto U_101A;

  //   682  A(7):  !UOP

case_A_7:;

//   683      TYPE = ATOMTYPE;  VAL = -1

  TYPE = ATOMTYPE;
  VAL = -1;

  //   684      ->OP1

  goto U_101A;

  //   685  A(8):  !COP

case_A_8:;

//   686  A(4): !OP1

case_A_4:;

//   687  A(5): !OP2

case_A_5:;

//   688  A(104):!OP3 OR EQ: OP

case_A_104:;

//   689      ->ERR %IF TYPE&APPMASK # 0

  if (TYPE & 65280 == 0) goto L_006E;
  goto U_1003;
L_006E:;

//   690      %IF TYPE&X'FF4F' = INTBIT %THEN TYPE=TYPE!15 %ELSE TYPE=TYPE&(\15)

  if (TYPE & 65359 != 64) goto L_006F;
  TYPE = TYPE | 15;
  goto L_0070;
L_006F:;
  TYPE = TYPE & (~15);
L_0070:;

//   691      TYPE = TYPE!REALBITS %IF TYPE&NUMBITS # 0

  if (TYPE & 112 == 0) goto L_0071;
  TYPE = TYPE | 48;
L_0071:;

//   692  OP1:NP = NP-1;  NTYPE(NP) = TYPE&ATOMTYPE;  NVAL(NP) = VAL

U_101A:;
  NP = NP - 1;
  NTYPE[NP - 1] = TYPE & ATOMTYPE;
  NVAL[NP - 1] = VAL;

  //   693      ->CODE

  goto U_1004;

  //   694  A(105): !EVAL

case_A_105:;

//   695      ->ERR %IF TYPE&APPMASK # 0

  if (TYPE & 65280 == 0) goto L_0072;
  goto U_1003;
L_0072:;

//   696      TYPE = TYPE!REALBITS %IF TYPE&NUMBITS # 0

  if (TYPE & 112 == 0) goto L_0073;
  TYPE = TYPE | 48;
L_0073:;

//   697      I = NTYPE(NP);  NP = NP+1

  I = NTYPE[NP - 1];
  NP = NP + 1;

  //   698      J = I&TYPE&X'F0'

  J = I & TYPE & 240;

  //   699      ->ER22 %IF J = 0

  if (J != 0) goto L_0074;
  goto U_1010;
L_0074:;

//   700      ->X(I&15) %IF TYPE&X'FF4F' = INTBIT

  if (TYPE & 65359 != 64) goto L_0075;
  X_line = __LINE__;
  X_file = __FILE__;
  X_index = I & 15;
  goto case_X_dispatch;
L_0075:;

//   701  X(0):

case_X_0:;

//   702      TYPE = J+EXP

  TYPE = J + 1;

  //   703      ->ON

  goto U_1005;

  //   704  X(1): VAL = NVAL(NP-1)+VAL

case_X_1:;
  VAL = NVAL[NP - 1 - 1] + VAL;

  //   705  X1: TYPE = NUMBITS

U_101B:;
  TYPE = 112;

  //   706      ->ON

  goto U_1005;

  //   707  X(2): VAL = NVAL(NP-1)-VAL

case_X_2:;
  VAL = NVAL[NP - 1 - 1] - VAL;

  //   708      ->X1

  goto U_101B;

  //   709  X(3): VAL = NVAL(NP-1)!VAL

case_X_3:;
  VAL = NVAL[NP - 1 - 1] | VAL;

  //   710      ->X1

  goto U_101B;

  //   711  X(4): VAL = NVAL(NP-1)!!VAL

case_X_4:;
  VAL = NVAL[NP - 1 - 1] ^ VAL;

  //   712      ->X1

  goto U_101B;

  //   713  A(103): !BAR (FIDDLE FOR MOD-SIGN)

case_A_103:;

//   714      ->ON %UNLESS NTYPE(NP) = X'43'

  if (NTYPE[NP - 1] == 67) goto L_0077;
  goto U_1005;
L_0077:;

//   715      ->ERR %UNLESS ATOM = OP3 %AND ATOMTYPE = X'43'

  if (ATOM != 6) goto L_0078;
  if (ATOMTYPE == 67) goto L_0079;
L_0078:;
  goto U_1003;
L_0079:;

//   716      NP = NP+1;  CODE ATOM

  NP = NP + 1;
  CODEATOM();

  //   717      ->EXIT

  goto U_1008;

  //   718  A(106): !EQ: ASSOP

case_A_106:;

//   719      ->ERR %IF TYPE&X'FF0C' # 8

  if (TYPE & 65292 == 8) goto L_007A;
  goto U_1003;
L_007A:;

//   720  SAVE:

U_101C:;

//   721      NP = NP-1;  NTYPE(NP) = TYPE;  NVAL(NP) = VAL

  NP = NP - 1;
  NTYPE[NP - 1] = TYPE;
  NVAL[NP - 1] = VAL;

  //   722      ->CODE

  goto U_1004;

  //   723  A(14): !EQEQ

case_A_14:;

//   724      MODES = ADRMODES

  MODES = 1089470464;

  //   725      ->SAVE %IF TYPE&15 = REF

  if (TYPE & 15 != 8) goto L_007B;
  goto U_101C;
L_007B:;

//   726      ->ERR

  goto U_1003;

  //   727  A(107): !ASS

case_A_107:;

//   728      I = NTYPE(NP);  NP = NP+1

  I = NTYPE[NP - 1];
  NP = NP + 1;

  //   729  AS1:%IF I&TYPE&X'C0' = 0 %START

U_101D:;
  if (I & TYPE & 192 != 0) goto L_007C;

    //   730         I = I&X'F0'

  I = I & 240;

  //   731         %IF I = 0 %START;  !RECORD

  if (I != 0) goto L_007D;

    //   732            ->ER22 %UNLESS TYPE&X'F0' = 0 %OR %C

  if (TYPE & 240 == 0) goto L_007E;
  if (TYPE & 65359 != 64) goto L_007F;
  if (VAL == 0) goto L_007E;
L_007F:;
  goto U_1010;
L_007E:;

//   733+             (TYPE&X'FF4F'=INTBIT %AND VAL=0)
//   734         %FINISH %ELSE %START

  goto L_0080;
L_007D:;

//   735            ->ER22 %UNLESS I <= X'30' %AND TYPE&NUMBITS # 0

  if (I > 48) goto L_0081;
  if (TYPE & 112 != 0) goto L_0082;
L_0081:;
  goto U_1010;
L_0082:;

//   736         %FINISH

L_0080:;

//   737      %FINISH

L_007C:;

//   738      ->NAPP

  goto U_100E;

  //   739  A(108): !REFASS

case_A_108:;

//   740      I = NTYPE(NP);  NP = NP+1

  I = NTYPE[NP - 1];
  NP = NP + 1;

  //   741  RA1:FAULT(22) %IF (I!!TYPE)&X'F0' # 0 %C

U_101E:;
  if ((I ^ TYPE) & 240 == 0) goto L_0083;
  if (I & 240 == 240) goto L_0083;
  if (TYPE & 240 == 240) goto L_0083;
  FAULT(22);
L_0083:;

//   742+       %AND I&X'F0' # X'F0' %AND TYPE&X'F0' # X'F0'
//   743      ->NAPP %IF I&APPMASK = 0;  !SCALAR

  if (I & 65280 != 0) goto L_0084;
  goto U_100E;
L_0084:;

//   744      FAULT(22) %IF TYPE&APPMASK = 0 %OR TYPE&14 = MAP

  if (TYPE & 65280 == 0) goto L_0085;
  if (TYPE & 14 != 10) goto L_0086;
L_0085:;
  FAULT(22);
L_0086:;

//   745      ->ON

  goto U_1005;

  //   746  A(17): !RESULT

case_A_17:;

//   747      FAULT(25) %IF C_BTYPE&7 # FN

  if (C.BTYPE & 7 == 2) goto L_0087;
  FAULT(25);
L_0087:;

//   748      TYPE = C_BTYPE&X'F8';  TYPE = TYPE+VAR %IF TYPE&8 = 0

  TYPE = C.BTYPE & 248;
  if (TYPE & 8 != 0) goto L_0088;
  TYPE = TYPE + 9;
L_0088:;

//   749      VAL = 0

  VAL = 0;

  //   750      ->CODE

  goto U_1004;

  //   751  A(71): !RCALL

case_A_71:;

//   752      ->ON %IF TYPE&X'FFFC' = 4

  if (TYPE & 65532 != 4) goto L_0089;
  goto U_1005;
L_0089:;

//   753      ->ERR

  goto U_1003;

  //   754  A(112): !APP

case_A_112:;

//   755      ->ON %IF ATOM # LB

  if (ATOM == 11) goto L_008A;
  goto U_1005;
L_008A:;

//   756      LINKMAX = LINKMAX+1;  ->ERR %IF LINKMAX > 20

  LINKMAX = LINKMAX + 1;
  if (LINKMAX <= 20) goto L_008B;
  goto U_1003;
L_008B:;

//   757      LINK(LINKMAX) = G

  LINK[LINKMAX - 1] = G;

  //   758      NP = NP-1;  NVAL(NP) = VAL

  NP = NP - 1;
  NVAL[NP - 1] = VAL;

  //   759  AP: ->ERR %IF TYPE&APPMASK = 0

U_101F:;
  if (TYPE & 65280 != 0) goto L_008C;
  goto U_1003;
L_008C:;

//   760      NTYPE(NP) = TYPE

  NTYPE[NP - 1] = TYPE;

  //   761      G = APPCONT

  G = APPCONT;

  //   762      CODE ATOM

  CODEATOM();

  //   763      J = PARTYPE(TYPE>>8)&15

  J = PARTYPE[(unsigned int)TYPE >> 8] & 15;

  //   764      CLASS = 122;  !EXP

  CLASS = 122;

  //   765      ->ENTER %IF J = VAR

  if (J != 9) goto L_008D;
  goto U_1007;
L_008D:;

//   766      CLASS = 111;  MODES = ADRMODES

  CLASS = 111;
  MODES = 1089470464;

  //   767      ->ENTER %IF J = REF

  if (J != 8) goto L_008E;
  goto U_1007;
L_008E:;

//   768      MODES = X'C0000000'>>J

  MODES = (unsigned int)(-1073741824) >> J;

  //   769      ->ENTER

  goto U_1007;

  //   770  A(63): !AP

case_A_63:;

//   771      J = NTYPE(NP);  I = PARTYPE(J>>8)

  J = NTYPE[NP - 1];
  I = PARTYPE[(unsigned int)J >> 8];

  //   772      LASTTYPE = TYPE;  LASTVAL = VAL

  LASTTYPE = TYPE;
  LASTVAL = VAL;

  //   773      TYPE = I>>16+J&X'FF'

  TYPE = ((unsigned int)I >> 16) + (J & 255);

  //   774      ->AP %IF ATOM = COMMA

  if (ATOM != 10) goto L_008F;
  goto U_101F;
L_008F:;

//   775      ->ERR %IF ATOM # RB

  if (ATOM == 12) goto L_0090;
  goto U_1003;
L_0090:;

//   776      VAL = NVAL(NP);  NP = NP+1

  VAL = NVAL[NP - 1];
  NP = NP + 1;

  //   777      %IF TYPE&APPMASK # 0 %START

  if (TYPE & 65280 == 0) goto L_0091;

    //   778         TYPE = TYPE!!APPMASK

  TYPE = TYPE ^ 65280;

  //   779         ->ERR %IF TYPE&X'FE00' # 0

  if (TYPE & 65024 == 0) goto L_0092;
  goto U_1003;
L_0092:;

//   780      %FINISH

L_0091:;

//   781      TYPE = TYPE&X'FFFC'!1

  TYPE = TYPE & 65532 | 1;

  //   782      CODE ATOM

  CODEATOM();

  //   783      ->EXIT

  goto U_1008;

  //   784  A(16): !SIMP: STOP(0), RETURN(1), EXIT(2)

case_A_16:;

//   785      FAULT(25) %IF (ATOMTYPE = 1 %AND C_BTYPE&15 # ROUTINE) %C

  if (ATOMTYPE != 1) goto L_0093;
  if (C.BTYPE & 15 != 6) goto L_0094;
L_0093:;
  if (ATOMTYPE != 2) goto L_0095;
  if ((C.STACK ^ 1431655765) << 1 & C.STACK != 0) goto L_0095;
L_0094:;
  FAULT(25);
L_0095:;

//   786+           %OR (ATOMTYPE = 2 %AND (C_STACK!!X'55555555')<<1&C_STACK = 0)
//   787      ->CODE

  goto U_1004;

  //   788  A(54): !CYCLE

case_A_54:;

//   789      CONDIND = 2

  CONDIND = 2;

  //   790  A(53): !START

case_A_53:;

//   791      C_STACK = C_STACK<<2+CONDIND

  C.STACK = (C.STACK << 2) + CONDIND;

  //   792      ->CODE

  goto U_1004;

  //   793  A(55): !FINISH(1)

case_A_55:;

//   794  A(56): !REPEAT(0)

case_A_56:;

//   795      CONDIND = C_STACK&3

  CONDIND = C.STACK & 3;

  //   796      %IF CONDIND = 0 %OR (CONDIND!!ATOMTYPE)&1 # 0 %C

  if (CONDIND == 0) goto L_0096;
  if ((CONDIND ^ ATOMTYPE) & 1 == 0) goto L_0097;
L_0096:;
  FAULT(12 + ATOMTYPE);
  goto L_0098;
L_0097:;
  C.STACK = (unsigned int)C.STACK >> 2;
L_0098:;

//   797+      %THEN FAULT(12+ATOMTYPE) %C
//   798+     %ELSE C_STACK = C_STACK>>2
//   799      ->CODE

  goto U_1004;

  //   800  A(52): !ELSE(1)

case_A_52:;

//   801      FAULT(25) %IF CONDIND = 1

  if (CONDIND != 1) goto L_0099;
  FAULT(25);
L_0099:;

//   802  A(26): !CWORD(3)

case_A_26:;

//   803  A(51): !ON(1)

case_A_51:;

//   804      CONDIND = ATOMTYPE

  CONDIND = ATOMTYPE;

  //   805      ->CODE

  goto U_1004;

  //   806  A(58): !END

case_A_58:;

//   807      %IF LEVEL = 0 %OR (LEVEL=1 %AND C_BTYPE=0) %THEN FAULT(11) %C

  if (LEVEL == 0) goto L_009A;
  if (LEVEL != 1) goto L_009B;
  if (C.BTYPE != 0) goto L_009B;
L_009A:;
  FAULT(11);
  goto L_009C;
L_009B:;
  POPCONTEXT();
L_009C:;

//   808+     %ELSE POP CONTEXT
//   809      ->CODE

  goto U_1004;

  //   810  A(59): !ENDPROG

case_A_59:;

//   811      FPOS1 = FPOS

  FPOS1 = FPOS;

  //   812      REPORT(8) %IF LEVEL > ATOMTYPE

  if (LEVEL <= ATOMTYPE) goto L_009D;
  REPORT(8);
L_009D:;

//   813      REPORT(11) %IF LEVEL < ATOMTYPE

  if (LEVEL >= ATOMTYPE) goto L_009E;
  REPORT(11);
L_009E:;

//   814      POP CONTEXT %WHILE LEVEL > 0

L_009F:;
  if (LEVEL <= 0) goto L_00A0;
  POPCONTEXT();
  goto L_009F;
L_00A0:;

//   815      TIME2 = CPUTIME

  TIME2 = _imp_CPUTIME();

  //   816      ->ENDOK

  goto U_1020;

  //   817  ENDED:

U_1001:;

//   818      TIME2 = CPUTIME

  TIME2 = _imp_CPUTIME();

  //   819      PRINT STRING("** END OF FILE AT LINE");  WRITE(NEXTLINE,1)

  _imp_PRINTSTRING(_imp_str_literal("** END OF FILE AT LINE"));
  _imp_WRITE(NEXTLINE, 1);

  //   820      NEWLINE

  _imp_NEWLINE();

  //   821  ENDOK:

U_1020:;

//   822      %IF PARM&4 # 0 %START

  if (*PARM & 4 == 0) goto L_00A1;

    //   823         WRITE(LINE,4);  PRINTSYMBOL('L')

  _imp_WRITE(LINE, 4);
  _imp_PRINTSYMBOL(76);

  //   824         WRITE(STATS,4);  PRINT SYMBOL('S')

  _imp_WRITE(STATS, 4);
  _imp_PRINTSYMBOL(83);

  //   825         STATS = 1 %IF STATS = 0

  if (STATS != 0) goto L_00A2;
  STATS = 1;
L_00A2:;

//   826         PRINT(ATOMS/STATS,2,1);  PRINT SYMBOL('A')

  _imp_PRINT((double)(ATOMS / STATS), 2, 1);
  _imp_PRINTSYMBOL(65);

  //   827         PRINT(NUMBERS/STATS,2,1);  PRINT SYMBOL('N')

  _imp_PRINT((double)(NUMBERS / STATS), 2, 1);
  _imp_PRINTSYMBOL(78);

  //   828         PRINT(IDENTIFIERS/STATS,2,1);  PRINT SYMBOL('I')

  _imp_PRINT((double)(IDENTIFIERS / STATS), 2, 1);
  _imp_PRINTSYMBOL(73);

  //   829         PRINT(LOOPS/STATS,2,1);  PRINT SYMBOL('C')

  _imp_PRINT((double)(LOOPS / STATS), 2, 1);
  _imp_PRINTSYMBOL(67);

  //   830         PRINT(TIMES/LOOKS,2,1);  PRINT SYMBOL('H')

  _imp_PRINT((double)(TIMES / LOOKS), 2, 1);
  _imp_PRINTSYMBOL(72);

  //   831         PRINT((TIME2-TIME1)*1000/STATS,3,3);  PRINT SYMBOL('M')

  _imp_PRINT((double)(((TIME2 - TIME1) * 1000) / STATS), 3, 3);
  _imp_PRINTSYMBOL(77);

  //   832         NEWLINE

  _imp_NEWLINE();

  //   833      %FINISH

L_00A1:;

//   834      %IF PARM&8 # 0 %START

  if (*PARM & 8 == 0) goto L_00A3;

    //   835         %CYCLE I = 0,1,255

    // %for I = 0, 1, 255 %cycle
  {
    I = -1;
  L_00A4:
    if (I == 255) goto L_00A5;
    I += 1;

    //   836            J = INDEX(I)

    J = INDEX[I];

    //   837            %IF J > 0 %START

    if (J <= 0) goto L_00A7;

      //   838               WRITE(I,3);  PRINT SYMBOL(':')

    _imp_WRITE(I, 3);
    _imp_PRINTSYMBOL(58);

    //   839               %WHILE J > 0 %CYCLE

  L_00A8:;
    if (J <= 0) goto L_00A9;

      //   840                  SPACE;  PRINT STRING(STRING(J+12))

    _imp_SPACE();
    _imp_PRINTSTRING(
        *({
          __typeof__(_imp_string255) tmp = *_imp_STRING(J + 12) /*q*/;
          (_imp_string255 *)&tmp;
        })
    );

    //   841                  J = INTEGER(J+8)

    J = *_imp_INTEGER(J + 8);

    //   842               %REPEAT

    goto L_00A8;
  L_00A9:;

  //   843               NEWLINE

    _imp_NEWLINE();

    //   844            %FINISH

  L_00A7:;

  //   845         %REPEAT

    goto L_00A4;
  }

L_00A5:;

//   846      %FINISH

L_00A3:;

//   847      %RETURN

  return;

  //   848
  //   849  !
  //   850
  //   851  %ROUTINE PRINT SS

  void PRINTSS(void) {
    //   852  {%SHORTROUTINE}
    //   853  %INTEGER K

    int K;

    //   854  %ROUTINE WRITE(%INTEGER V,P)

    void WRITE(int V, int P) {
      //   855      %IF V >= 10 %START

      if (V < 10) goto L_00AA;

        //   856         WRITE(V//10,P-1);  V = V-10*(V//10)

      WRITE(((long)V / (long)10), P - 1);
      V = V - 10 * (((long)V / (long)10));

      //   857      %FINISH %ELSE SPACES(P-1)

      goto L_00AB;
    L_00AA:;
      _imp_SPACES(P - 1);
    L_00AB:;

    //   858      PRINT SYMBOL(V+'0')

      _imp_PRINTSYMBOL(V + 48);

      //   859  %END

      return;
    } /* end of WRITE */

    //   860      WRITE(LINE,4);  SPACE

    WRITE(LINE, 4);
    _imp_SPACE();

    //   861      PRINTPOS = LINEBASE

    PRINTPOS = LINEBASE;

    //   862      {%UNTIL PRINTPOS = FPOS1} %CYCLE

  L_00AC:;

  //   863         PRINTPOS = PRINTPOS+1

    PRINTPOS = PRINTPOS + 1;

    //   864         PRINT SYMBOL(MARKER) %IF PRINTPOS = FAULTPOS

    if (PRINTPOS != FAULTPOS) goto L_00AD;
    _imp_PRINTSYMBOL(124);
  L_00AD:;

  //   865         K = BYTEINTEGER(PRINTPOS)

    K = *_imp_BYTEINTEGER(PRINTPOS);

    //   866         %IF K = NL %OR 32 <= K <= 126 %THEN PRINT SYMBOL(K) %C

    if (K == 10) goto L_00A6;
    {
// Double-sided test on K (Part I)
      int tmp;
      if (32 > (tmp = K)) goto L_00AE;
// Double-sided test on K (Part II)
      if (tmp > 126) goto L_00AE;
    }
  L_00A6:;
    _imp_PRINTSYMBOL(K);
    goto L_00AF;
  L_00AE:;
    _imp_PRINTSYMBOL(91);
    WRITE(K, 0);
    _imp_PRINTSYMBOL(93);
  L_00AF:;

  //   867+        %ELSE PRINT SYMBOL('[') %AND WRITE(K,0) %AND PRINT SYMBOL(']')
  //   868      %REPEAT %UNTIL PRINTPOS = FPOS1

    if (PRINTPOS == FPOS1) goto L_00B0;
    goto L_00AC;
  L_00B0:;

  //   869      NEWLINE %IF K # NL

    if (K == 10) goto L_00B1;
    _imp_NEWLINE();
  L_00B1:;

  //   870  %END

    return;
  } /* end of PRINTSS */

  //   871
  //   872  %ROUTINE REPORT(%INTEGER N)

  void REPORT(int N) {
    //   873  {%SHORTROUTINE}
    //   874  %SWITCH S(0:25)

    int S_index;
    int S_line;
    char *S_file;
    static const void *S[26] = {
        &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing,
        &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing,
        &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing,
        &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing,
        &&case_S_missing, &&case_S_missing};

    //   875         FAULTPOS = 0 %IF N > 7

    if (N <= 7) goto L_00B2;
    FAULTPOS = 0;
  L_00B2:;

  //   876         PRINT SS %IF PRINTPOS # FPOS1

    if (PRINTPOS == FPOS1) goto L_00B3;
    PRINTSS();
  L_00B3:;

  //   877         PRINT SYMBOL('*')

    _imp_PRINTSYMBOL(42);

    //   878         ->S(N)

    S_line = __LINE__;
    S_file = __FILE__;
    S_index = N;
    goto case_S_dispatch;

    //   879  S(0): PRINT STRING("FORM?");  ->F

  case_S_0:;
    _imp_PRINTSTRING(_imp_str_literal("FORM?"));
    goto U_1021;

    //   880  S(1): PRINT STRING("ATOM?");  ->F

  case_S_1:;
    _imp_PRINTSTRING(_imp_str_literal("ATOM?"));
    goto U_1021;

    //   881  S(2): PRINT STRING("NAME?");  ->F

  case_S_2:;
    _imp_PRINTSTRING(_imp_str_literal("NAME?"));
    goto U_1021;

    //   882  S(3): PRINT STRING("MODE?");  ->F

  case_S_3:;
    _imp_PRINTSTRING(_imp_str_literal("MODE?"));
    goto U_1021;

    //   883  S(4): PRINT STRING("SIZE?");  ->F

  case_S_4:;
    _imp_PRINTSTRING(_imp_str_literal("SIZE?"));
    goto U_1021;

    //   884  S(11):PRINT STRING("%BEGIN");  ->M

  case_S_11:;
    _imp_PRINTSTRING(_imp_str_literal("%BEGIN"));
    goto U_1022;

    //   885  S(12):PRINT STRING("%CYCLE");  ->M

  case_S_12:;
    _imp_PRINTSTRING(_imp_str_literal("%CYCLE"));
    goto U_1022;

    //   886  S(13):PRINT STRING("%START");  ->M

  case_S_13:;
    _imp_PRINTSTRING(_imp_str_literal("%START"));
    goto U_1022;

    //   887  S(8): PRINT STRING("%END");  ->M

  case_S_8:;
    _imp_PRINTSTRING(_imp_str_literal("%END"));
    goto U_1022;

    //   888  S(9): PRINT STRING("%REPEAT");  ->M

  case_S_9:;
    _imp_PRINTSTRING(_imp_str_literal("%REPEAT"));
    goto U_1022;

    //   889  S(10):PRINT STRING("%FINISH");  ->M

  case_S_10:;
    _imp_PRINTSTRING(_imp_str_literal("%FINISH"));
    goto U_1022;

    //   890  S(15): PRINT SYMBOL('''')

  case_S_15:;
    _imp_PRINTSYMBOL(39);

    //   891         PRINT STRING(STRING(DPOS+12))

    _imp_PRINTSTRING(
        *({
          __typeof__(_imp_string255) tmp = *_imp_STRING(DPOS + 12) /*q*/;
          (_imp_string255 *)&tmp;
        })
    );

    //   892         PRINT SYMBOL('''')

    _imp_PRINTSYMBOL(39);

    //   893  M:    PRINT STRING(" MISSING");  ->F

  U_1022:;
    _imp_PRINTSTRING(_imp_str_literal(" MISSING"));
    goto U_1021;

    //   894  S(23):PRINT STRING("BOUNDS?");  ->F

  case_S_23:;
    _imp_PRINTSTRING(_imp_str_literal("BOUNDS?"));
    goto U_1021;

    //   895  S(25):PRINT STRING("CONTEXT?");  ->F

  case_S_25:;
    _imp_PRINTSTRING(_imp_str_literal("CONTEXT?"));
    goto U_1021;

    //   896  S(5):

  case_S_5:;

  //   897  S(16):PRINT STRING("DUPLICATE");  ->F

  case_S_16:;
    _imp_PRINTSTRING(_imp_str_literal("DUPLICATE"));
    goto U_1021;

    //   898  S(17):PRINT STRING("ORDER?");  ->F

  case_S_17:;
    _imp_PRINTSTRING(_imp_str_literal("ORDER?"));
    goto U_1021;

    //   899  S(18):PRINT STRING("MATCH?");  ->F

  case_S_18:;
    _imp_PRINTSTRING(_imp_str_literal("MATCH?"));
    goto U_1021;

    //   900  S(19):PRINT STRING("RANGE?");  ->F

  case_S_19:;
    _imp_PRINTSTRING(_imp_str_literal("RANGE?"));
    goto U_1021;

    //   901  S(20):PRINT STRING("LITERAL?");  ->F

  case_S_20:;
    _imp_PRINTSTRING(_imp_str_literal("LITERAL?"));
    goto U_1021;

    //   902  S(21): %IF CONSTCOUNT < 0 %START

  case_S_21:;
    if (CONSTCOUNT >= 0) goto L_00B5;

      //   903            WRITE(-CONSTCOUNT,1); PRINT STRING(" EXTRA")

    _imp_WRITE(-CONSTCOUNT, 1);
    _imp_PRINTSTRING(_imp_str_literal(" EXTRA"));

    //   904         %FINISH %ELSE %START

    goto L_00B6;
  L_00B5:;

  //   905            WRITE(CONSTCOUNT,1); PRINT STRING(" MISSING")

    _imp_WRITE(CONSTCOUNT, 1);
    _imp_PRINTSTRING(_imp_str_literal(" MISSING"));

    //   906           %FINISH

  L_00B6:;

  //   907        PRINT STRING(" VALUE(S)");  ->F

    _imp_PRINTSTRING(_imp_str_literal(" VALUE(S)"));
    goto U_1021;

    //   908  S(22):PRINT STRING("TYPE?");  ->F

  case_S_22:;
    _imp_PRINTSTRING(_imp_str_literal("TYPE?"));
    goto U_1021;

    //   909  F:     NEWLINE

  U_1021:;
    _imp_NEWLINE();

    //   910      FAULTNUM = -1;  PARM = PARM!X'80000000'

    FAULTNUM = -1;
    *PARM = *PARM | (-2147483648);

    //   911  %END

    return;

  case_S_dispatch:
    if (S_index < 0 || S_index > 25)
      _imp_signalf(6, 3, S_index, "->S(%d) out of bounds at %s line %d", S_index, S_file, S_line);
    goto *S[S_index - 0];

  case_S_missing:
    _imp_signalf(8, 2, S_index, "switch jump to undefined label S(%d): at %s line %d", S_index, S_file, S_line);
  } /* end of REPORT */

  //   912
  //   913  %ROUTINE CODE ATOM

  void CODEATOM(void) {
    //   914  {%SHORTROUTINE}
    //   915  {%REGISTER} %INTEGER FP{(5)};  !FILE POS

    int FP;

    //   916  {%REGISTER} %INTEGER SC{(6)};  !SYMCODE OR SYM

    int SC;

    //   917  %INTEGER I,J,K,L

    int I;
    int J;
    int K;
    int L;

    //   918  %INTEGER HASH

    int HASH;

    //   919
    //   920      ATOMS = ATOMS+1

    ATOMS = ATOMS + 1;

    //   921      FP = FPOS;  SC = SYMCODE

    FP = FPOS;
    SC = SYMCODE;

    //   922      ->C2 %IF SC # 0

    if (SC == 0) goto L_00B7;
    goto U_1023;
  L_00B7:;

  //   923  C1: {%UNTIL SC # ' '} %CYCLE

  U_1024:;
  L_00B8:;

  //   924         FP = FP+1;  SC = BYTEINTEGER(FP)

    FP = FP + 1;
    SC = *_imp_BYTEINTEGER(FP);

    //   925      %REPEAT %UNTIL SC # ' '

    if (SC != 32) goto L_00B9;
    goto L_00B8;
  L_00B9:;

  //   926      SC = SYMINIT(SC)

    SC = SYMINIT[SC];

    //   927  C2: FPOS1 = FP

  U_1023:;
    FPOS1 = FP;

    //   928      ->NAMENUM %IF SC < 127

    if (SC >= 127) goto L_00BA;
    goto U_1025;
  L_00BA:;

  //   929      SC = SC-128

    SC = SC - 128;

    //   930      ->KEYWORD %IF SC > 0

    if (SC <= 0) goto L_00BB;
    goto U_1026;
  L_00BB:;

  //   931      ->QUOTEMARK %IF SC # 0

    if (SC == 0) goto L_00BC;
    goto U_1027;
  L_00BC:;

  //   932     !PERCENT
  //   933      FP = FP+1;  SC = SYMINIT(BYTEINTEGER(FP)!128)

    FP = FP + 1;
    SC = SYMINIT[*_imp_BYTEINTEGER(FP) | 128];

    //   934      ->C2 %IF SC # 0

    if (SC == 0) goto L_00BD;
    goto U_1023;
  L_00BD:;

  //   935      ->C1

    goto U_1024;

    //   936
    //   937  !LOCATE ATOM IN FIXED DICT
    //   938  !KEYDICT := MORE<5> : LINK<9> : SYM-32<6>
    //   939  !           OR CLASS<7> : 0<6>
    //   940  !           THEN  SUBCLASS<16>
    //   941  KEYWORD:

  U_1026:;

  //   942      ->NLQ %IF SC >= SKIPMIN;  !NL OR EQUIVALENT

    if (SC < SKIPMIN) goto L_00BE;
    goto U_1028;
  L_00BE:;

  //   943      I = SC;  L = 0;  L = 128 %IF SC < PUNCTMIN

    I = SC;
    L = 0;
    if (SC >= 43) goto L_00BF;
    L = 128;
  L_00BF:;

  //   944      %CYCLE

  L_00C0:;

  //   945         %CYCLE

  L_00C1:;

  //   946            FP = FP+1;  K = BYTEINTEGER(FP)

    FP = FP + 1;
    K = *_imp_BYTEINTEGER(FP);

    //   947            SC = SYMINIT(K!L)

    SC = SYMINIT[K | L];

    //   948            %EXIT %IF SC&127 # 0

    if (SC & 127 == 0) goto L_00C2;
    goto L_00C3;
  L_00C2:;

  //   949            L = SC

    L = SC;

    //   950         %REPEAT

    goto L_00C1;
  L_00C3:;

  //   951         K = K-32 %IF SC&128 # 0

    if (SC & 128 == 0) goto L_00C4;
    K = K - 32;
  L_00C4:;

  //   952         %CYCLE

  L_00C5:;

  //   953            J = KEYDICT(I)

    J = KEYDICT[I];

    //   954            %EXIT %IF J >= 0 %OR J&63 = K

    if (J >= 0) goto L_00C6;
    if (J & 63 != K) goto L_00C7;
  L_00C6:;
    goto L_00C8;
  L_00C7:;

  //   955            I = I+1

    I = I + 1;

    //   956         %REPEAT

    goto L_00C5;
  L_00C8:;

  //   957         %EXIT %IF J&63 # K

    if (J & 63 == K) goto L_00C9;
    goto L_00CA;
  L_00C9:;

  //   958         I = J>>6&511

    I = (unsigned int)J >> 6 & 511;

    //   959      %REPEAT

    goto L_00C0;
  L_00CA:;

  //   960      ->ERR %IF J&63 # 0

    if (J & 63 == 0) goto L_00CB;
    goto U_1029;
  L_00CB:;

  //   961      ATOMTYPE = KEYDICT(I+1)&X'FFFF'

    ATOMTYPE = KEYDICT[I + 1] & 65535;

    //   962      ATOM = J>>6

    ATOM = (unsigned int)J >> 6;

    //   963      ->KEY5 %IF ATOM = 0

    if (ATOM != 0) goto L_00CC;
    goto U_102A;
  L_00CC:;

  //   964  FIN:FPOS = FP;  SYMCODE = SC

  U_102B:;
    FPOS = FP;
    SYMCODE = SC;

    //   965      %RETURN

    return;

    //   966  KEY5:

  U_102A:;

  //   967      %IF ATOMTYPE # 0 %START;  !%COMMENT

    if (ATOMTYPE == 0) goto L_00CD;

      //   968         ->FIN %IF SKIPMIN # SKIP1MIN

    if (SKIPMIN == 86) goto L_00CE;
    goto U_102B;
  L_00CE:;

  //   969         ->SKP

    goto U_102C;

    //   970      %FINISH

  L_00CD:;

  //   971      ->ERR %UNLESS BYTEINTEGER(FP) = NL

    if (*_imp_BYTEINTEGER(FP) == 10) goto L_00CF;
    goto U_1029;
  L_00CF:;

  //   972      NEXTLINE = NEXTLINE+1

    NEXTLINE = NEXTLINE + 1;

    //   973      ->TERM %IF FP >= FMAX

    if (FP < FMAX) goto L_00D0;
    goto U_102D;
  L_00D0:;

  //   974      ->C1

    goto U_1024;

    //   975
    //   976  NLQ:

  U_1028:;

  //   977      ->TERM %IF SKIPMIN # SKIP1MIN;  !NOT LEADING ATOM

    if (SKIPMIN == 86) goto L_00D1;
    goto U_102D;
  L_00D1:;

  //   978  SKP:

  U_102C:;

  //   979      FP = FP-1

    FP = FP - 1;

    //   980      {%UNTIL SC = NL %OR SC = ';'} %CYCLE

  L_00D2:;

  //   981         FP = FP+1;  SC = BYTEINTEGER(FP)

    FP = FP + 1;
    SC = *_imp_BYTEINTEGER(FP);

    //   982      %REPEAT %UNTIL SC = NL %OR SC = ';'

    if (SC == 10) goto L_00D3;
    if (SC == 59) goto L_00D3;
    goto L_00D2;
  L_00D3:;

  //   983      %IF SC = NL %START

    if (SC != 10) goto L_00D4;

      //   984         ->TERM %IF FP >= FMAX

    if (FP < FMAX) goto L_00D5;
    goto U_102D;
  L_00D5:;

  //   985         LINEBASE = FP;  NEXTLINE = NEXTLINE+1;  LINE = NEXTLINE

    LINEBASE = FP;
    NEXTLINE = NEXTLINE + 1;
    LINE = NEXTLINE;

    //   986      %FINISH

  L_00D4:;

  //   987      ->C1

    goto U_1024;

    //   988
    //   989  TERM:

  U_102D:;

  //   990      ATOM = TERMINATOR;  ATOMTYPE = 0

    ATOM = 13;
    ATOMTYPE = 0;

    //   991      NEXTLINE = NEXTLINE+1;  SC = 0

    NEXTLINE = NEXTLINE + 1;
    SC = 0;

    //   992      SC = 255 %IF FP >= FMAX

    if (FP < FMAX) goto L_00D6;
    SC = 255;
  L_00D6:;

  //   993      ->FIN

    goto U_102B;

    //   994
    //   995  DISASTER:

  U_102E:;

  //   996      ATOMTYPE = 99

    ATOMTYPE = 99;

    //   997      ->ER1

    goto U_102F;

    //   998  STRINGERR:

  U_1030:;

  //   999      ATOMTYPE = 4;  NEXTLINE = L

    ATOMTYPE = 4;
    NEXTLINE = L;

    //  1000  ER1:FP = FPOS1;  SC = 0

  U_102F:;
    FP = FPOS1;
    SC = 0;

    //  1001      ->ER2

    goto U_1031;

    //  1002  ERR:ATOMTYPE = 1

  U_1029:;
    ATOMTYPE = 1;

    //  1003  ER2:ATOM = 0

  U_1031:;
    ATOM = 0;

    //  1004      ->FIN

    goto U_102B;

    //  1005
    //  1006  NAMENUM:

  U_1025:;

  //  1007      ->NUMBER %IF SC <= '9' %AND ATOM # JUMP

    if (SC > 57) goto L_00D7;
    if (ATOM == 15) goto L_00D7;
    goto U_1032;
  L_00D7:;

  //  1008      %IF BYTEINTEGER(FP+1) = '''' %START

    if (*_imp_BYTEINTEGER(FP + 1) != 39) goto L_00D8;

      //  1009         ->HEX %IF SC = 'X'

    if (SC != 88) goto L_00D9;
    goto U_1033;
  L_00D9:;

  //  1010         ->OCT %IF SC = 'K'

    if (SC != 75) goto L_00DA;
    goto U_1034;
  L_00DA:;

  //  1011         ->BIN %IF SC = 'B'

    if (SC != 66) goto L_00DB;
    goto U_1035;
  L_00DB:;

  //  1012         ->MULTI %IF SC = 'M'

    if (SC != 77) goto L_00DC;
    goto U_1036;
  L_00DC:;

  //  1013      %FINISH

  L_00D8:;

  //  1014      J = DLIM;  ->DISASTER %IF J+84 >= DBOUND

    J = DLIM;
    if (J + 84 < DBOUND) goto L_00DD;
    goto U_102E;
  L_00DD:;

  //  1015      HASH = 0

    HASH = 0;

    //  1016      {%UNTIL SC > 'Z'} %CYCLE

  L_00DE:;

  //  1017         %IF SC # 0 %START

    if (SC == 0) goto L_00DF;

      //  1018            J = J+1;  BYTEINTEGER(J+12) = SC

    J = J + 1;
    *_imp_BYTEINTEGER(J + 12) = SC;

    //  1019            HASH = HASH<<1!!SC

    HASH = HASH << 1 ^ SC;

    //  1020         %FINISH

  L_00DF:;

  //  1021         FP = FP+1;  SC = SYMINIT(BYTEINTEGER(FP))

    FP = FP + 1;
    SC = SYMINIT[*_imp_BYTEINTEGER(FP)];

    //  1022      %REPEAT %UNTIL SC > 'Z'

    if (SC > 90) goto L_00E0;
    goto L_00DE;
  L_00E0:;

  //  1023      BYTEINTEGER(DLIM+12) = J-DLIM

    *_imp_BYTEINTEGER(DLIM + 12) = J - DLIM;

    //  1024      NEWDLIM = J&(\3)+16

    NEWDLIM = (J & (~3)) + 16;

    //  1025      HEAD == INDEX(HASH&255);  DPOS = HEAD;

    HEAD = (int *)/*?*/ &INDEX[HASH & 255];
    DPOS = *HEAD;

    //  1026      ATOM = IDENT;

    ATOM = 1;

    //  1027      IDENTIFIERS = IDENTIFIERS+1

    IDENTIFIERS = IDENTIFIERS + 1;

    //  1028      ->FIN

    goto U_102B;

    //  1029
    //  1030  NUMBER:

  U_1032:;

  //  1031      ATOMTYPE = NUMBITS

    ATOMTYPE = 112;

    //  1032      ATOMVAL = SC-'0'

    ATOMVAL = SC - 48;

    //  1033      %CYCLE

  L_00E1:;

  //  1034         FP = FP+1;  SC = SYMINIT(BYTEINTEGER(FP))

    FP = FP + 1;
    SC = SYMINIT[*_imp_BYTEINTEGER(FP)];

    //  1035         %EXIT %IF SC > '9'

    if (SC <= 57) goto L_00E2;
    goto L_00E3;
  L_00E2:;

  //  1036         ATOMVAL = (ATOMVAL<<2+ATOMVAL)<<1+SC-'0' %C

    if (SC == 0) goto L_00E4;
    if (ATOMVAL >= 1000000) goto L_00E4;
    ATOMVAL = ((ATOMVAL << 2) + ATOMVAL << 1) + SC - 48;
  L_00E4:;

  //  1037+          %IF SC # 0 %AND ATOMVAL < 1000000
  //  1038      %REPEAT

    goto L_00E1;
  L_00E3:;

  //  1039      %IF BYTEINTEGER(FP) = '.' %START

    if (*_imp_BYTEINTEGER(FP) != 46) goto L_00E5;

      //  1040         {%UNTIL SC > '9'} %CYCLE

  L_00E6:;

  //  1041            FP = FP+1;  SC = SYMINIT(BYTEINTEGER(FP))

    FP = FP + 1;
    SC = SYMINIT[*_imp_BYTEINTEGER(FP)];

    //  1042         %REPEAT %UNTIL SC > '9'

    if (SC > 57) goto L_00E7;
    goto L_00E6;
  L_00E7:;

  //  1043         ATOMTYPE = REALBITS

    ATOMTYPE = 48;

    //  1044      %FINISH

  L_00E5:;

  //  1045      %IF BYTEINTEGER(FP) = '@' %START

    if (*_imp_BYTEINTEGER(FP) != 64) goto L_00E8;

      //  1046         {%UNTIL SC # ' '} %CYCLE

  L_00E9:;

  //  1047            FP = FP+1;  SC = BYTEINTEGER(FP)

    FP = FP + 1;
    SC = *_imp_BYTEINTEGER(FP);

    //  1048         %REPEAT %UNTIL SC # ' '

    if (SC != 32) goto L_00EA;
    goto L_00E9;
  L_00EA:;

  //  1049         %IF SC = '-' %START

    if (SC != 45) goto L_00EB;

      //  1050            {%UNTIL SC # ' '} %CYCLE

  L_00EC:;

  //  1051               FP = FP+1;  SC = BYTEINTEGER(FP)

    FP = FP + 1;
    SC = *_imp_BYTEINTEGER(FP);

    //  1052            %REPEAT %UNTIL SC # ' '

    if (SC != 32) goto L_00ED;
    goto L_00EC;
  L_00ED:;

  //  1053         %FINISH

  L_00EB:;

  //  1054         SC = SYMINIT(SC)

    SC = SYMINIT[SC];

    //  1055         ->ERR %UNLESS SC <= '9'

    if (SC <= 57) goto L_00EE;
    goto U_1029;
  L_00EE:;

  //  1056         {%UNTIL SC > '9'} %CYCLE

  L_00EF:;

  //  1057            FP = FP+1;  SC = SYMINIT(BYTEINTEGER(FP))

    FP = FP + 1;
    SC = SYMINIT[*_imp_BYTEINTEGER(FP)];

    //  1058         %REPEAT %UNTIL SC > '9'

    if (SC > 57) goto L_00F0;
    goto L_00EF;
  L_00F0:;

  //  1059         ATOMTYPE = REALBITS

    ATOMTYPE = 48;

    //  1060      %FINISH

  L_00E8:;

  //  1061  NN: ATOM = CONST

  U_1037:;
    ATOM = 2;

    //  1062      NUMBERS = NUMBERS+1

    NUMBERS = NUMBERS + 1;

    //  1063      ->FIN

    goto U_102B;

    //  1064
    //  1065  MULTI:

  U_1036:;

  //  1066      FP = FP+1

    FP = FP + 1;

    //  1067      ATOMTYPE = NUMBITS

    ATOMTYPE = 112;

    //  1068      ->Q1

    goto U_1038;

    //  1069  QUOTEMARK:

  U_1027:;

  //  1070      ATOMTYPE = STRINGBIT

    ATOMTYPE = 128;

    //  1071  Q1: K = BYTEINTEGER(FP);  J = -1;  L = NEXTLINE

  U_1038:;
    K = *_imp_BYTEINTEGER(FP);
    J = -1;
    L = NEXTLINE;

    //  1072      ATOMVAL = 0

    ATOMVAL = 0;

    //  1073      %CYCLE

  L_00F1:;

  //  1074         FP = FP+1;  SC = BYTEINTEGER(FP)

    FP = FP + 1;
    SC = *_imp_BYTEINTEGER(FP);

    //  1075         %IF SC = NL %START

    if (SC != 10) goto L_00F2;

      //  1076            NEXTLINE = NEXTLINE+1

    NEXTLINE = NEXTLINE + 1;

    //  1077            ->TERM %IF FP >= FMAX

    if (FP < FMAX) goto L_00F3;
    goto U_102D;
  L_00F3:;

  //  1078         %FINISH

  L_00F2:;

  //  1079         %IF SC = K %START

    if (SC != K) goto L_00F4;

      //  1080            %EXIT %IF SC # BYTEINTEGER(FP+1)

    if (SC == *_imp_BYTEINTEGER(FP + 1)) goto L_00F5;
    goto L_00F6;
  L_00F5:;

  //  1081            FP = FP+1

    FP = FP + 1;

    //  1082         %FINISH

  L_00F4:;

  //  1083         ATOMVAL = ATOMVAL<<8+SC

    ATOMVAL = (ATOMVAL << 8) + SC;

    //  1084         J = J+1;  ->STRINGERR %IF J = 255

    J = J + 1;
    if (J != 255) goto L_00F7;
    goto U_1030;
  L_00F7:;

  //  1085      %REPEAT

    goto L_00F1;
  L_00F6:;

  //  1086      %IF ATOMTYPE = STRINGBIT %START;  !IE NOT MULTI

    if (ATOMTYPE != 128) goto L_00F8;

      //  1087         ATOMVAL = J<<8+ATOMVAL&255

    ATOMVAL = (J << 8) + (ATOMVAL & 255);

    //  1088         ATOMTYPE = STRINGBIT+NUMBITS %IF J = 0

    if (J != 0) goto L_00F9;
    ATOMTYPE = 128 + 112;
  L_00F9:;

  //  1089      %FINISH

  L_00F8:;

  //  1090      SC = 0

    SC = 0;

    //  1091      ->NN

    goto U_1037;

    //  1092
    //  1093  HEX:J = 4;  ->RAD

  U_1033:;
    J = 4;
    goto U_1039;

    //  1094  OCT:J = 3;  ->RAD

  U_1034:;
    J = 3;
    goto U_1039;

    //  1095  BIN:J = 1

  U_1035:;
    J = 1;

    //  1096  RAD:FP = FP+1

  U_1039:;
    FP = FP + 1;

    //  1097      ATOMTYPE = NUMBITS;  ATOMVAL = 0

    ATOMTYPE = 112;
    ATOMVAL = 0;

    //  1098      %CYCLE

  L_00FA:;

  //  1099         FP = FP+1;  SC = BYTEINTEGER(FP)

    FP = FP + 1;
    SC = *_imp_BYTEINTEGER(FP);

    //  1100         %EXIT %IF SC = ''''

    if (SC != 39) goto L_00FB;
    goto L_00FC;
  L_00FB:;

  //  1101         K = SC-'0'

    K = SC - 48;

    //  1102         K = K+('0'-'A'+10) %IF K >= 'A'-'0'

    if (K < 65 - 48) goto L_00FD;
    K = K + (48 - 65 + 10);
  L_00FD:;

  //  1103         ->ERR %IF K>>J # 0

    if ((unsigned int)K >> J == 0) goto L_00FE;
    goto U_1029;
  L_00FE:;

  //  1104         ATOMVAL = ATOMVAL<<J+K

    ATOMVAL = (ATOMVAL << J) + K;

    //  1105      %REPEAT

    goto L_00FA;
  L_00FC:;

  //  1106      SC = 0

    SC = 0;

    //  1107      ->NN

    goto U_1037;

    //  1108
    //  1109  %END; !CODE ATOM

  } /* end of CODEATOM */

  //  1110
  //  1111  %ROUTINE POP CONTEXT

  void POPCONTEXT(void) {
    //  1112  {%SHORTROUTINE}
    //  1113  %INTEGER I

    int I;

    //  1114      DPOS = C_LOCAL;  FPOS1 = FPOS

    DPOS = C.LOCAL;
    FPOS1 = FPOS;

    //  1115      %WHILE DPOS # DLIM %CYCLE

  L_00FF:;
    if (DPOS == DLIM) goto L_0100;

      //  1116         I = INTEGER(DPOS)

    I = *_imp_INTEGER(DPOS);

    //  1117         %IF I # RECFORMAT %START

    if (I == 4) goto L_0101;

      //  1118            REPORT(15) %IF I&1 # 0 %AND I&6 # 0

    if (I & 1 == 0) goto L_0102;
    if (I & 6 == 0) goto L_0102;
    REPORT(15);
  L_0102:;

  //  1119         %FINISH %ELSE %START

    goto L_0103;
  L_0101:;

  //  1120            DPOS = INTEGER(DPOS+4) %IF INTEGER(DPOS+4) # 0

    if (*_imp_INTEGER(DPOS + 4) == 0) goto L_0104;
    DPOS = *_imp_INTEGER(DPOS + 4);
  L_0104:;

  //  1121         %FINISH

  L_0103:;

  //  1122         DPOS = BYTEINTEGER(DPOS+12)&(\3)+DPOS+16

    DPOS = (*_imp_BYTEINTEGER(DPOS + 12) & (~3)) + DPOS + 16;

    //  1123      %REPEAT

    goto L_00FF;
  L_0100:;

  //  1124      REPORT(C_STACK&1+9) %AND C_STACK=C_STACK>>2 %WHILE C_STACK # 0

  L_0105:;
    if (C.STACK == 0) goto L_0106;
    REPORT((C.STACK & 1) + 9);
    C.STACK = (unsigned int)C.STACK >> 2;
    goto L_0105;
  L_0106:;

  //  1125      DLIM = C_LOCAL

    DLIM = C.LOCAL;

    //  1126      C = HOLD(LEVEL);  LEVEL = LEVEL-1

    C = HOLD[LEVEL - 1];
    LEVEL = LEVEL - 1;

    //  1127      %CYCLE I = ADDR(INDEX(0)),4,ADDR(INDEX(255))

    // %for I = _imp_ADDR(/*?*/&INDEX[0]), 4, _imp_ADDR(/*?*/&INDEX[255]) %cycle
    {
      int _initial = _imp_ADDR(/*?*/ &INDEX[0]), _final = _imp_ADDR(/*?*/ &INDEX[255]);
      if (invalid_for_loop(_initial, 4, _final))
        _imp_signal(5, 1, 0, "Illegal cycle I = _imp_ADDR(/*?*/&INDEX[0]), 4, _imp_ADDR(/*?*/&INDEX[255])");
      I = _initial - (4);
    L_0107:
      if (I == _final) goto L_0108;
      I += 4;

      //  1128         INTEGER(I) = INTEGER(INTEGER(I)+8) %WHILE INTEGER(I) >= DLIM

    L_010A:;
      if (*_imp_INTEGER(I) < DLIM) goto L_010B;
      *_imp_INTEGER(I) = *_imp_INTEGER(*_imp_INTEGER(I) + 8);
      goto L_010A;
    L_010B:;

    //  1129      %REPEAT

      goto L_0107;
    }

  L_0108:;

  //  1130  %END

    return;
  } /* end of POPCONTEXT */

  //  1131
  //  1132  %ROUTINE DEFINE(%INTEGER DISP,VAL)

  void DEFINE(int DISP, int VAL) {
    //  1133  {%SHORTROUTINE}
    //  1134      %WHILE IDENTS # DLIM %CYCLE

  L_010C:;
    if (IDENTS == DLIM) goto L_010D;

      //  1135         %IF DISP # 0 %THEN INTEGER(IDENTS+4) = VAL %C

    if (DISP == 0) goto L_010E;
    *_imp_INTEGER(IDENTS + 4) = VAL;
    goto L_010F;
  L_010E:;
    *_imp_BYTEINTEGER(IDENTS + 2) = VAL;
  L_010F:;

  //  1136+        %ELSE BYTEINTEGER(IDENTS+2) = VAL
  //  1137         IDENTS = BYTEINTEGER(IDENTS+12)&(\3)+IDENTS+16

    IDENTS = (*_imp_BYTEINTEGER(IDENTS + 12) & (~3)) + IDENTS + 16;

    //  1138      %REPEAT

    goto L_010C;
  L_010D:;

  //  1139  %END

    return;
  } /* end of DEFINE */

  //  1140
  //  1141
  //  1142  %END;

  return;

case_A_dispatch:
  if (A_index < 0 || A_index > 127)
    _imp_signalf(6, 3, A_index, "->A(%d) out of bounds at %s line %d", A_index, A_file, A_line);
  goto *A[A_index - 0];

case_A_missing:
  _imp_signalf(8, 2, A_index, "switch jump to undefined label A(%d): at %s line %d", A_index, A_file, A_line);

case_X_dispatch:
  if (X_index < 0 || X_index > 4)
    _imp_signalf(6, 3, X_index, "->X(%d) out of bounds at %s line %d", X_index, X_file, X_line);
  goto *X[X_index - 0];
} /* end of CHECKINNER */

// ?RA1 unused
// ?AS1 unused
//  1143       ;  !CHECKINNER
//  1143
//  1144  %EXTERNALROUTINE CHECK(%STRING(63) PARAM)

void CHECK(_imp_string63 PARAM) {
  //  1145  %RECORDFORMAT FINF(%INTEGER CONAD,FILESIZE, %BYTEINTEGER RUP, %C

  struct FINF {
    union {
      struct {
        int CONAD;
        int FILESIZE;
        unsigned char RUP;
        unsigned char EEP;
        unsigned char MODE;
        unsigned char CONS;
        unsigned char ARCH;
        _imp_string6 TRAN;
        short int FILETYPE;
        short int NUMIPERMS;
        int DATASTART;
        int DATAEND;
        int PLISTPTR;
      };
    };
  };

  //  1146+               EEP,MODE,CONS,ARCH, %STRING(6) TRAN, %C
  //  1147+               %SHORTINTEGER FILETYPE,NUMIPERMS, %C
  //  1148+               %INTEGER DATASTART,DATAEND, PLISTPTR)
  //  1149  {%EXTERNAL}%ROUTINE{SPEC} DEFINE(%STRING(63) S)

  void DEFINE(_imp_string63 S) {
    //  1150  %end

    return;
  } /* end of DEFINE */

  // ?S unused
  //  1151  {%SYSTEM}%ROUTINE{SPEC} CONNECT(%STRING(15) S, %INTEGER A,M,P, %C

  void CONNECT(_imp_string15 S, int A, int M, int P, struct FINF *R, int *F) {
    //  1152+                            %RECORD(FINF)%NAME R, %INTEGERNAME F)
    //  1153  %end

    return;
  } /* end of CONNECT */

  // ?F unused
  // ?R unused
  // ?P unused
  // ?M unused
  // ?A unused
  // ?S unused
  //  1154  {%EXTERNAL}%STRING(255)%FN{SPEC} SSFMESSAGE

  _imp_string255 SSFMESSAGE(void) {
    //  1155  %result="error"  ;! I thought I had added this one to the perms..?

    return *(_imp_string255 *)/*?*/ _imp_str_literal_ptr("error");

    //  1156  %end

  } /* end of SSFMESSAGE */

  //  1157
  //  1158  %RECORD(FINF) R

  struct FINF R;

  //  1159  %INTEGER I,J,FLAG

  int I;
  int J;
  int FLAG;

  //  1160  %STRING(63) OPTIONS,OUT

  _imp_string63 OPTIONS;
  _imp_string63 OUT;

  //  1161      OUT = "" %UNLESS PARAM -> PARAM.("/").OUT

  if (_imp_resolve(*({
        _imp_string63 tmp = PARAM;
        (_imp_string255 *)&tmp;
      }),
                   (_imp_string255 *)/*?*/ &PARAM, *({
                     _imp_string tmp = _imp_str_literal("/");
                     (_imp_string255 *)&tmp;
                   }),
                   (_imp_string255 *)/*?*/ &OUT))
    goto L_0110;

  _imp_strncpy(/*?*/ &OUT, ({
                 __typeof__(_imp_string255) tmp; /*B*/
                 tmp = _imp_str_literal("");
                 (void *)&tmp;
               }),
               /*max:*/ 63);

L_0110:;

//  1162      OPTIONS = "" %UNLESS PARAM -> PARAM.(",").OPTIONS

  if (_imp_resolve(*({
        _imp_string63 tmp = PARAM;
        (_imp_string255 *)&tmp;
      }),
                   (_imp_string255 *)/*?*/ &PARAM, *({
                     _imp_string tmp = _imp_str_literal(",");
                     (_imp_string255 *)&tmp;
                   }),
                   (_imp_string255 *)/*?*/ &OPTIONS))
    goto L_0111;

  _imp_strncpy(/*?*/ &OPTIONS, ({
                 __typeof__(_imp_string255) tmp; /*B*/
                 tmp = _imp_str_literal("");
                 (void *)&tmp;
               }),
               /*max:*/ 63);

L_0111:;

//  1163      CONNECT(PARAM,0,0,0,R,FLAG)

  CONNECT(
      *({
        __typeof__(_imp_string63) tmp = PARAM /*q*/;
        (_imp_string15 *)&tmp;
      })
          ,
      0, 0, 0, /*?*/ &R, /*?*/ &FLAG);

  //  1164      PRINTSTRING(SSFMESSAGE) %AND %RETURN %IF FLAG # 0

  if (FLAG == 0) goto L_0112;
  _imp_PRINTSTRING(
      *({
        __typeof__(_imp_string255) tmp = SSFMESSAGE() /*q*/;
        (_imp_string255 *)&tmp;
      })
  );
  return;
L_0112:;

//  1165      %IF OUT # "" %START

  if (_imp_strcmp((_imp_string *)/*?*/ &OUT, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) == 0) goto L_0113;

    //  1166         DEFINE("ST19,".OUT)

  DEFINE(
      *({
        __typeof__(_imp_string255) tmp = *({
          _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("ST19,"), (_imp_string *)/*?*/ &OUT);
          (_imp_string255 *)&tmp;
        }) /*q*/;
        (_imp_string63 *)&tmp;
      })
  );

  //  1167         SELECT OUTPUT(19)

  _imp_SELECTOUTPUT(19);

  //  1168      %FINISH

L_0113:;

//  1169      I = 0

  I = 0;

  //  1170      %WHILE I < LENGTH(OPTIONS) %CYCLE

L_0114:;
  if (I >= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &OPTIONS)) goto L_0115;

    //  1171         I = I+1;  J = CHARNO(OPTIONS,I)

  I = I + 1;
  J = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &OPTIONS, I);

  //  1172         FLAG = FLAG!8 %IF J = 'D'

  if (J != 68) goto L_0116;
  FLAG = FLAG | 8;
L_0116:;

//  1173         FLAG = FLAG!4 %IF J = 'S'

  if (J != 83) goto L_0117;
  FLAG = FLAG | 4;
L_0117:;

//  1174      %REPEAT

  goto L_0114;
L_0115:;

//  1175      CHECKINNER(R_CONAD+R_DATASTART,R_DATAEND-R_DATASTART,FLAG)

  CHECKINNER(R.CONAD + R.DATASTART, R.DATAEND - R.DATASTART, /*?*/ &FLAG);

  //  1176     PRINT STRING(" OK") %AND NEWLINE %IF FLAG >= 0

  if (FLAG < 0) goto L_0118;
  _imp_PRINTSTRING(_imp_str_literal(" OK"));
  _imp_NEWLINE();
L_0118:;

//  1177  %END;  !CHECK

  return;
} /* end of CHECK */

//  1178
//  1179  %begin

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

  //  1180  %end

  _imp_stop(0);
  return 0;
end_0:;
}

//  1181
//  1182  %ENDOFFILE