#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  %begin

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

  //     2  {--------------------------------}
  //     3  {                                }
  //     4  {   Motorola M6809 Assembler.    }
  //     5  {                                }
  //     6  { Copyright M.R.King, 26/3/1984. }
  //     7  { All rights reserved.           }
  //     8  {                                }
  //     9  {--------------------------------}
  //    10
  //    11  %own %string(255) copyright = %c

  static _imp_string255 COPYRIGHT =
      _imp_str_init("Motorola M6809 Assembler. Copyright M.R.King, 26/3/1984. All rights reserved.");

  //    12+ "Motorola M6809 Assembler. Copyright M.R.King, 26/3/1984. All rights reserved."
  //    13
  //    14  %constant %integer names         = 1023,
  //    15+                    line width    = 78,
  //    16+                    lines on page = 66,
  //    17+                    max line      = 512,
  //    18+                    insert limit  = 10,
  //    19+                    xentries      = 4096
  //    20  %constinteger ihash = 59
  //    21  %constant %byte %integer %array hilink(0:58) = %c

  const unsigned char HILINK[59] = {46,  80, 28, 43,  71, 51,  11, 73,  106, 96,  22,  122, 2,   5,  97,
                                    6,   33, 30, 19,  20, 138, 42, 3,   4,   75,  45,  124, 76,  77, 108,
                                    7,   27, 8,  111, 32, 9,   10, 143, 57,  134, 153, 47,  158, 29, 59,
                                    150, 0,  78, 119, 26, 36,  23, 21,  35,  12,  1,   49,  16,  31};
  struct _imp_dv HILINK_dv = {HILINK, sizeof(unsigned char) /*, dims, <bounds> */};

  //    22+      46,  80,  28,  43,  71,  51,  11,  73, 106,  96,  22, 122,
  //    23+       2,   5,  97,   6,  33,  30,  19,  20, 138,  42,   3,   4,
  //    24+      75,  45, 124,  76,  77, 108,   7,  27,   8, 111,  32,   9,
  //    25+      10, 143,  57, 134, 153,  47, 158,  29,  59, 150,   0,  78,
  //    26+     119,  26,  36,  23,  21,  35,  12,   1,  49,  16,  31
  //    27  %constant %byte %integer %array ilink(1:198) = %c

  const unsigned char ILINK[198] = {
      15,  34,  13,  14,  17,  18,  114, 37,  40,  24,  82,  39,  74,  50,  68,  69,  38,  48,  25,  99,  61,  121,
      115, 92,  54,  117, 66,  65,  44,  41,  63,  162, 88,  62,  0,   70,  0,   60,  67,  198, 94,  84,  58,  120,
      147, 55,  52,  87,  56,  53,  72,  188, 110, 98,  64,  140, 133, 81,  85,  0,   116, 137, 100, 102, 90,  160,
      186, 89,  154, 0,   112, 113, 83,  109, 126, 123, 79,  86,  0,   101, 91,  105, 170, 146, 151, 118, 128, 93,
      139, 104, 0,   142, 193, 95,  164, 107, 127, 141, 166, 185, 103, 155, 0,   167, 0,   0,   0,   0,   144, 0,
      0,   129, 0,   132, 163, 183, 131, 161, 130, 149, 175, 136, 125, 148, 184, 0,   177, 135, 156, 0,   0,   0,
      157, 152, 159, 187, 145, 176, 169, 0,   165, 168, 179, 171, 181, 174, 0,   0,   0,   0,   197, 0,   172, 0,
      0,   0,   0,   0,   0,   0,   194, 0,   196, 190, 0,   178, 0,   0,   192, 173, 0,   180, 189, 182, 0,   0,
      0,   0,   0,   0,   0,   195, 0,   0,   0,   0,   0,   191, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0};
  struct _imp_dv ILINK_dv = {ILINK, sizeof(unsigned char) /*, dims, <bounds> */};

  //    28+      15,  34,  13,  14,  17,  18, 114,  37,  40,  24,  82,  39,
  //    29+      74,  50,  68,  69,  38,  48,  25,  99,  61, 121, 115,  92,
  //    30+      54, 117,  66,  65,  44,  41,  63, 162,  88,  62,   0,  70,
  //    31+       0,  60,  67, 198,  94,  84,  58, 120, 147,  55,  52,  87,
  //    32+      56,  53,  72, 188, 110,  98,  64, 140, 133,  81,  85,   0,
  //    33+     116, 137, 100, 102,  90, 160, 186,  89, 154,   0, 112, 113,
  //    34+      83, 109, 126, 123,  79,  86,   0, 101,  91, 105, 170, 146,
  //    35+     151, 118, 128,  93, 139, 104,   0, 142, 193,  95, 164, 107,
  //    36+     127, 141, 166, 185, 103, 155,   0, 167,   0,   0,   0,   0,
  //    37+     144,   0,   0, 129,   0, 132, 163, 183, 131, 161, 130, 149,
  //    38+     175, 136, 125, 148, 184,   0, 177, 135, 156,   0,   0,   0,
  //    39+     157, 152, 159, 187, 145, 176, 169,   0, 165, 168, 179, 171,
  //    40+     181, 174,   0,   0,   0,   0, 197,   0, 172,   0,   0,   0,
  //    41+       0,   0,   0,   0, 194,   0, 196, 190,   0, 178,   0,   0,
  //    42+     192, 173,   0, 180, 189, 182,   0,   0,   0,   0,   0,   0,
  //    43+       0, 195,   0,   0,   0,   0,   0, 191,   0,   0,   0,   0,
  //    44+       0,   0,   0,   0,   0,   0
  //    45  %constant %string(5) %array instr(1:198) = %c

  const _imp_string5 INSTR[198] = {
      _imp_str_init("LD"),    _imp_str_init("LDA"),   _imp_str_init("LDAA"), _imp_str_init("LDAB"),
      _imp_str_init("LDB"),   _imp_str_init("LDD"),   _imp_str_init("LDS"),  _imp_str_init("LDU"),
      _imp_str_init("LDX"),   _imp_str_init("LDY"),   _imp_str_init("ST"),   _imp_str_init("STA"),
      _imp_str_init("STAA"),  _imp_str_init("STAB"),  _imp_str_init("STB"),  _imp_str_init("STD"),
      _imp_str_init("STS"),   _imp_str_init("STU"),   _imp_str_init("STX"),  _imp_str_init("STY"),
      _imp_str_init("JSR"),   _imp_str_init("BSR"),   _imp_str_init("LBSR"), _imp_str_init("BRA"),
      _imp_str_init("LBRA"),  _imp_str_init("BRN"),   _imp_str_init("LBRN"), _imp_str_init("BHI"),
      _imp_str_init("LBHI"),  _imp_str_init("BLS"),   _imp_str_init("LBLS"), _imp_str_init("BCC"),
      _imp_str_init("LBCC"),  _imp_str_init("BHS"),   _imp_str_init("LBHS"), _imp_str_init("BCS"),
      _imp_str_init("LBCS"),  _imp_str_init("BLO"),   _imp_str_init("LBLO"), _imp_str_init("BNE"),
      _imp_str_init("LBNE"),  _imp_str_init("BEQ"),   _imp_str_init("LBEQ"), _imp_str_init("BVC"),
      _imp_str_init("LBVC"),  _imp_str_init("BVS"),   _imp_str_init("LBVS"), _imp_str_init("BPL"),
      _imp_str_init("LBPL"),  _imp_str_init("BMI"),   _imp_str_init("LBMI"), _imp_str_init("BGE"),
      _imp_str_init("LBGE"),  _imp_str_init("BLT"),   _imp_str_init("LBLT"), _imp_str_init("BGT"),
      _imp_str_init("LBGT"),  _imp_str_init("BLE"),   _imp_str_init("LBLE"), _imp_str_init("JMP"),
      _imp_str_init("RTS"),   _imp_str_init("SUB"),   _imp_str_init("SUBA"), _imp_str_init("SUBB"),
      _imp_str_init("SUBD"),  _imp_str_init("ADD"),   _imp_str_init("ADDA"), _imp_str_init("ADDB"),
      _imp_str_init("ADDD"),  _imp_str_init("CMP"),   _imp_str_init("CMPA"), _imp_str_init("CMPB"),
      _imp_str_init("CMPD"),  _imp_str_init("CMPS"),  _imp_str_init("CMPU"), _imp_str_init("CMPX"),
      _imp_str_init("CMPY"),  _imp_str_init("CPX"),   _imp_str_init("LEA"),  _imp_str_init("LEAS"),
      _imp_str_init("LEAU"),  _imp_str_init("LEAX"),  _imp_str_init("LEAY"), _imp_str_init("EXG"),
      _imp_str_init("TFR"),   _imp_str_init("DEC"),   _imp_str_init("DECA"), _imp_str_init("DECB"),
      _imp_str_init("INC"),   _imp_str_init("INCA"),  _imp_str_init("INCB"), _imp_str_init("CLR"),
      _imp_str_init("CLRA"),  _imp_str_init("CLRB"),  _imp_str_init("INX"),  _imp_str_init("DEX"),
      _imp_str_init("AND"),   _imp_str_init("ANDA"),  _imp_str_init("ANDB"), _imp_str_init("OR"),
      _imp_str_init("ORA"),   _imp_str_init("ORAA"),  _imp_str_init("ORAB"), _imp_str_init("ORB"),
      _imp_str_init("EOR"),   _imp_str_init("EORA"),  _imp_str_init("EORB"), _imp_str_init("BIT"),
      _imp_str_init("BITA"),  _imp_str_init("BITB"),  _imp_str_init("LSR"),  _imp_str_init("LSRA"),
      _imp_str_init("LSRB"),  _imp_str_init("ROR"),   _imp_str_init("RORA"), _imp_str_init("RORB"),
      _imp_str_init("ASR"),   _imp_str_init("ASRA"),  _imp_str_init("ASRB"), _imp_str_init("ASL"),
      _imp_str_init("ASLA"),  _imp_str_init("ASLB"),  _imp_str_init("LSL"),  _imp_str_init("LSLA"),
      _imp_str_init("LSLB"),  _imp_str_init("ROL"),   _imp_str_init("ROLA"), _imp_str_init("ROLB"),
      _imp_str_init("SBC"),   _imp_str_init("SBCA"),  _imp_str_init("SBCB"), _imp_str_init("ADC"),
      _imp_str_init("ADCA"),  _imp_str_init("ADCB"),  _imp_str_init("NEG"),  _imp_str_init("NEGA"),
      _imp_str_init("NEGB"),  _imp_str_init("COM"),   _imp_str_init("COMA"), _imp_str_init("COMB"),
      _imp_str_init("TST"),   _imp_str_init("TSTA"),  _imp_str_init("TSTB"), _imp_str_init("TSX"),
      _imp_str_init("INS"),   _imp_str_init("PUL"),   _imp_str_init("PULA"), _imp_str_init("PULB"),
      _imp_str_init("PULS"),  _imp_str_init("PULU"),  _imp_str_init("PSH"),  _imp_str_init("PSHA"),
      _imp_str_init("PSHB"),  _imp_str_init("PSHS"),  _imp_str_init("PSHU"), _imp_str_init("DES"),
      _imp_str_init("TXS"),   _imp_str_init("RTI"),   _imp_str_init("WAI"),  _imp_str_init("CWAI"),
      _imp_str_init("ANDCC"), _imp_str_init("ORCC"),  _imp_str_init("SWI"),  _imp_str_init("SWI1"),
      _imp_str_init("SWI2"),  _imp_str_init("SWI3"),  _imp_str_init("SBA"),  _imp_str_init("CBA"),
      _imp_str_init("ABA"),   _imp_str_init("TAB"),   _imp_str_init("TBA"),  _imp_str_init("DAA"),
      _imp_str_init("NOP"),   _imp_str_init("TAP"),   _imp_str_init("TPA"),  _imp_str_init("MUL"),
      _imp_str_init("SEX"),   _imp_str_init("ABX"),   _imp_str_init("SYNC"), _imp_str_init("CLV"),
      _imp_str_init("SEV"),   _imp_str_init("CLC"),   _imp_str_init("SEC"),  _imp_str_init("CLI"),
      _imp_str_init("SEI"),   _imp_str_init("FCB"),   _imp_str_init("FDB"),  _imp_str_init("EQU"),
      _imp_str_init("ORG"),   _imp_str_init("SETDP"), _imp_str_init("RMB"),  _imp_str_init("FCC"),
      _imp_str_init("NAM"),   _imp_str_init("OPT"),   _imp_str_init("PAGE"), _imp_str_init("SPC"),
      _imp_str_init("MON"),   _imp_str_init("END")};
  struct _imp_dv INSTR_dv = {INSTR, sizeof(_imp_string) /*, dims, <bounds> */};

  //    46+    "LD","LDA","LDAA","LDAB","LDB","LDD","LDS","LDU","LDX",
  //    47+    "LDY","ST","STA","STAA","STAB","STB","STD","STS","STU",
  //    48+    "STX","STY","JSR","BSR","LBSR","BRA","LBRA","BRN","LBRN",
  //    49+    "BHI","LBHI","BLS","LBLS","BCC","LBCC","BHS","LBHS","BCS",
  //    50+    "LBCS","BLO","LBLO","BNE","LBNE","BEQ","LBEQ","BVC","LBVC",
  //    51+    "BVS","LBVS","BPL","LBPL","BMI","LBMI","BGE","LBGE","BLT",
  //    52+    "LBLT","BGT","LBGT","BLE","LBLE","JMP","RTS","SUB","SUBA",
  //    53+    "SUBB","SUBD","ADD","ADDA","ADDB","ADDD","CMP","CMPA","CMPB",
  //    54+    "CMPD","CMPS","CMPU","CMPX","CMPY","CPX","LEA","LEAS","LEAU",
  //    55+    "LEAX","LEAY","EXG","TFR","DEC","DECA","DECB","INC","INCA",
  //    56+    "INCB","CLR","CLRA","CLRB","INX","DEX","AND","ANDA","ANDB",
  //    57+    "OR","ORA","ORAA","ORAB","ORB","EOR","EORA","EORB","BIT",
  //    58+    "BITA","BITB","LSR","LSRA","LSRB","ROR","RORA","RORB","ASR",
  //    59+    "ASRA","ASRB","ASL","ASLA","ASLB","LSL","LSLA","LSLB","ROL",
  //    60+    "ROLA","ROLB","SBC","SBCA","SBCB","ADC","ADCA","ADCB","NEG",
  //    61+    "NEGA","NEGB","COM","COMA","COMB","TST","TSTA","TSTB","TSX",
  //    62+    "INS","PUL","PULA","PULB","PULS","PULU","PSH","PSHA","PSHB",
  //    63+    "PSHS","PSHU","DES","TXS","RTI","WAI","CWAI","ANDCC","ORCC",
  //    64+    "SWI","SWI1","SWI2","SWI3","SBA","CBA","ABA","TAB","TBA",
  //    65+    "DAA","NOP","TAP","TPA","MUL","SEX","ABX","SYNC","CLV",
  //    66+    "SEV","CLC","SEC","CLI","SEI","FCB","FDB","EQU","ORG",
  //    67+    "SETDP","RMB","FCC","NAM","OPT","PAGE","SPC","MON","END"
  //    68
  //    69  %constant %integer %array icode(1:198) = %c

  const int ICODE[198] = {
      134,   134,  134,   198,   198,   204,   4302,  206,   142,   4238, 135, 135,   135,  199, 199,   205, 4303, 207,
      143,   4239, 141,   141,   141,   32,    32,    8448,  4129,  34,   34,  35,    35,   36,  36,    36,  36,   37,
      37,    37,   37,    38,    38,    39,    39,    40,    40,    41,   41,  42,    42,   43,  43,    44,  44,   45,
      45,    46,   46,    47,    47,    14,    57,    128,   128,   192,  131, 139,   139,  203, 195,   129, 129,  193,
      4227,  4492, 4483,  140,   4236,  140,   48,    50,    51,    48,   49,  30,    31,   10,  74,    90,  12,   76,
      92,    15,   79,    95,    12289, 12319, 132,   132,   196,   138,  138, 138,   202,  202, 136,   136, 200,  133,
      133,   197,  4,     68,    84,    6,     70,    86,    7,     71,   87,  8,     72,   88,  8,     72,  88,   9,
      73,    89,   130,   130,   194,   137,   137,   201,   0,     64,   80,  3,     67,   83,  13,    77,  93,   8001,
      12897, 53,   13570, 13572, 53,    55,    52,    13314, 13316, 52,   54,  12927, 7956, 59,  15615, 60,  28,   26,
      63,    63,   4159,  4415,  41184, 41440, 44000, 35165, 38989, 25,   18,  8074,  8104, 61,  29,    58,  19,   7421,
      6658,  7422, 6657,  7407,  6672,  0,     0,     0,     0,     0,    0,   0,     0,    0,   0,     0,   0,    0};
  struct _imp_dv ICODE_dv = {ICODE, sizeof(int) /*, dims, <bounds> */};

  //    70+    16_86,16_86,16_86,16_C6,16_C6,16_CC,16_10CE,16_CE,16_8E,
  //    71+    16_108E,16_87,16_87,16_87,16_C7,16_C7,16_CD,16_10CF,16_CF,
  //    72+    16_8F,16_108F,16_8D,16_8D,16_8D,16_20,16_20,16_2100,16_1021,
  //    73+    16_22,16_22,16_23,16_23,16_24,16_24,16_24,16_24,16_25,
  //    74+    16_25,16_25,16_25,16_26,16_26,16_27,16_27,16_28,16_28,
  //    75+    16_29,16_29,16_2A,16_2A,16_2B,16_2B,16_2C,16_2C,16_2D,
  //    76+    16_2D,16_2E,16_2E,16_2F,16_2F,16_0E,16_39,16_80,16_80,
  //    77+    16_C0,16_83,16_8B,16_8B,16_CB,16_C3,16_81,16_81,16_C1,
  //    78+    16_1083,16_118C,16_1183,16_8C,16_108C,16_8C,16_30,16_32,16_33,
  //    79+    16_30,16_31,16_1E,16_1F,16_0A,16_4A,16_5A,16_0C,16_4C,
  //    80+    16_5C,16_0F,16_4F,16_5F,16_3001,16_301F,16_84,16_84,16_C4,
  //    81+    16_8A,16_8A,16_8A,16_CA,16_CA,16_88,16_88,16_C8,16_85,
  //    82+    16_85,16_C5,16_04,16_44,16_54,16_06,16_46,16_56,16_07,
  //    83+    16_47,16_57,16_08,16_48,16_58,16_08,16_48,16_58,16_09,
  //    84+    16_49,16_59,16_82,16_82,16_C2,16_89,16_89,16_C9,16_00,
  //    85+    16_40,16_50,16_03,16_43,16_53,16_0D,16_4D,16_5D,16_1F41,
  //    86+    16_3261,16_35,16_3502,16_3504,16_35,16_37,16_34,16_3402,16_3404,
  //    87+    16_34,16_36,16_327F,16_1F14,16_3B,16_3CFF,16_3C,16_1C,16_1A,
  //    88+    16_3F,16_3F,16_103F,16_113F,16_A0E0,16_A1E0,16_ABE0,16_895D,16_984D,
  //    89+    16_19,16_12,16_1F8A,16_1FA8,16_3D,16_1D,16_3A,16_13,16_1CFD,
  //    90+    16_1A02,16_1CFE,16_1A01,16_1CEF,16_1A10,16_00,16_00,16_00,16_00,
  //    91+    16_00,16_00,16_00,16_00,16_00,16_00,16_00,16_00,16_00
  //    92  %constant %byte %integer %array itype(1:198) = %c

  const unsigned char ITYPE[198] = {
      6,  4,  12, 12, 12, 9,  9,  9, 9,  9,  10, 5,  13, 13, 13, 13, 13, 13, 13, 13, 13, 3,  3,  3,  3,  2,  24, 3,  3,
      3,  3,  3,  3,  3,  3,  3,  3, 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  14, 1,  8,  12, 12, 9,  8, 12, 12, 9,  7,  12, 12, 9,  9,  9,  9,  9,  9,  16, 17, 17, 17, 17, 18, 18, 15, 1,
      1,  15, 1,  1,  15, 1,  1,  2, 2,  11, 12, 12, 11, 4,  12, 12, 12, 11, 12, 12, 11, 12, 12, 15, 1,  1,  15, 1,  1,
      15, 1,  1,  15, 1,  1,  15, 1, 1,  15, 1,  1,  11, 12, 12, 11, 12, 12, 15, 1,  1,  15, 1,  1,  15, 1,  1,  2,  2,
      19, 2,  2,  20, 20, 19, 2,  2, 20, 20, 2,  2,  1,  2,  21, 21, 21, 23, 1,  1,  1,  25, 25, 25, 22, 22, 1,  1,  2,
      2,  1,  1,  1,  1,  2,  2,  2, 2,  2,  2,  26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37};
  struct _imp_dv ITYPE_dv = {ITYPE, sizeof(unsigned char) /*, dims, <bounds> */};

  //    93+      6,  4, 12, 12, 12,  9,  9,  9,  9,  9, 10,  5, 13, 13, 13,
  //    94+     13, 13, 13, 13, 13, 13,  3,  3,  3,  3,  2, 24,  3,  3,  3,
  //    95+      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
  //    96+      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 14,
  //    97+      1,  8, 12, 12,  9,  8, 12, 12,  9,  7, 12, 12,  9,  9,  9,
  //    98+      9,  9,  9, 16, 17, 17, 17, 17, 18, 18, 15,  1,  1, 15,  1,
  //    99+      1, 15,  1,  1,  2,  2, 11, 12, 12, 11,  4, 12, 12, 12, 11,
  //   100+     12, 12, 11, 12, 12, 15,  1,  1, 15,  1,  1, 15,  1,  1, 15,
  //   101+      1,  1, 15,  1,  1, 15,  1,  1, 11, 12, 12, 11, 12, 12, 15,
  //   102+      1,  1, 15,  1,  1, 15,  1,  1,  2,  2, 19,  2,  2, 20, 20,
  //   103+     19,  2,  2, 20, 20,  2,  2,  1,  2, 21, 21, 21, 23,  1,  1,
  //   104+      1, 25, 25, 25, 22, 22,  1,  1,  2,  2,  1,  1,  1,  1,  2,
  //   105+      2,  2,  2,  2,  2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
  //   106+     36, 37, 37
  //   107  %constant %integer %array icycles(1:198) = %c

  const int ICYCLES[198] = {
      2,  2,  2,  2,  2, 3, 4, 3, 3, 4, 2,  2, 2, 2, 2, 3, 4, 3, 3, 4, 5, 7, 7, 3, 3, 3,  5,  3,  3, 3, 3,  3,  3,
      3,  3,  3,  3,  3, 3, 3, 3, 3, 3, 3,  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,  1,  5,  2, 2, 2,  4,  2,
      2,  2,  4,  2,  2, 2, 5, 5, 5, 4, 5,  4, 2, 2, 2, 2, 2, 8, 7, 2, 2, 2, 2, 2, 2, 2,  2,  2,  5, 5, 2,  2,  2,
      2,  2,  2,  2,  2, 2, 2, 2, 2, 2, 2,  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  2,  2,  2, 2, 2,  2,  2,
      2,  2,  2,  2,  2, 2, 2, 2, 2, 2, 2,  6, 5, 5, 6, 6, 5, 5, 5, 6, 6, 5, 5, 5, 6, 15, 21, 21, 3, 3, 19, 19, 20,
      20, 11, 11, 11, 8, 8, 2, 2, 6, 6, 11, 2, 3, 2, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0, 0,  0,  0};
  struct _imp_dv ICYCLES_dv = {ICYCLES, sizeof(int) /*, dims, <bounds> */};

  //   108+      2,  2,  2,  2,  2,  3,  4,  3,  3,  4,  2,  2,  2,  2,  2,
  //   109+      3,  4,  3,  3,  4,  5,  7,  7,  3,  3,  3,  5,  3,  3,  3,
  //   110+      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
  //   111+      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  1,
  //   112+      5,  2,  2,  2,  4,  2,  2,  2,  4,  2,  2,  2,  5,  5,  5,
  //   113+      4,  5,  4,  2,  2,  2,  2,  2,  8,  7,  2,  2,  2,  2,  2,
  //   114+      2,  2,  2,  2,  5,  5,  2,  2,  2,  2,  2,  2,  2,  2,  2,
  //   115+      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
  //   116+      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
  //   117+      2,  2,  2,  2,  2,  2,  2,  2,  6,  5,  5,  6,  6,  5,  5,
  //   118+      5,  6,  6,  5,  5,  5,  6, 15, 21, 21,  3,  3, 19, 19, 20,
  //   119+     20, 11, 11, 11,  8,  8,  2,  2,  6,  6, 11,  2,  3,  2,  3,
  //   120+      3,  3,  3,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  //   121+      0,  0,  0
  //   122  %constant %integer no options = 51
  //   123  %constant %string(10) %array option text(1:no options) = %c

  const _imp_string10 OPTIONTEXT[51] = {
      _imp_str_init("BLANK"), _imp_str_init("B"),        _imp_str_init("NOBLANK"), _imp_str_init("NOB"),
      _imp_str_init("CYCLE"), _imp_str_init("C"),        _imp_str_init("NOCYCLE"), _imp_str_init("NOC"),
      _imp_str_init("DB8"),   _imp_str_init("DB10"),     _imp_str_init("DB16"),    _imp_str_init("ERROR"),
      _imp_str_init("E"),     _imp_str_init("SERROR"),   _imp_str_init("SER"),     _imp_str_init("NOERROR"),
      _imp_str_init("NOE"),   _imp_str_init("FULL"),     _imp_str_init("F"),       _imp_str_init("NOFULL"),
      _imp_str_init("NOF"),   _imp_str_init("GENERATE"), _imp_str_init("G"),       _imp_str_init("NOGENERATE"),
      _imp_str_init("NOG"),   _imp_str_init("LIST"),     _imp_str_init("L"),       _imp_str_init("SLIST"),
      _imp_str_init("SLIS"),  _imp_str_init("NOLIST"),   _imp_str_init("NOL"),     _imp_str_init("PAGE"),
      _imp_str_init("P"),     _imp_str_init("NOPAGE"),   _imp_str_init("NOP"),     _imp_str_init("SYMBOL"),
      _imp_str_init("S"),     _imp_str_init("NOSYMBOL"), _imp_str_init("NOS"),     _imp_str_init("TAB"),
      _imp_str_init("T"),     _imp_str_init("NOTAB"),    _imp_str_init("NOT"),     _imp_str_init("WRAP"),
      _imp_str_init("W"),     _imp_str_init("NOWRAP"),   _imp_str_init("NOW"),     _imp_str_init("XREF"),
      _imp_str_init("X"),     _imp_str_init("NOXREF"),   _imp_str_init("NOX")};
  struct _imp_dv OPTIONTEXT_dv = {OPTIONTEXT, sizeof(_imp_string) /*, dims, <bounds> */};

  auto _imp_string255 LC(_imp_string255 SOURCE);

  auto int MATCHES(_imp_string255 SOURCE, _imp_string255 PATTERN, int MIN, int *I);

  auto int ISTYPED(_imp_string255 SOURCE, _imp_string255 * FILE);

  auto void READLINE(void);

  auto void NEXTCHAR(void);

  auto void SKIPBLANKS(void);

  auto int MOREITEMS(void);

  auto int GETNAME(int *NID);

  auto int GETOPTION(int *OPT);

  auto int GETINSTR(int *IID);

  auto int GETOPD(int *OPD);

  auto int GETTERM(int *OPD);

  auto int GETEXPRESSION(int *OPD);

  auto void EVALUATE(int *A, int B, unsigned char OP);

  auto int GETCONST(int *CVAL);

  auto void ANALISEOPERAND(int ECA, int *POST, int *OPD, int *TYPE, int *CYCLES);

  auto void OUTSYMBOL(unsigned char CHAR);

  auto void OUTTAG(int *I, int *J, int COL);

  auto void INSTROUT(int OP, int POST, int OPD, int B, int CYC);

  auto void CLOSE(void);

  auto void FAULT(_imp_string63 S);

  auto void NLINE(int N);

  auto void PRINTNUMBER(int N, int D);

  auto int ACCUMULATOR(void);

  auto int ACC(unsigned char ACCID);

  auto int AUTOINDEXED(int *POST, int *CYCLES);

  auto int CC(void);

  auto int DP(void);

  auto int PC(void);

  auto int PCRELATIVE(void);

  auto int INDEXREG(int *REG);

  auto int TRANSFERREG(int *REG);

  auto void SQS(int L, int R);

  //   124+    "BLANK", "B", "NOBLANK", "NOB", "CYCLE", "C", "NOCYCLE", "NOC",
  //   125+    "DB8", "DB10", "DB16", "ERROR", "E", "SERROR", "SER", "NOERROR",
  //   126+    "NOE", "FULL", "F", "NOFULL", "NOF",  "GENERATE", "G", "NOGENERATE",
  //   127+    "NOG", "LIST", "L", "SLIST", "SLIS", "NOLIST", "NOL", "PAGE", "P",
  //   128+    "NOPAGE", "NOP", "SYMBOL", "S", "NOSYMBOL", "NOS", "TAB", "T",
  //   129+    "NOTAB", "NOT", "WRAP", "W", "NOWRAP", "NOW", "XREF", "X", "NOXREF",
  //   130+    "NOX"
  //   131  %string(255) %function %spec lc(%string(255) source)
  //   132  %predicate %spec matches(%string(255) source, pattern,
  //   133+       %integer min, %integer %name i)
  //   134  %predicate %spec is typed(%string(255) source, %string(255) %name file)
  //   135  %routine %spec read line
  //   136  %routine %spec next char
  //   137  %routine %spec skip blanks
  //   138  %predicate %spec more items
  //   139  %integerfn %spec get name(%integername nid)
  //   140  %predicate %spec get option(%integer %name opt)
  //   141  %predicate %spec get instr(%integername id)
  //   142  %integerfn %spec get opd(%integername opd)
  //   143  %integer %function %spec get term(%integer %name opd)
  //   144  %integer %function %spec get expression(%integer %name opd)
  //   145  %routine %spec evaluate(%integer %name a, %integer b, %byte %integer op)
  //   146  %integerfn %spec get const(%integername cval)
  //   147  %routine %spec analise operand(%integer eca,
  //   148+                   %integer %name post, opd, type, cycles)
  //   149  %routine %spec out symbol(%byte %integer char)
  //   150  %routine %spec out tag(%integer %name i, j, %integer col)
  //   151  %routine %spec instr out(%integer op, post,opd,b, cyc)
  //   152  %routine %spec close
  //   153  %routine %spec fault(%string(63) s)
  //   154  %routine %spec nline(%integer n)
  //   155  %routine %spec print number(%integer n,d)
  //   156  %predicate %spec accumulator
  //   157  %predicate %spec acc(%byte %integer acc id)
  //   158  %predicate %spec auto indexed(%integer %name post, cycles)
  //   159  %predicate %spec cc
  //   160  %predicate %spec dp
  //   161  %predicate %spec pc
  //   162  %predicate %spec pc relative
  //   163  %predicate %spec index reg(%integer %name reg)
  //   164  %predicate %spec transfer reg(%integer %name reg)
  //   165  %routine %spec sqs(%integer l, r)
  //   166  %byte %integer %array buffer(1:16)

  unsigned char BUFFER[16];
  struct _imp_dv BUFFER_dv = {BUFFER, sizeof(unsigned char) /*, dims, <bounds> */};

  //   167  %byteinteger %array line(1:max line+1)

  unsigned char LINE[512 + 1 - 1 + 1];
  struct _imp_dv LINE_dv = {LINE, sizeof(unsigned char) /*, dims, <bounds> */};

  //   168  %integer ca, pass, faults, lp, opd, iid, lid, ln, nnames, i, j, k, opt,

  int CA;
  int PASS;
  int FAULTS;
  int LP;
  int OPD;
  int IID;
  int LID;
  int LN;
  int NNAMES;
  int I;
  int J;
  int K;
  int OPT;
  int ORDER;
  int CONSISTENT;
  int LASTCONSISTENT;
  int HEADSET;
  int PRESCHAR;
  int DELIM;
  int DRAD;
  int BCHAR;
  int PFLAG;
  int SFLAG;
  int GFLAG;
  int EFLAG;
  int LFLAG;
  int CFLAG;
  int WFLAG;
  int TFLAG;
  int XFLAG;
  int CONT;
  int SP1;
  int SP2;
  int SP3;
  int OLDCA;
  int MCYCLES;
  int NONDENSE;
  int ACCOP;
  int BUFFERCA;
  int BP;
  int L;
  int XXENTRIES;
  int POST;
  int TYPE;
  int ACCFAULT;
  int DPCONTENTS;
  int FFLAG;
  int OSTARTED;
  int ECA;
  int LOOKAHEAD;
  int DIFF;
  int NOLONGS;
  int LASTNOLONGS;

  //   169+    order, consistent, last consistent, headset, pres char, delim, drad,
  //   170+    bchar, pflag, sflag, gflag, eflag, lflag, cflag, wflag, tflag, xflag,
  //   171+    cont, sp1, sp2, sp3, old ca, mcycles, non dense, accop, buffer ca, bp,
  //   172+    l, xxentries, post, type, acc fault, dp contents, fflag, ostarted,
  //   173+    eca, look ahead, diff, no longs, last no longs
  //   174  %constant %integer nhash=67
  //   175  %integer %array hnlink(0:nhash-1)

  int HNLINK[67 - 1 + 1];
  struct _imp_dv HNLINK_dv = {HNLINK, sizeof(int) /*, dims, <bounds> */};

  //   176  %string(6)%array name(1:names)

  _imp_string6 NAME[1023];
  struct _imp_dv NAME_dv = {NAME, sizeof(_imp_string) /*, dims, <bounds> */};

  //   177  %integer %array nval, xhead, ndiff, nlink(1:names)

  int NVAL[1023];
  struct _imp_dv NVAL_dv = {NVAL, sizeof(int) /*, dims, <bounds> */};

  int XHEAD[1023];
  struct _imp_dv XHEAD_dv = {XHEAD, sizeof(int) /*, dims, <bounds> */};

  int NDIFF[1023];
  struct _imp_dv NDIFF_dv = {NDIFF, sizeof(int) /*, dims, <bounds> */};

  int NLINK[1023];
  struct _imp_dv NLINK_dv = {NLINK, sizeof(int) /*, dims, <bounds> */};

  //   178  %byteinteger%array nass(1:names)

  unsigned char NASS[1023];
  struct _imp_dv NASS_dv = {NASS, sizeof(unsigned char) /*, dims, <bounds> */};

  //   179  %integer %array xentry, xlink(1:xentries)

  int XENTRY[4096];
  struct _imp_dv XENTRY_dv = {XENTRY, sizeof(int) /*, dims, <bounds> */};

  int XLINK[4096];
  struct _imp_dv XLINK_dv = {XLINK, sizeof(int) /*, dims, <bounds> */};

  //   180  %switch option action(-1:no options)

  int OPTIONACTION_index;
  int OPTIONACTION_line;
  char *OPTIONACTION_file;
  static const void *OPTIONACTION[53] = {
      &&case_OPTIONACTION_M1, &&case_OPTIONACTION_0,  &&case_OPTIONACTION_1,  &&case_OPTIONACTION_2,
      &&case_OPTIONACTION_3,  &&case_OPTIONACTION_4,  &&case_OPTIONACTION_5,  &&case_OPTIONACTION_6,
      &&case_OPTIONACTION_7,  &&case_OPTIONACTION_8,  &&case_OPTIONACTION_9,  &&case_OPTIONACTION_10,
      &&case_OPTIONACTION_11, &&case_OPTIONACTION_12, &&case_OPTIONACTION_13, &&case_OPTIONACTION_14,
      &&case_OPTIONACTION_15, &&case_OPTIONACTION_16, &&case_OPTIONACTION_17, &&case_OPTIONACTION_18,
      &&case_OPTIONACTION_19, &&case_OPTIONACTION_20, &&case_OPTIONACTION_21, &&case_OPTIONACTION_22,
      &&case_OPTIONACTION_23, &&case_OPTIONACTION_24, &&case_OPTIONACTION_25, &&case_OPTIONACTION_26,
      &&case_OPTIONACTION_27, &&case_OPTIONACTION_28, &&case_OPTIONACTION_29, &&case_OPTIONACTION_30,
      &&case_OPTIONACTION_31, &&case_OPTIONACTION_32, &&case_OPTIONACTION_33, &&case_OPTIONACTION_34,
      &&case_OPTIONACTION_35, &&case_OPTIONACTION_36, &&case_OPTIONACTION_37, &&case_OPTIONACTION_38,
      &&case_OPTIONACTION_39, &&case_OPTIONACTION_40, &&case_OPTIONACTION_41, &&case_OPTIONACTION_42,
      &&case_OPTIONACTION_43, &&case_OPTIONACTION_44, &&case_OPTIONACTION_45, &&case_OPTIONACTION_46,
      &&case_OPTIONACTION_47, &&case_OPTIONACTION_48, &&case_OPTIONACTION_49, &&case_OPTIONACTION_50,
      &&case_OPTIONACTION_51};

  //   181  %switch itype1,itype3(1:37)

  int ITYPE1_index;
  int ITYPE1_line;
  char *ITYPE1_file;
  static const void *ITYPE1[37] = {
      &&case_ITYPE1_1,  &&case_ITYPE1_2,  &&case_ITYPE1_3,  &&case_ITYPE1_4,  &&case_ITYPE1_5,  &&case_ITYPE1_6,
      &&case_ITYPE1_7,  &&case_ITYPE1_8,  &&case_ITYPE1_9,  &&case_ITYPE1_10, &&case_ITYPE1_11, &&case_ITYPE1_12,
      &&case_ITYPE1_13, &&case_ITYPE1_14, &&case_ITYPE1_15, &&case_ITYPE1_16, &&case_ITYPE1_17, &&case_ITYPE1_18,
      &&case_ITYPE1_19, &&case_ITYPE1_20, &&case_ITYPE1_21, &&case_ITYPE1_22, &&case_ITYPE1_23, &&case_ITYPE1_24,
      &&case_ITYPE1_25, &&case_ITYPE1_26, &&case_ITYPE1_27, &&case_ITYPE1_28, &&case_ITYPE1_29, &&case_ITYPE1_30,
      &&case_ITYPE1_31, &&case_ITYPE1_32, &&case_ITYPE1_33, &&case_ITYPE1_34, &&case_ITYPE1_35, &&case_ITYPE1_36,
      &&case_ITYPE1_37};

  int ITYPE3_index;
  int ITYPE3_line;
  char *ITYPE3_file;
  static const void *ITYPE3[37] = {
      &&case_ITYPE3_1,  &&case_ITYPE3_2,  &&case_ITYPE3_3,  &&case_ITYPE3_4,  &&case_ITYPE3_5,  &&case_ITYPE3_6,
      &&case_ITYPE3_7,  &&case_ITYPE3_8,  &&case_ITYPE3_9,  &&case_ITYPE3_10, &&case_ITYPE3_11, &&case_ITYPE3_12,
      &&case_ITYPE3_13, &&case_ITYPE3_14, &&case_ITYPE3_15, &&case_ITYPE3_16, &&case_ITYPE3_17, &&case_ITYPE3_18,
      &&case_ITYPE3_19, &&case_ITYPE3_20, &&case_ITYPE3_21, &&case_ITYPE3_22, &&case_ITYPE3_23, &&case_ITYPE3_24,
      &&case_ITYPE3_25, &&case_ITYPE3_26, &&case_ITYPE3_27, &&case_ITYPE3_28, &&case_ITYPE3_29, &&case_ITYPE3_30,
      &&case_ITYPE3_31, &&case_ITYPE3_32, &&case_ITYPE3_33, &&case_ITYPE3_34, &&case_ITYPE3_35, &&case_ITYPE3_36,
      &&case_ITYPE3_37};

  //   182  %string(line width-37) header

  _imp_string41 HEADER;

  //   183  %string(*) %name file

  _imp_string *FILE;

  //   184  %string(255) params, source, list, object, dummy

  _imp_string255 PARAMS;
  _imp_string255 SOURCE;
  _imp_string255 LIST;
  _imp_string255 OBJECT;
  _imp_string255 DUMMY;

  //   185
  //   186     %on %event 9 %start

  if (!_imp_on_event(9)) goto L_0001;

    //   187        select output(0)

  _imp_SELECTOUTPUT(0);

  //   188        print string(event_message{source." does not exist."})

  _imp_PRINTSTRING(
      /* clang-format off */
*({  __typeof__(_imp_string255) tmp = _imp_EVENT().MESSAGE/*q*/;  (_imp_string255 *)&tmp;  })
      /* clang-format on */
  );

  //   189        new line

  _imp_NEWLINE();

  //   190        %stop

  _imp_stop(0);

  //   191     %finish

L_0001:;

//   192
//   193  !  params = ""
//   194  !  select input(0)
//   195  !  read symbol(i)
//   196  !  params = params.to string(i) %and read symbol(i) %while i#nl
//   197  !  params = lc(params)
//   198     params = lc(cliparam)


  /* clang-format off */
_imp_strncpy(/*?*/&PARAMS, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = LC(*({  __typeof__(_imp_string255) tmp = _imp_CLIPARAM()/*q*/;  (_imp_string255 *)&tmp;  })); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   199     source = ""


  /* clang-format off */
_imp_strncpy(/*?*/&SOURCE, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   200     list = ".n"


  /* clang-format off */
_imp_strncpy(/*?*/&LIST, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(".n"); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   201     object = ""


  /* clang-format off */
_imp_strncpy(/*?*/&OBJECT, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   202     dummy = ""


  /* clang-format off */
_imp_strncpy(/*?*/&DUMMY, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   203     %cycle

L_0002:;

//   204        i = 1

  I = 1;

  //   205        i = i+1 %while i<=length(params) %and charno(params, i)=' '

L_0003:;
  if (I > *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS)) goto L_0004;
  if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PARAMS, I) != 32) goto L_0004;
  I = I + 1;
  goto L_0003;
L_0004:;

//   206        %exit %if i>length(params)

  if (I <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS)) goto L_0005;
  goto L_0006;
L_0005:;

//   207        params = substring(params, i, length(params))


  /* clang-format off */
_imp_strncpy(/*?*/&PARAMS, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_SUBSTRING((_imp_string255 *)/*p*//*?*/&PARAMS, I, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&PARAMS)); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   208        %if charno(params, 1)='/' %start

  if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PARAMS, 1) != 47) goto L_0007;

    //   209           params = substring(params, 2, length(params))


  /* clang-format off */
_imp_strncpy(/*?*/&PARAMS, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_SUBSTRING((_imp_string255 *)/*p*//*?*/&PARAMS, 2, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&PARAMS)); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   210           %if matches(params, "list", 1, i) %start

  if (!(MATCHES(
          /* clang-format off */
*({  __typeof__(_imp_string255) tmp = PARAMS/*q*/;  (_imp_string255 *)&tmp;  })
          /* clang-format on */
          ,
          _imp_str_literal("list"), 1, /*?*/ &I)))
    goto L_0008;

    //   211              list = ""


  /* clang-format off */
_imp_strncpy(/*?*/&LIST, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   212              file == list

  FILE = (_imp_string *)/*?*/ &LIST;

  //   213           %finish %else %if matches(params, "object", 1, i) %start

  goto L_0009;
L_0008:;
  if (!(MATCHES(
          /* clang-format off */
*({  __typeof__(_imp_string255) tmp = PARAMS/*q*/;  (_imp_string255 *)&tmp;  })
          /* clang-format on */
          ,
          _imp_str_literal("object"), 1, /*?*/ &I)))
    goto L_000A;

    //   214              object = ""


  /* clang-format off */
_imp_strncpy(/*?*/&OBJECT, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   215              file == object

  FILE = (_imp_string *)/*?*/ &OBJECT;

  //   216           %finish %else %if matches(params, "nolist", 3, i) %start

  goto L_0009;
L_000A:;
  if (!(MATCHES(
          /* clang-format off */
*({  __typeof__(_imp_string255) tmp = PARAMS/*q*/;  (_imp_string255 *)&tmp;  })
          /* clang-format on */
          ,
          _imp_str_literal("nolist"), 3, /*?*/ &I)))
    goto L_000B;

    //   217              list = ".n"


  /* clang-format off */
_imp_strncpy(/*?*/&LIST, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(".n"); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   218              file == dummy

  FILE = (_imp_string *)/*?*/ &DUMMY;

  //   219           %finish %else %if matches(params, "noobject", 3, i) %start

  goto L_0009;
L_000B:;
  if (!(MATCHES(
          /* clang-format off */
*({  __typeof__(_imp_string255) tmp = PARAMS/*q*/;  (_imp_string255 *)&tmp;  })
          /* clang-format on */
          ,
          _imp_str_literal("noobject"), 3, /*?*/ &I)))
    goto L_000C;

    //   220              object = ".n"


  /* clang-format off */
_imp_strncpy(/*?*/&OBJECT, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(".n"); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   221              file == dummy

  FILE = (_imp_string *)/*?*/ &DUMMY;

  //   222           %else

  goto L_0009;
L_000C:;

//   223              i = 1

  I = 1;

  //   224              file == dummy

  FILE = (_imp_string *)/*?*/ &DUMMY;

  //   225           %finish

L_0009:;

//   226           %exit %if i>length(params)

  if (I <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS)) goto L_000D;
  goto L_0006;
L_000D:;

//   227           params = substring(params, i, length(params))


  /* clang-format off */
_imp_strncpy(/*?*/&PARAMS, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_SUBSTRING((_imp_string255 *)/*p*//*?*/&PARAMS, I, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&PARAMS)); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   228           %continue %unless charno(params, 1)='='

  if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PARAMS, 1) == 61) goto L_000E;
  goto L_000F;
L_000E:;

//   229           %if length(params)>1 %start

  if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS) <= 1) goto L_0010;

    //   230              params = substring(params, 2, length(params))


  /* clang-format off */
_imp_strncpy(/*?*/&PARAMS, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_SUBSTRING((_imp_string255 *)/*p*//*?*/&PARAMS, 2, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&PARAMS)); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   231           %else

  goto L_0011;
L_0010:;

//   232              params = ""


  /* clang-format off */
_imp_strncpy(/*?*/&PARAMS, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   233           %finish

L_0011:;

//   234       %else

  goto L_0012;
L_0007:;

//   235           file == source

  FILE = (_imp_string *)/*?*/ &SOURCE;

  //   236        %finish

L_0012:;

//   237        i = 1

  I = 1;

  //   238        i = i+1 %while i<=length(params) %and charno(params, i)#' ' %and %c

L_0013:;
  if (I > *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS)) goto L_0014;
  if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PARAMS, I) == 32) goto L_0014;
  if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PARAMS, I) == 47) goto L_0014;
  I = I + 1;
  goto L_0013;
L_0014:;

//   239+                                             charno(params, i)#'/'
//   240        file = substring(params, 1, i-1) %if i>1

  if (I <= 1) goto L_0015;
  *FILE = _imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &PARAMS, 1, I - 1);
L_0015:;

//   241        %exit %if i>length(params)

  if (I <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS)) goto L_0016;
  goto L_0006;
L_0016:;

//   242        params = substring(params, i, length(params))


  /* clang-format off */
_imp_strncpy(/*?*/&PARAMS, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_SUBSTRING((_imp_string255 *)/*p*//*?*/&PARAMS, I, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&PARAMS)); (void *)&tmp;}), /*max:*/255);

  /* clang-format on */

  //   243     %repeat

L_000F:;
  goto L_0002;
L_0006:;

//   244
//   245     %if source="" %start


  /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&SOURCE, (_imp_string *)/*?*/_imp_str_literal_ptr("")) != 0) goto L_0017;

    /* clang-format on */

    //   246        select output(0)

  _imp_SELECTOUTPUT(0);

  //   247        print string("No source file specified.")

  _imp_PRINTSTRING(_imp_str_literal("No source file specified."));

  //   248        new line

  _imp_NEWLINE();

  //   249        %stop

  _imp_stop(0);

  //   250     %finish

L_0017:;

//   251
//   252     source = source.".asm" %unless is typed(source, params)

  if (ISTYPED(
          /* clang-format off */
*({  __typeof__(_imp_string255) tmp = SOURCE/*q*/;  (_imp_string255 *)&tmp;  })
          /* clang-format on */
          ,
          (_imp_string255 *)/*p*/ /*?*/ &PARAMS))
    goto L_0018;

  /* clang-format off */
_imp_strncpy(/*?*/&SOURCE, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&SOURCE, (_imp_string *)/*?*/_imp_str_literal_ptr(".asm")); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/255);

/* clang-format on */
L_0018:;

//   253
//   254     list   = params %if list=""


  /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&LIST, (_imp_string *)/*?*/_imp_str_literal_ptr("")) != 0) goto L_0019;

  /* clang-format on */

  /* clang-format off */
_imp_strncpy(/*?*/&LIST, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = PARAMS; (void *)&tmp;}), /*max:*/255);

/* clang-format on */
L_0019:;

//   255     object = params %if object=""


  /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&OBJECT, (_imp_string *)/*?*/_imp_str_literal_ptr("")) != 0) goto L_001A;

  /* clang-format on */

  /* clang-format off */
_imp_strncpy(/*?*/&OBJECT, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = PARAMS; (void *)&tmp;}), /*max:*/255);

/* clang-format on */
L_001A:;

//   256     list = list.".lis" %unless is typed(list, dummy)

  if (ISTYPED(
          /* clang-format off */
*({  __typeof__(_imp_string255) tmp = LIST/*q*/;  (_imp_string255 *)&tmp;  })
          /* clang-format on */
          ,
          (_imp_string255 *)/*p*/ /*?*/ &DUMMY))
    goto L_001B;

  /* clang-format off */
_imp_strncpy(/*?*/&LIST, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&LIST, (_imp_string *)/*?*/_imp_str_literal_ptr(".lis")); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/255);

/* clang-format on */
L_001B:;

//   257     object = object.".obj" %unless is typed(object, dummy)

  if (ISTYPED(
          /* clang-format off */
*({  __typeof__(_imp_string255) tmp = OBJECT/*q*/;  (_imp_string255 *)&tmp;  })
          /* clang-format on */
          ,
          (_imp_string255 *)/*p*/ /*?*/ &DUMMY))
    goto L_001C;

  /* clang-format off */
_imp_strncpy(/*?*/&OBJECT, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&OBJECT, (_imp_string *)/*?*/_imp_str_literal_ptr(".obj")); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/255);

/* clang-format on */
L_001C:;

//   258
//   259     open input(1, source)

  _imp_OPENINPUT(1,
                 /* clang-format off */
*({  __typeof__(_imp_string255) tmp = SOURCE/*q*/;  (_imp_string255 *)&tmp;  })
                 /* clang-format on */
  );

  //   260     open output(1, object)

  _imp_OPENOUTPUT(1,
                  /* clang-format off */
*({  __typeof__(_imp_string255) tmp = OBJECT/*q*/;  (_imp_string255 *)&tmp;  })
                  /* clang-format on */
  );

  //   261     open output(2, list)

  _imp_OPENOUTPUT(2,
                  /* clang-format off */
*({  __typeof__(_imp_string255) tmp = LIST/*q*/;  (_imp_string255 *)&tmp;  })
                  /* clang-format on */
  );

  //   262     select output(2)

  _imp_SELECTOUTPUT(2);

  //   263     headset = 0

  HEADSET = 0;

  //   264     header = ""


  /* clang-format off */
_imp_strncpy(/*?*/&HEADER, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/41);

  /* clang-format on */

  //   265     drad = 8

  DRAD = 8;

  //   266     sp1 = 2

  SP1 = 2;

  //   267     sp2 = 4

  SP2 = 4;

  //   268     pflag = 3

  PFLAG = 3;

  //   269     sflag = 0

  SFLAG = 0;

  //   270     eflag = 1

  EFLAG = 1;

  //   271     gflag = 1

  GFLAG = 1;

  //   272     lflag = 2

  LFLAG = 2;

  //   273     cflag = 0

  CFLAG = 0;

  //   274     wflag = 0

  WFLAG = 0;

  //   275     tflag = 1

  TFLAG = 1;

  //   276     xflag = 0

  XFLAG = 0;

  //   277     sp3 = line width-sp1-sp2*3-cflag*3-wflag-11

  SP3 = 78 - SP1 - SP2 * 3 - CFLAG * 3 - WFLAG - 11;

  //   278     cont = 0

  CONT = 0;

  //   279     faults=0

  FAULTS = 0;

  //   280     nnames=0

  NNAMES = 0;

  //   281     xxentries = 0

  XXENTRIES = 0;

  //   282     consistent = 0

  CONSISTENT = 0;

  //   283     last consistent = 0

  LASTCONSISTENT = 0;

  //   284     last no longs = 0

  LASTNOLONGS = 0;

  //   285     hnlink(i)=0 %for i = 0, 1, nhash-1

  // %for I = 0, 1, 67 - 1 %cycle
  {
    int _final = 67 - 1;
    if (invalid_for_loop(0, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 0, 1, 67 - 1");
    I = -1;
  L_001D:
    if (I == _final) goto L_001E;
    I += 1;
    HNLINK[I] = 0;
    goto L_001D;
  }

L_001E:;

//   286     ostarted = 0

  OSTARTED = 0;

  //   287     bp = 0

  BP = 0;

  //   288     look ahead = 0

  LOOKAHEAD = 0;

  //   289  !-----------------------------------------------------------------------
  //   290     select input(1)

  _imp_SELECTINPUT(1);

  //   291     pass = 1

  PASS = 1;

  //   292     %cycle

L_0020:;

//   293        ln = 0

  LN = 0;

  //   294        dp contents = 0

  DPCONTENTS = 0;

  //   295        ca = 0

  CA = 0;

  //   296        bchar = -1

  BCHAR = -1;

  //   297        fflag = 0

  FFLAG = 0;

  //   298        no longs = 0

  NOLONGS = 0;

  //   299        %cycle

L_0021:;

//   300            read line

  READLINE();

  //   301            %continue %if pres char='*'

  if (PRESCHAR != 42) goto L_0022;
  goto L_0023;
L_0022:;

//   302            %if get name(lid)=0 %start

  if (GETNAME(/*?*/ &LID) != 0) goto L_0024;

    //   303              %if pass=1 %start

  if (PASS != 1) goto L_0025;

    //   304                 %if nass(lid)=0 %start

  if (NASS[LID - 1] != 0) goto L_0026;

    //   305                    nval(lid) = ca

  NVAL[LID - 1] = CA;

  //   306                    nass(lid) = 1

  NASS[LID - 1] = 1;

  //   307                 %else

  goto L_0027;
L_0026:;

//   308                    nval(lid) = 0

  NVAL[LID - 1] = 0;

  //   309                    nass(lid) = 2

  NASS[LID - 1] = 2;

  //   310                 %finish

L_0027:;

//   311              %finish %else %if nass(lid)=1 %and ca#nval(lid) %start

  goto L_0028;
L_0025:;
  if (NASS[LID - 1] != 1) goto L_0029;
  if (CA == NVAL[LID - 1]) goto L_0029;

    //   312                 diff = nval(lid)-ca

  DIFF = NVAL[LID - 1] - CA;

  //   313                 nval(lid) = ca

  NVAL[LID - 1] = CA;

  //   314                 %if pass=3 %start

  if (PASS != 3) goto L_002A;

    //   315                    %for i = 1, 1, consistent %cycle

  // %for I = 1, 1, CONSISTENT %cycle
  {
    int _final = CONSISTENT;
    if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, CONSISTENT");
    I = 0;
  L_002B:
    if (I == _final) goto L_002C;
    I += 1;

    //   316                       -> diff found %if ndiff(i)=diff

    if (NDIFF[I - 1] != DIFF) goto L_002E;
    goto U_1000;
  L_002E:;

  //   317                    %repeat

    goto L_002B;
  }

L_002C:;

//   318                    consistent = consistent+1

  CONSISTENT = CONSISTENT + 1;

  //   319                    ndiff(consistent) = diff

  NDIFF[CONSISTENT - 1] = DIFF;

  //   320  diff found:    %finish

U_1000:;
L_002A:;

//   321              %finish

L_0029:;
L_0028:;

//   322            %else

  goto L_002F;
L_0024:;

//   323              lid = 0

  LID = 0;

  //   324           %finish

L_002F:;

//   325           next char %while pres char=' '

L_0030:;
  if (PRESCHAR != 32) goto L_0031;
  NEXTCHAR();
  goto L_0030;
L_0031:;

//   326           %continue %unless get instr(iid)

  if (GETINSTR(/*?*/ &IID)) goto L_0032;
  goto L_0023;
L_0032:;

//   327           next char %while pres char=' '

L_0033:;
  if (PRESCHAR != 32) goto L_0034;
  NEXTCHAR();
  goto L_0033;
L_0034:;

//   328           %if itype(iid)<=25 %start

  if (ITYPE[IID - 1] > 25) goto L_0035;

    //   329              %if 0<=icode(iid)<=255 %start

  {
    // Double-sided test on ICODE[IID - 1] (Part I)
    int tmp;
    if (0 > (tmp = ICODE[IID - 1])) goto L_0036;
    // Double-sided test on ICODE[IID - 1] (Part II)
    if (tmp > 255) goto L_0036;
  }

  //   330                 ca = ca+1

  CA = CA + 1;

  //   331              %else

  goto L_0037;
L_0036:;

//   332                 ca = ca+2

  CA = CA + 2;

  //   333              %finish

L_0037:;

//   334           %finish

L_0035:;

//   335           ->itype1(itype(iid))

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = ITYPE[IID - 1];
  goto case_ITYPE1_dispatch;

  //   336  !-----------------------------------------------------------------------
  //   337  itype1(1):! implied

case_ITYPE1_1:;

//   338  itype1(2): ! 6800 special implied

case_ITYPE1_2:;

//   339           %continue

  goto L_0023;

  //   340  !-----------------------------------------------------------------------
  //   341  itype1(3):! relative

case_ITYPE1_3:;

//   342           %if pass<3 %or get opd(opd)#0 %or -128<=opd-ca-1<=127 %start

  if (PASS < 3) goto L_0039;
  if (GETOPD(/*?*/ &OPD) != 0) goto L_0039;
  {
    // Double-sided test on OPD - CA - 1 (Part I)
    int tmp;
    if (-128 > (tmp = OPD - CA - 1)) goto L_003A;
    // Double-sided test on OPD - CA - 1 (Part II)
    if (tmp > 127) goto L_003A;
  }
L_0039:;

//   343              ca = ca+1

  CA = CA + 1;

  //   344           %finish %else %if icode(iid)=16_20 %or icode(iid)=16_8D %start

  goto L_003B;
L_003A:;
  if (ICODE[IID - 1] == 32) goto L_003C;
  if (ICODE[IID - 1] != 141) goto L_003D;
L_003C:;

//   345              ca = ca+2

  CA = CA + 2;

  //   346              no longs = no longs+1

  NOLONGS = NOLONGS + 1;

  //   347           %else

  goto L_003B;
L_003D:;

//   348              ca = ca+3

  CA = CA + 3;

  //   349              no longs = no longs+1

  NOLONGS = NOLONGS + 1;

  //   350           %finish

L_003B:;

//   351           %continue

  goto L_0023;

  //   352  !-----------------------------------------------------------------------
  //   353  itype1(4): ! lda, ora

case_ITYPE1_4:;

//   354           ca = ca+1 %and %continue %if pres char='#'

  if (PRESCHAR != 35) goto L_003E;
  CA = CA + 1;
  goto L_0023;
L_003E:;

//   355           analise operand(ca, post, opd, type, mcycles)

  ANALISEOPERAND(CA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   356           %if 1<=type<=2 %start

  {
    // Double-sided test on TYPE (Part I)
    int tmp;
    if (1 > (tmp = TYPE)) goto L_003F;
    // Double-sided test on TYPE (Part II)
    if (tmp > 2) goto L_003F;
  }

  //   357              skip blanks

  SKIPBLANKS();

  //   358              -> itype1(12)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 12;
  goto case_ITYPE1_dispatch;

  //   359           %finish

L_003F:;

//   360           -> analise double

  goto U_1001;

  //   361  !----------------------------------------------------------------------
  //   362  itype1(5): ! sta

case_ITYPE1_5:;

//   363           analise operand(ca, post, opd, type, mcycles)

  ANALISEOPERAND(CA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   364           %if 1<=type<=2 %start

  {
    // Double-sided test on TYPE (Part I)
    int tmp;
    if (1 > (tmp = TYPE)) goto L_0040;
    // Double-sided test on TYPE (Part II)
    if (tmp > 2) goto L_0040;
  }

  //   365              skip blanks

  SKIPBLANKS();

  //   366              -> itype1(13)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 13;
  goto case_ITYPE1_dispatch;

  //   367           %finish

L_0040:;

//   368           -> analise double

  goto U_1001;

  //   369  !-----------------------------------------------------------------------
  //   370  itype1(6): ! ld

case_ITYPE1_6:;

//   371           %if accumulator %start

  if (!(ACCUMULATOR())) goto L_0041;

    //   372              skip blanks

  SKIPBLANKS();

  //   373              -> itype1(12)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 12;
  goto case_ITYPE1_dispatch;

  //   374           %finish %else %if acc('S') %or acc('Y') %start

L_0041:;
  if (ACC(83)) goto L_0042;
  if (!(ACC(89))) goto L_0043;
L_0042:;

//   375              ca = ca+1

  CA = CA + 1;

  //   376           %finish %else %unless acc('D') %or acc('U') %or acc('X') %start

  goto L_0044;
L_0043:;
  if (ACC(68)) goto L_0045;
  if (ACC(85)) goto L_0045;
  if (ACC(88)) goto L_0045;

    //   377              -> itype1(12)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 12;
  goto case_ITYPE1_dispatch;

  //   378           %finish

L_0045:;
L_0044:;

//   379           skip blanks

  SKIPBLANKS();

  //   380           -> itype1(9)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 9;
  goto case_ITYPE1_dispatch;

  //   381  !-----------------------------------------------------------------------
  //   382  itype1(7): ! cmp

case_ITYPE1_7:;

//   383           %if accumulator %start

  if (!(ACCUMULATOR())) goto L_0046;

    //   384              skip blanks

  SKIPBLANKS();

  //   385              -> itype1(12)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 12;
  goto case_ITYPE1_dispatch;

  //   386           %finish %else %if acc('D') %or acc('S') %or acc('U') %or %c

L_0046:;
  if (ACC(68)) goto L_0047;
  if (ACC(83)) goto L_0047;
  if (ACC(85)) goto L_0047;
  if (!(ACC(89))) goto L_0048;
L_0047:;

//   387+                         acc('Y') %start
//   388              ca = ca+1

  CA = CA + 1;

  //   389           %finish %else %unless acc('X') %start

  goto L_0049;
L_0048:;
  if (ACC(88)) goto L_004A;

    //   390              -> itype1(12)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 12;
  goto case_ITYPE1_dispatch;

  //   391           %finish

L_004A:;
L_0049:;

//   392           skip blanks

  SKIPBLANKS();

  //   393           -> itype1(9)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 9;
  goto case_ITYPE1_dispatch;

  //   394  !-----------------------------------------------------------------------
  //   395  itype1(8): ! add, sub

case_ITYPE1_8:;

//   396           %if accumulator %start

  if (!(ACCUMULATOR())) goto L_004B;

    //   397              skip blanks

  SKIPBLANKS();

  //   398              -> itype1(12)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 12;
  goto case_ITYPE1_dispatch;

  //   399           %finish %else %if acc('D') %start

L_004B:;
  if (!(ACC(68))) goto L_004C;

    //   400              skip blanks

  SKIPBLANKS();

  //   401           %else

  goto L_004D;
L_004C:;

//   402              -> itype1(12)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 12;
  goto case_ITYPE1_dispatch;

  //   403           %finish

L_004D:;

//   404  !-----------------------------------------------------------------------
//   405  itype1(9): ! immediate(3), direct, index, extend

case_ITYPE1_9:;

//   406           ca = ca+2 %and %continue %if pres char='#'

  if (PRESCHAR != 35) goto L_004E;
  CA = CA + 2;
  goto L_0023;
L_004E:;

//   407           ->itype1(13)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 13;
  goto case_ITYPE1_dispatch;

  //   408  !-----------------------------------------------------------------------
  //   409  itype1(10): ! st

case_ITYPE1_10:;

//   410           %if acc('S') %or acc('Y') %start

  if (ACC(83)) goto L_004F;
  if (!(ACC(89))) goto L_0050;
L_004F:;

//   411              ca = ca+1

  CA = CA + 1;

  //   412              skip blanks

  SKIPBLANKS();

  //   413           %finish %else %if acc('D') %or acc('U') %or acc('X') %or %c

  goto L_0051;
L_0050:;
  if (ACC(68)) goto L_0052;
  if (ACC(85)) goto L_0052;
  if (ACC(88)) goto L_0052;
  if (!(ACCUMULATOR())) goto L_0053;
L_0052:;

//   414+                      accumulator %start
//   415              skip blanks

  SKIPBLANKS();

  //   416           %finish

L_0053:;
L_0051:;

//   417           -> itype1(13)

  ITYPE1_line = __LINE__;
  ITYPE1_file = __FILE__;
  ITYPE1_index = 13;
  goto case_ITYPE1_dispatch;

  //   418  !-----------------------------------------------------------------------
  //   419  itype1(11): ! inherent*(immediate(2), direct, index, extend)

case_ITYPE1_11:;

//   420           skip blanks %if accumulator

  if (!(ACCUMULATOR())) goto L_0054;
  SKIPBLANKS();
L_0054:;

//   421  !-----------------------------------------------------------------------
//   422  itype1(12):! immediate(2), direct, index, extend

case_ITYPE1_12:;

//   423           ca = ca+1 %and %continue %if pres char='#'

  if (PRESCHAR != 35) goto L_0055;
  CA = CA + 1;
  goto L_0023;
L_0055:;

//   424  !-----------------------------------------------------------------------
//   425  itype1(13):! direct, index, extend

case_ITYPE1_13:;

//   426  itype1(14): ! jmp

case_ITYPE1_14:;

//   427           analise operand(ca, post, opd, type, mcycles)

  ANALISEOPERAND(CA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   428  analise double:

U_1001:;

//   429           %if type<=3 %start

  if (TYPE > 3) goto L_0056;

    //   430              ca = ca+1

  CA = CA + 1;

  //   431           %finish %else %if type=4 %start

  goto L_0057;
L_0056:;
  if (TYPE != 4) goto L_0058;

    //   432              ca = ca+2

  CA = CA + 2;

  //   433              no longs = no longs+1

  NOLONGS = NOLONGS + 1;

  //   434           %else

  goto L_0057;
L_0058:;

//   435              ca = ca+type-4

  CA = CA + TYPE - 4;

  //   436              no longs = no longs+type-5

  NOLONGS = NOLONGS + TYPE - 5;

  //   437           %finish

L_0057:;

//   438           %continue

  goto L_0023;

  //   439  !-----------------------------------------------------------------------
  //   440  itype1(15): ! inherent, index, extend

case_ITYPE1_15:;

//   441           analise operand(ca, post, opd, type, mcycles)

  ANALISEOPERAND(CA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   442           %if 3<=type<=4 %start

  {
    // Double-sided test on TYPE (Part I)
    int tmp;
    if (3 > (tmp = TYPE)) goto L_0059;
    // Double-sided test on TYPE (Part II)
    if (tmp > 4) goto L_0059;
  }

  //   443              ca = ca+type-2

  CA = CA + TYPE - 2;

  //   444              no longs = no longs+type-3

  NOLONGS = NOLONGS + TYPE - 3;

  //   445           %finish %else %if type>=5 %start

  goto L_005A;
L_0059:;
  if (TYPE < 5) goto L_005B;

    //   446              ca = ca+type-4

  CA = CA + TYPE - 4;

  //   447              no longs = no longs+type-5

  NOLONGS = NOLONGS + TYPE - 5;

  //   448           %finish

L_005B:;
L_005A:;

//   449           %continue

  goto L_0023;

  //   450  !-----------------------------------------------------------------------
  //   451  itype1(16): ! lea

case_ITYPE1_16:;

//   452           skip blanks %if index reg(i)

  if (!(INDEXREG(/*?*/ &I))) goto L_005C;
  SKIPBLANKS();
L_005C:;

//   453  !-----------------------------------------------------------------------
//   454  itype1(17):!  Load effective address

case_ITYPE1_17:;

//   455           analise operand(ca, post, opd, type, mcycles)

  ANALISEOPERAND(CA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   456           %if type<=5 %start

  if (TYPE > 5) goto L_005D;

    //   457              ca = ca+1

  CA = CA + 1;

  //   458           %else

  goto L_005E;
L_005D:;

//   459              ca = ca+type-4

  CA = CA + TYPE - 4;

  //   460              no longs = no longs+type-5

  NOLONGS = NOLONGS + TYPE - 5;

  //   461           %finish

L_005E:;

//   462           %continue

  goto L_0023;

  //   463  !-----------------------------------------------------------------------
  //   464  itype1(18): ! tfr, exg

case_ITYPE1_18:;

//   465  itype1(19): ! pul, psh

case_ITYPE1_19:;

//   466  itype1(20): ! pulu, puls, pshu, pshs

case_ITYPE1_20:;

//   467  itype1(21): ! cwai, andcc, orcc

case_ITYPE1_21:;

//   468  itype1(22): ! tab, tba

case_ITYPE1_22:;

//   469           ca = ca+1

  CA = CA + 1;

  //   470           %continue

  goto L_0023;

  //   471  !-----------------------------------------------------------------------
  //   472  itype1(23): ! swi

case_ITYPE1_23:;

//   473           ca = ca+1 %if acc('2') %or acc('3')

  if (ACC(50)) goto L_005F;
  if (!(ACC(51))) goto L_0060;
L_005F:;
  CA = CA + 1;
L_0060:;

//   474           %continue

  goto L_0023;

  //   475  !-----------------------------------------------------------------------
  //   476  itype1(24): ! lbrn

case_ITYPE1_24:;

//   477  itype1(25): ! sba, cba, aba

case_ITYPE1_25:;

//   478           ca = ca+2

  CA = CA + 2;

  //   479           %continue

  goto L_0023;

  //   480  !-----------------------------------------------------------------------
  //   481  itype1(26): ! fcb

case_ITYPE1_26:;

//   482           %cycle

L_0061:;

//   483              ca = ca+1

  CA = CA + 1;

  //   484              i = get opd(opd) %unless pres char=','

  if (PRESCHAR == 44) goto L_0062;
  I = GETOPD(/*?*/ &OPD);
L_0062:;

//   485           %repeat %until %not more items

  if (!(MOREITEMS())) goto L_0063;
  goto L_0061;
L_0063:;

//   486           %continue

  goto L_0023;

  //   487  !-----------------------------------------------------------------------
  //   488  itype1(27): ! fdb

case_ITYPE1_27:;

//   489           %cycle

L_0064:;

//   490              ca = ca+2

  CA = CA + 2;

  //   491              i = get opd(opd) %unless pres char=','

  if (PRESCHAR == 44) goto L_0065;
  I = GETOPD(/*?*/ &OPD);
L_0065:;

//   492           %repeat %until %not more items

  if (!(MOREITEMS())) goto L_0066;
  goto L_0064;
L_0066:;

//   493           %continue

  goto L_0023;

  //   494  !-----------------------------------------------------------------------
  //   495  itype1(28):! equ

case_ITYPE1_28:;

//   496           %unless lid=0 %start

  if (LID == 0) goto L_0067;

    //   497              %if get opd(opd)=0 %start

  if (GETOPD(/*?*/ &OPD) != 0) goto L_0068;

    //   498                %if pass=1 %start

  if (PASS != 1) goto L_0069;

    //   499                    %if nass(lid)=1 %start

  if (NASS[LID - 1] != 1) goto L_006A;

    //   500                       nval(lid) = opd

  NVAL[LID - 1] = OPD;

  //   501                       nass(lid) = 3

  NASS[LID - 1] = 3;

  //   502                    %finish

L_006A:;

//   503                 %finish %else %if nass(lid)=3 %and opd#nval(lid) %start

  goto L_006B;
L_0069:;
  if (NASS[LID - 1] != 3) goto L_006C;
  if (OPD == NVAL[LID - 1]) goto L_006C;

    //   504                    diff = nval(lid)-opd

  DIFF = NVAL[LID - 1] - OPD;

  //   505                    nval(lid) = opd

  NVAL[LID - 1] = OPD;

  //   506                    %if pass=3 %start

  if (PASS != 3) goto L_006D;

    //   507                       %for i = 1, 1, consistent %cycle

  // %for I = 1, 1, CONSISTENT %cycle
  {
    int _final = CONSISTENT;
    if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, CONSISTENT");
    I = 0;
  L_006E:
    if (I == _final) goto L_006F;
    I += 1;

    //   508                          ->equ diff found %if ndiff(i)=diff

    if (NDIFF[I - 1] != DIFF) goto L_0071;
    goto U_1002;
  L_0071:;

  //   509                       %repeat

    goto L_006E;
  }

L_006F:;

//   510                       consistent = consistent+1

  CONSISTENT = CONSISTENT + 1;

  //   511                       ndiff(consistent) = diff

  NDIFF[CONSISTENT - 1] = DIFF;

  //   512  equ diff found:   %finish

U_1002:;
L_006D:;

//   513                 %finish

L_006C:;
L_006B:;

//   514              %else

  goto L_0072;
L_0068:;

//   515                 %unless nass(lid)=2 %start

  if (NASS[LID - 1] == 2) goto L_0073;

    //   516                    nval(lid) = 0

  NVAL[LID - 1] = 0;

  //   517                    nass(lid) = 4

  NASS[LID - 1] = 4;

  //   518                 %finish

L_0073:;

//   519              %finish

L_0072:;

//   520           %finish

L_0067:;

//   521           %continue

  goto L_0023;

  //   522  !-----------------------------------------------------------------------
  //   523  itype1(29):! org

case_ITYPE1_29:;

//   524           %unless lid=0 %start

  if (LID == 0) goto L_0074;

    //   525              nval(lid) = 0

  NVAL[LID - 1] = 0;

  //   526              nass(lid) = 4

  NASS[LID - 1] = 4;

  //   527           %finish

L_0074:;

//   528           ca = opd %if get opd(opd)=0

  if (GETOPD(/*?*/ &OPD) != 0) goto L_0075;
  CA = OPD;
L_0075:;

//   529           %continue

  goto L_0023;

  //   530  !-----------------------------------------------------------------------
  //   531  itype1(30): ! setdp

case_ITYPE1_30:;

//   532            %unless lid=0 %start

  if (LID == 0) goto L_0076;

    //   533               nval(lid) = 0

  NVAL[LID - 1] = 0;

  //   534               nass(lid) = 4

  NASS[LID - 1] = 4;

  //   535            %finish

L_0076:;

//   536            dp contents = opd<<8 %if get opd(opd)=0

  if (GETOPD(/*?*/ &OPD) != 0) goto L_0077;
  DPCONTENTS = OPD << 8;
L_0077:;

//   537            %continue

  goto L_0023;

  //   538  !-----------------------------------------------------------------------
  //   539  itype1(31): ! rmb

case_ITYPE1_31:;

//   540            ca = ca+opd %if get opd(opd)=0

  if (GETOPD(/*?*/ &OPD) != 0) goto L_0078;
  CA = CA + OPD;
L_0078:;

//   541            %continue

  goto L_0023;

  //   542  !-----------------------------------------------------------------------
  //   543  itype1(32):! fcc

case_ITYPE1_32:;

//   544           %if '0'<=pres char<='9' %start

  {
    // Double-sided test on PRESCHAR (Part I)
    int tmp;
    if (48 > (tmp = PRESCHAR)) goto L_0079;
    // Double-sided test on PRESCHAR (Part II)
    if (tmp > 57) goto L_0079;
  }

  //   545              i = lp

  I = LP;

  //   546              j = 0

  J = 0;

  //   547              %cycle

L_007A:;

//   548                 j = j*10+pres char-'0'

  J = J * 10 + PRESCHAR - 48;

  //   549                 next char

  NEXTCHAR();

  //   550              %repeat %until %not '0'<=pres char<='9'

  {
    // Double-sided test on PRESCHAR (Part I)
    int tmp;
    if (48 > (tmp = PRESCHAR)) goto L_007B;
    // Double-sided test on PRESCHAR (Part II)
    if (tmp > 57) goto L_007B;
  }
  goto L_007A;
L_007B:;

//   551              %if pres char=',' %start

  if (PRESCHAR != 44) goto L_007C;

    //   552                 ca = ca+j

  CA = CA + J;

  //   553                 %continue

  goto L_0023;

  //   554              %finish

L_007C:;

//   555              lp = i-1

  LP = I - 1;

  //   556              next char

  NEXTCHAR();

  //   557           %finish

L_0079:;

//   558           %continue %if pres char<' '

  if (PRESCHAR >= 32) goto L_007D;
  goto L_0023;
L_007D:;

//   559           delim = pres char

  DELIM = PRESCHAR;

  //   560           next char

  NEXTCHAR();

  //   561           %cycle

L_007E:;

//   562              %exit %if pres char=nl

  if (PRESCHAR != 10) goto L_007F;
  goto L_0080;
L_007F:;

//   563              %if pres char=delim %start

  if (PRESCHAR != DELIM) goto L_0081;

    //   564                 next char

  NEXTCHAR();

  //   565                 %exit %unless pres char=delim

  if (PRESCHAR == DELIM) goto L_0082;
  goto L_0080;
L_0082:;

//   566              %finish

L_0081:;

//   567              next char

  NEXTCHAR();

  //   568              ca=ca+1

  CA = CA + 1;

  //   569           %repeat

  goto L_007E;
L_0080:;

//   570           %continue

  goto L_0023;

  //   571  !-----------------------------------------------------------------------
  //   572  itype1(33): ! nam

case_ITYPE1_33:;

//   573           %unless lid=0 %start

  if (LID == 0) goto L_0083;

    //   574              nval(lid) = 0

  NVAL[LID - 1] = 0;

  //   575              nass(lid) = 4

  NASS[LID - 1] = 4;

  //   576           %finish

L_0083:;

//   577           %continue %unless headset=0

  if (HEADSET == 0) goto L_0084;
  goto L_0023;
L_0084:;

//   578           headset = 1

  HEADSET = 1;

  //   579           header = ""


  /* clang-format off */
_imp_strncpy(/*?*/&HEADER, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/41);

  /* clang-format on */

  //   580           %while pres char#nl %cycle

L_0085:;
  if (PRESCHAR == 10) goto L_0086;

    //   581              header <- header.to string(line(lp))


  /* clang-format off */
_imp_strncpy(/*?*/&HEADER, ({__typeof__(_imp_string255) tmp; /*C*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&HEADER, ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_TOSTRING(LINE[LP - 1]); (void *)&tmp;})); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/41);

  /* clang-format on */
  /* truncated copy of no more than 41 chars */
  /* clang-format off */
if (*_imp_LENGTH((_imp_string *)/*?*/&HEADER) > 41) *_imp_LENGTH((_imp_string *)/*?*/&HEADER) = 41;

    /* clang-format on */

    //   582              next char

  NEXTCHAR();

  //   583           %repeat

  goto L_0085;
L_0086:;

//   584           %continue

  goto L_0023;

  //   585  !-----------------------------------------------------------------------
  //   586  itype1(34): ! opt

case_ITYPE1_34:;

//   587           %cycle

L_0087:;

//   588              %if get option(opt) %start

  if (!(GETOPTION(/*?*/ &OPT))) goto L_0088;

    //   589                 %if 1<=opt<=2 %start

  {
    // Double-sided test on OPT (Part I)
    int tmp;
    if (1 > (tmp = OPT)) goto L_0089;
    // Double-sided test on OPT (Part II)
    if (tmp > 2) goto L_0089;
  }

  //   590                    bchar = ' '

  BCHAR = 32;

  //   591                 %finish %else %if 3<=opt<=4 %start

  goto L_008A;
L_0089:;
  {
    // Double-sided test on OPT (Part I)
    int tmp;
    if (3 > (tmp = OPT)) goto L_008B;
    // Double-sided test on OPT (Part II)
    if (tmp > 4) goto L_008B;
  }

  //   592                    bchar = -1

  BCHAR = -1;

  //   593                 %finish %else %if 18<=opt<=19 %start

  goto L_008A;
L_008B:;
  {
    // Double-sided test on OPT (Part I)
    int tmp;
    if (18 > (tmp = OPT)) goto L_008C;
    // Double-sided test on OPT (Part II)
    if (tmp > 19) goto L_008C;
  }

  //   594                    fflag = 1

  FFLAG = 1;

  //   595                 %finish %else %if 20<=opt<=21 %start

  goto L_008A;
L_008C:;
  {
    // Double-sided test on OPT (Part I)
    int tmp;
    if (20 > (tmp = OPT)) goto L_008D;
    // Double-sided test on OPT (Part II)
    if (tmp > 21) goto L_008D;
  }

  //   596                    fflag = 0

  FFLAG = 0;

  //   597                 %finish

L_008D:;
L_008A:;

//   598              %finish

L_0088:;

//   599           %repeat %until %not more items

  if (!(MOREITEMS())) goto L_008E;
  goto L_0087;
L_008E:;

//   600  !-----------------------------------------------------------------------
//   601  itype1(35): ! page

case_ITYPE1_35:;

//   602  !-----------------------------------------------------------------------
//   603  itype1(36): ! spc

case_ITYPE1_36:;

//   604           %unless lid=0 %start

  if (LID == 0) goto L_008F;

    //   605              nval(lid) = 0

  NVAL[LID - 1] = 0;

  //   606              nass(lid) = 4

  NASS[LID - 1] = 4;

  //   607           %finish

L_008F:;

//   608  !-----------------------------------------------------------------------
//   609        %repeat

L_0023:;
  goto L_0021;

  //   610  !-----------------------------------------------------------------------
  //   611  itype1(37):! end

case_ITYPE1_37:;

//   612        %unless lid=0 %start

  if (LID == 0) goto L_0090;

    //   613           nval(lid) = 0

  NVAL[LID - 1] = 0;

  //   614           nass(lid) = 2

  NASS[LID - 1] = 2;

  //   615        %finish

L_0090:;

//   616        %if pass<3 %start

  if (PASS >= 3) goto L_0091;

    //   617           pass = pass+1

  PASS = PASS + 1;

  //   618        %else

  goto L_0092;
L_0091:;

//   619           %exit %if consistent=0 %or %c

  if (CONSISTENT == 0) goto L_0093;
  if (LASTCONSISTENT == 0) goto L_0094;
  if (CONSISTENT < LASTCONSISTENT) goto L_0094;
  if (NOLONGS < LASTNOLONGS) goto L_0094;
L_0093:;
  goto L_0095;
L_0094:;

//   620+             (last consistent#0 %and consistent>=last consistent %and %c
//   621+                no longs>=last no longs)
//   622           last consistent = consistent

  LASTCONSISTENT = CONSISTENT;

  //   623        %finish

L_0092:;

//   624        last no longs = no longs

  LASTNOLONGS = NOLONGS;

  //   625        consistent = 0

  CONSISTENT = 0;

  //   626        reset input

  _imp_RESETINPUT();

  //   627     %repeat

  goto L_0020;
L_0095:;

//   628  !-----------------------------------------------------------------------
//   629     nline(0)

  NLINE(0);

  //   630     reset input

  _imp_RESETINPUT();

  //   631     pass = 4

  PASS = 4;

  //   632     ln = 0

  LN = 0;

  //   633     ca = 0

  CA = 0;

  //   634     dp contents = 0

  DPCONTENTS = 0;

  //   635     old ca = 0

  OLDCA = 0;

  //   636     lid = 0

  LID = 0;

  //   637     bchar = -1

  BCHAR = -1;

  //   638     fflag = 0

  FFLAG = 0;

  //   639     %cycle

L_0096:;

//   640        %unless lid=0 %start

  if (LID == 0) goto L_0097;

    //   641           fault("Multiply defined label") %if nass(lid)=2

  if (NASS[LID - 1] != 2) goto L_0098;
  FAULT(_imp_str_literal_size(63, "Multiply defined label"));
L_0098:;

//   642           %if nass(lid)=1 %and nval(lid)#old ca %start

  if (NASS[LID - 1] != 1) goto L_0099;
  if (NVAL[LID - 1] == OLDCA) goto L_0099;

    //   643              fault("Inconsistent label")

  FAULT(_imp_str_literal_size(63, "Inconsistent label"));

  //   644              nval(lid) = old ca

  NVAL[LID - 1] = OLDCA;

  //   645           %finish

L_0099:;

//   646        %finish

L_0097:;

//   647        old ca = ca

  OLDCA = CA;

  //   648        lid = 0

  LID = 0;

  //   649        read line

  READLINE();

  //   650        accop = 0

  ACCOP = 0;

  //   651        acc fault = 0

  ACCFAULT = 0;

  //   652        non dense = 0

  NONDENSE = 0;

  //   653        instr out(0, 0, 0, -7, 0) %and %continue %if pres char='*'

  if (PRESCHAR != 42) goto L_009A;
  INSTROUT(0, 0, 0, -7, 0);
  goto L_001F;
L_009A:;

//   654        lid = 0 %unless get name(lid)=0

  if (GETNAME(/*?*/ &LID) == 0) goto L_009B;
  LID = 0;
L_009B:;

//   655        skip blanks

  SKIPBLANKS();

  //   656        %if pres char=nl %start

  if (PRESCHAR != 10) goto L_009C;

    //   657           instr out(0, 0, 0, -7, 0)

  INSTROUT(0, 0, 0, -7, 0);

  //   658        %finish %else %if get instr(iid) %start

  goto L_009D;
L_009C:;
  if (!(GETINSTR(/*?*/ &IID))) goto L_009E;

    //   659           order = icode(iid)

  ORDER = ICODE[IID - 1];

  //   660           %if 0<=order<=255 %start

  {
    // Double-sided test on ORDER (Part I)
    int tmp;
    if (0 > (tmp = ORDER)) goto L_009F;
    // Double-sided test on ORDER (Part II)
    if (tmp > 255) goto L_009F;
  }

  //   661              eca = ca+1

  ECA = CA + 1;

  //   662           %else

  goto L_00A0;
L_009F:;

//   663              eca = ca+2

  ECA = CA + 2;

  //   664           %finish

L_00A0:;

//   665           mcycles = icycles(iid)

  MCYCLES = ICYCLES[IID - 1];

  //   666           skip blanks

  SKIPBLANKS();

  //   667           ->itype3(itype(iid))

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = ITYPE[IID - 1];
  goto case_ITYPE3_dispatch;

  //   668        %else

L_009E:;

//   669           instr out(0, 0, 0, -7, 0)

  INSTROUT(0, 0, 0, -7, 0);

  //   670           fault("Unknown operation")

  FAULT(_imp_str_literal_size(63, "Unknown operation"));

  //   671        %finish

L_009D:;

//   672        %continue

  goto L_001F;

  //   673  !-----------------------------------------------------------------------
  //   674  itype3(1):! implied

case_ITYPE3_1:;

//   675        instr out(order, 0, 0, 1, mcycles)

  INSTROUT(ORDER, 0, 0, 1, MCYCLES);

  //   676        %continue

  goto L_001F;

  //   677  !-----------------------------------------------------------------------
  //   678  itype3(2): ! 6800 special implied

case_ITYPE3_2:;

//   679        instr out((order>>8)&255, order&255, 0, 2, mcycles)

  INSTROUT((unsigned int)ORDER >> 8 & 255, ORDER & 255, 0, 2, MCYCLES);

  //   680        %continue

  goto L_001F;

  //   681  !-----------------------------------------------------------------------
  //   682  itype3(3):! relative

case_ITYPE3_3:;

//   683        i=get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //   684        j=opd-eca-1

  J = OPD - ECA - 1;

  //   685        %if i#0 %or -128<=j<=127 %start

  if (I != 0) goto L_00A2;
  {
    // Double-sided test on J (Part I)
    int tmp;
    if (-128 > (tmp = J)) goto L_00A3;
    // Double-sided test on J (Part II)
    if (tmp > 127) goto L_00A3;
  }
L_00A2:;

//   686           instr out(order, j, 0, 2, mcycles)

  INSTROUT(ORDER, J, 0, 2, MCYCLES);

  //   687           fault("Cannot evaluate operand") %unless i=0

  if (I == 0) goto L_00A4;
  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
L_00A4:;

//   688        %finish %else %if order=16_20 %start

  goto L_00A5;
L_00A3:;
  if (ORDER != 32) goto L_00A6;

    //   689           instr out(16_16, j-1, 0, 5, mcycles+2)

  INSTROUT(22, J - 1, 0, 5, MCYCLES + 2);

  //   690        %finish %else %if order=16_8D %start

  goto L_00A5;
L_00A6:;
  if (ORDER != 141) goto L_00A7;

    //   691           instr out(16_17, j-1, 0, 5, mcycles+2)

  INSTROUT(23, J - 1, 0, 5, MCYCLES + 2);

  //   692        %else

  goto L_00A5;
L_00A7:;

//   693           instr out(16_1000+order, j-2, 0, 5, mcycles+3)

  INSTROUT(4096 + ORDER, J - 2, 0, 5, MCYCLES + 3);

  //   694        %finish

L_00A5:;

//   695        %continue

  goto L_001F;

  //   696  !----------------------------------------------------------------------
  //   697  itype3(4): ! lda, ora

case_ITYPE3_4:;

//   698        -> itype3(12) %if pres char='#'

  if (PRESCHAR != 35) goto L_00A8;
  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;
L_00A8:;

//   699        analise operand(eca, post, opd, type, mcycles)

  ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   700        %if 1<=type<=2 %start

  {
    // Double-sided test on TYPE (Part I)
    int tmp;
    if (1 > (tmp = TYPE)) goto L_00A9;
    // Double-sided test on TYPE (Part II)
    if (tmp > 2) goto L_00A9;
  }

  //   701           order = order+16_40 %if type=2

  if (TYPE != 2) goto L_00AA;
  ORDER = ORDER + 64;
L_00AA:;

//   702           accop = 1

  ACCOP = 1;

  //   703           skip blanks

  SKIPBLANKS();

  //   704           -> itype3(12)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;

  //   705        %finish

L_00A9:;

//   706        -> generate double

  goto U_1003;

  //   707  !---------------------------------------------------------------------
  //   708  itype3(5): ! sta

case_ITYPE3_5:;

//   709        analise operand(eca, post, opd, type, mcycles)

  ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   710        %if 1<=type<=2 %start

  {
    // Double-sided test on TYPE (Part I)
    int tmp;
    if (1 > (tmp = TYPE)) goto L_00AB;
    // Double-sided test on TYPE (Part II)
    if (tmp > 2) goto L_00AB;
  }

  //   711           order = order+16_40 %if type=2

  if (TYPE != 2) goto L_00AC;
  ORDER = ORDER + 64;
L_00AC:;

//   712           accop = 1

  ACCOP = 1;

  //   713           skip blanks

  SKIPBLANKS();

  //   714           -> itype3(13)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 13;
  goto case_ITYPE3_dispatch;

  //   715        %finish

L_00AB:;

//   716        -> generate double

  goto U_1003;

  //   717  !----------------------------------------------------------------------
  //   718  itype3(6): ! ld

case_ITYPE3_6:;

//   719     accop = 1

  ACCOP = 1;

  //   720     %if acc('A') %start

  if (!(ACC(65))) goto L_00AD;

    //   721        skip blanks

  SKIPBLANKS();

  //   722        -> itype3(12)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;

  //   723     %finish %else %if acc('B') %start

L_00AD:;
  if (!(ACC(66))) goto L_00AE;

    //   724        order = 16_C6

  ORDER = 198;

  //   725        skip blanks

  SKIPBLANKS();

  //   726        -> itype3(12)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;

  //   727     %finish %else %if acc('D') %start

L_00AE:;
  if (!(ACC(68))) goto L_00AF;

    //   728        order = 16_CC

  ORDER = 204;

  //   729     %finish %else %if acc('U') %start

  goto L_00B0;
L_00AF:;
  if (!(ACC(85))) goto L_00B1;

    //   730        order = 16_CE

  ORDER = 206;

  //   731     %finish %else %if acc('X') %start

  goto L_00B0;
L_00B1:;
  if (!(ACC(88))) goto L_00B2;

    //   732        order = 16_8E

  ORDER = 142;

  //   733     %finish %else %if acc('S') %start

  goto L_00B0;
L_00B2:;
  if (!(ACC(83))) goto L_00B3;

    //   734        order = 16_10CE

  ORDER = 4302;

  //   735        mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //   736     %finish %else %if acc('Y') %start

  goto L_00B0;
L_00B3:;
  if (!(ACC(89))) goto L_00B4;

    //   737        order = 16_108E

  ORDER = 4238;

  //   738        mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //   739     %else

  goto L_00B0;
L_00B4:;

//   740        acc fault = 2

  ACCFAULT = 2;

  //   741        accop = 0

  ACCOP = 0;

  //   742        -> itype3(12)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;

  //   743     %finish

L_00B0:;

//   744     skip blanks

  SKIPBLANKS();

  //   745     mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //   746     -> itype3(9)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 9;
  goto case_ITYPE3_dispatch;

  //   747  !----------------------------------------------------------------------
  //   748  itype3(7): ! cmp

case_ITYPE3_7:;

//   749        accop = 1

  ACCOP = 1;

  //   750        %if acc('A') %start

  if (!(ACC(65))) goto L_00B5;

    //   751           skip blanks

  SKIPBLANKS();

  //   752           -> itype3(12)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;

  //   753        %finish %else %if acc('B') %start

L_00B5:;
  if (!(ACC(66))) goto L_00B6;

    //   754           order = 16_C1

  ORDER = 193;

  //   755           skip blanks

  SKIPBLANKS();

  //   756           -> itype3(12)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;

  //   757        %finish %else %if acc('D') %start

L_00B6:;
  if (!(ACC(68))) goto L_00B7;

    //   758           order = 16_1083

  ORDER = 4227;

  //   759           mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //   760        %finish %else %if acc('U') %start

  goto L_00B8;
L_00B7:;
  if (!(ACC(85))) goto L_00B9;

    //   761           order = 16_1183

  ORDER = 4483;

  //   762           mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //   763        %finish %else %if acc('X') %start

  goto L_00B8;
L_00B9:;
  if (!(ACC(88))) goto L_00BA;

    //   764           order = 16_8C

  ORDER = 140;

  //   765        %finish %else %if acc('S') %start

  goto L_00B8;
L_00BA:;
  if (!(ACC(83))) goto L_00BB;

    //   766           order = 16_118C

  ORDER = 4492;

  //   767           mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //   768        %finish %else %if acc('Y') %start

  goto L_00B8;
L_00BB:;
  if (!(ACC(89))) goto L_00BC;

    //   769           order = 16_108C

  ORDER = 4236;

  //   770           mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //   771        %else

  goto L_00B8;
L_00BC:;

//   772           acc fault = 2

  ACCFAULT = 2;

  //   773           accop = 0

  ACCOP = 0;

  //   774           -> itype3(12)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;

  //   775        %finish

L_00B8:;

//   776        skip blanks

  SKIPBLANKS();

  //   777        mcycles = mcycles+2

  MCYCLES = MCYCLES + 2;

  //   778        -> itype3(9)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 9;
  goto case_ITYPE3_dispatch;

  //   779  !-----------------------------------------------------------------------
  //   780  itype3(8): ! add, sub

case_ITYPE3_8:;

//   781        accop = 1

  ACCOP = 1;

  //   782        %if acc('A') %start

  if (!(ACC(65))) goto L_00BD;

    //   783           skip blanks

  SKIPBLANKS();

  //   784           -> itype3(12)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;

  //   785        %finish %else %if acc('B') %start

L_00BD:;
  if (!(ACC(66))) goto L_00BE;

    //   786           order = order+16_40

  ORDER = ORDER + 64;

  //   787           skip blanks

  SKIPBLANKS();

  //   788           -> itype3(12)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;

  //   789        %finish %else %if acc('D') %start

L_00BE:;
  if (!(ACC(68))) goto L_00BF;

    //   790           %if order=16_80 %start

  if (ORDER != 128) goto L_00C0;

    //   791              order = 16_83

  ORDER = 131;

  //   792           %else

  goto L_00C1;
L_00C0:;

//   793              order = 16_C3

  ORDER = 195;

  //   794           %finish

L_00C1:;

//   795        %else

  goto L_00C2;
L_00BF:;

//   796           acc fault = 1

  ACCFAULT = 1;

  //   797           accop = 0

  ACCOP = 0;

  //   798           -> itype3(12)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 12;
  goto case_ITYPE3_dispatch;

  //   799        %finish

L_00C2:;

//   800        skip blanks

  SKIPBLANKS();

  //   801        mcycles = mcycles+2

  MCYCLES = MCYCLES + 2;

  //   802  !-----------------------------------------------------------------------
  //   803  itype3(9):! immediate(3), direct, index, extend

case_ITYPE3_9:;

//   804        %if pres char='#' %start

  if (PRESCHAR != 35) goto L_00C3;

    //   805           next char %until pres char#bchar

L_00C4:;
  NEXTCHAR();
  if (PRESCHAR != BCHAR) goto L_00C5;
  goto L_00C4;
L_00C5:;

//   806           i = get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //   807           instr out(order, opd, 0, 5, mcycles)

  INSTROUT(ORDER, OPD, 0, 5, MCYCLES);

  //   808           fault("Cannot evaluate operand") %unless i=0

  if (I == 0) goto L_00C6;
  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
L_00C6:;

//   809           %continue

  goto L_001F;

  //   810        %finish

L_00C3:;

//   811        ->itype3(13)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 13;
  goto case_ITYPE3_dispatch;

  //   812  !-----------------------------------------------------------------------
  //   813  itype3(10): ! st

case_ITYPE3_10:;

//   814        accop = 1

  ACCOP = 1;

  //   815        %if acc('B') %start

  if (!(ACC(66))) goto L_00C7;

    //   816           order = 16_C7

  ORDER = 199;

  //   817        %finish %else %if acc('D') %start

  goto L_00C8;
L_00C7:;
  if (!(ACC(68))) goto L_00C9;

    //   818           order = 16_CD

  ORDER = 205;

  //   819           mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //   820        %finish %else %if acc('U') %start

  goto L_00C8;
L_00C9:;
  if (!(ACC(85))) goto L_00CA;

    //   821           order = 16_CF

  ORDER = 207;

  //   822           mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //   823        %finish %else %if acc('X') %start

  goto L_00C8;
L_00CA:;
  if (!(ACC(88))) goto L_00CB;

    //   824           order = 16_8F

  ORDER = 143;

  //   825           mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //   826        %finish %else %if acc('S') %start

  goto L_00C8;
L_00CB:;
  if (!(ACC(83))) goto L_00CC;

    //   827           order = 16_10CF

  ORDER = 4303;

  //   828           mcycles = mcycles+2

  MCYCLES = MCYCLES + 2;

  //   829        %finish %else %if acc('Y') %start

  goto L_00C8;
L_00CC:;
  if (!(ACC(89))) goto L_00CD;

    //   830           order = 16_108F

  ORDER = 4239;

  //   831           mcycles = mcycles+2

  MCYCLES = MCYCLES + 2;

  //   832        %finish %else %unless acc('A') %start

  goto L_00C8;
L_00CD:;
  if (ACC(65)) goto L_00CE;

    //   833           acc fault = 2

  ACCFAULT = 2;

  //   834           accop = 0

  ACCOP = 0;

  //   835        %finish

L_00CE:;
L_00C8:;

//   836        skip blanks

  SKIPBLANKS();

  //   837        -> itype3(13)

  ITYPE3_line = __LINE__;
  ITYPE3_file = __FILE__;
  ITYPE3_index = 13;
  goto case_ITYPE3_dispatch;

  //   838  !-----------------------------------------------------------------------
  //   839  itype3(11): ! inherent*(immediate(2), direct, index, extend)

case_ITYPE3_11:;

//   840        accop = 1

  ACCOP = 1;

  //   841        %if acc('B') %start

  if (!(ACC(66))) goto L_00CF;

    //   842           order = order+16_40

  ORDER = ORDER + 64;

  //   843        %finish %else %unless acc('A') %start

  goto L_00D0;
L_00CF:;
  if (ACC(65)) goto L_00D1;

    //   844           accop = 0

  ACCOP = 0;

  //   845           acc fault = 1

  ACCFAULT = 1;

  //   846        %finish

L_00D1:;
L_00D0:;

//   847        skip blanks

  SKIPBLANKS();

  //   848  !-----------------------------------------------------------------------
  //   849  itype3(12): ! immediate(2), direct, index, extend

case_ITYPE3_12:;

//   850        %if pres char='#' %start

  if (PRESCHAR != 35) goto L_00D2;

    //   851           next char %until pres char#bchar

L_00D3:;
  NEXTCHAR();
  if (PRESCHAR != BCHAR) goto L_00D4;
  goto L_00D3;
L_00D4:;

//   852           i = get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //   853           instr out(order, opd, 0, 2, mcycles)

  INSTROUT(ORDER, OPD, 0, 2, MCYCLES);

  //   854           %unless i=0 %start

  if (I == 0) goto L_00D5;

    //   855              fault("Cannot evaluate operand")

  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));

  //   856           %finish %else %unless -128<=opd<=255 %start

  goto L_00D6;
L_00D5:;
  {
    // Double-sided test on OPD (Part I)
    int tmp;
    if (-128 > (tmp = OPD)) goto L_00D7;
    // Double-sided test on OPD (Part II)
    if (tmp <= 255) goto L_00D8;
  }
L_00D7:;

//   857              fault("Invalid constant")

  FAULT(_imp_str_literal_size(63, "Invalid constant"));

  //   858           %finish

L_00D8:;
L_00D6:;

//   859           %continue

  goto L_001F;

  //   860        %finish

L_00D2:;

//   861  !-----------------------------------------------------------------------
//   862  itype3(13):! direct,index,extend

case_ITYPE3_13:;

//   863        analise operand(eca, post, opd, type, mcycles)

  ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   864  generate double:

U_1003:;

//   865        %if type<=3 %start

  if (TYPE > 3) goto L_00D9;

    //   866           instr out(order+16_10, opd, 0, 2, mcycles)

  INSTROUT(ORDER + 16, OPD, 0, 2, MCYCLES);

  //   867           %if type=0 %start

  if (TYPE != 0) goto L_00DA;

    //   868              fault("Cannot evaluate operand")

  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));

  //   869           %finish %else %unless type=3 %start

  goto L_00DB;
L_00DA:;
  if (TYPE == 3) goto L_00DC;

    //   870              fault("Illegal operand")

  FAULT(_imp_str_literal_size(63, "Illegal operand"));

  //   871           %finish

L_00DC:;
L_00DB:;

//   872        %finish %else %if type=4 %start

  goto L_00DD;
L_00D9:;
  if (TYPE != 4) goto L_00DE;

    //   873           instr out(order+16_30, opd, 0, 5, mcycles)

  INSTROUT(ORDER + 48, OPD, 0, 5, MCYCLES);

  //   874        %else

  goto L_00DD;
L_00DE:;

//   875           instr out(order+16_20, post, opd, type-3, mcycles)

  INSTROUT(ORDER + 32, POST, OPD, TYPE - 3, MCYCLES);

  //   876        %finish

L_00DD:;

//   877        fault("Accumulator not specified") %if acc fault=1

  if (ACCFAULT != 1) goto L_00DF;
  FAULT(_imp_str_literal_size(63, "Accumulator not specified"));
L_00DF:;

//   878        fault("Register not specified") %if acc fault=2

  if (ACCFAULT != 2) goto L_00E0;
  FAULT(_imp_str_literal_size(63, "Register not specified"));
L_00E0:;

//   879        %continue

  goto L_001F;

  //   880  !----------------------------------------------------------------------
  //   881  itype3(14): ! jmp

case_ITYPE3_14:;

//   882        analise operand(eca, post, opd, type, mcycles)

  ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   883        %if type<=3 %start

  if (TYPE > 3) goto L_00E1;

    //   884           instr out(order, opd, 0, 2, mcycles)

  INSTROUT(ORDER, OPD, 0, 2, MCYCLES);

  //   885           %if type=0 %start

  if (TYPE != 0) goto L_00E2;

    //   886              fault("Cannot evaluate operand")

  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));

  //   887           %finish %else %unless type=3 %start

  goto L_00E3;
L_00E2:;
  if (TYPE == 3) goto L_00E4;

    //   888              fault("Illegal operand")

  FAULT(_imp_str_literal_size(63, "Illegal operand"));

  //   889           %finish

L_00E4:;
L_00E3:;

//   890        %finish %else %if type=4 %start

  goto L_00E5;
L_00E1:;
  if (TYPE != 4) goto L_00E6;

    //   891           instr out(order+16_70, opd, 0, 5, mcycles)

  INSTROUT(ORDER + 112, OPD, 0, 5, MCYCLES);

  //   892        %else

  goto L_00E5;
L_00E6:;

//   893           instr out(order+16_60, post, opd, type-3, mcycles)

  INSTROUT(ORDER + 96, POST, OPD, TYPE - 3, MCYCLES);

  //   894        %finish

L_00E5:;

//   895        %continue

  goto L_001F;

  //   896  !----------------------------------------------------------------------
  //   897  itype3(15): ! inherent, direct, indexed, extended

case_ITYPE3_15:;

//   898        analise operand(eca, post, opd, type, mcycles)

  ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   899        %if type<=1 %start

  if (TYPE > 1) goto L_00E7;

    //   900           accop = 1 %if type=1

  if (TYPE != 1) goto L_00E8;
  ACCOP = 1;
L_00E8:;

//   901           instr out(order+16_40, 0, 0, 1, mcycles)

  INSTROUT(ORDER + 64, 0, 0, 1, MCYCLES);

  //   902           fault("Cannot evaluate operand") %if type=0

  if (TYPE != 0) goto L_00E9;
  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
L_00E9:;

//   903        %finish %else %if type=2 %start

  goto L_00EA;
L_00E7:;
  if (TYPE != 2) goto L_00EB;

    //   904           accop = 1

  ACCOP = 1;

  //   905           instr out(order+16_50, 0, 0, 1, mcycles)

  INSTROUT(ORDER + 80, 0, 0, 1, MCYCLES);

  //   906        %finish %else %if type=3 %start

  goto L_00EA;
L_00EB:;
  if (TYPE != 3) goto L_00EC;

    //   907           instr out(order, opd, 0, 2, mcycles+2)

  INSTROUT(ORDER, OPD, 0, 2, MCYCLES + 2);

  //   908        %finish %else %if type=4 %start

  goto L_00EA;
L_00EC:;
  if (TYPE != 4) goto L_00ED;

    //   909           instr out(order+16_70, opd, 0, 5, mcycles+2)

  INSTROUT(ORDER + 112, OPD, 0, 5, MCYCLES + 2);

  //   910        %else

  goto L_00EA;
L_00ED:;

//   911           instr out(order+16_60, post, opd, type-3, mcycles+2)

  INSTROUT(ORDER + 96, POST, OPD, TYPE - 3, MCYCLES + 2);

  //   912        %finish

L_00EA:;

//   913        %continue

  goto L_001F;

  //   914  !-----------------------------------------------------------------------
  //   915  itype3(16): ! lea

case_ITYPE3_16:;

//   916        accop = 1

  ACCOP = 1;

  //   917        %if acc('X') %start

  if (!(ACC(88))) goto L_00EE;

    //   918           order = 16_30

  ORDER = 48;

  //   919        %finish %else %if acc('Y') %start

  goto L_00EF;
L_00EE:;
  if (!(ACC(89))) goto L_00F0;

    //   920           order = 16_31

  ORDER = 49;

  //   921        %finish %else %if acc('S') %start

  goto L_00EF;
L_00F0:;
  if (!(ACC(83))) goto L_00F1;

    //   922           order = 16_32

  ORDER = 50;

  //   923        %finish %else %if acc('U') %start

  goto L_00EF;
L_00F1:;
  if (!(ACC(85))) goto L_00F2;

    //   924           order = 16_33

  ORDER = 51;

  //   925        %else

  goto L_00EF;
L_00F2:;

//   926           acc fault = 2

  ACCFAULT = 2;

  //   927           accop = 0

  ACCOP = 0;

  //   928        %finish

L_00EF:;

//   929        skip blanks

  SKIPBLANKS();

  //   930  !-----------------------------------------------------------------------
  //   931  itype3(17): ! load effective address

case_ITYPE3_17:;

//   932        analise operand(eca, post, opd, type, mcycles)

  ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);

  //   933        %if type<=5 %start

  if (TYPE > 5) goto L_00F3;

    //   934           instr out(order, post, opd, 2, mcycles)

  INSTROUT(ORDER, POST, OPD, 2, MCYCLES);

  //   935           %if type=0 %start

  if (TYPE != 0) goto L_00F4;

    //   936              fault("Cannot evaluate operand")

  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));

  //   937           %finish %else %unless type=5 %start

  goto L_00F5;
L_00F4:;
  if (TYPE == 5) goto L_00F6;

    //   938              fault("Illegal operand")

  FAULT(_imp_str_literal_size(63, "Illegal operand"));

  //   939           %finish

L_00F6:;
L_00F5:;

//   940        %else

  goto L_00F7;
L_00F3:;

//   941           instr out(order, post, opd, type-3, mcycles)

  INSTROUT(ORDER, POST, OPD, TYPE - 3, MCYCLES);

  //   942        %finish

L_00F7:;

//   943        fault("Index register not specified") %unless acc fault=0

  if (ACCFAULT == 0) goto L_00F8;
  FAULT(_imp_str_literal_size(63, "Index register not specified"));
L_00F8:;

//   944        %continue

  goto L_001F;

  //   945  !-----------------------------------------------------------------------
  //   946  itype3(18): ! tfr,exg

case_ITYPE3_18:;

//   947        %if transfer reg(post) %start

  if (!(TRANSFERREG(/*?*/ &POST))) goto L_00F9;

    //   948           accop = 1 %unless more items

  if (MOREITEMS()) goto L_00FA;
  ACCOP = 1;
L_00FA:;

//   949           %if transfer reg(opd) %start

  if (!(TRANSFERREG(/*?*/ &OPD))) goto L_00FB;

    //   950              instr out(order, (post<<4)!opd, 0, 2, mcycles)

  INSTROUT(ORDER, POST << 4 | OPD, 0, 2, MCYCLES);

  //   951              %if (post<8 %and 8<=opd) %or (opd<8 %and 8<=post) %start

  if (POST >= 8) goto L_00FC;
  if (8 <= OPD) goto L_00FD;
L_00FC:;
  if (OPD >= 8) goto L_00FE;
  if (8 > POST) goto L_00FE;
L_00FD:;

//   952                 fault("Different size registers")

  FAULT(_imp_str_literal_size(63, "Different size registers"));

  //   953              %finish

L_00FE:;

//   954           %else

  goto L_00FF;
L_00FB:;

//   955              instr out(order, post<<4, 0, 2, mcycles)

  INSTROUT(ORDER, POST << 4, 0, 2, MCYCLES);

  //   956              fault("Second register not specified")

  FAULT(_imp_str_literal_size(63, "Second register not specified"));

  //   957           %finish

L_00FF:;

//   958        %else

  goto L_0100;
L_00F9:;

//   959           instr out(order, 0, 0, 2, mcycles)

  INSTROUT(ORDER, 0, 0, 2, MCYCLES);

  //   960           fault("Registers not specified")

  FAULT(_imp_str_literal_size(63, "Registers not specified"));

  //   961        %finish

L_0100:;

//   962        %continue

  goto L_001F;

  //   963  !-----------------------------------------------------------------------
  //   964  itype3(19): ! psh, pul

case_ITYPE3_19:;

//   965        accop = 1

  ACCOP = 1;

  //   966        %if acc('A') %start

  if (!(ACC(65))) goto L_0101;

    //   967           instr out(order, 2, 0, 2, mcycles+1)

  INSTROUT(ORDER, 2, 0, 2, MCYCLES + 1);

  //   968           %continue

  goto L_001F;

  //   969        %finish %else %if acc('B') %start

L_0101:;
  if (!(ACC(66))) goto L_0102;

    //   970           instr out(order, 4, 0, 2, mcycles+1)

  INSTROUT(ORDER, 4, 0, 2, MCYCLES + 1);

  //   971           %continue

  goto L_001F;

  //   972        %finish %else %if acc('U') %start

L_0102:;
  if (!(ACC(85))) goto L_0103;

    //   973           order = order+2

  ORDER = ORDER + 2;

  //   974        %finish %else %unless acc('S') %start

  goto L_0104;
L_0103:;
  if (ACC(83)) goto L_0105;

    //   975           accop = 0

  ACCOP = 0;

  //   976           acc fault = 1

  ACCFAULT = 1;

  //   977        %finish

L_0105:;
L_0104:;

//   978        skip blanks

  SKIPBLANKS();

  //   979  !-----------------------------------------------------------------------
  //   980  itype3(20): ! pshu, pshs, pulu, puls

case_ITYPE3_20:;

//   981        post = 0

  POST = 0;

  //   982        i = 0

  I = 0;

  //   983        j = 0

  J = 0;

  //   984        %cycle

L_0106:;

//   985           %if cc %start

  if (!(CC())) goto L_0107;

    //   986              mcycles = mcycles+1 %and post = post!1 %if post&1=0

  if (POST & 1 != 0) goto L_0108;
  MCYCLES = MCYCLES + 1;
  POST = POST | 1;
L_0108:;

//   987           %finish %else %if acc('A') %start

  goto L_0109;
L_0107:;
  if (!(ACC(65))) goto L_010A;

    //   988              mcycles = mcycles+1 %and post = post!2 %if post&2=0

  if (POST & 2 != 0) goto L_010B;
  MCYCLES = MCYCLES + 1;
  POST = POST | 2;
L_010B:;

//   989           %finish %else %if acc('B') %start

  goto L_0109;
L_010A:;
  if (!(ACC(66))) goto L_010C;

    //   990              mcycles = mcycles+1 %and post = post!4 %if post&4=0

  if (POST & 4 != 0) goto L_010D;
  MCYCLES = MCYCLES + 1;
  POST = POST | 4;
L_010D:;

//   991           %finish %else %if acc('D') %start

  goto L_0109;
L_010C:;
  if (!(ACC(68))) goto L_010E;

    //   992              mcycles = mcycles+1 %and post = post!2 %if post&2=0

  if (POST & 2 != 0) goto L_010F;
  MCYCLES = MCYCLES + 1;
  POST = POST | 2;
L_010F:;

//   993              mcycles = mcycles+1 %and post = post!4 %if post&4=0

  if (POST & 4 != 0) goto L_0110;
  MCYCLES = MCYCLES + 1;
  POST = POST | 4;
L_0110:;

//   994           %finish %else %if dp %start

  goto L_0109;
L_010E:;
  if (!(DP())) goto L_0111;

    //   995              mcycles = mcycles+1 %and post = post!8 %if post&8=0

  if (POST & 8 != 0) goto L_0112;
  MCYCLES = MCYCLES + 1;
  POST = POST | 8;
L_0112:;

//   996           %finish %else %if acc('X') %start

  goto L_0109;
L_0111:;
  if (!(ACC(88))) goto L_0113;

    //   997              mcycles = mcycles+2 %and post = post!16 %if post&16=0

  if (POST & 16 != 0) goto L_0114;
  MCYCLES = MCYCLES + 2;
  POST = POST | 16;
L_0114:;

//   998           %finish %else %if acc('Y') %start

  goto L_0109;
L_0113:;
  if (!(ACC(89))) goto L_0115;

    //   999              mcycles = mcycles+2 %and post = post!32 %if post&32=0

  if (POST & 32 != 0) goto L_0116;
  MCYCLES = MCYCLES + 2;
  POST = POST | 32;
L_0116:;

//  1000           %finish %else %if acc('S') %start

  goto L_0109;
L_0115:;
  if (!(ACC(83))) goto L_0117;

    //  1001              %if 16_36<=order<=16_37 %start

  {
    // Double-sided test on ORDER (Part I)
    int tmp;
    if (54 > (tmp = ORDER)) goto L_0118;
    // Double-sided test on ORDER (Part II)
    if (tmp > 55) goto L_0118;
  }

  //  1002                 mcycles = mcycles+2 %and post = post!64 %if post&64=0

  if (POST & 64 != 0) goto L_0119;
  MCYCLES = MCYCLES + 2;
  POST = POST | 64;
L_0119:;

//  1003              %else

  goto L_011A;
L_0118:;

//  1004                 i = i+1

  I = I + 1;

  //  1005              %finish

L_011A:;

//  1006           %finish %else %if acc('U') %start

  goto L_0109;
L_0117:;
  if (!(ACC(85))) goto L_011B;

    //  1007              %if 16_34<=order<=16_35 %start

  {
    // Double-sided test on ORDER (Part I)
    int tmp;
    if (52 > (tmp = ORDER)) goto L_011C;
    // Double-sided test on ORDER (Part II)
    if (tmp > 53) goto L_011C;
  }

  //  1008                 mcycles = mcycles+2 %and post = post!64 %if post&64=0

  if (POST & 64 != 0) goto L_011D;
  MCYCLES = MCYCLES + 2;
  POST = POST | 64;
L_011D:;

//  1009              %else

  goto L_011E;
L_011C:;

//  1010                 i = i+1

  I = I + 1;

  //  1011              %finish

L_011E:;

//  1012           %finish %else %if pc %start

  goto L_0109;
L_011B:;
  if (!(PC())) goto L_011F;

    //  1013              mcycles = mcycles+2 %and post = post!128 %if post&128=0

  if (POST & 128 != 0) goto L_0120;
  MCYCLES = MCYCLES + 2;
  POST = POST | 128;
L_0120:;

//  1014           %finish %else %if pres char=',' %start

  goto L_0109;
L_011F:;
  if (PRESCHAR != 44) goto L_0121;

    //  1015              next char

  NEXTCHAR();

  //  1016           %else

  goto L_0109;
L_0121:;

//  1017              j = 1

  J = 1;

  //  1018              %exit

  goto L_0122;

  //  1019           %finish

L_0109:;

//  1020        %repeat %until %not more items

  if (!(MOREITEMS())) goto L_0122;
  goto L_0106;
L_0122:;

//  1021        instr out(order, post, 0, 2, mcycles)

  INSTROUT(ORDER, POST, 0, 2, MCYCLES);

  //  1022        fault("Stack not specified") %unless acc fault=0

  if (ACCFAULT == 0) goto L_0123;
  FAULT(_imp_str_literal_size(63, "Stack not specified"));
L_0123:;

//  1023        fault("Cannot stack stack pointer") %for i = i, -1, 1

  // %for I = I,  -1, 1 %cycle
  {
    int _initial = I;
    if (invalid_for_loop(_initial, -1, 1)) _imp_signal(5, 1, 0, "Illegal cycle I = I,  -1, 1");
    I = _initial - (-1);
  L_0124:
    if (I == 1) goto L_0125;
    I -= 1;
    FAULT(_imp_str_literal_size(63, "Cannot stack stack pointer"));
    goto L_0124;
  }

L_0125:;

//  1024        fault("Illegal operand") %unless j=0

  if (J == 0) goto L_0127;
  FAULT(_imp_str_literal_size(63, "Illegal operand"));
L_0127:;

//  1025        %continue

  goto L_001F;

  //  1026  !-----------------------------------------------------------------------
  //  1027  itype3(21): ! cwai,andcc,orcc

case_ITYPE3_21:;

//  1028        %if pres char='#' %start

  if (PRESCHAR != 35) goto L_0128;

    //  1029           next char %until pres char#bchar

L_0129:;
  NEXTCHAR();
  if (PRESCHAR != BCHAR) goto L_012A;
  goto L_0129;
L_012A:;

//  1030        %finish

L_0128:;

//  1031        i = get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //  1032        instr out(order, opd, 0, 2, mcycles)

  INSTROUT(ORDER, OPD, 0, 2, MCYCLES);

  //  1033        %unless i=0 %start

  if (I == 0) goto L_012B;

    //  1034           fault("Cannot evaluate operand")

  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));

  //  1035        %finish %else %unless 0<=opd<=255 %start

  goto L_012C;
L_012B:;
  {
    // Double-sided test on OPD (Part I)
    int tmp;
    if (0 > (tmp = OPD)) goto L_0126;
    // Double-sided test on OPD (Part II)
    if (tmp <= 255) goto L_012D;
  }
L_0126:;

//  1036           fault("Illegal mask")

  FAULT(_imp_str_literal_size(63, "Illegal mask"));

  //  1037        %finish

L_012D:;
L_012C:;

//  1038        %continue

  goto L_001F;

  //  1039  !-----------------------------------------------------------------------
  //  1040  itype3(22): ! tab, tba

case_ITYPE3_22:;

//  1041        instr out(16_1F, (order>>8)&255, order&255, 3, mcycles)

  INSTROUT(31, (unsigned int)ORDER >> 8 & 255, ORDER & 255, 3, MCYCLES);

  //  1042        %continue

  goto L_001F;

  //  1043  !-----------------------------------------------------------------------
  //  1044  itype3(23): ! swi

case_ITYPE3_23:;

//  1045        %if acc('1') %start

  if (!(ACC(49))) goto L_012E;

    //  1046           accop = 1

  ACCOP = 1;

  //  1047        %finish %else %if acc('2') %start

  goto L_012F;
L_012E:;
  if (!(ACC(50))) goto L_0130;

    //  1048           accop = 1

  ACCOP = 1;

  //  1049           order = order!16_1000

  ORDER = ORDER | 4096;

  //  1050           mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //  1051        %finish %else %if acc('3') %start

  goto L_012F;
L_0130:;
  if (!(ACC(51))) goto L_0131;

    //  1052           accop = 1

  ACCOP = 1;

  //  1053           order = order!16_1100

  ORDER = ORDER | 4352;

  //  1054           mcycles = mcycles+1

  MCYCLES = MCYCLES + 1;

  //  1055        %finish

L_0131:;
L_012F:;

//  1056        instr out(order, 0, 0, 1, mcycles)

  INSTROUT(ORDER, 0, 0, 1, MCYCLES);

  //  1057        %continue

  goto L_001F;

  //  1058  !-----------------------------------------------------------------------
  //  1059  itype3(24): ! lbrn

case_ITYPE3_24:;

//  1060        instr out(order, 0, 0, 5, mcycles)

  INSTROUT(ORDER, 0, 0, 5, MCYCLES);

  //  1061        %continue

  goto L_001F;

  //  1062  !-----------------------------------------------------------------------
  //  1063  itype3(25): ! sba, cba, aba

case_ITYPE3_25:;

//  1064        instr out(16_34, 16_04, order, 4, mcycles)

  INSTROUT(52, 4, ORDER, 4, MCYCLES);

  //  1065        %continue

  goto L_001F;

  //  1066  !-----------------------------------------------------------------------
  //  1067  itype3(26): ! fcb

case_ITYPE3_26:;

//  1068        %cycle

L_0132:;

//  1069           %if pres char=',' %start

  if (PRESCHAR != 44) goto L_0133;

    //  1070              opd = 0

  OPD = 0;

  //  1071              i = 0

  I = 0;

  //  1072           %else

  goto L_0134;
L_0133:;

//  1073              i = get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //  1074           %finish

L_0134:;

//  1075           %if cont=0 %start

  if (CONT != 0) goto L_0135;

    //  1076              j = lp

  J = LP;

  //  1077              look ahead = 1

  LOOKAHEAD = 1;

  //  1078              %while more items %cycle

L_0136:;
  if (!(MOREITEMS())) goto L_0137;

    //  1079                 k = get opd(k) %unless pres char=','

  if (PRESCHAR == 44) goto L_0138;
  K = GETOPD(/*?*/ &K);
L_0138:;

//  1080              %repeat

  goto L_0136;
L_0137:;

//  1081              look ahead = 0

  LOOKAHEAD = 0;

  //  1082              instr out(0, opd&255, 0, -1, 0)

  INSTROUT(0, OPD & 255, 0, -1, 0);

  //  1083              lp = j-1

  LP = J - 1;

  //  1084              next char

  NEXTCHAR();

  //  1085              cont = 1

  CONT = 1;

  //  1086           %else

  goto L_0139;
L_0135:;

//  1087              instr out(0, opd&255, 0, -1, 0)

  INSTROUT(0, OPD & 255, 0, -1, 0);

  //  1088           %finish

L_0139:;

//  1089           fault("Invalid constant") %unless i=0 %and -128<=opd<=255

  if (I != 0) goto L_013A;
  {
    // Double-sided test on OPD (Part I)
    int tmp;
    if (-128 > (tmp = OPD)) goto L_013A;
    // Double-sided test on OPD (Part II)
    if (tmp <= 255) goto L_013B;
  }
L_013A:;
  FAULT(_imp_str_literal_size(63, "Invalid constant"));
L_013B:;

//  1090        %repeat %until %not more items

  if (!(MOREITEMS())) goto L_013C;
  goto L_0132;
L_013C:;

//  1091        cont = 0

  CONT = 0;

  //  1092        %continue

  goto L_001F;

  //  1093  !------------------------------------------------------------------------
  //  1094  itype3(27): ! fdb

case_ITYPE3_27:;

//  1095        %cycle

L_013D:;

//  1096           %if pres char=',' %start

  if (PRESCHAR != 44) goto L_013E;

    //  1097              opd = 0

  OPD = 0;

  //  1098              i = 0

  I = 0;

  //  1099           %else

  goto L_013F;
L_013E:;

//  1100              i = get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //  1101           %finish

L_013F:;

//  1102           %if cont=0 %start

  if (CONT != 0) goto L_0140;

    //  1103              j = lp

  J = LP;

  //  1104              look ahead = 1

  LOOKAHEAD = 1;

  //  1105              %while more items %cycle

L_0141:;
  if (!(MOREITEMS())) goto L_0142;

    //  1106                 k = get opd(k) %unless pres char=','

  if (PRESCHAR == 44) goto L_0143;
  K = GETOPD(/*?*/ &K);
L_0143:;

//  1107              %repeat

  goto L_0141;
L_0142:;

//  1108              look ahead = 0

  LOOKAHEAD = 0;

  //  1109              instr out(0, opd, 0, -2, 0)

  INSTROUT(0, OPD, 0, -2, 0);

  //  1110              lp = j-1

  LP = J - 1;

  //  1111              next char

  NEXTCHAR();

  //  1112              cont = 1

  CONT = 1;

  //  1113           %else

  goto L_0144;
L_0140:;

//  1114              instr out(0, opd, 0, -2, 0)

  INSTROUT(0, OPD, 0, -2, 0);

  //  1115           %finish

L_0144:;

//  1116           fault("Invalid constant") %unless i=0

  if (I == 0) goto L_0145;
  FAULT(_imp_str_literal_size(63, "Invalid constant"));
L_0145:;

//  1117        %repeat %until %not more items

  if (!(MOREITEMS())) goto L_0146;
  goto L_013D;
L_0146:;

//  1118        cont = 0

  CONT = 0;

  //  1119        %continue

  goto L_001F;

  //  1120  !-----------------------------------------------------------------------
  //  1121  itype3(28):! equ

case_ITYPE3_28:;

//  1122        i = get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //  1123        instr out(0, opd, 0, -6, 0)

  INSTROUT(0, OPD, 0, -6, 0);

  //  1124        fault("No name to equate") %if lid=0

  if (LID != 0) goto L_0147;
  FAULT(_imp_str_literal_size(63, "No name to equate"));
L_0147:;

//  1125        fault("Cannot evaluate operand") %unless i=0

  if (I == 0) goto L_0148;
  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
L_0148:;

//  1126        %if lid#0 %and i=0 %and nass(lid)=3 %and nval(lid)#opd %start

  if (LID == 0) goto L_0149;
  if (I != 0) goto L_0149;
  if (NASS[LID - 1] != 3) goto L_0149;
  if (NVAL[LID - 1] == OPD) goto L_0149;

    //  1127           fault("Inconsistent label")

  FAULT(_imp_str_literal_size(63, "Inconsistent label"));

  //  1128           nval(lid) = opd

  NVAL[LID - 1] = OPD;

  //  1129        %finish

L_0149:;

//  1130        %continue

  goto L_001F;

  //  1131  !-----------------------------------------------------------------------
  //  1132  itype3(29):! org

case_ITYPE3_29:;

//  1133        i = get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //  1134        ca = opd %if i=0

  if (I != 0) goto L_014A;
  CA = OPD;
L_014A:;

//  1135        instr out(0, 0, 0, 0, 0)

  INSTROUT(0, 0, 0, 0, 0);

  //  1136        fault("Illegal label") %unless lid=0

  if (LID == 0) goto L_014B;
  FAULT(_imp_str_literal_size(63, "Illegal label"));
L_014B:;

//  1137        fault("Cannot evaluate operand") %unless i=0

  if (I == 0) goto L_014C;
  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
L_014C:;

//  1138        %continue

  goto L_001F;

  //  1139  !-----------------------------------------------------------------------
  //  1140  itype3(30): ! setdp

case_ITYPE3_30:;

//  1141        i = get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //  1142        dp contents = opd<<8 %if i=0 %and 0<=opd<=255

  if (I != 0) goto L_014D;
  {
    // Double-sided test on OPD (Part I)
    int tmp;
    if (0 > (tmp = OPD)) goto L_014D;
    // Double-sided test on OPD (Part II)
    if (tmp > 255) goto L_014D;
  }
  DPCONTENTS = OPD << 8;
L_014D:;

//  1143        instr out(0, opd, 0, -3, 0)

  INSTROUT(0, OPD, 0, -3, 0);

  //  1144        fault("Illegal label") %unless lid=0

  if (LID == 0) goto L_014E;
  FAULT(_imp_str_literal_size(63, "Illegal label"));
L_014E:;

//  1145        %unless i=0 %start

  if (I == 0) goto L_014F;

    //  1146           fault("Cannot evaluate operand")

  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));

  //  1147        %finish %else %unless 0<=opd<=255 %start

  goto L_0150;
L_014F:;
  {
    // Double-sided test on OPD (Part I)
    int tmp;
    if (0 > (tmp = OPD)) goto L_0151;
    // Double-sided test on OPD (Part II)
    if (tmp <= 255) goto L_0152;
  }
L_0151:;

//  1148           fault("Invalid direct page contents")

  FAULT(_imp_str_literal_size(63, "Invalid direct page contents"));

  //  1149        %finish

L_0152:;
L_0150:;

//  1150        %continue

  goto L_001F;

  //  1151  !-----------------------------------------------------------------------
  //  1152  itype3(31): ! rmb

case_ITYPE3_31:;

//  1153        i = get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //  1154        instr out(0, opd, 0, -4, 0)

  INSTROUT(0, OPD, 0, -4, 0);

  //  1155        %if i=0 %start

  if (I != 0) goto L_0153;

    //  1156           ca = ca+opd

  CA = CA + OPD;

  //  1157        %else

  goto L_0154;
L_0153:;

//  1158           fault("Cannot evaluate operand")

  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));

  //  1159        %finish

L_0154:;

//  1160        %continue

  goto L_001F;

  //  1161  !-----------------------------------------------------------------------
  //  1162  itype3(32):! fcc

case_ITYPE3_32:;

//  1163        non dense = 1

  NONDENSE = 1;

  //  1164        %if '0'<=pres char<='9' %start

  {
    // Double-sided test on PRESCHAR (Part I)
    int tmp;
    if (48 > (tmp = PRESCHAR)) goto L_0155;
    // Double-sided test on PRESCHAR (Part II)
    if (tmp > 57) goto L_0155;
  }

  //  1165           i = 0

  I = 0;

  //  1166           j = lp

  J = LP;

  //  1167           %cycle

L_0156:;

//  1168              i = i*10+pres char-'0'

  I = I * 10 + PRESCHAR - 48;

  //  1169              next char

  NEXTCHAR();

  //  1170           %repeat %until %not '0'<=pres char<='9'

  {
    // Double-sided test on PRESCHAR (Part I)
    int tmp;
    if (48 > (tmp = PRESCHAR)) goto L_0157;
    // Double-sided test on PRESCHAR (Part II)
    if (tmp > 57) goto L_0157;
  }
  goto L_0156;
L_0157:;

//  1171           %if pres char=',' %start

  if (PRESCHAR != 44) goto L_0158;

    //  1172              next char

  NEXTCHAR();

  //  1173              %if i=0 %start

  if (I != 0) goto L_0159;

    //  1174                 instr out(0, 0, 0, 0, 0)

  INSTROUT(0, 0, 0, 0, 0);

  //  1175                 fault("Invalid string")

  FAULT(_imp_str_literal_size(63, "Invalid string"));

  //  1176              %else

  goto L_015A;
L_0159:;

//  1177                 %while i>0 %cycle

L_015B:;
  if (I <= 0) goto L_015C;

    //  1178                    %if pres char=nl %start

  if (PRESCHAR != 10) goto L_015D;

    //  1179                       opd = ' '

  OPD = 32;

  //  1180                    %else

  goto L_015E;
L_015D:;

//  1181                       opd = line(lp)

  OPD = LINE[LP - 1];

  //  1182                       next char

  NEXTCHAR();

  //  1183                    %finish

L_015E:;

//  1184                    i = i-1

  I = I - 1;

  //  1185                    %if cont=0 %start

  if (CONT != 0) goto L_015F;

    //  1186                       j = lp

  J = LP;

  //  1187                       %for k = 1, 1, i %cycle

  // %for K = 1, 1, I %cycle
  {
    int _final = I;
    if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle K = 1, 1, I");
    K = 0;
  L_0160:
    if (K == _final) goto L_0161;
    K += 1;

    //  1188                          %exit %if pres char=nl

    if (PRESCHAR != 10) goto L_0162;
    goto L_0161;
  L_0162:;

  //  1189                          next char

    NEXTCHAR();

    //  1190                       %repeat

    goto L_0160;
  }

L_0161:;

//  1191                       instr out(0, opd, 0, -1, 0)

  INSTROUT(0, OPD, 0, -1, 0);

  //  1192                       lp = j-1

  LP = J - 1;

  //  1193                       next char

  NEXTCHAR();

  //  1194                       cont = 1

  CONT = 1;

  //  1195                    %else

  goto L_0163;
L_015F:;

//  1196                       instr out(0, opd, 0, -1, 0)

  INSTROUT(0, OPD, 0, -1, 0);

  //  1197                    %finish

L_0163:;

//  1198                 %repeat

  goto L_015B;
L_015C:;

//  1199                 cont = 0

  CONT = 0;

  //  1200              %finish

L_015A:;

//  1201              %continue

  goto L_001F;

  //  1202           %else

L_0158:;

//  1203              lp = j-1

  LP = J - 1;

  //  1204              next char

  NEXTCHAR();

  //  1205           %finish
  //  1206        %finish

L_0155:;

//  1207        %if pres char<' ' %start

  if (PRESCHAR >= 32) goto L_0164;

    //  1208           next char %while pres char#nl

L_0165:;
  if (PRESCHAR == 10) goto L_0166;
  NEXTCHAR();
  goto L_0165;
L_0166:;

//  1209           instr out(0, 0, 0, 0, 0)

  INSTROUT(0, 0, 0, 0, 0);

  //  1210           fault("Invalid string delimiter")

  FAULT(_imp_str_literal_size(63, "Invalid string delimiter"));

  //  1211        %else

  goto L_0167;
L_0164:;

//  1212           delim = pres char

  DELIM = PRESCHAR;

  //  1213           next char

  NEXTCHAR();

  //  1214           %cycle

L_0168:;

//  1215              %if pres char=nl %start

  if (PRESCHAR != 10) goto L_0169;

    //  1216                 %if cont=0 %start

  if (CONT != 0) goto L_016A;

    //  1217                    instr out(0, 0, 0, 0, 0)

  INSTROUT(0, 0, 0, 0, 0);

  //  1218                    fault("Invalid string")

  FAULT(_imp_str_literal_size(63, "Invalid string"));

  //  1219                 %finish

L_016A:;

//  1220                 %exit

  goto L_016B;

  //  1221              %finish

L_0169:;

//  1222              %if pres char=delim %start

  if (PRESCHAR != DELIM) goto L_016C;

    //  1223                 next char

  NEXTCHAR();

  //  1224                 %unless pres char=delim %start

  if (PRESCHAR == DELIM) goto L_016D;

    //  1225                    %if cont=0 %start

  if (CONT != 0) goto L_016E;

    //  1226                       instr out(0, 0, 0, 0, 0)

  INSTROUT(0, 0, 0, 0, 0);

  //  1227                       fault("Invalid string")

  FAULT(_imp_str_literal_size(63, "Invalid string"));

  //  1228                    %finish

L_016E:;

//  1229                    %exit

  goto L_016B;

  //  1230                 %finish

L_016D:;

//  1231              %finish

L_016C:;

//  1232              %if cont=0 %start

  if (CONT != 0) goto L_016F;

    //  1233                 i = lp

  I = LP;

  //  1234                 %cycle

L_0170:;

//  1235                    next char %while pres char#delim %and pres char#nl

L_0171:;
  if (PRESCHAR == DELIM) goto L_0172;
  if (PRESCHAR == 10) goto L_0172;
  NEXTCHAR();
  goto L_0171;
L_0172:;

//  1236                    %if pres char=delim %start

  if (PRESCHAR != DELIM) goto L_0173;

    //  1237                       next char

  NEXTCHAR();

  //  1238                    %finish

L_0173:;

//  1239                    %exit %unless pres char=delim

  if (PRESCHAR == DELIM) goto L_0174;
  goto L_0175;
L_0174:;

//  1240                    next char

  NEXTCHAR();

  //  1241                 %repeat

  goto L_0170;
L_0175:;

//  1242                 instr out(0, line(i), 0, -1, 0)

  INSTROUT(0, LINE[I - 1], 0, -1, 0);

  //  1243                 lp = i-1

  LP = I - 1;

  //  1244                 next char

  NEXTCHAR();

  //  1245                 cont = 1

  CONT = 1;

  //  1246              %else

  goto L_0176;
L_016F:;

//  1247                 instr out(0, line(lp), 0, -1, 0)

  INSTROUT(0, LINE[LP - 1], 0, -1, 0);

  //  1248              %finish

L_0176:;

//  1249              next char

  NEXTCHAR();

  //  1250           %repeat

  goto L_0168;
L_016B:;

//  1251           cont = 0

  CONT = 0;

  //  1252        %finish

L_0167:;

//  1253        %continue

  goto L_001F;

  //  1254  !-----------------------------------------------------------------------
  //  1255  itype3(33): ! nam

case_ITYPE3_33:;

//  1256        non dense = 1

  NONDENSE = 1;

  //  1257        header = ""


  /* clang-format off */
_imp_strncpy(/*?*/&HEADER, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/41);

  /* clang-format on */

  //  1258        %while pres char#nl %cycle

L_0177:;
  if (PRESCHAR == 10) goto L_0178;

    //  1259           header <- header.to string(line(lp))


  /* clang-format off */
_imp_strncpy(/*?*/&HEADER, ({__typeof__(_imp_string255) tmp; /*C*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&HEADER, ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_TOSTRING(LINE[LP - 1]); (void *)&tmp;})); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/41);

  /* clang-format on */
  /* truncated copy of no more than 41 chars */
  /* clang-format off */
if (*_imp_LENGTH((_imp_string *)/*?*/&HEADER) > 41) *_imp_LENGTH((_imp_string *)/*?*/&HEADER) = 41;

    /* clang-format on */

    //  1260           next char

  NEXTCHAR();

  //  1261        %repeat

  goto L_0177;
L_0178:;

//  1262        instr out(0, 0, 0, -7, 0)

  INSTROUT(0, 0, 0, -7, 0);

  //  1263        fault("Illegal label") %unless lid=0

  if (LID == 0) goto L_0179;
  FAULT(_imp_str_literal_size(63, "Illegal label"));
L_0179:;

//  1264        %continue

  goto L_001F;

  //  1265  !-----------------------------------------------------------------------
  //  1266  itype3(34): ! opt

case_ITYPE3_34:;

//  1267        i = lp

  I = LP;

  //  1268        j = bchar

  J = BCHAR;

  //  1269        %cycle

L_017A:;

//  1270           %if get option(opt) %start

  if (!(GETOPTION(/*?*/ &OPT))) goto L_017B;

    //  1271              ->option action(opt)

  OPTIONACTION_line = __LINE__;
  OPTIONACTION_file = __FILE__;
  OPTIONACTION_index = OPT;
  goto case_OPTIONACTION_dispatch;

  //  1272  option action(1):

case_OPTIONACTION_1:;

//  1273  option action(2):

case_OPTIONACTION_2:;

//  1274              bchar = ' '

  BCHAR = 32;

  //  1275              -> next option

  goto U_1004;

  //  1276  option action(3):

case_OPTIONACTION_3:;

//  1277  option action(4):

case_OPTIONACTION_4:;

//  1278              bchar = -1

  BCHAR = -1;

  //  1279              -> next option

  goto U_1004;

  //  1280  option action(5):

case_OPTIONACTION_5:;

//  1281  option action(6):

case_OPTIONACTION_6:;

//  1282              cflag = 1

  CFLAG = 1;

  //  1283              -> next option

  goto U_1004;

  //  1284  option action(7):

case_OPTIONACTION_7:;

//  1285  option action(8):

case_OPTIONACTION_8:;

//  1286              cflag = 0

  CFLAG = 0;

  //  1287              -> next option

  goto U_1004;

  //  1288  option action(9):

case_OPTIONACTION_9:;

//  1289              drad = 4

  DRAD = 4;

  //  1290              sp1 = 3

  SP1 = 3;

  //  1291              sp2 = 6

  SP2 = 6;

  //  1292              -> next option

  goto U_1004;

  //  1293  option action(10):

case_OPTIONACTION_10:;

//  1294              drad = 5

  DRAD = 5;

  //  1295              sp1 = 3

  SP1 = 3;

  //  1296              sp2 = 5

  SP2 = 5;

  //  1297             -> next option

  goto U_1004;

  //  1298  option action(11):

case_OPTIONACTION_11:;

//  1299              drad = 8

  DRAD = 8;

  //  1300              sp1 = 2

  SP1 = 2;

  //  1301              sp2 = 4

  SP2 = 4;

  //  1302              -> next option

  goto U_1004;

  //  1303  option action(12):

case_OPTIONACTION_12:;

//  1304  option action(13):

case_OPTIONACTION_13:;

//  1305  option action(14):

case_OPTIONACTION_14:;

//  1306  option action(15):

case_OPTIONACTION_15:;

//  1307              eflag = 1

  EFLAG = 1;

  //  1308              -> next option

  goto U_1004;

  //  1309  option action(16):

case_OPTIONACTION_16:;

//  1310  option action(17):

case_OPTIONACTION_17:;

//  1311              eflag = 0

  EFLAG = 0;

  //  1312              -> next option

  goto U_1004;

  //  1313  option action(18):

case_OPTIONACTION_18:;

//  1314  option action(19):

case_OPTIONACTION_19:;

//  1315              fflag = 1

  FFLAG = 1;

  //  1316              -> next option

  goto U_1004;

  //  1317  option action(20):

case_OPTIONACTION_20:;

//  1318  option action(21):

case_OPTIONACTION_21:;

//  1319              fflag = 0

  FFLAG = 0;

  //  1320              -> next option

  goto U_1004;

  //  1321  option action(22):

case_OPTIONACTION_22:;

//  1322  option action(23):

case_OPTIONACTION_23:;

//  1323              gflag = 1

  GFLAG = 1;

  //  1324              -> next option

  goto U_1004;

  //  1325  option action(24):

case_OPTIONACTION_24:;

//  1326  option action(25):

case_OPTIONACTION_25:;

//  1327              gflag = 0

  GFLAG = 0;

  //  1328              -> next option

  goto U_1004;

  //  1329  option action(26):

case_OPTIONACTION_26:;

//  1330  option action(27):

case_OPTIONACTION_27:;

//  1331              lflag = 2

  LFLAG = 2;

  //  1332              -> next option

  goto U_1004;

  //  1333  option action(28):

case_OPTIONACTION_28:;

//  1334  option action(29):

case_OPTIONACTION_29:;

//  1335              lflag = 1

  LFLAG = 1;

  //  1336              -> next option

  goto U_1004;

  //  1337  option action(30):

case_OPTIONACTION_30:;

//  1338  option action(31):

case_OPTIONACTION_31:;

//  1339              lflag = 0

  LFLAG = 0;

  //  1340              -> next option

  goto U_1004;

  //  1341  option action(32):

case_OPTIONACTION_32:;

//  1342  option action(33):

case_OPTIONACTION_33:;

//  1343              pflag = 3

  PFLAG = 3;

  //  1344              -> next option

  goto U_1004;

  //  1345  option action(34):

case_OPTIONACTION_34:;

//  1346  option action(35):

case_OPTIONACTION_35:;

//  1347              pflag = 0

  PFLAG = 0;

  //  1348              -> next option

  goto U_1004;

  //  1349  option action(36):

case_OPTIONACTION_36:;

//  1350  option action(37):

case_OPTIONACTION_37:;

//  1351              sflag = 1

  SFLAG = 1;

  //  1352              -> next option

  goto U_1004;

  //  1353  option action(38):

case_OPTIONACTION_38:;

//  1354  option action(39):

case_OPTIONACTION_39:;

//  1355              sflag = 0

  SFLAG = 0;

  //  1356              -> next option

  goto U_1004;

  //  1357  option action(40):

case_OPTIONACTION_40:;

//  1358  option action(41):

case_OPTIONACTION_41:;

//  1359              tflag = 1

  TFLAG = 1;

  //  1360              -> next option

  goto U_1004;

  //  1361  option action(42):

case_OPTIONACTION_42:;

//  1362  option action(43):

case_OPTIONACTION_43:;

//  1363              tflag = 0

  TFLAG = 0;

  //  1364              -> next option

  goto U_1004;

  //  1365  option action(44):

case_OPTIONACTION_44:;

//  1366  option action(45):

case_OPTIONACTION_45:;

//  1367              wflag = 1

  WFLAG = 1;

  //  1368              -> next option

  goto U_1004;

  //  1369  option action(46):

case_OPTIONACTION_46:;

//  1370  option action(47):

case_OPTIONACTION_47:;

//  1371              wflag = 0

  WFLAG = 0;

  //  1372              -> next option

  goto U_1004;

  //  1373  option action(48):

case_OPTIONACTION_48:;

//  1374  option action(49):

case_OPTIONACTION_49:;

//  1375              xflag = 1

  XFLAG = 1;

  //  1376              -> next option

  goto U_1004;

  //  1377  option action(50):

case_OPTIONACTION_50:;

//  1378  option action(51):

case_OPTIONACTION_51:;

//  1379              xflag = 0

  XFLAG = 0;

  //  1380  option action(-1):

case_OPTIONACTION_M1:;

//  1381  option action(0):

case_OPTIONACTION_0:;

//  1382  next option:

U_1004:;

//  1383           %finish

L_017B:;

//  1384        %repeat %until %not more items

  if (!(MOREITEMS())) goto L_017D;
  goto L_017A;
L_017D:;

//  1385        %if lflag=2 %start

  if (LFLAG != 2) goto L_017E;

    //  1386           sp3 = line width-sp1-sp2*3-cflag*3-wflag-11

  SP3 = 78 - SP1 - SP2 * 3 - CFLAG * 3 - WFLAG - 11;

  //  1387        %else

  goto L_017F;
L_017E:;

//  1388           sp3 = line width-wflag-7

  SP3 = 78 - WFLAG - 7;

  //  1389        %finish

L_017F:;

//  1390        instr out(0, 0, 0, -7, 0)

  INSTROUT(0, 0, 0, -7, 0);

  //  1391        fault("Illegal label") %unless lid=0

  if (LID == 0) goto L_0180;
  FAULT(_imp_str_literal_size(63, "Illegal label"));
L_0180:;

//  1392        lp = i-1

  LP = I - 1;

  //  1393        next char

  NEXTCHAR();

  //  1394        bchar = j

  BCHAR = J;

  //  1395        %cycle

L_0181:;

//  1396           %if get option(opt) %start

  if (!(GETOPTION(/*?*/ &OPT))) goto L_0182;

    //  1397              %if opt=1 %or opt=2 %start

  if (OPT == 1) goto L_0183;
  if (OPT != 2) goto L_0184;
L_0183:;

//  1398                 bchar = ' '

  BCHAR = 32;

  //  1399              %finish %else %if opt=3 %or opt=4 %start

  goto L_0185;
L_0184:;
  if (OPT == 3) goto L_0186;
  if (OPT != 4) goto L_0187;
L_0186:;

//  1400                 bchar = -1

  BCHAR = -1;

  //  1401              %finish %else %if opt<0 %start

  goto L_0185;
L_0187:;
  if (OPT >= 0) goto L_0188;

    //  1402                 fault("Unknown option")

  FAULT(_imp_str_literal_size(63, "Unknown option"));

  //  1403              %finish

L_0188:;
L_0185:;

//  1404           %else

  goto L_0189;
L_0182:;

//  1405              fault("Cannot evaluate operand")

  FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));

  //  1406           %finish

L_0189:;

//  1407        %repeat %until %not more items

  if (!(MOREITEMS())) goto L_018A;
  goto L_0181;
L_018A:;

//  1408        %continue

  goto L_001F;

  //  1409  !-----------------------------------------------------------------------
  //  1410  itype3(35): ! page

case_ITYPE3_35:;

//  1411        %unless lid=0 %start

  if (LID == 0) goto L_018B;

    //  1412           instr out(0, 0, 0, -7, 0)

  INSTROUT(0, 0, 0, -7, 0);

  //  1413           fault("Illegal label")

  FAULT(_imp_str_literal_size(63, "Illegal label"));

  //  1414        %finish

L_018B:;

//  1415        nline(lines on page) %unless lflag=0

  if (LFLAG == 0) goto L_018C;
  NLINE(66);
L_018C:;

//  1416        %continue

  goto L_001F;

  //  1417  !-----------------------------------------------------------------------
  //  1418  itype3(36): ! spc

case_ITYPE3_36:;

//  1419        i = get opd(opd)

  I = GETOPD(/*?*/ &OPD);

  //  1420        %unless lid=0 %start

  if (LID == 0) goto L_018D;

    //  1421           instr out(0, 0, 0, -7, 0)

  INSTROUT(0, 0, 0, -7, 0);

  //  1422           fault("Illegal label")

  FAULT(_imp_str_literal_size(63, "Illegal label"));

  //  1423        %finish

L_018D:;

//  1424        %unless lflag=0 %start

  if (LFLAG == 0) goto L_018E;

    //  1425           %if i=0 %start

  if (I != 0) goto L_018F;

    //  1426              nline(opd)

  NLINE(OPD);

  //  1427           %else

  goto L_0190;
L_018F:;

//  1428              nline(1)

  NLINE(1);

  //  1429           %finish

L_0190:;

//  1430        %finish

L_018E:;

//  1431  !-----------------------------------------------------------------------
//  1432     %repeat

L_001F:;
  goto L_0096;

  //  1433  !-----------------------------------------------------------------------
  //  1434  itype3(37):! end

case_ITYPE3_37:;

//  1435     instr out(0, 0, 0, -7, 0)

  INSTROUT(0, 0, 0, -7, 0);

  //  1436     fault("Illegal label") %unless lid=0

  if (LID == 0) goto L_0191;
  FAULT(_imp_str_literal_size(63, "Illegal label"));
L_0191:;

//  1437     %for i = 1, 1, nnames %cycle

  // %for I = 1, 1, NNAMES %cycle
  {
    int _final = NNAMES;
    if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, NNAMES");
    I = 0;
  L_0192:
    if (I == _final) goto L_0193;
    I += 1;

    //  1438        fault("Symbol ".name(i)." has no value") %if nass(i)=0

    if (NASS[I - 1] != 0) goto L_0195;
    FAULT(
        /* clang-format off */
*({  __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("Symbol "), (_imp_string *)/*?*/&NAME[I - 1]); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(" has no value")); (_imp_string255 *)&tmp;})/*q*/;  (_imp_string63 *)&tmp;  })
        /* clang-format on */
    );
  L_0195:;

  //  1439     %repeat

    goto L_0192;
  }

L_0193:;

//  1440  !-----------------------------------------------------------------------
//  1441     %unless xflag=0 %start

  if (XFLAG == 0) goto L_0196;

    //  1442        sqs(1, nnames)

  SQS(1, NNAMES);

  //  1443        nline(lines on page)

  NLINE(66);

  //  1444        print string("   Symbol Cross Reference Table")

  _imp_PRINTSTRING(_imp_str_literal("   Symbol Cross Reference Table"));

  //  1445        nline(2)

  NLINE(2);

  //  1446        sp3 = (linewidth-6-sp2)//6

  SP3 = ((long)(78 - 6 - SP2) / (long)6);

  //  1447        %for i = 1, 1, nnames %cycle

  // %for I = 1, 1, NNAMES %cycle
  {
    int _final = NNAMES;
    if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, NNAMES");
    I = 0;
  L_0197:
    if (I == _final) goto L_0198;
    I += 1;

    //  1448           print string(name(i))

    _imp_PRINTSTRING(
        /* clang-format off */
*({  __typeof__(_imp_string6) tmp = NAME[I - 1]/*q*/;  (_imp_string255 *)&tmp;  })
        /* clang-format on */
    );

    //  1449           spaces(7-length(name(i)))

    _imp_SPACES(7 - *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &NAME[I - 1]));

    //  1450           %if nass(i)=0 %or nass(i)=2 %or nass(i)=4 %start

    if (NASS[I - 1] == 0) goto L_019A;
    if (NASS[I - 1] == 2) goto L_019A;
    if (NASS[I - 1] != 4) goto L_019B;
  L_019A:;

  //  1451              print symbol('*') %for j = 1, 1, sp2

    // %for J = 1, 1, SP2 %cycle
    {
      int _final = SP2;
      if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle J = 1, 1, SP2");
      J = 0;
    L_019C:
      if (J == _final) goto L_019D;
      J += 1;
      _imp_PRINTSYMBOL(42);
      goto L_019C;
    }

  L_019D:;

  //  1452           %else

    goto L_019F;
  L_019B:;

  //  1453              print number(nval(i), 2)

    PRINTNUMBER(NVAL[I - 1], 2);

    //  1454           %finish

  L_019F:;

  //  1455           j = xhead(i)

    J = XHEAD[I - 1];

    //  1456           k = 0

    K = 0;

    //  1457           %cycle

  L_01A0:;

  //  1458              l = xlink(j)

    L = XLINK[J - 1];

    //  1459              xlink(j) = k

    XLINK[J - 1] = K;

    //  1460              k = j

    K = J;

    //  1461              j = l

    J = L;

    //  1462           %repeat %until j=0

    if (J == 0) goto L_01A1;
    goto L_01A0;
  L_01A1:;

  //  1463           j = 0

    J = 0;

    //  1464           %cycle

  L_01A2:;

  //  1465              %if j=sp3 %start

    if (J != SP3) goto L_01A3;

      //  1466                 nline(1)

    NLINE(1);

    //  1467                 spaces(7+sp2)

    _imp_SPACES(7 + SP2);

    //  1468                 j = 0

    J = 0;

    //  1469              %finish

  L_01A3:;

  //  1470              write(xentry(k), 5)

    _imp_WRITE(XENTRY[K - 1], 5);

    //  1471              j = j+1

    J = J + 1;

    //  1472              k = xlink(k)

    K = XLINK[K - 1];

    //  1473           %repeat %until k=0

    if (K == 0) goto L_01A4;
    goto L_01A2;
  L_01A4:;

  //  1474           nline(1)

    NLINE(1);

    //  1475        %repeat

    goto L_0197;
  }

L_0198:;

//  1476     %finish %else %unless sflag=0 %start

  goto L_01A5;
L_0196:;
  if (SFLAG == 0) goto L_01A6;

    //  1477        sqs(1, nnames)

  SQS(1, NNAMES);

  //  1478        nline(lines on page)

  NLINE(66);

  //  1479        print string("  Symbol Table")

  _imp_PRINTSTRING(_imp_str_literal("  Symbol Table"));

  //  1480        nline(2)

  NLINE(2);

  //  1481        sp3 = (line width+8-sp2)//15

  SP3 = ((long)(78 + 8 - SP2) / (long)15);

  //  1482        sp1 = (linewidth-sp3*15+9-sp2)>>1

  SP1 = (unsigned int)78 - SP3 * 15 + 9 - SP2 >> 1;

  //  1483        %for j = 1, 1, nnames %cycle

  // %for J = 1, 1, NNAMES %cycle
  {
    int _final = NNAMES;
    if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle J = 1, 1, NNAMES");
    J = 0;
  L_01A7:
    if (J == _final) goto L_01A8;
    J += 1;

    //  1484           %if (j-1)=(j-1)//sp3*sp3 %start

    if (J - 1 != ((long)(J - 1) / (long)SP3) * SP3) goto L_01A9;

      //  1485              nline(1)

    NLINE(1);

    //  1486             spaces(sp2)

    _imp_SPACES(SP2);

    //  1487           %else

    goto L_01AA;
  L_01A9:;

  //  1488              spaces(8-sp2)

    _imp_SPACES(8 - SP2);

    //  1489           %finish

  L_01AA:;

  //  1490           print string(name(j))

    _imp_PRINTSTRING(
        /* clang-format off */
*({  __typeof__(_imp_string6) tmp = NAME[J - 1]/*q*/;  (_imp_string255 *)&tmp;  })
        /* clang-format on */
    );

    //  1491           spaces(7-length(name(j)))

    _imp_SPACES(7 - *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &NAME[J - 1]));

    //  1492           %if nass(j)=0 %or nass(j)=2 %or nass(j)=4 %start

    if (NASS[J - 1] == 0) goto L_01AB;
    if (NASS[J - 1] == 2) goto L_01AB;
    if (NASS[J - 1] != 4) goto L_01AC;
  L_01AB:;

  //  1493              print symbol('*') %for i = 1, 1, sp2

    // %for I = 1, 1, SP2 %cycle
    {
      int _final = SP2;
      if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, SP2");
      I = 0;
    L_01AD:
      if (I == _final) goto L_01AE;
      I += 1;
      _imp_PRINTSYMBOL(42);
      goto L_01AD;
    }

  L_01AE:;

  //  1494           %else

    goto L_01AF;
  L_01AC:;

  //  1495              print number(nval(j),2)

    PRINTNUMBER(NVAL[J - 1], 2);

    //  1496           %finish

  L_01AF:;

  //  1497        %repeat

    goto L_01A7;
  }

L_01A8:;

//  1498        nline(1)

  NLINE(1);

  //  1499     %finish

L_01A6:;
L_01A5:;

//  1500     nline(2)

  NLINE(2);

  //  1501     spaces(2)

  _imp_SPACES(2);

  //  1502     %if faults=0 %start

  if (FAULTS != 0) goto L_01B0;

    //  1503        print string("No")

  _imp_PRINTSTRING(_imp_str_literal("No"));

  //  1504     %else

  goto L_01B1;
L_01B0:;

//  1505        write(faults, 0)

  _imp_WRITE(FAULTS, 0);

  //  1506     %finish

L_01B1:;

//  1507     print string(" fault")

  _imp_PRINTSTRING(_imp_str_literal(" fault"));

  //  1508     print symbol('s') %unless faults=1

  if (FAULTS == 1) goto L_01B2;
  _imp_PRINTSYMBOL(115);
L_01B2:;

//  1509     print string(" in this assembly.")

  _imp_PRINTSTRING(_imp_str_literal(" in this assembly."));

  //  1510     newline

  _imp_NEWLINE();

  //  1511     select output(0)

  _imp_SELECTOUTPUT(0);

  //  1512     spaces(2)

  _imp_SPACES(2);

  //  1513     %if faults=0 %start

  if (FAULTS != 0) goto L_01B3;

    //  1514        write(ln, 0)

  _imp_WRITE(LN, 0);

  //  1515        print string(" line")

  _imp_PRINTSTRING(_imp_str_literal(" line"));

  //  1516        print symbol('s') %unless ln=1

  if (LN == 1) goto L_01B4;
  _imp_PRINTSYMBOL(115);
L_01B4:;

//  1517        print string(" assembled.")

  _imp_PRINTSTRING(_imp_str_literal(" assembled."));

  //  1518     %else

  goto L_01B5;
L_01B3:;

//  1519        write(faults, 0)

  _imp_WRITE(FAULTS, 0);

  //  1520        print string(" fault")

  _imp_PRINTSTRING(_imp_str_literal(" fault"));

  //  1521        print symbol('s') %unless faults=1

  if (FAULTS == 1) goto L_01B6;
  _imp_PRINTSYMBOL(115);
L_01B6:;

//  1522        print string(" in this assembly.")

  _imp_PRINTSTRING(_imp_str_literal(" in this assembly."));

  //  1523     %finish

L_01B5:;

//  1524     new line

  _imp_NEWLINE();

  //  1525     close

  CLOSE();

  //  1526     %stop

  _imp_stop(0);

  //  1527  !-------------------------------------------------------
  //  1528     %predicate matches(%string(255) source, pattern,

  int MATCHES(_imp_string255 SOURCE, _imp_string255 PATTERN, int MIN, int *I) {
    //  1529+                       %integer min, %integer %name i)
    //  1530        %integer l

    int L;

    //  1531        l = length(pattern)

    L = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PATTERN);

    //  1532        %if length(pattern)>=length(source) %start

    if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PATTERN) < *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &SOURCE))
      goto L_01B7;

      //  1533           l = length(source)

    L = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &SOURCE);

    //  1534        %else

    goto L_01B8;
  L_01B7:;

  //  1535           l = length(pattern)

    L = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PATTERN);

    //  1536        %finish

  L_01B8:;

  //  1537        %for i = 1, 1, l %cycle

    // %for *I = 1, 1, L %cycle
    {
      int _final = L;
      if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle *I = 1, 1, L");
      *I = 0;
    L_01B9:
      if (*I == _final) goto L_01BA;
      *I += 1;

      //  1538           %unless charno(source, i)=charno(pattern, i) %start

      if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &SOURCE, *I) ==
          *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PATTERN, *I))
        goto L_01BB;

        //  1539              %if 'A'<=charno(source, i)<='Z' %start

      {
        // Double-sided test on _imp_CHARNO((_imp_string255 *)/*p*//*?*/&SOURCE, *I) (Part I)
        unsigned char tmp;
        if (65 > (tmp = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &SOURCE, *I))) goto L_01BC;
        // Double-sided test on _imp_CHARNO((_imp_string255 *)/*p*//*?*/&SOURCE, *I) (Part II)
        if (tmp > 90) goto L_01BC;
      }

      //  1540                 %false

      return 0 /*FALSE*/;

      //  1541              %finish %else %if i<=min %start

    L_01BC:;
      if (*I > MIN) goto L_01BD;

        //  1542                 %false

      return 0 /*FALSE*/;

      //  1543              %else

    L_01BD:;

    //  1544                 %true

      return 1 /*TRUE*/;

      //  1545              %finish
      //  1546           %finish

    L_01BB:;

    //  1547        %repeat

      goto L_01B9;
    }

  L_01BA:;

  //  1548        i = i+1

    *I = *I + 1;

    //  1549        %false %if i<=min

    if (*I > MIN) goto L_01BE;
    return 0 /*FALSE*/;
  L_01BE:;

  //  1550        %true

    return 1 /*TRUE*/;

    //  1551     %end

  } /* end of MATCHES */

  //  1552  !---------------------------------------------------------------------
  //  1553     %string(255) %function lc(%string(255) source)

  _imp_string255 LC(_imp_string255 SOURCE) {
    //  1554        %string(255) result

    _imp_string255 RESULT;

    //  1555        %integer i

    int I;

    //  1556
    //  1557        result = ""


    /* clang-format off */
_imp_strncpy(/*?*/&RESULT, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/255);

    /* clang-format on */

    //  1558        %for i = 1, 1, length(source) %cycle

    // %for I = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&SOURCE) %cycle
    {
      int _final = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &SOURCE);
      if (invalid_for_loop(1, 1, _final))
        _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&SOURCE)");
      I = 0;
    L_01BF:
      if (I == _final) goto L_01C0;
      I += 1;

      //  1559           %if 'A'<=charno(source, i)&127<='Z' %start

      {
        // Double-sided test on *_imp_CHARNO((_imp_string255 *)/*p*//*?*/&SOURCE, I) & 127 (Part I)
        unsigned char tmp;
        if (65 > (tmp = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &SOURCE, I) & 127)) goto L_01C1;
        // Double-sided test on *_imp_CHARNO((_imp_string255 *)/*p*//*?*/&SOURCE, I) & 127 (Part II)
        if (tmp > 90) goto L_01C1;
      }

      //  1560              result = result.tostring((charno(source, i)&127)+'a'-'A')


      /* clang-format off */
_imp_strncpy(/*?*/&RESULT, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&RESULT, ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_TOSTRING((*_imp_CHARNO((_imp_string255 *)/*p*//*?*/&SOURCE, I) & 127) + 97 - 65); (void *)&tmp;})); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/255);

      /* clang-format on */

      //  1561           %else

      goto L_01C2;
    L_01C1:;

    //  1562              result = result.tostring(charno(source, i)&127)


      /* clang-format off */
_imp_strncpy(/*?*/&RESULT, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&RESULT, ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_TOSTRING(*_imp_CHARNO((_imp_string255 *)/*p*//*?*/&SOURCE, I) & 127); (void *)&tmp;})); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/255);

      /* clang-format on */

      //  1563           %finish

    L_01C2:;

    //  1564        %repeat

      goto L_01BF;
    }

  L_01C0:;

  //  1565        %result = result

    return *(_imp_string255 *)/*?*/ &RESULT;

    //  1566     %end

  } /* end of LC */

  //  1567  !---------------------------------------------------------------------
  //  1568     %predicate is typed(%string(255) source, %string(255)%name file)

  int ISTYPED(_imp_string255 SOURCE, _imp_string255 * FILE) {
    //  1569        %integer i

    int I;

    //  1570
    //  1571        %for i = 1, 1, length(source) %cycle

    // %for I = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&SOURCE) %cycle
    {
      int _final = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &SOURCE);
      if (invalid_for_loop(1, 1, _final))
        _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&SOURCE)");
      I = 0;
    L_01C3:
      if (I == _final) goto L_01C4;
      I += 1;

      //  1572           file = substring(source, 1, i-1) %and %true %if charno(source, i)='.'

      if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &SOURCE, I) != 46) goto L_01C5;
      *FILE = _imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &SOURCE, 1, I - 1);
      return 1 /*TRUE*/;
    L_01C5:;

    //  1573        %repeat

      goto L_01C3;
    }

  L_01C4:;

  //  1574        file = source

    *FILE = SOURCE;

    //  1575        %false

    return 0 /*FALSE*/;

    //  1576     %end

  } /* end of ISTYPED */

  //  1577  !-----------------------------------------------------------------------
  //  1578  %routine read line

  void READLINE(void) {
    //  1579  %integer ch

    int CH;

    //  1580     %integer i

    int I;

    //  1581     %on %event 9 %start

    if (!_imp_on_event(9)) goto L_01C6;

      //  1582        %if i=1 %start

    if (I != 1) goto L_01C7;

      //  1583           line(1) = ' '

    LINE[0] = 32;

    //  1584           line(2) = 'E'

    LINE[1] = 69;

    //  1585           line(3) = 'N'

    LINE[2] = 78;

    //  1586           line(4) = 'D'

    LINE[3] = 68;

    //  1587           line(5) = nl

    LINE[4] = 10;

    //  1588        %else

    goto L_01C8;
  L_01C7:;

  //  1589           line(i) = nl

    LINE[I - 1] = 10;

    //  1590        %finish

  L_01C8:;

  //  1591        -> eof exit

    goto U_1005;

    //  1592     %finish

  L_01C6:;

  //  1593
  //  1594     ln=ln+1

    LN = LN + 1;

    //  1595     %for i = 1, 1, max line+1 %cycle

    // %for I = 1, 1, 512 + 1 %cycle
    {
      int _final = 512 + 1;
      if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, 512 + 1");
      I = 0;
    L_01C9:
      if (I == _final) goto L_01CA;
      I += 1;

      //  1596        read symbol(ch); line(i) = ch

      _imp_READSYMBOL(/*?*/ &CH);
      LINE[I - 1] = CH;

      //  1597        %exit %if line(i)&127=nl %or line(i)&127=12

      if (LINE[I - 1] & 127 == 10) goto L_0199;
      if (LINE[I - 1] & 127 != 12) goto L_01CB;
    L_0199:;
      goto L_01CA;
    L_01CB:;

    //  1598     %repeat

      goto L_01C9;
    }

  L_01CA:;

  //  1599     read symbol(ch) %and line(i) = ch %while line(i)&127#nl %and line(i)&127#12

  L_01CC:;
    if (LINE[I - 1] & 127 == 10) goto L_01CD;
    if (LINE[I - 1] & 127 == 12) goto L_01CD;
    _imp_READSYMBOL(/*?*/ &CH);
    LINE[I - 1] = CH;
    goto L_01CC;
  L_01CD:;

  //  1600  eof exit:

  U_1005:;

  //  1601     lp = 0

    LP = 0;

    //  1602     next char

    NEXTCHAR();

    //  1603  %end

    return;
  } /* end of READLINE */

  //  1604  !-----------------------------------------------------------------------
  //  1605  %routine next char

  void NEXTCHAR(void) {
    //  1606
    //  1607     lp = lp+1

    LP = LP + 1;

    //  1608     pres char = line(lp)&127

    PRESCHAR = LINE[LP - 1] & 127;

    //  1609     %if 'a'<=pres char<='z' %start

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (97 > (tmp = PRESCHAR)) goto L_01CE;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp > 122) goto L_01CE;
    }

    //  1610        pres char = pres char+'A'-'a'

    PRESCHAR = PRESCHAR + 65 - 97;

    //  1611     %finish %else %if pres char=12 %start

    goto L_01CF;
  L_01CE:;
    if (PRESCHAR != 12) goto L_01D0;

      //  1612        pres char = nl

    PRESCHAR = 10;

    //  1613     %finish %else %if pres char=9 %start

    goto L_01CF;
  L_01D0:;
    if (PRESCHAR != 9) goto L_01D1;

      //  1614        pres char = ' '

    PRESCHAR = 32;

    //  1615     %finish

  L_01D1:;
  L_01CF:;

  //  1616  %end

    return;
  } /* end of NEXTCHAR */

  //  1617  !-----------------------------------------------------------------------
  //  1618  %routine skip blanks

  void SKIPBLANKS(void) {
    //  1619
    //  1620     next char %while pres char=' '

  L_01D2:;
    if (PRESCHAR != 32) goto L_01D3;
    NEXTCHAR();
    goto L_01D2;
  L_01D3:;

  //  1621  %end

    return;
  } /* end of SKIPBLANKS */

  //  1622  !-----------------------------------------------------------------------
  //  1623  %predicate more items

  int MOREITEMS(void) {
    //  1624
    //  1625     next char %while pres char=bchar

  L_01D4:;
    if (PRESCHAR != BCHAR) goto L_01D5;
    NEXTCHAR();
    goto L_01D4;
  L_01D5:;

  //  1626     %false %unless pres char=','

    if (PRESCHAR == 44) goto L_01D6;
    return 0 /*FALSE*/;
  L_01D6:;

  //  1627     next char %until pres char#bchar

  L_01D7:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_01D8;
    goto L_01D7;
  L_01D8:;

  //  1628     %true

    return 1 /*TRUE*/;

    //  1629  %end

  } /* end of MOREITEMS */

  //  1630  !-----------------------------------------------------------------------
  //  1631  %predicate get option(%integer %name opt)

  int GETOPTION(int *OPT) {
    //  1632     %string(11) option

    _imp_string11 OPTION;

    //  1633
    //  1634     %if 'A'<=pres char<='Z' %start

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (65 > (tmp = PRESCHAR)) goto L_01D9;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp > 90) goto L_01D9;
    }

    //  1635        option = to string(pres char)


    /* clang-format off */
_imp_strncpy(/*?*/&OPTION, ({__typeof__(_imp_string1) tmp;/*B*/ tmp = _imp_TOSTRING(PRESCHAR); (void *)&tmp;}), /*max:*/11);

    /* clang-format on */

    //  1636        %cycle

  L_01DA:;

  //  1637           next char

    NEXTCHAR();

    //  1638           %exit %unless 'A'<=pres char<='Z' %or '0'<=pres char<='9'

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (65 > (tmp = PRESCHAR)) goto L_01DB;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 90) goto L_01DC;
    }
  L_01DB:;
    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (48 > (tmp = PRESCHAR)) goto L_01DD;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 57) goto L_01DC;
    }
  L_01DD:;
    goto L_01DE;
  L_01DC:;

  //  1639           option <- option.to string(pres char)


    /* clang-format off */
_imp_strncpy(/*?*/&OPTION, ({__typeof__(_imp_string255) tmp; /*C*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&OPTION, ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_TOSTRING(PRESCHAR); (void *)&tmp;})); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/11);

    /* clang-format on */
    /* truncated copy of no more than 11 chars */
    /* clang-format off */
if (*_imp_LENGTH((_imp_string *)/*?*/&OPTION) > 11) *_imp_LENGTH((_imp_string *)/*?*/&OPTION) = 11;

      /* clang-format on */

      //  1640        %repeat

    goto L_01DA;
  L_01DE:;

  //  1641        %for opt = 1, 1, no options %cycle

    // %for *OPT = 1, 1, 51 %cycle
    {
      *OPT = 0;
    L_01DF:
      if (*OPT == 51) goto L_01E0;
      *OPT += 1;

      //  1642           %true %if option text(opt)=option


      /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&OPTIONTEXT[*OPT - 1], (_imp_string *)/*?*/&OPTION) != 0) goto L_01E2;

      /* clang-format on */
      return 1 /*TRUE*/;
    L_01E2:;

    //  1643        %repeat

      goto L_01DF;
    }

  L_01E0:;

  //  1644        opt = -1

    *OPT = -1;

    //  1645        %true

    return 1 /*TRUE*/;

    //  1646     %else

  L_01D9:;

  //  1647        opt = 0

    *OPT = 0;

    //  1648        %false %unless pres char=','

    if (PRESCHAR == 44) goto L_01E3;
    return 0 /*FALSE*/;
  L_01E3:;

  //  1649        next char

    NEXTCHAR();

    //  1650        %true

    return 1 /*TRUE*/;

    //  1651     %finish
    //  1652  %end

  } /* end of GETOPTION */

  //  1653  !-----------------------------------------------------------------------
  //  1654  %integerfn get name(%integername nid)

  int GETNAME(int *NID) {
    //  1655     %string(6) n

    _imp_string6 N;

    //  1656     %integer h,l

    int H;
    int L;

    //  1657
    //  1658     nid = 0 %and %result = 1 %unless 'A'<=pres char<='Z'

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (65 > (tmp = PRESCHAR)) goto L_0194;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 90) goto L_01E4;
    }
  L_0194:;
    *NID = 0;
    return 1;
  L_01E4:;

  //  1659     h=pres char-'0'

    H = PRESCHAR - 48;

    //  1660     n=tostring(pres char)


    /* clang-format off */
_imp_strncpy(/*?*/&N, ({__typeof__(_imp_string1) tmp;/*B*/ tmp = _imp_TOSTRING(PRESCHAR); (void *)&tmp;}), /*max:*/6);

    /* clang-format on */

    //  1661     l = 1

    L = 1;

    //  1662     %cycle

  L_01E5:;

  //  1663        next char

    NEXTCHAR();

    //  1664        %exit %unless 'A'<=pres char<='Z' %or '0'<=pres char<='9'

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (65 > (tmp = PRESCHAR)) goto L_01E1;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 90) goto L_01E6;
    }
  L_01E1:;
    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (48 > (tmp = PRESCHAR)) goto L_01E7;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 57) goto L_01E6;
    }
  L_01E7:;
    goto L_01E8;
  L_01E6:;

  //  1665        l = l+1

    L = L + 1;

    //  1666        h=h<<4+pres char-'0' %and n=n.tostring(pres char) %unless l>6

    if (L > 6) goto L_01E9;
    H = (H << 4) + PRESCHAR - 48;

    /* clang-format off */
_imp_strncpy(/*?*/&N, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&N, ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_TOSTRING(PRESCHAR); (void *)&tmp;})); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/6);

  /* clang-format on */
  L_01E9:;

  //  1667     %repeat

    goto L_01E5;
  L_01E8:;

  //  1668     h=h&32767

    H = H & 32767;

    //  1669     h=h-h//nhash*nhash

    H = H - ((long)H / (long)67) * 67;

    //  1670     l=hnlink(h)

    L = HNLINK[H];

    //  1671     %while l#0 %cycle

  L_01EA:;
    if (L == 0) goto L_01EB;

      //  1672        %if name(l)=n %start


    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&NAME[L - 1], (_imp_string *)/*?*/&N) != 0) goto L_01EC;

      /* clang-format on */

      //  1673           nid = l

    *NID = L;

    //  1674           %if pass=4 %and xxentries<=xentries %and %c

    if (PASS != 4) goto L_01ED;
    if (XXENTRIES > 4096) goto L_01ED;
    if (LOOKAHEAD != 0) goto L_01ED;

      //  1675+                look ahead=0 %start
      //  1676              xxentries = xxentries+1

    XXENTRIES = XXENTRIES + 1;

    //  1677              %if xxentries>xentries %start

    if (XXENTRIES <= 4096) goto L_01EE;

      //  1678                 fault("Too many references")

    FAULT(_imp_str_literal_size(63, "Too many references"));

    //  1679              %else

    goto L_01EF;
  L_01EE:;

  //  1680                 xlink(xxentries) = xhead(l)

    XLINK[XXENTRIES - 1] = XHEAD[L - 1];

    //  1681                 xentry(xxentries) = ln

    XENTRY[XXENTRIES - 1] = LN;

    //  1682                 xhead(l) = xxentries

    XHEAD[L - 1] = XXENTRIES;

    //  1683              %finish

  L_01EF:;

  //  1684           %finish

  L_01ED:;

  //  1685           %result = 0

    return 0;

    //  1686        %finish

  L_01EC:;

  //  1687        l=nlink(l)

    L = NLINK[L - 1];

    //  1688     %repeat

    goto L_01EA;
  L_01EB:;

  //  1689     fault("Too many names") %and %stop %if nnames=names

    if (NNAMES != 1023) goto L_01F0;
    FAULT(_imp_str_literal_size(63, "Too many names"));
    _imp_stop(0);
  L_01F0:;

  //  1690     nnames = nnames+1

    NNAMES = NNAMES + 1;

    //  1691     name(nnames) = n


    /* clang-format off */
_imp_strncpy(/*?*/&NAME[NNAMES - 1], ({__typeof__(_imp_string6) tmp;/*B*/ tmp = N; (void *)&tmp;}), /*max:*/6);

    /* clang-format on */

    //  1692     nlink(nnames) = hnlink(h)

    NLINK[NNAMES - 1] = HNLINK[H];

    //  1693     %if n="A" %or n="B" %or n="CC" %or n="DP" %or n="X" %or %c


    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&N, (_imp_string *)/*?*/_imp_str_literal_ptr("A")) == 0) goto L_01F1;

    /* clang-format on */

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&N, (_imp_string *)/*?*/_imp_str_literal_ptr("B")) == 0) goto L_01F1;

    /* clang-format on */

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&N, (_imp_string *)/*?*/_imp_str_literal_ptr("CC")) == 0) goto L_01F1;

    /* clang-format on */

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&N, (_imp_string *)/*?*/_imp_str_literal_ptr("DP")) == 0) goto L_01F1;

    /* clang-format on */

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&N, (_imp_string *)/*?*/_imp_str_literal_ptr("X")) == 0) goto L_01F1;

    /* clang-format on */

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&N, (_imp_string *)/*?*/_imp_str_literal_ptr("Y")) == 0) goto L_01F1;

    /* clang-format on */

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&N, (_imp_string *)/*?*/_imp_str_literal_ptr("U")) == 0) goto L_01F1;

    /* clang-format on */

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&N, (_imp_string *)/*?*/_imp_str_literal_ptr("S")) == 0) goto L_01F1;

    /* clang-format on */

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&N, (_imp_string *)/*?*/_imp_str_literal_ptr("PC")) == 0) goto L_01F1;

    /* clang-format on */

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&N, (_imp_string *)/*?*/_imp_str_literal_ptr("PCR")) != 0) goto L_01F2;

  /* clang-format on */
  L_01F1:;

  //  1694+          n="Y" %or n="U" %or n="S" %or n="PC" %or n="PCR" %start
  //  1695        nass(nnames) = 2

    NASS[NNAMES - 1] = 2;

    //  1696     %else

    goto L_01F3;
  L_01F2:;

  //  1697        nass(nnames) = 0

    NASS[NNAMES - 1] = 0;

    //  1698     %finish

  L_01F3:;

  //  1699     nval(nnames) = 0

    NVAL[NNAMES - 1] = 0;

    //  1700     %if pass=4 %and xxentries<=xentries %start

    if (PASS != 4) goto L_01F4;
    if (XXENTRIES > 4096) goto L_01F4;

      //  1701        xxentries = xxentries+1

    XXENTRIES = XXENTRIES + 1;

    //  1702        %if xxentries>xentries %start

    if (XXENTRIES <= 4096) goto L_01F5;

      //  1703           fault("Too many references")

    FAULT(_imp_str_literal_size(63, "Too many references"));

    //  1704        %else

    goto L_01F6;
  L_01F5:;

  //  1705           xlink(xxentries) = 0

    XLINK[XXENTRIES - 1] = 0;

    //  1706           xentry(xxentries) = ln

    XENTRY[XXENTRIES - 1] = LN;

    //  1707           xhead(nnames) = xxentries

    XHEAD[NNAMES - 1] = XXENTRIES;

    //  1708        %finish

  L_01F6:;

  //  1709     %else

    goto L_01F7;
  L_01F4:;

  //  1710        xhead(nnames) = 0

    XHEAD[NNAMES - 1] = 0;

    //  1711     %finish

  L_01F7:;

  //  1712     hnlink(h) = nnames

    HNLINK[H] = NNAMES;

    //  1713     nid = nnames

    *NID = NNAMES;

    //  1714     %result=0

    return 0;

    //  1715  %end

  } /* end of GETNAME */

  //  1716  !-----------------------------------------------------------------------
  //  1717  %predicate get instr(%integername iid)

  int GETINSTR(int *IID) {
    //  1718     %string(5) i

    _imp_string5 I;

    //  1719     %integer h,l

    int H;
    int L;

    //  1720
    //  1721     iid=0

    *IID = 0;

    //  1722     %false %unless 'A'<=pres char<='Z'

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (65 > (tmp = PRESCHAR)) goto L_01F8;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 90) goto L_01F9;
    }
  L_01F8:;
    return 0 /*FALSE*/;
  L_01F9:;

  //  1723     h=pres char-'0'

    H = PRESCHAR - 48;

    //  1724     i=tostring(pres char)


    /* clang-format off */
_imp_strncpy(/*?*/&I, ({__typeof__(_imp_string1) tmp;/*B*/ tmp = _imp_TOSTRING(PRESCHAR); (void *)&tmp;}), /*max:*/5);

    /* clang-format on */

    //  1725     %for l = 2, 1, 5 %cycle

    // %for L = 2, 1, 5 %cycle
    {
      L = 1;
    L_01FA:
      if (L == 5) goto L_01FB;
      L += 1;

      //  1726        next char

      NEXTCHAR();

      //  1727        -> goti %unless 'A'<=pres char<='Z' %or '0'<=pres char<='9'

      {
        // Double-sided test on PRESCHAR (Part I)
        int tmp;
        if (65 > (tmp = PRESCHAR)) goto L_01FD;
        // Double-sided test on PRESCHAR (Part II)
        if (tmp <= 90) goto L_01FE;
      }
    L_01FD:;
      {
        // Double-sided test on PRESCHAR (Part I)
        int tmp;
        if (48 > (tmp = PRESCHAR)) goto L_01FF;
        // Double-sided test on PRESCHAR (Part II)
        if (tmp <= 57) goto L_01FE;
      }
    L_01FF:;
      goto U_1006;
    L_01FE:;

    //  1728        h=h<<4+pres char-'0'

      H = (H << 4) + PRESCHAR - 48;

      //  1729        i=i.tostring(pres char)


      /* clang-format off */
_imp_strncpy(/*?*/&I, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&I, ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_TOSTRING(PRESCHAR); (void *)&tmp;})); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/5);

      /* clang-format on */

      //  1730     %repeat

      goto L_01FA;
    }

  L_01FB:;

  //  1731     next char

    NEXTCHAR();

    //  1732     %false %if 'A'<=pres char<='Z'

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (65 > (tmp = PRESCHAR)) goto L_0200;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp > 90) goto L_0200;
    }
    return 0 /*FALSE*/;
  L_0200:;

  //  1733  goti: h=h&32767

  U_1006:;
    H = H & 32767;

    //  1734     h=h-h//ihash*ihash

    H = H - ((long)H / (long)59) * 59;

    //  1735     l=hilink(h)

    L = HILINK[H];

    //  1736     %while l#0 %cycle

  L_0201:;
    if (L == 0) goto L_0202;

      //  1737        iid=l %and %true %if instr(l)=i


    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&INSTR[L - 1], (_imp_string *)/*?*/&I) != 0) goto L_0203;

    /* clang-format on */
    *IID = L;
    return 1 /*TRUE*/;
  L_0203:;

  //  1738        l=ilink(l)

    L = ILINK[L - 1];

    //  1739     %repeat

    goto L_0201;
  L_0202:;

  //  1740     %false

    return 0 /*FALSE*/;

    //  1741  %end

  } /* end of GETINSTR */

  //  1742  !-----------------------------------------------------------------------
  //  1743  %routine evaluate(%integer %name a, %integer b, %byte %integer op)

  void EVALUATE(int *A, int B, unsigned char OP) {
    //  1744
    //  1745     %if op='+' %start

    if (OP != 43) goto L_0204;

      //  1746        a = a+b

    *A = *A + B;

    //  1747     %finish %else %if op='-' %start

    goto L_0205;
  L_0204:;
    if (OP != 45) goto L_0206;

      //  1748        a = a-b

    *A = *A - B;

    //  1749     %finish %else %if op='*' %start

    goto L_0205;
  L_0206:;
    if (OP != 42) goto L_0207;

      //  1750        a = a*b

    *A = *A * B;

    //  1751     %finish %else %if op='/' %start

    goto L_0205;
  L_0207:;
    if (OP != 47) goto L_0208;

      //  1752        a = a//b

    *A = ((long)*A / (long)B);

    //  1753     %finish %else %if op='|' %start

    goto L_0205;
  L_0208:;
    if (OP != 124) goto L_0209;

      //  1754        a = a-a//b*b

    *A = *A - ((long)*A / (long)B) * B;

    //  1755     %finish %else %if op='!' %start

    goto L_0205;
  L_0209:;
    if (OP != 33) goto L_020A;

      //  1756        a = a!b

    *A = *A | B;

    //  1757     %finish %else %if op='&' %start

    goto L_0205;
  L_020A:;
    if (OP != 38) goto L_020B;

      //  1758        a = a&b

    *A = *A & B;

    //  1759     %finish %else %if op='\' %start

    goto L_0205;
  L_020B:;
    if (OP != 92) goto L_020C;

      //  1760        a = a!!b

    *A = *A ^ B;

    //  1761     %finish %else %if op='<' %start

    goto L_0205;
  L_020C:;
    if (OP != 60) goto L_020D;

      //  1762        a = a<<b

    *A = *A << B;

    //  1763     %finish %else %if op='>' %start

    goto L_0205;
  L_020D:;
    if (OP != 62) goto L_020E;

      //  1764        a = a>>b

    *A = (unsigned int)*A >> B;

    //  1765     %finish

  L_020E:;
  L_0205:;

  //  1766  %end

    return;
  } /* end of EVALUATE */

  //  1767  !-----------------------------------------------------------------------
  //  1768  %integer %function get term(%integer %name opd)

  int GETTERM(int *OPD) {
    //  1769     %integer i

    int I;

    //  1770
    //  1771     %while pres char='+' %cycle

  L_020F:;
    if (PRESCHAR != 43) goto L_0210;

      //  1772        next char %until pres char#bchar

  L_0211:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_0212;
    goto L_0211;
  L_0212:;

  //  1773     %repeat

    goto L_020F;
  L_0210:;

  //  1774     %if pres char='-' %start

    if (PRESCHAR != 45) goto L_0213;

      //  1775        next char %until pres char#bchar

  L_0214:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_0215;
    goto L_0214;
  L_0215:;

  //  1776        i = get term(opd)

    I = GETTERM(OPD);

    //  1777        opd = -opd

    *OPD = -*OPD;

    //  1778     %finish %else %if pres char='\' %start

    goto L_0216;
  L_0213:;
    if (PRESCHAR != 92) goto L_0217;

      //  1779        next char %until pres char#bchar

  L_0218:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_0219;
    goto L_0218;
  L_0219:;

  //  1780        i = get term(opd)

    I = GETTERM(OPD);

    //  1781        opd = \opd

    *OPD = (~*OPD);

    //  1782     %finish %else %if pres char='(' %start

    goto L_0216;
  L_0217:;
    if (PRESCHAR != 40) goto L_021A;

      //  1783        next char %until pres char#bchar

  L_021B:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_021C;
    goto L_021B;
  L_021C:;

  //  1784        i = get expression(opd)

    I = GETEXPRESSION(OPD);

    //  1785        %if i=0 %start

    if (I != 0) goto L_021D;

      //  1786           next char %while pres char=bchar

  L_021E:;
    if (PRESCHAR != BCHAR) goto L_021F;
    NEXTCHAR();
    goto L_021E;
  L_021F:;

  //  1787           %if pres char=')' %start

    if (PRESCHAR != 41) goto L_0220;

      //  1788              next char

    NEXTCHAR();

    //  1789           %else

    goto L_0221;
  L_0220:;

  //  1790              i = 1

    I = 1;

    //  1791           %finish

  L_0221:;

  //  1792        %finish

  L_021D:;

  //  1793     %finish %else %if get name(i)=0 %start

    goto L_0216;
  L_021A:;
    if (GETNAME(/*?*/ &I) != 0) goto L_0222;

      //  1794        %if pass=1 %or nass(i)=1 %or nass(i)=3 %start

    if (PASS == 1) goto L_0223;
    if (NASS[I - 1] == 1) goto L_0223;
    if (NASS[I - 1] != 3) goto L_0224;
  L_0223:;

  //  1795           opd = nval(i)

    *OPD = NVAL[I - 1];

    //  1796           i = 0

    I = 0;

    //  1797        %else

    goto L_0225;
  L_0224:;

  //  1798           i = 1

    I = 1;

    //  1799        %finish

  L_0225:;

  //  1800     %else

    goto L_0216;
  L_0222:;

  //  1801        i = get const(opd)

    I = GETCONST(OPD);

    //  1802     %finish

  L_0216:;

  //  1803     %result = i

    return I;

    //  1804  %end

  } /* end of GETTERM */

  //  1805  !-----------------------------------------------------------------------
  //  1806  %integer %function get expression(%integer %name opd)

  int GETEXPRESSION(int *OPD) {
    //  1807     %integer sp, prio, i

    int SP;
    int PRIO;
    int I;

    //  1808     %byte %integer %array op stk, prio stk(1:5)

    unsigned char OPSTK[5];
    struct _imp_dv OPSTK_dv = {OPSTK, sizeof(unsigned char) /*, dims, <bounds> */};

    unsigned char PRIOSTK[5];
    struct _imp_dv PRIOSTK_dv = {PRIOSTK, sizeof(unsigned char) /*, dims, <bounds> */};

    //  1809     %integer %array opd stk(0:5)

    int OPDSTK[6];
    struct _imp_dv OPDSTK_dv = {OPDSTK, sizeof(int) /*, dims, <bounds> */};

    //  1810
    //  1811     %result = 1 %unless get term(opd stk(0))=0

    if (GETTERM(/*?*/ &OPDSTK[0]) == 0) goto L_0226;
    return 1;
  L_0226:;

  //  1812     sp = 0

    SP = 0;

    //  1813     i = 0

    I = 0;

    //  1814     %cycle

  L_0227:;

  //  1815        next char %while pres char=bchar

  L_0228:;
    if (PRESCHAR != BCHAR) goto L_0229;
    NEXTCHAR();
    goto L_0228;
  L_0229:;

  //  1816        %if pres char='!' %or pres char='\' %start

    if (PRESCHAR == 33) goto L_022A;
    if (PRESCHAR != 92) goto L_022B;
  L_022A:;

  //  1817           prio = 0

    PRIO = 0;

    //  1818        %finish %else %if pres char='&' %start

    goto L_022C;
  L_022B:;
    if (PRESCHAR != 38) goto L_022D;

      //  1819           prio = 1

    PRIO = 1;

    //  1820        %finish %else %if pres char='+' %or pres char='-' %start

    goto L_022C;
  L_022D:;
    if (PRESCHAR == 43) goto L_022E;
    if (PRESCHAR != 45) goto L_022F;
  L_022E:;

  //  1821           prio = 2

    PRIO = 2;

    //  1822        %finish %else %if pres char='*' %or pres char='/' %or %c

    goto L_022C;
  L_022F:;
    if (PRESCHAR == 42) goto L_0230;
    if (PRESCHAR == 47) goto L_0230;
    if (PRESCHAR != 124) goto L_0231;
  L_0230:;

  //  1823+             pres char='|' %start
  //  1824           prio = 3

    PRIO = 3;

    //  1825        %finish %else %if pres char='<' %or pres char='>' %start

    goto L_022C;
  L_0231:;
    if (PRESCHAR == 60) goto L_0232;
    if (PRESCHAR != 62) goto L_0233;
  L_0232:;

  //  1826           prio = 4

    PRIO = 4;

    //  1827        %else

    goto L_022C;
  L_0233:;

  //  1828           %exit

    goto L_0234;

    //  1829        %finish

  L_022C:;

  //  1830        %while sp>0 %and prio stk(sp)>=prio %cycle

  L_0235:;
    if (SP <= 0) goto L_0236;
    if (PRIOSTK[SP - 1] < PRIO) goto L_0236;

      //  1831           evaluate(opd stk(sp-1), opd stk(sp), op stk(sp))

    EVALUATE(/*?*/ &OPDSTK[SP - 1], OPDSTK[SP], OPSTK[SP - 1]);

    //  1832           sp = sp-1

    SP = SP - 1;

    //  1833        %repeat

    goto L_0235;
  L_0236:;

  //  1834        sp = sp+1

    SP = SP + 1;

    //  1835        op stk(sp) = pres char

    OPSTK[SP - 1] = PRESCHAR;

    //  1836        prio stk(sp) = prio

    PRIOSTK[SP - 1] = PRIO;

    //  1837        next char %until pres char#bchar

  L_0237:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_0238;
    goto L_0237;
  L_0238:;

  //  1838        %unless get term(opd stk(sp))=0 %start

    if (GETTERM(/*?*/ &OPDSTK[SP]) == 0) goto L_0239;

      //  1839           sp = sp-1

    SP = SP - 1;

    //  1840           i = 1

    I = 1;

    //  1841           %exit

    goto L_0234;

    //  1842        %finish

  L_0239:;

  //  1843     %repeat

    goto L_0227;
  L_0234:;

  //  1844     evaluate(opd stk(sp-1), opd stk(sp), op stk(sp)) %for sp = sp, -1, 1

    // %for SP = SP,  -1, 1 %cycle
    {
      int _initial = SP;
      if (invalid_for_loop(_initial, -1, 1)) _imp_signal(5, 1, 0, "Illegal cycle SP = SP,  -1, 1");
      SP = _initial - (-1);
    L_023A:
      if (SP == 1) goto L_023B;
      SP -= 1;
      EVALUATE(/*?*/ &OPDSTK[SP - 1], OPDSTK[SP], OPSTK[SP - 1]);
      goto L_023A;
    }

  L_023B:;

  //  1845     opd = opd stk(0) %if i=0

    if (I != 0) goto L_023C;
    *OPD = OPDSTK[0];
  L_023C:;

  //  1846     %result = i

    return I;

    //  1847  %end

  } /* end of GETEXPRESSION */

  //  1848  !-----------------------------------------------------------------------
  //  1849  %integer %function get opd(%integername opd)

  int GETOPD(int *OPD) {
    //  1850     %integer nid,op,cval

    int NID;
    int OP;
    int CVAL;

    //  1851
    //  1852     %result = get expression(opd) %unless fflag=0

    if (FFLAG == 0) goto L_023D;
    return GETEXPRESSION(OPD);
  L_023D:;

  //  1853     opd=0

    *OPD = 0;

    //  1854     %if pres char='+' %or pres char='-' %start

    if (PRESCHAR == 43) goto L_01FC;
    if (PRESCHAR != 45) goto L_023E;
  L_01FC:;

  //  1855        op =pres char

    OP = PRESCHAR;

    //  1856        next char %until pres char#bchar

  L_023F:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_0240;
    goto L_023F;
  L_0240:;

  //  1857     %else

    goto L_0241;
  L_023E:;

  //  1858        op = '+'

    OP = 43;

    //  1859     %finish

  L_0241:;

  //  1860     %cycle

  L_0242:;

  //  1861        %if get name(nid)=0 %start

    if (GETNAME(/*?*/ &NID) != 0) goto L_0243;

      //  1862           %result=1 %unless pass=1 %or nass(nid)=1 %or nass(nid)=3

    if (PASS == 1) goto L_0244;
    if (NASS[NID - 1] == 1) goto L_0244;
    if (NASS[NID - 1] == 3) goto L_0244;
    return 1;
  L_0244:;

  //  1863           cval=nval(nid)

    CVAL = NVAL[NID - 1];

    //  1864        %else

    goto L_0245;
  L_0243:;

  //  1865           %result=1 %if get const(cval)#0

    if (GETCONST(/*?*/ &CVAL) == 0) goto L_0246;
    return 1;
  L_0246:;

  //  1866        %finish

  L_0245:;

  //  1867        evaluate(opd, cval, op)

    EVALUATE(OPD, CVAL, OP);

    //  1868        next char %while pres char=bchar

  L_0247:;
    if (PRESCHAR != BCHAR) goto L_0248;
    NEXTCHAR();
    goto L_0247;
  L_0248:;

  //  1869        op = pres char

    OP = PRESCHAR;

    //  1870        %result=0 %unless op='+' %or op='-' %or op='*' %or op='/'

    if (OP == 43) goto L_0249;
    if (OP == 45) goto L_0249;
    if (OP == 42) goto L_0249;
    if (OP == 47) goto L_0249;
    return 0;
  L_0249:;

  //  1871        next char %until pres char#bchar

  L_024A:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_024B;
    goto L_024A;
  L_024B:;

  //  1872     %repeat

    goto L_0242;

    //  1873  %end

  } /* end of GETOPD */

  //  1874  !-----------------------------------------------------------------------
  //  1875  %integerfn get const(%integername cval)

  int GETCONST(int *CVAL) {
    //  1876     %integer started, dig val, bin val, oct val, hex val,

    int STARTED;
    int DIGVAL;
    int BINVAL;
    int OCTVAL;
    int HEXVAL;
    int BINPOS;
    int OCTPOS;
    int DECPOS;

    //  1877+       bin pos, oct pos, dec pos
    //  1878
    //  1879     started=1

    STARTED = 1;

    //  1880     %if pres char='*' %start

    if (PRESCHAR != 42) goto L_024C;

      //  1881        next char

    NEXTCHAR();

    //  1882        cval = ca

    *CVAL = CA;

    //  1883        %result = 0

    return 0;

    //  1884     %finish

  L_024C:;

  //  1885     cval=0

    *CVAL = 0;

    //  1886     %if '0'<=pres char<='9' %start    ;! decimal

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (48 > (tmp = PRESCHAR)) goto L_024D;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp > 57) goto L_024D;
    }

    //  1887        bin pos = 0

    BINPOS = 0;

    //  1888        oct pos = 0

    OCTPOS = 0;

    //  1889        dec pos = 0

    DECPOS = 0;

    //  1890        bin val = 0

    BINVAL = 0;

    //  1891        oct val = 0

    OCTVAL = 0;

    //  1892        hex val = 0

    HEXVAL = 0;

    //  1893        %cycle

  L_024E:;

  //  1894           %if bin pos=0 %and pres char='B' %start

    if (BINPOS != 0) goto L_024F;
    if (PRESCHAR != 66) goto L_024F;

      //  1895              next char

    NEXTCHAR();

    //  1896              %if '0'<=pres char<='9' %or 'A'<=pres char<='F' %or %c

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (48 > (tmp = PRESCHAR)) goto L_0250;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 57) goto L_019E;
    }
  L_0250:;
    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (65 > (tmp = PRESCHAR)) goto L_0251;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 70) goto L_019E;
    }
  L_0251:;
    if (PRESCHAR != 72) goto L_0252;
  L_019E:;

  //  1897+                   pres char='H' %start
  //  1898                 bin pos = 1

    BINPOS = 1;

    //  1899                 oct pos = 1

    OCTPOS = 1;

    //  1900                 dec pos = 1

    DECPOS = 1;

    //  1901                 hex val = (hex val<<4)+11

    HEXVAL = (HEXVAL << 4) + 11;

    //  1902              %else

    goto L_0253;
  L_0252:;

  //  1903                 cval = bin val

    *CVAL = BINVAL;

    //  1904                 %result = 0

    return 0;

    //  1905              %finish

  L_0253:;

  //  1906           %finish

  L_024F:;

  //  1907           %if oct pos=0 %and (pres char='O' %or pres char='Q') %start

    if (OCTPOS != 0) goto L_0254;
    if (PRESCHAR == 79) goto L_0255;
    if (PRESCHAR != 81) goto L_0254;
  L_0255:;

  //  1908              cval = oct val

    *CVAL = OCTVAL;

    //  1909              next char

    NEXTCHAR();

    //  1910              %result = 0

    return 0;

    //  1911           %finish %else %if pres char='H' %start

  L_0254:;
    if (PRESCHAR != 72) goto L_0256;

      //  1912              cval = hex val

    *CVAL = HEXVAL;

    //  1913              next char

    NEXTCHAR();

    //  1914              %result = 0

    return 0;

    //  1915           %finish %else %if 'A'<=pres char<='F' %start

  L_0256:;
    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (65 > (tmp = PRESCHAR)) goto L_0257;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp > 70) goto L_0257;
    }

    //  1916              dig val = pres char-'A'+10

    DIGVAL = PRESCHAR - 65 + 10;

    //  1917           %finish %else %if '0'<=pres char<='9' %start

    goto L_0258;
  L_0257:;
    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (48 > (tmp = PRESCHAR)) goto L_0259;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp > 57) goto L_0259;
    }

    //  1918              dig val = pres char-'0'

    DIGVAL = PRESCHAR - 48;

    //  1919           %else

    goto L_0258;
  L_0259:;

  //  1920              %result = dec pos

    return DECPOS;

    //  1921           %finish

  L_0258:;

  //  1922           bin pos = 1 %if dig val>1

    if (DIGVAL <= 1) goto L_025A;
    BINPOS = 1;
  L_025A:;

  //  1923           oct pos = 1 %if dig val>7

    if (DIGVAL <= 7) goto L_025B;
    OCTPOS = 1;
  L_025B:;

  //  1924           dec pos = 1 %if dig val>9

    if (DIGVAL <= 9) goto L_025C;
    DECPOS = 1;
  L_025C:;

  //  1925           bin val = (bin val<<1)+dig val

    BINVAL = (BINVAL << 1) + DIGVAL;

    //  1926           oct val = (oct val<<3)+dig val

    OCTVAL = (OCTVAL << 3) + DIGVAL;

    //  1927           cval = cval*10+dig val

    *CVAL = *CVAL * 10 + DIGVAL;

    //  1928           hex val = (hex val<<4)+dig val

    HEXVAL = (HEXVAL << 4) + DIGVAL;

    //  1929           next char

    NEXTCHAR();

    //  1930        %repeat

    goto L_024E;

    //  1931     %finish

  L_024D:;

  //  1932     %if pres char='$' %start    ;! hex

    if (PRESCHAR != 36) goto L_025D;

      //  1933        %cycle

  L_025E:;

  //  1934           next char

    NEXTCHAR();

    //  1935           %if '0'<=pres char<='9' %start

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (48 > (tmp = PRESCHAR)) goto L_025F;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp > 57) goto L_025F;
    }

    //  1936              cval = cval<<4!(pres char-'0')

    *CVAL = *CVAL << 4 | PRESCHAR - 48;

    //  1937           %finish %else %if 'A'<=pres char<='F' %start

    goto L_0260;
  L_025F:;
    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (65 > (tmp = PRESCHAR)) goto L_0261;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp > 70) goto L_0261;
    }

    //  1938              cval = cval<<4!(pres char-'A'+10)

    *CVAL = *CVAL << 4 | PRESCHAR - 65 + 10;

    //  1939           %else

    goto L_0260;
  L_0261:;

  //  1940              %result = started

    return STARTED;

    //  1941           %finish

  L_0260:;

  //  1942           started = 0

    STARTED = 0;

    //  1943        %repeat

    goto L_025E;

    //  1944     %finish

  L_025D:;

  //  1945     %if pres char='@' %start    ;! octal

    if (PRESCHAR != 64) goto L_0262;

      //  1946        %cycle

  L_0263:;

  //  1947           next char

    NEXTCHAR();

    //  1948           %result = started %unless '0'<=pres char<='7'

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (48 > (tmp = PRESCHAR)) goto L_0264;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 55) goto L_0265;
    }
  L_0264:;
    return STARTED;
  L_0265:;

  //  1949           cval = (cval<<3)!(pres char-'0')

    *CVAL = *CVAL << 3 | PRESCHAR - 48;

    //  1950           started = 0

    STARTED = 0;

    //  1951        %repeat

    goto L_0263;

    //  1952     %finish

  L_0262:;

  //  1953     %if pres char='%' %start

    if (PRESCHAR != 37) goto L_0266;

      //  1954        %cycle

  L_0267:;

  //  1955           next char

    NEXTCHAR();

    //  1956           %result = started %unless '0'<=pres char<='1'

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (48 > (tmp = PRESCHAR)) goto L_0268;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 49) goto L_0269;
    }
  L_0268:;
    return STARTED;
  L_0269:;

  //  1957           cval = (cval<<1)!(pres char-'0')

    *CVAL = *CVAL << 1 | PRESCHAR - 48;

    //  1958           started = 0

    STARTED = 0;

    //  1959        %repeat

    goto L_0267;

    //  1960     %finish

  L_0266:;

  //  1961     %if pres char='''' %start

    if (PRESCHAR != 39) goto L_026A;

      //  1962        next char

    NEXTCHAR();

    //  1963        %result=1 %if lp=max line+1

    if (LP != 512 + 1) goto L_026B;
    return 1;
  L_026B:;

  //  1964        cval=line(lp)

    *CVAL = LINE[LP - 1];

    //  1965        next char

    NEXTCHAR();

    //  1966        %result=0

    return 0;

    //  1967     %finish

  L_026A:;

  //  1968     %result=1

    return 1;

    //  1969  %end

  } /* end of GETCONST */

  //  1970  !-----------------------------------------------------------------------
  //  1971  %routine analise operand(%integer eca,

  void ANALISEOPERAND(int ECA, int *POST, int *OPD, int *TYPE, int *CYCLES) {
    //  1972+                     %integer %name post, opd, type, cycles)
    //  1973     %integer indirect, i

    int INDIRECT;
    int I;

    //  1974
    //  1975     type = 5

    *TYPE = 5;

    //  1976     %if pres char='[' %start

    if (PRESCHAR != 91) goto L_026C;

      //  1977        next char %until pres char#bchar

  L_026D:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_026E;
    goto L_026D;
  L_026E:;

  //  1978        indirect = 1

    INDIRECT = 1;

    //  1979     %else

    goto L_026F;
  L_026C:;

  //  1980        indirect = 0

    INDIRECT = 0;

    //  1981     %finish

  L_026F:;

  //  1982     %if more items %start

    if (!(MOREITEMS())) goto L_0270;

      //  1983        %if pc %start

    if (!(PC())) goto L_0271;

      //  1984           opd = 0

    *OPD = 0;

    //  1985           post = 16_8C

    *POST = 140;

    //  1986           type = 6

    *TYPE = 6;

    //  1987           cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  1988        %finish %else %if pc relative %start

    goto L_0272;
  L_0271:;
    if (!(PCRELATIVE())) goto L_0273;

      //  1989           opd = -2-eca

    *OPD = (-2) - ECA;

    //  1990           %if pass<3 %or -128<=opd<=127 %start

    if (PASS < 3) goto L_0274;
    {
      // Double-sided test on OPD (Part I)
      int tmp;
      if (-128 > (tmp = *OPD)) goto L_0275;
      // Double-sided test on OPD (Part II)
      if (tmp > 127) goto L_0275;
    }
  L_0274:;

  //  1991              post = 16_8C

    *POST = 140;

    //  1992              type = 6

    *TYPE = 6;

    //  1993              cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  1994           %else

    goto L_0276;
  L_0275:;

  //  1995              opd = opd-1

    *OPD = *OPD - 1;

    //  1996              post = 16_8D

    *POST = 141;

    //  1997              type = 7

    *TYPE = 7;

    //  1998              cycles = cycles+7

    *CYCLES = *CYCLES + 7;

    //  1999           %finish

  L_0276:;

  //  2000        %finish %else %unless auto indexed(post, cycles) %start

    goto L_0272;
  L_0273:;
    if (AUTOINDEXED(POST, CYCLES)) goto L_0277;

      //  2001           type = 0

    *TYPE = 0;

    //  2002        %finish

  L_0277:;
  L_0272:;

  //  2003     %finish %else %if pc %start

    goto L_0278;
  L_0270:;
    if (!(PC())) goto L_0279;

      //  2004        opd = 0

    *OPD = 0;

    //  2005        post = 16_8C

    *POST = 140;

    //  2006        type = 6

    *TYPE = 6;

    //  2007        cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2008     %finish %else %if pc relative %start

    goto L_0278;
  L_0279:;
    if (!(PCRELATIVE())) goto L_027A;

      //  2009        opd = -2-eca

    *OPD = (-2) - ECA;

    //  2010        %if pass<3 %or -128<=opd<=127 %start

    if (PASS < 3) goto L_027B;
    {
      // Double-sided test on OPD (Part I)
      int tmp;
      if (-128 > (tmp = *OPD)) goto L_027C;
      // Double-sided test on OPD (Part II)
      if (tmp > 127) goto L_027C;
    }
  L_027B:;

  //  2011           post = 16_8C

    *POST = 140;

    //  2012           type = 6

    *TYPE = 6;

    //  2013           cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2014        %else

    goto L_027D;
  L_027C:;

  //  2015           opd = opd-1

    *OPD = *OPD - 1;

    //  2016           post = 16_8D

    *POST = 141;

    //  2017           type = 7

    *TYPE = 7;

    //  2018           cycles = cycles+7

    *CYCLES = *CYCLES + 7;

    //  2019        %finish

  L_027D:;

  //  2020     %finish %else %unless auto indexed(post, cycles) %start

    goto L_0278;
  L_027A:;
    if (AUTOINDEXED(POST, CYCLES)) goto L_027E;

      //  2021        %if acc('A') %start

    if (!(ACC(65))) goto L_027F;

      //  2022           type = 1 %and -> check indirect %unless more items

    if (MOREITEMS()) goto L_0280;
    *TYPE = 1;
    goto U_1007;
  L_0280:;

  //  2023           post = 16_86

    *POST = 134;

    //  2024           cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2025        %finish %else %if acc('B') %start

    goto L_0281;
  L_027F:;
    if (!(ACC(66))) goto L_0282;

      //  2026           type = 2 %and -> check indirect %unless more items

    if (MOREITEMS()) goto L_0283;
    *TYPE = 2;
    goto U_1007;
  L_0283:;

  //  2027           post = 16_85

    *POST = 133;

    //  2028           cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2029        %finish %else %if acc('D') %start

    goto L_0281;
  L_0282:;
    if (!(ACC(68))) goto L_0284;

      //  2030           type = 0 %and -> check indirect %unless more items

    if (MOREITEMS()) goto L_0285;
    *TYPE = 0;
    goto U_1007;
  L_0285:;

  //  2031           post = 16_8B

    *POST = 139;

    //  2032           cycles = cycles+6

    *CYCLES = *CYCLES + 6;

    //  2033        %finish %else %if pres char='<' %start

    goto L_0281;
  L_0284:;
    if (PRESCHAR != 60) goto L_0286;

      //  2034           next char %until pres char#b char

  L_0287:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_0288;
    goto L_0287;
  L_0288:;

  //  2035           %if get opd(opd)=0 %start

    if (GETOPD(OPD) != 0) goto L_0289;

      //  2036              type = 4

    *TYPE = 4;

    //  2037           %else

    goto L_028A;
  L_0289:;

  //  2038              type = 0

    *TYPE = 0;

    //  2039           %finish

  L_028A:;

  //  2040           cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2041           -> check indirect

    goto U_1007;

    //  2042        %finish %else %if pres char='>' %start

  L_0286:;
    if (PRESCHAR != 62) goto L_028B;

      //  2043           next char %until pres char#b char

  L_028C:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_028D;
    goto L_028C;
  L_028D:;

  //  2044           %if get opd(opd)=0 %start

    if (GETOPD(OPD) != 0) goto L_028E;

      //  2045             %if indirect=0 %start

    if (INDIRECT != 0) goto L_028F;

      //  2046                type = 3

    *TYPE = 3;

    //  2047             %else

    goto L_0290;
  L_028F:;

  //  2048                type = 4

    *TYPE = 4;

    //  2049                cycles = cycles+1

    *CYCLES = *CYCLES + 1;

    //  2050             %finish

  L_0290:;

  //  2051           %else

    goto L_0291;
  L_028E:;

  //  2052              type = 0

    *TYPE = 0;

    //  2053           %finish

  L_0291:;

  //  2054           cycles = cycles+2

    *CYCLES = *CYCLES + 2;

    //  2055           -> check indirect

    goto U_1007;

    //  2056        %else

  L_028B:;

  //  2057           %if get opd(opd)=0 %start

    if (GETOPD(OPD) != 0) goto L_0292;

      //  2058              %if more items %start

    if (!(MOREITEMS())) goto L_0293;

      //  2059                 %if pc %start

    if (!(PC())) goto L_0294;

      //  2060                    %if pass<3 %or -128<=opd<=127 %start

    if (PASS < 3) goto L_002D;
    {
      // Double-sided test on OPD (Part I)
      int tmp;
      if (-128 > (tmp = *OPD)) goto L_0295;
      // Double-sided test on OPD (Part II)
      if (tmp > 127) goto L_0295;
    }
  L_002D:;

  //  2061                       post = 16_8C

    *POST = 140;

    //  2062                       type = 6

    *TYPE = 6;

    //  2063                       cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2064                    %else

    goto L_0296;
  L_0295:;

  //  2065                       post = 16_8D

    *POST = 141;

    //  2066                       type = 7

    *TYPE = 7;

    //  2067                       cycles = cycles+7

    *CYCLES = *CYCLES + 7;

    //  2068                    %finish

  L_0296:;

  //  2069                    -> check indirect

    goto U_1007;

    //  2070                 %finish %else %if pc relative %start

  L_0294:;
    if (!(PCRELATIVE())) goto L_0297;

      //  2071                    opd = opd-eca-2

    *OPD = *OPD - ECA - 2;

    //  2072                    %if pass<3 %or -128<=opd<=127 %start

    if (PASS < 3) goto L_0298;
    {
      // Double-sided test on OPD (Part I)
      int tmp;
      if (-128 > (tmp = *OPD)) goto L_0299;
      // Double-sided test on OPD (Part II)
      if (tmp > 127) goto L_0299;
    }
  L_0298:;

  //  2073                       post = 16_8C

    *POST = 140;

    //  2074                       type = 6

    *TYPE = 6;

    //  2075                       cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2076                    %else

    goto L_029A;
  L_0299:;

  //  2077                       opd = opd-1

    *OPD = *OPD - 1;

    //  2078                       post = 16_8D

    *POST = 141;

    //  2079                       type = 7

    *TYPE = 7;

    //  2080                       cycles = cycles+7

    *CYCLES = *CYCLES + 7;

    //  2081                    %finish

  L_029A:;

  //  2082                    ->check indirect

    goto U_1007;

    //  2083                 %finish %else %if pass<3 %or opd=0 %start

  L_0297:;
    if (PASS < 3) goto L_029B;
    if (*OPD != 0) goto L_029C;
  L_029B:;

  //  2084                    type = 0 %unless auto indexed(post, cycles)

    if (AUTOINDEXED(POST, CYCLES)) goto L_029D;
    *TYPE = 0;
  L_029D:;

  //  2085                    -> check indirect

    goto U_1007;

    //  2086                 %finish %else %if indirect=0 %and -16<=opd<=15 %start

  L_029C:;
    if (INDIRECT != 0) goto L_029E;
    {
      // Double-sided test on OPD (Part I)
      int tmp;
      if (-16 > (tmp = *OPD)) goto L_029E;
      // Double-sided test on OPD (Part II)
      if (tmp > 15) goto L_029E;
    }

    //  2087                    post = opd&31

    *POST = *OPD & 31;

    //  2088                    cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2089                 %finish %else %if -128<=opd<=127 %start

    goto L_029F;
  L_029E:;
    {
      // Double-sided test on OPD (Part I)
      int tmp;
      if (-128 > (tmp = *OPD)) goto L_02A0;
      // Double-sided test on OPD (Part II)
      if (tmp > 127) goto L_02A0;
    }

    //  2090                    post = 16_88

    *POST = 136;

    //  2091                    type = 6

    *TYPE = 6;

    //  2092                    cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2093                 %else

    goto L_029F;
  L_02A0:;

  //  2094                    post = 16_89

    *POST = 137;

    //  2095                    type = 7

    *TYPE = 7;

    //  2096                    cycles = cycles+6

    *CYCLES = *CYCLES + 6;

    //  2097                 %finish

  L_029F:;

  //  2098              %else

    goto L_02A1;
  L_0293:;

  //  2099                 %if indirect=0 %and 0<=opd-dp contents<=255 %start

    if (INDIRECT != 0) goto L_02A2;
    {
      // Double-sided test on *OPD - DPCONTENTS (Part I)
      int tmp;
      if (0 > (tmp = *OPD - DPCONTENTS)) goto L_02A2;
      // Double-sided test on *OPD - DPCONTENTS (Part II)
      if (tmp > 255) goto L_02A2;
    }

    //  2100                    type = 3

    *TYPE = 3;

    //  2101                    cycles = cycles+2

    *CYCLES = *CYCLES + 2;

    //  2102                 %else

    goto L_02A3;
  L_02A2:;

  //  2103                    type = 4

    *TYPE = 4;

    //  2104                    cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2105                 %finish

  L_02A3:;

  //  2106                 -> check indirect

    goto U_1007;

    //  2107              %finish

  L_02A1:;

  //  2108           %else

    goto L_02A4;
  L_0292:;

  //  2109              type = 0

    *TYPE = 0;

    //  2110           %finish

  L_02A4:;

  //  2111        %finish

  L_0281:;

  //  2112        %if index reg(i) %start

    if (!(INDEXREG(/*?*/ &I))) goto L_02A5;

      //  2113           post = post!(i<<5)

    *POST = *POST | I << 5;

    //  2114        %else

    goto L_02A6;
  L_02A5:;

  //  2115           type = 0

    *TYPE = 0;

    //  2116        %finish

  L_02A6:;

  //  2117     %finish

  L_027E:;
  L_0278:;

  //  2118  check indirect:

  U_1007:;

  //  2119     %unless indirect=0 %start

    if (INDIRECT == 0) goto L_02A7;

      //  2120        type = 0 %if 1<=type<=2 %or %c

    {
      // Double-sided test on TYPE (Part I)
      int tmp;
      if (1 > (tmp = *TYPE)) goto L_02A8;
      // Double-sided test on TYPE (Part II)
      if (tmp <= 2) goto L_02A9;
    }
  L_02A8:;
    if (*TYPE != 5) goto L_02AA;
    if (*POST == 128) goto L_02A9;
    if (*POST != 130) goto L_02AA;
  L_02A9:;
    *TYPE = 0;
  L_02AA:;

  //  2121+                   (type=5 %and (post=16_80 %or post=16_82))
  //  2122        next char %while pres char=b char

  L_02AB:;
    if (PRESCHAR != BCHAR) goto L_02AC;
    NEXTCHAR();
    goto L_02AB;
  L_02AC:;

  //  2123        %if pres char=']' %start

    if (PRESCHAR != 93) goto L_02AD;

      //  2124           next char

    NEXTCHAR();

    //  2125           cycles = cycles+3

    *CYCLES = *CYCLES + 3;

    //  2126           %if 3<=type<=4 %start

    {
      // Double-sided test on TYPE (Part I)
      int tmp;
      if (3 > (tmp = *TYPE)) goto L_02AE;
      // Double-sided test on TYPE (Part II)
      if (tmp > 4) goto L_02AE;
    }

    //  2127              post = 16_9F

    *POST = 159;

    //  2128              cycles = cycles+4-type

    *CYCLES = *CYCLES + 4 - *TYPE;

    //  2129              type = 7

    *TYPE = 7;

    //  2130           %else

    goto L_02AF;
  L_02AE:;

  //  2131              post = post!16_10

    *POST = *POST | 16;

    //  2132           %finish

  L_02AF:;

  //  2133        %else

    goto L_02B0;
  L_02AD:;

  //  2134           type = 0

    *TYPE = 0;

    //  2135        %finish

  L_02B0:;

  //  2136     %finish

  L_02A7:;

  //  2137  %end

    return;
  } /* end of ANALISEOPERAND */

  //  2138  !-----------------------------------------------------------------------
  //  2139  %predicate auto indexed(%integer %name post, cycles)

  int AUTOINDEXED(int *POST, int *CYCLES) {
    //  2140     %integer old lp, reg

    int OLDLP;
    int REG;

    //  2141
    //  2142     old lp = lp

    OLDLP = LP;

    //  2143     %if pres char='-' %start

    if (PRESCHAR != 45) goto L_02B1;

      //  2144        next char %until pres char#b char

  L_02B2:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_02B3;
    goto L_02B2;
  L_02B3:;

  //  2145        %if pres char='-' %start

    if (PRESCHAR != 45) goto L_02B4;

      //  2146           next char %until pres char#bchar

  L_02B5:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_02B6;
    goto L_02B5;
  L_02B6:;

  //  2147           post = 16_83

    *POST = 131;

    //  2148        %else

    goto L_02B7;
  L_02B4:;

  //  2149           post = 16_82

    *POST = 130;

    //  2150        %finish

  L_02B7:;

  //  2151     %else

    goto L_02B8;
  L_02B1:;

  //  2152        post = 16_84

    *POST = 132;

    //  2153     %finish

  L_02B8:;

  //  2154     %if index reg(reg) %start

    if (!(INDEXREG(/*?*/ &REG))) goto L_02B9;

      //  2155        %if post = 16_84 %start

    if (*POST != 132) goto L_02BA;

      //  2156           next char %while pres char=b char

  L_02BB:;
    if (PRESCHAR != BCHAR) goto L_02BC;
    NEXTCHAR();
    goto L_02BB;
  L_02BC:;

  //  2157           %if pres char='+' %start

    if (PRESCHAR != 43) goto L_02BD;

      //  2158              next char %until pres char#b char

  L_02BE:;
    NEXTCHAR();
    if (PRESCHAR != BCHAR) goto L_02BF;
    goto L_02BE;
  L_02BF:;

  //  2159              %if pres char='+' %start

    if (PRESCHAR != 43) goto L_02C0;

      //  2160                 next char

    NEXTCHAR();

    //  2161                 post = 16_81

    *POST = 129;

    //  2162                 cycles = cycles+5

    *CYCLES = *CYCLES + 5;

    //  2163              %else

    goto L_02C1;
  L_02C0:;

  //  2164                 post = 16_80

    *POST = 128;

    //  2165                 cycles = cycles+4

    *CYCLES = *CYCLES + 4;

    //  2166              %finish

  L_02C1:;

  //  2167           %else

    goto L_02C2;
  L_02BD:;

  //  2168              cycles = cycles+2

    *CYCLES = *CYCLES + 2;

    //  2169           %finish

  L_02C2:;

  //  2170        %else

    goto L_02C3;
  L_02BA:;

  //  2171           cycles = cycles+4+(post&1)

    *CYCLES = *CYCLES + 4 + (*POST & 1);

    //  2172        %finish

  L_02C3:;

  //  2173        post = post!(reg<<5)

    *POST = *POST | REG << 5;

    //  2174        %true

    return 1 /*TRUE*/;

    //  2175     %finish

  L_02B9:;

  //  2176     lp = old lp-1

    LP = OLDLP - 1;

    //  2177     next char

    NEXTCHAR();

    //  2178     %false

    return 0 /*FALSE*/;

    //  2179  %end

  } /* end of AUTOINDEXED */

  //  2180  !-----------------------------------------------------------------------
  //  2181  %predicate accumulator

  int ACCUMULATOR(void) {
    //  2182
    //  2183     %true %if acc('A')

    if (!(ACC(65))) goto L_02C4;
    return 1 /*TRUE*/;
  L_02C4:;

  //  2184     %true %if acc('B')

    if (!(ACC(66))) goto L_02C5;
    return 1 /*TRUE*/;
  L_02C5:;

  //  2185     %false

    return 0 /*FALSE*/;

    //  2186  %end

  } /* end of ACCUMULATOR */

  //  2187  !-----------------------------------------------------------------------
  //  2188  %predicate acc(%byte %integer acc id)

  int ACC(unsigned char ACCID) {
    //  2189
    //  2190     %false %unless pres char=acc id

    if (PRESCHAR == ACCID) goto L_02C6;
    return 0 /*FALSE*/;
  L_02C6:;

  //  2191     next char

    NEXTCHAR();

    //  2192     %true %unless 'A'<=pres char<='Z' %or '0'<=pres char<='9'

    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (65 > (tmp = PRESCHAR)) goto L_02C7;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 90) goto L_02C8;
    }
  L_02C7:;
    {
      // Double-sided test on PRESCHAR (Part I)
      int tmp;
      if (48 > (tmp = PRESCHAR)) goto L_02C9;
      // Double-sided test on PRESCHAR (Part II)
      if (tmp <= 57) goto L_02C8;
    }
  L_02C9:;
    return 1 /*TRUE*/;
  L_02C8:;

  //  2193     lp = lp-2

    LP = LP - 2;

    //  2194     next char

    NEXTCHAR();

    //  2195     %false

    return 0 /*FALSE*/;

    //  2196  %end

  } /* end of ACC */

  //  2197  !-----------------------------------------------------------------------
  //  2198  %predicate index reg(%integer %name reg)

  int INDEXREG(int *REG) {
    //  2199
    //  2200     reg = 0 %and %true %if acc('X')

    if (!(ACC(88))) goto L_02CA;
    *REG = 0;
    return 1 /*TRUE*/;
  L_02CA:;

  //  2201     reg = 1 %and %true %if acc('Y')

    if (!(ACC(89))) goto L_02CB;
    *REG = 1;
    return 1 /*TRUE*/;
  L_02CB:;

  //  2202     reg = 2 %and %true %if acc('U')

    if (!(ACC(85))) goto L_02CC;
    *REG = 2;
    return 1 /*TRUE*/;
  L_02CC:;

  //  2203     reg = 3 %and %true %if acc('S')

    if (!(ACC(83))) goto L_02CD;
    *REG = 3;
    return 1 /*TRUE*/;
  L_02CD:;

  //  2204     %false

    return 0 /*FALSE*/;

    //  2205  %end

  } /* end of INDEXREG */

  //  2206  !-----------------------------------------------------------------------
  //  2207  %predicate transfer reg(%integer %name reg)

  int TRANSFERREG(int *REG) {
    //  2208
    //  2209     reg = 0 %and %true %if acc('D')

    if (!(ACC(68))) goto L_02CE;
    *REG = 0;
    return 1 /*TRUE*/;
  L_02CE:;

  //  2210     reg = 1 %and %true %if acc('X')

    if (!(ACC(88))) goto L_02CF;
    *REG = 1;
    return 1 /*TRUE*/;
  L_02CF:;

  //  2211     reg = 2 %and %true %if acc('Y')

    if (!(ACC(89))) goto L_02D0;
    *REG = 2;
    return 1 /*TRUE*/;
  L_02D0:;

  //  2212     reg = 3 %and %true %if acc('U')

    if (!(ACC(85))) goto L_02D1;
    *REG = 3;
    return 1 /*TRUE*/;
  L_02D1:;

  //  2213     reg = 4 %and %true %if acc('S')

    if (!(ACC(83))) goto L_02D2;
    *REG = 4;
    return 1 /*TRUE*/;
  L_02D2:;

  //  2214     reg = 5 %and %true %if pc

    if (!(PC())) goto L_02D3;
    *REG = 5;
    return 1 /*TRUE*/;
  L_02D3:;

  //  2215     reg = 8 %and %true %if acc('A')

    if (!(ACC(65))) goto L_02D4;
    *REG = 8;
    return 1 /*TRUE*/;
  L_02D4:;

  //  2216     reg = 9 %and %true %if acc('B')

    if (!(ACC(66))) goto L_02D5;
    *REG = 9;
    return 1 /*TRUE*/;
  L_02D5:;

  //  2217     reg = 10 %and %true %if cc

    if (!(CC())) goto L_02D6;
    *REG = 10;
    return 1 /*TRUE*/;
  L_02D6:;

  //  2218     reg = 11 %and %true %if dp

    if (!(DP())) goto L_02D7;
    *REG = 11;
    return 1 /*TRUE*/;
  L_02D7:;

  //  2219     %false

    return 0 /*FALSE*/;

    //  2220  %end

  } /* end of TRANSFERREG */

  //  2221  !-----------------------------------------------------------------------
  //  2222  %predicate cc

  int CC(void) {
    //  2223
    //  2224     %false %unless pres char='C'

    if (PRESCHAR == 67) goto L_02D8;
    return 0 /*FALSE*/;
  L_02D8:;

  //  2225     next char

    NEXTCHAR();

    //  2226     %true %if acc('C')

    if (!(ACC(67))) goto L_02D9;
    return 1 /*TRUE*/;
  L_02D9:;

  //  2227     lp = lp-2

    LP = LP - 2;

    //  2228     next char

    NEXTCHAR();

    //  2229     %false

    return 0 /*FALSE*/;

    //  2230  %end

  } /* end of CC */

  //  2231  !-----------------------------------------------------------------------
  //  2232  %predicate dp

  int DP(void) {
    //  2233
    //  2234     %false %unless pres char='D'

    if (PRESCHAR == 68) goto L_02DA;
    return 0 /*FALSE*/;
  L_02DA:;

  //  2235     next char

    NEXTCHAR();

    //  2236     %true %if acc('P')

    if (!(ACC(80))) goto L_02DB;
    return 1 /*TRUE*/;
  L_02DB:;

  //  2237     lp = lp-2

    LP = LP - 2;

    //  2238     next char

    NEXTCHAR();

    //  2239     %false

    return 0 /*FALSE*/;

    //  2240  %end

  } /* end of DP */

  //  2241  !-----------------------------------------------------------------------
  //  2242  %predicate pc

  int PC(void) {
    //  2243
    //  2244     %false %unless pres char='P'

    if (PRESCHAR == 80) goto L_02DC;
    return 0 /*FALSE*/;
  L_02DC:;

  //  2245     next char

    NEXTCHAR();

    //  2246     %true %if acc('C')

    if (!(ACC(67))) goto L_02DD;
    return 1 /*TRUE*/;
  L_02DD:;

  //  2247     lp = lp-2

    LP = LP - 2;

    //  2248     next char

    NEXTCHAR();

    //  2249     %false

    return 0 /*FALSE*/;

    //  2250  %end

  } /* end of PC */

  //  2251  !-----------------------------------------------------------------------
  //  2252  %predicate pc relative

  int PCRELATIVE(void) {
    //  2253
    //  2254     %false %unless pres char='P'

    if (PRESCHAR == 80) goto L_02DE;
    return 0 /*FALSE*/;
  L_02DE:;

  //  2255     next char

    NEXTCHAR();

    //  2256     %if pres char='C' %start

    if (PRESCHAR != 67) goto L_02DF;

      //  2257        next char

    NEXTCHAR();

    //  2258        %true %if acc('R')

    if (!(ACC(82))) goto L_02E0;
    return 1 /*TRUE*/;
  L_02E0:;

  //  2259        lp = lp-1

    LP = LP - 1;

    //  2260     %finish

  L_02DF:;

  //  2261     lp = lp-2

    LP = LP - 2;

    //  2262     next char

    NEXTCHAR();

    //  2263     %false

    return 0 /*FALSE*/;

    //  2264  %end

  } /* end of PCRELATIVE */

  //  2265  !-----------------------------------------------------------------------
  //  2266  %routine dump block

  void DUMPBLOCK(void) {
    //  2267     %integer checksum, old rad, i

    int CHECKSUM;
    int OLDRAD;
    int I;

    //  2268
    //  2269     select output(1)

    _imp_SELECTOUTPUT(1);

    //  2270     old rad = drad

    OLDRAD = DRAD;

    //  2271     drad = 8

    DRAD = 8;

    //  2272     print string("S1")

    _imp_PRINTSTRING(_imp_str_literal("S1"));

    //  2273     print number(bp+3, 1)

    PRINTNUMBER(BP + 3, 1);

    //  2274     print number(buffer ca, 2)

    PRINTNUMBER(BUFFERCA, 2);

    //  2275     checksum = ((buffer ca>>8)&255)+(buffer ca&255)+bp+3

    CHECKSUM = ((unsigned int)BUFFERCA >> 8 & 255) + (BUFFERCA & 255) + BP + 3;

    //  2276     %for i = 1, 1, bp %cycle

    // %for I = 1, 1, BP %cycle
    {
      int _final = BP;
      if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, BP");
      I = 0;
    L_02E1:
      if (I == _final) goto L_02E2;
      I += 1;

      //  2277        checksum = check sum+buffer(i)

      CHECKSUM = CHECKSUM + BUFFER[I - 1];

      //  2278        print number(buffer(i), 1)

      PRINTNUMBER(BUFFER[I - 1], 1);

      //  2279     %repeat

      goto L_02E1;
    }

  L_02E2:;

  //  2280     print number(\(checksum&255), 1)

    PRINTNUMBER(~(CHECKSUM & 255), 1);

    //  2281     print symbol(13)

    _imp_PRINTSYMBOL(13);

    //  2282     new line

    _imp_NEWLINE();

    //  2283     drad = old rad

    DRAD = OLDRAD;

    //  2284     select output(2)

    _imp_SELECTOUTPUT(2);

    //  2285     bp = 0

    BP = 0;

    //  2286  %end

    return;
  } /* end of DUMPBLOCK */

  //  2287  !--------------------------------------------------------------------------
  //  2288  %routine dump(%byte %integer byte)

  void DUMP(unsigned char BYTE) {
    //  2289     %if ostarted=0 %start

    if (OSTARTED != 0) goto L_02E4;

      //  2290        select output(1)

    _imp_SELECTOUTPUT(1);

    //  2291        print symbol(13)

    _imp_PRINTSYMBOL(13);

    //  2292        new line

    _imp_NEWLINE();

    //  2293        print string("S00600004844521B")

    _imp_PRINTSTRING(_imp_str_literal("S00600004844521B"));

    //  2294        print symbol(13)

    _imp_PRINTSYMBOL(13);

    //  2295        new line

    _imp_NEWLINE();

    //  2296        select output(2)

    _imp_SELECTOUTPUT(2);

    //  2297        ostarted = 1

    OSTARTED = 1;

    //  2298     %finish

  L_02E4:;

  //  2299     buffer ca = ca %if bp=0

    if (BP != 0) goto L_02E5;
    BUFFERCA = CA;
  L_02E5:;

  //  2300     dump block %and buffer ca = ca %unless buffer ca+bp=ca

    if (BUFFERCA + BP == CA) goto L_02E6;
    DUMPBLOCK();
    BUFFERCA = CA;
  L_02E6:;

  //  2301     bp = bp+1

    BP = BP + 1;

    //  2302     buffer(bp) = byte

    BUFFER[BP - 1] = BYTE;

    //  2303     ca = ca+1

    CA = CA + 1;

    //  2304     dump block %if bp=16

    if (BP != 16) goto L_02E7;
    DUMPBLOCK();
  L_02E7:;

  //  2305  %end

    return;
  } /* end of DUMP */

  //  2306  !---------------------------------------------------------------------------
  //  2307  %routine close

  void CLOSE(void) {
    //  2308     %unless ostarted=0 %start

    if (OSTARTED == 0) goto L_02E8;

      //  2309        dump block %unless bp=0

    if (BP == 0) goto L_02E9;
    DUMPBLOCK();
  L_02E9:;

  //  2310        select output(1)

    _imp_SELECTOUTPUT(1);

    //  2311        print string("S9030000FC")

    _imp_PRINTSTRING(_imp_str_literal("S9030000FC"));

    //  2312        print symbol(13)

    _imp_PRINTSYMBOL(13);

    //  2313        new line

    _imp_NEWLINE();

    //  2314        select output(2)

    _imp_SELECTOUTPUT(2);

    //  2315     %finish

  L_02E8:;

  //  2316  %end

    return;
  } /* end of CLOSE */

  //  2317  !-----------------------------------------------------------------------
  //  2318  %routine instr out(%integer op, post, opd, b, cyc)

  void INSTROUT(int OP, int POST, int OPD, int B, int CYC) {
    //  2319     %integer i, j, k, lit

    int I;
    int J;
    int K;
    int LIT;

    //  2320
    //  2321     i = 1

    I = 1;

    //  2322     %unless lflag=0 %or ((gflag=0 %or lflag=1) %and cont=1) %start

    if (LFLAG == 0) goto L_02EA;
    if (GFLAG == 0) goto L_02EB;
    if (LFLAG != 1) goto L_02E3;
  L_02EB:;
    if (CONT == 1) goto L_02EA;
  L_02E3:;

  //  2323        write(ln, 5)

    _imp_WRITE(LN, 5);

    //  2324        space %unless wflag=0

    if (WFLAG == 0) goto L_02EC;
    _imp_SPACE();
  L_02EC:;

  //  2325        %if lflag=2 %start

    if (LFLAG != 2) goto L_02ED;

      //  2326           space

    _imp_SPACE();

    //  2327           %if b<=-5 %start

    if (B > -5) goto L_02EE;

      //  2328              spaces(sp2)

    _imp_SPACES(SP2);

    //  2329           %else

    goto L_02EF;
  L_02EE:;

  //  2330              print number(ca, 2)

    PRINTNUMBER(CA, 2);

    //  2331           %finish

  L_02EF:;

  //  2332           space

    _imp_SPACE();

    //  2333           %if -6<=b<=-1 %start

    {
      // Double-sided test on B (Part I)
      int tmp;
      if (-6 > (tmp = B)) goto L_02F0;
      // Double-sided test on B (Part II)
      if (tmp > -1) goto L_02F0;
    }

    //  2334              spaces(sp2+1)

    _imp_SPACES(SP2 + 1);

    //  2335              %if b&1=0 %start

    if (B & 1 != 0) goto L_02F1;

      //  2336                 print number(post, 2)

    PRINTNUMBER(POST, 2);

    //  2337              %else

    goto L_02F2;
  L_02F1:;

  //  2338                 print number(post, 1)

    PRINTNUMBER(POST, 1);

    //  2339                 spaces(sp2-sp1)

    _imp_SPACES(SP2 - SP1);

    //  2340              %finish

  L_02F2:;

  //  2341              spaces(sp1+1)

    _imp_SPACES(SP1 + 1);

    //  2342           %else

    goto L_02F3;
  L_02F0:;

  //  2343              %if b<=0 %start

    if (B > 0) goto L_02F4;

      //  2344                 spaces(sp2)

    _imp_SPACES(SP2);

    //  2345              %finish %else %if 0<=op<=255 %start

    goto L_02F5;
  L_02F4:;
    {
      // Double-sided test on OP (Part I)
      int tmp;
      if (0 > (tmp = OP)) goto L_02F6;
      // Double-sided test on OP (Part II)
      if (tmp > 255) goto L_02F6;
    }

    //  2346                 print number(op, 1)

    PRINTNUMBER(OP, 1);

    //  2347                 spaces(sp2-sp1)

    _imp_SPACES(SP2 - SP1);

    //  2348              %else

    goto L_02F5;
  L_02F6:;

  //  2349                 print number(op, 2)

    PRINTNUMBER(OP, 2);

    //  2350              %finish

  L_02F5:;

  //  2351              space

    _imp_SPACE();

    //  2352              %if b<=1 %start

    if (B > 1) goto L_02F7;

      //  2353                 spaces(sp1+sp2+1)

    _imp_SPACES(SP1 + SP2 + 1);

    //  2354              %finish %else %if b<=4 %start

    goto L_02F8;
  L_02F7:;
    if (B > 4) goto L_02F9;

      //  2355                 print number(post, 1)

    PRINTNUMBER(POST, 1);

    //  2356                 space

    _imp_SPACE();

    //  2357                 %if b<=2 %start

    if (B > 2) goto L_02FA;

      //  2358                    spaces(sp2)

    _imp_SPACES(SP2);

    //  2359                 %finish %else %if b=3 %start

    goto L_02FB;
  L_02FA:;
    if (B != 3) goto L_02FC;

      //  2360                    print number(opd, 1)

    PRINTNUMBER(OPD, 1);

    //  2361                    spaces(sp2-sp1)

    _imp_SPACES(SP2 - SP1);

    //  2362                 %else

    goto L_02FB;
  L_02FC:;

  //  2363                    print number(opd, 2)

    PRINTNUMBER(OPD, 2);

    //  2364                 %finish

  L_02FB:;

  //  2365              %else

    goto L_02F8;
  L_02F9:;

  //  2366                 print number(post, 2)

    PRINTNUMBER(POST, 2);

    //  2367                 spaces(sp1+1)

    _imp_SPACES(SP1 + 1);

    //  2368              %finish

  L_02F8:;

  //  2369           %finish

  L_02F3:;

  //  2370           %unless cflag=0 %start

    if (CFLAG == 0) goto L_02FD;

      //  2371              %if cyc=0 %start

    if (CYC != 0) goto L_02FE;

      //  2372                 spaces(3)

    _imp_SPACES(3);

    //  2373              %else

    goto L_02FF;
  L_02FE:;

  //  2374                 write(cyc, 2)

    _imp_WRITE(CYC, 2);

    //  2375              %finish

  L_02FF:;

  //  2376           %finish

  L_02FD:;

  //  2377        %finish

  L_02ED:;

  //  2378        %if cont=0 %start

    if (CONT != 0) goto L_0300;

      //  2379           space

    _imp_SPACE();

    //  2380           %if tflag=0 %start

    if (TFLAG != 0) goto L_0301;

      //  2381              %cycle

  L_0302:;

  //  2382                 out symbol(line(i))

    OUTSYMBOL(LINE[I - 1]);

    //  2383                 %exit %if line(i)&127=nl %or line(i)&127=12

    if (LINE[I - 1] & 127 == 10) goto L_0303;
    if (LINE[I - 1] & 127 != 12) goto L_0304;
  L_0303:;
    goto L_0305;
  L_0304:;

  //  2384                 i = i+1

    I = I + 1;

    //  2385              %repeat

    goto L_0302;
  L_0305:;

  //  2386           %else

    goto L_0306;
  L_0301:;

  //  2387              j = 1

    J = 1;

    //  2388              out tag(i, j, 8)

    OUTTAG(/*?*/ &I, /*?*/ &J, 8);

    //  2389              out tag(i, j, 12) %if accop=1

    if (ACCOP != 1) goto L_0307;
    OUTTAG(/*?*/ &I, /*?*/ &J, 12);
  L_0307:;

  //  2390              out tag(i, j, 15)

    OUTTAG(/*?*/ &I, /*?*/ &J, 15);

    //  2391              k = 0

    K = 0;

    //  2392              lit = 0

    LIT = 0;

    //  2393              %while i#lp %cycle

  L_0308:;
    if (I == LP) goto L_0309;

      //  2394                 %if line(i)&127=' ' %start

    if (LINE[I - 1] & 127 != 32) goto L_030A;

      //  2395                    k = k+1 %if non dense=1 %or lit=1

    if (NONDENSE == 1) goto L_030B;
    if (LIT != 1) goto L_030C;
  L_030B:;
    K = K + 1;
  L_030C:;

  //  2396                 %else

    goto L_030D;
  L_030A:;

  //  2397                    j = j+k+1

    J = J + K + 1;

    //  2398                    out symbol(' ') %and k = k-1 %while k>0

  L_030E:;
    if (K <= 0) goto L_030F;
    OUTSYMBOL(32);
    K = K - 1;
    goto L_030E;
  L_030F:;

  //  2399                    out symbol(line(i))

    OUTSYMBOL(LINE[I - 1]);

    //  2400                 %finish

  L_030D:;

  //  2401                 %if line(i)&127='''' %start

    if (LINE[I - 1] & 127 != 39) goto L_0310;

      //  2402                    lit = 1

    LIT = 1;

    //  2403                 %else

    goto L_0311;
  L_0310:;

  //  2404                    lit = 0

    LIT = 0;

    //  2405                 %finish

  L_0311:;

  //  2406                 i = i+1

    I = I + 1;

    //  2407              %repeat

    goto L_0308;
  L_0309:;

  //  2408              i = i+1 %while line(i)&127=' '

  L_0312:;
    if (LINE[I - 1] & 127 != 32) goto L_0313;
    I = I + 1;
    goto L_0312;
  L_0313:;

  //  2409              %unless lp=1 %or line(i)&127=nl %or line(i)&127=12 %start

    if (LP == 1) goto L_0314;
    if (LINE[I - 1] & 127 == 10) goto L_0314;
    if (LINE[I - 1] & 127 == 12) goto L_0314;

      //  2410                 out symbol(' ') %and j = j+1 %until j>=24

  L_0315:;
    OUTSYMBOL(32);
    J = J + 1;
    if (J >= 24) goto L_0316;
    goto L_0315;
  L_0316:;

  //  2411              %finish

  L_0314:;

  //  2412              %cycle

  L_0317:;

  //  2413                 out symbol(line(i))

    OUTSYMBOL(LINE[I - 1]);

    //  2414                 %exit %if line(i)&127=nl %or line(i)&127=12

    if (LINE[I - 1] & 127 == 10) goto L_0318;
    if (LINE[I - 1] & 127 != 12) goto L_0319;
  L_0318:;
    goto L_031A;
  L_0319:;

  //  2415                 i = i+1

    I = I + 1;

    //  2416              %repeat

    goto L_0317;
  L_031A:;

  //  2417           %finish

  L_0306:;

  //  2418        %else

    goto L_031B;
  L_0300:;

  //  2419           nline(1)

    NLINE(1);

    //  2420        %finish

  L_031B:;

  //  2421     %else

    goto L_031C;
  L_02EA:;

  //  2422        i = i+1 %while line(i)&127#nl %and line(i)&127#12

  L_031D:;
    if (LINE[I - 1] & 127 == 10) goto L_031E;
    if (LINE[I - 1] & 127 == 12) goto L_031E;
    I = I + 1;
    goto L_031D;
  L_031E:;

  //  2423     %finish

  L_031C:;

  //  2424     fault("Truncated line") %if i=max line+1

    if (I != 512 + 1) goto L_031F;
    FAULT(_imp_str_literal_size(63, "Truncated line"));
  L_031F:;

  //  2425
  //  2426     %if b>=1 %start

    if (B < 1) goto L_0320;

      //  2427        dump((op>>8)&255) %unless 0<=op<=255

    {
      // Double-sided test on OP (Part I)
      int tmp;
      if (0 > (tmp = OP)) goto L_0321;
      // Double-sided test on OP (Part II)
      if (tmp <= 255) goto L_0322;
    }
  L_0321:;
    DUMP((unsigned int)OP >> 8 & 255);
  L_0322:;

  //  2428        dump(op&255)

    DUMP(OP & 255);

    //  2429        dump((post>>8)&255) %if b=5

    if (B != 5) goto L_0323;
    DUMP((unsigned int)POST >> 8 & 255);
  L_0323:;

  //  2430        dump(post&255) %if b>=2

    if (B < 2) goto L_0324;
    DUMP(POST & 255);
  L_0324:;

  //  2431        dump((opd>>8)&255) %if b=4

    if (B != 4) goto L_0325;
    DUMP((unsigned int)OPD >> 8 & 255);
  L_0325:;

  //  2432        dump(opd&255) %if 3<=b<=4

    {
      // Double-sided test on B (Part I)
      int tmp;
      if (3 > (tmp = B)) goto L_0326;
      // Double-sided test on B (Part II)
      if (tmp > 4) goto L_0326;
    }
    DUMP(OPD & 255);
  L_0326:;

  //  2433     %finish %else %if -2<=b<=-1 %start

    goto L_0327;
  L_0320:;
    {
      // Double-sided test on B (Part I)
      int tmp;
      if (-2 > (tmp = B)) goto L_0328;
      // Double-sided test on B (Part II)
      if (tmp > -1) goto L_0328;
    }

    //  2434        dump((post>>8)&255) %if b=-2

    if (B != -2) goto L_0329;
    DUMP((unsigned int)POST >> 8 & 255);
  L_0329:;

  //  2435        dump((post&255))

    DUMP(POST & 255);

    //  2436     %finish

  L_0328:;
  L_0327:;

  //  2437  %end

    return;
  } /* end of INSTROUT */

  //  2438  !-----------------------------------------------------------------------
  //  2439  %routine out tag(%integer %name i, j, %integer col)

  void OUTTAG(int *I, int *J, int COL) {
    //  2440
    //  2441     %while line(i)&127#' ' %and i#lp %cycle

  L_032A:;
    if (LINE[*I - 1] & 127 == 32) goto L_032B;
    if (*I == LP) goto L_032B;

      //  2442        out symbol(line(i))

    OUTSYMBOL(LINE[*I - 1]);

    //  2443        i = i+1

    *I = *I + 1;

    //  2444        j = j+1

    *J = *J + 1;

    //  2445     %repeat

    goto L_032A;
  L_032B:;

  //  2446     i = i+1 %while line(i)&127=' ' %and i#lp

  L_032C:;
    if (LINE[*I - 1] & 127 != 32) goto L_032D;
    if (*I == LP) goto L_032D;
    *I = *I + 1;
    goto L_032C;
  L_032D:;

  //  2447     %unless i=lp %start

    if (*I == LP) goto L_032E;

      //  2448        out symbol(' ') %and j = j+1 %until j>=col

  L_032F:;
    OUTSYMBOL(32);
    *J = *J + 1;
    if (*J >= COL) goto L_0330;
    goto L_032F;
  L_0330:;

  //  2449     %finish

  L_032E:;

  //  2450  %end

    return;
  } /* end of OUTTAG */

  //  2451  !------------------------------------------------------------------------
  //  2452  %routine out symbol(%byte %integer char)

  void OUTSYMBOL(unsigned char CHAR) {
    //  2453     %own %integer optr = 0

    static int OPTR = 0;

    //  2454
    //  2455     %if char&127=nl %start

    if (CHAR & 127 != 10) goto L_0331;

      //  2456        optr = 0

    OPTR = 0;

    //  2457        nline(1)

    NLINE(1);

    //  2458     %finish %else %if char&127=12 %start

    goto L_0332;
  L_0331:;
    if (CHAR & 127 != 12) goto L_0333;

      //  2459        optr = 0

    OPTR = 0;

    //  2460        nline(lines on page)

    NLINE(66);

    //  2461     %else

    goto L_0332;
  L_0333:;

  //  2462        %if optr=sp3 %start

    if (OPTR != SP3) goto L_0334;

      //  2463           %return %if wflag=0

    if (WFLAG != 0) goto L_0335;
    return;
  L_0335:;

  //  2464           nline(1)

    NLINE(1);

    //  2465           write(ln, 5)

    _imp_WRITE(LN, 5);

    //  2466           print symbol('+')

    _imp_PRINTSYMBOL(43);

    //  2467           spaces(line width-sp3-7)

    _imp_SPACES(78 - SP3 - 7);

    //  2468           optr = 0

    OPTR = 0;

    //  2469        %finish

  L_0334:;

  //  2470        print symbol(char)

    _imp_PRINTSYMBOL(CHAR);

    //  2471        optr = optr+1

    OPTR = OPTR + 1;

    //  2472     %finish

  L_0332:;

  //  2473  %end

    return;
  } /* end of OUTSYMBOL */

  //  2474  !-----------------------------------------------------------------------
  //  2475  %routine fault(%string(63) s)

  void FAULT(_imp_string63 S) {
    //  2476
    //  2477     faults=faults+1

    FAULTS = FAULTS + 1;

    //  2478     %unless eflag=0 %start

    if (EFLAG == 0) goto L_0336;

      //  2479        print string("****  ".s.".  ****")

    _imp_PRINTSTRING(
        /* clang-format off */
*({  __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("****  "), (_imp_string *)/*?*/&S); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(".  ****")); (_imp_string255 *)&tmp;})/*q*/;  (_imp_string255 *)&tmp;  })
        /* clang-format on */
    );

    //  2480        nline(1)

    NLINE(1);

    //  2481     %finish

  L_0336:;

  //  2482  %end

    return;
  } /* end of FAULT */

  //  2483  !-----------------------------------------------------------------------
  //  2484  %routine nline(%integer n)

  void NLINE(int N) {
    //  2485     %own %integer line on page = lines on page+1, page no = 0

    static int LINEONPAGE = 67;
    static int PAGENO = 0;

    //  2486
    //  2487     %unless n<0 %start

    if (N < 0) goto L_0337;

      //  2488        %if line on page+pflag+n>lines on page %start

    if (LINEONPAGE + PFLAG + N <= 66) goto L_0338;

      //  2489           page no = page no+1

    PAGENO = PAGENO + 1;

    //  2490           %unless n=0 %start

    if (N == 0) goto L_0339;

      //  2491              %if line on page=lines on page %start

    if (LINEONPAGE != 66) goto L_033A;

      //  2492                 new line

    _imp_NEWLINE();

    //  2493              %else

    goto L_033B;
  L_033A:;

  //  2494                 print symbol(12)

    _imp_PRINTSYMBOL(12);

    //  2495              %finish

  L_033B:;

  //  2496           %finish

  L_0339:;

  //  2497           %if pflag=0 %start

    if (PFLAG != 0) goto L_033C;

      //  2498              line on page = 1

    LINEONPAGE = 1;

    //  2499           %else

    goto L_033D;
  L_033C:;

  //  2500              new line

    _imp_NEWLINE();

    //  2501              print string("  Motorola M6809 Assembler ")

    _imp_PRINTSTRING(_imp_str_literal("  Motorola M6809 Assembler "));

    //  2502              spaces((line width-37-length(header))//2)

    _imp_SPACES(((long)(78 - 37 - *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &HEADER)) / (long)2));

    //  2503              print string(header)

    _imp_PRINTSTRING(
        /* clang-format off */
*({  __typeof__(_imp_string41) tmp = HEADER/*q*/;  (_imp_string255 *)&tmp;  })
        /* clang-format on */
    );

    //  2504              spaces((line width-36-length(header))//2)

    _imp_SPACES(((long)(78 - 36 - *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &HEADER)) / (long)2));

    //  2505              print string(" Page")

    _imp_PRINTSTRING(_imp_str_literal(" Page"));

    //  2506              write(page no, 2)

    _imp_WRITE(PAGENO, 2);

    //  2507              new lines(2)

    _imp_NEWLINES(2);

    //  2508              line on page = 4

    LINEONPAGE = 4;

    //  2509           %finish

  L_033D:;

  //  2510        %else

    goto L_033E;
  L_0338:;

  //  2511           new lines(n)

    _imp_NEWLINES(N);

    //  2512           line on page = line on page+n

    LINEONPAGE = LINEONPAGE + N;

    //  2513        %finish

  L_033E:;

  //  2514     %finish

  L_0337:;

  //  2515  %end

    return;
  } /* end of NLINE */

  //  2516  !-----------------------------------------------------------------------
  //  2517  %routine print number(%integer n,d)

  void PRINTNUMBER(int N, int D) {
    //  2518     %conststring(1)%array h(0:15)="0","1","2","3","4","5","6","7","8","9",

    const _imp_string1 H[16] = {_imp_str_init("0"), _imp_str_init("1"), _imp_str_init("2"), _imp_str_init("3"),
                                _imp_str_init("4"), _imp_str_init("5"), _imp_str_init("6"), _imp_str_init("7"),
                                _imp_str_init("8"), _imp_str_init("9"), _imp_str_init("A"), _imp_str_init("B"),
                                _imp_str_init("C"), _imp_str_init("D"), _imp_str_init("E"), _imp_str_init("F")};
    struct _imp_dv H_dv = {H, sizeof(_imp_string) /*, dims, <bounds> */};

    //  2519+      "A","B","C","D","E","F"
    //  2520     %integer model, nn

    int MODEL;
    int NN;

    //  2521     %string(6) s

    _imp_string6 S;

    //  2522
    //  2523     model = 1<<(d*8-1)

    MODEL = 1 << D * 8 - 1;

    //  2524     s=""


    /* clang-format off */
_imp_strncpy(/*?*/&S, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/6);

    /* clang-format on */

    //  2525     %cycle

  L_033F:;

  //  2526        model =(model>>1)//drad

    MODEL = ((long)((unsigned int)MODEL >> 1) / (long)DRAD);

    //  2527        nn = (n>>1)//drad

    NN = ((long)((unsigned int)N >> 1) / (long)DRAD);

    //  2528        s=h(n-((nn*drad)<<1)).s


    /* clang-format off */
_imp_strncpy(/*?*/&S, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&H[N - (NN * DRAD << 1)], (_imp_string *)/*?*/&S); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/6);

    /* clang-format on */

    //  2529        n = nn

    N = NN;

    //  2530     %repeat %until model=0

    if (MODEL == 0) goto L_0340;
    goto L_033F;
  L_0340:;

  //  2531     print string(s)

    _imp_PRINTSTRING(
        /* clang-format off */
*({  __typeof__(_imp_string6) tmp = S/*q*/;  (_imp_string255 *)&tmp;  })
        /* clang-format on */
    );

    //  2532  %end

    return;
  } /* end of PRINTNUMBER */

  //  2533  !-----------------------------------------------------------------------
  //  2534  %routine sqs(%integer l, r)

  void SQS(int L, int R) {
    //  2535     %integer nass key, nval key, xhead key, lp, rp, i

    int NASSKEY;
    int NVALKEY;
    int XHEADKEY;
    int LP;
    int RP;
    int I;

    //  2536     %string(6) name key

    _imp_string6 NAMEKEY;

    //  2537
    //  2538     %return %unless l<r

    if (L < R) goto L_0341;
    return;
  L_0341:;

  //  2539     %while r-l>insert limit %cycle

  L_0342:;
    if (R - L <= 10) goto L_0343;

      //  2540        lp = l

    LP = L;

    //  2541        rp = r+1

    RP = R + 1;

    //  2542        name key = name(l)


    /* clang-format off */
_imp_strncpy(/*?*/&NAMEKEY, ({__typeof__(_imp_string6) tmp;/*B*/ tmp = NAME[L - 1]; (void *)&tmp;}), /*max:*/6);

    /* clang-format on */

    //  2543        nass key = nass(l)

    NASSKEY = NASS[L - 1];

    //  2544        nval key = nval(l)

    NVALKEY = NVAL[L - 1];

    //  2545        xhead key = xhead(l)

    XHEADKEY = XHEAD[L - 1];

    //  2546        %cycle

  L_0344:;

  //  2547           rp = rp-1 %until rp=lp %or name key>name(rp)

  L_0345:;
    RP = RP - 1;
    if (RP == LP) goto L_0346;

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&NAMEKEY, (_imp_string *)/*?*/&NAME[RP - 1]) > 0) goto L_0346;

    /* clang-format on */
    goto L_0345;
  L_0346:;

  //  2548           %exit %if lp=rp

    if (LP != RP) goto L_0347;
    goto L_0348;
  L_0347:;

  //  2549           name(lp) = name(rp)


    /* clang-format off */
_imp_strncpy(/*?*/&NAME[LP - 1], ({__typeof__(_imp_string6) tmp;/*B*/ tmp = NAME[RP - 1]; (void *)&tmp;}), /*max:*/6);

    /* clang-format on */

    //  2550           nass(lp) = nass(rp)

    NASS[LP - 1] = NASS[RP - 1];

    //  2551           nval(lp) = nval(rp)

    NVAL[LP - 1] = NVAL[RP - 1];

    //  2552           xhead(lp) = xhead(rp)

    XHEAD[LP - 1] = XHEAD[RP - 1];

    //  2553           lp = lp+1 %until rp=lp %or name key<=name(lp)

  L_0349:;
    LP = LP + 1;
    if (RP == LP) goto L_034A;

    /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&NAMEKEY, (_imp_string *)/*?*/&NAME[LP - 1]) <= 0) goto L_034A;

    /* clang-format on */
    goto L_0349;
  L_034A:;

  //  2554           %exit %if lp=rp

    if (LP != RP) goto L_034B;
    goto L_0348;
  L_034B:;

  //  2555           name(rp) = name(lp)


    /* clang-format off */
_imp_strncpy(/*?*/&NAME[RP - 1], ({__typeof__(_imp_string6) tmp;/*B*/ tmp = NAME[LP - 1]; (void *)&tmp;}), /*max:*/6);

    /* clang-format on */

    //  2556           nass(rp) = nass(lp)

    NASS[RP - 1] = NASS[LP - 1];

    //  2557           nval(rp) = nval(lp)

    NVAL[RP - 1] = NVAL[LP - 1];

    //  2558           xhead(rp) = xhead(lp)

    XHEAD[RP - 1] = XHEAD[LP - 1];

    //  2559        %repeat

    goto L_0344;
  L_0348:;

  //  2560        name(lp) = name key


    /* clang-format off */
_imp_strncpy(/*?*/&NAME[LP - 1], ({__typeof__(_imp_string6) tmp;/*B*/ tmp = NAMEKEY; (void *)&tmp;}), /*max:*/6);

    /* clang-format on */

    //  2561        nass(lp) = nass key

    NASS[LP - 1] = NASSKEY;

    //  2562        nval(lp) = nval key

    NVAL[LP - 1] = NVALKEY;

    //  2563        xhead(lp) = xhead key

    XHEAD[LP - 1] = XHEADKEY;

    //  2564        %if lp-l>r-rp %start

    if (LP - L <= R - RP) goto L_034C;

      //  2565           sqs(rp+1, r)

    SQS(RP + 1, R);

    //  2566           r = lp-1

    R = LP - 1;

    //  2567        %else

    goto L_034D;
  L_034C:;

  //  2568           sqs(l, lp-1)

    SQS(L, LP - 1);

    //  2569           l = rp+1

    L = RP + 1;

    //  2570        %finish

  L_034D:;

  //  2571     %repeat

    goto L_0342;
  L_0343:;

  //  2572     %for rp = l+1, 1, r %cycle

    // %for RP = L + 1, 1, R %cycle
    {
      int _initial = L + 1, _final = R;
      if (invalid_for_loop(_initial, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle RP = L + 1, 1, R");
      RP = _initial - (1);
    L_034E:
      if (RP == _final) goto L_034F;
      RP += 1;

      //  2573        name key = name(rp)


      /* clang-format off */
_imp_strncpy(/*?*/&NAMEKEY, ({__typeof__(_imp_string6) tmp;/*B*/ tmp = NAME[RP - 1]; (void *)&tmp;}), /*max:*/6);

      /* clang-format on */

      //  2574        nass key = nass(rp)

      NASSKEY = NASS[RP - 1];

      //  2575        nval key = nval(rp)

      NVALKEY = NVAL[RP - 1];

      //  2576        xhead key = xhead(rp)

      XHEADKEY = XHEAD[RP - 1];

      //  2577        lp = l

      LP = L;

      //  2578        lp = lp+1 %while lp#rp %and name key>name(lp)

    L_0351:;
      if (LP == RP) goto L_0352;

      /* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&NAMEKEY, (_imp_string *)/*?*/&NAME[LP - 1]) <= 0) goto L_0352;

      /* clang-format on */
      LP = LP + 1;
      goto L_0351;
    L_0352:;

    //  2579        %for i = rp-1, -1, lp %cycle

      // %for I = RP - 1,  -1, LP %cycle
      {
        int _initial = RP - 1, _final = LP;
        if (invalid_for_loop(_initial, -1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = RP - 1,  -1, LP");
        I = _initial - (-1);
      L_0353:
        if (I == _final) goto L_0354;
        I -= 1;

        //  2580           name(i+1) = name(i)


        /* clang-format off */
_imp_strncpy(/*?*/&NAME[I + 1 - 1], ({__typeof__(_imp_string6) tmp;/*B*/ tmp = NAME[I - 1]; (void *)&tmp;}), /*max:*/6);

        /* clang-format on */

        //  2581           nass(i+1) = nass(i)

        NASS[I + 1 - 1] = NASS[I - 1];

        //  2582           nval(i+1) = nval(i)

        NVAL[I + 1 - 1] = NVAL[I - 1];

        //  2583           xhead(i+1) = xhead(i)

        XHEAD[I + 1 - 1] = XHEAD[I - 1];

        //  2584        %repeat

        goto L_0353;
      }

    L_0354:;

    //  2585        name(lp) = name key


      /* clang-format off */
_imp_strncpy(/*?*/&NAME[LP - 1], ({__typeof__(_imp_string6) tmp;/*B*/ tmp = NAMEKEY; (void *)&tmp;}), /*max:*/6);

      /* clang-format on */

      //  2586        nass(lp) = nass key

      NASS[LP - 1] = NASSKEY;

      //  2587        nval(lp) = nval key

      NVAL[LP - 1] = NVALKEY;

      //  2588        xhead(lp) = xhead key

      XHEAD[LP - 1] = XHEADKEY;

      //  2589     %repeat

      goto L_034E;
    }

  L_034F:;

  //  2590  %end

    return;
  } /* end of SQS */

  //  2591  !-----------------------------------------------------------------------
  //  2592  %end %of %program

  _imp_stop(0);
  return 0;

case_OPTIONACTION_dispatch:
  if (OPTIONACTION_index < -1 || OPTIONACTION_index > 51)
    _imp_signalf(6, 3, OPTIONACTION_index, "->OPTIONACTION(%d) out of bounds at %s line %d", OPTIONACTION_index,
                 OPTIONACTION_file, OPTIONACTION_line);
  goto *OPTIONACTION[OPTIONACTION_index - -1];

case_ITYPE1_dispatch:
  if (ITYPE1_index < 1 || ITYPE1_index > 37)
    _imp_signalf(6, 3, ITYPE1_index, "->ITYPE1(%d) out of bounds at %s line %d", ITYPE1_index, ITYPE1_file,
                 ITYPE1_line);
  goto *ITYPE1[ITYPE1_index - 1];

case_ITYPE3_dispatch:
  if (ITYPE3_index < 1 || ITYPE3_index > 37)
    _imp_signalf(6, 3, ITYPE3_index, "->ITYPE3(%d) out of bounds at %s line %d", ITYPE3_index, ITYPE3_file,
                 ITYPE3_line);
  goto *ITYPE3[ITYPE3_index - 1];
end_0:;
}