#include <perms.h>
const int Yes = 1;
const int No = 0;
const int Pentium = 4;
const int Mips = 05;
const int Rs6 = 06;
const int M88k = 07;
const int Vax = 08;
const int Unisys = 09;
const int Emas = 10;
const int Ibm = 11;
const int Ibmxa = 12;
const int Wwc = 13;
const int Amdahl = 14;
const int Perq3 = 15;
const int Gould = 16;
const int Vns = 17;
const int Eamd = 18;
const int Drs = 19;
const int Perq = 20;
const int Pnx = 21;
const int Accent = 22;
const int Orn = 23;
const int Unsignedshorts = 1 << Emas | 1 << Pnx | 1 << Vns;
const int Lintavail =
    1 << Ibm | 1 << Ibmxa | 1 << Amdahl | 1 << Emas | 1 << Gould | 1 << Mips;
const int Llrealavail =
    1 << Ibm | 1 << Ibmxa | 1 << Amdahl | 1 << Emas | 1 << Mips;
const int Emachine = 1 << Drs | 1 << Pentium | 1 << Wwc | 1 << Vax |
                     1 << Gould | 1 << Perq3 | 1 << Vns | 1 << Eamd | 1 << Orn |
                     1 << Unisys | 1 << M88k | 1 << Rs6 | 1 << Mips;
const int Ibmfpformat = 1 << Ibm | 1 << Ibmxa | 1 << Amdahl | 1 << Emas |
                        1 << Gould | 1 << Vns | 1 << Eamd;
const int Vaxfpformat = 1 << Vax | 1 << Unisys;
const int Ieeefpformat = 1 << Wwc | 1 << Perq3 | 1 << Drs | 1 << Pentium |
                         1 << Perq | 1 << Accent | 1 << M88k | 1 << Rs6 |
                         1 << Mips;
const int Byteswopped =
    1 << Perq | 1 << Accent | 1 << Wwc | 1 << Vax | 1 << Pnx | 1 << Orn;
const int Halfswopped = 1 << Perq | 1 << Accent | 1 << Wwc | 1 << Vax |
                        1 << Drs | 1 << Pentium | 1 << Orn;
const int Wordswopped = 1 << Perq | 1 << Accent | 1 << Wwc | 1 << Vax |
                        1 << Drs | 1 << Pentium | 1 << Orn;
const int Riskmc = 1 << M88k | 1 << Rs6 | 1 << Mips;
const int Host = Pentium;
const int Target = Pentium;
const unsigned char Clett[437 /*0:436*/] = {
    1,   40,  1,   41,  1,   42,  1,   44,  2,   201, 198, 6,   213, 206, 204,
    197, 211, 211, 5,   215, 200, 201, 204, 197, 5,   213, 206, 212, 201, 204,
    3,   198, 207, 210, 1,   61,  5,   193, 204, 201, 193, 211, 7,   201, 206,
    212, 197, 199, 197, 210, 4,   210, 197, 193, 204, 4,   204, 207, 206, 199,
    4,   194, 217, 212, 197, 6,   211, 212, 210, 201, 206, 199, 4,   200, 193,
    204, 198, 5,   211, 200, 207, 210, 212, 6,   210, 197, 195, 207, 210, 196,
    7,   210, 207, 213, 212, 201, 206, 197, 2,   198, 206, 3,   205, 193, 208,
    8,   198, 213, 206, 195, 212, 201, 207, 206, 4,   206, 193, 205, 197, 9,
    193, 210, 210, 193, 217, 206, 193, 205, 197, 9,   207, 198, 208, 210, 207,
    199, 210, 193, 205, 6,   207, 198, 198, 201, 204, 197, 6,   207, 198, 204,
    201, 211, 212, 6,   198, 207, 210, 205, 193, 212, 3,   206, 207, 212, 3,
    193, 206, 196, 2,   207, 210, 1,   58,  4,   211, 208, 197, 195, 5,   193,
    210, 210, 193, 217, 3,   207, 215, 206, 8,   197, 216, 212, 197, 210, 206,
    193, 204, 9,   197, 216, 212, 210, 201, 206, 211, 201, 195, 8,   195, 207,
    206, 211, 212, 193, 206, 212, 5,   195, 207, 206, 211, 212, 5,   197, 214,
    197, 206, 212, 5,   211, 212, 193, 210, 212, 9,   212, 200, 197, 206, 211,
    212, 193, 210, 212, 4,   212, 200, 197, 206, 9,   197, 204, 211, 197, 211,
    212, 193, 210, 212, 4,   197, 204, 211, 197, 1,   95,  6,   211, 217, 211,
    212, 197, 205, 7,   196, 217, 206, 193, 205, 201, 195, 4,   80,  85,  84,
    95,  5,   67,  78,  79,  80,  95,  1,   43,  1,   45,  1,   64,  2,   45,
    62,  6,   210, 197, 212, 213, 210, 206, 6,   210, 197, 211, 213, 204, 212,
    7,   205, 207, 206, 201, 212, 207, 210, 4,   211, 212, 207, 208, 6,   211,
    201, 199, 206, 193, 204, 4,   197, 216, 201, 212, 8,   195, 207, 206, 212,
    201, 206, 213, 197, 6,   198, 201, 206, 201, 211, 200, 5,   195, 217, 195,
    204, 197, 6,   210, 197, 208, 197, 193, 212, 3,   197, 206, 196, 7,   201,
    206, 195, 204, 213, 196, 197, 5,   194, 197, 199, 201, 206, 2,   207, 206,
    6,   211, 215, 201, 212, 195, 200, 4,   204, 201, 211, 212, 14,  212, 210,
    213, 211, 212, 197, 196, 208, 210, 207, 199, 210, 193, 205, 6,   205, 193,
    201, 206, 197, 208, 7,   195, 207, 206, 212, 210, 207, 204, 4,   40,  42,
    41,  58};
const int Symbol[797 /*1300:2096*/] = {
    1311, 1305, 1001, 1358, 1783, 1307, 1003, 1311, 0,    1337, 2,    1321,
    1315, 1001, 1014, 1317, 1003, 1321, 0,    1321, 2,    1328, 1328, 1010,
    1028, 1311, 1011, 1351, 1337, 1335, 1010, 1028, 1311, 1011, 1351, 1337,
    4,    1344, 1344, 1010, 1028, 1300, 1011, 1344, 1351, 1349, 1026, 1300,
    999,  1351, 1000, 1358, 1356, 1026, 1311, 999,  1358, 1000, 1366, 1364,
    0,    1337, 1366, 2,    1366, 1000, 1373, 1371, 6,    1337, 999,  1373,
    1000, 1378, 1376, 8,    1378, 11,   1402, 1385, 18,   1010, 1530, 1552,
    1011, 1391, 24,   1010, 1530, 1552, 1011, 1402, 30,   1010, 1001, 34,
    1337, 6,    1337, 6,    1337, 1011, 1408, 1406, 36,   1013, 1408, 1000,
    1415, 1413, 6,    1001, 999,  1415, 1000, 1420, 1418, 42,   1420, 1000,
    1428, 1423, 42,   1425, 50,   1428, 55,   50,   1453, 1431, 42,   1433,
    50,   1436, 55,   1420, 1439, 60,   1415, 1442, 65,   1689, 1445, 72,
    1415, 1448, 77,   1415, 1453, 83,   0,    1845, 2,    1460, 1456, 90,
    1460, 1031, 1428, 1460, 1467, 1463, 98,   1465, 101,  1467, 105,  1483,
    1473, 1428, 1488, 1001, 1408, 1479, 1453, 1483, 1001, 1408, 1495, 1483,
    114,  1001, 1408, 1488, 1486, 114,  1488, 1000, 1495, 1491, 119,  1493,
    114,  1495, 1000, 1505, 1503, 0,    1010, 1467, 1011, 1505, 2,    1505,
    1000, 1514, 1512, 1030, 1010, 1467, 1011, 999,  1514, 1000, 1525, 1518,
    129,  1016, 1520, 139,  1523, 146,  1018, 1525, 1016, 1530, 1528, 153,
    1530, 1000, 1546, 1536, 1337, 1032, 1337, 1546, 1541, 0,    1530, 1552,
    2,    1544, 160,  1530, 1546, 1337, 1552, 1550, 1037, 1337, 1552, 1000,
    1563, 1557, 164,  1530, 1563, 1561, 168,  1530, 1570, 1563, 1000, 1570,
    1568, 164,  1530, 999,  1570, 1000, 1577, 1575, 168,  1530, 999,  1577,
    1000, 1585, 1581, 1033, 1337, 1583, 171,  1585, 1000, 1592, 1589, 173,
    1010, 1592, 1015, 1010, 1596, 1595, 173,  1596, 1605, 1603, 6,    1337,
    171,  1337, 1596, 1605, 1000, 1614, 1610, 1488, 1001, 1408, 1614, 178,
    1525, 1614, 1620, 1620, 1001, 1408, 1791, 1620, 1626, 1624, 6,    1614,
    1626, 1000, 1645, 1637, 1488, 1592, 1010, 1001, 1402, 1799, 1011, 1645,
    1006, 1645, 178,  1525, 1592, 1001, 1402, 1791, 1667, 1656, 1654, 6,
    1010, 1001, 1402, 1799, 1011, 1645, 1656, 1000, 1667, 1659, 184,  1661,
    188,  1663, 197,  1665, 207,  1667, 216,  1678, 1676, 34,   1012, 1028,
    1300, 1344, 1689, 1678, 1678, 1000, 1689, 1687, 6,    1012, 1028, 1300,
    1344, 1689, 999,  1689, 1000, 1696, 1694, 0,    1328, 2,    1696, 1000,
    1703, 1701, 6,    1321, 999,  1703, 1000, 1708, 1706, 222,  1708, 1000,
    1714, 1712, 6,    1337, 1714, 1000, 1727, 1725, 6,    1001, 1408, 0,
    1337, 171,  1337, 2,    999,  1727, 1000, 1734, 1732, 24,   1530, 1552,
    1734, 1000, 1747, 1737, 1019, 1739, 1006, 1744, 1373, 1530, 1552, 1006,
    1747, 1378, 1006, 1760, 1751, 228,  1034, 1754, 234,  1034, 1760, 244,
    1010, 1939, 1011, 1766, 1766, 1764, 164,  1939, 1766, 1000, 1783, 1770,
    249,  1034, 1778, 259,  1373, 1010, 1530, 1552, 1011, 1747, 1781, 259,
    1939, 1783, 1000, 1791, 1789, 264,  1001, 1358, 1783, 1791, 1000, 1799,
    1799, 0,    1337, 171,  1337, 1596, 2,    1807, 1805, 34,   1028, 1300,
    1344, 1807, 1000, 1816, 1810, 266,  1812, 188,  1814, 273,  1816, 1000,
    1827, 1825, 1001, 34,   1337, 6,    1337, 6,    1337, 1827, 1000, 1834,
    1832, 6,    1852, 999,  1834, 1000, 1845, 1838, 173,  1001, 1845, 1001,
    0,    1852, 1827, 1870, 2,    1852, 1848, 1001, 1852, 1852, 1827, 1870,
    1862, 1856, 1428, 1862, 1862, 0,    1852, 1827, 1870, 2,    1870, 1867,
    1488, 1001, 1408, 1870, 178,  1614, 1878, 1876, 168,  1852, 1827, 999,
    1878, 1000, 1901, 1885, 4,    1910, 1001, 1901, 1006, 1889, 281,  1002,
    1006, 1893, 1022, 1917, 1006, 1899, 286,  1009, 6,    1009, 1006, 1901,
    1043, 1910, 1905, 292,  1005, 1908, 294,  1005, 1910, 1000, 1917, 1913,
    296,  1915, 34,   1917, 1000, 1939, 1920, 1023, 1923, 1024, 1321, 1926,
    1025, 1321, 1929, 1039, 1321, 1934, 1040, 1321, 6,    1321, 1939, 1041,
    1321, 6,    1321, 1972, 1948, 1010, 1001, 1358, 1783, 1011, 1577, 1760,
    1952, 298,  1001, 1358, 1954, 301,  1958, 308,  1033, 1337, 1961, 315,
    1760, 1963, 323,  1968, 328,  1703, 1321, 1708, 1970, 335,  1972, 340,
    2097, 1979, 1027, 1010, 1939, 1011, 1734, 1981, 1007, 1989, 1373, 1010,
    1530, 1552, 1011, 1747, 1006, 1994, 349,  1035, 1766, 1006, 1999, 356,
    1029, 1816, 1006, 2004, 362,  1036, 1727, 1006, 2009, 1378, 356,  1029,
    1006, 2016, 1031, 1010, 1428, 1011, 1605, 1006, 2020, 369,  1514, 1006,
    2025, 83,   153,  1834, 1006, 2035, 1010, 1807, 1453, 1011, 1585, 1001,
    1402, 1495, 1006, 2039, 1656, 1428, 1626, 2043, 373,  1003, 1038, 2048,
    381,  1015, 1010, 1006, 2057, 387,  1021, 1703, 1321, 1696, 228,  1034,
    1006, 2068, 390,  1001, 1408, 0,    1337, 171,  1337, 2,    1714, 1006,
    2072, 397,  1006, 1017, 2078, 259,  1035, 1004, 1034, 1006, 2081, 4,
    1878, 2084, 402,  1006, 2088, 417,  1001, 1006, 2092, 424,  1003, 1006,
    2095, 1001, 432,  2097, 1006};
const int Ss = 1972;
const _imp_string255 Qcodes[234 /*0:233*/] = {
    _imp_str_literal("HALT"),       _imp_str_literal("IADD"),
    _imp_str_literal("ISUB"),       _imp_str_literal("IMULT"),
    _imp_str_literal("IDIV"),       _imp_str_literal("INEG"),
    _imp_str_literal("IABS"),       _imp_str_literal("IREM"),
    _imp_str_literal("IAND"),       _imp_str_literal("IOR"),
    _imp_str_literal("INOT"),       _imp_str_literal("IXOR"),
    _imp_str_literal("ISHLL"),      _imp_str_literal("ISHRL"),
    _imp_str_literal("ISHLA"),      _imp_str_literal("ISHRA"),
    _imp_str_literal("IGT"),        _imp_str_literal("ILT"),
    _imp_str_literal("IEQ"),        _imp_str_literal("INE"),
    _imp_str_literal("IGE"),        _imp_str_literal("ILE"),
    _imp_str_literal("BNOT"),       _imp_str_literal("ITWB"),
    _imp_str_literal("SFA"),        _imp_str_literal("RETURN"),
    _imp_str_literal("ASF"),        _imp_str_literal("IPUSH"),
    _imp_str_literal("IPOP"),       _imp_str_literal("EXCH"),
    _imp_str_literal("DUPL"),       _imp_str_literal("DISCARD"),
    _imp_str_literal("INDEX1"),     _imp_str_literal("INDEX2"),
    _imp_str_literal("INDEX4"),     _imp_str_literal("INDEX8"),
    _imp_str_literal("INDEX"),      _imp_str_literal("MVB"),
    _imp_str_literal("CHK"),        _imp_str_literal("TMASK"),
    _imp_str_literal("MVW"),        _imp_str_literal("EZERO"),
    _imp_str_literal("CPBGT"),      _imp_str_literal("CPBLT"),
    _imp_str_literal("CPBEQ"),      _imp_str_literal("CPBNE"),
    _imp_str_literal("CPBGE"),      _imp_str_literal("CPBLE"),
    _imp_str_literal("EMAKED"),     _imp_str_literal("ESPLITD"),
    _imp_str_literal("UMULT"),      _imp_str_literal("UREM"),
    _imp_str_literal("UDIV"),       _imp_str_literal("UADD"),
    _imp_str_literal("USUB"),       _imp_str_literal("UGT"),
    _imp_str_literal("ULT"),        _imp_str_literal("UEQ"),
    _imp_str_literal("UNE"),        _imp_str_literal("UGE"),
    _imp_str_literal("ULE"),        _imp_str_literal("UCVTII"),
    _imp_str_literal("IADDST"),     _imp_str_literal("ISUBST"),
    _imp_str_literal("IMULTST"),    _imp_str_literal("IDIVST"),
    _imp_str_literal("INEGST"),     _imp_str_literal("UREMST"),
    _imp_str_literal("UDIVST"),     _imp_str_literal("IANDST"),
    _imp_str_literal("IORST"),      _imp_str_literal("INOTST"),
    _imp_str_literal("IXORST"),     _imp_str_literal("IREMST"),
    _imp_str_literal("RADD"),       _imp_str_literal("RSUB"),
    _imp_str_literal("RMULT"),      _imp_str_literal("RDIV"),
    _imp_str_literal("RNEG"),       _imp_str_literal("RABS"),
    _imp_str_literal("TNCRU"),      _imp_str_literal("CVTSBI"),
    _imp_str_literal("CVTUI"),      _imp_str_literal("CVTUR"),
    _imp_str_literal("CVTIU"),      _imp_str_literal("CVTRU"),
    _imp_str_literal("CVTII"),      _imp_str_literal("CVTIR"),
    _imp_str_literal("CVTRR"),      _imp_str_literal("TNCRI"),
    _imp_str_literal("RNDRI"),      _imp_str_literal("EFLOOR"),
    _imp_str_literal("TNCRR"),      _imp_str_literal("RNDRR"),
    _imp_str_literal("RGT"),        _imp_str_literal("RLT"),
    _imp_str_literal("REQ"),        _imp_str_literal("RNE"),
    _imp_str_literal("RGE"),        _imp_str_literal("RLE"),
    _imp_str_literal("RTWB"),       _imp_str_literal("UCHECK"),
    _imp_str_literal("ESTORE"),     _imp_str_literal("EDUPSTORE"),
    _imp_str_literal("PUSHVAL"),    _imp_str_literal("PUSHADDR"),
    _imp_str_literal("EVAL"),       _imp_str_literal("EVALADDR"),
    _imp_str_literal("EADDRESS"),   _imp_str_literal("EINTRES"),
    _imp_str_literal("EREALRES"),   _imp_str_literal("ESIZE"),
    _imp_str_literal("EPOWER"),     _imp_str_literal("EPOWERI"),
    _imp_str_literal("ARGPROC"),    _imp_str_literal("PUSHBYTES"),
    _imp_str_literal("EAUXST"),     _imp_str_literal("EAUXADD"),
    _imp_str_literal("EAUXRES"),    _imp_str_literal("EOLDLNB"),
    _imp_str_literal("EFILL"),      _imp_str_literal("ECDUP"),
    _imp_str_literal("EMCHIP"),     _imp_str_literal("CXADD"),
    _imp_str_literal("CXSUB"),      _imp_str_literal("CXMULT"),
    _imp_str_literal("CXDIV"),      _imp_str_literal("CXNEG"),
    _imp_str_literal("CXASGN"),     _imp_str_literal("CXEQ"),
    _imp_str_literal("CXNE"),       _imp_str_literal("ECMPLX1"),
    _imp_str_literal("ECMPLX2"),    _imp_str_literal("ECONJG"),
    _imp_str_literal("EANINT"),     _imp_str_literal("EM1EXP"),
    _imp_str_literal("EISIGN"),     _imp_str_literal("ESIGN"),
    _imp_str_literal("EIMOD"),      _imp_str_literal("ERMOD"),
    _imp_str_literal("EIDIM"),      _imp_str_literal("ERDIM"),
    _imp_str_literal("EIMIN"),      _imp_str_literal("ERMIN"),
    _imp_str_literal("EIMAX"),      _imp_str_literal("ERMAX"),
    _imp_str_literal("EDMULT"),     _imp_str_literal("ECHAR"),
    _imp_str_literal("EICHAR"),     _imp_str_literal("EINDEXCHAR"),
    _imp_str_literal("ECONCAT"),    _imp_str_literal("EASGNCHAR"),
    _imp_str_literal("ECOMPCHAR"),  _imp_str_literal("EISHFT"),
    _imp_str_literal("EIBITS"),     _imp_str_literal("EIBSET"),
    _imp_str_literal("EIBTEST"),    _imp_str_literal("EIBCLR"),
    _imp_str_literal("EISHFTC"),    _imp_str_literal("PROCARG"),
    _imp_str_literal("IPROCARG"),   _imp_str_literal("CHARARG"),
    _imp_str_literal("IPROCCALL"),  _imp_str_literal("ARGPROCCALL"),
    _imp_str_literal("CALLTPLATE"), _imp_str_literal("NOTEIORES"),
    _imp_str_literal("STKIORES"),   _imp_str_literal("EFCVT"),
    _imp_str_literal("EFCVTASGN"),  _imp_str_literal("EARGLEN"),
    _imp_str_literal("EFDVACC"),    _imp_str_literal("EFNOTEVR"),
    _imp_str_literal("EFSETVR"),    _imp_str_literal("EINCR"),
    _imp_str_literal("EDECR"),      _imp_str_literal("ELOADB"),
    _imp_str_literal("ESTOREB"),    _imp_str_literal("EINCRB"),
    _imp_str_literal("EDECRB"),     _imp_str_literal("EDINIT"),
    _imp_str_literal("ELSHIFT"),    _imp_str_literal("ERSHIFT"),
    _imp_str_literal("EADJL"),      _imp_str_literal("EADJR"),
    _imp_str_literal("EVERIFY"),    _imp_str_literal("STRGT"),
    _imp_str_literal("STRLT"),      _imp_str_literal("STREQ"),
    _imp_str_literal("STRNE"),      _imp_str_literal("STRGE"),
    _imp_str_literal("STRLE"),      _imp_str_literal("PTREQ"),
    _imp_str_literal("PTRNE"),      _imp_str_literal("SETI"),
    _imp_str_literal("SETU"),       _imp_str_literal("SETD"),
    _imp_str_literal("SETLE"),      _imp_str_literal("SETEQ"),
    _imp_str_literal("SETNE"),      _imp_str_literal("SETIN"),
    _imp_str_literal("SETSING"),    _imp_str_literal("SETRANGE"),
    _imp_str_literal("SETEMPTY"),   _imp_str_literal("CAPMOVE"),
    _imp_str_literal("INDEXP"),     _imp_str_literal("EOFOP"),
    _imp_str_literal("EOLOP"),      _imp_str_literal("LAZYOP"),
    _imp_str_literal("ISQR"),       _imp_str_literal("IODD"),
    _imp_str_literal("ISUCC"),      _imp_str_literal("IPRED"),
    _imp_str_literal("UODD"),       _imp_str_literal("USUCC"),
    _imp_str_literal("UPRED"),      _imp_str_literal("RSQR"),
    _imp_str_literal("CHKLT"),      _imp_str_literal("CHKGT"),
    _imp_str_literal("CHKNE"),      _imp_str_literal("CHKRNG"),
    _imp_str_literal("CHKSETGT"),   _imp_str_literal("CHKSETRNG"),
    _imp_str_literal("UCHKLT"),     _imp_str_literal("UCHKGT"),
    _imp_str_literal("UCHKNE"),     _imp_str_literal("UCHKRNG"),
    _imp_str_literal("CHKNEW2"),    _imp_str_literal("CHKUNDEF"),
    _imp_str_literal("SETUNDEF"),   _imp_str_literal("TRAP"),
    _imp_str_literal("ICLPSH"),     _imp_str_literal("ICLPROT"),
    _imp_str_literal(""),           _imp_str_literal("ESTKLIT")};
const short Opc[234 /*0:233*/] = {
    0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
    15,  16,  17,  18,  19,  20,  21,  22,  36,  41,  42,  43,  44,  45,  46,
    47,  48,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  62,  63,  64,
    65,  66,  67,  68,  69,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,
    87,  100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
    114, 115, 116, 117, 118, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
    140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 162, 177, 184, 185, 186,
    187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
    202, 203, 205, 257, 258, 259, 260, 261, 262, 263, 264, 286, 287, 279, 266,
    267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 280, 281, 282,
    283, 284, 285, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
    300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
    315, 316, 317, 318, 319, 511, 512, 513, 514, 515, 516, 520, 521, 530, 531,
    532, 533, 534, 535, 536, 537, 538, 539, 547, 548, 559, 560, 574, 601, 602,
    603, 604, 605, 606, 607, 611, 620, 621, 629, 622, 623, 624, 625, 626, 627,
    628, 630, 631, 632, 633, 642, 643, 0,   255};
const int Firstucub = 224;
const int Firstucsb = Firstucub + 0;
const int Firstucw = Firstucsb + 1;
const int Firstucubub = Firstucw + 1;
const int Firstucubw = 0;
const int Firstucjump = 0;
const int Lastuc = 0;
const int Lrlpt = 0x62;
const int Noofsns = 67;
const int Tsname[68 /*0:67*/] = {[0 ... 7] = 0x1000,
                                 0x1041,
                                 [9 ... 13] = 0x1000,
                                 0x1051,
                                 4194,
                                 [16 ... 17] = 0x1051,
                                 4194,
                                 [19 ... 20] = 0x1000,
                                 0x52,
                                 0x51,
                                 0x62,
                                 [24 ... 30] = 4194,
                                 0x1000,
                                 0x31,
                                 0x51,
                                 [34 ... 35] = 4194,
                                 0x31,
                                 0x1000,
                                 0x4051,
                                 0x62,
                                 [40 ... 41] = 0x1000,
                                 0x35,
                                 0x1000,
                                 0x1035,
                                 0x31,
                                 0x35,
                                 0x1035,
                                 0x33,
                                 0,
                                 0x1051,
                                 0x51,
                                 0x4062,
                                 0x51,
                                 0x61,
                                 0x72,
                                 0x61,
                                 0x72,
                                 0x51,
                                 0x62,
                                 0x1051,
                                 0x51,
                                 0x1000,
                                 0x62,
                                 [64 ... 65] = 0x1061,
                                 0x41,
                                 0x1051};
const unsigned char Itoetab[128 /*0:127*/] = {
    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x15, 0x40,
    0x0C, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4F, 0x7F, 0x7B,
    0x5B, 0x6C, 0x50, 0x7D, 0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,
    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0x7A, 0x5E,
    0x4C, 0x7E, 0x6E, 0x6F, 0x7C, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
    0xC8, 0xC9, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xE2,
    0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0x4A, 0x5F, 0x5A, 0x6A, 0x6D,
    0x7C, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x91, 0x92,
    0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6,
    0xA7, 0xA8, 0xA9, 0xC0, 0x40, 0xD0, 0x40, 0x40};
const unsigned char Onecase[256 /*0:255*/] = {
    0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
    15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
    30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
    45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
    60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
    75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
    90,  91,  92,  93,  94,  95,  96,  65,  66,  67,  68,  69,  70,  71,  72,
    73,  74,  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,
    88,  89,  90,  123, 124, 125, 126, 127, 0,   1,   2,   3,   4,   5,   6,
    7,   8,   9,   10,  11,  12,  13,  14,  15,  16,  17,  18,  19,  20,  21,
    22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,
    37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
    52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,
    67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,
    82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96,
    193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
    208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 123, 124, 125, 126,
    127};
const int Maxlevels = 31;
const int Commalt = 2;
const int Decalt = 8;
const int Endalt = 9;
const int Snpt = 0x1006;
const int Maxibits = 32;
const unsigned char Trtab[256 /*0:255*/] = {
    [0 ... 47] = 0,  [48 ... 57] = 1,  [58 ... 64] = 0,  [65 ... 90] = 2,
    [91 ... 96] = 0, [97 ... 122] = 2, [123 ... 255] = 0};
typedef struct Parmf {
  int Bits1;
  int Bits2;
  int Ttoput;
  unsigned char Let;
  unsigned char Dynamic;
  unsigned char Line;
  unsigned char Trace;
  unsigned char Arr;
  unsigned char Dbug;
  unsigned char Chk;
  unsigned char Diag;
  unsigned char Opt;
  unsigned char Free;
  unsigned char List;
  unsigned char Cprmode;
  unsigned char Compiler;
  unsigned char Z;
  unsigned char Y;
  unsigned char Prof;
  unsigned char Inhcode;
  unsigned char Dcomp;
  unsigned char Faulty;
  unsigned char X;
  unsigned char Stack;
  unsigned char Map;
  unsigned char Quotes;
  unsigned char S2;
  int Lpoput;
  int Sp0;
} Parmf;
typedef struct Levelf {
  int Rbase;
  int Diaginf;
  int Ral;
  int Flag;
  int L;
  int M;
  int Nmdecs;
  int Onword;
  int Oninf;
  int Label;
  int Jround;
  int Unattformats;
  int Psize;
  int Entryad;
  int Display;
  int Auxsbase;
  int Names;
  int Snmax;
  int Sn;
  int Ressize;
  int Clevel;
  int Set;
  int Maxpp;
  int Exitlab;
  int Contlab;
  int S3;
  int Avlwsp[5 /*0:4*/];
} Levelf;
#if 1 /* (1<<Host & Unsignedshorts)==0 */
{
  typedef struct Rd {
  } Rd;
  typedef struct Tagf {
    int Link;
  } Tagf;
  typedef struct Tripf {
    unsigned char Opern;
    unsigned char Optype;
    unsigned char Cnt;
    unsigned char Dpth;
    short Flags;
    short Puse;
    short Flink;
    short Blink;
    int X1;
    Rd Opnd1;
    Rd Opnd2;
  } Tripf;
  typedef struct Listf {
    int Link;
  } Listf;
}
#else
{
  typedef struct Rd {
  } Rd;
  typedef struct Tagf {
    int Link;
  } Tagf;
  typedef struct Tripf {
    unsigned char Opern;
    unsigned char Optype;
    unsigned char Cnt;
    unsigned char Dpth;
    unsigned short Flags;
    unsigned short Puse;
    unsigned short Flink;
    unsigned short Blink;
    int X1;
    Rd Opnd1;
    Rd Opnd2;
  } Tripf;
  typedef struct Listf {
    int Link;
  } Listf;
}
#endif
typedef struct Workaf {
  int Nnames;
  int Ccsize;
  int Dsize;
  int Aslmax;
  int Aslcurbtm;
  int Constptr;
  int Constbtm;
  int Lasttrip;
  int Wkfilead;
  int Wkfilek;
  int Fileaddr;
  int Release;
  int Aasl0;
  int Constlimit;
  int Rtcount;
  int Artop;
  int Amainep;
  int Dictbase;
  int Optcnt;
  int Inclhead;
  int S2;
  int S3;
  int S4;
  int *Line;
  int *N;
  int *S5;
  _imp_string255 Ladate;
  unsigned char Cc;
  unsigned char A;
  unsigned char Lett;
  int Word;
  int Tags;
  int Ctable;
  Levelf Levelinf;
  int Plabs[32 /*0:31*/];
  int Plink[32 /*0:31*/];
  Listf Aslist;
} Workaf;
const int Leavestacked = IEXP(2, 0);
const int Loadop1 = IEXP(2, 1);
const int Loadop2 = IEXP(2, 2);
const int Notinreg = IEXP(2, 3);
const int Useestack = IEXP(2, 4);
const int Usemstack = IEXP(2, 5);
const int Constantop = IEXP(2, 6);
const int Commutable = IEXP(2, 7);
const int Bstruct = IEXP(2, 12);
const int Usedlate = IEXP(2, 13);
const int Asslevel = IEXP(2, 14);
const int Dontopt = IEXP(2, 15);
typedef struct Emasfhdrf {
  int Endra;
  int Startra;
  int Fbytesize;
  int W3;
  int W4;
  int W5;
  int W6;
  int W7;
} Emasfhdrf;
extern Parmf Parm;
extern Workaf Worka;
extern void Pop(int A, int B, int C, int D);
extern void Push(int A, int B, int C, int D);
extern void Insertatend(int A, int B, int C, int D);
extern void Fault(int A, int B, int C);
extern int Malloc(int Bytes);
extern int Fileread(int Fid, int Bad, int Blen);
extern void Free(int Bytes);
#if 0   /* Target==Mips */
const _imp_string255 Assprefix = _imp_str_literal(" #");
#elif 0 /* Target==M88k */
const _imp_string255 Assprefix = _imp_str_literal(" ;");
#else
const _imp_string255 Assprefix = _imp_str_literal("");
#endif
int Passone(void) {
  void Newsource(int Newfilad);
  int Oldsource(void);
  void Readline(int Mode, int Char);
  int Compare(int P);
  void Pname(int Mode);
  void Evalconst(int Mode);
  void Texttext(int Ebcdic);
  extern void Movebytes(int Length, int Fbase, int Foff, int Tobase, int Tooff);
#if 0   /* (1<<Host & Ibmfpformat)!=0 */
{ const int Preconsts[4 /*0:3*/] =  {
10,0,0x413243F6,0xA8885A31
};
 }
#elif 0 /* Host==Vax */
  const int Preconsts[4 /*0:3*/] = {10, 0, 0x21fb4029, 0x2d185444};

#elif 1 /* (1<<Host & Wordswopped)!=0 */
  { const int Preconsts[4 /*0:3*/] = {10, 0, 0x54442d18, 0x400921fb}; }
#else
  const int Preconsts[4 /*0:3*/] = {10, 0, 0x400921fb, 0x54442d18};

#endif
  int I;
  int J;
  int K;
  int Llength;
  int Level;
  int Qmax;
  int Q;
  int R;
  int S;
  int Snum;
  int Nnames;
  int Dsize;
  int Next;
  int Jj;
  int Cptr;
  int Starstart;
  int Arsize;
  int Hit;
  int Ctype;
  int Lastat;
  int Lastname;
  int Lastend;
  int Strlink;
  int Ihead;
  int Idepth;
  int Fileaddr;
  int Fileptr;
  int Fileend;
  static unsigned char Srcef[1048577 /*0:1048576*/];
  Emasfhdrf *Hdr;
  double Imax;
  int Curlinead;
  _imp_string255 Nem;
  int *Line;
  unsigned char Cc;
  unsigned char Source;
  unsigned char A;
  int Word;
  int Tags;
  Line = &Worka.Line;
  Cc = &Worka.Cc;
  A = &Worka.A;
  Tags = &Worka.Tags;
  Word = &Worka.Word;
  Nnames = Worka.Nnames;
  Dsize = 8 * Nnames;
  Arsize = 1024 * Worka.Wkfilek - (Worka.Ccsize + 256);
  Imax = (-1) >> 1;
  int Downptr[32 /*0:31*/];
  int Sfs[32 /*0:31*/];
  unsigned char Lettf[(Dsize + 20) + 1];
  unsigned char Lett;
  unsigned char Tline[2048 /*0:2047*/];
  const unsigned char Ilett[533 /*0:532*/] = {
      11,  'S', 'E', 'L', 'E', 'C', 'T', 'I', 'N', 'P', 'U', 'T', 12,  'S', 'E',
      'L', 'E', 'C', 'T', 'O', 'U', 'T', 'P', 'U', 'T', 7,   'N', 'E', 'W', 'L',
      'I', 'N', 'E', 5,   'S', 'P', 'A', 'C', 'E', 10,  'S', 'K', 'I', 'P', 'S',
      'Y', 'M', 'B', 'O', 'L', 10,  'R', 'E', 'A', 'D', 'S', 'T', 'R', 'I', 'N',
      'G', 8,   'N', 'E', 'W', 'L', 'I', 'N', 'E', 'S', 6,   'S', 'P', 'A', 'C',
      'E', 'S', 10,  'N', 'E', 'X', 'T', 'S', 'Y', 'M', 'B', 'O', 'L', 11,  'P',
      'R', 'I', 'N', 'T', 'S', 'Y', 'M', 'B', 'O', 'L', 10,  'R', 'E', 'A', 'D',
      'S', 'Y', 'M', 'B', 'O', 'L', 4,   'R', 'E', 'A', 'D', 5,   'W', 'R', 'I',
      'T', 'E', 7,   'N', 'E', 'W', 'P', 'A', 'G', 'E', 4,   'A', 'D', 'D', 'R',
      6,   'A', 'R', 'C', 'S', 'I', 'N', 3,   'I', 'N', 'T', 5,   'I', 'N', 'T',
      'P', 'T', 6,   'F', 'R', 'A', 'C', 'P', 'T', 5,   'P', 'R', 'I', 'N', 'T',
      7,   'P', 'R', 'I', 'N', 'T', 'F', 'L', 4,   'R', 'E', 'A', 'L', 7,   'I',
      'N', 'T', 'E', 'G', 'E', 'R', 3,   'M', 'O', 'D', 6,   'A', 'R', 'C', 'C',
      'O', 'S', 4,   'S', 'Q', 'R', 'T', 3,   'L', 'O', 'G', 3,   'S', 'I', 'N',
      3,   'C', 'O', 'S', 3,   'T', 'A', 'N', 3,   'E', 'X', 'P', 11,  'C', 'L',
      'O', 'S', 'E', 'S', 'T', 'R', 'E', 'A', 'M', 11,  'B', 'Y', 'T', 'E', 'I',
      'N', 'T', 'E', 'G', 'E', 'R', 8,   'E', 'V', 'E', 'N', 'T', 'I', 'N', 'F',
      6,   'R', 'A', 'D', 'I', 'U', 'S', 6,   'A', 'R', 'C', 'T', 'A', 'N', 6,
      'L', 'E', 'N', 'G', 'T', 'H', 11,  'P', 'R', 'I', 'N', 'T', 'S', 'T', 'R',
      'I', 'N', 'G', 2,   'N', 'L', 8,   'L', 'O', 'N', 'G', 'R', 'E', 'A', 'L',
      7,   'P', 'R', 'I', 'N', 'T', 'C', 'H', 6,   'R', 'E', 'A', 'D', 'C', 'H',
      6,   'S', 'T', 'R', 'I', 'N', 'G', 8,   'R', 'E', 'A', 'D', 'I', 'T', 'E',
      'M', 8,   'N', 'E', 'X', 'T', 'I', 'T', 'E', 'M', 6,   'C', 'H', 'A', 'R',
      'N', 'O', 8,   'T', 'O', 'S', 'T', 'R', 'I', 'N', 'G', 9,   'S', 'U', 'B',
      'S', 'T', 'R', 'I', 'N', 'G', 6,   'R', 'E', 'C', 'O', 'R', 'D', 5,   'A',
      'R', 'R', 'A', 'Y', 6,   'S', 'I', 'Z', 'E', 'O', 'F', 4,   'I', 'M', 'O',
      'D', 2,   'P', 'I', 9,   'E', 'V', 'E', 'N', 'T', 'L', 'I', 'N', 'E', 11,
      'L', 'O', 'N', 'G', 'I', 'N', 'T', 'E', 'G', 'E', 'R', 12,  'L', 'O', 'N',
      'G', 'L', 'O', 'N', 'G', 'R', 'E', 'A', 'L', 9,   'L', 'E', 'N', 'G', 'T',
      'H', 'E', 'N', 'I', 9,   'L', 'E', 'N', 'G', 'T', 'H', 'E', 'N', 'R', 8,
      'S', 'H', 'O', 'R', 'T', 'E', 'N', 'I', 8,   'S', 'H', 'O', 'R', 'T', 'E',
      'N', 'R', 6,   'N', 'E', 'X', 'T', 'C', 'H', 11,  'H', 'A', 'L', 'F', 'I',
      'N', 'T', 'E', 'G', 'E', 'R', 8,   'P', 'P', 'R', 'O', 'F', 'I', 'L', 'E',
      5,   'F', 'L', 'O', 'A', 'T', 4,   'L', 'I', 'N', 'T', 6,   'L', 'I', 'N',
      'T', 'P', 'T', 12,  'S', 'H', 'O', 'R', 'T', 'I', 'N', 'T', 'E', 'G', 'E',
      'R', 5,   'T', 'R', 'U', 'N', 'C', 255};
  unsigned char Inbuffm[4096 /*0:4095*/];
  static unsigned char Inbuf;
  static int Inptr = 4095;
  static int Dataad;
  Lett = &Array(Addr(A(Arsize - Dsize - 20)), Lettf);
  Arsize = Arsize - Dsize - 300;
  Dataad = Malloc(4096);
  Inbuf = &Array(Dataad, Inbuffm);
  Lett(0) = 0;
  Level = 0;
  Worka.Lett = &Lett;
  for (I = 0; I <= Maxlevels; I++) Sfs(I) = 0;
  for (I = 0; I <= Nnames; I++) {
    Word(I) = 0;
    Tags(I) = 0;
  }
  Fileaddr = Worka.Fileaddr;
  Idepth = 0;
  Ihead = 0;
  if (Fileaddr != 0) {
    Hdr = Record(Fileaddr);
    Source = &Array(Fileaddr, Srcef);
    Fileptr = Hdr->Startra;
    Fileend = Hdr->Endra;
  }
  Parm.Opt = 1;
  Parm.Arr = 1;
  Parm.Line = 1;
  Parm.Trace = 1;
  Parm.Diag = 1;
  Parm.Chk = 1;
  I = Parm.Bits1;
  if ((I & 4) == 4) Parm.Diag = 0;
  if ((I & 0x800000) != 0) Parm.Line = 0;
  if ((I & 16) == 16) Parm.Chk = 0;
  Parm.Map = 1;
  Parm.List = (I >> 1 & 1) ^ 1;
  if ((I & 32) == 32) Parm.Arr = 0;
  Parm.Prof = I >> 7 & 1;
  if (Parm.Map != 0) Parm.Prof = 0;
  Parm.Dynamic = I >> 20 & 1;
  Parm.Let = I >> 13 & 1;
  Parm.Dcomp = I >> 14 & 1;
  Parm.Dbug = I >> 18 & 1;
  Parm.Quotes = I & 1;
  if ((I & 64) == 64) {
    Parm.Trace = 0;
    Parm.Diag = 0;
  }
  Parm.X = I >> 28 & 1;
  Parm.Y = I >> 27 & 1;
  Parm.Z = I >> 26 & 1;
  Parm.Stack = I >> 3 & 1;
  if ((I & (1 << 16)) != 0) {
    Parm.Arr = 0;
    Parm.Opt = 0;
    Parm.Line = 0;
    Parm.Chk = 0;
    Parm.Diag = 0;
  }
  Parm.Trace = Parm.Trace | Parm.Opt;
  Newlines(3);
  Spaces(4);
  Printstring(_imp_str_literal("/* EPC Imp to C Translation "));
  Printstring(_imp_str_literal("Release"));
  Write(Worka.Release, 1);
  Printstring(_imp_join(_imp_str_literal(" Version "),
                        _imp_join(Worka.Ladate, _imp_str_literal(" */"))));
  Newlines(3);
  Printstring(_imp_str_literal("#include \"imptoc.h\"\n"));
  {
    Tagf Sntag;
    Cptr = 0;
    Snum = 0;
    Strlink = 0;
    K = 0;
#if 1 /* Host / 10<=1 */
    Next = 1;
#else
    Next = 2;
#endif
    I = Ilett(0);
    while (I < 255) {
      for (J = I; J >= 1; J--) Cc(J) = Ilett(K + J) | 32;
      Cc(I + 1) = ';';
      R = 2;
      Q = 1;
      Pname(1);
      Sntag = 0;
      Sntag.Uioj = 0x8000;
      Jj = Tsname(Snum);
      if ((Jj & 0xC000) != 0x4000) {
        Sntag.Ptype = Snpt;
        Sntag.Acc = Jj;
        Sntag.Slink = Snum;
      } else {
        Sntag.Ptype = Jj;
        Sntag.S2 = Preconsts(Cptr);
        Sntag.S3 = Preconsts(Cptr + 1);
        Cptr = Cptr + 2;
      }
      Push(Tags(Lastname), Sntag.S1, Sntag.S2, Sntag.S3);
      Snum = Snum + 1;
      K = K + I + 1;
      I = Ilett(K);
      if (Snum > Noofsns) break;
    }
  }
  Line = 0;
  Llength = 0;
  Q = 1;
  R = 1;
  Level = 1;
  for (;;) {
    Curlinead = Fileaddr + Fileptr;
    if (Q >= Llength) {
      Qmax = 1;
      Readline(0, 0);
    }
    if (Llength == -1) break;
    Starstart = R;
    R = R + 3;
    A(R) = *Line >> 8;
    A(R + 1) = *Line & 255;
    R = R + 2;
    Movebytes(4, Addr(Curlinead), 0, Addr(A(0)), R);
    R = R + 4;
    if (Compare(Ss) == 0) {
      Fault(100, Q, Qmax << 16 | Llength);
      R = Starstart;
      while (Cc(Q) != ';' && Q < Llength) Q = Q + 1;
      Q = Q + 1;
    } else {
      if (R > Arsize) Fault(102, Worka.Wkfilek, 0);
      I = R - Starstart;
      A(Starstart) = I >> 16;
      A(Starstart + 1) = I >> 8 & 255;
      A(Starstart + 2) = I & 255;
      if (Parm.Z != 0) {
        Newline();
        Write(*Line, 5);
        Write(Starstart, 5);
        Newline();
        J = 0;
        for (I = Starstart; I <= R - 1; I++) {
          Write(A(I), 5);
          J = J + 1;
          if (J >= 20) {
            Newline();
            J = 0;
          }
        }
        Newline();
      }
      if (A(Starstart + 9) == Endalt && 1 <= A(Starstart + 10) &&
          A(Starstart + 10) <= 2) {
        if (Ihead == 0) break;
        Llength = Oldsource;
        R = Starstart;
        Llength = 1;
        continue;
      }
      if (Level == 0) {
        Fault(14, 0, 0);
        R = Starstart;
        Level = 1;
      }
    }
  }
  while (Sfs(1) != 0) {
    Pop(Sfs(1), I, J, K);
    if (I == 1) Fault(53, K, 0);
    if (I == 2) Fault(13, K, 0);
  }
  for (I = R; I <= R + 7; I++) A(I) = 0;
  R = R + 8;
  R = (R + 7) & (-8);
  Worka.Dictbase = R;
  Movebytes(Next + 1, Addr(Lett(0)), 0, Addr(A(0)), R);
  Worka.Lett = &Array(Addr(A(R)), Srcef);
  R = R + Next + 1;
  if (Level > 1) Fault(15, Level - 1, 0);
  R = (R + 7) & (-8);
  Newline();
  if (Parm.Faulty == 0)
    Free(Dataad);
  else
    Printstring(_imp_str_literal("C GENERATION NOT ATTEMPTED\n"));
  return (R);
  void Newsource(int Newfileaddr) {
    int Filesseen = 0;
    Push(Ihead, Fileaddr, Fileptr, *Line);
    Fileaddr = Newfileaddr;
    Hdr = Record(Fileaddr);
    Source = &Array(Fileaddr, Srcef);
    Fileptr = Hdr->Startra;
    Fileend = Hdr->Endra;
    Idepth = Idepth + 1;
    Filesseen = Filesseen + 1;
    if (Parm.Map != 0) Line = 18000 + 2000 * Filesseen;
  }
  int Oldsource(void) {
    int Altline;
    if (Ihead != 0) {
      Pop(Ihead, Fileaddr, Fileptr, Altline);
      if (Fileaddr != 0) {
        Hdr = Record(Fileaddr);
        Fileend = Hdr->Endra;
        Source = &Array(Fileaddr, Srcef);
      }
      if (Parm.Map != 0) Line = Altline;
      Idepth = Idepth - 1;
      return (1);
    } else
      return (0);
  }
  void Readline(int Mode, int Char) {
    int Getline(void);
    int Del;
    int Ll;
    int Lp;
    int Prev;
    int Lastc;
    int Pprev;
    int Lastns;
    int I;
    int J;
    Ll = 0;
    Lp = 0;
    Prev = 0;
    Q = 1;
    Llength = 0;
    Del = 0;
    Lastc = -1;
  Next:;
    Lp = Lp + 1;
    if (Lp > Ll) Lp = Getline;
    if (Lp == 0) {
      Llength = -1;
      return;
    }
    I = Tline(Lp);
    if (Mode == 0) {
      while (I == '{') do {
          Prev = I;
          Lp = Lp + 1;
          I = Tline(Lp);
        } while (Prev == '}' || I == Nl);
      while (I == '/' && Tline(Lp + 1) == '*') do {
          Pprev = Prev;
          Prev = I;
          Lp = Lp + 1;
          I = Tline(Lp);
        } while (I == Nl || (Prev == '/' && Pprev == '*'));
      if (I == '%') {
        Del = 128;
        goto Next;
      }
      if ('A' <= I && I <= 'Z')
        I = I | Del;
      else if ('a' <= I && I <= 'z')
        if (Del != 0)
          I = (I - 32) | Del;
        else {
          Del = 0;
        }
      Llength = Llength + 1;
      Cc(Llength) = I;
      if (I == '\'' || I == 34) {
        Mode = 1;
        Char = I;
      }
    } else {
      Llength = Llength + 1;
      Cc(Llength) = I;
      if (I == Char) Mode = 0;
    }
    if (I != Nl) goto Next;
    J = Llength;
    Lastns = Cc(Llength - 1);
    while (Lastns == ' ') {
      J = J - 1;
      Lastns = Cc(J - 1);
    }
    if (Llength - 1 == Lastc) {
      Llength = Lastc;
      goto Next;
    }
    if (Lastns == 'C' + 128) {
      Cc(J - 1) = ' ';
      Llength = Llength - 1;
      Lastc = Llength;
      goto Next;
    }
    if (Mode == 0 && Lastns == '\\') {
      Cc(Llength) = 13;
      Lastc = Llength;
      goto Next;
    }
    if (Mode == 0 && Lastns == ',') {
      Llength = Llength - 1;
      Lastc = Llength;
      goto Next;
    }
    if (Llength > Worka.Ccsize) Fault(101, 0, 0);
    return;
    int Getline(void) {
      extern int Srcid;
      const unsigned char Itoi[256 /*0:255*/] = {[0 ... 9] = 32,
                                                 10,
                                                 [11 ... 24] = 32,
                                                 25,
                                                 26,
                                                 [27 ... 31] = 32,
                                                 32,
                                                 33,
                                                 34,
                                                 35,
                                                 36,
                                                 37,
                                                 38,
                                                 39,
                                                 40,
                                                 41,
                                                 42,
                                                 43,
                                                 44,
                                                 45,
                                                 46,
                                                 47,
                                                 48,
                                                 49,
                                                 50,
                                                 51,
                                                 52,
                                                 53,
                                                 54,
                                                 55,
                                                 56,
                                                 57,
                                                 58,
                                                 59,
                                                 60,
                                                 61,
                                                 62,
                                                 63,
                                                 64,
                                                 65,
                                                 66,
                                                 67,
                                                 68,
                                                 69,
                                                 70,
                                                 71,
                                                 72,
                                                 73,
                                                 74,
                                                 75,
                                                 76,
                                                 77,
                                                 78,
                                                 79,
                                                 80,
                                                 81,
                                                 82,
                                                 83,
                                                 84,
                                                 85,
                                                 86,
                                                 87,
                                                 88,
                                                 89,
                                                 90,
                                                 91,
                                                 92,
                                                 93,
                                                 94,
                                                 95,
                                                 96,
                                                 97,
                                                 98,
                                                 99,
                                                 100,
                                                 101,
                                                 102,
                                                 103,
                                                 104,
                                                 105,
                                                 106,
                                                 107,
                                                 108,
                                                 109,
                                                 110,
                                                 111,
                                                 112,
                                                 113,
                                                 114,
                                                 115,
                                                 116,
                                                 117,
                                                 118,
                                                 119,
                                                 120,
                                                 121,
                                                 122,
                                                 123,
                                                 124,
                                                 125,
                                                 126,
                                                 32,
                                                 [128 ... 132] = 26,
                                                 10,
                                                 [134 ... 143] = 26,
                                                 [144 ... 159] = 26,
                                                 [160 ... 173] = 26,
                                                 92,
                                                 38,
                                                 [176 ... 186] = 26,
                                                 35,
                                                 [188 ... 191] = 26,
                                                 [192 ... 207] = 26,
                                                 [208 ... 216] = 26,
                                                 35,
                                                 [218 ... 222] = 26,
                                                 94,
                                                 [224 ... 255] = 26};
      int K;
      Ll = 0;
      if (Fileaddr == 0) {
        do {
          Inptr = Inptr + 1;
          if (Inptr == 4096) {
            K = Fileread(Srcid, Addr(Inbuf(0)), 4096);
            Inptr = 0;
          }
          K = Inbuf(Inptr);
          Tline(Ll + 1) = Itoi(K);
          Ll = Ll + 1;
        } while (K != Nl);
        Curlinead = 0;
      } else {
        if (Fileptr >= Fileend) {
          if (Oldsource == 0) return (0);
          return (Getline);
        }
        do {
          K = Source(Fileptr);
          Fileptr = Fileptr + 1;
          Tline(Ll + 1) = Itoi(K);
          Ll = Ll + 1;
        } while (K != Nl && K != 0);
      }
      while (Ll > 1 && Tline(Ll - 1) == ' ') {
        Tline(Ll - 1) = Tline(Ll);
        Ll = Ll - 1;
      }
      Line = *Line + 1;
      if (Parm.List != 0) {
        if (Mode == 0 && Llength > 0)
          Printstring(_imp_str_literal("     C"));
        else
          Write(*Line, 5);
        if (Mode != 0)
          Printstring(_imp_str_literal("\"       "));
        else
          Spaces(8);
        if (Host == Accent || Ll > 255)
          for (K = 1; K <= Ll; K++) Printsymbol(Tline(K));
        else {
          Tline(0) = Ll;
          Printstring(*String(Addr(Tline(0))));
        }
      }
      return (1);
    }
  }
  int Nextnonspace(void) {
    int I;
    I = Cc(Q);
    while (I == ' ') {
      Q = Q + 1;
      I = Cc(Q);
    }
    return (I);
  }
  int Compare(int P) {
    int I;
    int J;
    int Item;
    int Ra;
    int Rl;
    int Rp;
    int Rq;
    int Rr;
    int Rs;
    int Marker;
    int Ssl;
    int Alt;
    int Pp;
    int Nbochar;
    static int Savecomp;
    static int Bip_sw;
    static void *Bip[45 /*999:1043*/] = {
        &&Bip_999,  &&Bip_1000, &&Bip_1001, &&Bip_1002, &&Bip_1003, &&Bip_1004,
        &&Bip_1005, &&Bip_1006, &&Bip_1007, &&Bip_1008, &&Bip_1009, &&Bip_1010,
        &&Bip_1011, &&Bip_1012, &&Bip_1013, &&Bip_1014, &&Bip_1015, &&Bip_1016,
        &&Bip_1017, &&Bip_1018, &&Bip_1019, &&Bip_1020, &&Bip_1021, &&Bip_1022,
        &&Bip_1023, &&Bip_1024, &&Bip_1025, &&Bip_1026, &&Bip_1027, &&Bip_1028,
        &&Bip_1029, &&Bip_1030, &&Bip_1031, &&Bip_1032, &&Bip_1033, &&Bip_1034,
        &&Bip_1035, &&Bip_1036, &&Bip_1037, &&Bip_1038, &&Bip_1039, &&Bip_1040,
        &&Bip_1041, &&Bip_1042, &&Bip_1043,
    };
    Rp = Symbol(P);
    Rl = Level;
    P = P + 1;
    Pp = P;
  Comm:;
    Rq = Q;
    Rr = R;
    Ssl = Strlink;
    Alt = 1;
    Ra = Symbol(P);
    Rs = P;
  Upr:
    R = R + 1;
  Succ:;
    Rs = Rs + 1;
    if (Rs == Ra) goto Fini;
    Item = Symbol(Rs);
    if (Item < 999) goto Lit;
    if (Item < 1300) goto *Bip[Bip_sw = (Item)-999];
    if (Compare(Item) == 0) goto Fail;
    goto Succ;
  Lit:;
    I = Nextnonspace;
    if (I != Clett(Item + 1)) goto Fail;
    Q = Q + 1;
    K = Clett(Item) + Item;
    Item = Item + 2;
    while (Item <= K) {
      if (Nextnonspace != Clett(Item)) goto Fail;
      Q = Q + 1;
      Item = Item + 1;
    }
    goto Succ;
  Fail:;
    if (Ra == Rp) goto Tfail;
    if (Q > Qmax) Qmax = Q;
    Q = Rq;
    R = Rr + 1;
    Strlink = Ssl;
    Alt = Alt + 1;
    Rs = Ra;
    Ra = Symbol(Ra);
    goto Succ;
  Tfail:;
    Level = Rl;
    return (0);
  Bip_999:;
    A(Rr) = Alt;
    P = Pp;
    goto Comm;
  Bip_1000:
  Fini:;
    A(Rr) = Alt;
    return (1);
  Bip_1001:;
    I = Nextnonspace;
    if (Trtab(I) != 2) goto Fail;
    Pname(Item - 1004);
    if (Hit == 1) goto Succ;
    goto Fail;
  Bip_1002:;
  Bip_1003:;
    Evalconst(Item - 1003);
    if (Hit == 0) goto Fail;
    goto Succ;
  Bip_1004:;
    A(R) = 1;
    R = R + 1;
    goto Succ;
  Bip_1005:;
    I = Nextnonspace;
    if ('0' > I || I > '9') goto Fail;
    S = 0;
    while ('0' <= I && I <= '9') {
      S = 10 * S + (I & 15);
      Q = Q + 1;
      I = Nextnonspace;
    }
    A(R) = S >> 8;
    A(R + 1) = S & 255;
    R = R + 2;
    goto Succ;
  Bip_1006:;
    I = Nextnonspace;
    A(R) = I;
    R = R + 1;
    if (I == Nl) goto Succ;
    if (I != ';') goto Fail;
    Q = Q + 1;
    goto Succ;
  Bip_1007:;
    I = Nextnonspace;
    if (I == '#') {
      A(R) = 1;
      R = R + 1;
      Q = Q + 1;
      goto Comfound;
    }
    if (I == '!') {
      A(R) = 2;
      R = R + 1;
      Q = Q + 1;
      goto Comfound;
    }
    if (I != 'C' + 128 || Cc(Q + 1) != 'O' + 128 || Cc(Q + 2) != Cc(Q + 3) ||
        Cc(Q + 3) != 'M' + 128 || Cc(Q + 4) != 'E' + 128)
      goto Fail;
    if (Cc(Q + 5) != 'N' + 128 || Cc(Q + 6) != 'T' + 128) goto Fail;
    Q = Q + 7;
    A(R) = 3;
    R = R + 1;
  Comfound:;
    J = Cc(Q);
    for (;;) {
      A(R) = J;
      R = R + 1;
      if (J == Nl) break;
      Q = Q + 1;
      J = Cc(Q);
    }
    goto Succ;
  Bip_1008:;
    goto Succ;
  Bip_1009:;
    I = Nextnonspace;
    if ('0' > I || I > '9') goto Fail;
    S = 0;
    while ('0' <= I && I <= '9') {
      S = 10 * S + (I & 15);
      Q = Q + 1;
      I = Nextnonspace;
    }
    if (0 > S || S > 255) goto Fail;
    A(R) = S;
    goto Upr;
  Bip_1010:;
    Marker = R;
    R = R + 2;
    goto Succ;
  Bip_1011:;
    I = R - Marker;
    A(Marker + 1) = I;
    A(Marker) = I >> 8;
    goto Succ;
  Bip_1012:;
    I = Nextnonspace;
    while (I == Nl) {
      if (Llength == -1) Fault(110, 0, 0);
      Readline(0, 0);
      Rq = 1;
      I = Nextnonspace;
    }
    if (R > Arsize) Fault(102, Worka.Wkfilek, 0);
    goto Succ;
  Bip_1013:;
    Texttext(0);
    if (Hit == 0) goto Fail;
    goto Succ;
  Bip_1014:;
    A(R) = 2;
    A(R + 1) = 2;
    R = R + 2;
    goto Succ;
  Bip_1015:;
    if (Level > 1) A(Downptr(Level)) = 1;
    Level = Level + 1;
    Sfs(Level) = 0;
    Downptr(Level) = R;
    goto Succ;
  Bip_1016:;
    while (Sfs(Level) != 0) {
      Pop(Sfs(Level), I, J, K);
      if (I == 1) Fault(53, K, 0);
      if (I == 2) Fault(13, K, 0);
    }
    Level = Level - 1;
    goto Succ;
  Bip_1017:;
    Parm.List = 1;
    goto Succ;
  Bip_1018:;
    Parm.List = 0;
    goto Succ;
  Bip_1019:;
    if (Cc(Q - 1) != ':') goto Fail;
    goto Succ;
  Bip_1020:;
    goto Succ;
  Bip_1021:;
    Parm.Trace = 1;
    goto Succ;
  Bip_1022:;
    I = Nextnonspace;
    J = 0;
    Nem = _imp_str_literal("123456789abcdef");
    while ('A' <= I && I <= 'Z' || '0' <= I && I <= '9') {
      J = J + 1;
      if (J >= 15) goto Fail;
      Charno(Nem, J) = I;
      Q = Q + 1;
      I = Nextnonspace;
    }
    if (J <= 0) goto Fail;
    Length(Nem) = J;
    if (I == '_') Q = Q + 1;
    goto Succ;
  Bip_1023:;
    if ((Target == Pnx || Target == Accent || Target == Drs || Target == Wwc ||
         Target == Perq3) &&
        Cc(Q - 1) == '_')
      goto Fail;
    for (I = 0; I <= Firstucub - 1; I++)
      if (Nem == Qcodes(I)) goto Pfnd;
    goto Fail;
  Pfnd:;
    J = Opc(I);
    A(R) = J >> 8;
    A(R + 1) = J;
    R = R + 2;
    goto Succ;
  Bip_1024:;
    for (I = Firstucub; I <= Firstucsb - 1; I++)
      if (Nem == Qcodes(I)) goto Pfnd;
    goto Fail;
  Bip_1025:;
    for (I = Firstucsb; I <= Firstucw - 1; I++)
      if (Nem == Qcodes(I)) goto Pfnd;
    goto Fail;
  Bip_1026:;
    I = Nextnonspace;
    if (32 >= I || I >= 127 ||
        (0x80000000 >> ((I - 32) & 31) & 0x4237000A) == 0)
      goto Fail;
    Q = Q + 1;
    if (I == '+') {
      A(R) = 1;
      goto Upr;
    }
    if (I == '-') {
      A(R) = 2;
      goto Upr;
    }
    if (I == '&') {
      A(R) = 3;
      goto Upr;
    }
    J = Nextnonspace;
    if (I == '*') {
      if (J != I) {
        A(R) = 6;
        goto Upr;
      }
      if (Cc(Q + 1) == I && I == Cc(Q + 2)) {
        A(R) = 4;
        Q = Q + 3;
        goto Upr;
      }
      A(R) = 5;
      Q = Q + 1;
      goto Upr;
    }
    if (I == '/') {
      if (J != I) {
        A(R) = 10;
        goto Upr;
      }
      A(R) = 9;
      Q = Q + 1;
      goto Upr;
    }
    if (I == '!') {
      if (J != I) {
        A(R) = 8;
        goto Upr;
      }
      A(R) = 7;
      Q = Q + 1;
      goto Upr;
    }
    if (I == '.') {
      A(R) = 13;
      goto Upr;
    }
    if (I == J && J == '<') {
      A(R) = 12;
      Q = Q + 1;
      goto Upr;
    }
    if (I == J && J == '>') {
      A(R) = 11;
      Q = Q + 1;
      goto Upr;
    }
    if (I == '\\') {
      if (J != I) {
        A(R) = 15;
        goto Upr;
      }
      Q = Q + 1;
      A(R) = 14;
      goto Upr;
    }
    goto Fail;
  Bip_1027:;
    I = Nextnonspace;
    if (Trtab(I) == 2 || I == '-') goto Succ;
    if ((0x80000000 >> (I & 31) & 0x14043000) != 0) goto Succ;
    goto Fail;
  Bip_1028:;
    I = Nextnonspace;
    if (I == '\\' || I == 0x7E) {
      A(R) = 3;
      Q = Q + 1;
      goto Upr;
    }
    if (I == '-') {
      A(R) = 2;
      Q = Q + 1;
      goto Upr;
    }
    if (I == '+') {
      A(R) = 1;
      Q = Q + 1;
      goto Upr;
    }
    A(R) = 4;
    goto Upr;
  Bip_1029:;
    A(R) = 0;
    A(R + 1) = 0;
    A(R + 2) = 0;
    A(R + 3) = 0;
    Push(Sfs(Level), 2, R, *Line);
    R = R + 4;
    goto Succ;
  Bip_1030:;
    I = Nextnonspace;
    if (I == ')') goto Fail;
    if (I == ',') Q = Q + 1;
    goto Succ;
  Bip_1031:;
    I = Nextnonspace;
    if (I <= 128 || (0x80000000 >> (I & 31) & 0x20C83000) == 0 ||
        (0x80000000 >> (Cc(Q + 2) & 31) & 0x500B2800) == 0)
      goto Fail;
    goto Succ;
  Bip_1032:;
  Bip_1037:;
    I = Nextnonspace;
    if (32 >= I || I > 92 || (0x80000000 >> (I & 31) & 0x1004000E) == 0)
      goto Fail;
    Q = Q + 1;
    Nbochar = Nextnonspace;
    if (I == '=') {
      if (Nbochar == I) {
        J = 9;
        goto Join1;
      }
      J = 1;
      goto Join;
    }
    if (I == '#') {
      if (Nbochar == I) {
        J = 10;
        goto Join1;
      }
      J = 4;
      goto Join;
    }
    if (I == '\\' && Nbochar == '=') {
      Q = Q + 1;
      if (Nextnonspace == '=') {
        J = 10;
        goto Join1;
      }
      J = 4;
      goto Join;
    }
    if (I == '>') {
      if (Nbochar == '=') {
        J = 2;
        goto Join1;
      }
      J = 3;
      goto Join;
    }
    if (I == '<') {
      if (Nbochar == '>') {
        J = 4;
        goto Join1;
      }
      if (Nbochar == '=') {
        J = 5;
        goto Join1;
      }
      J = 6;
      goto Join;
    }
    if (I == '-' && Nbochar == '>') {
      J = 8;
      goto Join1;
    }
    goto Fail;
  Join1:
    Q = Q + 1;
  Join:;
    A(R) = J;
    if (Item == 1032) {
      Savecomp = J;
      goto Upr;
    }
    if (Savecomp > 6 || J > 6) {
      Q = Q - 1;
      goto Fail;
    }
    goto Upr;
  Bip_1033:;
    I = Nextnonspace;
    Q = Q + 1;
    Nbochar = Nextnonspace;
    if (I == '=') {
      if (Nbochar == '=') {
        A(R) = 1;
        Q = Q + 1;
        goto Upr;
      }
      A(R) = 2;
      goto Upr;
    }
    if (I == '<' && Nbochar == '-') {
      A(R) = 3;
      Q = Q + 1;
      goto Upr;
    }
    if (I == '-' && Nbochar == '>') {
      A(R) = 4;
      Q = Q + 1;
      goto Upr;
    }
    goto Fail;
  Bip_1034:;
    A(R) = 0;
    A(R + 1) = 0;
    A(R + 2) = 0;
    A(R + 3) = 0;
    Push(Sfs(Level), 1, R, *Line);
    R = R + 4;
    goto Succ;
  Bip_1035:;
    if (Sfs(Level) == 0) {
      Fault(51, 0, 0);
      goto Succ;
    }
    Pop(Sfs(Level), I, J, K);
    if (I == 2) Fault(59, K, 0);
    Movebytes(4, Addr(Starstart), 0, Addr(A(0)), J);
    goto Succ;
  Bip_1036:;
    if (Sfs(Level) == 0) {
      Fault(1, 0, 0);
      goto Succ;
    }
    Pop(Sfs(Level), I, J, K);
    if (I == 1) Fault(52, K, 0);
    Movebytes(4, Addr(Starstart), 0, Addr(A(0)), J);
    goto Succ;
  Bip_1038:;
    if (Idepth > 10) goto Fail;
    I = Nextnonspace;
    if (I != Nl && I != ';') goto Fail;
    if (I == ';') Q = Q + 1;
    if (Ctype != 5 || (Host == Emas && A(S) > 31)) goto Fail;

    {
      _imp_string255 Fname;
      extern void Consource(_imp_string255 Filename, int Fileaddr);
      Length(Fname) = A(S);
      for (I = 1; I <= A(S); I++) Charno(Fname, I) = A(S + I);
#if 0 /* Host==Vax */
if ( !_imp_cond_resolve(Fname, NULL, _imp_str_literal("."), NULL)) Fname = _imp_join(Fname,_imp_str_literal(".INC"));
#endif
      Consource(Fname, J);
      Newsource(J);
    }
    goto Succ;
  Bip_1039:;
    for (I = Firstucw; I <= Firstucubub - 1; I++)
      if (Nem == Qcodes(I)) goto Pfnd;
    goto Fail;
  Bip_1040:;
    for (I = Firstucubub; I <= Firstucubw - 1; I++)
      if (Nem == Qcodes(I)) goto Pfnd;
    goto Fail;
  Bip_1041:;
    for (I = Firstucubw; I <= Firstucjump - 1; I++)
      if (Nem == Qcodes(I)) goto Pfnd;
    goto Fail;
  Bip_1042:;
    for (I = Firstucjump; I <= Lastuc; I++)
      if (Nem == Qcodes(I)) goto Pfnd;
    goto Fail;
  Bip_1043:;
    I = Nextnonspace;
    for (;;) {
      Q = Q + 1;
      if (I == Nl || I == ';') break;
      I = Nextnonspace;
    }
    goto Succ;
  }
  void Pname(int Mode) {
    const int Hash[8 /*0:7*/] = {71, 47, 97, 79, 29, 37, 53, 59};
    int Jj;
    int Kk;
    int Ll;
    int Fq;
    int Fs;
    int T;
    int S;
    int I;
    Hit = 0;
    Fq = Q;
    Fs = Nextnonspace;
    Q = Q + 1;
    if (Trtab(Fs) != 2 || '"' == Nextnonspace || Nextnonspace == '\'') return;
    if (Parm.Quotes == 0) Fs = Fs | 32;
    T = 1;
    Lett(Next + 1) = Fs;
    Jj = 71 * Fs;
    Q = Q - 1;
    for (;;) {
      Q = Q + 1;
      I = Nextnonspace;
      if (Trtab(I) == 0) break;
      if (Parm.Quotes == 0) I = I | 32;
      if (T <= 7) Jj = Jj + Hash(T) * I;
      T = T + 1;
      Lett(Next + T) = I;
    }
    Lett(Next) = T;
    S = T + 1;
    if (Next + S > Dsize) Fault(103, 0, 0);
    Jj = (Jj + 113 * T) & Nnames;
    for (Kk = Jj; Kk <= Nnames; Kk++) {
      Ll = Word(Kk);
      if (Ll == 0) goto Hole;
      if (*String(Addr(Lett(Next))) == *String(Addr(Lett(Ll)))) goto Fnd;
    }
    for (Kk = 0; Kk <= Jj; Kk++) {
      Ll = Word(Kk);
      if (Ll == 0) goto Hole;
      if (*String(Addr(Lett(Next))) == *String(Addr(Lett(Ll)))) goto Fnd;
    }
    Fault(104, 0, 0);
  Hole:
    if (Mode == 0) {
      Q = Fq;
      return;
    }
    Word(Kk) = Next;
#if 1 /* Host / 10<=1 */
    Next = Next + S;
#else
    Next = (Next + S + 1) & (-2);
#endif
  Fnd:
    Lastat = Fq;
    Hit = 1;
    Lastname = Kk;
    A(R + 1) = Lastname;
    A(R) = Lastname >> 8;
    R = R + 2;
    Lastend = Q;
  }
  void Evalconst(int Mode) {
    const unsigned char Rshift[33 /*0:32*/] = {
        0, 0, 1, 0, 2, [5 ... 7] = 0, 3, [9 ... 15] = 0, 4, [17 ... 31] = 0, 5};
    int Z;
    int Dotseen;
    int Ebcdic;
    int Fs;
    int Cprec;
    int Rr;
    int S;
    int Ss;
    int T;
    int Rs;
    int J;
    int Nbochar;
    int Qq;
    int Hexformat;
    int Rhexpat[4 /*0:3*/];
    const int Powerl = 75;
#if 0 /* (1<<Host & Llrealavail)!=0 */
{
#if 0 /* (1<<Host & Ibmfpformat)!=0 */
{ const int Powerll =  -78;const long double Powers[154 /*-78:75*/] =  {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
 }
#else
{ const int Powerll = 0;const long double Powers[76 /*0:75*/] =  {
1,10, 1@2, 1@3, 1@4, 1@5, 1@6, 1@7,
                               1@8, 1@9, 1@10, 1@11, 1@12, 1@13, 1@14, 1@15,
                               1@16, 1@17, 1@18, 1@19, 1@20, 1@21, 1@22, 1@23,
                               1@24, 1@25, 1@26, 1@27, 1@28, 1@29, 1@30, 1@31,
                               1@32, 1@33, 1@34, 1@35, 1@36, 1@37, 1@38, 1@39,
                               1@40, 1@41, 1@42, 1@43, 1@44, 1@45, 1@46, 1@47,
                               1@48, 1@49, 1@50, 1@51, 1@52, 1@53, 1@54, 1@55,
                               1@56, 1@57, 1@58, 1@59, 1@60, 1@61, 1@62, 1@63,
                               1@64, 1@65, 1@66, 1@67, 1@68, 1@69, 1@70, 1@71,
                               1@72, 1@73, 1@74, 1@75
};
 }
#endif
long double X;long double Dvalue;long double Cvalue;long double Dummy;const long double Ten = 10; }
#else
    {
      double X;
      double Dvalue;
      double Cvalue;
      double Dummy;
      const int Powerll = 0;
      const double Powers[76 /*0:75*/] = {
        1,
        10,
        1 @2,
        1 @3,
        1 @4,
        1 @5,
        1 @6,
        1 @7,
        1 @8,
        1 @9,
        1 @10,
        1 @11,
        1 @12,
        1 @13,
        1 @14,
        1 @15,
        1 @16,
        1 @17,
        1 @18,
        1 @19,
        1 @20,
        1 @21,
        1 @22,
        1 @23,
        1 @24,
        1 @25,
        1 @26,
        1 @27,
        1 @28,
        1 @29,
        1 @30,
        1 @31,
        1 @32,
        1 @33,
        1 @34,
        1 @35,
        1 @36,
        1 @37,
        1 @38,
        1 @39,
        1 @40,
        1 @41,
        1 @42,
        1 @43,
        1 @44,
        1 @45,
        1 @46,
        1 @47,
        1 @48,
        1 @49,
        1 @50,
        1 @51,
        1 @52,
        1 @53,
        1 @54,
        1 @55,
        1 @56,
        1 @57,
        1 @58,
        1 @59,
        1 @60,
        1 @61,
        1 @62,
        1 @63,
        1 @64,
        1 @65,
        1 @66,
        1 @67,
        1 @68,
        1 @69,
        1 @70,
        1 @71,
        1 @72,
        1 @73,
        1 @74,
        1 @75
      };
      const double Ten = 10;
    }
#endif
    double Cvaluep;
#if 0 /* (1<<Host & Lintavail)!=0 */
long long int Radixv;
#else
    int Radixv;
#endif
    if (_imp_on_event(1, 2)) {
      Hit = 0;
      Hexformat = 0;
      return;
    }
    Cprec = 5;
    Rr = R;
    R = R + 1;
    Dotseen = 0;
    Hit = 0;
    Hexformat = 0;
    Cvalue = 0;
    Dummy = 0;
    X = 0;
    Fs = Nextnonspace;
    Qq = Q;
    Q = Q + 1;
    Nbochar = Nextnonspace;
    Q = Qq;
    S = 0;
    if ('0' <= Fs && Fs <= '9') goto N;
    if (Fs == '.' && Mode == 0 && '0' <= Nbochar && Nbochar <= '9') goto Dot;
    Ctype = 1;
    Ebcdic = 0;
    if (Fs == '\'') goto Quote;
    if (Fs == 34) goto Str2;
    if (Nbochar != '\'') goto Notquote;
    Q = Q + 2;
    if (Fs == 'X' || Fs == 'x') goto Hex;
    if (Fs == 'M' || Fs == 'm') goto Mult;
    if (Fs == 'B' || Fs == 'b') goto Bin;
    if ((Fs == 'R' || Fs == 'H' || Fs == 'r' || Fs == 'h') && Mode == 0)
      goto Rhex;
    if (Fs == 'K' || Fs == 'k') goto Oct;
    if (Fs == 'C' || Fs == 'c') {
      Ebcdic = 1;
      goto Mult;
    }
    if ((Fs == 'D' || Fs == 'd') && Mode == 0) {
      Cprec = 7;
      if ('0' <= Nextnonspace && Nextnonspace <= '9') goto N;
      if (Nextnonspace == '.') goto Dot;
    }
    Q = Q - 2;
    return;
  Quote:;
    Hexformat = 8;
    Cprec = 3;
    Q = Q + 1;
    S = Cc(Q);
    Q = Q + 1;
    if (S == Nl) {
      Readline(1, '\'');
      if (Llength == -1) Fault(110, 0, 0);
      Q = 1;
    }
    if (Nextnonspace == '\'') {
      Q = Q + 1;
      if (S != '\'') goto Iend;
      if (Nextnonspace == '\'') {
        Q = Q + 1;
        goto Iend;
      }
    }
    return;
  Notquote:;
    if (Fs != 'E' || Nbochar != '"') return;
    Ebcdic = 1;
    Q = Q + 1;
  Str2:;
    A(Rr) = 0x35;
    Texttext(Ebcdic);
    Ctype = 5;
    return;
  Hex:
    T = 0;
    Hexformat = 8;
    for (;;) {
      I = Nextnonspace;
      Q = Q + 1;
      if (I == '\'') break;
      T = T + 1;
      if ((('0' > I || I > '9') && ('A' > I || I > 'F') &&
           ('a' > I || I > 'f')) ||
          T >= 17)
        return;
      if (T == 9) {
        Ss = S;
        S = 0;
      }
      S = (S << 4) + (I & 15) + 9 * (I >> 6);
    }
    if (T > 8) {
      Z = 4 * (T - 8);
      if (Z != 32) {
        S = S | (Ss << Z);
        Ss = Ss >> (32 - Z);
      }
      Cprec = 6;
    }
  Iend:;
    if (Cprec == 6) {
#if 1 /* (1<<Host & Wordswopped)!=0 */
      {
        Movebytes(4, Addr(Ss), 0, Addr(A(0)), R + 4);
        Movebytes(4, Addr(S), 0, Addr(A(0)), R);
      }
#else
      {
        Movebytes(4, Addr(Ss), 0, Addr(A(0)), R);
        Movebytes(4, Addr(S), 0, Addr(A(0)), R + 4);
      }
#endif
      R = R + 8;
    } else if (Cprec == 3 || Cprec == 4 ||
               (Cprec == 5 && 0 <= S && S <= 0x7FFF)) {
      if (Cprec == 5) Cprec = 4;
      A(R) = S >> 8;
      A(R + 1) = S & 255;
      R = R + 2;
    } else {
      Movebytes(4, Addr(S), 0, Addr(A(0)), R);
      R = R + 4;
    }
    if (Mode == 0 || Cprec != 6) Hit = 1;
    A(Rr) = Cprec << 4 | Ctype | Hexformat;
    return;
  Rhex:;
    T = 0;
    for (;;) {
      I = Nextnonspace;
      Q = Q + 1;
      if ((T & 7) == 0 && T != 0) {
        Rhexpat(T / 8 - 1) = S;
        S = 0;
      }
      if (I == '\'') break;
      T = T + 1;
      if (('0' > I || I > '9') && ('A' > I || I > 'F') && ('a' > I || I > 'f'))
        return;
      S = (S << 4) + (I & 15) + 9 * (I >> 6);
    }
    if (T != 8 && T != 16 && T != 32) return;
    if (T == 32)
      Cprec = 7;
    else
      Cprec = 4 + T / 8;
    A(Rr) = Cprec << 4 | 2;
    if (Host != Target &&
        (Ibmfpformat >> Host & 1) != (Ibmfpformat >> Target & 1) && Fs == 'R')
      A(Rr) = A(Rr) | 8;
    T = T / 8 - 1;
    for (I = 0; I <= T; I++) {
#if 1 /* (1<<Host & Wordswopped)!=0 */
      J = 4 * (T - I);
#else
      J = 4 * I;
#endif
      Movebytes(4, Addr(Rhexpat(0)), J, Addr(A(0)), R);
      R = R + 4;
    }
    Hit = 1;
    return;
  Oct:;
    Hexformat = 8;
    T = 0;
    for (;;) {
      I = Nextnonspace;
      Q = Q + 1;
      T = T + 1;
      if (I == '\'') break;
      if ('0' > I || I > '7' || T >= 12) return;
      S = S << 3 | (I & 7);
    }
    goto Iend;
  Mult:
    T = 0;
    for (;;) {
      I = Cc(Q);
      Q = Q + 1;
      T = T + 1;
      if (I == '\'')
        if (Nextnonspace != '\'')
          break;
        else
          Q = Q + 1;
      if (T >= 5) return;
      if (Ebcdic != 0) I = Itoetab(I);
      S = S << 8 | I;
    }
    goto Iend;
  Bin:
    T = 0;
    Hexformat = 8;
    for (;;) {
      I = Nextnonspace;
      Q = Q + 1;
      T = T + 1;
      if (I == '\'') break;
      if ('0' > I || I > '1' || T >= 33) return;
      S = S << 1 | I & 1;
    }
    goto Iend;
  Radix:;
    Hexformat = 8;
    T = 0;
    Radixv = 0;
    Rs = Rshift(S);
    Q = Q + 1;
    for (;;) {
      I = Nextnonspace;
      if (('0' > I || I > '9') && ('A' > I || I > 'Z') && ('a' > I || I > 'z'))
        break;
      if (I <= '9')
        I = I - '0';
      else
        I = (I & 15) + 9;
      if (I >= S) break;
      Q = Q + 1;
      if (Rs != 0) {
        Radixv = (Radixv << Rs) + I;
        T = T + Rs;
      } else {
        Radixv = Radixv * S + I;
        T = T + 1;
      }
    }
    if (T == 0 || ((1 << Target & Lintavail) == 0 && Rs > 0 && T > Maxibits))
      return;
#if 0 /* (1<<Host & Lintavail)!=0 */
Ss = Radixv>>32;
#else
    Ss = 0;
#endif
    S = Radixv;
    Ctype = 1;
    if (Ss != 0) Cprec = 6;
    goto Iend;
  N:;
    I = Nextnonspace;
    do {
      Cvalue = Ten * Cvalue + (I & 15);
      Q = Q + 1;
      I = Nextnonspace;
    } while (I >= '0' && I <= '9');
    if (I == '_' && 2 <= Cvalue && Cvalue < 33) {
      S = Int(Cvalue);
      goto Radix;
    }
    if (Mode != 0 || I != '.') goto Alpha;
  Dot:
    Q = Q + 1;
    I = Nextnonspace;
    Dotseen = 1;
    Dvalue = 0;
    S = 0;
    while ('0' <= I && I <= '9') {
      Dvalue = Ten * Dvalue + (I & 15);
      S = S + 1;
      Q = Q + 1;
      I = Nextnonspace;
    }
    Cvalue = Cvalue + (Dvalue / Powers(S));
  Alpha:;
    if (Mode == 0 && Nextnonspace == '@') {
      Q = Q + 1;
      X = Cvalue;
      Z = 1;
      I = Nextnonspace;
      if (I == '-') Z = -1;
      if (I == '+' || I == '-') Q = Q + 1;
      Evalconst(2);
      if (Hit == 0) return;
      Hit = 0;
      Dotseen = 1;
      R = Rr + 1;
      if (A(R) >> 4 != 4) return;
      S = (A(R + 1) << 8 | A(R + 2)) * Z;
      if (S == -99)
        Cvalue = 0;
      else if (Powerll <= S && S <= Powerl)
        Cvalue = Cvalue * Powers(S);
      else if (Imod(S) <= Powerl)
        Cvalue = Cvalue / Powers(-S);
      else {
#if 0 /* (1<<Target & Llrealavail)!=0 */
Cprec = 7;
#endif
        while (S > 0) {
          S = S - 1;
          Cvalue = Cvalue * Ten;
        }
        while (S < 0 && Cvalue != 0) {
          S = S + 1;
          Cvalue = Cvalue / Ten;
        }
      }
    }
    if (Fs == 'D') {
      I = Nextnonspace;
      if (I == '\'')
        Q = Q + 1;
      else
        return;
      Dotseen = 1;
    }
    if ((1 << Host & Lintavail) != 0 && (1 << Target & Lintavail) != 0 &&
        Dotseen == 0 && Cvalue > Imax) {
      Radixv = Lint(Cvalue);
      Ss = Radixv >> 32;
      S = Radixv;
      Cprec = 6;
      goto Iend;
    }
    if (Dotseen == 1 || Cvalue > Imax)
      Ctype = 2;
    else {
      Ctype = 1;
      S = Int(Cvalue);
    }
    if (Ctype == 1) goto Iend;
    if (Cprec == 5) Cprec = 6;
    if (Cprec == 6) {
      Cvaluep = Cvalue;
      Movebytes(8, Addr(Cvaluep), 0, Addr(A(0)), R);
      R = R + 8;
    } else {
      Movebytes(16, Addr(Cvalue), 0, Addr(A(0)), R);
      R = R + 16;
    }
    A(Rr) = (Cprec << 4) + Ctype;
    Hit = 1;
  }
  void Texttext(int Ebcdic) {
    int J;
    int Ii;
    const int Qu = '"';
    I = Nextnonspace;
    S = R;
    R = R + 1;
    Hit = 0;
    if (I != Qu) return;
    Q = Q + 1;
    for (;;) {
      I = Cc(Q);
      if (Ebcdic != 0)
        Ii = Itoetab(I);
      else
        Ii = I;
      A(R) = Ii;
      R = R + 1;
      if (I == Qu) {
        Q = Q + 1;
        if (Nextnonspace != Qu) break;
      }
      if (I == 10) {
        Readline(1, Qu);
        if (Llength == -1) Fault(110, 0, 0);
      } else
        Q = Q + 1;
      if (R - S > 256) Fault(106, 0, 0);
    }
    R = R - 1;
    J = R - S - 1;
    A(S) = J;
    Hit = 1;
  }
}
