         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %external %routine %spec close output
     2  %external %routine %spec close input
     3  %external %routine %spec open output(%integer i, %string(255) s)
     4  %external %routine %spec open input(%integer i, %string(255) s)
     5  %recordformat impcomfm(%integer statements, flags, code, gla, diags, perm,
     6+                         %string(31) file,
     7+                         %string(63) Option)
     8  %externalrecord(impcomfm) IMPCOM
     9  
    10  !
    11  !            On EMAS all shorts should be changed to integers.
    12  !            Also, the INCLUDE facility will need to be modified.
    13  !
    14  !
    15           !###################################################
    16           !            Copyright: 1 January 1980             #
    17           !     Interactive Datasystems (Edinburgh) Ltd.     #
    18           !              32 Upper Gilmore Place              #
    19           !                Edinburgh EH3 9NJ                 #
    20           !               All Rights Reserved                #
    21           !###################################################
    22  
    23  %BEGIN
 0000 C8 00 00 01                           ENTER 0000,1
    24     %CONSTSTRING(4) version = "8.4"
    25  
    26     !configuration parameters
    27  
    28     %CONSTINTEGER max int      = ((-1)>>1)//10
    29     %CONSTINTEGER max dig      = (-1)>>1-maxint*10
    30     %CONSTINTEGER byte size    = 8;            !bits per byte
    31     %CONSTINTEGER max tag      = 800;          !max no. of tags
    32     %CONSTINTEGER max dict     = 6000;         !max extent of dictionary
    33     %CONSTINTEGER name bits    = 11
    34     %CONSTINTEGER max names    = 1<<namebits-1
    35     %OWNINTEGER   spare names  = max names
    36     %CONSTINTEGER max grammar  = 1720
    37     %CONSTINTEGER lit max      = 50;           !max no. of constants/stat.
    38     %CONSTINTEGER rec size     = 520;          !size of analysis record
    39     %CONSTINTEGER dim limit    = 6;            !maximum array dimension
    40  
    41     !symbols
    42  
    43     %CONSTINTEGER ff     = 12;              !form feed
    44     %CONSTINTEGER marker = '^';             !marker for faults
    45     %CONSTINTEGER squote = '"';             !string quote
    46     %CONSTINTEGER cquote = '''';            !character quote
    47  
    48     !streams
    49  
    50     %CONSTINTEGER source = 1; ! input streams
    51     ! 2 is for prims
    52     ! 3 is for include files
    53     %CONSTINTEGER report = 0, object = 1, listing = 2;! output streams
    54  
    55  
    56     !types
    57  
    58     %CONSTINTEGER integer = 1
    59     %CONSTINTEGER real    = 2
    60     %CONSTINTEGER stringv = 3
    61     %CONSTINTEGER record  = 4
    62  
    63     !forms
    64  
    65     %CONSTINTEGER iform = integer<<4+1
    66  
    67     %CONSTINTEGER var = 91
    68     %CONSTINTEGER const   = 93
    69     %CONSTINTEGER swit    = 105
    70     %CONSTINTEGER comment = 22
    71     %CONSTINTEGER termin  = 20
    72     %CONSTINTEGER lab     = 3
    73     %CONSTINTEGER jump    = 54
    74  
    75     %CONSTINTEGER recfm = 4
    76     %CONSTINTEGER proc  = 7;                     !class for proc
    77  
    78     !phrase entries
    79  
    80     %CONSTINTEGER escdec   = 252
    81     %CONSTINTEGER escproc  = 253
    82     %CONSTINTEGER escarray = 254
    83     %CONSTINTEGER escrec   = 255
    84  
    85     %RECORDFORMAT arfm(%SHORTINTEGER class,sub,link,ptype,papp,pformat,x,pos);!imp77:
    86  !emas:%RECORDFORMAT arfm(%INTEGER class,sub,link,ptype,papp,pformat,x,pos)
    87  
    88     %RECORDFORMAT tagfm(%INTEGER app, format, %C
    89+                        %SHORTINTEGER flags, index, text, link)
    90  
    91     !flags
    92  
    93  !      *===.===.===.===.===.====.====.====.===.======.======*
    94  !      ! u ! c ! c ! p ! s ! a  ! o  ! pr ! s ! type ! form !
    95  !      ! 1 ! 1 ! 1 ! 1 ! 1 ! 1  ! 1  ! 1  ! 1 !  3   !  4   !
    96  !      *===^===^===^===^===^====^====^====^===^======^======*
    97  !        u   c   c   p   s   a    o    p    s    t      f
    98  !        s   l   o   a   u   n    w    r    p    y      o
    99  !        e   o   n   r   b   a    n    o    e    p      r
   100  !        d   s   s   a   n   m         t    c    e      m
   101  !            e   t   m   a   e     
   102  !            d       s   m
   103  !                        e
   104  !
   105  !                             
   106  
   107     %CONSTINTEGER used bit   = b'1000000000000000',
   108+                  closed     = b'0100000000000000',
   109+                  const bit  = b'0010000000000000',
   110+                  parameters = b'0001000000000000',
   111+                  subname    = b'0000100000000000',
   112+                  aname      = b'0000010000000000',
   113+                  own bit    = b'0000001000000000',
   114+                  prot       = b'0000000100000000',
   115+                  spec       = b'0000000010000000'
   116  
   117     %CONSTINTEGER trans bit  = x'4000'
   118     %CONSTINTEGER error      = x'8000'
   119  
   120     %CONSTINTEGER manifest = 120, figurative = 130
   121     %CONSTINTEGER actions  = 180, phrasal    = 200
   122  
   123     %CONSTBYTEINTEGERARRAY amap(0:15) = %C
   124+  89, 91, 92, 104, 94, const, swit, 100, 101, 102, 103, 106, 107, 108, 109, 89
   125  !?   v   n   l    fm  const  swit  rp   fp   mp   pp   a    an   na   nan  ?
   126  
   127     %CONSTBYTEINTEGERARRAY atoms(0:15) = 89, 1, 1, 10,  9,  1, 10,  7,
   128+                                          7, 7, 7,  4,  1,  4,  1, 89
   129  
   130     %RECORD(arfm)%ARRAY ar(1:rec size)
 0004 C7 45 EC 01 00 00 00                  MOV DWORD PTR [%EBP-20],#1
 000B C7 45 F0 01 00 00 00                  MOV DWORD PTR [%EBP-16],#1
 0012 C7 45 F4 08 02 00 00                  MOV DWORD PTR [%EBP-12],#520
 0019 C7 45 F8 09 02 00 00                  MOV DWORD PTR [%EBP-8],#521
 0020 8D 45 EC                              LEA %EAX,[%EBP-20]
 0023 50                                    PUSH %EAX
 0024 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0027 83 C4 04                              ADD %ESP,#4
 002A 8D 4D EC                              LEA %ECX,[%EBP-20]
 002D 89 E3                                 MOV %EBX,%ESP
 002F 29 D3                                 SUB %EBX,%EDX
 0031 89 5D E4                              MOV [%EBP-28],%EBX
 0034 89 4D E8                              MOV [%EBP-24],%ECX
 0037 01 C3                                 ADD %EBX,%EAX
 0039 89 DC                                 MOV %ESP,%EBX
   131  
   132     %OWNINTEGER class        = 0;             !class of atom wanted
   133     %OWNINTEGER x            = 0;             !usually last tag
   134     %OWNINTEGER atom1        = 0;             !atom class (major)
   135     %OWNINTEGER atom2        = 0;             !atom class (minor)
   136     %OWNINTEGER subatom      = 0;             !extra info about atom
   137     %OWNINTEGER type         = 0,
   138+                app          = 0,
   139+                format       = 0;             !atom info
   140     %INTEGER hash value
   141     %OWNINTEGER faulty       = 0;             !fault indicator
   142     %OWNINTEGER fault rate   = 0;             !fault rate count
   143     %OWNINTEGER lines        = 0;             !current line number
   144     %OWNINTEGER text line    = 0;             !starting line for string const
   145     %OWNINTEGER margin       = 0;             !statement start margin
   146     %OWNINTEGER error margin = 0,
   147+                error sym    = 0,
   148+                column       = 0
   149     %OWNINTEGER stats        = 0;             !statements compiled
   150     %OWNINTEGER mon pos      = 0;             !flag for diagnose
   151     %OWNINTEGER sym          = nl;            !current input symbol
   152     %OWNINTEGER symtype      = 0;             !type of current symbol
   153     %OWNINTEGER quote        = 0;             !>0 strings, <0 chars
   154     %owninteger end mark     = 0;             !%end flag
   155     %OWNINTEGER cont         = ' ',
   156+                csym         = ' ';           !listing continuation marker
   157     %OWNINTEGER decl         = 0;             !current declarator flags
   158     %OWNINTEGER dim          = 0;             !arrayname dimension
   159     %OWNINTEGER spec given   = 0
   160  
   161     %OWNINTEGER escape class = 0;             !when and where to escape
   162     %OWNINTEGER protection   = 0,
   163+                atom flags   = 0
   164     %OWNINTEGER otype        = 0;             !current 'own' type
   165     %OWNINTEGER reals ln     = 1;             ! =4 for %REALSLONG
   166     %OWNINTEGER last1        = 0;             !previous atom class
   167     %OWNINTEGER gen type     = 0
   168     %OWNINTEGER ptype        = 0;             !current phrase type
   169     %OWNINTEGER papp         = 0;             !current phrase parameters
   170     %OWNINTEGER pformat      = 0;             !current phrase format
   171     %OWNINTEGER force        = 0;             !force next ptype
   172     %OWNINTEGER g            = 0,
   173+                gg           = 0,
   174+                map gg       = 0;             !grammar entries
   175     %OWNINTEGER fdef         = 0;             !current format definition
   176     %OWNINTEGER this         = -1;            !current recordformat tag
   177     %OWNINTEGER nmin         = 0;             !analysis record atom pointer
   178     %OWNINTEGER nmax         = 0;             !analysis record phrase pointer
   179     %OWNINTEGER rbase        = 0;             !record format definition base
   180     %OWNINTEGER stbase       = 0;             !constant work area base
   181     %OWNINTEGER gmin         = max grammar;   !upper bound on grammar
   182     %OWNINTEGER dmax         = 1
   183     %OWNINTEGER tmin         = max tag;       !upper bound on tags
   184     %OWNINTEGER ss           = 0;             !source statement entry
   185     %STRING(63) include file
   186     %OWNINTEGER include list = 0,
   187+                include level= 0
   188     %OWNINTEGER include      = 0;                 !=0 unused, #0 being used
   189     %OWNINTEGER perm         = 1;             !1 = compiling perm, 0 = program
   190     %OWNINTEGER progmode     = 0;             !-1 = file, 1 = begin/eop
   191     %OWNINTEGER sstype       = 0;             !-1:exec stat
   192                                               ! 0: declaration
   193                                               ! 1: block in
   194                                               ! 2: block out
   195     %OWNINTEGER spec mode    = 0;             !>=0: definition
   196                                               ! -1: proc spec
   197                                               ! -2: recordformat
   198     %OWNINTEGER ocount       = -1;            !own constants wanted
   199     %OWNINTEGER limit        = 0;             !lookup limit
   200     %OWNINTEGER copy         = 0;             !duplicate name flag
   201     %OWNINTEGER order        = 0;             !out of sequence flag
   202     %OWNINTEGER for warn     = 0;             !non-local flag
   203     %OWNINTEGER dubious      = 0;             !flag for dubious statements
   204     %OWNINTEGER dp           = 1
   205     %OWNINTEGER pos1         = 0,
   206+                pos2         = 0;             !error position
   207     %OWNINTEGER pos          = 0;             !input line index
   208     %OWNINTEGER dimension    = 0;             !current array dimension
   209     %OWNINTEGER local        = 0;             !search limit for locals
   210     %OWNINTEGER fm base      = 0;             !entry for format decls
   211     %OWNINTEGER search base  = 0;             !entry for record_names
   212     %OWNINTEGER format list  = 0;             !size of current format list
   213     %INTEGER recid
   214     %OWNBYTEINTEGERARRAY char(0:133) = nl(134);  !input line
   215     %INTEGERARRAY lit pool(0:lit max)
 003B C7 45 8C 01 00 00 00                  MOV DWORD PTR [%EBP-116],#1
 0042 C7 45 90 00 00 00 00                  MOV DWORD PTR [%EBP-112],#0
 0049 C7 45 94 32 00 00 00                  MOV DWORD PTR [%EBP-108],#50
 0050 C7 45 98 83 00 00 00                  MOV DWORD PTR [%EBP-104],#131
 0057 8D 45 8C                              LEA %EAX,[%EBP-116]
 005A 50                                    PUSH %EAX
 005B E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 005E 83 C4 04                              ADD %ESP,#4
 0061 8D 4D 8C                              LEA %ECX,[%EBP-116]
 0064 89 E3                                 MOV %EBX,%ESP
 0066 29 D3                                 SUB %EBX,%EDX
 0068 89 5D 84                              MOV [%EBP-124],%EBX
 006B 89 4D 88                              MOV [%EBP-120],%ECX
 006E 01 C3                                 ADD %EBX,%EAX
 0070 89 DC                                 MOV %ESP,%EBX
   216     %OWNINTEGER lit          = 0;             !current literal (integer)
   217     %OWNINTEGER lp           = 0;             !literals pointer
   218     %OWNINTEGER block x      = 0;             !block tag
   219     %OWNINTEGER list         = 1;             !<= to enable
   220     %OWNINTEGER control      = 0
   221     %OWNINTEGER diag         = 0;             !diagnose flags
   222     %SHORTINTEGERARRAY hash(0:max names)
 0072 C7 85 74 FF FF FF 01 00 00 00         MOV DWORD PTR [%EBP-140],#1
 007C C7 85 78 FF FF FF 00 00 00 00         MOV DWORD PTR [%EBP-136],#0
 0086 C7 85 7C FF FF FF FF 07 00 00         MOV DWORD PTR [%EBP-132],#2047
 0090 C7 85 80 FF FF FF 4D 00 00 00         MOV DWORD PTR [%EBP-128],#77
 009A 8D 85 74 FF FF FF                     LEA %EAX,[%EBP-140]
 00A0 50                                    PUSH %EAX
 00A1 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 00A4 83 C4 04                              ADD %ESP,#4
 00A7 8D 8D 74 FF FF FF                     LEA %ECX,[%EBP-140]
 00AD 89 E3                                 MOV %EBX,%ESP
 00AF 29 D3                                 SUB %EBX,%EDX
 00B1 89 9D 6C FF FF FF                     MOV [%EBP-148],%EBX
 00B7 89 8D 70 FF FF FF                     MOV [%EBP-144],%ECX
 00BD 01 C3                                 ADD %EBX,%EAX
 00BF 81 E3 FC FF FF FF                     AND %EBX,#-4
 00C5 89 DC                                 MOV %ESP,%EBX
   223     %RECORD(tagfm)%ARRAY tag(0:max tag)
 00C7 C7 85 5C FF FF FF 01 00 00 00         MOV DWORD PTR [%EBP-164],#1
 00D1 C7 85 60 FF FF FF 00 00 00 00         MOV DWORD PTR [%EBP-160],#0
 00DB C7 85 64 FF FF FF 20 03 00 00         MOV DWORD PTR [%EBP-156],#800
 00E5 C7 85 68 FF FF FF 09 02 00 00         MOV DWORD PTR [%EBP-152],#521
 00EF 8D 85 5C FF FF FF                     LEA %EAX,[%EBP-164]
 00F5 50                                    PUSH %EAX
 00F6 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 00F9 83 C4 04                              ADD %ESP,#4
 00FC 8D 8D 5C FF FF FF                     LEA %ECX,[%EBP-164]
 0102 89 E3                                 MOV %EBX,%ESP
 0104 29 D3                                 SUB %EBX,%EDX
 0106 89 9D 54 FF FF FF                     MOV [%EBP-172],%EBX
 010C 89 8D 58 FF FF FF                     MOV [%EBP-168],%ECX
 0112 01 C3                                 ADD %EBX,%EAX
 0114 89 DC                                 MOV %ESP,%EBX
   224     %SHORTINTEGERARRAY dict(1:max dict)
 0116 C7 85 44 FF FF FF 01 00 00 00         MOV DWORD PTR [%EBP-188],#1
 0120 C7 85 48 FF FF FF 01 00 00 00         MOV DWORD PTR [%EBP-184],#1
 012A C7 85 4C FF FF FF 70 17 00 00         MOV DWORD PTR [%EBP-180],#6000
 0134 C7 85 50 FF FF FF 4D 00 00 00         MOV DWORD PTR [%EBP-176],#77
 013E 8D 85 44 FF FF FF                     LEA %EAX,[%EBP-188]
 0144 50                                    PUSH %EAX
 0145 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0148 83 C4 04                              ADD %ESP,#4
 014B 8D 8D 44 FF FF FF                     LEA %ECX,[%EBP-188]
 0151 89 E3                                 MOV %EBX,%ESP
 0153 29 D3                                 SUB %EBX,%EDX
 0155 89 9D 3C FF FF FF                     MOV [%EBP-196],%EBX
 015B 89 8D 40 FF FF FF                     MOV [%EBP-192],%ECX
 0161 01 C3                                 ADD %EBX,%EAX
 0163 81 E3 FC FF FF FF                     AND %EBX,#-4
 0169 89 DC                                 MOV %ESP,%EBX
   225     %BYTEINTEGERARRAY buff(1:512)
 016B C7 85 2C FF FF FF 01 00 00 00         MOV DWORD PTR [%EBP-212],#1
 0175 C7 85 30 FF FF FF 01 00 00 00         MOV DWORD PTR [%EBP-208],#1
 017F C7 85 34 FF FF FF 00 02 00 00         MOV DWORD PTR [%EBP-204],#512
 0189 C7 85 38 FF FF FF 2B 00 00 00         MOV DWORD PTR [%EBP-200],#43
 0193 8D 85 2C FF FF FF                     LEA %EAX,[%EBP-212]
 0199 50                                    PUSH %EAX
 019A E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 019D 83 C4 04                              ADD %ESP,#4
 01A0 8D 8D 2C FF FF FF                     LEA %ECX,[%EBP-212]
 01A6 89 E3                                 MOV %EBX,%ESP
 01A8 29 D3                                 SUB %EBX,%EDX
 01AA 89 9D 24 FF FF FF                     MOV [%EBP-220],%EBX
 01B0 89 8D 28 FF FF FF                     MOV [%EBP-216],%ECX
 01B6 01 C3                                 ADD %EBX,%EAX
 01B8 81 E3 FC FF FF FF                     AND %EBX,#-4
 01BE 89 DC                                 MOV %ESP,%EBX
   226     %OWNINTEGER bp           = 0
   227  
   228  !*** start of generated tables ***
   229     %endoflist
   575  !***  end  of generated tables ***
   576  
   577  %ROUTINE flush buffer
 01C0 EB 00                                 JMP L1001
 01C2                      L1002  EQU $
 01C2 C8 00 00 02                           ENTER 0000,2
   578     %INTEGER j
   579     %IF faulty = 0 %START
 01C6 A1 BC 00 00 00                        MOV %EAX,[DATA+00BC]
 01CB 3D 00 00 00 00                        CMP %EAX,#0
 01D0 75 00                                 JNE L1003
   580        select output(object)
 01D2 6A 01                                 PUSH #1
 01D4 E8 2D 00                              CALL 'SELECTOUTPUT' (EXTERN 45)
 01D7 83 C4 04                              ADD %ESP,#4
   581        %FOR j = 1, 1, bp %CYCLE
 01DA A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 01DF 89 45 F0                              MOV [%EBP-16],%EAX
 01E2 C7 45 F4 00 00 00 00                  MOV DWORD PTR [%EBP-12],#0
 01E9                      L1004  EQU $
 01E9 8B 45 F4                              MOV %EAX,[%EBP-12]
 01EC 3B 45 F0                              CMP %EAX,[%EBP-16]
 01EF 74 00                                 JE L1005
 01F1 40                                    INC %EAX
 01F2 89 45 F4                              MOV [%EBP-12],%EAX
   582           printsymbol(buff(j))
 01F5 FF 75 F4                              PUSH DWORD PTR [%EBP-12]
 01F8 8B 75 FC                              MOV %ESI,[%EBP-4]
 01FB FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 0201 89 75 EC                              MOV [%EBP-20],%ESI
 0204 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0207 83 C4 08                              ADD %ESP,#8
 020A 89 C7                                 MOV %EDI,%EAX
 020C 8B 5D EC                              MOV %EBX,[%EBP-20]
 020F 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 0215 31 C0                                 XOR %EAX,%EAX
 0217 8A 07                                 MOV %AL,[%EDI]
 0219 50                                    PUSH %EAX
 021A E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 021D 83 C4 04                              ADD %ESP,#4
   583        %REPEAT
 0220 EB 00                                 JMP L1004
 0222                      L1005  EQU $
   584        select output(listing)
 0222 6A 02                                 PUSH #2
 0224 E8 2D 00                              CALL 'SELECTOUTPUT' (EXTERN 45)
 0227 83 C4 04                              ADD %ESP,#4
   585     %FINISH
 022A                      L1003  EQU $
   586     bp = 0
 022A C7 05 60 02 00 00 00 00 00 00         MOV DWORD PTR [DATA+0260],#0
   587  %END
 0234 C9                                    LEAVE
 0235 C3                                    RET
 0236                      L1001  EQU $
   588  %ROUTINE print ident(%INTEGER p, mode)
   589     %INTEGER j, ad
 0236                      L1006  EQU $
 0236 C8 00 00 02                           ENTER 0000,2
   590     p = tag(p)_text
 023A FF 75 0C                              PUSH DWORD PTR [%EBP+12]
 023D 8B 75 FC                              MOV %ESI,[%EBP-4]
 0240 FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 0246 89 75 EC                              MOV [%EBP-20],%ESI
 0249 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 024C 83 C4 08                              ADD %ESP,#8
 024F 89 C7                                 MOV %EDI,%EAX
 0251 8B 5D EC                              MOV %EBX,[%EBP-20]
 0254 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 025A 0F BF 47 0C                           MOVSX %EAX,[%EDI+12]
 025E 89 45 0C                              MOV [%EBP+12],%EAX
   591     %IF p = 0 %START
 0261 8B 45 0C                              MOV %EAX,[%EBP+12]
 0264 3D 00 00 00 00                        CMP %EAX,#0
 0269 75 00                                 JNE L1007
   592        bp = bp+1 %AND buff(bp) = '?' %if Mode # 0
 026B 8B 45 08                              MOV %EAX,[%EBP+8]
 026E 3D 00 00 00 00                        CMP %EAX,#0
 0273 74 00                                 JE L1008
 0275 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 027B FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 0281 8B 75 FC                              MOV %ESI,[%EBP-4]
 0284 FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 028A 89 75 E8                              MOV [%EBP-24],%ESI
 028D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0290 83 C4 08                              ADD %ESP,#8
 0293 89 C7                                 MOV %EDI,%EAX
 0295 8B 5D E8                              MOV %EBX,[%EBP-24]
 0298 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 029E C6 07 3F                              MOV BYTE PTR [%EDI],#63
 02A1                      L1008  EQU $
   593        %RETURN
 02A1 C9                                    LEAVE
 02A2 C3                                    RET
   594     %FINISH
 02A3                      L1007  EQU $
   595     ad = addr(dict(p+1))
 02A3 8B 45 0C                              MOV %EAX,[%EBP+12]
 02A6 40                                    INC %EAX
 02A7 50                                    PUSH %EAX
 02A8 8B 75 FC                              MOV %ESI,[%EBP-4]
 02AB FF B6 40 FF FF FF                     PUSH DWORD PTR [%ESI-192]
 02B1 89 75 E4                              MOV [%EBP-28],%ESI
 02B4 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 02B7 83 C4 08                              ADD %ESP,#8
 02BA 89 C7                                 MOV %EDI,%EAX
 02BC 8B 5D E4                              MOV %EBX,[%EBP-28]
 02BF 03 BB 3C FF FF FF                     ADD %EDI,[%EBX-196]
 02C5 89 7D F0                              MOV [%EBP-16],%EDI
   596     %IF mode = 0 %THEN printstring(string(ad)) %ELSE %START
 02C8 8B 45 08                              MOV %EAX,[%EBP+8]
 02CB 3D 00 00 00 00                        CMP %EAX,#0
 02D0 75 00                                 JNE L1009
 02D2 81 EC 00 01 00 00                     SUB %ESP,#256
 02D8 89 E0                                 MOV %EAX,%ESP
 02DA 50                                    PUSH %EAX
 02DB 8B 45 F0                              MOV %EAX,[%EBP-16]
 02DE 50                                    PUSH %EAX
 02DF 68 FF 00 00 00                        PUSH #255
 02E4 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 02E7 83 C4 0C                              ADD %ESP,#12
 02EA E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 02ED 81 C4 00 01 00 00                     ADD %ESP,#256
 02F3 EB 00                                 JMP L1010
 02F5                      L1009  EQU $
   597        %FOR j = ad+1, 1, ad+byteinteger(ad) %CYCLE
 02F5 8B 45 F0                              MOV %EAX,[%EBP-16]
 02F8 8B 75 F0                              MOV %ESI,[%EBP-16]
 02FB 31 C9                                 XOR %ECX,%ECX
 02FD 8A 0E                                 MOV %CL,[%ESI]
 02FF 01 C8                                 ADD %EAX,%ECX
 0301 8B 4D F0                              MOV %ECX,[%EBP-16]
 0304 41                                    INC %ECX
 0305 89 45 E0                              MOV [%EBP-32],%EAX
 0308 49                                    DEC %ECX
 0309 89 4D F4                              MOV [%EBP-12],%ECX
 030C                      L1011  EQU $
 030C 8B 45 F4                              MOV %EAX,[%EBP-12]
 030F 3B 45 E0                              CMP %EAX,[%EBP-32]
 0312 74 00                                 JE L1012
 0314 40                                    INC %EAX
 0315 89 45 F4                              MOV [%EBP-12],%EAX
   598           bp = bp+1
 0318 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
   599           buff(bp) = byteinteger(j)
 031E FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 0324 8B 7D FC                              MOV %EDI,[%EBP-4]
 0327 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 032D 89 7D DC                              MOV [%EBP-36],%EDI
 0330 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0333 83 C4 08                              ADD %ESP,#8
 0336 89 C3                                 MOV %EBX,%EAX
 0338 8B 75 DC                              MOV %ESI,[%EBP-36]
 033B 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 0341 8B 7D F4                              MOV %EDI,[%EBP-12]
 0344 8A 07                                 MOV %AL,[%EDI]
 0346 88 03                                 MOV [%EBX],%AL
   600        %REPEAT
 0348 EB 00                                 JMP L1011
 034A                      L1012  EQU $
   601     %FINISH
 034A                      L1010  EQU $
   602  %END
 034A C9                                    LEAVE
 034B C3                                    RET
 034C                      L1001  EQU $
   603  %ROUTINE abandon(%INTEGER n)
   604     %SWITCH reason(0:9)
 034C                      L1013  EQU $
 034C C8 00 00 02                           ENTER 0000,2
   605     %INTEGER stream
   606     stream = listing
 0350 C7 45 F4 02 00 00 00                  MOV DWORD PTR [%EBP-12],#2
   607     %CYCLE
 0357                      L1014  EQU $
   608        newline %IF sym # nl
 0357 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 035C 3D 0A 00 00 00                        CMP %EAX,#10
 0361 74 00                                 JE L1015
 0363 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
 0366                      L1015  EQU $
   609        printsymbol('*');  write(lines,4);  space
 0366 6A 2A                                 PUSH #42
 0368 E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 036B 83 C4 04                              ADD %ESP,#4
 036E FF 35 C4 00 00 00                     PUSH DWORD PTR [DATA+00C4]
 0374 6A 04                                 PUSH #4
 0376 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 0379 83 C4 08                              ADD %ESP,#8
 037C E8 41 00                              CALL 'SPACE' (EXTERN 65)
   610        ->reason(n)
 037F 8B 45 08                              MOV %EAX,[%EBP+8]
 0382 C1 E0 02                              SHL %EAX,#2
 0385 89 C3                                 MOV %EBX,%EAX
 0387 FF A3 00 00 00 00                     JMP DWORD PTR [%EBX+SWTAB]
   611  reason(0):printstring("compiler error!");          ->more
 038D                      L1016  EQU $
 038D 81 EC 00 01 00 00                     SUB %ESP,#256
 0393 89 E0                                 MOV %EAX,%ESP
 0395 50                                    PUSH %EAX
 0396 B8 94 00 00 00                        MOV %EAX,COT+#148
 039B 50                                    PUSH %EAX
 039C 68 FF 00 00 00                        PUSH #255
 03A1 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 03A4 83 C4 0C                              ADD %ESP,#12
 03A7 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 03AA 81 C4 00 01 00 00                     ADD %ESP,#256
 03B0 EB 00                                 JMP L1017
   612  reason(1):printstring("switch vector too large");  ->more
 03B2                      L1018  EQU $
 03B2 81 EC 00 01 00 00                     SUB %ESP,#256
 03B8 89 E0                                 MOV %EAX,%ESP
 03BA 50                                    PUSH %EAX
 03BB B8 A4 00 00 00                        MOV %EAX,COT+#164
 03C0 50                                    PUSH %EAX
 03C1 68 FF 00 00 00                        PUSH #255
 03C6 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 03C9 83 C4 0C                              ADD %ESP,#12
 03CC E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 03CF 81 C4 00 01 00 00                     ADD %ESP,#256
 03D5 EB 00                                 JMP L1017
   613  reason(2):printstring("too many names");           ->more
 03D7                      L1019  EQU $
 03D7 81 EC 00 01 00 00                     SUB %ESP,#256
 03DD 89 E0                                 MOV %EAX,%ESP
 03DF 50                                    PUSH %EAX
 03E0 B8 BC 00 00 00                        MOV %EAX,COT+#188
 03E5 50                                    PUSH %EAX
 03E6 68 FF 00 00 00                        PUSH #255
 03EB E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 03EE 83 C4 0C                              ADD %ESP,#12
 03F1 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 03F4 81 C4 00 01 00 00                     ADD %ESP,#256
 03FA EB 00                                 JMP L1017
   614  reason(3):printstring("program too complex");      ->more
 03FC                      L1020  EQU $
 03FC 81 EC 00 01 00 00                     SUB %ESP,#256
 0402 89 E0                                 MOV %EAX,%ESP
 0404 50                                    PUSH %EAX
 0405 B8 CB 00 00 00                        MOV %EAX,COT+#203
 040A 50                                    PUSH %EAX
 040B 68 FF 00 00 00                        PUSH #255
 0410 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0413 83 C4 0C                              ADD %ESP,#12
 0416 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0419 81 C4 00 01 00 00                     ADD %ESP,#256
 041F EB 00                                 JMP L1017
   615  reason(4):printstring("feature not implemented");  ->more
 0421                      L1021  EQU $
 0421 81 EC 00 01 00 00                     SUB %ESP,#256
 0427 89 E0                                 MOV %EAX,%ESP
 0429 50                                    PUSH %EAX
 042A B8 DF 00 00 00                        MOV %EAX,COT+#223
 042F 50                                    PUSH %EAX
 0430 68 FF 00 00 00                        PUSH #255
 0435 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0438 83 C4 0C                              ADD %ESP,#12
 043B E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 043E 81 C4 00 01 00 00                     ADD %ESP,#256
 0444 EB 00                                 JMP L1017
   616  reason(5):printstring("input ended: ")
 0446                      L1022  EQU $
 0446 81 EC 00 01 00 00                     SUB %ESP,#256
 044C 89 E0                                 MOV %EAX,%ESP
 044E 50                                    PUSH %EAX
 044F B8 F7 00 00 00                        MOV %EAX,COT+#247
 0454 50                                    PUSH %EAX
 0455 68 FF 00 00 00                        PUSH #255
 045A E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 045D 83 C4 0C                              ADD %ESP,#12
 0460 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0463 81 C4 00 01 00 00                     ADD %ESP,#256
   617            %IF quote # 0 %START
 0469 A1 EC 00 00 00                        MOV %EAX,[DATA+00EC]
 046E 3D 00 00 00 00                        CMP %EAX,#0
 0473 74 00                                 JE L1023
   618              %IF quote < 0 %THEN printsymbol(cquote) %C
   619+                           %ELSE printsymbol(squote)
 0475 A1 EC 00 00 00                        MOV %EAX,[DATA+00EC]
 047A 3D 00 00 00 00                        CMP %EAX,#0
 047F 7D 00                                 JGE L1024
 0481 6A 27                                 PUSH #39
 0483 E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 0486 83 C4 04                              ADD %ESP,#4
 0489 EB 00                                 JMP L1025
 048B                      L1024  EQU $
 048B 6A 22                                 PUSH #34
 048D E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 0490 83 C4 04                              ADD %ESP,#4
 0493                      L1025  EQU $
   620            %ELSE
 0493 EB 00                                 JMP L1026
 0495                      L1023  EQU $
   621               printstring("%endof")
 0495 81 EC 00 01 00 00                     SUB %ESP,#256
 049B 89 E0                                 MOV %EAX,%ESP
 049D 50                                    PUSH %EAX
 049E B8 05 01 00 00                        MOV %EAX,COT+#261
 04A3 50                                    PUSH %EAX
 04A4 68 FF 00 00 00                        PUSH #255
 04A9 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 04AC 83 C4 0C                              ADD %ESP,#12
 04AF E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 04B2 81 C4 00 01 00 00                     ADD %ESP,#256
   622               %IF progmode >= 0 %THEN printstring("program") %C
   623+                                %ELSE printstring("file")
 04B8 A1 78 01 00 00                        MOV %EAX,[DATA+0178]
 04BD 3D 00 00 00 00                        CMP %EAX,#0
 04C2 7C 00                                 JL L1027
 04C4 81 EC 00 01 00 00                     SUB %ESP,#256
 04CA 89 E0                                 MOV %EAX,%ESP
 04CC 50                                    PUSH %EAX
 04CD B8 0C 01 00 00                        MOV %EAX,COT+#268
 04D2 50                                    PUSH %EAX
 04D3 68 FF 00 00 00                        PUSH #255
 04D8 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 04DB 83 C4 0C                              ADD %ESP,#12
 04DE E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 04E1 81 C4 00 01 00 00                     ADD %ESP,#256
 04E7 EB 00                                 JMP L1028
 04E9                      L1027  EQU $
 04E9 81 EC 00 01 00 00                     SUB %ESP,#256
 04EF 89 E0                                 MOV %EAX,%ESP
 04F1 50                                    PUSH %EAX
 04F2 B8 14 01 00 00                        MOV %EAX,COT+#276
 04F7 50                                    PUSH %EAX
 04F8 68 FF 00 00 00                        PUSH #255
 04FD E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0500 83 C4 0C                              ADD %ESP,#12
 0503 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0506 81 C4 00 01 00 00                     ADD %ESP,#256
 050C                      L1028  EQU $
   624            %FINISH
 050C                      L1026  EQU $
   625            printstring(" missing?");                ->more
 050C 81 EC 00 01 00 00                     SUB %ESP,#256
 0512 89 E0                                 MOV %EAX,%ESP
 0514 50                                    PUSH %EAX
 0515 B8 19 01 00 00                        MOV %EAX,COT+#281
 051A 50                                    PUSH %EAX
 051B 68 FF 00 00 00                        PUSH #255
 0520 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0523 83 C4 0C                              ADD %ESP,#12
 0526 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0529 81 C4 00 01 00 00                     ADD %ESP,#256
 052F EB 00                                 JMP L1017
   626  reason(6):printstring("too many faults!");         ->more
 0531                      L1029  EQU $
 0531 81 EC 00 01 00 00                     SUB %ESP,#256
 0537 89 E0                                 MOV %EAX,%ESP
 0539 50                                    PUSH %EAX
 053A B8 23 01 00 00                        MOV %EAX,COT+#291
 053F 50                                    PUSH %EAX
 0540 68 FF 00 00 00                        PUSH #255
 0545 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0548 83 C4 0C                              ADD %ESP,#12
 054B E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 054E 81 C4 00 01 00 00                     ADD %ESP,#256
 0554 EB 00                                 JMP L1017
   627  reason(7):printstring("string constant too long"); ->more
 0556                      L1030  EQU $
 0556 81 EC 00 01 00 00                     SUB %ESP,#256
 055C 89 E0                                 MOV %EAX,%ESP
 055E 50                                    PUSH %EAX
 055F B8 34 01 00 00                        MOV %EAX,COT+#308
 0564 50                                    PUSH %EAX
 0565 68 FF 00 00 00                        PUSH #255
 056A E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 056D 83 C4 0C                              ADD %ESP,#12
 0570 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0573 81 C4 00 01 00 00                     ADD %ESP,#256
 0579 EB 00                                 JMP L1017
   628  reason(8):printstring("dictionary full"); -> more
 057B                      L1031  EQU $
 057B 81 EC 00 01 00 00                     SUB %ESP,#256
 0581 89 E0                                 MOV %EAX,%ESP
 0583 50                                    PUSH %EAX
 0584 B8 4D 01 00 00                        MOV %EAX,COT+#333
 0589 50                                    PUSH %EAX
 058A 68 FF 00 00 00                        PUSH #255
 058F E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0592 83 C4 0C                              ADD %ESP,#12
 0595 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0598 81 C4 00 01 00 00                     ADD %ESP,#256
 059E EB 00                                 JMP L1017
   629  reason(9):printstring("Included file ".include file." does not exist")
 05A0                      L1032  EQU $
 05A0 8D 85 F4 FE FF FF                     LEA %EAX,[%EBP-268]
 05A6 50                                    PUSH %EAX
 05A7 B8 5D 01 00 00                        MOV %EAX,COT+#349
 05AC 50                                    PUSH %EAX
 05AD 68 FF 00 00 00                        PUSH #255
 05B2 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 05B5 83 C4 0C                              ADD %ESP,#12
 05B8 8D 85 F4 FE FF FF                     LEA %EAX,[%EBP-268]
 05BE 50                                    PUSH %EAX
 05BF 8B 75 FC                              MOV %ESI,[%EBP-4]
 05C2 8D 46 A0                              LEA %EAX,[%ESI-96]
 05C5 50                                    PUSH %EAX
 05C6 68 FF 00 00 00                        PUSH #255
 05CB E8 05 00                              CALL '_IMPSTRCAT' (EXTERN 5)
 05CE 83 C4 0C                              ADD %ESP,#12
 05D1 8D 85 F4 FE FF FF                     LEA %EAX,[%EBP-268]
 05D7 50                                    PUSH %EAX
 05D8 B8 6C 01 00 00                        MOV %EAX,COT+#364
 05DD 50                                    PUSH %EAX
 05DE 68 FF 00 00 00                        PUSH #255
 05E3 E8 05 00                              CALL '_IMPSTRCAT' (EXTERN 5)
 05E6 83 C4 0C                              ADD %ESP,#12
 05E9 81 EC 00 01 00 00                     SUB %ESP,#256
 05EF 89 E0                                 MOV %EAX,%ESP
 05F1 50                                    PUSH %EAX
 05F2 8D 85 F4 FE FF FF                     LEA %EAX,[%EBP-268]
 05F8 50                                    PUSH %EAX
 05F9 68 FF 00 00 00                        PUSH #255
 05FE E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0601 83 C4 0C                              ADD %ESP,#12
 0604 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0607 81 C4 00 01 00 00                     ADD %ESP,#256
   630  more: newline
 060D                      L1017  EQU $
 060D E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
   631        printstring("***  compilation abandoned ***");  newline
 0610 81 EC 00 01 00 00                     SUB %ESP,#256
 0616 89 E0                                 MOV %EAX,%ESP
 0618 50                                    PUSH %EAX
 0619 B8 7C 01 00 00                        MOV %EAX,COT+#380
 061E 50                                    PUSH %EAX
 061F 68 FF 00 00 00                        PUSH #255
 0624 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0627 83 C4 0C                              ADD %ESP,#12
 062A E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 062D 81 C4 00 01 00 00                     ADD %ESP,#256
 0633 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
   632        %EXIT %IF stream = report
 0636 8B 45 F4                              MOV %EAX,[%EBP-12]
 0639 3D 00 00 00 00                        CMP %EAX,#0
 063E 75 00                                 JNE L1033
 0640 EB 00                                 JMP L1034
 0642                      L1033  EQU $
   633        close output
 0642 E8 6E 00                              CALL 'CLOSEOUTPUT' (EXTERN 110)
   634        stream = report
 0645 C7 45 F4 00 00 00 00                  MOV DWORD PTR [%EBP-12],#0
   635        select output(report)
 064C 6A 00                                 PUSH #0
 064E E8 2D 00                              CALL 'SELECTOUTPUT' (EXTERN 45)
 0651 83 C4 04                              ADD %ESP,#4
   636     %REPEAT
 0654 EB 00                                 JMP L1014
 0656                      L1034  EQU $
   637  !IMP80 BUG???     %SIGNAL 15,15 %IF diag&4096 # 0
   638     %STOP
 0656 B8 7E 02 00 00                        MOV %EAX,#638
 065B 50                                    PUSH %EAX
 065C 31 C0                                 XOR %EAX,%EAX
 065E 50                                    PUSH %EAX
 065F 31 C0                                 XOR %EAX,%EAX
 0661 50                                    PUSH %EAX
 0662 31 C0                                 XOR %EAX,%EAX
 0664 50                                    PUSH %EAX
 0665 E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 0668 83 C4 10                              ADD %ESP,#16
   639  %END
 066B                      L1001  EQU $
   640  %ROUTINE op(%INTEGER code, param)
   641        buff(bp+1) <- code
 066B                      L1035  EQU $
 066B C8 00 00 02                           ENTER 0000,2
 066F A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 0674 40                                    INC %EAX
 0675 50                                    PUSH %EAX
 0676 8B 7D FC                              MOV %EDI,[%EBP-4]
 0679 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 067F 89 7D F4                              MOV [%EBP-12],%EDI
 0682 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0685 83 C4 08                              ADD %ESP,#8
 0688 89 C3                                 MOV %EBX,%EAX
 068A 8B 75 F4                              MOV %ESI,[%EBP-12]
 068D 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 0693 8B 45 0C                              MOV %EAX,[%EBP+12]
 0696 88 03                                 MOV [%EBX],%AL
   642        buff(bp+2) <- param>>8
 0698 A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 069D 05 02 00 00 00                        ADD %EAX,#2
 06A2 50                                    PUSH %EAX
 06A3 8B 7D FC                              MOV %EDI,[%EBP-4]
 06A6 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 06AC 89 7D F0                              MOV [%EBP-16],%EDI
 06AF E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 06B2 83 C4 08                              ADD %ESP,#8
 06B5 89 C3                                 MOV %EBX,%EAX
 06B7 8B 75 F0                              MOV %ESI,[%EBP-16]
 06BA 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 06C0 8B 45 08                              MOV %EAX,[%EBP+8]
 06C3 C1 E8 08                              SHR %EAX,#8
 06C6 88 03                                 MOV [%EBX],%AL
   643        buff(bp+3) <- param
 06C8 A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 06CD 05 03 00 00 00                        ADD %EAX,#3
 06D2 50                                    PUSH %EAX
 06D3 8B 7D FC                              MOV %EDI,[%EBP-4]
 06D6 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 06DC 89 7D EC                              MOV [%EBP-20],%EDI
 06DF E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 06E2 83 C4 08                              ADD %ESP,#8
 06E5 89 C3                                 MOV %EBX,%EAX
 06E7 8B 75 EC                              MOV %ESI,[%EBP-20]
 06EA 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 06F0 8B 45 08                              MOV %EAX,[%EBP+8]
 06F3 88 03                                 MOV [%EBX],%AL
   644        bp = bp+3
 06F5 83 05 60 02 00 00 03                  ADD DWORD PTR [DATA+0260],#3
   645  %END
 06FC C9                                    LEAVE
 06FD C3                                    RET
 06FE                      L1001  EQU $
   646  %ROUTINE set const(%INTEGER m)
   647        buff(bp+1) <- 'N'
 06FE                      L1036  EQU $
 06FE C8 00 00 02                           ENTER 0000,2
 0702 A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 0707 40                                    INC %EAX
 0708 50                                    PUSH %EAX
 0709 8B 7D FC                              MOV %EDI,[%EBP-4]
 070C FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 0712 89 7D F4                              MOV [%EBP-12],%EDI
 0715 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0718 83 C4 08                              ADD %ESP,#8
 071B 89 C3                                 MOV %EBX,%EAX
 071D 8B 75 F4                              MOV %ESI,[%EBP-12]
 0720 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 0726 C6 03 4E                              MOV BYTE PTR [%EBX],#78
   648        buff(bp+5) <- m;  m = m>>8
 0729 A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 072E 05 05 00 00 00                        ADD %EAX,#5
 0733 50                                    PUSH %EAX
 0734 8B 7D FC                              MOV %EDI,[%EBP-4]
 0737 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 073D 89 7D F0                              MOV [%EBP-16],%EDI
 0740 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0743 83 C4 08                              ADD %ESP,#8
 0746 89 C3                                 MOV %EBX,%EAX
 0748 8B 75 F0                              MOV %ESI,[%EBP-16]
 074B 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 0751 8B 45 08                              MOV %EAX,[%EBP+8]
 0754 88 03                                 MOV [%EBX],%AL
 0756 C1 6D 08 08                           SHR DWORD PTR [%EBP+8],#8
   649        buff(bp+4) <- m;  m = m>>8
 075A A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 075F 05 04 00 00 00                        ADD %EAX,#4
 0764 50                                    PUSH %EAX
 0765 8B 7D FC                              MOV %EDI,[%EBP-4]
 0768 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 076E 89 7D EC                              MOV [%EBP-20],%EDI
 0771 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0774 83 C4 08                              ADD %ESP,#8
 0777 89 C3                                 MOV %EBX,%EAX
 0779 8B 75 EC                              MOV %ESI,[%EBP-20]
 077C 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 0782 8B 45 08                              MOV %EAX,[%EBP+8]
 0785 88 03                                 MOV [%EBX],%AL
 0787 C1 6D 08 08                           SHR DWORD PTR [%EBP+8],#8
   650        buff(bp+3) <- m;  m = m>>8
 078B A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 0790 05 03 00 00 00                        ADD %EAX,#3
 0795 50                                    PUSH %EAX
 0796 8B 7D FC                              MOV %EDI,[%EBP-4]
 0799 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 079F 89 7D E8                              MOV [%EBP-24],%EDI
 07A2 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 07A5 83 C4 08                              ADD %ESP,#8
 07A8 89 C3                                 MOV %EBX,%EAX
 07AA 8B 75 E8                              MOV %ESI,[%EBP-24]
 07AD 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 07B3 8B 45 08                              MOV %EAX,[%EBP+8]
 07B6 88 03                                 MOV [%EBX],%AL
 07B8 C1 6D 08 08                           SHR DWORD PTR [%EBP+8],#8
   651        buff(bp+2) <- m
 07BC A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 07C1 05 02 00 00 00                        ADD %EAX,#2
 07C6 50                                    PUSH %EAX
 07C7 8B 7D FC                              MOV %EDI,[%EBP-4]
 07CA FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 07D0 89 7D E4                              MOV [%EBP-28],%EDI
 07D3 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 07D6 83 C4 08                              ADD %ESP,#8
 07D9 89 C3                                 MOV %EBX,%EAX
 07DB 8B 75 E4                              MOV %ESI,[%EBP-28]
 07DE 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 07E4 8B 45 08                              MOV %EAX,[%EBP+8]
 07E7 88 03                                 MOV [%EBX],%AL
   652        bp = bp+5
 07E9 83 05 60 02 00 00 05                  ADD DWORD PTR [DATA+0260],#5
   653  %END
 07F0 C9                                    LEAVE
 07F1 C3                                    RET
 07F2                      L1001  EQU $
   654  
   655  
   656  
   657  %ROUTINE compile block(%INTEGER level, block tag, dmin, tmax, id)
 07F2                      L1037  EQU $
 07F2 C8 00 00 02                           ENTER 0000,2
   658  
   659     %INTEGERFNSPEC gapp
   660     %ROUTINESPEC delete names(%INTEGER quiet)
   661     %ROUTINESPEC analyse
   662     %ROUTINESPEC compile
   663  
   664     %INTEGER open;    open       = closed;      !zero if can return from proc
 07F6 C7 45 F4 00 40 00 00                  MOV DWORD PTR [%EBP-12],#16384
   665     %INTEGER dbase;   dbase      = dmax;        !dictionary base
 07FD A1 5C 01 00 00                        MOV %EAX,[DATA+015C]
 0802 89 45 F0                              MOV [%EBP-16],%EAX
   666     %INTEGER tbase;   tbase      = tmax;        !tag base
 0805 8B 45 0C                              MOV %EAX,[%EBP+12]
 0808 89 45 EC                              MOV [%EBP-20],%EAX
   667     %INTEGER tstart;  tstart     = tmax
 080B 8B 45 0C                              MOV %EAX,[%EBP+12]
 080E 89 45 E8                              MOV [%EBP-24],%EAX
   668     %INTEGER label;   label      = 4;           !first internal label
 0811 C7 45 E4 04 00 00 00                  MOV DWORD PTR [%EBP-28],#4
   669     %INTEGER access;  access     = 1;           !non-zero if accessible
 0818 C7 45 E0 01 00 00 00                  MOV DWORD PTR [%EBP-32],#1
   670     %INTEGER inhibit; inhibit    = 0;           !non-zero inhibits declaratons
 081F C7 45 DC 00 00 00 00                  MOV DWORD PTR [%EBP-36],#0
   671  
   672     %SHORTINTEGERNAME bflags; bflags      == tag(block tag)_flags
 0826 FF 75 14                              PUSH DWORD PTR [%EBP+20]
 0829 8B 7D FC                              MOV %EDI,[%EBP-4]
 082C FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 0832 89 7D D4                              MOV [%EBP-44],%EDI
 0835 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0838 83 C4 08                              ADD %ESP,#8
 083B 89 C3                                 MOV %EBX,%EAX
 083D 8B 75 D4                              MOV %ESI,[%EBP-44]
 0840 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 0846 8D 5B 08                              LEA %EBX,[%EBX+8]
 0849 89 5D D8                              MOV [%EBP-40],%EBX
   673     %INTEGER block type;      block type   = bflags>>4&7
 084C 8B 7D D8                              MOV %EDI,[%EBP-40]
 084F 0F BF 07                              MOVSX %EAX,[%EDI]
 0852 C1 E8 04                              SHR %EAX,#4
 0855 25 07 00 00 00                        AND %EAX,#7
 085A 89 45 D0                              MOV [%EBP-48],%EAX
   674     %INTEGER block form;      block form   = bflags&15
 085D 8B 5D D8                              MOV %EBX,[%EBP-40]
 0860 0F BF 03                              MOVSX %EAX,[%EBX]
 0863 25 0F 00 00 00                        AND %EAX,#15
 0868 89 45 CC                              MOV [%EBP-52],%EAX
   675     %INTEGER block fm;        block fm     = tag(block tag)_format
 086B FF 75 14                              PUSH DWORD PTR [%EBP+20]
 086E 8B 75 FC                              MOV %ESI,[%EBP-4]
 0871 FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 0877 89 75 C4                              MOV [%EBP-60],%ESI
 087A E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 087D 83 C4 08                              ADD %ESP,#8
 0880 89 C7                                 MOV %EDI,%EAX
 0882 8B 5D C4                              MOV %EBX,[%EBP-60]
 0885 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 088B 8B 7F 04                              MOV %EDI,[%EDI+4]
 088E 89 7D C8                              MOV [%EBP-56],%EDI
   676     %INTEGER block otype;     block otype  = otype
 0891 A1 14 01 00 00                        MOV %EAX,[DATA+0114]
 0896 89 45 C0                              MOV [%EBP-64],%EAX
   677     %INTEGERNAME block app;   block app   == tag(block tag)_app
 0899 FF 75 14                              PUSH DWORD PTR [%EBP+20]
 089C 8B 75 FC                              MOV %ESI,[%EBP-4]
 089F FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 08A5 89 75 B8                              MOV [%EBP-72],%ESI
 08A8 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 08AB 83 C4 08                              ADD %ESP,#8
 08AE 89 C7                                 MOV %EDI,%EAX
 08B0 8B 5D B8                              MOV %EBX,[%EBP-72]
 08B3 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 08B9 89 7D BC                              MOV [%EBP-68],%EDI
   678  
   679     %INTEGER l, new app
   680  
   681  %ROUTINE fault(%INTEGER n)
 08BC EB 00                                 JMP L1042
 08BE                      L1043  EQU $
 08BE C8 00 00 03                           ENTER 0000,3
   682  
   683      ! -5 : -1  - warnings
   684      !  1 : 22  - errors
   685  
   686      %SWITCH fm(-5:22)
   687      %INTEGER st
   688  
   689      %ROUTINE print ss
 08C2 EB 00                                 JMP L1044
 08C4                      L1045  EQU $
 08C4 C8 00 00 04                           ENTER 0000,4
   690         %INTEGER s, p
   691         %RETURN %IF pos = 0
 08C8 A1 A8 01 00 00                        MOV %EAX,[DATA+01A8]
 08CD 3D 00 00 00 00                        CMP %EAX,#0
 08D2 75 00                                 JNE L1046
 08D4 C9                                    LEAVE
 08D5 C3                                    RET
 08D6                      L1046  EQU $
   692         space
 08D6 E8 41 00                              CALL 'SPACE' (EXTERN 65)
   693         p = 1
 08D9 C7 45 E8 01 00 00 00                  MOV DWORD PTR [%EBP-24],#1
   694         %CYCLE
 08E0                      L1047  EQU $
   695            printsymbol(marker) %IF p = pos1
 08E0 8B 45 E8                              MOV %EAX,[%EBP-24]
 08E3 3B 05 A0 01 00 00                     CMP %EAX,[DATA+01A0]
 08E9 75 00                                 JNE L1048
 08EB 6A 5E                                 PUSH #94
 08ED E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 08F0 83 C4 04                              ADD %ESP,#4
 08F3                      L1048  EQU $
   696            %EXIT %IF p = pos
 08F3 8B 45 E8                              MOV %EAX,[%EBP-24]
 08F6 3B 05 A8 01 00 00                     CMP %EAX,[DATA+01A8]
 08FC 75 00                                 JNE L1049
 08FE EB 00                                 JMP L1050
 0900                      L1049  EQU $
   697            s = char(p);  p = p+1
 0900 FF 75 E8                              PUSH DWORD PTR [%EBP-24]
 0903 68 14 00 00 00                        PUSH COT+#20
 0908 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 090B 83 C4 08                              ADD %ESP,#8
 090E 89 C6                                 MOV %ESI,%EAX
 0910 31 C0                                 XOR %EAX,%EAX
 0912 8A 86 C0 01 00 00                     MOV %AL,[%ESI+DATA+448]
 0918 89 45 EC                              MOV [%EBP-20],%EAX
 091B FF 45 E8                              INC DWORD PTR [%EBP-24]
   698            %EXIT %IF s = nl %OR (s='%' %AND p = pos)
 091E 8B 45 EC                              MOV %EAX,[%EBP-20]
 0921 3D 0A 00 00 00                        CMP %EAX,#10
 0926 74 00                                 JE L1051
 0928 8B 45 EC                              MOV %EAX,[%EBP-20]
 092B 3D 25 00 00 00                        CMP %EAX,#37
 0930 75 00                                 JNE L1052
 0932 8B 45 E8                              MOV %EAX,[%EBP-24]
 0935 3B 05 A8 01 00 00                     CMP %EAX,[DATA+01A8]
 093B 75 00                                 JNE L1052
 093D                      L1051  EQU $
 093D EB 00                                 JMP L1050
 093F                      L1052  EQU $
   699            %IF s < ' ' %START;         !beware of tabs
 093F 8B 45 EC                              MOV %EAX,[%EBP-20]
 0942 3D 20 00 00 00                        CMP %EAX,#32
 0947 7D 00                                 JGE L1053
   700               %IF s = ff %THEN s = nl %ELSE s = ' '
 0949 8B 45 EC                              MOV %EAX,[%EBP-20]
 094C 3D 0C 00 00 00                        CMP %EAX,#12
 0951 75 00                                 JNE L1054
 0953 C7 45 EC 0A 00 00 00                  MOV DWORD PTR [%EBP-20],#10
 095A EB 00                                 JMP L1055
 095C                      L1054  EQU $
 095C C7 45 EC 20 00 00 00                  MOV DWORD PTR [%EBP-20],#32
 0963                      L1055  EQU $
   701            %FINISH
 0963                      L1053  EQU $
   702            printsymbol(s)
 0963 FF 75 EC                              PUSH DWORD PTR [%EBP-20]
 0966 E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 0969 83 C4 04                              ADD %ESP,#4
   703         %REPEAT
 096C EB 00                                 JMP L1047
 096E                      L1050  EQU $
   704         pos = 0 %IF list <= 0
 096E A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 0973 3D 00 00 00 00                        CMP %EAX,#0
 0978 7F 00                                 JG L1056
 097A C7 05 A8 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A8],#0
 0984                      L1056  EQU $
   705      %END
 0984 C9                                    LEAVE
 0985 C3                                    RET
 0986                      L1044  EQU $
   706  
   707      pos1 = pos2 %IF pos2 > pos1
 0986 A1 A4 01 00 00                        MOV %EAX,[DATA+01A4]
 098B 3B 05 A0 01 00 00                     CMP %EAX,[DATA+01A0]
 0991 7E 00                                 JLE L1057
 0993 A1 A4 01 00 00                        MOV %EAX,[DATA+01A4]
 0998 89 05 A0 01 00 00                     MOV [DATA+01A0],%EAX
 099E                      L1057  EQU $
   708      newline %IF sym # nl
 099E A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 09A3 3D 0A 00 00 00                        CMP %EAX,#10
 09A8 74 00                                 JE L1058
 09AA E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
 09AD                      L1058  EQU $
   709      st = report
 09AD C7 45 F0 00 00 00 00                  MOV DWORD PTR [%EBP-16],#0
   710      st = listing %IF n = -3;              !don<dq>t report unused on the console
 09B4 8B 45 08                              MOV %EAX,[%EBP+8]
 09B7 3D FD FF FF FF                        CMP %EAX,#-3
 09BC 75 00                                 JNE L1059
 09BE C7 45 F0 02 00 00 00                  MOV DWORD PTR [%EBP-16],#2
 09C5                      L1059  EQU $
   711      %cycle
 09C5                      L1060  EQU $
   712         SELECT OUTPUT(st)
 09C5 FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 09C8 E8 2D 00                              CALL 'SELECTOUTPUT' (EXTERN 45)
 09CB 83 C4 04                              ADD %ESP,#4
   713         %if n < 0 %then printsymbol('?') %and pos1 = 0 %else printsymbol('*')
 09CE 8B 45 08                              MOV %EAX,[%EBP+8]
 09D1 3D 00 00 00 00                        CMP %EAX,#0
 09D6 7D 00                                 JGE L1061
 09D8 6A 3F                                 PUSH #63
 09DA E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 09DD 83 C4 04                              ADD %ESP,#4
 09E0 C7 05 A0 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A0],#0
 09EA EB 00                                 JMP L1062
 09EC                      L1061  EQU $
 09EC 6A 2A                                 PUSH #42
 09EE E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 09F1 83 C4 04                              ADD %ESP,#4
 09F4                      L1062  EQU $
   714         %if st # report %start
 09F4 8B 45 F0                              MOV %EAX,[%EBP-16]
 09F7 3D 00 00 00 00                        CMP %EAX,#0
 09FC 74 00                                 JE L1063
   715            %if list <= 0 %and pos1 # 0 %start
 09FE A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 0A03 3D 00 00 00 00                        CMP %EAX,#0
 0A08 7F 00                                 JG L1064
 0A0A A1 A0 01 00 00                        MOV %EAX,[DATA+01A0]
 0A0F 3D 00 00 00 00                        CMP %EAX,#0
 0A14 74 00                                 JE L1064
   716               spaces(pos1+margin);  PRINTSTRING("      ! ")
 0A16 A1 A0 01 00 00                        MOV %EAX,[DATA+01A0]
 0A1B 03 05 CC 00 00 00                     ADD %EAX,[DATA+00CC]
 0A21 50                                    PUSH %EAX
 0A22 E8 42 00                              CALL 'SPACES' (EXTERN 66)
 0A25 83 C4 04                              ADD %ESP,#4
 0A28 81 EC 00 01 00 00                     SUB %ESP,#256
 0A2E 89 E0                                 MOV %EAX,%ESP
 0A30 50                                    PUSH %EAX
 0A31 B8 AC 01 00 00                        MOV %EAX,COT+#428
 0A36 50                                    PUSH %EAX
 0A37 68 FF 00 00 00                        PUSH #255
 0A3C E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0A3F 83 C4 0C                              ADD %ESP,#12
 0A42 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0A45 81 C4 00 01 00 00                     ADD %ESP,#256
   717            %finish
 0A4B                      L1064  EQU $
   718         %finish %else %start
 0A4B EB 00                                 JMP L1065
 0A4D                      L1063  EQU $
   719            PRINTSTRING(include file) %if include # 0
 0A4D A1 70 01 00 00                        MOV %EAX,[DATA+0170]
 0A52 3D 00 00 00 00                        CMP %EAX,#0
 0A57 74 00                                 JE L1066
 0A59 81 EC 00 01 00 00                     SUB %ESP,#256
 0A5F 89 E0                                 MOV %EAX,%ESP
 0A61 50                                    PUSH %EAX
 0A62 8B 7D FC                              MOV %EDI,[%EBP-4]
 0A65 8D 47 A0                              LEA %EAX,[%EDI-96]
 0A68 50                                    PUSH %EAX
 0A69 68 FF 00 00 00                        PUSH #255
 0A6E E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0A71 83 C4 0C                              ADD %ESP,#12
 0A74 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0A77 81 C4 00 01 00 00                     ADD %ESP,#256
 0A7D                      L1066  EQU $
   720            write(lines, 4);  printsymbol(csym);  space
 0A7D FF 35 C4 00 00 00                     PUSH DWORD PTR [DATA+00C4]
 0A83 6A 04                                 PUSH #4
 0A85 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 0A88 83 C4 08                              ADD %ESP,#8
 0A8B FF 35 F8 00 00 00                     PUSH DWORD PTR [DATA+00F8]
 0A91 E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 0A94 83 C4 04                              ADD %ESP,#4
 0A97 E8 41 00                              CALL 'SPACE' (EXTERN 65)
   721         %finish
 0A9A                      L1065  EQU $
   722         ->fm(n) %if -5 <= n <= 22
 0A9A 8B 45 08                              MOV %EAX,[%EBP+8]
 0A9D 3D FB FF FF FF                        CMP %EAX,#-5
 0AA2 7C 00                                 JL L1067
 0AA4 3D 16 00 00 00                        CMP %EAX,#22
 0AA9 7F 00                                 JG L1067
 0AAB 8B 45 08                              MOV %EAX,[%EBP+8]
 0AAE C1 E0 02                              SHL %EAX,#2
 0AB1 89 C3                                 MOV %EBX,%EAX
 0AB3 FF A3 3C 00 00 00                     JMP DWORD PTR [%EBX+SWTAB+60]
 0AB9                      L1067  EQU $
   723         PRINTSTRING("fault");  write(n, 2);              ->ps
 0AB9 81 EC 00 01 00 00                     SUB %ESP,#256
 0ABF 89 E0                                 MOV %EAX,%ESP
 0AC1 50                                    PUSH %EAX
 0AC2 B8 B5 01 00 00                        MOV %EAX,COT+#437
 0AC7 50                                    PUSH %EAX
 0AC8 68 FF 00 00 00                        PUSH #255
 0ACD E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0AD0 83 C4 0C                              ADD %ESP,#12
 0AD3 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0AD6 81 C4 00 01 00 00                     ADD %ESP,#256
 0ADC FF 75 08                              PUSH DWORD PTR [%EBP+8]
 0ADF 6A 02                                 PUSH #2
 0AE1 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 0AE4 83 C4 08                              ADD %ESP,#8
 0AE7 EB 00                                 JMP L1068
   724  
   725  fm(-5):PRINTSTRING("Dubious statement");  dubious = 0;  ->psd
 0AE9                      L1069  EQU $
 0AE9 81 EC 00 01 00 00                     SUB %ESP,#256
 0AEF 89 E0                                 MOV %EAX,%ESP
 0AF1 50                                    PUSH %EAX
 0AF2 B8 BB 01 00 00                        MOV %EAX,COT+#443
 0AF7 50                                    PUSH %EAX
 0AF8 68 FF 00 00 00                        PUSH #255
 0AFD E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0B00 83 C4 0C                              ADD %ESP,#12
 0B03 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0B06 81 C4 00 01 00 00                     ADD %ESP,#256
 0B0C C7 05 98 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0198],#0
 0B16 EB 00                                 JMP L1070
   726  fm(-4):PRINTSTRING("Non-local")
 0B18                      L1071  EQU $
 0B18 81 EC 00 01 00 00                     SUB %ESP,#256
 0B1E 89 E0                                 MOV %EAX,%ESP
 0B20 50                                    PUSH %EAX
 0B21 B8 CD 01 00 00                        MOV %EAX,COT+#461
 0B26 50                                    PUSH %EAX
 0B27 68 FF 00 00 00                        PUSH #255
 0B2C E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0B2F 83 C4 0C                              ADD %ESP,#12
 0B32 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0B35 81 C4 00 01 00 00                     ADD %ESP,#256
   727         pos1 = for warn;  for warn = 0;                  ->ps
 0B3B A1 94 01 00 00                        MOV %EAX,[DATA+0194]
 0B40 89 05 A0 01 00 00                     MOV [DATA+01A0],%EAX
 0B46 C7 05 94 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0194],#0
 0B50 EB 00                                 JMP L1068
   728  fm(-3):print ident(x, 0);  PRINTSTRING(" unused");      ->nps
 0B52                      L1072  EQU $
 0B52 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 0B58 6A 00                                 PUSH #0
 0B5A E8 00 00                              CALL 'PRINTIDENT' (INTERNAL L1006 )
 0B5D 83 C4 08                              ADD %ESP,#8
 0B60 81 EC 00 01 00 00                     SUB %ESP,#256
 0B66 89 E0                                 MOV %EAX,%ESP
 0B68 50                                    PUSH %EAX
 0B69 B8 D7 01 00 00                        MOV %EAX,COT+#471
 0B6E 50                                    PUSH %EAX
 0B6F 68 FF 00 00 00                        PUSH #255
 0B74 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0B77 83 C4 0C                              ADD %ESP,#12
 0B7A E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0B7D 81 C4 00 01 00 00                     ADD %ESP,#256
 0B83 EB 00                                 JMP L1073
   729  fm(-2):PRINTSTRING("""}""");                            ->miss
 0B85                      L1074  EQU $
 0B85 81 EC 00 01 00 00                     SUB %ESP,#256
 0B8B 89 E0                                 MOV %EAX,%ESP
 0B8D 50                                    PUSH %EAX
 0B8E B8 DF 01 00 00                        MOV %EAX,COT+#479
 0B93 50                                    PUSH %EAX
 0B94 68 FF 00 00 00                        PUSH #255
 0B99 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0B9C 83 C4 0C                              ADD %ESP,#12
 0B9F E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0BA2 81 C4 00 01 00 00                     ADD %ESP,#256
 0BA8 EB 00                                 JMP L1075
   730  fm(-1):PRINTSTRING("access");                           ->psd
 0BAA                      L1076  EQU $
 0BAA 81 EC 00 01 00 00                     SUB %ESP,#256
 0BB0 89 E0                                 MOV %EAX,%ESP
 0BB2 50                                    PUSH %EAX
 0BB3 B8 E3 01 00 00                        MOV %EAX,COT+#483
 0BB8 50                                    PUSH %EAX
 0BB9 68 FF 00 00 00                        PUSH #255
 0BBE E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0BC1 83 C4 0C                              ADD %ESP,#12
 0BC4 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0BC7 81 C4 00 01 00 00                     ADD %ESP,#256
 0BCD EB 00                                 JMP L1070
   731  
   732  fm(0): PRINTSTRING("form");                             ->ps
 0BCF                      L1077  EQU $
 0BCF 81 EC 00 01 00 00                     SUB %ESP,#256
 0BD5 89 E0                                 MOV %EAX,%ESP
 0BD7 50                                    PUSH %EAX
 0BD8 B8 EA 01 00 00                        MOV %EAX,COT+#490
 0BDD 50                                    PUSH %EAX
 0BDE 68 FF 00 00 00                        PUSH #255
 0BE3 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0BE6 83 C4 0C                              ADD %ESP,#12
 0BE9 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0BEC 81 C4 00 01 00 00                     ADD %ESP,#256
 0BF2 EB 00                                 JMP L1068
   733  fm(1): PRINTSTRING("atom");                             ->ps
 0BF4                      L1078  EQU $
 0BF4 81 EC 00 01 00 00                     SUB %ESP,#256
 0BFA 89 E0                                 MOV %EAX,%ESP
 0BFC 50                                    PUSH %EAX
 0BFD B8 EF 01 00 00                        MOV %EAX,COT+#495
 0C02 50                                    PUSH %EAX
 0C03 68 FF 00 00 00                        PUSH #255
 0C08 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0C0B 83 C4 0C                              ADD %ESP,#12
 0C0E E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0C11 81 C4 00 01 00 00                     ADD %ESP,#256
 0C17 EB 00                                 JMP L1068
   734  fm(2): PRINTSTRING("not declared");                     ->ps
 0C19                      L1079  EQU $
 0C19 81 EC 00 01 00 00                     SUB %ESP,#256
 0C1F 89 E0                                 MOV %EAX,%ESP
 0C21 50                                    PUSH %EAX
 0C22 B8 F4 01 00 00                        MOV %EAX,COT+#500
 0C27 50                                    PUSH %EAX
 0C28 68 FF 00 00 00                        PUSH #255
 0C2D E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0C30 83 C4 0C                              ADD %ESP,#12
 0C33 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0C36 81 C4 00 01 00 00                     ADD %ESP,#256
 0C3C EB 00                                 JMP L1068
   735  fm(3): PRINTSTRING("too complex");                      ->ps
 0C3E                      L1080  EQU $
 0C3E 81 EC 00 01 00 00                     SUB %ESP,#256
 0C44 89 E0                                 MOV %EAX,%ESP
 0C46 50                                    PUSH %EAX
 0C47 B8 01 02 00 00                        MOV %EAX,COT+#513
 0C4C 50                                    PUSH %EAX
 0C4D 68 FF 00 00 00                        PUSH #255
 0C52 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0C55 83 C4 0C                              ADD %ESP,#12
 0C58 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0C5B 81 C4 00 01 00 00                     ADD %ESP,#256
 0C61 EB 00                                 JMP L1068
   736  fm(4): PRINTSTRING("duplicate ");  Print Ident(x, 0);   ->ps
 0C63                      L1081  EQU $
 0C63 81 EC 00 01 00 00                     SUB %ESP,#256
 0C69 89 E0                                 MOV %EAX,%ESP
 0C6B 50                                    PUSH %EAX
 0C6C B8 0D 02 00 00                        MOV %EAX,COT+#525
 0C71 50                                    PUSH %EAX
 0C72 68 FF 00 00 00                        PUSH #255
 0C77 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0C7A 83 C4 0C                              ADD %ESP,#12
 0C7D E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0C80 81 C4 00 01 00 00                     ADD %ESP,#256
 0C86 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 0C8C 6A 00                                 PUSH #0
 0C8E E8 00 00                              CALL 'PRINTIDENT' (INTERNAL L1006 )
 0C91 83 C4 08                              ADD %ESP,#8
 0C94 EB 00                                 JMP L1068
   737  fm(5): PRINTSTRING("type");                             ->ps
 0C96                      L1082  EQU $
 0C96 81 EC 00 01 00 00                     SUB %ESP,#256
 0C9C 89 E0                                 MOV %EAX,%ESP
 0C9E 50                                    PUSH %EAX
 0C9F B8 18 02 00 00                        MOV %EAX,COT+#536
 0CA4 50                                    PUSH %EAX
 0CA5 68 FF 00 00 00                        PUSH #255
 0CAA E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0CAD 83 C4 0C                              ADD %ESP,#12
 0CB0 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0CB3 81 C4 00 01 00 00                     ADD %ESP,#256
 0CB9 EB 00                                 JMP L1068
   738  fm(6): PRINTSTRING("match");                            ->psd
 0CBB                      L1083  EQU $
 0CBB 81 EC 00 01 00 00                     SUB %ESP,#256
 0CC1 89 E0                                 MOV %EAX,%ESP
 0CC3 50                                    PUSH %EAX
 0CC4 B8 1D 02 00 00                        MOV %EAX,COT+#541
 0CC9 50                                    PUSH %EAX
 0CCA 68 FF 00 00 00                        PUSH #255
 0CCF E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0CD2 83 C4 0C                              ADD %ESP,#12
 0CD5 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0CD8 81 C4 00 01 00 00                     ADD %ESP,#256
 0CDE EB 00                                 JMP L1070
   739  fm(7): PRINTSTRING("context");                          ->psd
 0CE0                      L1084  EQU $
 0CE0 81 EC 00 01 00 00                     SUB %ESP,#256
 0CE6 89 E0                                 MOV %EAX,%ESP
 0CE8 50                                    PUSH %EAX
 0CE9 B8 23 02 00 00                        MOV %EAX,COT+#547
 0CEE 50                                    PUSH %EAX
 0CEF 68 FF 00 00 00                        PUSH #255
 0CF4 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0CF7 83 C4 0C                              ADD %ESP,#12
 0CFA E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0CFD 81 C4 00 01 00 00                     ADD %ESP,#256
 0D03 EB 00                                 JMP L1070
   740  fm(21):PRINTSTRING("context ");  print ident(this, 0);  ->ps
 0D05                      L1085  EQU $
 0D05 81 EC 00 01 00 00                     SUB %ESP,#256
 0D0B 89 E0                                 MOV %EAX,%ESP
 0D0D 50                                    PUSH %EAX
 0D0E B8 2B 02 00 00                        MOV %EAX,COT+#555
 0D13 50                                    PUSH %EAX
 0D14 68 FF 00 00 00                        PUSH #255
 0D19 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0D1C 83 C4 0C                              ADD %ESP,#12
 0D1F E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0D22 81 C4 00 01 00 00                     ADD %ESP,#256
 0D28 FF 35 44 01 00 00                     PUSH DWORD PTR [DATA+0144]
 0D2E 6A 00                                 PUSH #0
 0D30 E8 00 00                              CALL 'PRINTIDENT' (INTERNAL L1006 )
 0D33 83 C4 08                              ADD %ESP,#8
 0D36 EB 00                                 JMP L1068
   741  fm(8): PRINTSTRING("%cycle");                           ->miss
 0D38                      L1086  EQU $
 0D38 81 EC 00 01 00 00                     SUB %ESP,#256
 0D3E 89 E0                                 MOV %EAX,%ESP
 0D40 50                                    PUSH %EAX
 0D41 B8 34 02 00 00                        MOV %EAX,COT+#564
 0D46 50                                    PUSH %EAX
 0D47 68 FF 00 00 00                        PUSH #255
 0D4C E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0D4F 83 C4 0C                              ADD %ESP,#12
 0D52 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0D55 81 C4 00 01 00 00                     ADD %ESP,#256
 0D5B EB 00                                 JMP L1075
   742  fm(9): PRINTSTRING("%start");                           ->miss
 0D5D                      L1087  EQU $
 0D5D 81 EC 00 01 00 00                     SUB %ESP,#256
 0D63 89 E0                                 MOV %EAX,%ESP
 0D65 50                                    PUSH %EAX
 0D66 B8 3B 02 00 00                        MOV %EAX,COT+#571
 0D6B 50                                    PUSH %EAX
 0D6C 68 FF 00 00 00                        PUSH #255
 0D71 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0D74 83 C4 0C                              ADD %ESP,#12
 0D77 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0D7A 81 C4 00 01 00 00                     ADD %ESP,#256
 0D80 EB 00                                 JMP L1075
   743  fm(10):PRINTSTRING("size");  WRITE(lit, 1) %if pos1 = 0;->ps
 0D82                      L1088  EQU $
 0D82 81 EC 00 01 00 00                     SUB %ESP,#256
 0D88 89 E0                                 MOV %EAX,%ESP
 0D8A 50                                    PUSH %EAX
 0D8B B8 42 02 00 00                        MOV %EAX,COT+#578
 0D90 50                                    PUSH %EAX
 0D91 68 FF 00 00 00                        PUSH #255
 0D96 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0D99 83 C4 0C                              ADD %ESP,#12
 0D9C E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0D9F 81 C4 00 01 00 00                     ADD %ESP,#256
 0DA5 A1 A0 01 00 00                        MOV %EAX,[DATA+01A0]
 0DAA 3D 00 00 00 00                        CMP %EAX,#0
 0DAF 75 00                                 JNE L1089
 0DB1 FF 35 48 02 00 00                     PUSH DWORD PTR [DATA+0248]
 0DB7 6A 01                                 PUSH #1
 0DB9 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 0DBC 83 C4 08                              ADD %ESP,#8
 0DBF                      L1089  EQU $
 0DBF EB 00                                 JMP L1068
   744  fm(11):PRINTSTRING("bounds")
 0DC1                      L1090  EQU $
 0DC1 81 EC 00 01 00 00                     SUB %ESP,#256
 0DC7 89 E0                                 MOV %EAX,%ESP
 0DC9 50                                    PUSH %EAX
 0DCA B8 47 02 00 00                        MOV %EAX,COT+#583
 0DCF 50                                    PUSH %EAX
 0DD0 68 FF 00 00 00                        PUSH #255
 0DD5 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0DD8 83 C4 0C                              ADD %ESP,#12
 0DDB E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0DDE 81 C4 00 01 00 00                     ADD %ESP,#256
   745         WRITE(ocount, 1) %unless ocount < 0;             ->ps
 0DE4 A1 84 01 00 00                        MOV %EAX,[DATA+0184]
 0DE9 3D 00 00 00 00                        CMP %EAX,#0
 0DEE 7C 00                                 JL L1091
 0DF0 FF 35 84 01 00 00                     PUSH DWORD PTR [DATA+0184]
 0DF6 6A 01                                 PUSH #1
 0DF8 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 0DFB 83 C4 08                              ADD %ESP,#8
 0DFE                      L1091  EQU $
 0DFE EB 00                                 JMP L1068
   746  fm(12):PRINTSTRING("index");                            ->ps
 0E00                      L1092  EQU $
 0E00 81 EC 00 01 00 00                     SUB %ESP,#256
 0E06 89 E0                                 MOV %EAX,%ESP
 0E08 50                                    PUSH %EAX
 0E09 B8 4E 02 00 00                        MOV %EAX,COT+#590
 0E0E 50                                    PUSH %EAX
 0E0F 68 FF 00 00 00                        PUSH #255
 0E14 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0E17 83 C4 0C                              ADD %ESP,#12
 0E1A E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0E1D 81 C4 00 01 00 00                     ADD %ESP,#256
 0E23 EB 00                                 JMP L1068
   747  fm(13):PRINTSTRING("order");                            ->psd
 0E25                      L1093  EQU $
 0E25 81 EC 00 01 00 00                     SUB %ESP,#256
 0E2B 89 E0                                 MOV %EAX,%ESP
 0E2D 50                                    PUSH %EAX
 0E2E B8 54 02 00 00                        MOV %EAX,COT+#596
 0E33 50                                    PUSH %EAX
 0E34 68 FF 00 00 00                        PUSH #255
 0E39 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0E3C 83 C4 0C                              ADD %ESP,#12
 0E3F E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0E42 81 C4 00 01 00 00                     ADD %ESP,#256
 0E48 EB 00                                 JMP L1070
   748  fm(14):PRINTSTRING("not a location");                   ->ps
 0E4A                      L1094  EQU $
 0E4A 81 EC 00 01 00 00                     SUB %ESP,#256
 0E50 89 E0                                 MOV %EAX,%ESP
 0E52 50                                    PUSH %EAX
 0E53 B8 5A 02 00 00                        MOV %EAX,COT+#602
 0E58 50                                    PUSH %EAX
 0E59 68 FF 00 00 00                        PUSH #255
 0E5E E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0E61 83 C4 0C                              ADD %ESP,#12
 0E64 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0E67 81 C4 00 01 00 00                     ADD %ESP,#256
 0E6D EB 00                                 JMP L1068
   749  fm(15):PRINTSTRING("%begin");                           ->miss
 0E6F                      L1095  EQU $
 0E6F 81 EC 00 01 00 00                     SUB %ESP,#256
 0E75 89 E0                                 MOV %EAX,%ESP
 0E77 50                                    PUSH %EAX
 0E78 B8 69 02 00 00                        MOV %EAX,COT+#617
 0E7D 50                                    PUSH %EAX
 0E7E 68 FF 00 00 00                        PUSH #255
 0E83 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0E86 83 C4 0C                              ADD %ESP,#12
 0E89 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0E8C 81 C4 00 01 00 00                     ADD %ESP,#256
 0E92 EB 00                                 JMP L1075
   750  fm(16):PRINTSTRING("%end");                             ->miss
 0E94                      L1096  EQU $
 0E94 81 EC 00 01 00 00                     SUB %ESP,#256
 0E9A 89 E0                                 MOV %EAX,%ESP
 0E9C 50                                    PUSH %EAX
 0E9D B8 70 02 00 00                        MOV %EAX,COT+#624
 0EA2 50                                    PUSH %EAX
 0EA3 68 FF 00 00 00                        PUSH #255
 0EA8 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0EAB 83 C4 0C                              ADD %ESP,#12
 0EAE E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0EB1 81 C4 00 01 00 00                     ADD %ESP,#256
 0EB7 EB 00                                 JMP L1075
   751  fm(17):PRINTSTRING("%repeat");                          ->miss
 0EB9                      L1097  EQU $
 0EB9 81 EC 00 01 00 00                     SUB %ESP,#256
 0EBF 89 E0                                 MOV %EAX,%ESP
 0EC1 50                                    PUSH %EAX
 0EC2 B8 75 02 00 00                        MOV %EAX,COT+#629
 0EC7 50                                    PUSH %EAX
 0EC8 68 FF 00 00 00                        PUSH #255
 0ECD E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0ED0 83 C4 0C                              ADD %ESP,#12
 0ED3 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0ED6 81 C4 00 01 00 00                     ADD %ESP,#256
 0EDC EB 00                                 JMP L1075
   752  fm(18):PRINTSTRING("%finish");                          ->miss
 0EDE                      L1098  EQU $
 0EDE 81 EC 00 01 00 00                     SUB %ESP,#256
 0EE4 89 E0                                 MOV %EAX,%ESP
 0EE6 50                                    PUSH %EAX
 0EE7 B8 7D 02 00 00                        MOV %EAX,COT+#637
 0EEC 50                                    PUSH %EAX
 0EED 68 FF 00 00 00                        PUSH #255
 0EF2 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0EF5 83 C4 0C                              ADD %ESP,#12
 0EF8 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0EFB 81 C4 00 01 00 00                     ADD %ESP,#256
 0F01 EB 00                                 JMP L1075
   753  fm(19):PRINTSTRING("result");                           ->miss
 0F03                      L1099  EQU $
 0F03 81 EC 00 01 00 00                     SUB %ESP,#256
 0F09 89 E0                                 MOV %EAX,%ESP
 0F0B 50                                    PUSH %EAX
 0F0C B8 85 02 00 00                        MOV %EAX,COT+#645
 0F11 50                                    PUSH %EAX
 0F12 68 FF 00 00 00                        PUSH #255
 0F17 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0F1A 83 C4 0C                              ADD %ESP,#12
 0F1D E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0F20 81 C4 00 01 00 00                     ADD %ESP,#256
 0F26 EB 00                                 JMP L1075
   754  fm(22):PRINTSTRING("format");                           ->ps
 0F28                      L1100  EQU $
 0F28 81 EC 00 01 00 00                     SUB %ESP,#256
 0F2E 89 E0                                 MOV %EAX,%ESP
 0F30 50                                    PUSH %EAX
 0F31 B8 8C 02 00 00                        MOV %EAX,COT+#652
 0F36 50                                    PUSH %EAX
 0F37 68 FF 00 00 00                        PUSH #255
 0F3C E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0F3F 83 C4 0C                              ADD %ESP,#12
 0F42 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0F45 81 C4 00 01 00 00                     ADD %ESP,#256
 0F4B EB 00                                 JMP L1068
   755  fm(20):printsymbol('"');  print ident(x, 0);  printsymbol('"')
 0F4D                      L1101  EQU $
 0F4D 6A 22                                 PUSH #34
 0F4F E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 0F52 83 C4 04                              ADD %ESP,#4
 0F55 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 0F5B 6A 00                                 PUSH #0
 0F5D E8 00 00                              CALL 'PRINTIDENT' (INTERNAL L1006 )
 0F60 83 C4 08                              ADD %ESP,#8
 0F63 6A 22                                 PUSH #34
 0F65 E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 0F68 83 C4 04                              ADD %ESP,#4
   756  miss:  PRINTSTRING(" missing");                         ->nps
 0F6B                      L1075  EQU $
 0F6B 81 EC 00 01 00 00                     SUB %ESP,#256
 0F71 89 E0                                 MOV %EAX,%ESP
 0F73 50                                    PUSH %EAX
 0F74 B8 93 02 00 00                        MOV %EAX,COT+#659
 0F79 50                                    PUSH %EAX
 0F7A 68 FF 00 00 00                        PUSH #255
 0F7F E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0F82 83 C4 0C                              ADD %ESP,#12
 0F85 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 0F88 81 C4 00 01 00 00                     ADD %ESP,#256
 0F8E EB 00                                 JMP L1073
   757  psd:   pos1 = 0
 0F90                      L1070  EQU $
 0F90 C7 05 A0 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A0],#0
   758  ps:    print ss
 0F9A                      L1068  EQU $
 0F9A E8 00 00                              CALL 'PRINTSS' (INTERNAL L1045 )
   759  nps:   NEWLINE
 0F9D                      L1073  EQU $
 0F9D E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
   760         %exit %if st = listing
 0FA0 8B 45 F0                              MOV %EAX,[%EBP-16]
 0FA3 3D 02 00 00 00                        CMP %EAX,#2
 0FA8 75 00                                 JNE L1102
 0FAA EB 00                                 JMP L1103
 0FAC                      L1102  EQU $
   761         st = listing
 0FAC C7 45 F0 02 00 00 00                  MOV DWORD PTR [%EBP-16],#2
   762      %repeat
 0FB3 EB 00                                 JMP L1060
 0FB5                      L1103  EQU $
   763      %if n >= 0 %start
 0FB5 8B 45 08                              MOV %EAX,[%EBP+8]
 0FB8 3D 00 00 00 00                        CMP %EAX,#0
 0FBD 7C 00                                 JL L1104
   764  !IMP80 BUG???         %signal 15,15 %if diag&4096 # 0
   765         %stop %if diag&4096 # 0
 0FBF A1 5C 02 00 00                        MOV %EAX,[DATA+025C]
 0FC4 25 00 10 00 00                        AND %EAX,#4096
 0FC9 3D 00 00 00 00                        CMP %EAX,#0
 0FCE 74 00                                 JE L1105
 0FD0 B8 FD 02 00 00                        MOV %EAX,#765
 0FD5 50                                    PUSH %EAX
 0FD6 31 C0                                 XOR %EAX,%EAX
 0FD8 50                                    PUSH %EAX
 0FD9 31 C0                                 XOR %EAX,%EAX
 0FDB 50                                    PUSH %EAX
 0FDC 31 C0                                 XOR %EAX,%EAX
 0FDE 50                                    PUSH %EAX
 0FDF E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 0FE2 83 C4 10                              ADD %ESP,#16
 0FE5                      L1105  EQU $
   766         %if n # 13 %start;           !order is fairly safe
 0FE5 8B 45 08                              MOV %EAX,[%EBP+8]
 0FE8 3D 0D 00 00 00                        CMP %EAX,#13
 0FED 74 00                                 JE L1106
   767            ocount = -1
 0FEF C7 05 84 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+0184],#-1
   768            gg = 0
 0FF9 C7 05 38 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0138],#0
   769            copy = 0;  quote = 0
 1003 C7 05 8C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+018C],#0
 100D C7 05 EC 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00EC],#0
   770            search base = 0;  escape class = 0
 1017 C7 05 B8 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01B8],#0
 1021 C7 05 08 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0108],#0
   771            gg = 0
 102B C7 05 38 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0138],#0
   772         %finish
 1035                      L1106  EQU $
   773         faulty = faulty+1
 1035 FF 05 BC 00 00 00                     INC DWORD PTR [DATA+00BC]
   774     
   775         !check that there haven<dq>t been too many faults
   776     
   777         fault rate = fault rate+3;  abandon(6) %IF fault rate > 30
 103B 83 05 C0 00 00 00 03                  ADD DWORD PTR [DATA+00C0],#3
 1042 A1 C0 00 00 00                        MOV %EAX,[DATA+00C0]
 1047 3D 1E 00 00 00                        CMP %EAX,#30
 104C 7E 00                                 JLE L1107
 104E 6A 06                                 PUSH #6
 1050 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 1053 83 C4 04                              ADD %ESP,#4
 1056                      L1107  EQU $
   778         fault rate = 3 %IF fault rate <= 0
 1056 A1 C0 00 00 00                        MOV %EAX,[DATA+00C0]
 105B 3D 00 00 00 00                        CMP %EAX,#0
 1060 7F 00                                 JG L1108
 1062 C7 05 C0 00 00 00 03 00 00 00         MOV DWORD PTR [DATA+00C0],#3
 106C                      L1108  EQU $
   779      %FINISH
 106C                      L1104  EQU $
   780      tbase = tstart
 106C 8B 75 F8                              MOV %ESI,[%EBP-8]
 106F 8B 46 E8                              MOV %EAX,[%ESI-24]
 1072 89 46 EC                              MOV [%ESI-20],%EAX
   781      %IF list <= 0 %AND sym # nl %START
 1075 A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 107A 3D 00 00 00 00                        CMP %EAX,#0
 107F 7F 00                                 JG L1109
 1081 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1086 3D 0A 00 00 00                        CMP %EAX,#10
 108B 74 00                                 JE L1109
   782         error margin = column
 108D A1 D8 00 00 00                        MOV %EAX,[DATA+00D8]
 1092 89 05 D0 00 00 00                     MOV [DATA+00D0],%EAX
   783         error sym = sym;  sym = nl
 1098 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 109D 89 05 D4 00 00 00                     MOV [DATA+00D4],%EAX
 10A3 C7 05 E4 00 00 00 0A 00 00 00         MOV DWORD PTR [DATA+00E4],#10
   784      %FINISH
 10AD                      L1109  EQU $
   785  %END
 10AD C9                                    LEAVE
 10AE C3                                    RET
 10AF                      L1042  EQU $
   786  
   787     dmin = dmin-1;  dict(dmin) = -1;            !end marker for starts & cycles
 10AF FF 4D 10                              DEC DWORD PTR [%EBP+16]
 10B2 FF 75 10                              PUSH DWORD PTR [%EBP+16]
 10B5 8B 7D FC                              MOV %EDI,[%EBP-4]
 10B8 FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 10BE 89 7D AC                              MOV [%EBP-84],%EDI
 10C1 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 10C4 83 C4 08                              ADD %ESP,#8
 10C7 89 C3                                 MOV %EBX,%EAX
 10C9 8B 75 AC                              MOV %ESI,[%EBP-84]
 10CC 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 10D2 C6 03 FF                              MOV BYTE PTR [%EBX],#255
 10D5 C6 43 01 FF                           MOV BYTE PTR [%EBX+1],#255
   788     abandon(2) %IF dmax = dmin
 10D9 A1 5C 01 00 00                        MOV %EAX,[DATA+015C]
 10DE 3B 45 10                              CMP %EAX,[%EBP+16]
 10E1 75 00                                 JNE L1110
 10E3 6A 02                                 PUSH #2
 10E5 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 10E8 83 C4 04                              ADD %ESP,#4
 10EB                      L1110  EQU $
   789  
   790     %IF list > 0 %AND level > 0 %START
 10EB A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 10F0 3D 00 00 00 00                        CMP %EAX,#0
 10F5 7E 00                                 JLE L1111
 10F7 8B 45 18                              MOV %EAX,[%EBP+24]
 10FA 3D 00 00 00 00                        CMP %EAX,#0
 10FF 7E 00                                 JLE L1111
   791        write(lines, 5);  spaces(level*3-1)
 1101 FF 35 C4 00 00 00                     PUSH DWORD PTR [DATA+00C4]
 1107 6A 05                                 PUSH #5
 1109 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 110C 83 C4 08                              ADD %ESP,#8
 110F 8B 45 18                              MOV %EAX,[%EBP+24]
 1112 F7 2D 9C 02 00 00                     IMUL DWORD PTR [COT+029C]
 1118 48                                    DEC %EAX
 1119 50                                    PUSH %EAX
 111A E8 42 00                              CALL 'SPACES' (EXTERN 66)
 111D 83 C4 04                              ADD %ESP,#4
   792        %IF block tag = 0 %START
 1120 8B 45 14                              MOV %EAX,[%EBP+20]
 1123 3D 00 00 00 00                        CMP %EAX,#0
 1128 75 00                                 JNE L1112
   793           printstring("Begin")
 112A 81 EC 00 01 00 00                     SUB %ESP,#256
 1130 89 E0                                 MOV %EAX,%ESP
 1132 50                                    PUSH %EAX
 1133 B8 A0 02 00 00                        MOV %EAX,COT+#672
 1138 50                                    PUSH %EAX
 1139 68 FF 00 00 00                        PUSH #255
 113E E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 1141 83 C4 0C                              ADD %ESP,#12
 1144 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 1147 81 C4 00 01 00 00                     ADD %ESP,#256
   794        %FINISH %ELSE %START
 114D EB 00                                 JMP L1113
 114F                      L1112  EQU $
   795           printstring("Procedure ");  print ident(block tag, 0)
 114F 81 EC 00 01 00 00                     SUB %ESP,#256
 1155 89 E0                                 MOV %EAX,%ESP
 1157 50                                    PUSH %EAX
 1158 B8 A6 02 00 00                        MOV %EAX,COT+#678
 115D 50                                    PUSH %EAX
 115E 68 FF 00 00 00                        PUSH #255
 1163 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 1166 83 C4 0C                              ADD %ESP,#12
 1169 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 116C 81 C4 00 01 00 00                     ADD %ESP,#256
 1172 FF 75 14                              PUSH DWORD PTR [%EBP+20]
 1175 6A 00                                 PUSH #0
 1177 E8 00 00                              CALL 'PRINTIDENT' (INTERNAL L1006 )
 117A 83 C4 08                              ADD %ESP,#8
   796        %FINISH
 117D                      L1113  EQU $
   797        newline
 117D E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
   798     %FINISH
 1180                      L1111  EQU $
   799  
   800     !deal with procedure definition (parameters)
   801  
   802     %IF block tag # 0 %START;                   !proc
 1180 8B 45 14                              MOV %EAX,[%EBP+20]
 1183 3D 00 00 00 00                        CMP %EAX,#0
 1188 74 00                                 JE L1114
   803        analyse;  compile %IF ss # 0
 118A E8 00 00                              CALL 'ANALYSE' (INTERNAL L1040 )
 118D A1 64 01 00 00                        MOV %EAX,[DATA+0164]
 1192 3D 00 00 00 00                        CMP %EAX,#0
 1197 74 00                                 JE L1115
 1199 E8 00 00                              CALL 'COMPILE' (INTERNAL L1041 )
 119C                      L1115  EQU $
   804  
   805        %IF block otype # 0 %START;              !external-ish
 119C 8B 45 C0                              MOV %EAX,[%EBP-64]
 119F 3D 00 00 00 00                        CMP %EAX,#0
 11A4 74 00                                 JE L1116
   806           %IF bflags&spec = 0 %START;           !definition
 11A6 8B 7D D8                              MOV %EDI,[%EBP-40]
 11A9 0F BF 07                              MOVSX %EAX,[%EDI]
 11AC 25 80 00 00 00                        AND %EAX,#128
 11B1 3D 00 00 00 00                        CMP %EAX,#0
 11B6 75 00                                 JNE L1117
   807              %IF progmode <= 0 %AND level = 1 %THEN progmode = -1 %C
   808+                                              %ELSE fault(7)
 11B8 A1 78 01 00 00                        MOV %EAX,[DATA+0178]
 11BD 3D 00 00 00 00                        CMP %EAX,#0
 11C2 7F 00                                 JG L1118
 11C4 8B 45 18                              MOV %EAX,[%EBP+24]
 11C7 3D 01 00 00 00                        CMP %EAX,#1
 11CC 75 00                                 JNE L1118
 11CE C7 05 78 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+0178],#-1
 11D8 EB 00                                 JMP L1119
 11DA                      L1118  EQU $
 11DA 6A 07                                 PUSH #7
 11DC E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 11DF 83 C4 04                              ADD %ESP,#4
 11E2                      L1119  EQU $
   809           %FINISH
 11E2                      L1117  EQU $
   810        %FINISH
 11E2                      L1116  EQU $
   811  
   812        new app = gapp;                          !generate app grammar
 11E2 E8 00 00                              CALL 'GAPP' (INTERNAL L1038 )
 11E5 89 45 B0                              MOV [%EBP-80],%EAX
   813        %IF spec given # 0 %START;               !definition after spec
 11E8 A1 04 01 00 00                        MOV %EAX,[DATA+0104]
 11ED 3D 00 00 00 00                        CMP %EAX,#0
 11F2 74 00                                 JE L1120
   814           fault(6) %IF new app # block app;     !different from spec
 11F4 8B 45 B0                              MOV %EAX,[%EBP-80]
 11F7 8B 5D BC                              MOV %EBX,[%EBP-68]
 11FA 3B 03                                 CMP %EAX,[%EBX]
 11FC 74 00                                 JE L1121
 11FE 6A 06                                 PUSH #6
 1200 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 1203 83 C4 04                              ADD %ESP,#4
 1206                      L1121  EQU $
   815        %FINISH
 1206                      L1120  EQU $
   816        block app = new app;                     !use the latest
 1206 8B 75 BC                              MOV %ESI,[%EBP-68]
 1209 8B 45 B0                              MOV %EAX,[%EBP-80]
 120C 89 06                                 MOV [%ESI],%EAX
   817  
   818        %IF level < 0 %START;                    !not procedure definition
 120E 8B 45 18                              MOV %EAX,[%EBP+24]
 1211 3D 00 00 00 00                        CMP %EAX,#0
 1216 7D 00                                 JGE L1122
   819           delete names(0)
 1218 6A 00                                 PUSH #0
 121A E8 00 00                              CALL 'DELETENAMES' (INTERNAL L1039 )
 121D 83 C4 04                              ADD %ESP,#4
   820           %RETURN
 1220 C9                                    LEAVE
 1221 C3                                    RET
   821        %FINISH
 1222                      L1122  EQU $
   822     %FINISH %ELSE %START
 1222 EB 00                                 JMP L1123
 1224                      L1114  EQU $
   823        open = 0;                                !can return from a block?
 1224 C7 45 F4 00 00 00 00                  MOV DWORD PTR [%EBP-12],#0
   824     %FINISH
 122B                      L1123  EQU $
   825  
   826     %CYCLE
 122B                      L1124  EQU $
   827        analyse
 122B E8 00 00                              CALL 'ANALYSE' (INTERNAL L1040 )
   828        %CONTINUE %IF ss = 0
 122E A1 64 01 00 00                        MOV %EAX,[DATA+0164]
 1233 3D 00 00 00 00                        CMP %EAX,#0
 1238 75 00                                 JNE L1125
 123A EB 00                                 JMP L1126
 123C                      L1125  EQU $
   829        compile
 123C E8 00 00                              CALL 'COMPILE' (INTERNAL L1041 )
   830        fault(-5) %IF dubious # 0
 123F A1 98 01 00 00                        MOV %EAX,[DATA+0198]
 1244 3D 00 00 00 00                        CMP %EAX,#0
 1249 74 00                                 JE L1127
 124B 6A FB                                 PUSH #-5
 124D E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 1250 83 C4 04                              ADD %ESP,#4
 1253                      L1127  EQU $
   831        flush buffer %IF bp >= 128
 1253 A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 1258 3D 80 00 00 00                        CMP %EAX,#128
 125D 7C 00                                 JL L1128
 125F E8 00 00                              CALL 'FLUSHBUFFER' (INTERNAL L1002 )
 1262                      L1128  EQU $
   832        %IF sstype > 0 %START;                 !block in or out
 1262 A1 7C 01 00 00                        MOV %EAX,[DATA+017C]
 1267 3D 00 00 00 00                        CMP %EAX,#0
 126C 7E 00                                 JLE L1129
   833           %EXIT %IF sstype = 2;               !out
 126E A1 7C 01 00 00                        MOV %EAX,[DATA+017C]
 1273 3D 02 00 00 00                        CMP %EAX,#2
 1278 75 00                                 JNE L1130
 127A EB 00                                 JMP L1131
 127C                      L1130  EQU $
   834           compile block(spec mode, block x, dmin, tmax, id)
 127C FF 35 80 01 00 00                     PUSH DWORD PTR [DATA+0180]
 1282 FF 35 50 02 00 00                     PUSH DWORD PTR [DATA+0250]
 1288 FF 75 10                              PUSH DWORD PTR [%EBP+16]
 128B FF 75 0C                              PUSH DWORD PTR [%EBP+12]
 128E FF 75 08                              PUSH DWORD PTR [%EBP+8]
 1291 E8 00 00                              CALL 'COMPILEBLOCK' (INTERNAL L1037 )
 1294 83 C4 14                              ADD %ESP,#20
   835           %EXIT %IF ss < 0;                   !endofprogram
 1297 A1 64 01 00 00                        MOV %EAX,[DATA+0164]
 129C 3D 00 00 00 00                        CMP %EAX,#0
 12A1 7D 00                                 JGE L1132
 12A3 EB 00                                 JMP L1131
 12A5                      L1132  EQU $
   836        %FINISH
 12A5                      L1129  EQU $
   837     %REPEAT
 12A5                      L1126  EQU $
 12A5 EB 00                                 JMP L1124
 12A7                      L1131  EQU $
   838     %IF list > 0 %AND level > 0 %START
 12A7 A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 12AC 3D 00 00 00 00                        CMP %EAX,#0
 12B1 7E 00                                 JLE L1133
 12B3 8B 45 18                              MOV %EAX,[%EBP+24]
 12B6 3D 00 00 00 00                        CMP %EAX,#0
 12BB 7E 00                                 JLE L1133
   839        write(lines, 5);  spaces(level*3-1)
 12BD FF 35 C4 00 00 00                     PUSH DWORD PTR [DATA+00C4]
 12C3 6A 05                                 PUSH #5
 12C5 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 12C8 83 C4 08                              ADD %ESP,#8
 12CB 8B 45 18                              MOV %EAX,[%EBP+24]
 12CE F7 2D 9C 02 00 00                     IMUL DWORD PTR [COT+029C]
 12D4 48                                    DEC %EAX
 12D5 50                                    PUSH %EAX
 12D6 E8 42 00                              CALL 'SPACES' (EXTERN 66)
 12D9 83 C4 04                              ADD %ESP,#4
   840        printstring("End")
 12DC 81 EC 00 01 00 00                     SUB %ESP,#256
 12E2 89 E0                                 MOV %EAX,%ESP
 12E4 50                                    PUSH %EAX
 12E5 B8 B1 02 00 00                        MOV %EAX,COT+#689
 12EA 50                                    PUSH %EAX
 12EB 68 FF 00 00 00                        PUSH #255
 12F0 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 12F3 83 C4 0C                              ADD %ESP,#12
 12F6 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 12F9 81 C4 00 01 00 00                     ADD %ESP,#256
   841        newline
 12FF E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
   842     %FINISH
 1302                      L1133  EQU $
   843     delete names(0)
 1302 6A 00                                 PUSH #0
 1304 E8 00 00                              CALL 'DELETENAMES' (INTERNAL L1039 )
 1307 83 C4 04                              ADD %ESP,#4
   844     %RETURN
 130A C9                                    LEAVE
 130B C3                                    RET
   845  
   846     %INTEGERFN gapp;                            !generate app grammar (backwards)
 130C EB 00                                 JMP L1134
 130E                      L1038  EQU $
 130E C8 00 00 03                           ENTER 0000,3
   847        %CONSTINTEGER comma = 140;               !psep
   848        %ROUTINESPEC set cell(%INTEGER g, tt)
   849        %ROUTINESPEC class(%RECORD(tagfm)%NAME v)
   850        %RECORD(tagfm)%NAME v
   851        %INTEGER p, link, tp, c, ap, t
   852  
   853        %RESULT = 0 %IF tmax = local;            !no app needed
 1312 8B 7D F8                              MOV %EDI,[%EBP-8]
 1315 8B 47 0C                              MOV %EAX,[%EDI+12]
 1318 3B 05 B0 01 00 00                     CMP %EAX,[DATA+01B0]
 131E 75 00                                 JNE L1137
 1320 31 C0                                 XOR %EAX,%EAX
 1322 C9                                    LEAVE
 1323 C3                                    RET
 1324                      L1137  EQU $
   854  
   855        p = gmax1;  link = 0;  t = tmax
 1324 C7 45 EC CF 02 00 00                  MOV DWORD PTR [%EBP-20],#719
 132B C7 45 E8 00 00 00 00                  MOV DWORD PTR [%EBP-24],#0
 1332 8B 5D F8                              MOV %EBX,[%EBP-8]
 1335 8B 43 0C                              MOV %EAX,[%EBX+12]
 1338 89 45 D8                              MOV [%EBP-40],%EAX
   856  
   857        %CYCLE
 133B                      L1138  EQU $
   858           v == tag(t);  t = t-1
 133B FF 75 D8                              PUSH DWORD PTR [%EBP-40]
 133E 8B 75 FC                              MOV %ESI,[%EBP-4]
 1341 FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 1347 89 75 D4                              MOV [%EBP-44],%ESI
 134A E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 134D 83 C4 08                              ADD %ESP,#8
 1350 89 C7                                 MOV %EDI,%EAX
 1352 8B 5D D4                              MOV %EBX,[%EBP-44]
 1355 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 135B 89 7D F0                              MOV [%EBP-16],%EDI
 135E FF 4D D8                              DEC DWORD PTR [%EBP-40]
   859           class(v);                             !deduce class from tag
 1361 FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 1364 E8 00 00                              CALL 'CLASS' (INTERNAL L1136 )
 1367 83 C4 04                              ADD %ESP,#4
   860           %IF c < 0 %START;                     !insert %PARAM
 136A 8B 45 E0                              MOV %EAX,[%EBP-32]
 136D 3D 00 00 00 00                        CMP %EAX,#0
 1372 7D 00                                 JGE L1139
   861              c = -c
 1374 F7 5D E0                              NEG DWORD PTR [%EBP-32]
   862              set cell(196, tp)
 1377 68 C4 00 00 00                        PUSH #196
 137C FF 75 E4                              PUSH DWORD PTR [%EBP-28]
 137F E8 00 00                              CALL 'SETCELL' (INTERNAL L1135 )
 1382 83 C4 08                              ADD %ESP,#8
   863              tp = -1
 1385 C7 45 E4 FF FF FF FF                  MOV DWORD PTR [%EBP-28],#-1
   864           %FINISH
 138C                      L1139  EQU $
   865           set cell(c, tp)
 138C FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 138F FF 75 E4                              PUSH DWORD PTR [%EBP-28]
 1392 E8 00 00                              CALL 'SETCELL' (INTERNAL L1135 )
 1395 83 C4 08                              ADD %ESP,#8
   866           %EXIT %IF t = local;                  !end of parameters
 1398 8B 45 D8                              MOV %EAX,[%EBP-40]
 139B 3B 05 B0 01 00 00                     CMP %EAX,[DATA+01B0]
 13A1 75 00                                 JNE L1140
 13A3 EB 00                                 JMP L1141
 13A5                      L1140  EQU $
   867           set cell(comma, -1);                  !add the separating comma
 13A5 68 8C 00 00 00                        PUSH #140
 13AA 6A FF                                 PUSH #-1
 13AC E8 00 00                              CALL 'SETCELL' (INTERNAL L1135 )
 13AF 83 C4 08                              ADD %ESP,#8
   868        %REPEAT
 13B2 EB 00                                 JMP L1138
 13B4                      L1141  EQU $
   869        abandon(3) %IF gmax > gmin
 13B4 A1 64 0B 00 00                        MOV %EAX,[DATA+0B64]
 13B9 3B 05 58 01 00 00                     CMP %EAX,[DATA+0158]
 13BF 7E 00                                 JLE L1142
 13C1 6A 03                                 PUSH #3
 13C3 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 13C6 83 C4 04                              ADD %ESP,#4
 13C9                      L1142  EQU $
   870  
   871        %RESULT = link
 13C9 8B 45 E8                              MOV %EAX,[%EBP-24]
 13CC C9                                    LEAVE
 13CD C3                                    RET
   872  
   873        %ROUTINE set cell(%INTEGER g, tt)
 13CE EB 00                                 JMP L1143
 13D0                      L1135  EQU $
 13D0 C8 00 00 04                           ENTER 0000,4
   874  
   875           !add the cell to the grammar, combining common tails
   876  
   877           %WHILE p # gmax %CYCLE
 13D4                      L1144  EQU $
 13D4 8B 75 F4                              MOV %ESI,[%EBP-12]
 13D7 8B 46 EC                              MOV %EAX,[%ESI-20]
 13DA 3B 05 64 0B 00 00                     CMP %EAX,[DATA+0B64]
 13E0 74 00                                 JE L1145
   878              p = p+1
 13E2 FF 46 EC                              INC DWORD PTR [%ESI-20]
   879              %IF glink(p) = link %AND gram(p) = g %START
 13E5 FF 76 EC                              PUSH DWORD PTR [%ESI-20]
 13E8 68 64 00 00 00                        PUSH COT+#100
 13ED E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 13F0 83 C4 08                              ADD %ESP,#8
 13F3 89 C7                                 MOV %EDI,%EAX
 13F5 0F BF 87 70 1A 00 00                  MOVSX %EAX,[%EDI+DATA+6768]
 13FC 8B 5D F4                              MOV %EBX,[%EBP-12]
 13FF 3B 43 E8                              CMP %EAX,[%EBX-24]
 1402 75 00                                 JNE L1146
 1404 FF 73 EC                              PUSH DWORD PTR [%EBX-20]
 1407 68 64 00 00 00                        PUSH COT+#100
 140C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 140F 83 C4 08                              ADD %ESP,#8
 1412 89 C6                                 MOV %ESI,%EAX
 1414 0F BF 86 FC 0C 00 00                  MOVSX %EAX,[%ESI+DATA+3324]
 141B 3B 45 0C                              CMP %EAX,[%EBP+12]
 141E 75 00                                 JNE L1146
   880                 %IF tt < 0 %OR (gram(p+1) = tt %AND glink(p+1)=ap) %START
 1420 8B 45 08                              MOV %EAX,[%EBP+8]
 1423 3D 00 00 00 00                        CMP %EAX,#0
 1428 7C 00                                 JL L1147
 142A 8B 7D F4                              MOV %EDI,[%EBP-12]
 142D 8B 47 EC                              MOV %EAX,[%EDI-20]
 1430 40                                    INC %EAX
 1431 50                                    PUSH %EAX
 1432 68 64 00 00 00                        PUSH COT+#100
 1437 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 143A 83 C4 08                              ADD %ESP,#8
 143D 89 C3                                 MOV %EBX,%EAX
 143F 0F BF 9B FC 0C 00 00                  MOVSX %EBX,[%EBX+DATA+3324]
 1446 3B 5D 08                              CMP %EBX,[%EBP+8]
 1449 75 00                                 JNE L1148
 144B 8B 75 F4                              MOV %ESI,[%EBP-12]
 144E 8B 46 EC                              MOV %EAX,[%ESI-20]
 1451 40                                    INC %EAX
 1452 50                                    PUSH %EAX
 1453 68 64 00 00 00                        PUSH COT+#100
 1458 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 145B 83 C4 08                              ADD %ESP,#8
 145E 89 C7                                 MOV %EDI,%EAX
 1460 0F BF 87 70 1A 00 00                  MOVSX %EAX,[%EDI+DATA+6768]
 1467 8B 5D F4                              MOV %EBX,[%EBP-12]
 146A 3B 43 DC                              CMP %EAX,[%EBX-36]
 146D 75 00                                 JNE L1148
 146F                      L1147  EQU $
   881                    link = p;                    !already there
 146F 8B 75 F4                              MOV %ESI,[%EBP-12]
 1472 8B 46 EC                              MOV %EAX,[%ESI-20]
 1475 89 46 E8                              MOV [%ESI-24],%EAX
   882                    %RETURN
 1478 C9                                    LEAVE
 1479 C3                                    RET
   883                 %FINISH
 147A                      L1148  EQU $
   884              %FINISH
 147A                      L1146  EQU $
   885           %REPEAT
 147A EB 00                                 JMP L1144
 147C                      L1145  EQU $
   886  
   887           !add a new cell
   888  
   889           gmax = gmax+1
 147C FF 05 64 0B 00 00                     INC DWORD PTR [DATA+0B64]
   890           gram(gmax) = g
 1482 FF 35 64 0B 00 00                     PUSH DWORD PTR [DATA+0B64]
 1488 68 64 00 00 00                        PUSH COT+#100
 148D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1490 83 C4 08                              ADD %ESP,#8
 1493 89 C7                                 MOV %EDI,%EAX
 1495 8B 45 0C                              MOV %EAX,[%EBP+12]
 1498 88 87 FC 0C 00 00                     MOV [%EDI+DATA+3324],%AL
 149E 88 A7 FD 0C 00 00                     MOV [%EDI+DATA+3325],%AH
   891           glink(gmax) = link
 14A4 FF 35 64 0B 00 00                     PUSH DWORD PTR [DATA+0B64]
 14AA 68 64 00 00 00                        PUSH COT+#100
 14AF E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 14B2 83 C4 08                              ADD %ESP,#8
 14B5 89 C3                                 MOV %EBX,%EAX
 14B7 8B 75 F4                              MOV %ESI,[%EBP-12]
 14BA 8B 46 E8                              MOV %EAX,[%ESI-24]
 14BD 88 83 70 1A 00 00                     MOV [%EBX+DATA+6768],%AL
 14C3 88 A3 71 1A 00 00                     MOV [%EBX+DATA+6769],%AH
   892           link = gmax
 14C9 A1 64 0B 00 00                        MOV %EAX,[DATA+0B64]
 14CE 89 46 E8                              MOV [%ESI-24],%EAX
   893  
   894           %IF tt >= 0 %START;             ! set type cell
 14D1 8B 45 08                              MOV %EAX,[%EBP+8]
 14D4 3D 00 00 00 00                        CMP %EAX,#0
 14D9 7C 00                                 JL L1149
   895              gmax = gmax+1
 14DB FF 05 64 0B 00 00                     INC DWORD PTR [DATA+0B64]
   896              gram(gmax) = tt
 14E1 FF 35 64 0B 00 00                     PUSH DWORD PTR [DATA+0B64]
 14E7 68 64 00 00 00                        PUSH COT+#100
 14EC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 14EF 83 C4 08                              ADD %ESP,#8
 14F2 89 C7                                 MOV %EDI,%EAX
 14F4 8B 45 08                              MOV %EAX,[%EBP+8]
 14F7 88 87 FC 0C 00 00                     MOV [%EDI+DATA+3324],%AL
 14FD 88 A7 FD 0C 00 00                     MOV [%EDI+DATA+3325],%AH
   897              glink(gmax) = ap
 1503 FF 35 64 0B 00 00                     PUSH DWORD PTR [DATA+0B64]
 1509 68 64 00 00 00                        PUSH COT+#100
 150E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1511 83 C4 08                              ADD %ESP,#8
 1514 89 C3                                 MOV %EBX,%EAX
 1516 8B 75 F4                              MOV %ESI,[%EBP-12]
 1519 8B 46 DC                              MOV %EAX,[%ESI-36]
 151C 88 83 70 1A 00 00                     MOV [%EBX+DATA+6768],%AL
 1522 88 A3 71 1A 00 00                     MOV [%EBX+DATA+6769],%AH
   898           %FINISH
 1528                      L1149  EQU $
   899  
   900           p = gmax
 1528 8B 7D F4                              MOV %EDI,[%EBP-12]
 152B A1 64 0B 00 00                        MOV %EAX,[DATA+0B64]
 1530 89 47 EC                              MOV [%EDI-20],%EAX
   901        %END
 1533 C9                                    LEAVE
 1534 C3                                    RET
 1535                      L1143  EQU $
   902  
   903        %ROUTINE class(%RECORD(tagfm)%NAME v)
 1535                      L1136  EQU $
 1535 C8 00 00 04                           ENTER 0000,4
   904           %CONSTINTEGER err    = 89
   905           %CONSTINTEGER rtp    = 100
   906           %CONSTINTEGER fnp    = 101
   907           %CONSTINTEGER mapp   = 102
   908           %CONSTINTEGER predp  = 103
   909           %CONSTINTEGERARRAY class map(0:15) = %C
   910+          err,1764, 247, err(4), -rtp, -fnp, -mapp, -predp, err, 214,
   911+          err, 229, err
   912           %INTEGER tags, type, form
   913           ap = 0
 1539 8B 5D F4                              MOV %EBX,[%EBP-12]
 153C C7 43 DC 00 00 00 00                  MOV DWORD PTR [%EBX-36],#0
   914           tags = v_flags
 1543 8B 75 08                              MOV %ESI,[%EBP+8]
 1546 0F BF 46 08                           MOVSX %EAX,[%ESI+8]
 154A 89 45 EC                              MOV [%EBP-20],%EAX
   915           type = tags>>4&7;  form = tags&15
 154D 8B 45 EC                              MOV %EAX,[%EBP-20]
 1550 C1 E8 04                              SHR %EAX,#4
 1553 25 07 00 00 00                        AND %EAX,#7
 1558 89 45 E8                              MOV [%EBP-24],%EAX
 155B 8B 45 EC                              MOV %EAX,[%EBP-20]
 155E 25 0F 00 00 00                        AND %EAX,#15
 1563 89 45 E4                              MOV [%EBP-28],%EAX
   916           tp = v_format<<3!type
 1566 8B 7D 08                              MOV %EDI,[%EBP+8]
 1569 8B 47 04                              MOV %EAX,[%EDI+4]
 156C C1 E0 03                              SHL %EAX,#3
 156F 0B 45 E8                              OR %EAX,[%EBP-24]
 1572 89 43 E4                              MOV [%EBX-28],%EAX
   917           c = class map(form)
 1575 FF 75 E4                              PUSH DWORD PTR [%EBP-28]
 1578 68 B8 02 00 00                        PUSH COT+#696
 157D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1580 83 C4 08                              ADD %ESP,#8
 1583 89 C3                                 MOV %EBX,%EAX
 1585 8B 75 F4                              MOV %ESI,[%EBP-12]
 1588 8B 9B 64 2C 00 00                     MOV %EBX,[%EBX+DATA+11364]
 158E 89 5E E0                              MOV [%ESI-32],%EBX
   918           c = 208 %AND tp = 0 %IF type = 0 %AND form = 2;  !%NAME
 1591 8B 45 E8                              MOV %EAX,[%EBP-24]
 1594 3D 00 00 00 00                        CMP %EAX,#0
 1599 75 00                                 JNE L1150
 159B 8B 45 E4                              MOV %EAX,[%EBP-28]
 159E 3D 02 00 00 00                        CMP %EAX,#2
 15A3 75 00                                 JNE L1150
 15A5 C7 46 E0 D0 00 00 00                  MOV DWORD PTR [%ESI-32],#208
 15AC C7 46 E4 00 00 00 00                  MOV DWORD PTR [%ESI-28],#0
 15B3                      L1150  EQU $
   919           ap = v_app %IF tags&parameters # 0
 15B3 8B 45 EC                              MOV %EAX,[%EBP-20]
 15B6 25 00 10 00 00                        AND %EAX,#4096
 15BB 3D 00 00 00 00                        CMP %EAX,#0
 15C0 74 00                                 JE L1151
 15C2 8B 7D F4                              MOV %EDI,[%EBP-12]
 15C5 8B 5D 08                              MOV %EBX,[%EBP+8]
 15C8 8B 03                                 MOV %EAX,[%EBX]
 15CA 89 47 DC                              MOV [%EDI-36],%EAX
 15CD                      L1151  EQU $
   920        %END
 15CD C9                                    LEAVE
 15CE C3                                    RET
 15CF                      L1143  EQU $
   921     %END
   922  
   923  %ROUTINE delete names(%INTEGER quiet)
 15CF C9                                    LEAVE
 15D0 C3                                    RET
 15D1                      L1134  EQU $
 15D1                      L1039  EQU $
 15D1 C8 00 00 03                           ENTER 0000,3
   924     %INTEGER flags
   925     %RECORD(tagfm)%NAME tx
   926     %WHILE tmax > tbase %CYCLE
 15D5                      L1152  EQU $
 15D5 8B 75 F8                              MOV %ESI,[%EBP-8]
 15D8 8B 46 0C                              MOV %EAX,[%ESI+12]
 15DB 3B 46 EC                              CMP %EAX,[%ESI-20]
 15DE 7E 00                                 JLE L1153
   927        x = tmax;  tmax = tmax-1
 15E0 8B 46 0C                              MOV %EAX,[%ESI+12]
 15E3 89 05 A0 00 00 00                     MOV [DATA+00A0],%EAX
 15E9 FF 4E 0C                              DEC DWORD PTR [%ESI+12]
   928        tx == tag(x)
 15EC FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 15F2 8B 7D FC                              MOV %EDI,[%EBP-4]
 15F5 FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 15FB 89 7D E8                              MOV [%EBP-24],%EDI
 15FE E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1601 83 C4 08                              ADD %ESP,#8
 1604 89 C3                                 MOV %EBX,%EAX
 1606 8B 75 E8                              MOV %ESI,[%EBP-24]
 1609 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 160F 89 5D EC                              MOV [%EBP-20],%EBX
   929        flags = tx_flags
 1612 8B 7D EC                              MOV %EDI,[%EBP-20]
 1615 0F BF 47 08                           MOVSX %EAX,[%EDI+8]
 1619 89 45 F0                              MOV [%EBP-16],%EAX
   930        fault(20) %IF flags&spec # 0 %and flags&own bit = 0
 161C 8B 45 F0                              MOV %EAX,[%EBP-16]
 161F 25 80 00 00 00                        AND %EAX,#128
 1624 3D 00 00 00 00                        CMP %EAX,#0
 1629 74 00                                 JE L1154
 162B 8B 45 F0                              MOV %EAX,[%EBP-16]
 162E 25 00 02 00 00                        AND %EAX,#512
 1633 3D 00 00 00 00                        CMP %EAX,#0
 1638 75 00                                 JNE L1154
 163A 6A 14                                 PUSH #20
 163C E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 163F 83 C4 04                              ADD %ESP,#4
 1642                      L1154  EQU $
   931                 {spec with no definition & not external}
   932        %IF flags&used bit = 0 %AND level >= 0 %AND list <= 0 %START
 1642 8B 45 F0                              MOV %EAX,[%EBP-16]
 1645 25 00 80 00 00                        AND %EAX,#32768
 164A 3D 00 00 00 00                        CMP %EAX,#0
 164F 75 00                                 JNE L1155
 1651 8B 5D F8                              MOV %EBX,[%EBP-8]
 1654 8B 43 18                              MOV %EAX,[%EBX+24]
 1657 3D 00 00 00 00                        CMP %EAX,#0
 165C 7C 00                                 JL L1155
 165E A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 1663 3D 00 00 00 00                        CMP %EAX,#0
 1668 7F 00                                 JG L1155
   933           fault(-3) %IF quiet = 0;          !unused
 166A 8B 45 08                              MOV %EAX,[%EBP+8]
 166D 3D 00 00 00 00                        CMP %EAX,#0
 1672 75 00                                 JNE L1156
 1674 6A FD                                 PUSH #-3
 1676 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 1679 83 C4 04                              ADD %ESP,#4
 167C                      L1156  EQU $
   934        %FINISH
 167C                      L1155  EQU $
   935        dict(tx_text) = tx_link
 167C 8B 75 EC                              MOV %ESI,[%EBP-20]
 167F FF 76 0C                              PUSH DWORD PTR [%ESI+12]
 1682 8B 7D FC                              MOV %EDI,[%EBP-4]
 1685 FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 168B 89 7D E4                              MOV [%EBP-28],%EDI
 168E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1691 83 C4 08                              ADD %ESP,#8
 1694 89 C3                                 MOV %EBX,%EAX
 1696 8B 75 E4                              MOV %ESI,[%EBP-28]
 1699 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 169F 8B 7D EC                              MOV %EDI,[%EBP-20]
 16A2 8B 47 0E                              MOV %EAX,[%EDI+14]
 16A5 88 03                                 MOV [%EBX],%AL
 16A7 88 63 01                              MOV [%EBX+1],%AH
   936     %REPEAT
 16AA EB 00                                 JMP L1152
 16AC                      L1153  EQU $
   937  %END
 16AC C9                                    LEAVE
 16AD C3                                    RET
 16AE                      L1134  EQU $
   938  
   939  %ROUTINE analyse
 16AE                      L1040  EQU $
 16AE C8 00 00 03                           ENTER 0000,3
   940  
   941     %CONSTINTEGER order bits = x'3000', order bit = x'1000'
   942     %CONSTINTEGER escape     = x'1000'
   943     %INTEGER strp, mark, flags, prot err, k, s, c
   944     %OWNINTEGER key = 0
   945     %SHORTINTEGER node
   946     %SHORTINTEGERNAME z
   947     %RECORD(arfm)%NAME arp
   948  !emas:   %INTEGER node
   949  !emas:   %INTEGERNAME z
   950     %SWITCH act(actions:phrasal), paction(0:15)
   951  
   952     %ROUTINE trace analysis
 16B2 EB 00                                 JMP L1157
 16B4                      L1158  EQU $
 16B4 C8 00 00 04                           ENTER 0000,4
   953        !diagnostic trace routine (diagnose&1 # 0)
   954        %INTEGER a
   955        %ROUTINE show(%INTEGER a)
 16B8 EB 00                                 JMP L1159
 16BA                      L1160  EQU $
 16BA C8 00 00 05                           ENTER 0000,5
   956           %IF 0 < a < 130 %START
 16BE 8B 45 08                              MOV %EAX,[%EBP+8]
 16C1 3D 00 00 00 00                        CMP %EAX,#0
 16C6 7E 00                                 JLE L1161
 16C8 3D 82 00 00 00                        CMP %EAX,#130
 16CD 7D 00                                 JGE L1161
   957              space
 16CF E8 41 00                              CALL 'SPACE' (EXTERN 65)
   958              printstring(text(a))
 16D2 FF 75 08                              PUSH DWORD PTR [%EBP+8]
 16D5 68 24 00 00 00                        PUSH COT+#36
 16DA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 16DD 83 C4 08                              ADD %ESP,#8
 16E0 89 C3                                 MOV %EBX,%EAX
 16E2 81 EC 00 01 00 00                     SUB %ESP,#256
 16E8 89 E0                                 MOV %EAX,%ESP
 16EA 50                                    PUSH %EAX
 16EB 8D 9B 64 02 00 00                     LEA %EBX,[%EBX+DATA+612]
 16F1 53                                    PUSH %EBX
 16F2 68 FF 00 00 00                        PUSH #255
 16F7 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 16FA 83 C4 0C                              ADD %ESP,#12
 16FD E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 1700 81 C4 00 01 00 00                     ADD %ESP,#256
   959           %FINISH %ELSE write(a, 3)
 1706 EB 00                                 JMP L1162
 1708                      L1161  EQU $
 1708 FF 75 08                              PUSH DWORD PTR [%EBP+8]
 170B 6A 03                                 PUSH #3
 170D E8 40 00                              CALL 'WRITE' (EXTERN 64)
 1710 83 C4 08                              ADD %ESP,#8
 1713                      L1162  EQU $
   960        %END
 1713 C9                                    LEAVE
 1714 C3                                    RET
 1715                      L1159  EQU $
   961        %OWNINTEGER la1=0, la2=0, lsa=0, lt=0
   962        newline %IF mon pos # pos %AND sym # nl
 1715 A1 E0 00 00 00                        MOV %EAX,[DATA+00E0]
 171A 3B 05 A8 01 00 00                     CMP %EAX,[DATA+01A8]
 1720 74 00                                 JE L1163
 1722 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1727 3D 0A 00 00 00                        CMP %EAX,#10
 172C 74 00                                 JE L1163
 172E E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
 1731                      L1163  EQU $
   963        mon pos = pos
 1731 A1 A8 01 00 00                        MOV %EAX,[DATA+01A8]
 1736 89 05 E0 00 00 00                     MOV [DATA+00E0],%EAX
   964        write(g, 3)
 173C FF 35 34 01 00 00                     PUSH DWORD PTR [DATA+0134]
 1742 6A 03                                 PUSH #3
 1744 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 1747 83 C4 08                              ADD %ESP,#8
   965        space
 174A E8 41 00                              CALL 'SPACE' (EXTERN 65)
   966        printstring(text(class))
 174D FF 35 9C 00 00 00                     PUSH DWORD PTR [DATA+009C]
 1753 68 24 00 00 00                        PUSH COT+#36
 1758 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 175B 83 C4 08                              ADD %ESP,#8
 175E 89 C6                                 MOV %ESI,%EAX
 1760 81 EC 00 01 00 00                     SUB %ESP,#256
 1766 89 E0                                 MOV %EAX,%ESP
 1768 50                                    PUSH %EAX
 1769 8D B6 64 02 00 00                     LEA %ESI,[%ESI+DATA+612]
 176F 56                                    PUSH %ESI
 1770 68 FF 00 00 00                        PUSH #255
 1775 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 1778 83 C4 0C                              ADD %ESP,#12
 177B E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 177E 81 C4 00 01 00 00                     ADD %ESP,#256
   967        printsymbol('"') %IF gg&trans bit # 0
 1784 A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 1789 25 00 40 00 00                        AND %EAX,#16384
 178E 3D 00 00 00 00                        CMP %EAX,#0
 1793 74 00                                 JE L1164
 1795 6A 22                                 PUSH #34
 1797 E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 179A 83 C4 04                              ADD %ESP,#4
 179D                      L1164  EQU $
   968        a = gg>>8&15
 179D A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 17A2 C1 E8 08                              SHR %EAX,#8
 17A5 25 0F 00 00 00                        AND %EAX,#15
 17AA 89 45 EC                              MOV [%EBP-20],%EAX
   969        %IF a # 0 %START
 17AD 8B 45 EC                              MOV %EAX,[%EBP-20]
 17B0 3D 00 00 00 00                        CMP %EAX,#0
 17B5 74 00                                 JE L1165
   970           printsymbol('{')
 17B7 6A 7B                                 PUSH #123
 17B9 E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 17BC 83 C4 04                              ADD %ESP,#4
   971           write(a, 0)
 17BF FF 75 EC                              PUSH DWORD PTR [%EBP-20]
 17C2 6A 00                                 PUSH #0
 17C4 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 17C7 83 C4 08                              ADD %ESP,#8
   972           printsymbol('}')
 17CA 6A 7D                                 PUSH #125
 17CC E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 17CF 83 C4 04                              ADD %ESP,#4
   973        %FINISH
 17D2                      L1165  EQU $
   974        %IF atom1 # la1 %OR atom2 # la2 %OR lsa # subatom %C
   975+                       %OR lt # type %START
 17D2 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 17D7 3B 05 A8 2C 00 00                     CMP %EAX,[DATA+2CA8]
 17DD 75 00                                 JNE L1166
 17DF A1 A8 00 00 00                        MOV %EAX,[DATA+00A8]
 17E4 3B 05 AC 2C 00 00                     CMP %EAX,[DATA+2CAC]
 17EA 75 00                                 JNE L1166
 17EC A1 B0 2C 00 00                        MOV %EAX,[DATA+2CB0]
 17F1 3B 05 AC 00 00 00                     CMP %EAX,[DATA+00AC]
 17F7 75 00                                 JNE L1166
 17F9 A1 B4 2C 00 00                        MOV %EAX,[DATA+2CB4]
 17FE 3B 05 B0 00 00 00                     CMP %EAX,[DATA+00B0]
 1804 74 00                                 JE L1167
 1806                      L1166  EQU $
   976           printstring(" [")
 1806 81 EC 00 01 00 00                     SUB %ESP,#256
 180C 89 E0                                 MOV %EAX,%ESP
 180E 50                                    PUSH %EAX
 180F B8 E8 02 00 00                        MOV %EAX,COT+#744
 1814 50                                    PUSH %EAX
 1815 68 FF 00 00 00                        PUSH #255
 181A E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 181D 83 C4 0C                              ADD %ESP,#12
 1820 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 1823 81 C4 00 01 00 00                     ADD %ESP,#256
   977           la1 = atom1
 1829 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 182E 89 05 A8 2C 00 00                     MOV [DATA+2CA8],%EAX
   978           show(la1)
 1834 FF 35 A8 2C 00 00                     PUSH DWORD PTR [DATA+2CA8]
 183A E8 00 00                              CALL 'SHOW' (INTERNAL L1160 )
 183D 83 C4 04                              ADD %ESP,#4
   979           la2 = atom2
 1840 A1 A8 00 00 00                        MOV %EAX,[DATA+00A8]
 1845 89 05 AC 2C 00 00                     MOV [DATA+2CAC],%EAX
   980           show(la2)
 184B FF 35 AC 2C 00 00                     PUSH DWORD PTR [DATA+2CAC]
 1851 E8 00 00                              CALL 'SHOW' (INTERNAL L1160 )
 1854 83 C4 04                              ADD %ESP,#4
   981           lsa = subatom
 1857 A1 AC 00 00 00                        MOV %EAX,[DATA+00AC]
 185C 89 05 B0 2C 00 00                     MOV [DATA+2CB0],%EAX
   982           write(lsa, 3)
 1862 FF 35 B0 2C 00 00                     PUSH DWORD PTR [DATA+2CB0]
 1868 6A 03                                 PUSH #3
 186A E8 40 00                              CALL 'WRITE' (EXTERN 64)
 186D 83 C4 08                              ADD %ESP,#8
   983           lt = type
 1870 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 1875 89 05 B4 2C 00 00                     MOV [DATA+2CB4],%EAX
   984           write(lt, 5)
 187B FF 35 B4 2C 00 00                     PUSH DWORD PTR [DATA+2CB4]
 1881 6A 05                                 PUSH #5
 1883 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 1886 83 C4 08                              ADD %ESP,#8
   985           printsymbol(']')
 1889 6A 5D                                 PUSH #93
 188B E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 188E 83 C4 04                              ADD %ESP,#4
   986        %FINISH
 1891                      L1167  EQU $
   987        newline
 1891 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
   988     %END
 1894 C9                                    LEAVE
 1895 C3                                    RET
 1896                      L1157  EQU $
   989  
   990  %ROUTINE get sym
 1896                      L1168  EQU $
 1896 C8 00 00 04                           ENTER 0000,4
   991     readsymbol(sym)
 189A 68 83 00 00 00                        PUSH #131
 189F 68 E4 00 00 00                        PUSH DATA+#228
 18A4 E8 22 00                              CALL 'READSYMBOL' (EXTERN 34)
 18A7 83 C4 08                              ADD %ESP,#8
   992     pos = pos+1 %IF pos # 133
 18AA A1 A8 01 00 00                        MOV %EAX,[DATA+01A8]
 18AF 3D 85 00 00 00                        CMP %EAX,#133
 18B4 74 00                                 JE L1169
 18B6 FF 05 A8 01 00 00                     INC DWORD PTR [DATA+01A8]
 18BC                      L1169  EQU $
   993     char(pos) = sym
 18BC FF 35 A8 01 00 00                     PUSH DWORD PTR [DATA+01A8]
 18C2 68 14 00 00 00                        PUSH COT+#20
 18C7 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 18CA 83 C4 08                              ADD %ESP,#8
 18CD 89 C7                                 MOV %EDI,%EAX
 18CF A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 18D4 88 87 C0 01 00 00                     MOV [%EDI+DATA+448],%AL
   994     printsymbol(sym) %IF list <= 0
 18DA A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 18DF 3D 00 00 00 00                        CMP %EAX,#0
 18E4 7F 00                                 JG L1170
 18E6 FF 35 E4 00 00 00                     PUSH DWORD PTR [DATA+00E4]
 18EC E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 18EF 83 C4 04                              ADD %ESP,#4
 18F2                      L1170  EQU $
   995     column = column+1
 18F2 FF 05 D8 00 00 00                     INC DWORD PTR [DATA+00D8]
   996  %END
 18F8 C9                                    LEAVE
 18F9 C3                                    RET
 18FA                      L1157  EQU $
   997  %ROUTINE read sym
   998     %owninteger Last = 0
 18FA                      L1171  EQU $
 18FA C8 00 00 04                           ENTER 0000,4
   999  %CONSTBYTEINTEGERARRAY mapped(0:127) = %C
  1000+    0,  0,  0,  0,   0,  0,  0,  0,    0,  0, nl,  0,  3 ,  0,  0,  0,
  1001+    0,  0,  0,  0,   0,  0,  0,  0,    0,  0,  0,  0,   0,  0,  0,  0,
  1002+   0 ,'!','"','#', '$', 1 ,'&', 39,  '(',')','*','+', ',','-','.','/',
  1003+  '0','1','2','3', '4','5','6','7',  '8','9',':',';', '<','=','>','?',
  1004+  '@','A','B','C', 'D','E','F','G',  'H','I','J','K', 'L','M','N','O',
  1005+  'P','Q','R','S', 'T','U','V','W',  'X','Y','Z','[', '\',']','^','_',
  1006+  '`','A','B','C', 'D','E','F','G',  'H','I','J','K', 'L','M','N','O',
  1007+  'P','Q','R','S', 'T','U','V','W',  'X','Y','Z', 2 , '|','}','~',  0
  1008  
  1009  !!   0 = space
  1010  !!   1 = %
  1011  !!   2 = {
  1012  !!   3 = ff
  1013  !!   other values represent themselves
  1014  
  1015     %IF sym = nl %START
 18FE A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1903 3D 0A 00 00 00                        CMP %EAX,#10
 1908 75 00                                 JNE L1172
  1016  s1:   lines = lines+1
 190A                      L1173  EQU $
 190A FF 05 C4 00 00 00                     INC DWORD PTR [DATA+00C4]
  1017        printsymbol(end mark) %if end mark # 0
 1910 A1 F0 00 00 00                        MOV %EAX,[DATA+00F0]
 1915 3D 00 00 00 00                        CMP %EAX,#0
 191A 74 00                                 JE L1174
 191C FF 35 F0 00 00 00                     PUSH DWORD PTR [DATA+00F0]
 1922 E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 1925 83 C4 04                              ADD %ESP,#4
 1928                      L1174  EQU $
  1018  s11:  pos = 0;  pos1 = 0;  pos2 = 0;  margin = 0;  column = 0
 1928                      L1175  EQU $
 1928 C7 05 A8 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A8],#0
 1932 C7 05 A0 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A0],#0
 193C C7 05 A4 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A4],#0
 1946 C7 05 CC 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00CC],#0
 1950 C7 05 D8 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00D8],#0
  1019        Last = 0
 195A C7 05 B8 2C 00 00 00 00 00 00         MOV DWORD PTR [DATA+2CB8],#0
  1020        end mark = 0
 1964 C7 05 F0 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00F0],#0
  1021        %IF list <= 0 %START
 196E A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 1973 3D 00 00 00 00                        CMP %EAX,#0
 1978 7F 00                                 JG L1176
  1022           %IF include # 0 %START
 197A A1 70 01 00 00                        MOV %EAX,[DATA+0170]
 197F 3D 00 00 00 00                        CMP %EAX,#0
 1984 74 00                                 JE L1177
  1023              printstring(" &");  write(lines, -4)
 1986 81 EC 00 01 00 00                     SUB %ESP,#256
 198C 89 E0                                 MOV %EAX,%ESP
 198E 50                                    PUSH %EAX
 198F B8 FC 02 00 00                        MOV %EAX,COT+#764
 1994 50                                    PUSH %EAX
 1995 68 FF 00 00 00                        PUSH #255
 199A E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 199D 83 C4 0C                              ADD %ESP,#12
 19A0 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 19A3 81 C4 00 01 00 00                     ADD %ESP,#256
 19A9 FF 35 C4 00 00 00                     PUSH DWORD PTR [DATA+00C4]
 19AF 6A FC                                 PUSH #-4
 19B1 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 19B4 83 C4 08                              ADD %ESP,#8
  1024           %FINISH %ELSE  write(lines, 5)
 19B7 EB 00                                 JMP L1178
 19B9                      L1177  EQU $
 19B9 FF 35 C4 00 00 00                     PUSH DWORD PTR [DATA+00C4]
 19BF 6A 05                                 PUSH #5
 19C1 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 19C4 83 C4 08                              ADD %ESP,#8
 19C7                      L1178  EQU $
  1025           csym = cont;  printsymbol(csym)
 19C7 A1 F4 00 00 00                        MOV %EAX,[DATA+00F4]
 19CC 89 05 F8 00 00 00                     MOV [DATA+00F8],%EAX
 19D2 FF 35 F8 00 00 00                     PUSH DWORD PTR [DATA+00F8]
 19D8 E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 19DB 83 C4 04                              ADD %ESP,#4
  1026           space
 19DE E8 41 00                              CALL 'SPACE' (EXTERN 65)
  1027           %IF error margin # 0 %START
 19E1 A1 D0 00 00 00                        MOV %EAX,[DATA+00D0]
 19E6 3D 00 00 00 00                        CMP %EAX,#0
 19EB 74 00                                 JE L1179
  1028              lines = lines-1
 19ED FF 0D C4 00 00 00                     DEC DWORD PTR [DATA+00C4]
  1029              spaces(error margin)
 19F3 FF 35 D0 00 00 00                     PUSH DWORD PTR [DATA+00D0]
 19F9 E8 42 00                              CALL 'SPACES' (EXTERN 66)
 19FC 83 C4 04                              ADD %ESP,#4
  1030              error margin = 0
 19FF C7 05 D0 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00D0],#0
  1031              %IF error sym # 0 %START
 1A09 A1 D4 00 00 00                        MOV %EAX,[DATA+00D4]
 1A0E 3D 00 00 00 00                        CMP %EAX,#0
 1A13 74 00                                 JE L1180
  1032                 printsymbol(error sym)
 1A15 FF 35 D4 00 00 00                     PUSH DWORD PTR [DATA+00D4]
 1A1B E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 1A1E 83 C4 04                              ADD %ESP,#4
  1033                 pos = 1
 1A21 C7 05 A8 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+01A8],#1
  1034  !IMP80 BUG???  
  1035  !!             char(1) = error sym
  1036                 byteinteger(addr(char(0))+1) = error sym
 1A2B 6A 00                                 PUSH #0
 1A2D 68 14 00 00 00                        PUSH COT+#20
 1A32 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1A35 83 C4 08                              ADD %ESP,#8
 1A38 89 C3                                 MOV %EBX,%EAX
 1A3A A1 D4 00 00 00                        MOV %EAX,[DATA+00D4]
 1A3F 88 83 C1 01 00 00                     MOV [%EBX+DATA+449],%AL
  1037                 sym = error sym;  error sym = 0
 1A45 A1 D4 00 00 00                        MOV %EAX,[DATA+00D4]
 1A4A 89 05 E4 00 00 00                     MOV [DATA+00E4],%EAX
 1A50 C7 05 D4 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00D4],#0
  1038                 ->s5
 1A5A EB 00                                 JMP L1181
  1039              %FINISH
 1A5C                      L1180  EQU $
  1040           %FINISH
 1A5C                      L1179  EQU $
  1041        %FINISH
 1A5C                      L1176  EQU $
  1042  s2:   symtype = 1
 1A5C                      L1182  EQU $
 1A5C C7 05 E8 00 00 00 01 00 00 00         MOV DWORD PTR [DATA+00E8],#1
  1043     %FINISH
 1A66                      L1172  EQU $
  1044  s3:readsymbol(sym)
 1A66                      L1183  EQU $
 1A66 68 83 00 00 00                        PUSH #131
 1A6B 68 E4 00 00 00                        PUSH DATA+#228
 1A70 E8 22 00                              CALL 'READSYMBOL' (EXTERN 34)
 1A73 83 C4 08                              ADD %ESP,#8
  1045     pos = pos+1 %IF pos # 133
 1A76 A1 A8 01 00 00                        MOV %EAX,[DATA+01A8]
 1A7B 3D 85 00 00 00                        CMP %EAX,#133
 1A80 74 00                                 JE L1184
 1A82 FF 05 A8 01 00 00                     INC DWORD PTR [DATA+01A8]
 1A88                      L1184  EQU $
  1046     char(pos) = sym
 1A88 FF 35 A8 01 00 00                     PUSH DWORD PTR [DATA+01A8]
 1A8E 68 14 00 00 00                        PUSH COT+#20
 1A93 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1A96 83 C4 08                              ADD %ESP,#8
 1A99 89 C6                                 MOV %ESI,%EAX
 1A9B A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1AA0 88 86 C0 01 00 00                     MOV [%ESI+DATA+448],%AL
  1047     printsymbol(sym) %IF list <= 0
 1AA6 A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 1AAB 3D 00 00 00 00                        CMP %EAX,#0
 1AB0 7F 00                                 JG L1185
 1AB2 FF 35 E4 00 00 00                     PUSH DWORD PTR [DATA+00E4]
 1AB8 E8 34 00                              CALL 'PRINTSYMBOL' (EXTERN 52)
 1ABB 83 C4 04                              ADD %ESP,#4
 1ABE                      L1185  EQU $
  1048     column = column+1
 1ABE FF 05 D8 00 00 00                     INC DWORD PTR [DATA+00D8]
  1049  s5:%IF sym # nl %START
 1AC4                      L1181  EQU $
 1AC4 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1AC9 3D 0A 00 00 00                        CMP %EAX,#10
 1ACE 74 00                                 JE L1186
  1050        Last = Sym
 1AD0 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1AD5 89 05 B8 2C 00 00                     MOV [DATA+2CB8],%EAX
  1051        %RETURN %IF quote # 0;                     !dont alter strings
 1ADB A1 EC 00 00 00                        MOV %EAX,[DATA+00EC]
 1AE0 3D 00 00 00 00                        CMP %EAX,#0
 1AE5 74 00                                 JE L1187
 1AE7 C9                                    LEAVE
 1AE8 C3                                    RET
 1AE9                      L1187  EQU $
  1052        sym = mapped(sym&127)
 1AE9 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1AEE 25 7F 00 00 00                        AND %EAX,#127
 1AF3 50                                    PUSH %EAX
 1AF4 68 EC 02 00 00                        PUSH COT+#748
 1AF9 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1AFC 83 C4 08                              ADD %ESP,#8
 1AFF 89 C7                                 MOV %EDI,%EAX
 1B01 31 C0                                 XOR %EAX,%EAX
 1B03 8A 87 BC 2C 00 00                     MOV %AL,[%EDI+DATA+11452]
 1B09 89 05 E4 00 00 00                     MOV [DATA+00E4],%EAX
  1053        %IF sym <= 3 %START;                       !special symbol
 1B0F A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1B14 3D 03 00 00 00                        CMP %EAX,#3
 1B19 7F 00                                 JG L1188
  1054           ->s2 %IF sym = 0;                       !space (or dubious control)
 1B1B A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1B20 3D 00 00 00 00                        CMP %EAX,#0
 1B25 75 00                                 JNE L1189
 1B27 EB 00                                 JMP L1182
 1B29                      L1189  EQU $
  1055           symtype = 2 %AND ->s3 %IF sym = 1;      !%
 1B29 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1B2E 3D 01 00 00 00                        CMP %EAX,#1
 1B33 75 00                                 JNE L1190
 1B35 C7 05 E8 00 00 00 02 00 00 00         MOV DWORD PTR [DATA+00E8],#2
 1B3F EB 00                                 JMP L1183
 1B41                      L1190  EQU $
  1056           cont = '+' %AND ->s11 %IF sym = 3;      !ff
 1B41 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1B46 3D 03 00 00 00                        CMP %EAX,#3
 1B4B 75 00                                 JNE L1191
 1B4D C7 05 F4 00 00 00 2B 00 00 00         MOV DWORD PTR [DATA+00F4],#43
 1B57 EB 00                                 JMP L1175
 1B59                      L1191  EQU $
  1057           !must be {
  1058           %CYCLE
 1B59                      L1192  EQU $
  1059              get sym
 1B59 E8 00 00                              CALL 'GETSYM' (INTERNAL L1168 )
  1060              ->s3 %IF sym = '}'
 1B5C A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1B61 3D 7D 00 00 00                        CMP %EAX,#125
 1B66 75 00                                 JNE L1193
 1B68 EB 00                                 JMP L1183
 1B6A                      L1193  EQU $
  1061              ->s4 %IF sym = nl
 1B6A A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1B6F 3D 0A 00 00 00                        CMP %EAX,#10
 1B74 75 00                                 JNE L1194
 1B76 EB 00                                 JMP L1195
 1B78                      L1194  EQU $
  1062           %REPEAT
 1B78 EB 00                                 JMP L1192
  1063        %FINISH
 1B7A                      L1188  EQU $
  1064        key = kdict(sym)
 1B7A FF 35 E4 00 00 00                     PUSH DWORD PTR [DATA+00E4]
 1B80 68 74 00 00 00                        PUSH COT+#116
 1B85 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1B88 83 C4 08                              ADD %ESP,#8
 1B8B 89 C3                                 MOV %EBX,%EAX
 1B8D 0F BF 9B A4 27 00 00                  MOVSX %EBX,[%EBX+DATA+10148]
 1B94 89 1D A4 2C 00 00                     MOV [DATA+2CA4],%EBX
  1065        %IF key&3 = 0 %AND symtype = 2 %START;            !keyword
 1B9A A1 A4 2C 00 00                        MOV %EAX,[DATA+2CA4]
 1B9F 25 03 00 00 00                        AND %EAX,#3
 1BA4 3D 00 00 00 00                        CMP %EAX,#0
 1BA9 75 00                                 JNE L1196
 1BAB A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 1BB0 3D 02 00 00 00                        CMP %EAX,#2
 1BB5 75 00                                 JNE L1196
  1066           %IF sym = 'C' %AND nextsymbol = nl %START;     !%C...
 1BB7 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1BBC 3D 43 00 00 00                        CMP %EAX,#67
 1BC1 75 00                                 JNE L1197
 1BC3 E8 23 00                              CALL 'NEXTSYMBOL' (EXTERN 35)
 1BC6 3D 0A 00 00 00                        CMP %EAX,#10
 1BCB 75 00                                 JNE L1197
  1067              getsym;  cont = '+';  ->s1
 1BCD E8 00 00                              CALL 'GETSYM' (INTERNAL L1168 )
 1BD0 C7 05 F4 00 00 00 2B 00 00 00         MOV DWORD PTR [DATA+00F4],#43
 1BDA EB 00                                 JMP L1173
  1068           %FINISH
 1BDC                      L1197  EQU $
  1069        %ELSE
 1BDC EB 00                                 JMP L1198
 1BDE                      L1196  EQU $
  1070           symtype = key&3-2
 1BDE A1 A4 2C 00 00                        MOV %EAX,[DATA+2CA4]
 1BE3 25 03 00 00 00                        AND %EAX,#3
 1BE8 2D 02 00 00 00                        SUB %EAX,#2
 1BED 89 05 E8 00 00 00                     MOV [DATA+00E8],%EAX
  1071        %FINISH
 1BF3                      L1198  EQU $
  1072        %RETURN
 1BF3 C9                                    LEAVE
 1BF4 C3                                    RET
  1073     %FINISH
 1BF5                      L1186  EQU $
  1074  s4:symtype = quote
 1BF5                      L1195  EQU $
 1BF5 A1 EC 00 00 00                        MOV %EAX,[DATA+00EC]
 1BFA 89 05 E8 00 00 00                     MOV [DATA+00E8],%EAX
  1075     ->S1 %if last = 0 %and Quote = 0
 1C00 A1 B8 2C 00 00                        MOV %EAX,[DATA+2CB8]
 1C05 3D 00 00 00 00                        CMP %EAX,#0
 1C0A 75 00                                 JNE L1199
 1C0C A1 EC 00 00 00                        MOV %EAX,[DATA+00EC]
 1C11 3D 00 00 00 00                        CMP %EAX,#0
 1C16 75 00                                 JNE L1199
 1C18 EB 00                                 JMP L1173
 1C1A                      L1199  EQU $
  1076     Cont = '+'
 1C1A C7 05 F4 00 00 00 2B 00 00 00         MOV DWORD PTR [DATA+00F4],#43
  1077  %END
 1C24 C9                                    LEAVE
 1C25 C3                                    RET
 1C26                      L1157  EQU $
  1078  
  1079  %INTEGERFN format selected
 1C26                      L1200  EQU $
 1C26 C8 00 00 04                           ENTER 0000,4
  1080     format list = tag(format)_app;      !number of names
 1C2A FF 35 B8 00 00 00                     PUSH DWORD PTR [DATA+00B8]
 1C30 8B 75 FC                              MOV %ESI,[%EBP-4]
 1C33 FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 1C39 89 75 EC                              MOV [%EBP-20],%ESI
 1C3C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1C3F 83 C4 08                              ADD %ESP,#8
 1C42 89 C7                                 MOV %EDI,%EAX
 1C44 8B 5D EC                              MOV %EBX,[%EBP-20]
 1C47 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 1C4D 8B 3F                                 MOV %EDI,[%EDI]
 1C4F 89 3D BC 01 00 00                     MOV [DATA+01BC],%EDI
  1081     %IF format list < 0 %START;         !forward ref
 1C55 A1 BC 01 00 00                        MOV %EAX,[DATA+01BC]
 1C5A 3D 00 00 00 00                        CMP %EAX,#0
 1C5F 7D 00                                 JGE L1201
  1082        atom1 = error+22
 1C61 C7 05 A4 00 00 00 16 80 00 00         MOV DWORD PTR [DATA+00A4],#32790
  1083        %RESULT = 0
 1C6B 31 C0                                 XOR %EAX,%EAX
 1C6D C9                                    LEAVE
 1C6E C3                                    RET
  1084     %FINISH
 1C6F                      L1201  EQU $
  1085     %IF sym = '_' %START
 1C6F A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 1C74 3D 5F 00 00 00                        CMP %EAX,#95
 1C79 75 00                                 JNE L1202
  1086        escape class = esc rec
 1C7B C7 05 08 01 00 00 FF 00 00 00         MOV DWORD PTR [DATA+0108],#255
  1087        search base = tag(format)_format
 1C85 FF 35 B8 00 00 00                     PUSH DWORD PTR [DATA+00B8]
 1C8B 8B 75 FC                              MOV %ESI,[%EBP-4]
 1C8E FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 1C94 89 75 E8                              MOV [%EBP-24],%ESI
 1C97 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1C9A 83 C4 08                              ADD %ESP,#8
 1C9D 89 C7                                 MOV %EDI,%EAX
 1C9F 8B 5D E8                              MOV %EBX,[%EBP-24]
 1CA2 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 1CA8 8B 7F 04                              MOV %EDI,[%EDI+4]
 1CAB 89 3D B8 01 00 00                     MOV [DATA+01B8],%EDI
  1088     %FINISH
 1CB1                      L1202  EQU $
  1089     %RESULT = 1
 1CB1 B8 01 00 00 00                        MOV %EAX,#1
 1CB6 C9                                    LEAVE
 1CB7 C3                                    RET
  1090  %END
 1CB8                      L1157  EQU $
  1091  
  1092  %ROUTINE code atom(%INTEGER target)
 1CB8                      L1203  EQU $
 1CB8 C8 00 00 04                           ENTER 0000,4
  1093     %INTEGER dbase, da
  1094     %INTEGER base, n, mul, pend quote
  1095     %INTEGER j,k,l, pt
  1096  
  1097     %ROUTINE lookup(%INTEGER d)
 1CBC EB 00                                 JMP L1204
 1CBE                      L1205  EQU $
 1CBE C8 00 00 05                           ENTER 0000,5
  1098        %CONSTINTEGER magic = 6700421
  1099        %INTEGER new name, vid, k1, k2, form
  1100        %RECORD(tagfm)%NAME t
  1101  !emas:      %LONGINTEGER k0
  1102        %INTEGER new
  1103  
  1104        !first locate the text of the name
  1105  
  1106        new = addr(dict(dmax+1))
 1CC2 A1 5C 01 00 00                        MOV %EAX,[DATA+015C]
 1CC7 40                                    INC %EAX
 1CC8 50                                    PUSH %EAX
 1CC9 8B 75 FC                              MOV %ESI,[%EBP-4]
 1CCC FF B6 40 FF FF FF                     PUSH DWORD PTR [%ESI-192]
 1CD2 89 75 CC                              MOV [%EBP-52],%ESI
 1CD5 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1CD8 83 C4 08                              ADD %ESP,#8
 1CDB 89 C7                                 MOV %EDI,%EAX
 1CDD 8B 5D CC                              MOV %EBX,[%EBP-52]
 1CE0 03 BB 3C FF FF FF                     ADD %EDI,[%EBX-196]
 1CE6 89 7D D0                              MOV [%EBP-48],%EDI
  1107  
  1108              !******** Machine code to inhibit overflow test ********
  1109  
  1110  !            *LI_1,magic
  1111  !            * M_0,hash value
  1112  !            *ST_1,K2
  1113  
  1114              {K2 = hash value*magic}
  1115  K2 = hash value*magic ;! requires NOCHECK option
 1CE9 8B 75 FC                              MOV %ESI,[%EBP-4]
 1CEC 8B 46 E0                              MOV %EAX,[%ESI-32]
 1CEF F7 2D 00 03 00 00                     IMUL DWORD PTR [COT+0300]
 1CF5 89 45 DC                              MOV [%EBP-36],%EAX
  1116                         ! we could fix this properly by a shift+add loop
  1117              !*******************************************************
  1118  
  1119        k2 = k2>>(32-2*name bits)!1
 1CF8 8B 45 DC                              MOV %EAX,[%EBP-36]
 1CFB C1 E8 0A                              SHR %EAX,#10
 1CFE 0D 01 00 00 00                        OR %EAX,#1
 1D03 89 45 DC                              MOV [%EBP-36],%EAX
  1120  !emas:      k0 = magic
  1121  !emas:      k1 = (k0*hash value)&X'7FFFFFFF'
  1122  !emas:      k2 = k1>>(32-2*name bits)!1
  1123        k1 = k2>>name bits;                      !giving name bits
 1D06 8B 45 DC                              MOV %EAX,[%EBP-36]
 1D09 C1 E8 0B                              SHR %EAX,#11
 1D0C 89 45 E0                              MOV [%EBP-32],%EAX
  1124        %CYCLE
 1D0F                      L1206  EQU $
  1125           newname = hash(k1)
 1D0F FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 1D12 8B 7D FC                              MOV %EDI,[%EBP-4]
 1D15 FF B7 70 FF FF FF                     PUSH DWORD PTR [%EDI-144]
 1D1B 89 7D C8                              MOV [%EBP-56],%EDI
 1D1E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1D21 83 C4 08                              ADD %ESP,#8
 1D24 89 C3                                 MOV %EBX,%EAX
 1D26 8B 75 C8                              MOV %ESI,[%EBP-56]
 1D29 03 9E 6C FF FF FF                     ADD %EBX,[%ESI-148]
 1D2F 0F BF 1B                              MOVSX %EBX,[%EBX]
 1D32 89 5D E8                              MOV [%EBP-24],%EBX
  1126           %EXIT %IF newname = 0;                !not in
 1D35 8B 45 E8                              MOV %EAX,[%EBP-24]
 1D38 3D 00 00 00 00                        CMP %EAX,#0
 1D3D 75 00                                 JNE L1207
 1D3F EB 00                                 JMP L1208
 1D41                      L1207  EQU $
  1127           ->in %IF string(addr(dict(newname+1))) = string(new)
 1D41 8B 45 E8                              MOV %EAX,[%EBP-24]
 1D44 40                                    INC %EAX
 1D45 50                                    PUSH %EAX
 1D46 8B 7D FC                              MOV %EDI,[%EBP-4]
 1D49 FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 1D4F 89 7D C4                              MOV [%EBP-60],%EDI
 1D52 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1D55 83 C4 08                              ADD %ESP,#8
 1D58 89 C3                                 MOV %EBX,%EAX
 1D5A 8B 75 C4                              MOV %ESI,[%EBP-60]
 1D5D 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 1D63 53                                    PUSH %EBX
 1D64 8B 45 D0                              MOV %EAX,[%EBP-48]
 1D67 50                                    PUSH %EAX
 1D68 89 45 C0                              MOV [%EBP-64],%EAX
 1D6B 89 5D BC                              MOV [%EBP-68],%EBX
 1D6E E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 1D71 83 C4 08                              ADD %ESP,#8
 1D74 3D 00 00 00 00                        CMP %EAX,#0
 1D79 75 00                                 JNE L1209
 1D7B EB 00                                 JMP L1210
 1D7D                      L1209  EQU $
  1128           k1 = (k1+k2)&max names
 1D7D 8B 45 E0                              MOV %EAX,[%EBP-32]
 1D80 03 45 DC                              ADD %EAX,[%EBP-36]
 1D83 25 FF 07 00 00                        AND %EAX,#2047
 1D88 89 45 E0                              MOV [%EBP-32],%EAX
  1129        %REPEAT
 1D8B EB 00                                 JMP L1206
 1D8D                      L1208  EQU $
  1130  
  1131        ! not found
  1132  
  1133        spare names = spare names-1
 1D8D FF 0D 78 00 00 00                     DEC DWORD PTR [DATA+0078]
  1134        abandon(2) %IF spare names <= 0
 1D93 A1 78 00 00 00                        MOV %EAX,[DATA+0078]
 1D98 3D 00 00 00 00                        CMP %EAX,#0
 1D9D 7F 00                                 JG L1211
 1D9F 6A 02                                 PUSH #2
 1DA1 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 1DA4 83 C4 04                              ADD %ESP,#4
 1DA7                      L1211  EQU $
  1135        hash(k1) = dmax;                               !put it in
 1DA7 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 1DAA 8B 7D FC                              MOV %EDI,[%EBP-4]
 1DAD FF B7 70 FF FF FF                     PUSH DWORD PTR [%EDI-144]
 1DB3 89 7D B8                              MOV [%EBP-72],%EDI
 1DB6 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1DB9 83 C4 08                              ADD %ESP,#8
 1DBC 89 C3                                 MOV %EBX,%EAX
 1DBE 8B 75 B8                              MOV %ESI,[%EBP-72]
 1DC1 03 9E 6C FF FF FF                     ADD %EBX,[%ESI-148]
 1DC7 A1 5C 01 00 00                        MOV %EAX,[DATA+015C]
 1DCC 88 03                                 MOV [%EBX],%AL
 1DCE 88 63 01                              MOV [%EBX+1],%AH
  1136        dict(dmax) = -1
 1DD1 FF 35 5C 01 00 00                     PUSH DWORD PTR [DATA+015C]
 1DD7 8B 7D FC                              MOV %EDI,[%EBP-4]
 1DDA FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 1DE0 89 7D B4                              MOV [%EBP-76],%EDI
 1DE3 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1DE6 83 C4 08                              ADD %ESP,#8
 1DE9 89 C3                                 MOV %EBX,%EAX
 1DEB 8B 75 B4                              MOV %ESI,[%EBP-76]
 1DEE 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 1DF4 C6 03 FF                              MOV BYTE PTR [%EBX],#255
 1DF7 C6 43 01 FF                           MOV BYTE PTR [%EBX+1],#255
  1137        newname = dmax;  dmax = dp;  ->not in
 1DFB A1 5C 01 00 00                        MOV %EAX,[DATA+015C]
 1E00 89 45 E8                              MOV [%EBP-24],%EAX
 1E03 A1 9C 01 00 00                        MOV %EAX,[DATA+019C]
 1E08 89 05 5C 01 00 00                     MOV [DATA+015C],%EAX
 1E0E EB 00                                 JMP L1212
  1138  
  1139  in:   search base = rbase %IF this >= 0 %AND d # 0;  !record elem defn
 1E10                      L1210  EQU $
 1E10 A1 44 01 00 00                        MOV %EAX,[DATA+0144]
 1E15 3D 00 00 00 00                        CMP %EAX,#0
 1E1A 7C 00                                 JL L1213
 1E1C 8B 45 08                              MOV %EAX,[%EBP+8]
 1E1F 3D 00 00 00 00                        CMP %EAX,#0
 1E24 74 00                                 JE L1213
 1E26 A1 50 01 00 00                        MOV %EAX,[DATA+0150]
 1E2B 89 05 B8 01 00 00                     MOV [DATA+01B8],%EAX
 1E31                      L1213  EQU $
  1140        %IF search base # 0 %START;                    !record subname
 1E31 A1 B8 01 00 00                        MOV %EAX,[DATA+01B8]
 1E36 3D 00 00 00 00                        CMP %EAX,#0
 1E3B 74 00                                 JE L1214
  1141           new = -1
 1E3D C7 45 D0 FF FF FF FF                  MOV DWORD PTR [%EBP-48],#-1
  1142           x = search base
 1E44 A1 B8 01 00 00                        MOV %EAX,[DATA+01B8]
 1E49 89 05 A0 00 00 00                     MOV [DATA+00A0],%EAX
  1143           %CYCLE
 1E4F                      L1215  EQU $
  1144              ->not in %IF x < format list
 1E4F A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 1E54 3B 05 BC 01 00 00                     CMP %EAX,[DATA+01BC]
 1E5A 7D 00                                 JGE L1216
 1E5C EB 00                                 JMP L1212
 1E5E                      L1216  EQU $
  1145              %EXIT %IF tag(x)_text = new name
 1E5E FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 1E64 8B 7D FC                              MOV %EDI,[%EBP-4]
 1E67 FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 1E6D 89 7D B0                              MOV [%EBP-80],%EDI
 1E70 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1E73 83 C4 08                              ADD %ESP,#8
 1E76 89 C3                                 MOV %EBX,%EAX
 1E78 8B 75 B0                              MOV %ESI,[%EBP-80]
 1E7B 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 1E81 0F BF 5B 0C                           MOVSX %EBX,[%EBX+12]
 1E85 3B 5D E8                              CMP %EBX,[%EBP-24]
 1E88 75 00                                 JNE L1217
 1E8A EB 00                                 JMP L1218
 1E8C                      L1217  EQU $
  1146              x = x-1
 1E8C FF 0D A0 00 00 00                     DEC DWORD PTR [DATA+00A0]
  1147           %REPEAT
 1E92 EB 00                                 JMP L1215
 1E94                      L1218  EQU $
  1148        %FINISH %ELSE %START;                   !hash in for normal names
 1E94 EB 00                                 JMP L1219
 1E96                      L1214  EQU $
  1149           x = dict(newname)
 1E96 FF 75 E8                              PUSH DWORD PTR [%EBP-24]
 1E99 8B 7D FC                              MOV %EDI,[%EBP-4]
 1E9C FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 1EA2 89 7D AC                              MOV [%EBP-84],%EDI
 1EA5 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1EA8 83 C4 08                              ADD %ESP,#8
 1EAB 89 C3                                 MOV %EBX,%EAX
 1EAD 8B 75 AC                              MOV %ESI,[%EBP-84]
 1EB0 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 1EB6 0F BF 1B                              MOVSX %EBX,[%EBX]
 1EB9 89 1D A0 00 00 00                     MOV [DATA+00A0],%EBX
  1150           ->not in %IF x <= limit;             !wrong level
 1EBF A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 1EC4 3B 05 88 01 00 00                     CMP %EAX,[DATA+0188]
 1ECA 7F 00                                 JG L1220
 1ECC EB 00                                 JMP L1212
 1ECE                      L1220  EQU $
  1151        %FINISH
 1ECE                      L1219  EQU $
  1152  
  1153        subatom = x;                            !name found, extract info
 1ECE A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 1ED3 89 05 AC 00 00 00                     MOV [DATA+00AC],%EAX
  1154        t == tag(x)
 1ED9 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 1EDF 8B 7D FC                              MOV %EDI,[%EBP-4]
 1EE2 FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 1EE8 89 7D A8                              MOV [%EBP-88],%EDI
 1EEB E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1EEE 83 C4 08                              ADD %ESP,#8
 1EF1 89 C3                                 MOV %EBX,%EAX
 1EF3 8B 75 A8                              MOV %ESI,[%EBP-88]
 1EF6 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 1EFC 89 5D D4                              MOV [%EBP-44],%EBX
  1155        atom flags = t_flags
 1EFF 8B 7D D4                              MOV %EDI,[%EBP-44]
 1F02 0F BF 47 08                           MOVSX %EAX,[%EDI+8]
 1F06 89 05 10 01 00 00                     MOV [DATA+0110],%EAX
  1156        format = t_format;  app = t_app
 1F0C 8B 5D D4                              MOV %EBX,[%EBP-44]
 1F0F 8B 43 04                              MOV %EAX,[%EBX+4]
 1F12 89 05 B8 00 00 00                     MOV [DATA+00B8],%EAX
 1F18 8B 75 D4                              MOV %ESI,[%EBP-44]
 1F1B 8B 06                                 MOV %EAX,[%ESI]
 1F1D 89 05 B4 00 00 00                     MOV [DATA+00B4],%EAX
  1157        protection = atom flags&prot
 1F23 A1 10 01 00 00                        MOV %EAX,[DATA+0110]
 1F28 25 00 01 00 00                        AND %EAX,#256
 1F2D 89 05 0C 01 00 00                     MOV [DATA+010C],%EAX
  1158        type = atom flags>>4&7;  atom1 = amap(atom flags&15)
 1F33 A1 10 01 00 00                        MOV %EAX,[DATA+0110]
 1F38 C1 E8 04                              SHR %EAX,#4
 1F3B 25 07 00 00 00                        AND %EAX,#7
 1F40 89 05 B0 00 00 00                     MOV [DATA+00B0],%EAX
 1F46 A1 10 01 00 00                        MOV %EAX,[DATA+0110]
 1F4B 25 0F 00 00 00                        AND %EAX,#15
 1F50 50                                    PUSH %EAX
 1F51 68 04 00 00 00                        PUSH COT+#4
 1F56 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 1F59 83 C4 08                              ADD %ESP,#8
 1F5C 89 C7                                 MOV %EDI,%EAX
 1F5E 31 C0                                 XOR %EAX,%EAX
 1F60 8A 87 7C 00 00 00                     MOV %AL,[%EDI+DATA+124]
 1F66 89 05 A4 00 00 00                     MOV [DATA+00A4],%EAX
  1159  
  1160        %IF diag&8 # 0 %START
 1F6C A1 5C 02 00 00                        MOV %EAX,[DATA+025C]
 1F71 25 08 00 00 00                        AND %EAX,#8
 1F76 3D 00 00 00 00                        CMP %EAX,#0
 1F7B 74 00                                 JE L1221
  1161           printstring("lookup:")
 1F7D 81 EC 00 01 00 00                     SUB %ESP,#256
 1F83 89 E0                                 MOV %EAX,%ESP
 1F85 50                                    PUSH %EAX
 1F86 B8 04 03 00 00                        MOV %EAX,COT+#772
 1F8B 50                                    PUSH %EAX
 1F8C 68 FF 00 00 00                        PUSH #255
 1F91 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 1F94 83 C4 0C                              ADD %ESP,#12
 1F97 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 1F9A 81 C4 00 01 00 00                     ADD %ESP,#256
  1162           write(atom1, 3)
 1FA0 FF 35 A4 00 00 00                     PUSH DWORD PTR [DATA+00A4]
 1FA6 6A 03                                 PUSH #3
 1FA8 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 1FAB 83 C4 08                              ADD %ESP,#8
  1163           write(type, 1)
 1FAE FF 35 B0 00 00 00                     PUSH DWORD PTR [DATA+00B0]
 1FB4 6A 01                                 PUSH #1
 1FB6 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 1FB9 83 C4 08                              ADD %ESP,#8
  1164           write(app, 3)
 1FBC FF 35 B4 00 00 00                     PUSH DWORD PTR [DATA+00B4]
 1FC2 6A 03                                 PUSH #3
 1FC4 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 1FC7 83 C4 08                              ADD %ESP,#8
  1165           write(format, 5)
 1FCA FF 35 B8 00 00 00                     PUSH DWORD PTR [DATA+00B8]
 1FD0 6A 05                                 PUSH #5
 1FD2 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 1FD5 83 C4 08                              ADD %ESP,#8
  1166           write(atom flags, 3)
 1FD8 FF 35 10 01 00 00                     PUSH DWORD PTR [DATA+0110]
 1FDE 6A 03                                 PUSH #3
 1FE0 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 1FE3 83 C4 08                              ADD %ESP,#8
  1167           newline
 1FE6 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
  1168        %FINISH
 1FE9                      L1221  EQU $
  1169  
  1170        %IF d = 0 %START;                             !old name wanted
 1FE9 8B 45 08                              MOV %EAX,[%EBP+8]
 1FEC 3D 00 00 00 00                        CMP %EAX,#0
 1FF1 75 00                                 JNE L1222
  1171           t_flags <- t_flags!used bit
 1FF3 8B 5D D4                              MOV %EBX,[%EBP-44]
 1FF6 80 4B 08 00                           OR BYTE PTR [%EBX+8],#0
 1FFA 80 4B 09 80                           OR BYTE PTR [%EBX+9],#128
  1172           search base = 0
 1FFE C7 05 B8 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01B8],#0
  1173  
  1174           %IF atom flags&subname # 0 %AND format # 0 %START; !a record
 2008 A1 10 01 00 00                        MOV %EAX,[DATA+0110]
 200D 25 00 08 00 00                        AND %EAX,#2048
 2012 3D 00 00 00 00                        CMP %EAX,#0
 2017 74 00                                 JE L1223
 2019 A1 B8 00 00 00                        MOV %EAX,[DATA+00B8]
 201E 3D 00 00 00 00                        CMP %EAX,#0
 2023 74 00                                 JE L1223
  1175              %RETURN %IF format selected = 0
 2025 E8 00 00                              CALL 'FORMATSELECTED' (INTERNAL L1200 )
 2028 3D 00 00 00 00                        CMP %EAX,#0
 202D 75 00                                 JNE L1224
 202F C9                                    LEAVE
 2030 C3                                    RET
 2031                      L1224  EQU $
  1176           %FINISH
 2031                      L1223  EQU $
  1177  
  1178           %IF atom flags&parameters # 0 %START;      !proc or array
 2031 A1 10 01 00 00                        MOV %EAX,[DATA+0110]
 2036 25 00 10 00 00                        AND %EAX,#4096
 203B 3D 00 00 00 00                        CMP %EAX,#0
 2040 74 00                                 JE L1225
  1179  
  1180              %IF app = 0 %START;                     !no parameters needed
 2042 A1 B4 00 00 00                        MOV %EAX,[DATA+00B4]
 2047 3D 00 00 00 00                        CMP %EAX,#0
 204C 75 00                                 JNE L1226
  1181                 atom2 = atom1
 204E A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 2053 89 05 A8 00 00 00                     MOV [DATA+00A8],%EAX
  1182                 atom1 = atom1-4
 2059 83 2D A4 00 00 00 04                  SUB DWORD PTR [DATA+00A4],#4
  1183                 %IF 97 <= atom1 <= 98 %START
 2060 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 2065 3D 61 00 00 00                        CMP %EAX,#97
 206A 7C 00                                 JL L1227
 206C 3D 62 00 00 00                        CMP %EAX,#98
 2071 7F 00                                 JG L1227
  1184                    map gg = atom1;  atom1 = var
 2073 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 2078 89 05 3C 01 00 00                     MOV [DATA+013C],%EAX
 207E C7 05 A4 00 00 00 5B 00 00 00         MOV DWORD PTR [DATA+00A4],#91
  1185                 %FINISH
 2088                      L1227  EQU $
  1186              %FINISH %ELSE %START
 2088 EB 00                                 JMP L1228
 208A                      L1226  EQU $
  1187                 %IF sym = '(' %START
 208A A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 208F 3D 28 00 00 00                        CMP %EAX,#40
 2094 75 00                                 JNE L1229
  1188                    search base = 0;                  !ignore format for now
 2096 C7 05 B8 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01B8],#0
  1189                    %IF atom1 >= 106 %START;          !arrays
 20A0 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 20A5 3D 6A 00 00 00                        CMP %EAX,#106
 20AA 7C 00                                 JL L1230
  1190                       app = phrase(app+200)
 20AC A1 B4 00 00 00                        MOV %EAX,[DATA+00B4]
 20B1 05 C8 00 00 00                        ADD %EAX,#200
 20B6 50                                    PUSH %EAX
 20B7 68 34 00 00 00                        PUSH COT+#52
 20BC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 20BF 83 C4 08                              ADD %ESP,#8
 20C2 89 C6                                 MOV %ESI,%EAX
 20C4 0F BF 86 D8 09 00 00                  MOVSX %EAX,[%ESI+DATA+2520]
 20CB 89 05 B4 00 00 00                     MOV [DATA+00B4],%EAX
  1191                       escape class = esc array
 20D1 C7 05 08 01 00 00 FE 00 00 00         MOV DWORD PTR [DATA+0108],#254
  1192                       atom1 = (atom1-106)>>1+91;     !a,an->v  na,nan->n
 20DB A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 20E0 2D 6A 00 00 00                        SUB %EAX,#106
 20E5 D1 E8                                 SHR %EAX,#1
 20E7 05 5B 00 00 00                        ADD %EAX,#91
 20EC 89 05 A4 00 00 00                     MOV [DATA+00A4],%EAX
  1193                    %FINISH %ELSE %START;             !procedures
 20F2 EB 00                                 JMP L1231
 20F4                      L1230  EQU $
  1194                       escape class = esc proc
 20F4 C7 05 08 01 00 00 FD 00 00 00         MOV DWORD PTR [DATA+0108],#253
  1195                       atom1 = atom1-4
 20FE 83 2D A4 00 00 00 04                  SUB DWORD PTR [DATA+00A4],#4
  1196                    %FINISH
 2105                      L1231  EQU $
  1197                    phrase(200) = app
 2105 68 C8 00 00 00                        PUSH #200
 210A 68 34 00 00 00                        PUSH COT+#52
 210F E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 2112 83 C4 08                              ADD %ESP,#8
 2115 89 C7                                 MOV %EDI,%EAX
 2117 A1 B4 00 00 00                        MOV %EAX,[DATA+00B4]
 211C 88 87 D8 09 00 00                     MOV [%EDI+DATA+2520],%AL
 2122 88 A7 D9 09 00 00                     MOV [%EDI+DATA+2521],%AH
  1198                 %FINISH
 2128                      L1229  EQU $
  1199              %FINISH
 2128                      L1228  EQU $
  1200              pos2 = pos;  %return
 2128 A1 A8 01 00 00                        MOV %EAX,[DATA+01A8]
 212D 89 05 A4 01 00 00                     MOV [DATA+01A4],%EAX
 2133 C9                                    LEAVE
 2134 C3                                    RET
  1201           %FINISH
 2135                      L1225  EQU $
  1202  
  1203           !deal with constintegers etc
  1204  
  1205           %IF atom flags&const bit # 0 %AND atom1 = var %START
 2135 A1 10 01 00 00                        MOV %EAX,[DATA+0110]
 213A 25 00 20 00 00                        AND %EAX,#8192
 213F 3D 00 00 00 00                        CMP %EAX,#0
 2144 74 00                                 JE L1232
 2146 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 214B 3D 5B 00 00 00                        CMP %EAX,#91
 2150 75 00                                 JNE L1232
  1206                 map gg = const;  atom2 = const
 2152 C7 05 3C 01 00 00 5D 00 00 00         MOV DWORD PTR [DATA+013C],#93
 215C C7 05 A8 00 00 00 5D 00 00 00         MOV DWORD PTR [DATA+00A8],#93
  1207                 subatom = -subatom %IF type = integer
 2166 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 216B 3D 01 00 00 00                        CMP %EAX,#1
 2170 75 00                                 JNE L1233
 2172 F7 1D AC 00 00 00                     NEG DWORD PTR [DATA+00AC]
 2178                      L1233  EQU $
  1208           %FINISH
 2178                      L1232  EQU $
  1209           %RETURN
 2178 C9                                    LEAVE
 2179 C3                                    RET
  1210  
  1211        %FINISH
 217A                      L1222  EQU $
  1212                                                   !new name wanted
  1213        ->not in %IF tbase # tstart;               !don<dq>t fault proc parm-parm
 217A 8B 5D F8                              MOV %EBX,[%EBP-8]
 217D 8B 43 EC                              MOV %EAX,[%EBX-20]
 2180 3B 43 E8                              CMP %EAX,[%EBX-24]
 2183 74 00                                 JE L1234
 2185 EB 00                                 JMP L1212
 2187                      L1234  EQU $
  1214        %IF d = lab+spec+used bit %START
 2187 8B 45 08                              MOV %EAX,[%EBP+8]
 218A 3D 83 80 00 00                        CMP %EAX,#32899
 218F 75 00                                 JNE L1235
  1215           t_flags = t_flags!used bit
 2191 8B 75 D4                              MOV %ESI,[%EBP-44]
 2194 80 4E 08 00                           OR BYTE PTR [%ESI+8],#0
 2198 80 4E 09 80                           OR BYTE PTR [%ESI+9],#128
  1216           %RETURN
 219C C9                                    LEAVE
 219D C3                                    RET
  1217        %FINISH
 219E                      L1235  EQU $
  1218        %IF atom flags&spec # 0 %START;            !a spec has been given
 219E A1 10 01 00 00                        MOV %EAX,[DATA+0110]
 21A3 25 80 00 00 00                        AND %EAX,#128
 21A8 3D 00 00 00 00                        CMP %EAX,#0
 21AD 74 00                                 JE L1236
  1219           %IF d = lab %START;                     !define label
 21AF 8B 45 08                              MOV %EAX,[%EBP+8]
 21B2 3D 03 00 00 00                        CMP %EAX,#3
 21B7 75 00                                 JNE L1237
  1220              t_flags <- t_Flags-Spec
 21B9 8B 7D D4                              MOV %EDI,[%EBP-44]
 21BC 80 6F 08 80                           SUB BYTE PTR [%EDI+8],#128
 21C0 80 6F 09 00                           SUB BYTE PTR [%EDI+9],#0
  1221              %RETURN
 21C4 C9                                    LEAVE
 21C5 C3                                    RET
  1222           %FINISH
 21C6                      L1237  EQU $
  1223           %IF 7 <= decl&15 <= 10 %AND decl&spec = 0 %START
 21C6 A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 21CB 25 0F 00 00 00                        AND %EAX,#15
 21D0 3D 07 00 00 00                        CMP %EAX,#7
 21D5 7C 00                                 JL L1238
 21D7 3D 0A 00 00 00                        CMP %EAX,#10
 21DC 7F 00                                 JG L1238
 21DE A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 21E3 25 80 00 00 00                        AND %EAX,#128
 21E8 3D 00 00 00 00                        CMP %EAX,#0
 21ED 75 00                                 JNE L1238
  1224  
  1225              !procedure definition after spec
  1226  
  1227              %IF (decl!!atom flags)&b'1111111' = 0 %START;  !correct type?
 21EF A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 21F4 33 05 10 01 00 00                     XOR %EAX,[DATA+0110]
 21FA 25 7F 00 00 00                        AND %EAX,#127
 21FF 3D 00 00 00 00                        CMP %EAX,#0
 2204 75 00                                 JNE L1239
  1228                 t_flags = t_flags-spec
 2206 8B 5D D4                              MOV %EBX,[%EBP-44]
 2209 80 6B 08 80                           SUB BYTE PTR [%EBX+8],#128
 220D 80 6B 09 00                           SUB BYTE PTR [%EBX+9],#0
  1229                 spec given = 1
 2211 C7 05 04 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+0104],#1
  1230                 %RETURN
 221B C9                                    LEAVE
 221C C3                                    RET
  1231              %FINISH
 221D                      L1239  EQU $
  1232  
  1233              !note that an external procedure must be speced as a
  1234              !non-external procedure.
  1235  
  1236           %FINISH
 221D                      L1238  EQU $
  1237           %IF decl&15 = recfm %START;              !recordformat
 221D A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 2222 25 0F 00 00 00                        AND %EAX,#15
 2227 3D 04 00 00 00                        CMP %EAX,#4
 222C 75 00                                 JNE L1240
  1238              t_flags = record<<4+recfm
 222E 8B 75 D4                              MOV %ESI,[%EBP-44]
 2231 C6 46 08 44                           MOV BYTE PTR [%ESI+8],#68
 2235 C6 46 09 00                           MOV BYTE PTR [%ESI+9],#0
  1239              t_format = fdef
 2239 8B 7D D4                              MOV %EDI,[%EBP-44]
 223C A1 40 01 00 00                        MOV %EAX,[DATA+0140]
 2241 89 47 04                              MOV [%EDI+4],%EAX
  1240              %RETURN
 2244 C9                                    LEAVE
 2245 C3                                    RET
  1241           %FINISH
 2246                      L1240  EQU $
  1242        %FINISH
 2246                      L1236  EQU $
  1243        %RETURN %IF last1 = jump %AND atom1 = swit
 2246 A1 1C 01 00 00                        MOV %EAX,[DATA+011C]
 224B 3D 36 00 00 00                        CMP %EAX,#54
 2250 75 00                                 JNE L1241
 2252 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 2257 3D 69 00 00 00                        CMP %EAX,#105
 225C 75 00                                 JNE L1241
 225E C9                                    LEAVE
 225F C3                                    RET
 2260                      L1241  EQU $
  1244        copy = x %IF copy = 0
 2260 A1 8C 01 00 00                        MOV %EAX,[DATA+018C]
 2265 3D 00 00 00 00                        CMP %EAX,#0
 226A 75 00                                 JNE L1242
 226C A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 2271 89 05 8C 01 00 00                     MOV [DATA+018C],%EAX
 2277                      L1242  EQU $
  1245  
  1246  notin:app = 0;  vid = 0
 2277                      L1212  EQU $
 2277 C7 05 B4 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00B4],#0
 2281 C7 45 E4 00 00 00 00                  MOV DWORD PTR [%EBP-28],#0
  1247        atom1 = error+2
 2288 C7 05 A4 00 00 00 02 80 00 00         MOV DWORD PTR [DATA+00A4],#32770
  1248  
  1249        %return %if d = 0;                         !old name wanted
 2292 8B 45 08                              MOV %EAX,[%EBP+8]
 2295 3D 00 00 00 00                        CMP %EAX,#0
 229A 75 00                                 JNE L1243
 229C C9                                    LEAVE
 229D C3                                    RET
 229E                      L1243  EQU $
  1250        type = d>>4&7;  form = d&15;  atom1 = amap(form)
 229E 8B 45 08                              MOV %EAX,[%EBP+8]
 22A1 C1 E8 04                              SHR %EAX,#4
 22A4 25 07 00 00 00                        AND %EAX,#7
 22A9 89 05 B0 00 00 00                     MOV [DATA+00B0],%EAX
 22AF 8B 45 08                              MOV %EAX,[%EBP+8]
 22B2 25 0F 00 00 00                        AND %EAX,#15
 22B7 89 45 D8                              MOV [%EBP-40],%EAX
 22BA FF 75 D8                              PUSH DWORD PTR [%EBP-40]
 22BD 68 04 00 00 00                        PUSH COT+#4
 22C2 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 22C5 83 C4 08                              ADD %ESP,#8
 22C8 89 C3                                 MOV %EBX,%EAX
 22CA 8A 9B 7C 00 00 00                     MOV %BL,[%EBX+DATA+124]
 22D0 81 E3 FF 00 00 00                     AND %EBX,#255
 22D6 89 1D A4 00 00 00                     MOV [DATA+00A4],%EBX
  1251  
  1252        %IF this < 0 %START;                       !normal scope
 22DC A1 44 01 00 00                        MOV %EAX,[DATA+0144]
 22E1 3D 00 00 00 00                        CMP %EAX,#0
 22E6 7D 00                                 JGE L1244
  1253           new = newname
 22E8 8B 45 E8                              MOV %EAX,[%EBP-24]
 22EB 89 45 D0                              MOV [%EBP-48],%EAX
  1254           tmax = tmax+1;  x = tmax
 22EE 8B 75 F8                              MOV %ESI,[%EBP-8]
 22F1 FF 46 0C                              INC DWORD PTR [%ESI+12]
 22F4 8B 46 0C                              MOV %EAX,[%ESI+12]
 22F7 89 05 A0 00 00 00                     MOV [DATA+00A0],%EAX
  1255        %FINISH %ELSE %START;                      !recordformat scope
 22FD EB 00                                 JMP L1245
 22FF                      L1244  EQU $
  1256           new = -1
 22FF C7 45 D0 FF FF FF FF                  MOV DWORD PTR [%EBP-48],#-1
  1257           recid = recid-1;  vid = recid
 2306 8B 7D FC                              MOV %EDI,[%EBP-4]
 2309 FF 4F 9C                              DEC DWORD PTR [%EDI-100]
 230C 8B 47 9C                              MOV %EAX,[%EDI-100]
 230F 89 45 E4                              MOV [%EBP-28],%EAX
  1258           tmin = tmin-1;  x = tmin
 2312 FF 0D 60 01 00 00                     DEC DWORD PTR [DATA+0160]
 2318 A1 60 01 00 00                        MOV %EAX,[DATA+0160]
 231D 89 05 A0 00 00 00                     MOV [DATA+00A0],%EAX
  1259           format list = tmin
 2323 A1 60 01 00 00                        MOV %EAX,[DATA+0160]
 2328 89 05 BC 01 00 00                     MOV [DATA+01BC],%EAX
  1260        %FINISH
 232E                      L1245  EQU $
  1261  
  1262        %IF 11 <= form <= 14 %START;               !arrays
 232E 8B 45 D8                              MOV %EAX,[%EBP-40]
 2331 3D 0B 00 00 00                        CMP %EAX,#11
 2336 7C 00                                 JL L1246
 2338 3D 0E 00 00 00                        CMP %EAX,#14
 233D 7F 00                                 JG L1246
  1263           dim = 1 %IF dim = 0;                    !set dim for owns
 233F A1 00 01 00 00                        MOV %EAX,[DATA+0100]
 2344 3D 00 00 00 00                        CMP %EAX,#0
 2349 75 00                                 JNE L1247
 234B C7 05 00 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+0100],#1
 2355                      L1247  EQU $
  1264           app = dim
 2355 A1 00 01 00 00                        MOV %EAX,[DATA+0100]
 235A 89 05 B4 00 00 00                     MOV [DATA+00B4],%EAX
  1265        %FINISH
 2360                      L1246  EQU $
  1266  
  1267        d = d!used bit %IF (otype > 2 %AND d&spec = 0) %OR perm # 0 %OR %C
  1268+                          Level = Include Level
 2360 A1 14 01 00 00                        MOV %EAX,[DATA+0114]
 2365 3D 02 00 00 00                        CMP %EAX,#2
 236A 7E 00                                 JLE L1248
 236C 8B 45 08                              MOV %EAX,[%EBP+8]
 236F 25 80 00 00 00                        AND %EAX,#128
 2374 3D 00 00 00 00                        CMP %EAX,#0
 2379 74 00                                 JE L1249
 237B                      L1248  EQU $
 237B A1 74 01 00 00                        MOV %EAX,[DATA+0174]
 2380 3D 00 00 00 00                        CMP %EAX,#0
 2385 75 00                                 JNE L1249
 2387 8B 5D F8                              MOV %EBX,[%EBP-8]
 238A 8B 43 18                              MOV %EAX,[%EBX+24]
 238D 3B 05 6C 01 00 00                     CMP %EAX,[DATA+016C]
 2393 75 00                                 JNE L1250
 2395                      L1249  EQU $
 2395 81 4D 08 00 80 00 00                  OR DWORD PTR [%EBP+8],#32768
 239C                      L1250  EQU $
  1269  
  1270        !external definitions need not be used in the file in which
  1271        !they are defined, so inhibit a useless unused warning.
  1272  
  1273        t == tag(x)
 239C FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 23A2 8B 75 FC                              MOV %ESI,[%EBP-4]
 23A5 FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 23AB 89 75 A4                              MOV [%EBP-92],%ESI
 23AE E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 23B1 83 C4 08                              ADD %ESP,#8
 23B4 89 C7                                 MOV %EDI,%EAX
 23B6 8B 5D A4                              MOV %EBX,[%EBP-92]
 23B9 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 23BF 89 7D D4                              MOV [%EBP-44],%EDI
  1274        %IF form = lab %START
 23C2 8B 45 D8                              MOV %EAX,[%EBP-40]
 23C5 3D 03 00 00 00                        CMP %EAX,#3
 23CA 75 00                                 JNE L1251
  1275           id = id+1;  vid = id
 23CC 8B 75 F8                              MOV %ESI,[%EBP-8]
 23CF FF 46 08                              INC DWORD PTR [%ESI+8]
 23D2 8B 46 08                              MOV %EAX,[%ESI+8]
 23D5 89 45 E4                              MOV [%EBP-28],%EAX
  1276        %FINISH
 23D8                      L1251  EQU $
  1277        t_index = vid
 23D8 8B 7D D4                              MOV %EDI,[%EBP-44]
 23DB 8B 45 E4                              MOV %EAX,[%EBP-28]
 23DE 88 47 0A                              MOV [%EDI+10],%AL
 23E1 88 67 0B                              MOV [%EDI+11],%AH
  1278        t_text   = new name
 23E4 8B 5D D4                              MOV %EBX,[%EBP-44]
 23E7 8B 45 E8                              MOV %EAX,[%EBP-24]
 23EA 88 43 0C                              MOV [%EBX+12],%AL
 23ED 88 63 0D                              MOV [%EBX+13],%AH
  1279        t_flags <- d
 23F0 8B 75 D4                              MOV %ESI,[%EBP-44]
 23F3 8B 45 08                              MOV %EAX,[%EBP+8]
 23F6 88 46 08                              MOV [%ESI+8],%AL
 23F9 88 66 09                              MOV [%ESI+9],%AH
  1280        t_app    = app
 23FC 8B 7D D4                              MOV %EDI,[%EBP-44]
 23FF A1 B4 00 00 00                        MOV %EAX,[DATA+00B4]
 2404 89 07                                 MOV [%EDI],%EAX
  1281        t_format = fdef;  format = fdef
 2406 8B 5D D4                              MOV %EBX,[%EBP-44]
 2409 A1 40 01 00 00                        MOV %EAX,[DATA+0140]
 240E 89 43 04                              MOV [%EBX+4],%EAX
 2411 A1 40 01 00 00                        MOV %EAX,[DATA+0140]
 2416 89 05 B8 00 00 00                     MOV [DATA+00B8],%EAX
  1282        subatom = x
 241C A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 2421 89 05 AC 00 00 00                     MOV [DATA+00AC],%EAX
  1283  
  1284        %IF new >= 0 %START;                             !insert into hash table
 2427 8B 45 D0                              MOV %EAX,[%EBP-48]
 242A 3D 00 00 00 00                        CMP %EAX,#0
 242F 7C 00                                 JL L1252
  1285           t_link = dict(new);  dict(new) = x
 2431 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 2434 8B 75 FC                              MOV %ESI,[%EBP-4]
 2437 FF B6 40 FF FF FF                     PUSH DWORD PTR [%ESI-192]
 243D 89 75 A0                              MOV [%EBP-96],%ESI
 2440 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 2443 83 C4 08                              ADD %ESP,#8
 2446 89 C7                                 MOV %EDI,%EAX
 2448 8B 5D A0                              MOV %EBX,[%EBP-96]
 244B 03 BB 3C FF FF FF                     ADD %EDI,[%EBX-196]
 2451 8B 75 D4                              MOV %ESI,[%EBP-44]
 2454 8B 07                                 MOV %EAX,[%EDI]
 2456 88 46 0E                              MOV [%ESI+14],%AL
 2459 88 66 0F                              MOV [%ESI+15],%AH
 245C FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 245F 8B 7D FC                              MOV %EDI,[%EBP-4]
 2462 FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 2468 89 7D 9C                              MOV [%EBP-100],%EDI
 246B E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 246E 83 C4 08                              ADD %ESP,#8
 2471 89 C3                                 MOV %EBX,%EAX
 2473 8B 75 9C                              MOV %ESI,[%EBP-100]
 2476 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 247C A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 2481 88 03                                 MOV [%EBX],%AL
 2483 88 63 01                              MOV [%EBX+1],%AH
  1286           %IF gmin = max grammar %START;                !proc param params
 2486 A1 58 01 00 00                        MOV %EAX,[DATA+0158]
 248B 3D B8 06 00 00                        CMP %EAX,#1720
 2490 75 00                                 JNE L1253
  1287              tmin = tmin-1;  subatom = tmin
 2492 FF 0D 60 01 00 00                     DEC DWORD PTR [DATA+0160]
 2498 A1 60 01 00 00                        MOV %EAX,[DATA+0160]
 249D 89 05 AC 00 00 00                     MOV [DATA+00AC],%EAX
  1288              tag(tmin) = t
 24A3 FF 35 60 01 00 00                     PUSH DWORD PTR [DATA+0160]
 24A9 8B 7D FC                              MOV %EDI,[%EBP-4]
 24AC FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 24B2 89 7D 98                              MOV [%EBP-104],%EDI
 24B5 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 24B8 83 C4 08                              ADD %ESP,#8
 24BB 89 C3                                 MOV %EBX,%EAX
 24BD 8B 75 98                              MOV %ESI,[%EBP-104]
 24C0 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 24C6 89 DF                                 MOV %EDI,%EBX
 24C8 B9 10 00 00 00                        MOV %ECX,#16
 24CD 8B 75 D4                              MOV %ESI,[%EBP-44]
 24D0 F3 A4                                 REP MOVSB
  1289           %FINISH
 24D2                      L1253  EQU $
  1290        %FINISH
 24D2                      L1252  EQU $
  1291        abandon(3) %IF tmax >= tmin
 24D2 8B 7D F8                              MOV %EDI,[%EBP-8]
 24D5 8B 47 0C                              MOV %EAX,[%EDI+12]
 24D8 3B 05 60 01 00 00                     CMP %EAX,[DATA+0160]
 24DE 7C 00                                 JL L1254
 24E0 6A 03                                 PUSH #3
 24E2 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 24E5 83 C4 04                              ADD %ESP,#4
 24E8                      L1254  EQU $
  1292     %END
 24E8 C9                                    LEAVE
 24E9 C3                                    RET
 24EA                      L1204  EQU $
  1293  
  1294  
  1295  
  1296  top:  pos1 = pos
 24EA                      L1255  EQU $
 24EA A1 A8 01 00 00                        MOV %EAX,[DATA+01A8]
 24EF 89 05 A0 01 00 00                     MOV [DATA+01A0],%EAX
  1297        subatom = 0;  pend quote = 0;  atom flags = 0
 24F5 C7 05 AC 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00AC],#0
 24FF C7 45 D8 00 00 00 00                  MOV DWORD PTR [%EBP-40],#0
 2506 C7 05 10 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0110],#0
  1298  
  1299        !app and format must be left for assigning to papp & pformat
  1300  
  1301        ->name %IF symtype = -2;                   !letter
 2510 A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 2515 3D FE FF FF FF                        CMP %EAX,#-2
 251A 75 00                                 JNE L1256
 251C EB 00                                 JMP L1257
 251E                      L1256  EQU $
  1302        ->number %IF symtype < 0;                  !digit
 251E A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 2523 3D 00 00 00 00                        CMP %EAX,#0
 2528 7D 00                                 JGE L1258
 252A EB 00                                 JMP L1259
 252C                      L1258  EQU $
  1303        %IF symtype = 0 %START
 252C A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 2531 3D 00 00 00 00                        CMP %EAX,#0
 2536 75 00                                 JNE L1260
  1304           atom1 = termin;  atom2 = 0
 2538 C7 05 A4 00 00 00 14 00 00 00         MOV DWORD PTR [DATA+00A4],#20
 2542 C7 05 A8 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00A8],#0
  1305           %RETURN
 254C C9                                    LEAVE
 254D C3                                    RET
  1306        %FINISH
 254E                      L1260  EQU $
  1307        %IF symtype # 2 %START;                    !catch keywords here
 254E A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 2553 3D 02 00 00 00                        CMP %EAX,#2
 2558 74 00                                 JE L1261
  1308           ->text %IF quote # 0;                   !completion of text
 255A A1 EC 00 00 00                        MOV %EAX,[DATA+00EC]
 255F 3D 00 00 00 00                        CMP %EAX,#0
 2564 74 00                                 JE L1262
 2566 EB 00                                 JMP L1263
 2568                      L1262  EQU $
  1309           ->strings %IF sym = squote;             !start of string
 2568 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 256D 3D 22 00 00 00                        CMP %EAX,#34
 2572 75 00                                 JNE L1264
 2574 EB 00                                 JMP L1265
 2576                      L1264  EQU $
  1310           ->symbols %IF sym = cquote;             !start of symbol
 2576 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 257B 3D 27 00 00 00                        CMP %EAX,#39
 2580 75 00                                 JNE L1266
 2582 EB 00                                 JMP L1267
 2584                      L1266  EQU $
  1311           ->number %IF sym = '.' %AND '0' <= nextsymbol <= '9'
 2584 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2589 3D 2E 00 00 00                        CMP %EAX,#46
 258E 75 00                                 JNE L1268
 2590 E8 23 00                              CALL 'NEXTSYMBOL' (EXTERN 35)
 2593 3D 30 00 00 00                        CMP %EAX,#48
 2598 7C 00                                 JL L1268
 259A 3D 39 00 00 00                        CMP %EAX,#57
 259F 7F 00                                 JG L1268
 25A1 EB 00                                 JMP L1259
 25A3                      L1268  EQU $
  1312        %FINISH
 25A3                      L1261  EQU $
  1313  
  1314                                                   !locate atom in fixed dict
  1315        k = key>>2;  read sym
 25A3 A1 A4 2C 00 00                        MOV %EAX,[DATA+2CA4]
 25A8 C1 E8 02                              SHR %EAX,#2
 25AB 89 45 D0                              MOV [%EBP-48],%EAX
 25AE E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1316        %CYCLE
 25B1                      L1269  EQU $
  1317           j = kdict(k)
 25B1 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 25B4 68 74 00 00 00                        PUSH COT+#116
 25B9 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 25BC 83 C4 08                              ADD %ESP,#8
 25BF 89 C3                                 MOV %EBX,%EAX
 25C1 0F BF 9B A4 27 00 00                  MOVSX %EBX,[%EBX+DATA+10148]
 25C8 89 5D D4                              MOV [%EBP-44],%EBX
  1318           %EXIT %IF j&x'4000' # 0
 25CB 8B 45 D4                              MOV %EAX,[%EBP-44]
 25CE 25 00 40 00 00                        AND %EAX,#16384
 25D3 3D 00 00 00 00                        CMP %EAX,#0
 25D8 74 00                                 JE L1270
 25DA EB 00                                 JMP L1271
 25DC                      L1270  EQU $
  1319           %IF j&127 # sym %OR symtype < 0 %START
 25DC 8B 45 D4                              MOV %EAX,[%EBP-44]
 25DF 25 7F 00 00 00                        AND %EAX,#127
 25E4 3B 05 E4 00 00 00                     CMP %EAX,[DATA+00E4]
 25EA 75 00                                 JNE L1272
 25EC A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 25F1 3D 00 00 00 00                        CMP %EAX,#0
 25F6 7D 00                                 JGE L1273
 25F8                      L1272  EQU $
  1320              ->err %UNLESS j < 0
 25F8 8B 45 D4                              MOV %EAX,[%EBP-44]
 25FB 3D 00 00 00 00                        CMP %EAX,#0
 2600 7C 00                                 JL L1274
 2602 EB 00                                 JMP L1275
 2604                      L1274  EQU $
  1321              k = k+1
 2604 FF 45 D0                              INC DWORD PTR [%EBP-48]
  1322           %FINISH %ELSE %START
 2607 EB 00                                 JMP L1276
 2609                      L1273  EQU $
  1323              l = j>>7&127;  read sym
 2609 8B 45 D4                              MOV %EAX,[%EBP-44]
 260C C1 E8 07                              SHR %EAX,#7
 260F 25 7F 00 00 00                        AND %EAX,#127
 2614 89 45 CC                              MOV [%EBP-52],%EAX
 2617 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1324              %IF j > 0 %START
 261A 8B 45 D4                              MOV %EAX,[%EBP-44]
 261D 3D 00 00 00 00                        CMP %EAX,#0
 2622 7E 00                                 JLE L1277
  1325                 %IF l # 0 %START
 2624 8B 45 CC                              MOV %EAX,[%EBP-52]
 2627 3D 00 00 00 00                        CMP %EAX,#0
 262C 74 00                                 JE L1278
  1326                    ->err %IF l # sym %OR symtype < 0
 262E 8B 45 CC                              MOV %EAX,[%EBP-52]
 2631 3B 05 E4 00 00 00                     CMP %EAX,[DATA+00E4]
 2637 75 00                                 JNE L1279
 2639 A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 263E 3D 00 00 00 00                        CMP %EAX,#0
 2643 7D 00                                 JGE L1280
 2645                      L1279  EQU $
 2645 EB 00                                 JMP L1275
 2647                      L1280  EQU $
  1327                    read sym
 2647 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1328                 %FINISH
 264A                      L1278  EQU $
  1329                 l = 1
 264A C7 45 CC 01 00 00 00                  MOV DWORD PTR [%EBP-52],#1
  1330              %FINISH
 2651                      L1277  EQU $
  1331              k = k+l
 2651 8B 45 CC                              MOV %EAX,[%EBP-52]
 2654 01 45 D0                              ADD [%EBP-48],%EAX
  1332           %FINISH
 2657                      L1276  EQU $
  1333        %REPEAT
 2657 EB 00                                 JMP L1269
 2659                      L1271  EQU $
  1334        atom1 = j&127
 2659 8B 45 D4                              MOV %EAX,[%EBP-44]
 265C 25 7F 00 00 00                        AND %EAX,#127
 2661 89 05 A4 00 00 00                     MOV [DATA+00A4],%EAX
  1335        %IF atom1 = 0 %START;                      !comma
 2667 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 266C 3D 00 00 00 00                        CMP %EAX,#0
 2671 75 00                                 JNE L1281
  1336           atom1 = 19;  subatom = 19;  atom2 = 0
 2673 C7 05 A4 00 00 00 13 00 00 00         MOV DWORD PTR [DATA+00A4],#19
 267D C7 05 AC 00 00 00 13 00 00 00         MOV DWORD PTR [DATA+00AC],#19
 2687 C7 05 A8 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00A8],#0
  1337           %IF sym = nl %START
 2691 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2696 3D 0A 00 00 00                        CMP %EAX,#10
 269B 75 00                                 JNE L1282
  1338              %RETURN %IF ocount >= 0
 269D A1 84 01 00 00                        MOV %EAX,[DATA+0184]
 26A2 3D 00 00 00 00                        CMP %EAX,#0
 26A7 7C 00                                 JL L1283
 26A9 C9                                    LEAVE
 26AA C3                                    RET
 26AB                      L1283  EQU $
  1339  
  1340              !special action needs to be taken with <comma nl> as
  1341              !const array lists can be enormous
  1342  
  1343              read sym
 26AB E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1344           %FINISH
 26AE                      L1282  EQU $
  1345           %RETURN
 26AE C9                                    LEAVE
 26AF C3                                    RET
  1346        %FINISH
 26B0                      L1281  EQU $
  1347        atom2 = j>>7&127
 26B0 8B 45 D4                              MOV %EAX,[%EBP-44]
 26B3 C1 E8 07                              SHR %EAX,#7
 26B6 25 7F 00 00 00                        AND %EAX,#127
 26BB 89 05 A8 00 00 00                     MOV [DATA+00A8],%EAX
  1348        subatom = kdict(k+1)&x'3fff'
 26C1 8B 45 D0                              MOV %EAX,[%EBP-48]
 26C4 40                                    INC %EAX
 26C5 50                                    PUSH %EAX
 26C6 68 74 00 00 00                        PUSH COT+#116
 26CB E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 26CE 83 C4 08                              ADD %ESP,#8
 26D1 89 C6                                 MOV %ESI,%EAX
 26D3 0F BF 86 A4 27 00 00                  MOVSX %EAX,[%ESI+DATA+10148]
 26DA 25 FF 3F 00 00                        AND %EAX,#16383
 26DF 89 05 AC 00 00 00                     MOV [DATA+00AC],%EAX
  1349        !!!!!cont = ' '
  1350        %RETURN
 26E5 C9                                    LEAVE
 26E6 C3                                    RET
  1351  
  1352        !report an error. adjust the error marker (pos1) to point
  1353        !to the faulty character in an atom, but care needs to be taken
  1354        !to prevent misleading reports in cases like ...?????
  1355  
  1356  err:  atom1 = error+1;  atom2 = 0
 26E7                      L1275  EQU $
 26E7 C7 05 A4 00 00 00 01 80 00 00         MOV DWORD PTR [DATA+00A4],#32769
 26F1 C7 05 A8 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00A8],#0
  1357        pos1 = pos %IF pos-pos1 > 2
 26FB A1 A8 01 00 00                        MOV %EAX,[DATA+01A8]
 2700 2B 05 A0 01 00 00                     SUB %EAX,[DATA+01A0]
 2706 3D 02 00 00 00                        CMP %EAX,#2
 270B 7E 00                                 JLE L1284
 270D A1 A8 01 00 00                        MOV %EAX,[DATA+01A8]
 2712 89 05 A0 01 00 00                     MOV [DATA+01A0],%EAX
 2718                      L1284  EQU $
  1358        %RETURN
 2718 C9                                    LEAVE
 2719 C3                                    RET
  1359  
  1360          !take care with strings and symbol constants.
  1361          !make sure the constant is valid here before sucking it in
  1362          !(and potentially loosing many lines)
  1363  
  1364  symbols:atom1 = var;  atom2 = const;  type = integer
 271A                      L1267  EQU $
 271A C7 05 A4 00 00 00 5B 00 00 00         MOV DWORD PTR [DATA+00A4],#91
 2724 C7 05 A8 00 00 00 5D 00 00 00         MOV DWORD PTR [DATA+00A8],#93
 272E C7 05 B0 00 00 00 01 00 00 00         MOV DWORD PTR [DATA+00B0],#1
  1365          map gg = const;  protection = prot
 2738 C7 05 3C 01 00 00 5D 00 00 00         MOV DWORD PTR [DATA+013C],#93
 2742 C7 05 0C 01 00 00 00 01 00 00         MOV DWORD PTR [DATA+010C],#256
  1366          subatom = lp;  abandon(3) %IF lp >= lit max
 274C A1 4C 02 00 00                        MOV %EAX,[DATA+024C]
 2751 89 05 AC 00 00 00                     MOV [DATA+00AC],%EAX
 2757 A1 4C 02 00 00                        MOV %EAX,[DATA+024C]
 275C 3D 32 00 00 00                        CMP %EAX,#50
 2761 7C 00                                 JL L1285
 2763 6A 03                                 PUSH #3
 2765 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 2768 83 C4 04                              ADD %ESP,#4
 276B                      L1285  EQU $
  1367          quote = \pend quote
 276B 8B 45 D8                              MOV %EAX,[%EBP-40]
 276E F7 D0                                 NOT %EAX
 2770 89 05 EC 00 00 00                     MOV [DATA+00EC],%EAX
  1368          %RETURN
 2776 C9                                    LEAVE
 2777 C3                                    RET
  1369  
  1370        !an integer constant is acceptable so get it in and
  1371        !get the next atom
  1372  
  1373  chars:n = 0;  cont = cquote
 2778                      L1286  EQU $
 2778 C7 45 E0 00 00 00 00                  MOV DWORD PTR [%EBP-32],#0
 277F C7 05 F4 00 00 00 27 00 00 00         MOV DWORD PTR [DATA+00F4],#39
  1374        %CYCLE
 2789                      L1287  EQU $
  1375           read sym
 2789 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1376           %IF sym = cquote %START
 278C A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2791 3D 27 00 00 00                        CMP %EAX,#39
 2796 75 00                                 JNE L1288
  1377              %EXIT %IF nextsymbol # cquote
 2798 E8 23 00                              CALL 'NEXTSYMBOL' (EXTERN 35)
 279B 3D 27 00 00 00                        CMP %EAX,#39
 27A0 74 00                                 JE L1289
 27A2 EB 00                                 JMP L1290
 27A4                      L1289  EQU $
  1378              read sym
 27A4 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1379           %FINISH
 27A7                      L1288  EQU $
  1380           %IF n&(\((-1)>>byte size)) # 0 %START; ! overflow
 27A7 8B 45 E0                              MOV %EAX,[%EBP-32]
 27AA 25 00 00 00 FF                        AND %EAX,#-16777216
 27AF 3D 00 00 00 00                        CMP %EAX,#0
 27B4 74 00                                 JE L1291
  1381              pos1 = pos;  atom1 = error+10;  %RETURN
 27B6 A1 A8 01 00 00                        MOV %EAX,[DATA+01A8]
 27BB 89 05 A0 01 00 00                     MOV [DATA+01A0],%EAX
 27C1 C7 05 A4 00 00 00 0A 80 00 00         MOV DWORD PTR [DATA+00A4],#32778
 27CB C9                                    LEAVE
 27CC C3                                    RET
  1382           %FINISH
 27CD                      L1291  EQU $
  1383           ->err %IF quote = 0
 27CD A1 EC 00 00 00                        MOV %EAX,[DATA+00EC]
 27D2 3D 00 00 00 00                        CMP %EAX,#0
 27D7 75 00                                 JNE L1292
 27D9 EB 00                                 JMP L1275
 27DB                      L1292  EQU $
  1384           n = n<<byte size+sym
 27DB 8B 45 E0                              MOV %EAX,[%EBP-32]
 27DE C1 E0 08                              SHL %EAX,#8
 27E1 03 05 E4 00 00 00                     ADD %EAX,[DATA+00E4]
 27E7 89 45 E0                              MOV [%EBP-32],%EAX
  1385           quote = quote+1
 27EA FF 05 EC 00 00 00                     INC DWORD PTR [DATA+00EC]
  1386        %REPEAT
 27F0 EB 00                                 JMP L1287
 27F2                      L1290  EQU $
  1387        quote = 0;  cont = ' '
 27F2 C7 05 EC 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00EC],#0
 27FC C7 05 F4 00 00 00 20 00 00 00         MOV DWORD PTR [DATA+00F4],#32
  1388        readsym %IF sym # nl
 2806 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 280B 3D 0A 00 00 00                        CMP %EAX,#10
 2810 74 00                                 JE L1293
 2812 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
 2815                      L1293  EQU $
  1389        lit pool(lp) = n;  lp = lp+1
 2815 FF 35 4C 02 00 00                     PUSH DWORD PTR [DATA+024C]
 281B 8B 7D FC                              MOV %EDI,[%EBP-4]
 281E FF 77 88                              PUSH DWORD PTR [%EDI-120]
 2821 89 7D C4                              MOV [%EBP-60],%EDI
 2824 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 2827 83 C4 08                              ADD %ESP,#8
 282A 89 C3                                 MOV %EBX,%EAX
 282C 8B 75 C4                              MOV %ESI,[%EBP-60]
 282F 03 5E 84                              ADD %EBX,[%ESI-124]
 2832 8B 45 E0                              MOV %EAX,[%EBP-32]
 2835 89 03                                 MOV [%EBX],%EAX
 2837 FF 05 4C 02 00 00                     INC DWORD PTR [DATA+024C]
  1390        ->top
 283D EB 00                                 JMP L1255
  1391  
  1392          !sniff the grammar before getting the string
  1393  
  1394  strings:atom1 = var;  atom2 = const;  type = stringv
 283F                      L1265  EQU $
 283F C7 05 A4 00 00 00 5B 00 00 00         MOV DWORD PTR [DATA+00A4],#91
 2849 C7 05 A8 00 00 00 5D 00 00 00         MOV DWORD PTR [DATA+00A8],#93
 2853 C7 05 B0 00 00 00 03 00 00 00         MOV DWORD PTR [DATA+00B0],#3
  1395          subatom = (strp-stbase)!x'4000'
 285D 8B 7D F4                              MOV %EDI,[%EBP-12]
 2860 8B 47 F0                              MOV %EAX,[%EDI-16]
 2863 2B 05 54 01 00 00                     SUB %EAX,[DATA+0154]
 2869 0D 00 40 00 00                        OR %EAX,#16384
 286E 89 05 AC 00 00 00                     MOV [DATA+00AC],%EAX
  1396          map gg = const;  protection = prot
 2874 C7 05 3C 01 00 00 5D 00 00 00         MOV DWORD PTR [DATA+013C],#93
 287E C7 05 0C 01 00 00 00 01 00 00         MOV DWORD PTR [DATA+010C],#256
  1397          quote = subatom
 2888 A1 AC 00 00 00                        MOV %EAX,[DATA+00AC]
 288D 89 05 EC 00 00 00                     MOV [DATA+00EC],%EAX
  1398          text line = lines;                         !in case of errors
 2893 A1 C4 00 00 00                        MOV %EAX,[DATA+00C4]
 2898 89 05 C8 00 00 00                     MOV [DATA+00C8],%EAX
  1399          %RETURN
 289E C9                                    LEAVE
 289F C3                                    RET
  1400  
  1401        !a string constant is ok here, so pull it in and get
  1402        !the next atom
  1403  
  1404  text: ->chars %IF quote < 0;                       !character consts
 28A0                      L1263  EQU $
 28A0 A1 EC 00 00 00                        MOV %EAX,[DATA+00EC]
 28A5 3D 00 00 00 00                        CMP %EAX,#0
 28AA 7D 00                                 JGE L1294
 28AC EB 00                                 JMP L1286
 28AE                      L1294  EQU $
  1405        l = strp; n = strp
 28AE 8B 5D F4                              MOV %EBX,[%EBP-12]
 28B1 8B 43 F0                              MOV %EAX,[%EBX-16]
 28B4 89 45 CC                              MOV [%EBP-52],%EAX
 28B7 8B 43 F0                              MOV %EAX,[%EBX-16]
 28BA 89 45 E0                              MOV [%EBP-32],%EAX
  1406        j = addr(glink(gmin-1));                     !absolute limit
 28BD A1 58 01 00 00                        MOV %EAX,[DATA+0158]
 28C2 48                                    DEC %EAX
 28C3 50                                    PUSH %EAX
 28C4 68 64 00 00 00                        PUSH COT+#100
 28C9 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 28CC 83 C4 08                              ADD %ESP,#8
 28CF 89 C6                                 MOV %ESI,%EAX
 28D1 8D B6 70 1A 00 00                     LEA %ESI,[%ESI+DATA+6768]
 28D7 89 75 D4                              MOV [%EBP-44],%ESI
  1407        k = l+256;                                   !string length limit
 28DA 8B 45 CC                              MOV %EAX,[%EBP-52]
 28DD 05 00 01 00 00                        ADD %EAX,#256
 28E2 89 45 D0                              MOV [%EBP-48],%EAX
  1408        k = j %IF j < k;                             !choose lower
 28E5 8B 45 D4                              MOV %EAX,[%EBP-44]
 28E8 3B 45 D0                              CMP %EAX,[%EBP-48]
 28EB 7D 00                                 JGE L1295
 28ED 8B 45 D4                              MOV %EAX,[%EBP-44]
 28F0 89 45 D0                              MOV [%EBP-48],%EAX
 28F3                      L1295  EQU $
  1409  
  1410        %CYCLE
 28F3                      L1296  EQU $
  1411           cont = squote;  quote = 1
 28F3 C7 05 F4 00 00 00 22 00 00 00         MOV DWORD PTR [DATA+00F4],#34
 28FD C7 05 EC 00 00 00 01 00 00 00         MOV DWORD PTR [DATA+00EC],#1
  1412           %CYCLE
 2907                      L1297  EQU $
  1413              read sym
 2907 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1414              %IF sym = squote %START;               !terminator?
 290A A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 290F 3D 22 00 00 00                        CMP %EAX,#34
 2914 75 00                                 JNE L1298
  1415                 %EXIT %IF nextsymbol # squote;      !yes ->
 2916 E8 23 00                              CALL 'NEXTSYMBOL' (EXTERN 35)
 2919 3D 22 00 00 00                        CMP %EAX,#34
 291E 74 00                                 JE L1299
 2920 EB 00                                 JMP L1300
 2922                      L1299  EQU $
  1416                 read sym;                           ! skip quote
 2922 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1417              %FINISH
 2925                      L1298  EQU $
  1418              l = l+1;  byteinteger(l) = sym
 2925 FF 45 CC                              INC DWORD PTR [%EBP-52]
 2928 8B 7D CC                              MOV %EDI,[%EBP-52]
 292B A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2930 88 07                                 MOV [%EDI],%AL
  1419              lines = text line %AND abandon(7) %IF l >= k; !too many chars
 2932 8B 45 CC                              MOV %EAX,[%EBP-52]
 2935 3B 45 D0                              CMP %EAX,[%EBP-48]
 2938 7C 00                                 JL L1301
 293A A1 C8 00 00 00                        MOV %EAX,[DATA+00C8]
 293F 89 05 C4 00 00 00                     MOV [DATA+00C4],%EAX
 2945 6A 07                                 PUSH #7
 2947 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 294A 83 C4 04                              ADD %ESP,#4
 294D                      L1301  EQU $
  1420           %REPEAT
 294D EB 00                                 JMP L1297
 294F                      L1300  EQU $
  1421           byteinteger(n) = l-n;                            !plug in length
 294F 8B 45 CC                              MOV %EAX,[%EBP-52]
 2952 2B 45 E0                              SUB %EAX,[%EBP-32]
 2955 8B 5D E0                              MOV %EBX,[%EBP-32]
 2958 88 03                                 MOV [%EBX],%AL
  1422     
  1423           strp = l+1;                                      !ready for next string
 295A 8B 45 CC                              MOV %EAX,[%EBP-52]
 295D 40                                    INC %EAX
 295E 8B 75 F4                              MOV %ESI,[%EBP-12]
 2961 89 46 F0                              MOV [%ESI-16],%EAX
  1424           quote = 0;  cont = ' ';  read sym
 2964 C7 05 EC 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00EC],#0
 296E C7 05 F4 00 00 00 20 00 00 00         MOV DWORD PTR [DATA+00F4],#32
 2978 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1425           code atom(target)
 297B FF 75 08                              PUSH DWORD PTR [%EBP+8]
 297E E8 00 00                              CALL 'CODEATOM' (INTERNAL L1203 )
 2981 83 C4 04                              ADD %ESP,#4
  1426           %RETURN %UNLESS atom1 = 48 %AND sym = squote;    !fold "???"."+++"
 2984 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 2989 3D 30 00 00 00                        CMP %EAX,#48
 298E 75 00                                 JNE L1302
 2990 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2995 3D 22 00 00 00                        CMP %EAX,#34
 299A 74 00                                 JE L1303
 299C                      L1302  EQU $
 299C C9                                    LEAVE
 299D C3                                    RET
 299E                      L1303  EQU $
  1427        %REPEAT
 299E EB 00                                 JMP L1296
  1428  
  1429        %ROUTINE get(%INTEGER limit)
 29A0 EB 00                                 JMP L1304
 29A2                      L1305  EQU $
 29A2 C8 00 00 05                           ENTER 0000,5
  1430           %INTEGER s, shift
  1431           shift = 0
 29A6 C7 45 E4 00 00 00 00                  MOV DWORD PTR [%EBP-28],#0
  1432           %IF base # 10 %START
 29AD 8B 7D F0                              MOV %EDI,[%EBP-16]
 29B0 8B 47 E4                              MOV %EAX,[%EDI-28]
 29B3 3D 0A 00 00 00                        CMP %EAX,#10
 29B8 74 00                                 JE L1306
  1433              %IF base = 16 %START
 29BA 8B 47 E4                              MOV %EAX,[%EDI-28]
 29BD 3D 10 00 00 00                        CMP %EAX,#16
 29C2 75 00                                 JNE L1307
  1434                 shift = 4
 29C4 C7 45 E4 04 00 00 00                  MOV DWORD PTR [%EBP-28],#4
  1435              %FINISH %ELSE %START
 29CB EB 00                                 JMP L1308
 29CD                      L1307  EQU $
  1436                 %IF base = 8 %START
 29CD 8B 5D F0                              MOV %EBX,[%EBP-16]
 29D0 8B 43 E4                              MOV %EAX,[%EBX-28]
 29D3 3D 08 00 00 00                        CMP %EAX,#8
 29D8 75 00                                 JNE L1309
  1437                    shift = 3
 29DA C7 45 E4 03 00 00 00                  MOV DWORD PTR [%EBP-28],#3
  1438                 %FINISH %ELSE %START
 29E1 EB 00                                 JMP L1310
 29E3                      L1309  EQU $
  1439                    %IF base = 2 %START
 29E3 8B 75 F0                              MOV %ESI,[%EBP-16]
 29E6 8B 46 E4                              MOV %EAX,[%ESI-28]
 29E9 3D 02 00 00 00                        CMP %EAX,#2
 29EE 75 00                                 JNE L1311
  1440                       shift = 1
 29F0 C7 45 E4 01 00 00 00                  MOV DWORD PTR [%EBP-28],#1
  1441                    %FINISH
 29F7                      L1311  EQU $
  1442                 %FINISH
 29F7                      L1310  EQU $
  1443              %FINISH
 29F7                      L1308  EQU $
  1444           %FINISH
 29F7                      L1306  EQU $
  1445           n = 0
 29F7 8B 7D F0                              MOV %EDI,[%EBP-16]
 29FA C7 47 E0 00 00 00 00                  MOV DWORD PTR [%EDI-32],#0
  1446           %CYCLE
 2A01                      L1312  EQU $
  1447              %IF symtype = -1 %START;            !digit
 2A01 A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 2A06 3D FF FF FF FF                        CMP %EAX,#-1
 2A0B 75 00                                 JNE L1313
  1448                 s = sym-'0'
 2A0D A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2A12 2D 30 00 00 00                        SUB %EAX,#48
 2A17 89 45 E8                              MOV [%EBP-24],%EAX
  1449              %FINISH %ELSE %START
 2A1A EB 00                                 JMP L1314
 2A1C                      L1313  EQU $
  1450                 %IF symtype < 0 %START;          !letter
 2A1C A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 2A21 3D 00 00 00 00                        CMP %EAX,#0
 2A26 7D 00                                 JGE L1315
  1451                    s = sym-'A'+10
 2A28 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2A2D 2D 41 00 00 00                        SUB %EAX,#65
 2A32 05 0A 00 00 00                        ADD %EAX,#10
 2A37 89 45 E8                              MOV [%EBP-24],%EAX
  1452                 %FINISH %ELSE %START
 2A3A EB 00                                 JMP L1316
 2A3C                      L1315  EQU $
  1453                    %RETURN
 2A3C C9                                    LEAVE
 2A3D C3                                    RET
  1454                 %FINISH
 2A3E                      L1316  EQU $
  1455              %FINISH
 2A3E                      L1314  EQU $
  1456              %RETURN %IF s >= limit
 2A3E 8B 45 E8                              MOV %EAX,[%EBP-24]
 2A41 3B 45 08                              CMP %EAX,[%EBP+8]
 2A44 7C 00                                 JL L1317
 2A46 C9                                    LEAVE
 2A47 C3                                    RET
 2A48                      L1317  EQU $
  1457              pt = pt+1;  byteinteger(pt) = sym
 2A48 8B 5D F0                              MOV %EBX,[%EBP-16]
 2A4B FF 43 C8                              INC DWORD PTR [%EBX-56]
 2A4E 8B 5B C8                              MOV %EBX,[%EBX-56]
 2A51 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2A56 88 03                                 MOV [%EBX],%AL
  1458              %IF base = 10 %START;            !check overflow
 2A58 8B 75 F0                              MOV %ESI,[%EBP-16]
 2A5B 8B 46 E4                              MOV %EAX,[%ESI-28]
 2A5E 3D 0A 00 00 00                        CMP %EAX,#10
 2A63 75 00                                 JNE L1318
  1459                 %IF n >= max int %AND (s > max dig %OR n > max int) %START
 2A65 8B 46 E0                              MOV %EAX,[%ESI-32]
 2A68 3D CC CC CC 0C                        CMP %EAX,#214748364
 2A6D 7C 00                                 JL L1319
 2A6F 8B 45 E8                              MOV %EAX,[%EBP-24]
 2A72 3D 07 00 00 00                        CMP %EAX,#7
 2A77 7F 00                                 JG L1320
 2A79 8B 46 E0                              MOV %EAX,[%ESI-32]
 2A7C 3D CC CC CC 0C                        CMP %EAX,#214748364
 2A81 7E 00                                 JLE L1319
 2A83                      L1320  EQU $
  1460  
  1461                    !too big for an integer,
  1462                    !so call it a real
  1463  
  1464                    base = 0;  type = real;  n = 0
 2A83 8B 7D F0                              MOV %EDI,[%EBP-16]
 2A86 C7 47 E4 00 00 00 00                  MOV DWORD PTR [%EDI-28],#0
 2A8D C7 05 B0 00 00 00 02 00 00 00         MOV DWORD PTR [DATA+00B0],#2
 2A97 C7 47 E0 00 00 00 00                  MOV DWORD PTR [%EDI-32],#0
  1465                 %FINISH
 2A9E                      L1319  EQU $
  1466              %FINISH
 2A9E                      L1318  EQU $
  1467              %IF shift = 0 %START
 2A9E 8B 45 E4                              MOV %EAX,[%EBP-28]
 2AA1 3D 00 00 00 00                        CMP %EAX,#0
 2AA6 75 00                                 JNE L1321
  1468                 n = n*base+s
 2AA8 8B 5D F0                              MOV %EBX,[%EBP-16]
 2AAB 8B 43 E0                              MOV %EAX,[%EBX-32]
 2AAE F7 6B E4                              IMUL DWORD PTR [%EBX-28]
 2AB1 03 45 E8                              ADD %EAX,[%EBP-24]
 2AB4 89 43 E0                              MOV [%EBX-32],%EAX
  1469              %FINISH %ELSE %START
 2AB7 EB 00                                 JMP L1322
 2AB9                      L1321  EQU $
  1470                 n = n<<shift+s
 2AB9 8B 4D E4                              MOV %ECX,[%EBP-28]
 2ABC 8B 75 F0                              MOV %ESI,[%EBP-16]
 2ABF 8B 46 E0                              MOV %EAX,[%ESI-32]
 2AC2 D3 E0                                 SHL %EAX,%ECX
 2AC4 03 45 E8                              ADD %EAX,[%EBP-24]
 2AC7 89 46 E0                              MOV [%ESI-32],%EAX
  1471              %FINISH
 2ACA                      L1322  EQU $
  1472              read sym
 2ACA E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1473           %REPEAT
 2ACD EB 00                                 JMP L1312
  1474        %END
 2ACF                      L1304  EQU $
  1475  
  1476  number:base = 10
 2ACF                      L1259  EQU $
 2ACF C7 45 E4 0A 00 00 00                  MOV DWORD PTR [%EBP-28],#10
  1477  bxk:   atom1 = var;  atom2 = const;  type = integer;  subatom = lp
 2AD6                      L1323  EQU $
 2AD6 C7 05 A4 00 00 00 5B 00 00 00         MOV DWORD PTR [DATA+00A4],#91
 2AE0 C7 05 A8 00 00 00 5D 00 00 00         MOV DWORD PTR [DATA+00A8],#93
 2AEA C7 05 B0 00 00 00 01 00 00 00         MOV DWORD PTR [DATA+00B0],#1
 2AF4 A1 4C 02 00 00                        MOV %EAX,[DATA+024C]
 2AF9 89 05 AC 00 00 00                     MOV [DATA+00AC],%EAX
  1478         map gg = const;  protection = prot
 2AFF C7 05 3C 01 00 00 5D 00 00 00         MOV DWORD PTR [DATA+013C],#93
 2B09 C7 05 0C 01 00 00 00 01 00 00         MOV DWORD PTR [DATA+010C],#256
  1479         abandon(3) %IF lp >= lit max
 2B13 A1 4C 02 00 00                        MOV %EAX,[DATA+024C]
 2B18 3D 32 00 00 00                        CMP %EAX,#50
 2B1D 7C 00                                 JL L1324
 2B1F 6A 03                                 PUSH #3
 2B21 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 2B24 83 C4 04                              ADD %ESP,#4
 2B27                      L1324  EQU $
  1480         pt = strp;  mul = 0
 2B27 8B 7D F4                              MOV %EDI,[%EBP-12]
 2B2A 8B 47 F0                              MOV %EAX,[%EDI-16]
 2B2D 89 45 C8                              MOV [%EBP-56],%EAX
 2B30 C7 45 DC 00 00 00 00                  MOV DWORD PTR [%EBP-36],#0
  1481         %CYCLE
 2B37                      L1325  EQU $
  1482            get(base)
 2B37 FF 75 E4                              PUSH DWORD PTR [%EBP-28]
 2B3A E8 00 00                              CALL 'GET' (INTERNAL L1305 )
 2B3D 83 C4 04                              ADD %ESP,#4
  1483            %EXIT %UNLESS sym = '_' %AND base # 0 %AND pend quote = 0;    !change of base
 2B40 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2B45 3D 5F 00 00 00                        CMP %EAX,#95
 2B4A 75 00                                 JNE L1326
 2B4C 8B 45 E4                              MOV %EAX,[%EBP-28]
 2B4F 3D 00 00 00 00                        CMP %EAX,#0
 2B54 74 00                                 JE L1326
 2B56 8B 45 D8                              MOV %EAX,[%EBP-40]
 2B59 3D 00 00 00 00                        CMP %EAX,#0
 2B5E 74 00                                 JE L1327
 2B60                      L1326  EQU $
 2B60 EB 00                                 JMP L1328
 2B62                      L1327  EQU $
  1484            pt = pt+1;  byteinteger(pt) = '_'
 2B62 FF 45 C8                              INC DWORD PTR [%EBP-56]
 2B65 8B 5D C8                              MOV %EBX,[%EBP-56]
 2B68 C6 03 5F                              MOV BYTE PTR [%EBX],#95
  1485            read sym
 2B6B E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1486            base = n
 2B6E 8B 45 E0                              MOV %EAX,[%EBP-32]
 2B71 89 45 E4                              MOV [%EBP-28],%EAX
  1487         %REPEAT
 2B74 EB 00                                 JMP L1325
 2B76                      L1328  EQU $
  1488  
  1489         %IF pend quote # 0 %START
 2B76 8B 45 D8                              MOV %EAX,[%EBP-40]
 2B79 3D 00 00 00 00                        CMP %EAX,#0
 2B7E 74 00                                 JE L1329
  1490            ->err %IF sym # cquote
 2B80 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2B85 3D 27 00 00 00                        CMP %EAX,#39
 2B8A 74 00                                 JE L1330
 2B8C EB 00                                 JMP L1275
 2B8E                      L1330  EQU $
  1491            readsym
 2B8E E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1492         %FINISH
 2B91                      L1329  EQU $
  1493         %IF sym = '.' %START;                        !a real constant
 2B91 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2B96 3D 2E 00 00 00                        CMP %EAX,#46
 2B9B 75 00                                 JNE L1331
  1494            pt = pt+1;  byteinteger(pt) = '.'
 2B9D FF 45 C8                              INC DWORD PTR [%EBP-56]
 2BA0 8B 75 C8                              MOV %ESI,[%EBP-56]
 2BA3 C6 06 2E                              MOV BYTE PTR [%ESI],#46
  1495            read sym
 2BA6 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1496            type = real;  n = base;  base = 0;  get(n)
 2BA9 C7 05 B0 00 00 00 02 00 00 00         MOV DWORD PTR [DATA+00B0],#2
 2BB3 8B 45 E4                              MOV %EAX,[%EBP-28]
 2BB6 89 45 E0                              MOV [%EBP-32],%EAX
 2BB9 C7 45 E4 00 00 00 00                  MOV DWORD PTR [%EBP-28],#0
 2BC0 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 2BC3 E8 00 00                              CALL 'GET' (INTERNAL L1305 )
 2BC6 83 C4 04                              ADD %ESP,#4
  1497         %FINISH
 2BC9                      L1331  EQU $
  1498  
  1499         %IF sym = '@' %START;                        !an exponent
 2BC9 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2BCE 3D 40 00 00 00                        CMP %EAX,#64
 2BD3 75 00                                 JNE L1332
  1500            pt = pt+1;  byteinteger(pt) = '@';  k = pt
 2BD5 FF 45 C8                              INC DWORD PTR [%EBP-56]
 2BD8 8B 7D C8                              MOV %EDI,[%EBP-56]
 2BDB C6 07 40                              MOV BYTE PTR [%EDI],#64
 2BDE 8B 45 C8                              MOV %EAX,[%EBP-56]
 2BE1 89 45 D0                              MOV [%EBP-48],%EAX
  1501            readsym
 2BE4 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1502            type = integer;  base = 10
 2BE7 C7 05 B0 00 00 00 01 00 00 00         MOV DWORD PTR [DATA+00B0],#1
 2BF1 C7 45 E4 0A 00 00 00                  MOV DWORD PTR [%EBP-28],#10
  1503            %IF sym = '-' %START
 2BF8 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2BFD 3D 2D 00 00 00                        CMP %EAX,#45
 2C02 75 00                                 JNE L1333
  1504               read sym;  get(10);  n = -n
 2C04 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
 2C07 6A 0A                                 PUSH #10
 2C09 E8 00 00                              CALL 'GET' (INTERNAL L1305 )
 2C0C 83 C4 04                              ADD %ESP,#4
 2C0F F7 5D E0                              NEG DWORD PTR [%EBP-32]
  1505            %FINISH %ELSE %START
 2C12 EB 00                                 JMP L1334
 2C14                      L1333  EQU $
  1506               get(10)
 2C14 6A 0A                                 PUSH #10
 2C16 E8 00 00                              CALL 'GET' (INTERNAL L1305 )
 2C19 83 C4 04                              ADD %ESP,#4
  1507            %FINISH
 2C1C                      L1334  EQU $
  1508            pt = k+1;  byteinteger(pt) = lp;  litpool(lp) = n;  lp = lp+1
 2C1C 8B 45 D0                              MOV %EAX,[%EBP-48]
 2C1F 40                                    INC %EAX
 2C20 89 45 C8                              MOV [%EBP-56],%EAX
 2C23 8B 5D C8                              MOV %EBX,[%EBP-56]
 2C26 A1 4C 02 00 00                        MOV %EAX,[DATA+024C]
 2C2B 88 03                                 MOV [%EBX],%AL
 2C2D FF 35 4C 02 00 00                     PUSH DWORD PTR [DATA+024C]
 2C33 8B 75 FC                              MOV %ESI,[%EBP-4]
 2C36 FF 76 88                              PUSH DWORD PTR [%ESI-120]
 2C39 89 75 C0                              MOV [%EBP-64],%ESI
 2C3C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 2C3F 83 C4 08                              ADD %ESP,#8
 2C42 89 C7                                 MOV %EDI,%EAX
 2C44 8B 5D C0                              MOV %EBX,[%EBP-64]
 2C47 03 7B 84                              ADD %EDI,[%EBX-124]
 2C4A 8B 45 E0                              MOV %EAX,[%EBP-32]
 2C4D 89 07                                 MOV [%EDI],%EAX
 2C4F FF 05 4C 02 00 00                     INC DWORD PTR [DATA+024C]
  1509            atom1 = error+10 %IF base = 0
 2C55 8B 45 E4                              MOV %EAX,[%EBP-28]
 2C58 3D 00 00 00 00                        CMP %EAX,#0
 2C5D 75 00                                 JNE L1335
 2C5F C7 05 A4 00 00 00 0A 80 00 00         MOV DWORD PTR [DATA+00A4],#32778
 2C69                      L1335  EQU $
  1510            type = real;                              !exponents force the type
 2C69 C7 05 B0 00 00 00 02 00 00 00         MOV DWORD PTR [DATA+00B0],#2
  1511         %FINISH
 2C73                      L1332  EQU $
  1512  
  1513         %IF type = real %START
 2C73 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 2C78 3D 02 00 00 00                        CMP %EAX,#2
 2C7D 75 00                                 JNE L1336
  1514            byteinteger(strp) = pt-strp
 2C7F 8B 45 C8                              MOV %EAX,[%EBP-56]
 2C82 8B 75 F4                              MOV %ESI,[%EBP-12]
 2C85 2B 46 F0                              SUB %EAX,[%ESI-16]
 2C88 8B 76 F0                              MOV %ESI,[%ESI-16]
 2C8B 88 06                                 MOV [%ESI],%AL
  1515            subatom = (strp-stbase)!x'2000';  strp = pt+1
 2C8D 8B 7D F4                              MOV %EDI,[%EBP-12]
 2C90 8B 47 F0                              MOV %EAX,[%EDI-16]
 2C93 2B 05 54 01 00 00                     SUB %EAX,[DATA+0154]
 2C99 0D 00 20 00 00                        OR %EAX,#8192
 2C9E 89 05 AC 00 00 00                     MOV [DATA+00AC],%EAX
 2CA4 8B 45 C8                              MOV %EAX,[%EBP-56]
 2CA7 40                                    INC %EAX
 2CA8 89 47 F0                              MOV [%EDI-16],%EAX
  1516         %FINISH %ELSE %START
 2CAB EB 00                                 JMP L1337
 2CAD                      L1336  EQU $
  1517            litpool(lp) = n
 2CAD FF 35 4C 02 00 00                     PUSH DWORD PTR [DATA+024C]
 2CB3 8B 5D FC                              MOV %EBX,[%EBP-4]
 2CB6 FF 73 88                              PUSH DWORD PTR [%EBX-120]
 2CB9 89 5D BC                              MOV [%EBP-68],%EBX
 2CBC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 2CBF 83 C4 08                              ADD %ESP,#8
 2CC2 89 C6                                 MOV %ESI,%EAX
 2CC4 8B 7D BC                              MOV %EDI,[%EBP-68]
 2CC7 03 77 84                              ADD %ESI,[%EDI-124]
 2CCA 8B 45 E0                              MOV %EAX,[%EBP-32]
 2CCD 89 06                                 MOV [%ESI],%EAX
  1518            lp = lp+1
 2CCF FF 05 4C 02 00 00                     INC DWORD PTR [DATA+024C]
  1519         %FINISH
 2CD5                      L1337  EQU $
  1520         %RETURN
 2CD5 C9                                    LEAVE
 2CD6 C3                                    RET
  1521  
  1522  name: atom1 = 0 %AND %RETURN %IF 27 <= target <= 41
 2CD7                      L1257  EQU $
 2CD7 8B 45 08                              MOV %EAX,[%EBP+8]
 2CDA 3D 1B 00 00 00                        CMP %EAX,#27
 2CDF 7C 00                                 JL L1338
 2CE1 3D 29 00 00 00                        CMP %EAX,#41
 2CE6 7F 00                                 JG L1338
 2CE8 C7 05 A4 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00A4],#0
 2CF2 C9                                    LEAVE
 2CF3 C3                                    RET
 2CF4                      L1338  EQU $
  1523        hash value = 0
 2CF4 8B 5D FC                              MOV %EBX,[%EBP-4]
 2CF7 C7 43 E0 00 00 00 00                  MOV DWORD PTR [%EBX-32],#0
  1524  
  1525        !*****************************
  1526        !*machine dependent for speed*
  1527        !*****************************
  1528  
  1529        dp = dmax+1
 2CFE A1 5C 01 00 00                        MOV %EAX,[DATA+015C]
 2D03 40                                    INC %EAX
 2D04 89 05 9C 01 00 00                     MOV [DATA+019C],%EAX
  1530        da = addr(dict(dp));  dbase = da
 2D0A FF 35 9C 01 00 00                     PUSH DWORD PTR [DATA+019C]
 2D10 FF B3 40 FF FF FF                     PUSH DWORD PTR [%EBX-192]
 2D16 89 5D B8                              MOV [%EBP-72],%EBX
 2D19 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 2D1C 83 C4 08                              ADD %ESP,#8
 2D1F 89 C6                                 MOV %ESI,%EAX
 2D21 8B 7D B8                              MOV %EDI,[%EBP-72]
 2D24 03 B7 3C FF FF FF                     ADD %ESI,[%EDI-196]
 2D2A 89 75 E8                              MOV [%EBP-24],%ESI
 2D2D 8B 45 E8                              MOV %EAX,[%EBP-24]
 2D30 89 45 EC                              MOV [%EBP-20],%EAX
  1531        %CYCLE
 2D33                      L1339  EQU $
  1532           hash value = hash value+(hash value+sym);        !is this good enough?
 2D33 8B 5D FC                              MOV %EBX,[%EBP-4]
 2D36 8B 43 E0                              MOV %EAX,[%EBX-32]
 2D39 03 05 E4 00 00 00                     ADD %EAX,[DATA+00E4]
 2D3F 01 43 E0                              ADD [%EBX-32],%EAX
  1533           da = da+1;  byteinteger(da) = sym
 2D42 FF 45 E8                              INC DWORD PTR [%EBP-24]
 2D45 8B 75 E8                              MOV %ESI,[%EBP-24]
 2D48 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2D4D 88 06                                 MOV [%ESI],%AL
  1534           read sym
 2D4F E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1535           %EXIT %IF symtype >= 0
 2D52 A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 2D57 3D 00 00 00 00                        CMP %EAX,#0
 2D5C 7C 00                                 JL L1340
 2D5E EB 00                                 JMP L1341
 2D60                      L1340  EQU $
  1536        %REPEAT
 2D60 EB 00                                 JMP L1339
 2D62                      L1341  EQU $
  1537        %IF sym = cquote %START
 2D62 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2D67 3D 27 00 00 00                        CMP %EAX,#39
 2D6C 75 00                                 JNE L1342
  1538           pend quote = 100
 2D6E C7 45 D8 64 00 00 00                  MOV DWORD PTR [%EBP-40],#100
  1539           ->symbols %IF hash value = 'M'
 2D75 8B 7D FC                              MOV %EDI,[%EBP-4]
 2D78 8B 47 E0                              MOV %EAX,[%EDI-32]
 2D7B 3D 4D 00 00 00                        CMP %EAX,#77
 2D80 75 00                                 JNE L1343
 2D82 EB 00                                 JMP L1267
 2D84                      L1343  EQU $
  1540           read sym
 2D84 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1541           %IF hash value = 'X' %THEN base = 16 %AND ->bxk
 2D87 8B 5D FC                              MOV %EBX,[%EBP-4]
 2D8A 8B 43 E0                              MOV %EAX,[%EBX-32]
 2D8D 3D 58 00 00 00                        CMP %EAX,#88
 2D92 75 00                                 JNE L1344
 2D94 C7 45 E4 10 00 00 00                  MOV DWORD PTR [%EBP-28],#16
 2D9B EB 00                                 JMP L1323
 2D9D                      L1344  EQU $
  1542           %IF hash value = 'K' %C
  1543+          %OR hash value = 'O' %THEN base = 8 %AND ->bxk
 2D9D 8B 75 FC                              MOV %ESI,[%EBP-4]
 2DA0 8B 46 E0                              MOV %EAX,[%ESI-32]
 2DA3 3D 4B 00 00 00                        CMP %EAX,#75
 2DA8 74 00                                 JE L1345
 2DAA 8B 46 E0                              MOV %EAX,[%ESI-32]
 2DAD 3D 4F 00 00 00                        CMP %EAX,#79
 2DB2 75 00                                 JNE L1346
 2DB4                      L1345  EQU $
 2DB4 C7 45 E4 08 00 00 00                  MOV DWORD PTR [%EBP-28],#8
 2DBB EB 00                                 JMP L1323
 2DBD                      L1346  EQU $
  1544           %IF hash value = 'B' %THEN base = 2 %AND ->bxk
 2DBD 8B 7D FC                              MOV %EDI,[%EBP-4]
 2DC0 8B 47 E0                              MOV %EAX,[%EDI-32]
 2DC3 3D 42 00 00 00                        CMP %EAX,#66
 2DC8 75 00                                 JNE L1347
 2DCA C7 45 E4 02 00 00 00                  MOV DWORD PTR [%EBP-28],#2
 2DD1 EB 00                                 JMP L1323
 2DD3                      L1347  EQU $
  1545           ->err
 2DD3 EB 00                                 JMP L1275
  1546        %FINISH
 2DD5                      L1342  EQU $
  1547        n = da-dbase
 2DD5 8B 45 E8                              MOV %EAX,[%EBP-24]
 2DD8 2B 45 EC                              SUB %EAX,[%EBP-20]
 2DDB 89 45 E0                              MOV [%EBP-32],%EAX
  1548        byteinteger(dbase) = n
 2DDE 8B 5D EC                              MOV %EBX,[%EBP-20]
 2DE1 8B 45 E0                              MOV %EAX,[%EBP-32]
 2DE4 88 03                                 MOV [%EBX],%AL
  1549        dp = dp+(n+2)>>1
 2DE6 8B 45 E0                              MOV %EAX,[%EBP-32]
 2DE9 05 02 00 00 00                        ADD %EAX,#2
 2DEE D1 E8                                 SHR %EAX,#1
 2DF0 01 05 9C 01 00 00                     ADD [DATA+019C],%EAX
  1550        abandon(8) %IF dp >= dmin
 2DF6 A1 9C 01 00 00                        MOV %EAX,[DATA+019C]
 2DFB 8B 75 F8                              MOV %ESI,[%EBP-8]
 2DFE 3B 46 10                              CMP %EAX,[%ESI+16]
 2E01 7C 00                                 JL L1348
 2E03 6A 08                                 PUSH #8
 2E05 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 2E08 83 C4 04                              ADD %ESP,#4
 2E0B                      L1348  EQU $
  1551  
  1552        atom2 = 90;                                    !ident
 2E0B C7 05 A8 00 00 00 5A 00 00 00         MOV DWORD PTR [DATA+00A8],#90
  1553        %IF last1 = 0 %AND sym = ':' %START;           !label
 2E15 A1 1C 01 00 00                        MOV %EAX,[DATA+011C]
 2E1A 3D 00 00 00 00                        CMP %EAX,#0
 2E1F 75 00                                 JNE L1349
 2E21 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2E26 3D 3A 00 00 00                        CMP %EAX,#58
 2E2B 75 00                                 JNE L1349
  1554           limit = local;  lookup(lab);  %RETURN
 2E2D A1 B0 01 00 00                        MOV %EAX,[DATA+01B0]
 2E32 89 05 88 01 00 00                     MOV [DATA+0188],%EAX
 2E38 6A 03                                 PUSH #3
 2E3A E8 00 00                              CALL 'LOOKUP' (INTERNAL L1205 )
 2E3D 83 C4 04                              ADD %ESP,#4
 2E40 C9                                    LEAVE
 2E41 C3                                    RET
  1555        %FINISH
 2E42                      L1349  EQU $
  1556        %IF last1 = jump %START;                       !->label
 2E42 A1 1C 01 00 00                        MOV %EAX,[DATA+011C]
 2E47 3D 36 00 00 00                        CMP %EAX,#54
 2E4C 75 00                                 JNE L1350
  1557           limit = local;  lookup(lab+spec+used bit);  %RETURN
 2E4E A1 B0 01 00 00                        MOV %EAX,[DATA+01B0]
 2E53 89 05 88 01 00 00                     MOV [DATA+0188],%EAX
 2E59 68 83 80 00 00                        PUSH #32899
 2E5E E8 00 00                              CALL 'LOOKUP' (INTERNAL L1205 )
 2E61 83 C4 04                              ADD %ESP,#4
 2E64 C9                                    LEAVE
 2E65 C3                                    RET
  1558        %FINISH
 2E66                      L1350  EQU $
  1559        %IF decl # 0 %AND target = 90 %START;          !identifier
 2E66 A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 2E6B 3D 00 00 00 00                        CMP %EAX,#0
 2E70 74 00                                 JE L1351
 2E72 8B 45 08                              MOV %EAX,[%EBP+8]
 2E75 3D 5A 00 00 00                        CMP %EAX,#90
 2E7A 75 00                                 JNE L1351
  1560           search base = fm base
 2E7C A1 B4 01 00 00                        MOV %EAX,[DATA+01B4]
 2E81 89 05 B8 01 00 00                     MOV [DATA+01B8],%EAX
  1561           limit = local;  lookup(decl)
 2E87 A1 B0 01 00 00                        MOV %EAX,[DATA+01B0]
 2E8C 89 05 88 01 00 00                     MOV [DATA+0188],%EAX
 2E92 FF 35 FC 00 00 00                     PUSH DWORD PTR [DATA+00FC]
 2E98 E8 00 00                              CALL 'LOOKUP' (INTERNAL L1205 )
 2E9B 83 C4 04                              ADD %ESP,#4
  1562           search base = 0
 2E9E C7 05 B8 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01B8],#0
  1563        %FINISH %ELSE %START
 2EA8 EB 00                                 JMP L1352
 2EAA                      L1351  EQU $
  1564           limit = 0;  lookup(0)
 2EAA C7 05 88 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0188],#0
 2EB4 6A 00                                 PUSH #0
 2EB6 E8 00 00                              CALL 'LOOKUP' (INTERNAL L1205 )
 2EB9 83 C4 04                              ADD %ESP,#4
  1565        %FINISH
 2EBC                      L1352  EQU $
  1566     %END
 2EBC C9                                    LEAVE
 2EBD C3                                    RET
 2EBE                      L1157  EQU $
  1567  
  1568     %INTEGERFN parsed machine code
 2EBE                      L1353  EQU $
 2EBE C8 00 00 04                           ENTER 0000,4
  1569        !   *opcode_??????????
  1570        %routine octal(%integer n)
 2EC2 EB 00                                 JMP L1354
 2EC4                      L1355  EQU $
 2EC4 C8 00 00 05                           ENTER 0000,5
  1571           %integer m
  1572           m = n>>3
 2EC8 8B 45 08                              MOV %EAX,[%EBP+8]
 2ECB C1 E8 03                              SHR %EAX,#3
 2ECE 89 45 E8                              MOV [%EBP-24],%EAX
  1573           octal(m) %if m # 0
 2ED1 8B 45 E8                              MOV %EAX,[%EBP-24]
 2ED4 3D 00 00 00 00                        CMP %EAX,#0
 2ED9 74 00                                 JE L1356
 2EDB FF 75 E8                              PUSH DWORD PTR [%EBP-24]
 2EDE E8 00 00                              CALL 'OCTAL' (INTERNAL L1355 )
 2EE1 83 C4 04                              ADD %ESP,#4
 2EE4                      L1356  EQU $
  1574           bp = bp+1;  buff(bp) = n&7+'0'
 2EE4 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 2EEA FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 2EF0 8B 7D FC                              MOV %EDI,[%EBP-4]
 2EF3 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 2EF9 89 7D E4                              MOV [%EBP-28],%EDI
 2EFC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 2EFF 83 C4 08                              ADD %ESP,#8
 2F02 89 C3                                 MOV %EBX,%EAX
 2F04 8B 75 E4                              MOV %ESI,[%EBP-28]
 2F07 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 2F0D 8B 45 08                              MOV %EAX,[%EBP+8]
 2F10 25 07 00 00 00                        AND %EAX,#7
 2F15 05 30 00 00 00                        ADD %EAX,#48
 2F1A 88 03                                 MOV [%EBX],%AL
  1575        %end
 2F1C C9                                    LEAVE
 2F1D C3                                    RET
 2F1E                      L1354  EQU $
  1576        atom1 = error %AND %RESULT=0 %UNLESS symtype = -2;  !starts with letter
  1577        flush buffer %IF bp >= 128
 2F1E A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 2F23 3D FE FF FF FF                        CMP %EAX,#-2
 2F28 74 00                                 JE L1357
 2F2A C7 05 A4 00 00 00 00 80 00 00         MOV DWORD PTR [DATA+00A4],#32768
 2F34 31 C0                                 XOR %EAX,%EAX
 2F36 C9                                    LEAVE
 2F37 C3                                    RET
 2F38                      L1357  EQU $
 2F38 A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 2F3D 3D 80 00 00 00                        CMP %EAX,#128
 2F42 7C 00                                 JL L1358
 2F44 E8 00 00                              CALL 'FLUSHBUFFER' (INTERNAL L1002 )
 2F47                      L1358  EQU $
  1578        bp=bp+1 %AND buff(bp)='w'
 2F47 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 2F4D FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 2F53 8B 7D FC                              MOV %EDI,[%EBP-4]
 2F56 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 2F5C 89 7D EC                              MOV [%EBP-20],%EDI
 2F5F E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 2F62 83 C4 08                              ADD %ESP,#8
 2F65 89 C3                                 MOV %EBX,%EAX
 2F67 8B 75 EC                              MOV %ESI,[%EBP-20]
 2F6A 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 2F70 C6 03 77                              MOV BYTE PTR [%EBX],#119
  1579        %CYCLE
 2F73                      L1359  EQU $
  1580           bp=bp+1 %AND buff(bp)=sym
 2F73 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 2F79 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 2F7F 8B 7D FC                              MOV %EDI,[%EBP-4]
 2F82 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 2F88 89 7D E8                              MOV [%EBP-24],%EDI
 2F8B E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 2F8E 83 C4 08                              ADD %ESP,#8
 2F91 89 C3                                 MOV %EBX,%EAX
 2F93 8B 75 E8                              MOV %ESI,[%EBP-24]
 2F96 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 2F9C A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2FA1 88 03                                 MOV [%EBX],%AL
  1581           read sym
 2FA3 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1582           %EXIT %IF symtype >= 0;                !pull in letters and digits
 2FA6 A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 2FAB 3D 00 00 00 00                        CMP %EAX,#0
 2FB0 7C 00                                 JL L1360
 2FB2 EB 00                                 JMP L1361
 2FB4                      L1360  EQU $
  1583        %REPEAT
 2FB4 EB 00                                 JMP L1359
 2FB6                      L1361  EQU $
  1584        bp=bp+1 %AND buff(bp)='_'
 2FB6 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 2FBC FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 2FC2 8B 7D FC                              MOV %EDI,[%EBP-4]
 2FC5 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 2FCB 89 7D E4                              MOV [%EBP-28],%EDI
 2FCE E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 2FD1 83 C4 08                              ADD %ESP,#8
 2FD4 89 C3                                 MOV %EBX,%EAX
 2FD6 8B 75 E4                              MOV %ESI,[%EBP-28]
 2FD9 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 2FDF C6 03 5F                              MOV BYTE PTR [%EBX],#95
  1585        %IF symtype # 0 %START;                   !not terminator
 2FE2 A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 2FE7 3D 00 00 00 00                        CMP %EAX,#0
 2FEC 74 00                                 JE L1362
  1586           atom1 = error %AND %result=0 %UNLESS sym = '_'
 2FEE A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 2FF3 3D 5F 00 00 00                        CMP %EAX,#95
 2FF8 74 00                                 JE L1363
 2FFA C7 05 A4 00 00 00 00 80 00 00         MOV DWORD PTR [DATA+00A4],#32768
 3004 31 C0                                 XOR %EAX,%EAX
 3006 C9                                    LEAVE
 3007 C3                                    RET
 3008                      L1363  EQU $
  1587           read sym
 3008 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1588           %WHILE symtype # 0 %CYCLE
 300B                      L1364  EQU $
 300B A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 3010 3D 00 00 00 00                        CMP %EAX,#0
 3015 74 00                                 JE L1365
  1589              %IF symtype < 0 %START;             !complex
 3017 A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 301C 3D 00 00 00 00                        CMP %EAX,#0
 3021 7D 00                                 JGE L1366
  1590                 code atom(0);  %result=0 %IF atom1&error # 0
 3023 6A 00                                 PUSH #0
 3025 E8 00 00                              CALL 'CODEATOM' (INTERNAL L1203 )
 3028 83 C4 04                              ADD %ESP,#4
 302B A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 3030 25 00 80 00 00                        AND %EAX,#32768
 3035 3D 00 00 00 00                        CMP %EAX,#0
 303A 74 00                                 JE L1367
 303C 31 C0                                 XOR %EAX,%EAX
 303E C9                                    LEAVE
 303F C3                                    RET
 3040                      L1367  EQU $
  1591                 %IF atom2 = const %AND type = integer %START
 3040 A1 A8 00 00 00                        MOV %EAX,[DATA+00A8]
 3045 3D 5D 00 00 00                        CMP %EAX,#93
 304A 75 00                                 JNE L1368
 304C A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 3051 3D 01 00 00 00                        CMP %EAX,#1
 3056 75 00                                 JNE L1368
  1592                    %IF subatom < 0 %THEN octal(tag(-subatom)_format) %C
  1593+                                   %ELSE octal(litpool(subatom))
 3058 A1 AC 00 00 00                        MOV %EAX,[DATA+00AC]
 305D 3D 00 00 00 00                        CMP %EAX,#0
 3062 7D 00                                 JGE L1369
 3064 A1 AC 00 00 00                        MOV %EAX,[DATA+00AC]
 3069 F7 D8                                 NEG %EAX
 306B 50                                    PUSH %EAX
 306C 8B 7D FC                              MOV %EDI,[%EBP-4]
 306F FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 3075 89 7D E0                              MOV [%EBP-32],%EDI
 3078 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 307B 83 C4 08                              ADD %ESP,#8
 307E 89 C3                                 MOV %EBX,%EAX
 3080 8B 75 E0                              MOV %ESI,[%EBP-32]
 3083 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 3089 FF 73 04                              PUSH DWORD PTR [%EBX+4]
 308C E8 00 00                              CALL 'OCTAL' (INTERNAL L1355 )
 308F 83 C4 04                              ADD %ESP,#4
 3092 EB 00                                 JMP L1370
 3094                      L1369  EQU $
 3094 FF 35 AC 00 00 00                     PUSH DWORD PTR [DATA+00AC]
 309A 8B 7D FC                              MOV %EDI,[%EBP-4]
 309D FF 77 88                              PUSH DWORD PTR [%EDI-120]
 30A0 89 7D DC                              MOV [%EBP-36],%EDI
 30A3 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 30A6 83 C4 08                              ADD %ESP,#8
 30A9 89 C3                                 MOV %EBX,%EAX
 30AB 8B 75 DC                              MOV %ESI,[%EBP-36]
 30AE 03 5E 84                              ADD %EBX,[%ESI-124]
 30B1 FF 33                                 PUSH DWORD PTR [%EBX]
 30B3 E8 00 00                              CALL 'OCTAL' (INTERNAL L1355 )
 30B6 83 C4 04                              ADD %ESP,#4
 30B9                      L1370  EQU $
  1594                 %FINISH %ELSE %START
 30B9 EB 00                                 JMP L1371
 30BB                      L1368  EQU $
  1595                    %IF 91 <= atom1 <= 109 %START
 30BB A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 30C0 3D 5B 00 00 00                        CMP %EAX,#91
 30C5 7C 00                                 JL L1372
 30C7 3D 6D 00 00 00                        CMP %EAX,#109
 30CC 7F 00                                 JG L1372
  1596                       %if atom1 = 104 {label} %and %C
  1597+                          Tag(Subatom)_Flags&Closed = 0 %start
 30CE A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 30D3 3D 68 00 00 00                        CMP %EAX,#104
 30D8 75 00                                 JNE L1373
 30DA FF 35 AC 00 00 00                     PUSH DWORD PTR [DATA+00AC]
 30E0 8B 7D FC                              MOV %EDI,[%EBP-4]
 30E3 FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 30E9 89 7D D8                              MOV [%EBP-40],%EDI
 30EC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 30EF 83 C4 08                              ADD %ESP,#8
 30F2 89 C3                                 MOV %EBX,%EAX
 30F4 8B 75 D8                              MOV %ESI,[%EBP-40]
 30F7 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 30FD 0F BF 5B 08                           MOVSX %EBX,[%EBX+8]
 3101 81 E3 00 40 00 00                     AND %EBX,#16384
 3107 83 FB 00                              CMP %EBX,#0
 310A 75 00                                 JNE L1373
  1598                          This = Subatom;  Atom1 = Error+21
 310C A1 AC 00 00 00                        MOV %EAX,[DATA+00AC]
 3111 89 05 44 01 00 00                     MOV [DATA+0144],%EAX
 3117 C7 05 A4 00 00 00 15 80 00 00         MOV DWORD PTR [DATA+00A4],#32789
  1599                          %result = 0
 3121 31 C0                                 XOR %EAX,%EAX
 3123 C9                                    LEAVE
 3124 C3                                    RET
  1600                       %finish
 3125                      L1373  EQU $
  1601                       op(' ', tag(subatom)_index)
 3125 6A 20                                 PUSH #32
 3127 FF 35 AC 00 00 00                     PUSH DWORD PTR [DATA+00AC]
 312D 8B 7D FC                              MOV %EDI,[%EBP-4]
 3130 FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 3136 89 7D D4                              MOV [%EBP-44],%EDI
 3139 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 313C 83 C4 08                              ADD %ESP,#8
 313F 89 C3                                 MOV %EBX,%EAX
 3141 8B 75 D4                              MOV %ESI,[%EBP-44]
 3144 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 314A 0F BF 5B 0A                           MOVSX %EBX,[%EBX+10]
 314E 53                                    PUSH %EBX
 314F E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 3152 83 C4 08                              ADD %ESP,#8
  1602                    %FINISH %ELSE %START
 3155 EB 00                                 JMP L1374
 3157                      L1372  EQU $
  1603                       atom1 = error;  %result=0
 3157 C7 05 A4 00 00 00 00 80 00 00         MOV DWORD PTR [DATA+00A4],#32768
 3161 31 C0                                 XOR %EAX,%EAX
 3163 C9                                    LEAVE
 3164 C3                                    RET
  1604                    %FINISH
 3165                      L1374  EQU $
  1605                 %FINISH
 3165                      L1371  EQU $
  1606              %FINISH %ELSE %START
 3165 EB 00                                 JMP L1375
 3167                      L1366  EQU $
  1607                 bp=bp+1 %AND buff(bp)=sym;  read sym
 3167 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 316D FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 3173 8B 7D FC                              MOV %EDI,[%EBP-4]
 3176 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 317C 89 7D D0                              MOV [%EBP-48],%EDI
 317F E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3182 83 C4 08                              ADD %ESP,#8
 3185 89 C3                                 MOV %EBX,%EAX
 3187 8B 75 D0                              MOV %ESI,[%EBP-48]
 318A 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 3190 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 3195 88 03                                 MOV [%EBX],%AL
 3197 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1608              %FINISH
 319A                      L1375  EQU $
  1609           %REPEAT
 319A EB 00                                 JMP L1364
 319C                      L1365  EQU $
  1610        %FINISH
 319C                      L1362  EQU $
  1611        bp=bp+1 %AND buff(bp)=';'
 319C FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 31A2 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 31A8 8B 7D FC                              MOV %EDI,[%EBP-4]
 31AB FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 31B1 89 7D CC                              MOV [%EBP-52],%EDI
 31B4 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 31B7 83 C4 08                              ADD %ESP,#8
 31BA 89 C3                                 MOV %EBX,%EAX
 31BC 8B 75 CC                              MOV %ESI,[%EBP-52]
 31BF 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 31C5 C6 03 3B                              MOV BYTE PTR [%EBX],#59
  1612        %RESULT=1
 31C8 B8 01 00 00 00                        MOV %EAX,#1
 31CD C9                                    LEAVE
 31CE C3                                    RET
  1613     %END
 31CF                      L1157  EQU $
  1614  
  1615     cont = ' ' %IF gg = 0
 31CF A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 31D4 3D 00 00 00 00                        CMP %EAX,#0
 31D9 75 00                                 JNE L1376
 31DB C7 05 F4 00 00 00 20 00 00 00         MOV DWORD PTR [DATA+00F4],#32
 31E5                      L1376  EQU $
  1616     last1 = 0;  mapgg = 0
 31E5 C7 05 1C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+011C],#0
 31EF C7 05 3C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+013C],#0
  1617     s = 0;  ss = 0;  sstype = -1; fdef = 0
 31F9 C7 45 DC 00 00 00 00                  MOV DWORD PTR [%EBP-36],#0
 3200 C7 05 64 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0164],#0
 320A C7 05 7C 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+017C],#-1
 3214 C7 05 40 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0140],#0
  1618     fm base = 0
 321E C7 05 B4 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01B4],#0
  1619     app = 0
 3228 C7 05 B4 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00B4],#0
  1620  
  1621     !deal with alignment following an error in one statement
  1622     !of several on a line
  1623  
  1624     margin = column;                              !start of statement
 3232 A1 D8 00 00 00                        MOV %EAX,[DATA+00D8]
 3237 89 05 CC 00 00 00                     MOV [DATA+00CC],%EAX
  1625  
  1626     pos = 0
 323D C7 05 A8 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A8],#0
  1627     stbase = addr(glink(gmax+1));  strp = stbase;  lp = 0
 3247 A1 64 0B 00 00                        MOV %EAX,[DATA+0B64]
 324C 40                                    INC %EAX
 324D 50                                    PUSH %EAX
 324E 68 64 00 00 00                        PUSH COT+#100
 3253 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3256 83 C4 08                              ADD %ESP,#8
 3259 89 C7                                 MOV %EDI,%EAX
 325B 8D BF 70 1A 00 00                     LEA %EDI,[%EDI+DATA+6768]
 3261 89 3D 54 01 00 00                     MOV [DATA+0154],%EDI
 3267 A1 54 01 00 00                        MOV %EAX,[DATA+0154]
 326C 89 45 F0                              MOV [%EBP-16],%EAX
 326F C7 05 4C 02 00 00 00 00 00 00         MOV DWORD PTR [DATA+024C],#0
  1628     tbase = tstart;                               !??????????????
 3279 8B 5D F8                              MOV %EBX,[%EBP-8]
 327C 8B 43 E8                              MOV %EAX,[%EBX-24]
 327F 89 43 EC                              MOV [%EBX-20],%EAX
  1629     local = tbase
 3282 8B 43 EC                              MOV %EAX,[%EBX-20]
 3285 89 05 B0 01 00 00                     MOV [DATA+01B0],%EAX
  1630  
  1631     %IF gg = 0 %or ocount >= 0 %START;            !data or not continuation(z)
 328B A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3290 3D 00 00 00 00                        CMP %EAX,#0
 3295 74 00                                 JE L1377
 3297 A1 84 01 00 00                        MOV %EAX,[DATA+0184]
 329C 3D 00 00 00 00                        CMP %EAX,#0
 32A1 7C 00                                 JL L1378
 32A3                      L1377  EQU $
  1632  again:%WHILE sym type = 0 %CYCLE;                !skip redundant terminators
 32A3                      L1379  EQU $
 32A3                      L1380  EQU $
 32A3 A1 E8 00 00 00                        MOV %EAX,[DATA+00E8]
 32A8 3D 00 00 00 00                        CMP %EAX,#0
 32AD 75 00                                 JNE L1381
  1633           c = cont
 32AF A1 F4 00 00 00                        MOV %EAX,[DATA+00F4]
 32B4 89 45 D8                              MOV [%EBP-40],%EAX
  1634           cont = ' ';  cont = '+' %IF ocount >= 0
 32B7 C7 05 F4 00 00 00 20 00 00 00         MOV DWORD PTR [DATA+00F4],#32
 32C1 A1 84 01 00 00                        MOV %EAX,[DATA+0184]
 32C6 3D 00 00 00 00                        CMP %EAX,#0
 32CB 7C 00                                 JL L1382
 32CD C7 05 F4 00 00 00 2B 00 00 00         MOV DWORD PTR [DATA+00F4],#43
 32D7                      L1382  EQU $
  1635           read sym
 32D7 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
  1636           cont = c
 32DA 8B 45 D8                              MOV %EAX,[%EBP-40]
 32DD 89 05 F4 00 00 00                     MOV [DATA+00F4],%EAX
  1637        %REPEAT
 32E3 EB 00                                 JMP L1380
 32E5                      L1381  EQU $
  1638        ->skip %IF sym = '!';                      !comment
 32E5 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 32EA 3D 21 00 00 00                        CMP %EAX,#33
 32EF 75 00                                 JNE L1383
 32F1 EB 00                                 JMP L1384
 32F3                      L1383  EQU $
  1639        this = -1
 32F3 C7 05 44 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+0144],#-1
  1640        code atom(0)
 32FD 6A 00                                 PUSH #0
 32FF E8 00 00                              CALL 'CODEATOM' (INTERNAL L1203 )
 3302 83 C4 04                              ADD %ESP,#4
  1641        %IF atom1 = comment %START
 3305 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 330A 3D 16 00 00 00                        CMP %EAX,#22
 330F 75 00                                 JNE L1385
  1642  skip:    quote = 1
 3311                      L1384  EQU $
 3311 C7 05 EC 00 00 00 01 00 00 00         MOV DWORD PTR [DATA+00EC],#1
  1643           c = cont
 331B A1 F4 00 00 00                        MOV %EAX,[DATA+00F4]
 3320 89 45 D8                              MOV [%EBP-40],%EAX
  1644           read sym %AND cont = c %WHILE sym # nl; !skip to end of line
 3323                      L1386  EQU $
 3323 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 3328 3D 0A 00 00 00                        CMP %EAX,#10
 332D 74 00                                 JE L1387
 332F E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
 3332 8B 45 D8                              MOV %EAX,[%EBP-40]
 3335 89 05 F4 00 00 00                     MOV [DATA+00F4],%EAX
 333B EB 00                                 JMP L1386
 333D                      L1387  EQU $
  1645           quote = 0;  symtype = 0
 333D C7 05 EC 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00EC],#0
 3347 C7 05 E8 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00E8],#0
  1646           ->again
 3351 EB 00                                 JMP L1379
  1647        %FINISH
 3353                      L1385  EQU $
  1648     %FINISH
 3353                      L1378  EQU $
  1649     decl = 0;  mark = 0
 3353 C7 05 FC 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00FC],#0
 335D C7 45 EC 00 00 00 00                  MOV DWORD PTR [%EBP-20],#0
  1650     gentype = 0;  force = 0
 3364 C7 05 20 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0120],#0
 336E C7 05 30 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0130],#0
  1651     dim = 0;  prot err = 0
 3378 C7 05 00 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0100],#0
 3382 C7 45 E4 00 00 00 00                  MOV DWORD PTR [%EBP-28],#0
  1652     node = 0;  nmax = 0;  nmin = rec size+1
 3389 C6 45 D6 00                           MOV BYTE PTR [%EBP-42],#0
 338D C6 45 D7 00                           MOV BYTE PTR [%EBP-41],#0
 3391 C7 05 4C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+014C],#0
 339B C7 05 48 01 00 00 09 02 00 00         MOV DWORD PTR [DATA+0148],#521
  1653     order = 1;  gmin = max grammar+1
 33A5 C7 05 90 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+0190],#1
 33AF C7 05 58 01 00 00 B9 06 00 00         MOV DWORD PTR [DATA+0158],#1721
  1654     sstype = 0 %AND ->more %IF gg # 0;            !continuation
 33B9 A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 33BE 3D 00 00 00 00                        CMP %EAX,#0
 33C3 74 00                                 JE L1388
 33C5 C7 05 7C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+017C],#0
 33CF EB 00                                 JMP L1389
 33D1                      L1388  EQU $
  1655     ptype = 0;  spec given = 0
 33D1 C7 05 24 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0124],#0
 33DB C7 05 04 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0104],#0
  1656  
  1657     stats = stats+1;  op('O', lines) %IF perm = 0
 33E5 FF 05 DC 00 00 00                     INC DWORD PTR [DATA+00DC]
 33EB A1 74 01 00 00                        MOV %EAX,[DATA+0174]
 33F0 3D 00 00 00 00                        CMP %EAX,#0
 33F5 75 00                                 JNE L1390
 33F7 6A 4F                                 PUSH #79
 33F9 FF 35 C4 00 00 00                     PUSH DWORD PTR [DATA+00C4]
 33FF E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 3402 83 C4 08                              ADD %ESP,#8
 3405                      L1390  EQU $
  1658  
  1659     ->fail1 %IF atom1&error # 0;                  !first atom faulty
 3405 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 340A 25 00 80 00 00                        AND %EAX,#32768
 340F 3D 00 00 00 00                        CMP %EAX,#0
 3414 74 00                                 JE L1391
 3416 EB 00                                 JMP L1392
 3418                      L1391  EQU $
  1660  
  1661     %IF escape class # 0 %START;                  !enter the hard way after
 3418 A1 08 01 00 00                        MOV %EAX,[DATA+0108]
 341D 3D 00 00 00 00                        CMP %EAX,#0
 3422 74 00                                 JE L1393
  1662        g = imp phrase;  sstype = -1;  ->a3
 3424 C7 05 34 01 00 00 19 00 00 00         MOV DWORD PTR [DATA+0134],#25
 342E C7 05 7C 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+017C],#-1
 3438 EB 00                                 JMP L1394
  1663     %FINISH
 343A                      L1393  EQU $
  1664  
  1665     g = initial(atom1);                           !pick up entry point
 343A FF 35 A4 00 00 00                     PUSH DWORD PTR [DATA+00A4]
 3440 68 54 00 00 00                        PUSH COT+#84
 3445 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3448 83 C4 08                              ADD %ESP,#8
 344B 89 C6                                 MOV %ESI,%EAX
 344D 0F BF 86 0C 0C 00 00                  MOVSX %EAX,[%ESI+DATA+3084]
 3454 89 05 34 01 00 00                     MOV [DATA+0134],%EAX
  1666     %IF g = 0 %START;                             !invalid first atom
 345A A1 34 01 00 00                        MOV %EAX,[DATA+0134]
 345F 3D 00 00 00 00                        CMP %EAX,#0
 3464 75 00                                 JNE L1395
  1667        g = initial(0);  sstype = 0;  ->a3;        !declarator?
 3466 6A 00                                 PUSH #0
 3468 68 54 00 00 00                        PUSH COT+#84
 346D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3470 83 C4 08                              ADD %ESP,#8
 3473 89 C7                                 MOV %EDI,%EAX
 3475 0F BF 87 0C 0C 00 00                  MOVSX %EAX,[%EDI+DATA+3084]
 347C 89 05 34 01 00 00                     MOV [DATA+0134],%EAX
 3482 C7 05 7C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+017C],#0
 348C EB 00                                 JMP L1394
  1668     %FINISH
 348E                      L1395  EQU $
  1669     %IF g < 0 %START;                             !phrase imp
 348E A1 34 01 00 00                        MOV %EAX,[DATA+0134]
 3493 3D 00 00 00 00                        CMP %EAX,#0
 3498 7D 00                                 JGE L1396
  1670        g = g&255
 349A 81 25 34 01 00 00 FF 00 00 00         AND DWORD PTR [DATA+0134],#255
  1671        nmax = 1
 34A4 C7 05 4C 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+014C],#1
  1672        ar(1)_class = 0;  ar(1)_link = 0;  ar(1)_sub = imp phrase
 34AE 6A 01                                 PUSH #1
 34B0 8B 5D FC                              MOV %EBX,[%EBP-4]
 34B3 FF 73 E8                              PUSH DWORD PTR [%EBX-24]
 34B6 89 5D C8                              MOV [%EBP-56],%EBX
 34B9 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 34BC 83 C4 08                              ADD %ESP,#8
 34BF 89 C6                                 MOV %ESI,%EAX
 34C1 8B 7D C8                              MOV %EDI,[%EBP-56]
 34C4 03 77 E4                              ADD %ESI,[%EDI-28]
 34C7 C6 06 00                              MOV BYTE PTR [%ESI],#0
 34CA C6 46 01 00                           MOV BYTE PTR [%ESI+1],#0
 34CE 6A 01                                 PUSH #1
 34D0 8B 5D FC                              MOV %EBX,[%EBP-4]
 34D3 FF 73 E8                              PUSH DWORD PTR [%EBX-24]
 34D6 89 5D C4                              MOV [%EBP-60],%EBX
 34D9 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 34DC 83 C4 08                              ADD %ESP,#8
 34DF 89 C6                                 MOV %ESI,%EAX
 34E1 8B 7D C4                              MOV %EDI,[%EBP-60]
 34E4 03 77 E4                              ADD %ESI,[%EDI-28]
 34E7 C6 46 04 00                           MOV BYTE PTR [%ESI+4],#0
 34EB C6 46 05 00                           MOV BYTE PTR [%ESI+5],#0
 34EF 6A 01                                 PUSH #1
 34F1 8B 5D FC                              MOV %EBX,[%EBP-4]
 34F4 FF 73 E8                              PUSH DWORD PTR [%EBX-24]
 34F7 89 5D C0                              MOV [%EBP-64],%EBX
 34FA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 34FD 83 C4 08                              ADD %ESP,#8
 3500 89 C6                                 MOV %ESI,%EAX
 3502 8B 7D C0                              MOV %EDI,[%EBP-64]
 3505 03 77 E4                              ADD %ESI,[%EDI-28]
 3508 C6 46 02 19                           MOV BYTE PTR [%ESI+2],#25
 350C C6 46 03 00                           MOV BYTE PTR [%ESI+3],#0
  1673     %FINISH
 3510                      L1396  EQU $
  1674  
  1675     gg = gram(g);  class = gg&255;  sstype = gg>>12&3-1
 3510 FF 35 34 01 00 00                     PUSH DWORD PTR [DATA+0134]
 3516 68 64 00 00 00                        PUSH COT+#100
 351B E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 351E 83 C4 08                              ADD %ESP,#8
 3521 89 C3                                 MOV %EBX,%EAX
 3523 0F BF 9B FC 0C 00 00                  MOVSX %EBX,[%EBX+DATA+3324]
 352A 89 1D 38 01 00 00                     MOV [DATA+0138],%EBX
 3530 A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3535 25 FF 00 00 00                        AND %EAX,#255
 353A 89 05 9C 00 00 00                     MOV [DATA+009C],%EAX
 3540 A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3545 C1 E8 0C                              SHR %EAX,#12
 3548 25 03 00 00 00                        AND %EAX,#3
 354D 48                                    DEC %EAX
 354E 89 05 7C 01 00 00                     MOV [DATA+017C],%EAX
  1676     ->a1
 3554 EB 00                                 JMP L1397
  1677  
  1678  act(194): ptype = type;  papp = app;  pformat = format;  ->more
 3556                      L1398  EQU $
 3556 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 355B 89 05 24 01 00 00                     MOV [DATA+0124],%EAX
 3561 A1 B4 00 00 00                        MOV %EAX,[DATA+00B4]
 3566 89 05 28 01 00 00                     MOV [DATA+0128],%EAX
 356C A1 B8 00 00 00                        MOV %EAX,[DATA+00B8]
 3571 89 05 2C 01 00 00                     MOV [DATA+012C],%EAX
 3577 EB 00                                 JMP L1389
  1679  act(196):k =g+1;  ->a610
 3579                      L1399  EQU $
 3579 A1 34 01 00 00                        MOV %EAX,[DATA+0134]
 357E 40                                    INC %EAX
 357F 89 45 E0                              MOV [%EBP-32],%EAX
 3582 EB 00                                 JMP L1400
  1680  act(188):k = ar(nmax)_sub+1
 3584                      L1401  EQU $
 3584 FF 35 4C 01 00 00                     PUSH DWORD PTR [DATA+014C]
 358A 8B 75 FC                              MOV %ESI,[%EBP-4]
 358D FF 76 E8                              PUSH DWORD PTR [%ESI-24]
 3590 89 75 BC                              MOV [%EBP-68],%ESI
 3593 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3596 83 C4 08                              ADD %ESP,#8
 3599 89 C7                                 MOV %EDI,%EAX
 359B 8B 5D BC                              MOV %EBX,[%EBP-68]
 359E 03 7B E4                              ADD %EDI,[%EBX-28]
 35A1 0F BF 47 02                           MOVSX %EAX,[%EDI+2]
 35A5 40                                    INC %EAX
 35A6 89 45 E0                              MOV [%EBP-32],%EAX
  1681  a610:     papp = glink(k)
 35A9                      L1400  EQU $
 35A9 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 35AC 68 64 00 00 00                        PUSH COT+#100
 35B1 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 35B4 83 C4 08                              ADD %ESP,#8
 35B7 89 C6                                 MOV %ESI,%EAX
 35B9 0F BF 86 70 1A 00 00                  MOVSX %EAX,[%ESI+DATA+6768]
 35C0 89 05 28 01 00 00                     MOV [DATA+0128],%EAX
  1682            k = gram(k)
 35C6 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 35C9 68 64 00 00 00                        PUSH COT+#100
 35CE E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 35D1 83 C4 08                              ADD %ESP,#8
 35D4 89 C7                                 MOV %EDI,%EAX
 35D6 0F BF 87 FC 0C 00 00                  MOVSX %EAX,[%EDI+DATA+3324]
 35DD 89 45 E0                              MOV [%EBP-32],%EAX
  1683            ->more %IF k = 0;                        !%NAME
 35E0 8B 45 E0                              MOV %EAX,[%EBP-32]
 35E3 3D 00 00 00 00                        CMP %EAX,#0
 35E8 75 00                                 JNE L1402
 35EA EB 00                                 JMP L1389
 35EC                      L1402  EQU $
  1684            ptype = k&7;  pformat = k>>3
 35EC 8B 45 E0                              MOV %EAX,[%EBP-32]
 35EF 25 07 00 00 00                        AND %EAX,#7
 35F4 89 05 24 01 00 00                     MOV [DATA+0124],%EAX
 35FA 8B 45 E0                              MOV %EAX,[%EBP-32]
 35FD C1 E8 03                              SHR %EAX,#3
 3600 89 05 2C 01 00 00                     MOV [DATA+012C],%EAX
  1685  act(183):k = type;  gentype = k %IF gentype = 0 %OR k = real
 3606                      L1403  EQU $
 3606 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 360B 89 45 E0                              MOV [%EBP-32],%EAX
 360E A1 20 01 00 00                        MOV %EAX,[DATA+0120]
 3613 3D 00 00 00 00                        CMP %EAX,#0
 3618 74 00                                 JE L1404
 361A 8B 45 E0                              MOV %EAX,[%EBP-32]
 361D 3D 02 00 00 00                        CMP %EAX,#2
 3622 75 00                                 JNE L1405
 3624                      L1404  EQU $
 3624 8B 45 E0                              MOV %EAX,[%EBP-32]
 3627 89 05 20 01 00 00                     MOV [DATA+0120],%EAX
 362D                      L1405  EQU $
  1686            %IF pformat < 0 %START;                  !general type
 362D A1 2C 01 00 00                        MOV %EAX,[DATA+012C]
 3632 3D 00 00 00 00                        CMP %EAX,#0
 3637 7D 00                                 JGE L1406
  1687               app = papp;  format = pformat
 3639 A1 28 01 00 00                        MOV %EAX,[DATA+0128]
 363E 89 05 B4 00 00 00                     MOV [DATA+00B4],%EAX
 3644 A1 2C 01 00 00                        MOV %EAX,[DATA+012C]
 3649 89 05 B8 00 00 00                     MOV [DATA+00B8],%EAX
  1688               k = real %IF ptype = real %AND type = integer
 364F A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 3654 3D 02 00 00 00                        CMP %EAX,#2
 3659 75 00                                 JNE L1407
 365B A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 3660 3D 01 00 00 00                        CMP %EAX,#1
 3665 75 00                                 JNE L1407
 3667 C7 45 E0 02 00 00 00                  MOV DWORD PTR [%EBP-32],#2
 366E                      L1407  EQU $
  1689               k = force %AND force = 0 %IF force # 0
 366E A1 30 01 00 00                        MOV %EAX,[DATA+0130]
 3673 3D 00 00 00 00                        CMP %EAX,#0
 3678 74 00                                 JE L1408
 367A A1 30 01 00 00                        MOV %EAX,[DATA+0130]
 367F 89 45 E0                              MOV [%EBP-32],%EAX
 3682 C7 05 30 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0130],#0
 368C                      L1408  EQU $
  1690            %FINISH
 368C                      L1406  EQU $
  1691            ->fail2 %UNLESS papp = app %AND (ptype = k %OR ptype = 0)
 368C A1 28 01 00 00                        MOV %EAX,[DATA+0128]
 3691 3B 05 B4 00 00 00                     CMP %EAX,[DATA+00B4]
 3697 75 00                                 JNE L1409
 3699 A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 369E 3B 45 E0                              CMP %EAX,[%EBP-32]
 36A1 74 00                                 JE L1410
 36A3 A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 36A8 3D 00 00 00 00                        CMP %EAX,#0
 36AD 74 00                                 JE L1410
 36AF                      L1409  EQU $
 36AF EB 00                                 JMP L1411
 36B1                      L1410  EQU $
  1692            ->more %IF pformat=format %OR pformat = 0 %OR format = 0
 36B1 A1 2C 01 00 00                        MOV %EAX,[DATA+012C]
 36B6 3B 05 B8 00 00 00                     CMP %EAX,[DATA+00B8]
 36BC 74 00                                 JE L1412
 36BE A1 2C 01 00 00                        MOV %EAX,[DATA+012C]
 36C3 3D 00 00 00 00                        CMP %EAX,#0
 36C8 74 00                                 JE L1412
 36CA A1 B8 00 00 00                        MOV %EAX,[DATA+00B8]
 36CF 3D 00 00 00 00                        CMP %EAX,#0
 36D4 75 00                                 JNE L1413
 36D6                      L1412  EQU $
 36D6 EB 00                                 JMP L1389
 36D8                      L1413  EQU $
  1693            ->fail2
 36D8 EB 00                                 JMP L1411
  1694  act(197):arp == ar(nmin)
 36DA                      L1414  EQU $
 36DA FF 35 48 01 00 00                     PUSH DWORD PTR [DATA+0148]
 36E0 8B 5D FC                              MOV %EBX,[%EBP-4]
 36E3 FF 73 E8                              PUSH DWORD PTR [%EBX-24]
 36E6 89 5D B8                              MOV [%EBP-72],%EBX
 36E9 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 36EC 83 C4 08                              ADD %ESP,#8
 36EF 89 C6                                 MOV %ESI,%EAX
 36F1 8B 7D B8                              MOV %EDI,[%EBP-72]
 36F4 03 77 E4                              ADD %ESI,[%EDI-28]
 36F7 89 75 CC                              MOV [%EBP-52],%ESI
  1695           k = arp_sub
 36FA 8B 5D CC                              MOV %EBX,[%EBP-52]
 36FD 0F BF 43 02                           MOVSX %EAX,[%EBX+2]
 3701 89 45 E0                              MOV [%EBP-32],%EAX
  1696           ->fail3 %UNLESS block form = k&15
 3704 8B 45 E0                              MOV %EAX,[%EBP-32]
 3707 25 0F 00 00 00                        AND %EAX,#15
 370C 8B 75 F8                              MOV %ESI,[%EBP-8]
 370F 8B 4E CC                              MOV %ECX,[%ESI-52]
 3712 39 C1                                 CMP %ECX,%EAX
 3714 74 00                                 JE L1415
 3716 EB 00                                 JMP L1416
 3718                      L1415  EQU $
  1697           arp_sub = k>>4
 3718 8B 45 E0                              MOV %EAX,[%EBP-32]
 371B C1 E8 04                              SHR %EAX,#4
 371E 8B 7D CC                              MOV %EDI,[%EBP-52]
 3721 88 47 02                              MOV [%EDI+2],%AL
 3724 88 67 03                              MOV [%EDI+3],%AH
  1698  
  1699           type = block type
 3727 8B 5D F8                              MOV %EBX,[%EBP-8]
 372A 8B 43 D0                              MOV %EAX,[%EBX-48]
 372D 89 05 B0 00 00 00                     MOV [DATA+00B0],%EAX
  1700           ptype = block type;  pformat = block fm;  papp = app
 3733 8B 43 D0                              MOV %EAX,[%EBX-48]
 3736 89 05 24 01 00 00                     MOV [DATA+0124],%EAX
 373C 8B 43 C8                              MOV %EAX,[%EBX-56]
 373F 89 05 2C 01 00 00                     MOV [DATA+012C],%EAX
 3745 A1 B4 00 00 00                        MOV %EAX,[DATA+00B4]
 374A 89 05 28 01 00 00                     MOV [DATA+0128],%EAX
  1701           pformat = -1 %IF ptype # record
 3750 A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 3755 3D 04 00 00 00                        CMP %EAX,#4
 375A 74 00                                 JE L1417
 375C C7 05 2C 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+012C],#-1
 3766                      L1417  EQU $
  1702           ->more
 3766 EB 00                                 JMP L1389
  1703  act(195):->Fail2 %if Type # 0 %and Type # Integer %and %C
  1704+                                    Type # Real
 3768                      L1418  EQU $
 3768 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 376D 3D 00 00 00 00                        CMP %EAX,#0
 3772 74 00                                 JE L1419
 3774 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 3779 3D 01 00 00 00                        CMP %EAX,#1
 377E 74 00                                 JE L1419
 3780 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 3785 3D 02 00 00 00                        CMP %EAX,#2
 378A 74 00                                 JE L1419
 378C EB 00                                 JMP L1411
 378E                      L1419  EQU $
  1705           arp == ar(nmin)
 378E FF 35 48 01 00 00                     PUSH DWORD PTR [DATA+0148]
 3794 8B 75 FC                              MOV %ESI,[%EBP-4]
 3797 FF 76 E8                              PUSH DWORD PTR [%ESI-24]
 379A 89 75 B4                              MOV [%EBP-76],%ESI
 379D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 37A0 83 C4 08                              ADD %ESP,#8
 37A3 89 C7                                 MOV %EDI,%EAX
 37A5 8B 5D B4                              MOV %EBX,[%EBP-76]
 37A8 03 7B E4                              ADD %EDI,[%EBX-28]
 37AB 89 7D CC                              MOV [%EBP-52],%EDI
  1706           k = arp_sub
 37AE 8B 75 CC                              MOV %ESI,[%EBP-52]
 37B1 0F BF 46 02                           MOVSX %EAX,[%ESI+2]
 37B5 89 45 E0                              MOV [%EBP-32],%EAX
  1707           arp_sub = k>>2
 37B8 8B 45 E0                              MOV %EAX,[%EBP-32]
 37BB C1 E8 02                              SHR %EAX,#2
 37BE 8B 7D CC                              MOV %EDI,[%EBP-52]
 37C1 88 47 02                              MOV [%EDI+2],%AL
 37C4 88 67 03                              MOV [%EDI+3],%AH
  1708           k = k&3
 37C7 81 65 E0 03 00 00 00                  AND DWORD PTR [%EBP-32],#3
  1709                                                        !1 = check integer
  1710                                                        !2 = check real
  1711                                                        !3 = check real + int
  1712            ->more %IF k = 0;                           !0 = no action
 37CE 8B 45 E0                              MOV %EAX,[%EBP-32]
 37D1 3D 00 00 00 00                        CMP %EAX,#0
 37D6 75 00                                 JNE L1420
 37D8 EB 00                                 JMP L1389
 37DA                      L1420  EQU $
  1713            %IF k = 1 %START
 37DA 8B 45 E0                              MOV %EAX,[%EBP-32]
 37DD 3D 01 00 00 00                        CMP %EAX,#1
 37E2 75 00                                 JNE L1421
  1714               force = integer
 37E4 C7 05 30 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+0130],#1
  1715               ->more %IF type = integer %OR type = 0
 37EE A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 37F3 3D 01 00 00 00                        CMP %EAX,#1
 37F8 74 00                                 JE L1422
 37FA A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 37FF 3D 00 00 00 00                        CMP %EAX,#0
 3804 75 00                                 JNE L1423
 3806                      L1422  EQU $
 3806 EB 00                                 JMP L1389
 3808                      L1423  EQU $
  1716               ->fail2
 3808 EB 00                                 JMP L1411
  1717            %FINISH
 380A                      L1421  EQU $
  1718            ->fail2 %UNLESS ptype = real %or ptype = 0  {or added?}
 380A A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 380F 3D 02 00 00 00                        CMP %EAX,#2
 3814 74 00                                 JE L1424
 3816 A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 381B 3D 00 00 00 00                        CMP %EAX,#0
 3820 74 00                                 JE L1424
 3822 EB 00                                 JMP L1411
 3824                      L1424  EQU $
  1719            force = integer %IF k = 3
 3824 8B 45 E0                              MOV %EAX,[%EBP-32]
 3827 3D 03 00 00 00                        CMP %EAX,#3
 382C 75 00                                 JNE L1425
 382E C7 05 30 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+0130],#1
 3838                      L1425  EQU $
  1720            ->more
 3838 EB 00                                 JMP L1389
  1721  act(198):!%OTHER
 383A                      L1426  EQU $
  1722           k = gg>>8&15
 383A A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 383F C1 E8 08                              SHR %EAX,#8
 3842 25 0F 00 00 00                        AND %EAX,#15
 3847 89 45 E0                              MOV [%EBP-32],%EAX
  1723           %IF k = 0 %START;                    !restore atom
 384A 8B 45 E0                              MOV %EAX,[%EBP-32]
 384D 3D 00 00 00 00                        CMP %EAX,#0
 3852 75 00                                 JNE L1427
  1724              atom1 = last1
 3854 A1 1C 01 00 00                        MOV %EAX,[DATA+011C]
 3859 89 05 A4 00 00 00                     MOV [DATA+00A4],%EAX
  1725              ->more
 385F EB 00                                 JMP L1389
  1726           %FINISH
 3861                      L1427  EQU $
  1727           %IF k = 1 %START;                    !test string
 3861 8B 45 E0                              MOV %EAX,[%EBP-32]
 3864 3D 01 00 00 00                        CMP %EAX,#1
 3869 75 00                                 JNE L1428
  1728              ->fail2 %UNLESS type = stringv
 386B A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 3870 3D 03 00 00 00                        CMP %EAX,#3
 3875 74 00                                 JE L1429
 3877 EB 00                                 JMP L1411
 3879                      L1429  EQU $
  1729              ->more
 3879 EB 00                                 JMP L1389
  1730           %FINISH
 387B                      L1428  EQU $
  1731           %if k = 2 %start                     {fault record comparisons}
 387B 8B 45 E0                              MOV %EAX,[%EBP-32]
 387E 3D 02 00 00 00                        CMP %EAX,#2
 3883 75 00                                 JNE L1430
  1732              ->fail2 %if type = record
 3885 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 388A 3D 04 00 00 00                        CMP %EAX,#4
 388F 75 00                                 JNE L1431
 3891 EB 00                                 JMP L1411
 3893                      L1431  EQU $
  1733              ->more
 3893 EB 00                                 JMP L1389
  1734           %finish
 3895                      L1430  EQU $
  1735           %if k = 3 %start;                    !check OWN variable coming
 3895 8B 45 E0                              MOV %EAX,[%EBP-32]
 3898 3D 03 00 00 00                        CMP %EAX,#3
 389D 75 00                                 JNE L1432
  1736              code atom(0)
 389F 6A 00                                 PUSH #0
 38A1 E8 00 00                              CALL 'CODEATOM' (INTERNAL L1203 )
 38A4 83 C4 04                              ADD %ESP,#4
  1737              ->A7 %if atom flags&own bit = 0
 38A7 A1 10 01 00 00                        MOV %EAX,[DATA+0110]
 38AC 25 00 02 00 00                        AND %EAX,#512
 38B1 3D 00 00 00 00                        CMP %EAX,#0
 38B6 75 00                                 JNE L1433
 38B8 EB 00                                 JMP L1434
 38BA                      L1433  EQU $
  1738              ->more
 38BA EB 00                                 JMP L1389
  1739           %finish
 38BC                      L1432  EQU $
  1740           for warn = pos1 %IF x <= local;      !%FORTEST
 38BC A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 38C1 3B 05 B0 01 00 00                     CMP %EAX,[DATA+01B0]
 38C7 7F 00                                 JG L1435
 38C9 A1 A0 01 00 00                        MOV %EAX,[DATA+01A0]
 38CE 89 05 94 01 00 00                     MOV [DATA+0194],%EAX
 38D4                      L1435  EQU $
  1741           ->more
 38D4 EB 00                                 JMP L1389
  1742  paction(1):%IF type = record %THEN g = phrase(242) %ELSE pformat = -1
 38D6                      L1436  EQU $
 38D6 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 38DB 3D 04 00 00 00                        CMP %EAX,#4
 38E0 75 00                                 JNE L1437
 38E2 68 F2 00 00 00                        PUSH #242
 38E7 68 34 00 00 00                        PUSH COT+#52
 38EC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 38EF 83 C4 08                              ADD %ESP,#8
 38F2 89 C3                                 MOV %EBX,%EAX
 38F4 0F BF 9B D8 09 00 00                  MOVSX %EBX,[%EBX+DATA+2520]
 38FB 89 1D 34 01 00 00                     MOV [DATA+0134],%EBX
 3901 EB 00                                 JMP L1438
 3903                      L1437  EQU $
 3903 C7 05 2C 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+012C],#-1
 390D                      L1438  EQU $
  1743                                                 ->a3
 390D EB 00                                 JMP L1394
  1744  paction(2):ptype = real;     pformat = -1;     ->a3
 390F                      L1439  EQU $
 390F C7 05 24 01 00 00 02 00 00 00         MOV DWORD PTR [DATA+0124],#2
 3919 C7 05 2C 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+012C],#-1
 3923 EB 00                                 JMP L1394
  1745  paction(3):ptype = stringv;  pformat = -1;     ->a3
 3925                      L1440  EQU $
 3925 C7 05 24 01 00 00 03 00 00 00         MOV DWORD PTR [DATA+0124],#3
 392F C7 05 2C 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+012C],#-1
 3939 EB 00                                 JMP L1394
  1746  paction(4):ptype = integer;  pformat = -1;     ->a3
 393B                      L1441  EQU $
 393B C7 05 24 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+0124],#1
 3945 C7 05 2C 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+012C],#-1
 394F EB 00                                 JMP L1394
  1747  paction(5):->a3 %if ptype = integer
 3951                      L1442  EQU $
 3951 A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 3956 3D 01 00 00 00                        CMP %EAX,#1
 395B 75 00                                 JNE L1443
 395D EB 00                                 JMP L1394
 395F                      L1443  EQU $
  1748             g = phrase(212) %AND pformat=-1 %IF ptype = real
 395F A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 3964 3D 02 00 00 00                        CMP %EAX,#2
 3969 75 00                                 JNE L1444
 396B 68 D4 00 00 00                        PUSH #212
 3970 68 34 00 00 00                        PUSH COT+#52
 3975 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3978 83 C4 08                              ADD %ESP,#8
 397B 89 C6                                 MOV %ESI,%EAX
 397D 0F BF 86 D8 09 00 00                  MOVSX %EAX,[%ESI+DATA+2520]
 3984 89 05 34 01 00 00                     MOV [DATA+0134],%EAX
 398A C7 05 2C 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+012C],#-1
 3994                      L1444  EQU $
  1749             g = phrase(213) %IF ptype = stringv
 3994 A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 3999 3D 03 00 00 00                        CMP %EAX,#3
 399E 75 00                                 JNE L1445
 39A0 68 D5 00 00 00                        PUSH #213
 39A5 68 34 00 00 00                        PUSH COT+#52
 39AA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 39AD 83 C4 08                              ADD %ESP,#8
 39B0 89 C7                                 MOV %EDI,%EAX
 39B2 0F BF 87 D8 09 00 00                  MOVSX %EAX,[%EDI+DATA+2520]
 39B9 89 05 34 01 00 00                     MOV [DATA+0134],%EAX
 39BF                      L1445  EQU $
  1750             ->a3
 39BF EB 00                                 JMP L1394
  1751  paction(6):ptype = gram(ar(nmax)_sub+1)&7;  pformat = -1;  ->a3
 39C1                      L1446  EQU $
 39C1 FF 35 4C 01 00 00                     PUSH DWORD PTR [DATA+014C]
 39C7 8B 5D FC                              MOV %EBX,[%EBP-4]
 39CA FF 73 E8                              PUSH DWORD PTR [%EBX-24]
 39CD 89 5D B0                              MOV [%EBP-80],%EBX
 39D0 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 39D3 83 C4 08                              ADD %ESP,#8
 39D6 89 C6                                 MOV %ESI,%EAX
 39D8 8B 7D B0                              MOV %EDI,[%EBP-80]
 39DB 03 77 E4                              ADD %ESI,[%EDI-28]
 39DE 0F BF 46 02                           MOVSX %EAX,[%ESI+2]
 39E2 40                                    INC %EAX
 39E3 50                                    PUSH %EAX
 39E4 68 64 00 00 00                        PUSH COT+#100
 39E9 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 39EC 83 C4 08                              ADD %ESP,#8
 39EF 89 C3                                 MOV %EBX,%EAX
 39F1 0F BF 9B FC 0C 00 00                  MOVSX %EBX,[%EBX+DATA+3324]
 39F8 81 E3 07 00 00 00                     AND %EBX,#7
 39FE 89 1D 24 01 00 00                     MOV [DATA+0124],%EBX
 3A04 C7 05 2C 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+012C],#-1
 3A0E EB 00                                 JMP L1394
  1752  paction(7):ptype=real %IF ptype = integer;  pformat = -1;  ->a3
 3A10                      L1447  EQU $
 3A10 A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 3A15 3D 01 00 00 00                        CMP %EAX,#1
 3A1A 75 00                                 JNE L1448
 3A1C C7 05 24 01 00 00 02 00 00 00         MOV DWORD PTR [DATA+0124],#2
 3A26                      L1448  EQU $
 3A26 C7 05 2C 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+012C],#-1
 3A30 EB 00                                 JMP L1394
  1753  
  1754  a1:   last1 = class;  atom1 = 0;  s = subatom
 3A32                      L1397  EQU $
 3A32 A1 9C 00 00 00                        MOV %EAX,[DATA+009C]
 3A37 89 05 1C 01 00 00                     MOV [DATA+011C],%EAX
 3A3D C7 05 A4 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00A4],#0
 3A47 A1 AC 00 00 00                        MOV %EAX,[DATA+00AC]
 3A4C 89 45 DC                              MOV [%EBP-36],%EAX
  1755  
  1756  a2:   %IF gg&trans bit = 0 %START;                !insert into analysis record
 3A4F                      L1449  EQU $
 3A4F A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3A54 25 00 40 00 00                        AND %EAX,#16384
 3A59 3D 00 00 00 00                        CMP %EAX,#0
 3A5E 75 00                                 JNE L1450
  1757           z == node
 3A60 8D 45 D6                              LEA %EAX,[%EBP-42]
 3A63 89 45 D0                              MOV [%EBP-48],%EAX
  1758           %CYCLE;                                  !insert cell in order
 3A66                      L1451  EQU $
  1759              k = z
 3A66 8B 75 D0                              MOV %ESI,[%EBP-48]
 3A69 0F BF 06                              MOVSX %EAX,[%ESI]
 3A6C 89 45 E0                              MOV [%EBP-32],%EAX
  1760              %EXIT %IF gg&order bits = 0 %OR k = 0
 3A6F A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3A74 25 00 30 00 00                        AND %EAX,#12288
 3A79 3D 00 00 00 00                        CMP %EAX,#0
 3A7E 74 00                                 JE L1452
 3A80 8B 45 E0                              MOV %EAX,[%EBP-32]
 3A83 3D 00 00 00 00                        CMP %EAX,#0
 3A88 75 00                                 JNE L1453
 3A8A                      L1452  EQU $
 3A8A EB 00                                 JMP L1454
 3A8C                      L1453  EQU $
  1761              gg = gg-order bit;  z == ar(k)_link
 3A8C 81 2D 38 01 00 00 00 10 00 00         SUB DWORD PTR [DATA+0138],#4096
 3A96 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 3A99 8B 7D FC                              MOV %EDI,[%EBP-4]
 3A9C FF 77 E8                              PUSH DWORD PTR [%EDI-24]
 3A9F 89 7D AC                              MOV [%EBP-84],%EDI
 3AA2 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3AA5 83 C4 08                              ADD %ESP,#8
 3AA8 89 C3                                 MOV %EBX,%EAX
 3AAA 8B 75 AC                              MOV %ESI,[%EBP-84]
 3AAD 03 5E E4                              ADD %EBX,[%ESI-28]
 3AB0 8D 5B 04                              LEA %EBX,[%EBX+4]
 3AB3 89 5D D0                              MOV [%EBP-48],%EBX
  1762           %REPEAT
 3AB6 EB 00                                 JMP L1451
 3AB8                      L1454  EQU $
  1763           gg = map gg %IF map gg # 0 %AND gg&255 = var
 3AB8 A1 3C 01 00 00                        MOV %EAX,[DATA+013C]
 3ABD 3D 00 00 00 00                        CMP %EAX,#0
 3AC2 74 00                                 JE L1455
 3AC4 A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3AC9 25 FF 00 00 00                        AND %EAX,#255
 3ACE 3D 5B 00 00 00                        CMP %EAX,#91
 3AD3 75 00                                 JNE L1455
 3AD5 A1 3C 01 00 00                        MOV %EAX,[DATA+013C]
 3ADA 89 05 38 01 00 00                     MOV [DATA+0138],%EAX
 3AE0                      L1455  EQU $
  1764           nmin = nmin-1;  ->fail0 %IF nmin = nmax
 3AE0 FF 0D 48 01 00 00                     DEC DWORD PTR [DATA+0148]
 3AE6 A1 48 01 00 00                        MOV %EAX,[DATA+0148]
 3AEB 3B 05 4C 01 00 00                     CMP %EAX,[DATA+014C]
 3AF1 75 00                                 JNE L1456
 3AF3 EB 00                                 JMP L1457
 3AF5                      L1456  EQU $
  1765           z = nmin
 3AF5 8B 7D D0                              MOV %EDI,[%EBP-48]
 3AF8 A1 48 01 00 00                        MOV %EAX,[DATA+0148]
 3AFD 88 07                                 MOV [%EDI],%AL
 3AFF 88 67 01                              MOV [%EDI+1],%AH
  1766           arp == ar(nmin)
 3B02 FF 35 48 01 00 00                     PUSH DWORD PTR [DATA+0148]
 3B08 8B 5D FC                              MOV %EBX,[%EBP-4]
 3B0B FF 73 E8                              PUSH DWORD PTR [%EBX-24]
 3B0E 89 5D A8                              MOV [%EBP-88],%EBX
 3B11 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3B14 83 C4 08                              ADD %ESP,#8
 3B17 89 C6                                 MOV %ESI,%EAX
 3B19 8B 7D A8                              MOV %EDI,[%EBP-88]
 3B1C 03 77 E4                              ADD %ESI,[%EDI-28]
 3B1F 89 75 CC                              MOV [%EBP-52],%ESI
  1767           arp_sub = s;  arp_class = (gg&255)!mark
 3B22 8B 5D CC                              MOV %EBX,[%EBP-52]
 3B25 8B 45 DC                              MOV %EAX,[%EBP-36]
 3B28 88 43 02                              MOV [%EBX+2],%AL
 3B2B 88 63 03                              MOV [%EBX+3],%AH
 3B2E A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3B33 25 FF 00 00 00                        AND %EAX,#255
 3B38 0B 45 EC                              OR %EAX,[%EBP-20]
 3B3B 8B 75 CC                              MOV %ESI,[%EBP-52]
 3B3E 88 06                                 MOV [%ESI],%AL
 3B40 88 66 01                              MOV [%ESI+1],%AH
  1768           arp_link = k
 3B43 8B 7D CC                              MOV %EDI,[%EBP-52]
 3B46 8B 45 E0                              MOV %EAX,[%EBP-32]
 3B49 88 47 04                              MOV [%EDI+4],%AL
 3B4C 88 67 05                              MOV [%EDI+5],%AH
  1769        %FINISH
 3B4F                      L1450  EQU $
  1770        mark = 0;  map gg = 0
 3B4F C7 45 EC 00 00 00 00                  MOV DWORD PTR [%EBP-20],#0
 3B56 C7 05 3C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+013C],#0
  1771  
  1772  more: g = glink(g);                               !chain down the grammar
 3B60                      L1389  EQU $
 3B60 FF 35 34 01 00 00                     PUSH DWORD PTR [DATA+0134]
 3B66 68 64 00 00 00                        PUSH COT+#100
 3B6B E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3B6E 83 C4 08                              ADD %ESP,#8
 3B71 89 C3                                 MOV %EBX,%EAX
 3B73 0F BF 9B 70 1A 00 00                  MOVSX %EBX,[%EBX+DATA+6768]
 3B7A 89 1D 34 01 00 00                     MOV [DATA+0134],%EBX
  1773  
  1774  paction(0):
 3B80                      L1458  EQU $
  1775  a3:   gg = gram(g);  class = gg&255
 3B80                      L1394  EQU $
 3B80 FF 35 34 01 00 00                     PUSH DWORD PTR [DATA+0134]
 3B86 68 64 00 00 00                        PUSH COT+#100
 3B8B E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3B8E 83 C4 08                              ADD %ESP,#8
 3B91 89 C6                                 MOV %ESI,%EAX
 3B93 0F BF 86 FC 0C 00 00                  MOVSX %EAX,[%ESI+DATA+3324]
 3B9A 89 05 38 01 00 00                     MOV [DATA+0138],%EAX
 3BA0 A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3BA5 25 FF 00 00 00                        AND %EAX,#255
 3BAA 89 05 9C 00 00 00                     MOV [DATA+009C],%EAX
  1776        trace analysis %IF diag&1 # 0
 3BB0 A1 5C 02 00 00                        MOV %EAX,[DATA+025C]
 3BB5 25 01 00 00 00                        AND %EAX,#1
 3BBA 3D 00 00 00 00                        CMP %EAX,#0
 3BBF 74 00                                 JE L1459
 3BC1 E8 00 00                              CALL 'TRACEANALYSIS' (INTERNAL L1158 )
 3BC4                      L1459  EQU $
  1777        ->a5 %IF class = 0;                         !end of phrase
 3BC4 A1 9C 00 00 00                        MOV %EAX,[DATA+009C]
 3BC9 3D 00 00 00 00                        CMP %EAX,#0
 3BCE 75 00                                 JNE L1460
 3BD0 EB 00                                 JMP L1461
 3BD2                      L1460  EQU $
  1778  
  1779        %IF class < actions %START;                 !not a phrase or an action
 3BD2 A1 9C 00 00 00                        MOV %EAX,[DATA+009C]
 3BD7 3D B4 00 00 00                        CMP %EAX,#180
 3BDC 7D 00                                 JGE L1462
  1780           class = atomic(class) %IF class >= figurative
 3BDE A1 9C 00 00 00                        MOV %EAX,[DATA+009C]
 3BE3 3D 82 00 00 00                        CMP %EAX,#130
 3BE8 7C 00                                 JL L1463
 3BEA FF 35 9C 00 00 00                     PUSH DWORD PTR [DATA+009C]
 3BF0 68 44 00 00 00                        PUSH COT+#68
 3BF5 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3BF8 83 C4 08                              ADD %ESP,#8
 3BFB 89 C7                                 MOV %EDI,%EAX
 3BFD 31 C0                                 XOR %EAX,%EAX
 3BFF 8A 87 56 0B 00 00                     MOV %AL,[%EDI+DATA+2902]
 3C05 89 05 9C 00 00 00                     MOV [DATA+009C],%EAX
 3C0B                      L1463  EQU $
  1781           ->a2 %IF class >= manifest
 3C0B A1 9C 00 00 00                        MOV %EAX,[DATA+009C]
 3C10 3D 78 00 00 00                        CMP %EAX,#120
 3C15 7C 00                                 JL L1464
 3C17 EB 00                                 JMP L1449
 3C19                      L1464  EQU $
  1782           code atom(class) %IF atom1 = 0
 3C19 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 3C1E 3D 00 00 00 00                        CMP %EAX,#0
 3C23 75 00                                 JNE L1465
 3C25 FF 35 9C 00 00 00                     PUSH DWORD PTR [DATA+009C]
 3C2B E8 00 00                              CALL 'CODEATOM' (INTERNAL L1203 )
 3C2E 83 C4 04                              ADD %ESP,#4
 3C31                      L1465  EQU $
  1783           %IF escape class # 0 %START;             !escape to new grammar
 3C31 A1 08 01 00 00                        MOV %EAX,[DATA+0108]
 3C36 3D 00 00 00 00                        CMP %EAX,#0
 3C3B 74 00                                 JE L1466
  1784              class = escape class;  escape class = 0
 3C3D A1 08 01 00 00                        MOV %EAX,[DATA+0108]
 3C42 89 05 9C 00 00 00                     MOV [DATA+009C],%EAX
 3C48 C7 05 08 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0108],#0
  1785              g = g+escape
 3C52 81 05 34 01 00 00 00 10 00 00         ADD DWORD PTR [DATA+0134],#4096
  1786  
  1787              !note that following an escape the next item is
  1788              !forced to be transparent!
  1789  
  1790  esc:        gg = 0
 3C5C                      L1467  EQU $
 3C5C C7 05 38 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0138],#0
  1791              arp == ar(nmax+1)
 3C66 A1 4C 01 00 00                        MOV %EAX,[DATA+014C]
 3C6B 40                                    INC %EAX
 3C6C 50                                    PUSH %EAX
 3C6D 8B 5D FC                              MOV %EBX,[%EBP-4]
 3C70 FF 73 E8                              PUSH DWORD PTR [%EBX-24]
 3C73 89 5D A4                              MOV [%EBP-92],%EBX
 3C76 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3C79 83 C4 08                              ADD %ESP,#8
 3C7C 89 C6                                 MOV %ESI,%EAX
 3C7E 8B 7D A4                              MOV %EDI,[%EBP-92]
 3C81 03 77 E4                              ADD %ESI,[%EDI-28]
 3C84 89 75 CC                              MOV [%EBP-52],%ESI
  1792              arp_papp = papp;  arp_x = x;  ->a4
 3C87 8B 5D CC                              MOV %EBX,[%EBP-52]
 3C8A A1 28 01 00 00                        MOV %EAX,[DATA+0128]
 3C8F 88 43 08                              MOV [%EBX+8],%AL
 3C92 88 63 09                              MOV [%EBX+9],%AH
 3C95 8B 75 CC                              MOV %ESI,[%EBP-52]
 3C98 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 3C9D 88 46 0C                              MOV [%ESI+12],%AL
 3CA0 88 66 0D                              MOV [%ESI+13],%AH
 3CA3 EB 00                                 JMP L1468
  1793           %FINISH
 3CA5                      L1466  EQU $
  1794  
  1795           ->a1 %IF class = atom1 %OR class = atom2
 3CA5 A1 9C 00 00 00                        MOV %EAX,[DATA+009C]
 3CAA 3B 05 A4 00 00 00                     CMP %EAX,[DATA+00A4]
 3CB0 74 00                                 JE L1469
 3CB2 A1 9C 00 00 00                        MOV %EAX,[DATA+009C]
 3CB7 3B 05 A8 00 00 00                     CMP %EAX,[DATA+00A8]
 3CBD 75 00                                 JNE L1470
 3CBF                      L1469  EQU $
 3CBF EB 00                                 JMP L1397
 3CC1                      L1470  EQU $
  1796  
  1797  a7:      ->fail1 %IF gg >= 0;                     !no alternative
 3CC1                      L1434  EQU $
 3CC1 A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3CC6 3D 00 00 00 00                        CMP %EAX,#0
 3CCB 7C 00                                 JL L1471
 3CCD EB 00                                 JMP L1392
 3CCF                      L1471  EQU $
  1798           g = g+1
 3CCF FF 05 34 01 00 00                     INC DWORD PTR [DATA+0134]
  1799           ->a3
 3CD5 EB 00                                 JMP L1394
  1800        %FINISH
 3CD7                      L1462  EQU $
  1801  
  1802        %IF class >= phrasal %START;                !a phrase
 3CD7 A1 9C 00 00 00                        MOV %EAX,[DATA+009C]
 3CDC 3D C8 00 00 00                        CMP %EAX,#200
 3CE1 7C 00                                 JL L1472
  1803  a4:      nmax = nmax+1;  ->fail0 %IF nmax = nmin
 3CE3                      L1468  EQU $
 3CE3 FF 05 4C 01 00 00                     INC DWORD PTR [DATA+014C]
 3CE9 A1 4C 01 00 00                        MOV %EAX,[DATA+014C]
 3CEE 3B 05 48 01 00 00                     CMP %EAX,[DATA+0148]
 3CF4 75 00                                 JNE L1473
 3CF6 EB 00                                 JMP L1457
 3CF8                      L1473  EQU $
  1804           arp == ar(nmax)
 3CF8 FF 35 4C 01 00 00                     PUSH DWORD PTR [DATA+014C]
 3CFE 8B 7D FC                              MOV %EDI,[%EBP-4]
 3D01 FF 77 E8                              PUSH DWORD PTR [%EDI-24]
 3D04 89 7D A0                              MOV [%EBP-96],%EDI
 3D07 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3D0A 83 C4 08                              ADD %ESP,#8
 3D0D 89 C3                                 MOV %EBX,%EAX
 3D0F 8B 75 A0                              MOV %ESI,[%EBP-96]
 3D12 03 5E E4                              ADD %EBX,[%ESI-28]
 3D15 89 5D CC                              MOV [%EBP-52],%EBX
  1805           arp_ptype = ptype
 3D18 8B 7D CC                              MOV %EDI,[%EBP-52]
 3D1B A1 24 01 00 00                        MOV %EAX,[DATA+0124]
 3D20 88 47 06                              MOV [%EDI+6],%AL
 3D23 88 67 07                              MOV [%EDI+7],%AH
  1806           arp_pos = pos1
 3D26 8B 5D CC                              MOV %EBX,[%EBP-52]
 3D29 A1 A0 01 00 00                        MOV %EAX,[DATA+01A0]
 3D2E 88 43 0E                              MOV [%EBX+14],%AL
 3D31 88 63 0F                              MOV [%EBX+15],%AH
  1807           arp_pformat = pformat
 3D34 8B 75 CC                              MOV %ESI,[%EBP-52]
 3D37 A1 2C 01 00 00                        MOV %EAX,[DATA+012C]
 3D3C 88 46 0A                              MOV [%ESI+10],%AL
 3D3F 88 66 0B                              MOV [%ESI+11],%AH
  1808           arp_link = gentype
 3D42 8B 7D CC                              MOV %EDI,[%EBP-52]
 3D45 A1 20 01 00 00                        MOV %EAX,[DATA+0120]
 3D4A 88 47 04                              MOV [%EDI+4],%AL
 3D4D 88 67 05                              MOV [%EDI+5],%AH
  1809           arp_class = node
 3D50 8B 5D CC                              MOV %EBX,[%EBP-52]
 3D53 8B 45 D6                              MOV %EAX,[%EBP-42]
 3D56 88 03                                 MOV [%EBX],%AL
 3D58 88 63 01                              MOV [%EBX+1],%AH
  1810           arp_sub = g
 3D5B 8B 75 CC                              MOV %ESI,[%EBP-52]
 3D5E A1 34 01 00 00                        MOV %EAX,[DATA+0134]
 3D63 88 46 02                              MOV [%ESI+2],%AL
 3D66 88 66 03                              MOV [%ESI+3],%AH
  1811           node = 0
 3D69 C6 45 D6 00                           MOV BYTE PTR [%EBP-42],#0
 3D6D C6 45 D7 00                           MOV BYTE PTR [%EBP-41],#0
  1812           g = phrase(class)
 3D71 FF 35 9C 00 00 00                     PUSH DWORD PTR [DATA+009C]
 3D77 68 34 00 00 00                        PUSH COT+#52
 3D7C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3D7F 83 C4 08                              ADD %ESP,#8
 3D82 89 C7                                 MOV %EDI,%EAX
 3D84 0F BF 87 D8 09 00 00                  MOVSX %EAX,[%EDI+DATA+2520]
 3D8B 89 05 34 01 00 00                     MOV [DATA+0134],%EAX
  1813           ptype = force %AND force = 0 %IF force # 0
 3D91 A1 30 01 00 00                        MOV %EAX,[DATA+0130]
 3D96 3D 00 00 00 00                        CMP %EAX,#0
 3D9B 74 00                                 JE L1474
 3D9D A1 30 01 00 00                        MOV %EAX,[DATA+0130]
 3DA2 89 05 24 01 00 00                     MOV [DATA+0124],%EAX
 3DA8 C7 05 30 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0130],#0
 3DB2                      L1474  EQU $
  1814           gentype = 0
 3DB2 C7 05 20 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0120],#0
  1815           ->paction(gg>>8&15)
 3DBC A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3DC1 C1 E8 08                              SHR %EAX,#8
 3DC4 25 0F 00 00 00                        AND %EAX,#15
 3DC9 C1 E0 02                              SHL %EAX,#2
 3DCC 89 C3                                 MOV %EBX,%EAX
 3DCE FF A3 EC 00 00 00                     JMP DWORD PTR [%EBX+SWTAB+236]
  1816        %FINISH
 3DD4                      L1472  EQU $
  1817  
  1818        ->act(class);                               !only actions left
 3DD4 A1 9C 00 00 00                        MOV %EAX,[DATA+009C]
 3DD9 C1 E0 02                              SHL %EAX,#2
 3DDC 89 C6                                 MOV %ESI,%EAX
 3DDE FF A6 C8 FD FF FF                     JMP DWORD PTR [%ESI+SWTAB-568]
  1819  
  1820  a5:   !reverse links
 3DE4                      L1461  EQU $
  1821  
  1822        s = 0
 3DE4 C7 45 DC 00 00 00 00                  MOV DWORD PTR [%EBP-36],#0
  1823        %WHILE node # 0 %CYCLE
 3DEB                      L1475  EQU $
 3DEB 0F BF 45 D6                           MOVSX %EAX,[%EBP-42]
 3DEF 3D 00 00 00 00                        CMP %EAX,#0
 3DF4 74 00                                 JE L1476
  1824           z == ar(node)_link
 3DF6 FF 75 D6                              PUSH DWORD PTR [%EBP-42]
 3DF9 8B 7D FC                              MOV %EDI,[%EBP-4]
 3DFC FF 77 E8                              PUSH DWORD PTR [%EDI-24]
 3DFF 89 7D 9C                              MOV [%EBP-100],%EDI
 3E02 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3E05 83 C4 08                              ADD %ESP,#8
 3E08 89 C3                                 MOV %EBX,%EAX
 3E0A 8B 75 9C                              MOV %ESI,[%EBP-100]
 3E0D 03 5E E4                              ADD %EBX,[%ESI-28]
 3E10 8D 5B 04                              LEA %EBX,[%EBX+4]
 3E13 89 5D D0                              MOV [%EBP-48],%EBX
  1825           k = z;  z = s;  s = node;  node = k
 3E16 8B 7D D0                              MOV %EDI,[%EBP-48]
 3E19 0F BF 07                              MOVSX %EAX,[%EDI]
 3E1C 89 45 E0                              MOV [%EBP-32],%EAX
 3E1F 8B 5D D0                              MOV %EBX,[%EBP-48]
 3E22 8B 45 DC                              MOV %EAX,[%EBP-36]
 3E25 88 03                                 MOV [%EBX],%AL
 3E27 88 63 01                              MOV [%EBX+1],%AH
 3E2A 0F BF 45 D6                           MOVSX %EAX,[%EBP-42]
 3E2E 89 45 DC                              MOV [%EBP-36],%EAX
 3E31 8B 45 E0                              MOV %EAX,[%EBP-32]
 3E34 88 45 D6                              MOV [%EBP-42],%AL
 3E37 88 65 D7                              MOV [%EBP-41],%AH
  1826        %REPEAT
 3E3A EB 00                                 JMP L1475
 3E3C                      L1476  EQU $
  1827        ss = s
 3E3C 8B 45 DC                              MOV %EAX,[%EBP-36]
 3E3F 89 05 64 01 00 00                     MOV [DATA+0164],%EAX
  1828  
  1829  a6:   %IF nmax # 0 %START
 3E45                      L1477  EQU $
 3E45 A1 4C 01 00 00                        MOV %EAX,[DATA+014C]
 3E4A 3D 00 00 00 00                        CMP %EAX,#0
 3E4F 74 00                                 JE L1478
  1830           k = gentype;                             !type of phrase
 3E51 A1 20 01 00 00                        MOV %EAX,[DATA+0120]
 3E56 89 45 E0                              MOV [%EBP-32],%EAX
  1831           arp == ar(nmax);  nmax = nmax-1
 3E59 FF 35 4C 01 00 00                     PUSH DWORD PTR [DATA+014C]
 3E5F 8B 75 FC                              MOV %ESI,[%EBP-4]
 3E62 FF 76 E8                              PUSH DWORD PTR [%ESI-24]
 3E65 89 75 98                              MOV [%EBP-104],%ESI
 3E68 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3E6B 83 C4 08                              ADD %ESP,#8
 3E6E 89 C7                                 MOV %EDI,%EAX
 3E70 8B 5D 98                              MOV %EBX,[%EBP-104]
 3E73 03 7B E4                              ADD %EDI,[%EBX-28]
 3E76 89 7D CC                              MOV [%EBP-52],%EDI
 3E79 FF 0D 4C 01 00 00                     DEC DWORD PTR [DATA+014C]
  1832           node = arp_class
 3E7F 8B 75 CC                              MOV %ESI,[%EBP-52]
 3E82 8B 06                                 MOV %EAX,[%ESI]
 3E84 88 45 D6                              MOV [%EBP-42],%AL
 3E87 88 65 D7                              MOV [%EBP-41],%AH
  1833           gentype = arp_link
 3E8A 8B 7D CC                              MOV %EDI,[%EBP-52]
 3E8D 0F BF 47 04                           MOVSX %EAX,[%EDI+4]
 3E91 89 05 20 01 00 00                     MOV [DATA+0120],%EAX
  1834           ptype = arp_ptype
 3E97 8B 5D CC                              MOV %EBX,[%EBP-52]
 3E9A 0F BF 43 06                           MOVSX %EAX,[%EBX+6]
 3E9E 89 05 24 01 00 00                     MOV [DATA+0124],%EAX
  1835           pformat = arp_pformat
 3EA4 8B 75 CC                              MOV %ESI,[%EBP-52]
 3EA7 0F BF 46 0A                           MOVSX %EAX,[%ESI+10]
 3EAB 89 05 2C 01 00 00                     MOV [DATA+012C],%EAX
  1836           g = arp_sub
 3EB1 8B 7D CC                              MOV %EDI,[%EBP-52]
 3EB4 0F BF 47 02                           MOVSX %EAX,[%EDI+2]
 3EB8 89 05 34 01 00 00                     MOV [DATA+0134],%EAX
  1837           %IF g&escape # 0 %START
 3EBE A1 34 01 00 00                        MOV %EAX,[DATA+0134]
 3EC3 25 00 10 00 00                        AND %EAX,#4096
 3EC8 3D 00 00 00 00                        CMP %EAX,#0
 3ECD 74 00                                 JE L1479
  1838              g = g-escape
 3ECF 81 2D 34 01 00 00 00 10 00 00         SUB DWORD PTR [DATA+0134],#4096
  1839              papp = arp_papp
 3ED9 8B 5D CC                              MOV %EBX,[%EBP-52]
 3EDC 0F BF 43 08                           MOVSX %EAX,[%EBX+8]
 3EE0 89 05 28 01 00 00                     MOV [DATA+0128],%EAX
  1840              mark = 255
 3EE6 C7 45 EC FF 00 00 00                  MOV DWORD PTR [%EBP-20],#255
  1841              subatom = s
 3EED 8B 45 DC                              MOV %EAX,[%EBP-36]
 3EF0 89 05 AC 00 00 00                     MOV [DATA+00AC],%EAX
  1842              ->a3
 3EF6 EB 00                                 JMP L1394
  1843           %FINISH
 3EF8                      L1479  EQU $
  1844           gentype = k %IF gentype = 0 %OR k = real
 3EF8 A1 20 01 00 00                        MOV %EAX,[DATA+0120]
 3EFD 3D 00 00 00 00                        CMP %EAX,#0
 3F02 74 00                                 JE L1480
 3F04 8B 45 E0                              MOV %EAX,[%EBP-32]
 3F07 3D 02 00 00 00                        CMP %EAX,#2
 3F0C 75 00                                 JNE L1481
 3F0E                      L1480  EQU $
 3F0E 8B 45 E0                              MOV %EAX,[%EBP-32]
 3F11 89 05 20 01 00 00                     MOV [DATA+0120],%EAX
 3F17                      L1481  EQU $
  1845           type = gen type
 3F17 A1 20 01 00 00                        MOV %EAX,[DATA+0120]
 3F1C 89 05 B0 00 00 00                     MOV [DATA+00B0],%EAX
  1846  
  1847           k = gg;                                  !exit-point code
 3F22 A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3F27 89 45 E0                              MOV [%EBP-32],%EAX
  1848           %CYCLE
 3F2A                      L1482  EQU $
  1849              gg = gram(g)
 3F2A FF 35 34 01 00 00                     PUSH DWORD PTR [DATA+0134]
 3F30 68 64 00 00 00                        PUSH COT+#100
 3F35 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3F38 83 C4 08                              ADD %ESP,#8
 3F3B 89 C6                                 MOV %ESI,%EAX
 3F3D 0F BF 86 FC 0C 00 00                  MOVSX %EAX,[%ESI+DATA+3324]
 3F44 89 05 38 01 00 00                     MOV [DATA+0138],%EAX
  1850              ->a2 %IF k = 0
 3F4A 8B 45 E0                              MOV %EAX,[%EBP-32]
 3F4D 3D 00 00 00 00                        CMP %EAX,#0
 3F52 75 00                                 JNE L1483
 3F54 EB 00                                 JMP L1449
 3F56                      L1483  EQU $
  1851              ->fail1 %IF gg >= 0;                  !no alternative phrase
 3F56 A1 38 01 00 00                        MOV %EAX,[DATA+0138]
 3F5B 3D 00 00 00 00                        CMP %EAX,#0
 3F60 7C 00                                 JL L1484
 3F62 EB 00                                 JMP L1392
 3F64                      L1484  EQU $
  1852              k = k-order bit
 3F64 81 6D E0 00 10 00 00                  SUB DWORD PTR [%EBP-32],#4096
  1853              g = g+1;                              !sideways step
 3F6B FF 05 34 01 00 00                     INC DWORD PTR [DATA+0134]
  1854           %REPEAT
 3F71 EB 00                                 JMP L1482
  1855  
  1856        %FINISH
 3F73                      L1478  EQU $
  1857  
  1858        Fault(4)  %IF copy # 0
 3F73 A1 8C 01 00 00                        MOV %EAX,[DATA+018C]
 3F78 3D 00 00 00 00                        CMP %EAX,#0
 3F7D 74 00                                 JE L1485
 3F7F 6A 04                                 PUSH #4
 3F81 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 3F84 83 C4 04                              ADD %ESP,#4
 3F87                      L1485  EQU $
  1859        fault(13) %IF order = 0
 3F87 A1 90 01 00 00                        MOV %EAX,[DATA+0190]
 3F8C 3D 00 00 00 00                        CMP %EAX,#0
 3F91 75 00                                 JNE L1486
 3F93 6A 0D                                 PUSH #13
 3F95 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 3F98 83 C4 04                              ADD %ESP,#4
 3F9B                      L1486  EQU $
  1860        fault(-4) %IF for warn # 0
 3F9B A1 94 01 00 00                        MOV %EAX,[DATA+0194]
 3FA0 3D 00 00 00 00                        CMP %EAX,#0
 3FA5 74 00                                 JE L1487
 3FA7 6A FC                                 PUSH #-4
 3FA9 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 3FAC 83 C4 04                              ADD %ESP,#4
 3FAF                      L1487  EQU $
  1861        pos1 = 0
 3FAF C7 05 A0 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A0],#0
  1862        fault rate = fault rate-1
 3FB9 FF 0D C0 00 00 00                     DEC DWORD PTR [DATA+00C0]
  1863        %RETURN
 3FBF C9                                    LEAVE
 3FC0 C3                                    RET
  1864  
  1865  act(193):gg = 0 %AND ->a5 %UNLESS sym = '=' %or sym = '<';  !cdummy
 3FC1                      L1488  EQU $
 3FC1 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 3FC6 3D 3D 00 00 00                        CMP %EAX,#61
 3FCB 74 00                                 JE L1489
 3FCD A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 3FD2 3D 3C 00 00 00                        CMP %EAX,#60
 3FD7 74 00                                 JE L1489
 3FD9 C7 05 38 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0138],#0
 3FE3 EB 00                                 JMP L1461
 3FE5                      L1489  EQU $
  1866  act(181):atom1 = amap(decl&15);                             !dummy
 3FE5                      L1490  EQU $
 3FE5 A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 3FEA 25 0F 00 00 00                        AND %EAX,#15
 3FEF 50                                    PUSH %EAX
 3FF0 68 04 00 00 00                        PUSH COT+#4
 3FF5 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 3FF8 83 C4 08                              ADD %ESP,#8
 3FFB 89 C7                                 MOV %EDI,%EAX
 3FFD 31 C0                                 XOR %EAX,%EAX
 3FFF 8A 87 7C 00 00 00                     MOV %AL,[%EDI+DATA+124]
 4005 89 05 A4 00 00 00                     MOV [DATA+00A4],%EAX
  1867           ->more
 400B EB 00                                 JMP L1389
  1868  
  1869  act(182):class = escdec;  g = glink(g)!escape
 400D                      L1491  EQU $
 400D C7 05 9C 00 00 00 FC 00 00 00         MOV DWORD PTR [DATA+009C],#252
 4017 FF 35 34 01 00 00                     PUSH DWORD PTR [DATA+0134]
 401D 68 64 00 00 00                        PUSH COT+#100
 4022 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4025 83 C4 08                              ADD %ESP,#8
 4028 89 C3                                 MOV %EBX,%EAX
 402A 0F BF 9B 70 1A 00 00                  MOVSX %EBX,[%EBX+DATA+6768]
 4031 81 CB 00 10 00 00                     OR %EBX,#4096
 4037 89 1D 34 01 00 00                     MOV [DATA+0134],%EBX
  1870           decl = 0;  otype = 0;  ->esc;                      !decl
 403D C7 05 FC 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00FC],#0
 4047 C7 05 14 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0114],#0
 4051 EB 00                                 JMP L1467
  1871  
  1872  act(199):                                                   !compile
 4053                      L1492  EQU $
  1873  
  1874           s = 0
 4053 C7 45 DC 00 00 00 00                  MOV DWORD PTR [%EBP-36],#0
  1875           %WHILE node # 0 %CYCLE
 405A                      L1493  EQU $
 405A 0F BF 45 D6                           MOVSX %EAX,[%EBP-42]
 405E 3D 00 00 00 00                        CMP %EAX,#0
 4063 74 00                                 JE L1494
  1876              z == ar(node)_link
 4065 FF 75 D6                              PUSH DWORD PTR [%EBP-42]
 4068 8B 75 FC                              MOV %ESI,[%EBP-4]
 406B FF 76 E8                              PUSH DWORD PTR [%ESI-24]
 406E 89 75 94                              MOV [%EBP-108],%ESI
 4071 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4074 83 C4 08                              ADD %ESP,#8
 4077 89 C7                                 MOV %EDI,%EAX
 4079 8B 5D 94                              MOV %EBX,[%EBP-108]
 407C 03 7B E4                              ADD %EDI,[%EBX-28]
 407F 8D 7F 04                              LEA %EDI,[%EDI+4]
 4082 89 7D D0                              MOV [%EBP-48],%EDI
  1877              k = z;  z = s;  s = node;  node = k
 4085 8B 75 D0                              MOV %ESI,[%EBP-48]
 4088 0F BF 06                              MOVSX %EAX,[%ESI]
 408B 89 45 E0                              MOV [%EBP-32],%EAX
 408E 8B 7D D0                              MOV %EDI,[%EBP-48]
 4091 8B 45 DC                              MOV %EAX,[%EBP-36]
 4094 88 07                                 MOV [%EDI],%AL
 4096 88 67 01                              MOV [%EDI+1],%AH
 4099 0F BF 45 D6                           MOVSX %EAX,[%EBP-42]
 409D 89 45 DC                              MOV [%EBP-36],%EAX
 40A0 8B 45 E0                              MOV %EAX,[%EBP-32]
 40A3 88 45 D6                              MOV [%EBP-42],%AL
 40A6 88 65 D7                              MOV [%EBP-41],%AH
  1878           %repeat
 40A9 EB 00                                 JMP L1493
 40AB                      L1494  EQU $
  1879           ss = s
 40AB 8B 45 DC                              MOV %EAX,[%EBP-36]
 40AE 89 05 64 01 00 00                     MOV [DATA+0164],%EAX
  1880  
  1881           code atom(28) %IF quote # 0;                       !expend
 40B4 A1 EC 00 00 00                        MOV %EAX,[DATA+00EC]
 40B9 3D 00 00 00 00                        CMP %EAX,#0
 40BE 74 00                                 JE L1495
 40C0 6A 1C                                 PUSH #28
 40C2 E8 00 00                              CALL 'CODEATOM' (INTERNAL L1203 )
 40C5 83 C4 04                              ADD %ESP,#4
 40C8                      L1495  EQU $
  1882           compile;  ->more %IF atom1&error = 0
 40C8 E8 00 00                              CALL 'COMPILE' (INTERNAL L1041 )
 40CB A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 40D0 25 00 80 00 00                        AND %EAX,#32768
 40D5 3D 00 00 00 00                        CMP %EAX,#0
 40DA 75 00                                 JNE L1496
 40DC EB 00                                 JMP L1389
 40DE                      L1496  EQU $
  1883           ->fail1
 40DE EB 00                                 JMP L1392
  1884  
  1885  act(184):->fail4 %UNLESS type = integer
 40E0                      L1497  EQU $
 40E0 A1 B0 00 00 00                        MOV %EAX,[DATA+00B0]
 40E5 3D 01 00 00 00                        CMP %EAX,#1
 40EA 74 00                                 JE L1498
 40EC EB 00                                 JMP L1499
 40EE                      L1498  EQU $
  1886           %IF subatom < 0 %THEN lit = tag(-subatom)_format %C
  1887+                          %ELSE lit = lit pool(subatom)
 40EE A1 AC 00 00 00                        MOV %EAX,[DATA+00AC]
 40F3 3D 00 00 00 00                        CMP %EAX,#0
 40F8 7D 00                                 JGE L1500
 40FA A1 AC 00 00 00                        MOV %EAX,[DATA+00AC]
 40FF F7 D8                                 NEG %EAX
 4101 50                                    PUSH %EAX
 4102 8B 5D FC                              MOV %EBX,[%EBP-4]
 4105 FF B3 58 FF FF FF                     PUSH DWORD PTR [%EBX-168]
 410B 89 5D 90                              MOV [%EBP-112],%EBX
 410E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4111 83 C4 08                              ADD %ESP,#8
 4114 89 C6                                 MOV %ESI,%EAX
 4116 8B 7D 90                              MOV %EDI,[%EBP-112]
 4119 03 B7 54 FF FF FF                     ADD %ESI,[%EDI-172]
 411F 8B 76 04                              MOV %ESI,[%ESI+4]
 4122 89 35 48 02 00 00                     MOV [DATA+0248],%ESI
 4128 EB 00                                 JMP L1501
 412A                      L1500  EQU $
 412A FF 35 AC 00 00 00                     PUSH DWORD PTR [DATA+00AC]
 4130 8B 5D FC                              MOV %EBX,[%EBP-4]
 4133 FF 73 88                              PUSH DWORD PTR [%EBX-120]
 4136 89 5D 8C                              MOV [%EBP-116],%EBX
 4139 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 413C 83 C4 08                              ADD %ESP,#8
 413F 89 C6                                 MOV %ESI,%EAX
 4141 8B 7D 8C                              MOV %EDI,[%EBP-116]
 4144 03 77 84                              ADD %ESI,[%EDI-124]
 4147 8B 36                                 MOV %ESI,[%ESI]
 4149 89 35 48 02 00 00                     MOV [DATA+0248],%ESI
 414F                      L1501  EQU $
  1888           ->fail4 %IF lit # 0
 414F A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 4154 3D 00 00 00 00                        CMP %EAX,#0
 4159 74 00                                 JE L1502
 415B EB 00                                 JMP L1499
 415D                      L1502  EQU $
  1889           ->more
 415D EB 00                                 JMP L1389
  1890  act(185):                                                   !apply parameters
 415F                      L1503  EQU $
  1891           s = 0
 415F C7 45 DC 00 00 00 00                  MOV DWORD PTR [%EBP-36],#0
  1892           %WHILE node # 0 %CYCLE
 4166                      L1504  EQU $
 4166 0F BF 45 D6                           MOVSX %EAX,[%EBP-42]
 416A 3D 00 00 00 00                        CMP %EAX,#0
 416F 74 00                                 JE L1505
  1893              z == ar(node)_link
 4171 FF 75 D6                              PUSH DWORD PTR [%EBP-42]
 4174 8B 5D FC                              MOV %EBX,[%EBP-4]
 4177 FF 73 E8                              PUSH DWORD PTR [%EBX-24]
 417A 89 5D 88                              MOV [%EBP-120],%EBX
 417D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4180 83 C4 08                              ADD %ESP,#8
 4183 89 C6                                 MOV %ESI,%EAX
 4185 8B 7D 88                              MOV %EDI,[%EBP-120]
 4188 03 77 E4                              ADD %ESI,[%EDI-28]
 418B 8D 76 04                              LEA %ESI,[%ESI+4]
 418E 89 75 D0                              MOV [%EBP-48],%ESI
  1894              k = z;  z = s;  s = node;  node = k
 4191 8B 5D D0                              MOV %EBX,[%EBP-48]
 4194 0F BF 03                              MOVSX %EAX,[%EBX]
 4197 89 45 E0                              MOV [%EBP-32],%EAX
 419A 8B 75 D0                              MOV %ESI,[%EBP-48]
 419D 8B 45 DC                              MOV %EAX,[%EBP-36]
 41A0 88 06                                 MOV [%ESI],%AL
 41A2 88 66 01                              MOV [%ESI+1],%AH
 41A5 0F BF 45 D6                           MOVSX %EAX,[%EBP-42]
 41A9 89 45 DC                              MOV [%EBP-36],%EAX
 41AC 8B 45 E0                              MOV %EAX,[%EBP-32]
 41AF 88 45 D6                              MOV [%EBP-42],%AL
 41B2 88 65 D7                              MOV [%EBP-41],%AH
  1895           %REPEAT
 41B5 EB 00                                 JMP L1504
 41B7                      L1505  EQU $
  1896           ss = s
 41B7 8B 45 DC                              MOV %EAX,[%EBP-36]
 41BA 89 05 64 01 00 00                     MOV [DATA+0164],%EAX
  1897  
  1898           atom1 = ar(s)_class;  atom2 = 0
 41C0 FF 75 DC                              PUSH DWORD PTR [%EBP-36]
 41C3 8B 7D FC                              MOV %EDI,[%EBP-4]
 41C6 FF 77 E8                              PUSH DWORD PTR [%EDI-24]
 41C9 89 7D 84                              MOV [%EBP-124],%EDI
 41CC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 41CF 83 C4 08                              ADD %ESP,#8
 41D2 89 C3                                 MOV %EBX,%EAX
 41D4 8B 75 84                              MOV %ESI,[%EBP-124]
 41D7 03 5E E4                              ADD %EBX,[%ESI-28]
 41DA 0F BF 1B                              MOVSX %EBX,[%EBX]
 41DD 89 1D A4 00 00 00                     MOV [DATA+00A4],%EBX
 41E3 C7 05 A8 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00A8],#0
  1899           atom1 = var %IF atom1 = 97 %OR atom1 = 98
 41ED A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 41F2 3D 61 00 00 00                        CMP %EAX,#97
 41F7 74 00                                 JE L1506
 41F9 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 41FE 3D 62 00 00 00                        CMP %EAX,#98
 4203 75 00                                 JNE L1507
 4205                      L1506  EQU $
 4205 C7 05 A4 00 00 00 5B 00 00 00         MOV DWORD PTR [DATA+00A4],#91
 420F                      L1507  EQU $
  1900           arp == ar(nmax)
 420F FF 35 4C 01 00 00                     PUSH DWORD PTR [DATA+014C]
 4215 8B 7D FC                              MOV %EDI,[%EBP-4]
 4218 FF 77 E8                              PUSH DWORD PTR [%EDI-24]
 421B 89 BD 80 FF FF FF                     MOV [%EBP-128],%EDI
 4221 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4224 83 C4 08                              ADD %ESP,#8
 4227 89 C3                                 MOV %EBX,%EAX
 4229 8B B5 80 FF FF FF                     MOV %ESI,[%EBP-128]
 422F 03 5E E4                              ADD %EBX,[%ESI-28]
 4232 89 5D CC                              MOV [%EBP-52],%EBX
  1901           x = arp_x
 4235 8B 7D CC                              MOV %EDI,[%EBP-52]
 4238 0F BF 47 0C                           MOVSX %EAX,[%EDI+12]
 423C 89 05 A0 00 00 00                     MOV [DATA+00A0],%EAX
  1902           pos1 = arp_pos
 4242 8B 5D CC                              MOV %EBX,[%EBP-52]
 4245 0F BF 43 0E                           MOVSX %EAX,[%EBX+14]
 4249 89 05 A0 01 00 00                     MOV [DATA+01A0],%EAX
  1903           pos2 = 0
 424F C7 05 A4 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A4],#0
  1904           app = 0
 4259 C7 05 B4 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00B4],#0
  1905           format = tag(x)_format
 4263 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 4269 8B 75 FC                              MOV %ESI,[%EBP-4]
 426C FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 4272 89 B5 7C FF FF FF                     MOV [%EBP-132],%ESI
 4278 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 427B 83 C4 08                              ADD %ESP,#8
 427E 89 C7                                 MOV %EDI,%EAX
 4280 8B 9D 7C FF FF FF                     MOV %EBX,[%EBP-132]
 4286 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 428C 8B 7F 04                              MOV %EDI,[%EDI+4]
 428F 89 3D B8 00 00 00                     MOV [DATA+00B8],%EDI
  1906           flags = tag(x)_flags
 4295 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 429B 8B 75 FC                              MOV %ESI,[%EBP-4]
 429E FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 42A4 89 B5 78 FF FF FF                     MOV [%EBP-136],%ESI
 42AA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 42AD 83 C4 08                              ADD %ESP,#8
 42B0 89 C7                                 MOV %EDI,%EAX
 42B2 8B 9D 78 FF FF FF                     MOV %EBX,[%EBP-136]
 42B8 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 42BE 0F BF 47 08                           MOVSX %EAX,[%EDI+8]
 42C2 89 45 E8                              MOV [%EBP-24],%EAX
  1907           type = flags>>4&7
 42C5 8B 45 E8                              MOV %EAX,[%EBP-24]
 42C8 C1 E8 04                              SHR %EAX,#4
 42CB 25 07 00 00 00                        AND %EAX,#7
 42D0 89 05 B0 00 00 00                     MOV [DATA+00B0],%EAX
  1908           protection = flags&prot
 42D6 8B 45 E8                              MOV %EAX,[%EBP-24]
 42D9 25 00 01 00 00                        AND %EAX,#256
 42DE 89 05 0C 01 00 00                     MOV [DATA+010C],%EAX
  1909           protection = 0 %IF flags&aname # 0
 42E4 8B 45 E8                              MOV %EAX,[%EBP-24]
 42E7 25 00 04 00 00                        AND %EAX,#1024
 42EC 3D 00 00 00 00                        CMP %EAX,#0
 42F1 74 00                                 JE L1508
 42F3 C7 05 0C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+010C],#0
 42FD                      L1508  EQU $
  1910  
  1911           %IF flags&subname # 0 %AND format # 0 %START
 42FD 8B 45 E8                              MOV %EAX,[%EBP-24]
 4300 25 00 08 00 00                        AND %EAX,#2048
 4305 3D 00 00 00 00                        CMP %EAX,#0
 430A 74 00                                 JE L1509
 430C A1 B8 00 00 00                        MOV %EAX,[DATA+00B8]
 4311 3D 00 00 00 00                        CMP %EAX,#0
 4316 74 00                                 JE L1509
  1912              ->fail1 %if format selected = 0
 4318 E8 00 00                              CALL 'FORMATSELECTED' (INTERNAL L1200 )
 431B 3D 00 00 00 00                        CMP %EAX,#0
 4320 75 00                                 JNE L1510
 4322 EB 00                                 JMP L1392
 4324                      L1510  EQU $
  1913           %FINISH
 4324                      L1509  EQU $
  1914  
  1915           ->a6
 4324 EB 00                                 JMP L1477
  1916  
  1917  act(187):protection = prot;  ->more;            !%SETPROT
 4326                      L1511  EQU $
 4326 C7 05 0C 01 00 00 00 01 00 00         MOV DWORD PTR [DATA+010C],#256
 4330 EB 00                                 JMP L1389
  1918  act(186):->More %if protection&prot = 0
 4332                      L1512  EQU $
 4332 A1 0C 01 00 00                        MOV %EAX,[DATA+010C]
 4337 25 00 01 00 00                        AND %EAX,#256
 433C 3D 00 00 00 00                        CMP %EAX,#0
 4341 75 00                                 JNE L1513
 4343 EB 00                                 JMP L1389
 4345                      L1513  EQU $
  1919           prot err = nmin
 4345 A1 48 01 00 00                        MOV %EAX,[DATA+0148]
 434A 89 45 E4                              MOV [%EBP-28],%EAX
  1920           ->A7
 434D EB 00                                 JMP L1434
  1921  act(191):k = protection;                        !%GUARD
 434F                      L1514  EQU $
 434F A1 0C 01 00 00                        MOV %EAX,[DATA+010C]
 4354 89 45 E0                              MOV [%EBP-32],%EAX
  1922           code atom(0)
 4357 6A 00                                 PUSH #0
 4359 E8 00 00                              CALL 'CODEATOM' (INTERNAL L1203 )
 435C 83 C4 04                              ADD %ESP,#4
  1923           protection = k %IF atom flags&aname = 0
 435F A1 10 01 00 00                        MOV %EAX,[DATA+0110]
 4364 25 00 04 00 00                        AND %EAX,#1024
 4369 3D 00 00 00 00                        CMP %EAX,#0
 436E 75 00                                 JNE L1515
 4370 8B 45 E0                              MOV %EAX,[%EBP-32]
 4373 89 05 0C 01 00 00                     MOV [DATA+010C],%EAX
 4379                      L1515  EQU $
  1924           ->more
 4379 EB 00                                 JMP L1389
  1925  
  1926  act(192):->fail1 %IF parsed machine code=0
 437B                      L1516  EQU $
 437B E8 00 00                              CALL 'PARSEDMACHINECODE' (INTERNAL L1353 )
 437E 3D 00 00 00 00                        CMP %EAX,#0
 4383 75 00                                 JNE L1517
 4385 EB 00                                 JMP L1392
 4387                      L1517  EQU $
  1927           ->more
 4387 EB 00                                 JMP L1389
  1928  
  1929  act(189):k = gapp;                              !%GAPP
 4389                      L1518  EQU $
 4389 E8 00 00                              CALL 'GAPP' (INTERNAL L1038 )
 438C 89 45 E0                              MOV [%EBP-32],%EAX
  1930           delete names(1)
 438F 6A 01                                 PUSH #1
 4391 E8 00 00                              CALL 'DELETENAMES' (INTERNAL L1039 )
 4394 83 C4 04                              ADD %ESP,#4
  1931           tmax = tbase;  tbase = gram (gmin);    !restore tmax
 4397 8B 75 F8                              MOV %ESI,[%EBP-8]
 439A 8B 46 EC                              MOV %EAX,[%ESI-20]
 439D 89 46 0C                              MOV [%ESI+12],%EAX
 43A0 FF 35 58 01 00 00                     PUSH DWORD PTR [DATA+0158]
 43A6 68 64 00 00 00                        PUSH COT+#100
 43AB E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 43AE 83 C4 08                              ADD %ESP,#8
 43B1 89 C7                                 MOV %EDI,%EAX
 43B3 8B 5D F8                              MOV %EBX,[%EBP-8]
 43B6 0F BF 87 FC 0C 00 00                  MOVSX %EAX,[%EDI+DATA+3324]
 43BD 89 43 EC                              MOV [%EBX-20],%EAX
  1932           local= tbase
 43C0 8B 43 EC                              MOV %EAX,[%EBX-20]
 43C3 89 05 B0 01 00 00                     MOV [DATA+01B0],%EAX
  1933           gmin = gmin+1
 43C9 FF 05 58 01 00 00                     INC DWORD PTR [DATA+0158]
  1934  
  1935           x = ar(ar(nmax)_class)_sub
 43CF FF 35 4C 01 00 00                     PUSH DWORD PTR [DATA+014C]
 43D5 8B 75 FC                              MOV %ESI,[%EBP-4]
 43D8 FF 76 E8                              PUSH DWORD PTR [%ESI-24]
 43DB 89 B5 74 FF FF FF                     MOV [%EBP-140],%ESI
 43E1 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 43E4 83 C4 08                              ADD %ESP,#8
 43E7 89 C7                                 MOV %EDI,%EAX
 43E9 8B 9D 74 FF FF FF                     MOV %EBX,[%EBP-140]
 43EF 03 7B E4                              ADD %EDI,[%EBX-28]
 43F2 FF 37                                 PUSH DWORD PTR [%EDI]
 43F4 8B 75 FC                              MOV %ESI,[%EBP-4]
 43F7 FF 76 E8                              PUSH DWORD PTR [%ESI-24]
 43FA 89 B5 70 FF FF FF                     MOV [%EBP-144],%ESI
 4400 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4403 83 C4 08                              ADD %ESP,#8
 4406 89 C7                                 MOV %EDI,%EAX
 4408 8B 9D 70 FF FF FF                     MOV %EBX,[%EBP-144]
 440E 03 7B E4                              ADD %EDI,[%EBX-28]
 4411 0F BF 47 02                           MOVSX %EAX,[%EDI+2]
 4415 89 05 A0 00 00 00                     MOV [DATA+00A0],%EAX
  1936           tag(x)_app = k;                        !update app
 441B FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 4421 8B 75 FC                              MOV %ESI,[%EBP-4]
 4424 FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 442A 89 B5 6C FF FF FF                     MOV [%EBP-148],%ESI
 4430 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4433 83 C4 08                              ADD %ESP,#8
 4436 89 C7                                 MOV %EDI,%EAX
 4438 8B 9D 6C FF FF FF                     MOV %EBX,[%EBP-148]
 443E 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 4444 8B 45 E0                              MOV %EAX,[%EBP-32]
 4447 89 07                                 MOV [%EDI],%EAX
  1937           ->more
 4449 EB 00                                 JMP L1389
  1938  
  1939  act(190):gmin = gmin-1;                         !%LOCAL
 444B                      L1519  EQU $
 444B FF 0D 58 01 00 00                     DEC DWORD PTR [DATA+0158]
  1940           abandon(2) %IF gmin <= gmax
 4451 A1 58 01 00 00                        MOV %EAX,[DATA+0158]
 4456 3B 05 64 0B 00 00                     CMP %EAX,[DATA+0B64]
 445C 7F 00                                 JG L1520
 445E 6A 02                                 PUSH #2
 4460 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 4463 83 C4 04                              ADD %ESP,#4
 4466                      L1520  EQU $
  1941           gram (gmin) = tbase;  tbase = tmax
 4466 FF 35 58 01 00 00                     PUSH DWORD PTR [DATA+0158]
 446C 68 64 00 00 00                        PUSH COT+#100
 4471 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4474 83 C4 08                              ADD %ESP,#8
 4477 89 C6                                 MOV %ESI,%EAX
 4479 8B 7D F8                              MOV %EDI,[%EBP-8]
 447C 8B 47 EC                              MOV %EAX,[%EDI-20]
 447F 88 86 FC 0C 00 00                     MOV [%ESI+DATA+3324],%AL
 4485 88 A6 FD 0C 00 00                     MOV [%ESI+DATA+3325],%AH
 448B 8B 47 0C                              MOV %EAX,[%EDI+12]
 448E 89 47 EC                              MOV [%EDI-20],%EAX
  1942           local = tbase
 4491 8B 47 EC                              MOV %EAX,[%EDI-20]
 4494 89 05 B0 01 00 00                     MOV [DATA+01B0],%EAX
  1943           ->more
 449A EB 00                                 JMP L1389
  1944  
  1945  ! errors
  1946  
  1947  fail4:k = error+10;            ->failed;        !*size
 449C                      L1499  EQU $
 449C C7 45 E0 0A 80 00 00                  MOV DWORD PTR [%EBP-32],#32778
 44A3 EB 00                                 JMP L1521
  1948  fail3:k = error+7;             ->failed;        !*context
 44A5                      L1416  EQU $
 44A5 C7 45 E0 07 80 00 00                  MOV DWORD PTR [%EBP-32],#32775
 44AC EB 00                                 JMP L1521
  1949  fail2:k = error+5;  pos2 = 0;  ->failed;        !*type
 44AE                      L1411  EQU $
 44AE C7 45 E0 05 80 00 00                  MOV DWORD PTR [%EBP-32],#32773
 44B5 C7 05 A4 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A4],#0
 44BF EB 00                                 JMP L1521
  1950  fail0:k = error+3;             ->failed;        !*too complex
 44C1                      L1457  EQU $
 44C1 C7 45 E0 03 80 00 00                  MOV DWORD PTR [%EBP-32],#32771
 44C8 EB 00                                 JMP L1521
  1951  fail1:k = atom1;    pos2 = 0
 44CA                      L1392  EQU $
 44CA A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 44CF 89 45 E0                              MOV [%EBP-32],%EAX
 44D2 C7 05 A4 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A4],#0
  1952  
  1953  failed:
 44DC                      L1521  EQU $
  1954        %IF diag&32 # 0 %START
 44DC A1 5C 02 00 00                        MOV %EAX,[DATA+025C]
 44E1 25 20 00 00 00                        AND %EAX,#32
 44E6 3D 00 00 00 00                        CMP %EAX,#0
 44EB 74 00                                 JE L1522
  1955           printstring("Atom1 =");       write(atom1, 3)
 44ED 81 EC 00 01 00 00                     SUB %ESP,#256
 44F3 89 E0                                 MOV %EAX,%ESP
 44F5 50                                    PUSH %EAX
 44F6 B8 0C 03 00 00                        MOV %EAX,COT+#780
 44FB 50                                    PUSH %EAX
 44FC 68 FF 00 00 00                        PUSH #255
 4501 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 4504 83 C4 0C                              ADD %ESP,#12
 4507 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 450A 81 C4 00 01 00 00                     ADD %ESP,#256
 4510 FF 35 A4 00 00 00                     PUSH DWORD PTR [DATA+00A4]
 4516 6A 03                                 PUSH #3
 4518 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 451B 83 C4 08                              ADD %ESP,#8
  1956           printstring("  Atom2 =");     write(atom2, 3)
 451E 81 EC 00 01 00 00                     SUB %ESP,#256
 4524 89 E0                                 MOV %EAX,%ESP
 4526 50                                    PUSH %EAX
 4527 B8 14 03 00 00                        MOV %EAX,COT+#788
 452C 50                                    PUSH %EAX
 452D 68 FF 00 00 00                        PUSH #255
 4532 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 4535 83 C4 0C                              ADD %ESP,#12
 4538 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 453B 81 C4 00 01 00 00                     ADD %ESP,#256
 4541 FF 35 A8 00 00 00                     PUSH DWORD PTR [DATA+00A8]
 4547 6A 03                                 PUSH #3
 4549 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 454C 83 C4 08                              ADD %ESP,#8
  1957           printstring("  subatom =");   write(subatom, 3);  newline
 454F 81 EC 00 01 00 00                     SUB %ESP,#256
 4555 89 E0                                 MOV %EAX,%ESP
 4557 50                                    PUSH %EAX
 4558 B8 1E 03 00 00                        MOV %EAX,COT+#798
 455D 50                                    PUSH %EAX
 455E 68 FF 00 00 00                        PUSH #255
 4563 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 4566 83 C4 0C                              ADD %ESP,#12
 4569 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 456C 81 C4 00 01 00 00                     ADD %ESP,#256
 4572 FF 35 AC 00 00 00                     PUSH DWORD PTR [DATA+00AC]
 4578 6A 03                                 PUSH #3
 457A E8 40 00                              CALL 'WRITE' (EXTERN 64)
 457D 83 C4 08                              ADD %ESP,#8
 4580 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
  1958           printstring("Type =");        write(type, 1)
 4583 81 EC 00 01 00 00                     SUB %ESP,#256
 4589 89 E0                                 MOV %EAX,%ESP
 458B 50                                    PUSH %EAX
 458C B8 2A 03 00 00                        MOV %EAX,COT+#810
 4591 50                                    PUSH %EAX
 4592 68 FF 00 00 00                        PUSH #255
 4597 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 459A 83 C4 0C                              ADD %ESP,#12
 459D E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 45A0 81 C4 00 01 00 00                     ADD %ESP,#256
 45A6 FF 35 B0 00 00 00                     PUSH DWORD PTR [DATA+00B0]
 45AC 6A 01                                 PUSH #1
 45AE E8 40 00                              CALL 'WRITE' (EXTERN 64)
 45B1 83 C4 08                              ADD %ESP,#8
  1959           printstring("   Ptype =");    write(ptype, 1);    newline
 45B4 81 EC 00 01 00 00                     SUB %ESP,#256
 45BA 89 E0                                 MOV %EAX,%ESP
 45BC 50                                    PUSH %EAX
 45BD B8 31 03 00 00                        MOV %EAX,COT+#817
 45C2 50                                    PUSH %EAX
 45C3 68 FF 00 00 00                        PUSH #255
 45C8 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 45CB 83 C4 0C                              ADD %ESP,#12
 45CE E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 45D1 81 C4 00 01 00 00                     ADD %ESP,#256
 45D7 FF 35 24 01 00 00                     PUSH DWORD PTR [DATA+0124]
 45DD 6A 01                                 PUSH #1
 45DF E8 40 00                              CALL 'WRITE' (EXTERN 64)
 45E2 83 C4 08                              ADD %ESP,#8
 45E5 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
  1960           printstring("App =");         write(app, 1)
 45E8 81 EC 00 01 00 00                     SUB %ESP,#256
 45EE 89 E0                                 MOV %EAX,%ESP
 45F0 50                                    PUSH %EAX
 45F1 B8 3C 03 00 00                        MOV %EAX,COT+#828
 45F6 50                                    PUSH %EAX
 45F7 68 FF 00 00 00                        PUSH #255
 45FC E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 45FF 83 C4 0C                              ADD %ESP,#12
 4602 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 4605 81 C4 00 01 00 00                     ADD %ESP,#256
 460B FF 35 B4 00 00 00                     PUSH DWORD PTR [DATA+00B4]
 4611 6A 01                                 PUSH #1
 4613 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 4616 83 C4 08                              ADD %ESP,#8
  1961           printstring("   Papp =");     write(papp, 1);     newline
 4619 81 EC 00 01 00 00                     SUB %ESP,#256
 461F 89 E0                                 MOV %EAX,%ESP
 4621 50                                    PUSH %EAX
 4622 B8 42 03 00 00                        MOV %EAX,COT+#834
 4627 50                                    PUSH %EAX
 4628 68 FF 00 00 00                        PUSH #255
 462D E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 4630 83 C4 0C                              ADD %ESP,#12
 4633 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 4636 81 C4 00 01 00 00                     ADD %ESP,#256
 463C FF 35 28 01 00 00                     PUSH DWORD PTR [DATA+0128]
 4642 6A 01                                 PUSH #1
 4644 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 4647 83 C4 08                              ADD %ESP,#8
 464A E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
  1962           printstring("Format =");      write(format, 1)
 464D 81 EC 00 01 00 00                     SUB %ESP,#256
 4653 89 E0                                 MOV %EAX,%ESP
 4655 50                                    PUSH %EAX
 4656 B8 4C 03 00 00                        MOV %EAX,COT+#844
 465B 50                                    PUSH %EAX
 465C 68 FF 00 00 00                        PUSH #255
 4661 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 4664 83 C4 0C                              ADD %ESP,#12
 4667 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 466A 81 C4 00 01 00 00                     ADD %ESP,#256
 4670 FF 35 B8 00 00 00                     PUSH DWORD PTR [DATA+00B8]
 4676 6A 01                                 PUSH #1
 4678 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 467B 83 C4 08                              ADD %ESP,#8
  1963           printstring("   Pformat =");  write(pformat, 1);  newline
 467E 81 EC 00 01 00 00                     SUB %ESP,#256
 4684 89 E0                                 MOV %EAX,%ESP
 4686 50                                    PUSH %EAX
 4687 B8 55 03 00 00                        MOV %EAX,COT+#853
 468C 50                                    PUSH %EAX
 468D 68 FF 00 00 00                        PUSH #255
 4692 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 4695 83 C4 0C                              ADD %ESP,#12
 4698 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 469B 81 C4 00 01 00 00                     ADD %ESP,#256
 46A1 FF 35 2C 01 00 00                     PUSH DWORD PTR [DATA+012C]
 46A7 6A 01                                 PUSH #1
 46A9 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 46AC 83 C4 08                              ADD %ESP,#8
 46AF E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
  1964  !IMP80 BUG???           %SIGNAL 13,15
  1965           %STOP
 46B2 B8 AD 07 00 00                        MOV %EAX,#1965
 46B7 50                                    PUSH %EAX
 46B8 31 C0                                 XOR %EAX,%EAX
 46BA 50                                    PUSH %EAX
 46BB 31 C0                                 XOR %EAX,%EAX
 46BD 50                                    PUSH %EAX
 46BE 31 C0                                 XOR %EAX,%EAX
 46C0 50                                    PUSH %EAX
 46C1 E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 46C4 83 C4 10                              ADD %ESP,#16
  1966         %FINISH
 46C7                      L1522  EQU $
  1967  
  1968         quote = 0 %AND readsym %WHILE sym # nl %AND sym # ';'
 46C7                      L1523  EQU $
 46C7 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 46CC 3D 0A 00 00 00                        CMP %EAX,#10
 46D1 74 00                                 JE L1524
 46D3 A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 46D8 3D 3B 00 00 00                        CMP %EAX,#59
 46DD 74 00                                 JE L1524
 46DF C7 05 EC 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00EC],#0
 46E9 E8 00 00                              CALL 'READSYM' (INTERNAL L1171 )
 46EC EB 00                                 JMP L1523
 46EE                      L1524  EQU $
  1969         %IF k&error # 0 %START
 46EE 8B 45 E0                              MOV %EAX,[%EBP-32]
 46F1 25 00 80 00 00                        AND %EAX,#32768
 46F6 3D 00 00 00 00                        CMP %EAX,#0
 46FB 74 00                                 JE L1525
  1970            fault(k&255)
 46FD 8B 45 E0                              MOV %EAX,[%EBP-32]
 4700 25 FF 00 00 00                        AND %EAX,#255
 4705 50                                    PUSH %EAX
 4706 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 4709 83 C4 04                              ADD %ESP,#4
  1971         %FINISH %ELSE %START
 470C EB 00                                 JMP L1526
 470E                      L1525  EQU $
  1972           %IF prot err = nmin %THEN fault(14) %ELSE fault(0)
 470E 8B 45 E4                              MOV %EAX,[%EBP-28]
 4711 3B 05 48 01 00 00                     CMP %EAX,[DATA+0148]
 4717 75 00                                 JNE L1527
 4719 6A 0E                                 PUSH #14
 471B E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 471E 83 C4 04                              ADD %ESP,#4
 4721 EB 00                                 JMP L1528
 4723                      L1527  EQU $
 4723 6A 00                                 PUSH #0
 4725 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 4728 83 C4 04                              ADD %ESP,#4
 472B                      L1528  EQU $
  1973         %FINISH
 472B                      L1526  EQU $
  1974         gg = 0;  ss = 0;  symtype = 0
 472B C7 05 38 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0138],#0
 4735 C7 05 64 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0164],#0
 473F C7 05 E8 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00E8],#0
  1975     %END;                                               !of analyse
 4749 C9                                    LEAVE
 474A C3                                    RET
 474B                      L1134  EQU $
  1976  
  1977     %ROUTINE compile
 474B                      L1041  EQU $
 474B C8 00 00 03                           ENTER 0000,3
  1978  
  1979        %CONSTINTEGER then = 4, else = 8, loop = 16
  1980  
  1981        %SWITCH c(0:actions), litop(1:12)
  1982  
  1983        %CONSTBYTEINTEGERARRAY operator(1:14) = %C
  1984+                          '[',  ']',  'X',  '/', '&',  '!',  '%',  '+',
  1985+                          '-',  '*',  'Q',  'x', '.',  'v'
  1986  
  1987        %CONSTBYTEINTEGERARRAY cc(0 : 7) = '#','=',')','<','(','>', 'k','t'
  1988  
  1989        %CONSTBYTEINTEGERARRAY anyform(0:15) = 1,0,1,1(4),1,0,1,1,0,1,1,1,1
  1990  
  1991        %CONSTSHORTINTEGERARRAY decmap(0:15) = %C
  1992+          1,             2,
  1993+          x'100B',       x'100D',       x'140C',      x'140E',
  1994+          3,             4,
  1995+          x'1007',       x'1008',       x'1009',      x'100A',
  1996+          6,             0,             0,            0
  1997        %OWNBYTEINTEGERARRAY cnest(0:15)
  1998        %INTEGER lmode, clab, dupid
  1999        %INTEGER resln
  2000        %OWNINTEGER last def = 0
  2001        %OWNINTEGER lb, ub
  2002        %INTEGER cp, ord
  2003        %INTEGER next, link, j, k, n, done
  2004        %INTEGER class
  2005        %INTEGER lit2, defs, decs, cident
  2006        %INTEGER pending;  %OWNINTEGERARRAY pstack(1:40)
  2007        %OWNSTRING(8) name = ""
  2008        %OWNINTEGER count = 0
  2009  
  2010        %ROUTINE def lab(%INTEGER l)
 474F EB 00                                 JMP L1529
 4751                      L1530  EQU $
 4751 C8 00 00 04                           ENTER 0000,4
  2011           op(':', l)
 4755 6A 3A                                 PUSH #58
 4757 FF 75 08                              PUSH DWORD PTR [%EBP+8]
 475A E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 475D 83 C4 08                              ADD %ESP,#8
  2012           access = 1
 4760 8B 5D F8                              MOV %EBX,[%EBP-8]
 4763 C7 43 E0 01 00 00 00                  MOV DWORD PTR [%EBX-32],#1
  2013        %END
 476A C9                                    LEAVE
 476B C3                                    RET
 476C                      L1529  EQU $
  2014  
  2015        %ROUTINE get next
 476C                      L1531  EQU $
 476C C8 00 00 04                           ENTER 0000,4
  2016           %RECORD(arfm)%NAME p
  2017  gn:      %IF next = 0 %START;                        !end of phrase
 4770                      L1532  EQU $
 4770 8B 75 F4                              MOV %ESI,[%EBP-12]
 4773 8B 46 D8                              MOV %EAX,[%ESI-40]
 4776 3D 00 00 00 00                        CMP %EAX,#0
 477B 75 00                                 JNE L1533
  2018              class = 0 %AND %RETURN %IF link = 0;     !end of statement
 477D 8B 46 D4                              MOV %EAX,[%ESI-44]
 4780 3D 00 00 00 00                        CMP %EAX,#0
 4785 75 00                                 JNE L1534
 4787 C7 46 C0 00 00 00 00                  MOV DWORD PTR [%ESI-64],#0
 478E C9                                    LEAVE
 478F C3                                    RET
 4790                      L1534  EQU $
  2019              p == ar(link)
 4790 8B 7D F4                              MOV %EDI,[%EBP-12]
 4793 FF 77 D4                              PUSH DWORD PTR [%EDI-44]
 4796 8B 5D FC                              MOV %EBX,[%EBP-4]
 4799 FF 73 E8                              PUSH DWORD PTR [%EBX-24]
 479C 89 5D E8                              MOV [%EBP-24],%EBX
 479F E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 47A2 83 C4 08                              ADD %ESP,#8
 47A5 89 C6                                 MOV %ESI,%EAX
 47A7 8B 7D E8                              MOV %EDI,[%EBP-24]
 47AA 03 77 E4                              ADD %ESI,[%EDI-28]
 47AD 89 75 EC                              MOV [%EBP-20],%ESI
  2020              next = p_link
 47B0 8B 5D F4                              MOV %EBX,[%EBP-12]
 47B3 8B 75 EC                              MOV %ESI,[%EBP-20]
 47B6 0F BF 46 04                           MOVSX %EAX,[%ESI+4]
 47BA 89 43 D8                              MOV [%EBX-40],%EAX
  2021              link = p_sub
 47BD 8B 7D EC                              MOV %EDI,[%EBP-20]
 47C0 0F BF 47 02                           MOVSX %EAX,[%EDI+2]
 47C4 89 43 D4                              MOV [%EBX-44],%EAX
  2022           %FINISH
 47C7                      L1533  EQU $
  2023           %CYCLE
 47C7                      L1535  EQU $
  2024              p == ar(next)
 47C7 8B 5D F4                              MOV %EBX,[%EBP-12]
 47CA FF 73 D8                              PUSH DWORD PTR [%EBX-40]
 47CD 8B 75 FC                              MOV %ESI,[%EBP-4]
 47D0 FF 76 E8                              PUSH DWORD PTR [%ESI-24]
 47D3 89 75 E4                              MOV [%EBP-28],%ESI
 47D6 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 47D9 83 C4 08                              ADD %ESP,#8
 47DC 89 C7                                 MOV %EDI,%EAX
 47DE 8B 5D E4                              MOV %EBX,[%EBP-28]
 47E1 03 7B E4                              ADD %EDI,[%EBX-28]
 47E4 89 7D EC                              MOV [%EBP-20],%EDI
  2025              x = p_sub
 47E7 8B 75 EC                              MOV %ESI,[%EBP-20]
 47EA 0F BF 46 02                           MOVSX %EAX,[%ESI+2]
 47EE 89 05 A0 00 00 00                     MOV [DATA+00A0],%EAX
  2026              class = p_class
 47F4 8B 7D F4                              MOV %EDI,[%EBP-12]
 47F7 8B 5D EC                              MOV %EBX,[%EBP-20]
 47FA 0F BF 03                              MOVSX %EAX,[%EBX]
 47FD 89 47 C0                              MOV [%EDI-64],%EAX
  2027              %EXIT %IF class < actions;               !an atom
 4800 8B 47 C0                              MOV %EAX,[%EDI-64]
 4803 3D B4 00 00 00                        CMP %EAX,#180
 4808 7D 00                                 JGE L1536
 480A EB 00                                 JMP L1537
 480C                      L1536  EQU $
  2028              %IF x = 0 %START;                        !null phrase
 480C A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 4811 3D 00 00 00 00                        CMP %EAX,#0
 4816 75 00                                 JNE L1538
  2029                 next = p_link;  ->gn
 4818 8B 75 F4                              MOV %ESI,[%EBP-12]
 481B 8B 7D EC                              MOV %EDI,[%EBP-20]
 481E 0F BF 47 04                           MOVSX %EAX,[%EDI+4]
 4822 89 46 D8                              MOV [%ESI-40],%EAX
 4825 EB 00                                 JMP L1532
  2030              %FINISH
 4827                      L1538  EQU $
  2031              %IF p_link # 0 %START;                   !follow a phrase
 4827 8B 5D EC                              MOV %EBX,[%EBP-20]
 482A 0F BF 43 04                           MOVSX %EAX,[%EBX+4]
 482E 3D 00 00 00 00                        CMP %EAX,#0
 4833 74 00                                 JE L1539
  2032                 p_sub = link;  link = next
 4835 8B 75 EC                              MOV %ESI,[%EBP-20]
 4838 8B 7D F4                              MOV %EDI,[%EBP-12]
 483B 8B 47 D4                              MOV %EAX,[%EDI-44]
 483E 88 46 02                              MOV [%ESI+2],%AL
 4841 88 66 03                              MOV [%ESI+3],%AH
 4844 8B 47 D8                              MOV %EAX,[%EDI-40]
 4847 89 47 D4                              MOV [%EDI-44],%EAX
  2033              %FINISH
 484A                      L1539  EQU $
  2034              next = x
 484A 8B 5D F4                              MOV %EBX,[%EBP-12]
 484D A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 4852 89 43 D8                              MOV [%EBX-40],%EAX
  2035           %REPEAT
 4855 EB 00                                 JMP L1535
 4857                      L1537  EQU $
  2036           next = p_link
 4857 8B 75 F4                              MOV %ESI,[%EBP-12]
 485A 8B 7D EC                              MOV %EDI,[%EBP-20]
 485D 0F BF 47 04                           MOVSX %EAX,[%EDI+4]
 4861 89 46 D8                              MOV [%ESI-40],%EAX
  2037           %IF diag&2 # 0 %START
 4864 A1 5C 02 00 00                        MOV %EAX,[DATA+025C]
 4869 25 02 00 00 00                        AND %EAX,#2
 486E 3D 00 00 00 00                        CMP %EAX,#0
 4873 74 00                                 JE L1540
  2038              spaces(8-length(name)) %UNLESS name = ""
 4875 B8 40 2E 00 00                        MOV %EAX,DATA+#11840
 487A 50                                    PUSH %EAX
 487B B9 05 00 00 00                        MOV %ECX,COT+#5
 4880 51                                    PUSH %ECX
 4881 89 45 E0                              MOV [%EBP-32],%EAX
 4884 89 4D DC                              MOV [%EBP-36],%ECX
 4887 E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 488A 83 C4 08                              ADD %ESP,#8
 488D 3D 00 00 00 00                        CMP %EAX,#0
 4892 74 00                                 JE L1541
 4894 B8 08 00 00 00                        MOV %EAX,#8
 4899 31 C9                                 XOR %ECX,%ECX
 489B 8A 0D 40 2E 00 00                     MOV %CL,[DATA+2E40]
 48A1 29 C8                                 SUB %EAX,%ECX
 48A3 50                                    PUSH %EAX
 48A4 E8 42 00                              CALL 'SPACES' (EXTERN 66)
 48A7 83 C4 04                              ADD %ESP,#4
 48AA                      L1541  EQU $
  2039              name = text(class)
 48AA 8B 5D F4                              MOV %EBX,[%EBP-12]
 48AD FF 73 C0                              PUSH DWORD PTR [%EBX-64]
 48B0 68 24 00 00 00                        PUSH COT+#36
 48B5 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 48B8 83 C4 08                              ADD %ESP,#8
 48BB 89 C6                                 MOV %ESI,%EAX
 48BD B8 40 2E 00 00                        MOV %EAX,DATA+#11840
 48C2 50                                    PUSH %EAX
 48C3 8D B6 64 02 00 00                     LEA %ESI,[%ESI+DATA+612]
 48C9 56                                    PUSH %ESI
 48CA 6A 08                                 PUSH #8
 48CC E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 48CF 83 C4 0C                              ADD %ESP,#12
  2040              write(x, 2)
 48D2 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 48D8 6A 02                                 PUSH #2
 48DA E8 40 00                              CALL 'WRITE' (EXTERN 64)
 48DD 83 C4 08                              ADD %ESP,#8
  2041              space
 48E0 E8 41 00                              CALL 'SPACE' (EXTERN 65)
  2042              printstring(name)
 48E3 81 EC 00 01 00 00                     SUB %ESP,#256
 48E9 89 E0                                 MOV %EAX,%ESP
 48EB 50                                    PUSH %EAX
 48EC B8 40 2E 00 00                        MOV %EAX,DATA+#11840
 48F1 50                                    PUSH %EAX
 48F2 68 FF 00 00 00                        PUSH #255
 48F7 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 48FA 83 C4 0C                              ADD %ESP,#12
 48FD E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 4900 81 C4 00 01 00 00                     ADD %ESP,#256
  2043              space
 4906 E8 41 00                              CALL 'SPACE' (EXTERN 65)
  2044              count = count-1
 4909 FF 0D 4C 2E 00 00                     DEC DWORD PTR [DATA+2E4C]
  2045              %IF count <= 0 %START
 490F A1 4C 2E 00 00                        MOV %EAX,[DATA+2E4C]
 4914 3D 00 00 00 00                        CMP %EAX,#0
 4919 7F 00                                 JG L1542
  2046                 count = 5
 491B C7 05 4C 2E 00 00 05 00 00 00         MOV DWORD PTR [DATA+2E4C],#5
  2047                 name = ""
 4925 C6 05 40 2E 00 00 00                  MOV BYTE PTR [DATA+2E40],#0
  2048                 newline
 492C E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
  2049              %FINISH
 492F                      L1542  EQU $
  2050           %FINISH
 492F                      L1540  EQU $
  2051        %END
 492F C9                                    LEAVE
 4930 C3                                    RET
 4931                      L1529  EQU $
  2052  
  2053        %ROUTINE set subs(%INTEGER n)
 4931                      L1543  EQU $
 4931 C8 00 00 04                           ENTER 0000,4
  2054  
  2055           !update the app field in n array descriptors
  2056  
  2057           %INTEGER p
  2058           p = tmax
 4935 8B 7D F8                              MOV %EDI,[%EBP-8]
 4938 8B 47 0C                              MOV %EAX,[%EDI+12]
 493B 89 45 EC                              MOV [%EBP-20],%EAX
  2059           %WHILE n > 0 %CYCLE
 493E                      L1544  EQU $
 493E 8B 45 08                              MOV %EAX,[%EBP+8]
 4941 3D 00 00 00 00                        CMP %EAX,#0
 4946 7E 00                                 JLE L1545
  2060  !IMP80 BUG???              %SIGNAL 15,15 %IF p < tbase
  2061              %STOP %IF p < tbase
 4948 8B 45 EC                              MOV %EAX,[%EBP-20]
 494B 8B 5D F8                              MOV %EBX,[%EBP-8]
 494E 3B 43 EC                              CMP %EAX,[%EBX-20]
 4951 7D 00                                 JGE L1546
 4953 B8 0D 08 00 00                        MOV %EAX,#2061
 4958 50                                    PUSH %EAX
 4959 31 C0                                 XOR %EAX,%EAX
 495B 50                                    PUSH %EAX
 495C 31 C0                                 XOR %EAX,%EAX
 495E 50                                    PUSH %EAX
 495F 31 C0                                 XOR %EAX,%EAX
 4961 50                                    PUSH %EAX
 4962 E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 4965 83 C4 10                              ADD %ESP,#16
 4968                      L1546  EQU $
  2062              tag(p)_app = dimension
 4968 FF 75 EC                              PUSH DWORD PTR [%EBP-20]
 496B 8B 75 FC                              MOV %ESI,[%EBP-4]
 496E FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 4974 89 75 E8                              MOV [%EBP-24],%ESI
 4977 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 497A 83 C4 08                              ADD %ESP,#8
 497D 89 C7                                 MOV %EDI,%EAX
 497F 8B 5D E8                              MOV %EBX,[%EBP-24]
 4982 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 4988 A1 AC 01 00 00                        MOV %EAX,[DATA+01AC]
 498D 89 07                                 MOV [%EDI],%EAX
  2063              p = p-1;  n = n-1
 498F FF 4D EC                              DEC DWORD PTR [%EBP-20]
 4992 FF 4D 08                              DEC DWORD PTR [%EBP+8]
  2064           %REPEAT
 4995 EB 00                                 JMP L1544
 4997                      L1545  EQU $
  2065        %END
 4997 C9                                    LEAVE
 4998 C3                                    RET
 4999                      L1529  EQU $
  2066  
  2067        %ROUTINE set bp
 4999                      L1547  EQU $
 4999 C8 00 00 04                           ENTER 0000,4
  2068  
  2069           !define a constant bound pair from the last stacked constants
  2070  
  2071           pending = pending-2
 499D 8B 75 F4                              MOV %ESI,[%EBP-12]
 49A0 83 6E AC 02                           SUB DWORD PTR [%ESI-84],#2
  2072           lb = pstack(pending+1);  ub = pstack(pending+2)
 49A4 8B 46 AC                              MOV %EAX,[%ESI-84]
 49A7 40                                    INC %EAX
 49A8 50                                    PUSH %EAX
 49A9 68 B4 03 00 00                        PUSH COT+#948
 49AE E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 49B1 83 C4 08                              ADD %ESP,#8
 49B4 89 C7                                 MOV %EDI,%EAX
 49B6 8B BF 9C 2D 00 00                     MOV %EDI,[%EDI+DATA+11676]
 49BC 89 3D 98 2D 00 00                     MOV [DATA+2D98],%EDI
 49C2 8B 5D F4                              MOV %EBX,[%EBP-12]
 49C5 8B 43 AC                              MOV %EAX,[%EBX-84]
 49C8 05 02 00 00 00                        ADD %EAX,#2
 49CD 50                                    PUSH %EAX
 49CE 68 B4 03 00 00                        PUSH COT+#948
 49D3 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 49D6 83 C4 08                              ADD %ESP,#8
 49D9 89 C6                                 MOV %ESI,%EAX
 49DB 8B B6 9C 2D 00 00                     MOV %ESI,[%ESI+DATA+11676]
 49E1 89 35 9C 2D 00 00                     MOV [DATA+2D9C],%ESI
  2073           %IF ub-lb+1 < 0 %START
 49E7 A1 9C 2D 00 00                        MOV %EAX,[DATA+2D9C]
 49EC 2B 05 98 2D 00 00                     SUB %EAX,[DATA+2D98]
 49F2 40                                    INC %EAX
 49F3 3D 00 00 00 00                        CMP %EAX,#0
 49F8 7D 00                                 JGE L1548
  2074              pos1 = 0;  next = link;  fault(11)
 49FA C7 05 A0 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01A0],#0
 4A04 8B 7D F4                              MOV %EDI,[%EBP-12]
 4A07 8B 47 D4                              MOV %EAX,[%EDI-44]
 4A0A 89 47 D8                              MOV [%EDI-40],%EAX
 4A0D 6A 0B                                 PUSH #11
 4A0F E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 4A12 83 C4 04                              ADD %ESP,#4
  2075              ub = lb
 4A15 A1 98 2D 00 00                        MOV %EAX,[DATA+2D98]
 4A1A 89 05 9C 2D 00 00                     MOV [DATA+2D9C],%EAX
  2076           %FINISH
 4A20                      L1548  EQU $
  2077           set const(lb);  set const(ub)
 4A20 FF 35 98 2D 00 00                     PUSH DWORD PTR [DATA+2D98]
 4A26 E8 00 00                              CALL 'SETCONST' (INTERNAL L1036 )
 4A29 83 C4 04                              ADD %ESP,#4
 4A2C FF 35 9C 2D 00 00                     PUSH DWORD PTR [DATA+2D9C]
 4A32 E8 00 00                              CALL 'SETCONST' (INTERNAL L1036 )
 4A35 83 C4 04                              ADD %ESP,#4
  2078           bp=bp+1 %AND buff(bp)='b' %UNLESS class = 146
 4A38 8B 5D F4                              MOV %EBX,[%EBP-12]
 4A3B 8B 43 C0                              MOV %EAX,[%EBX-64]
 4A3E 3D 92 00 00 00                        CMP %EAX,#146
 4A43 74 00                                 JE L1549
 4A45 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 4A4B FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 4A51 8B 75 FC                              MOV %ESI,[%EBP-4]
 4A54 FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 4A5A 89 75 EC                              MOV [%EBP-20],%ESI
 4A5D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4A60 83 C4 08                              ADD %ESP,#8
 4A63 89 C7                                 MOV %EDI,%EAX
 4A65 8B 5D EC                              MOV %EBX,[%EBP-20]
 4A68 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 4A6E C6 07 62                              MOV BYTE PTR [%EDI],#98
 4A71                      L1549  EQU $
  2079        %END
 4A71 C9                                    LEAVE
 4A72 C3                                    RET
 4A73                      L1529  EQU $
  2080  
  2081        %ROUTINE compile end(%INTEGER type)
 4A73                      L1550  EQU $
 4A73 C8 00 00 04                           ENTER 0000,4
  2082  
  2083           ! type = 0:eof, 1:eop, 2:end
  2084  
  2085           %IF access # 0 %START
 4A77 8B 75 F8                              MOV %ESI,[%EBP-8]
 4A7A 8B 46 E0                              MOV %EAX,[%ESI-32]
 4A7D 3D 00 00 00 00                        CMP %EAX,#0
 4A82 74 00                                 JE L1551
  2086              open = 0
 4A84 C7 46 F4 00 00 00 00                  MOV DWORD PTR [%ESI-12],#0
  2087              fault(19) %IF block form > proc;           !can reach end
 4A8B 8B 46 CC                              MOV %EAX,[%ESI-52]
 4A8E 3D 07 00 00 00                        CMP %EAX,#7
 4A93 7E 00                                 JLE L1552
 4A95 6A 13                                 PUSH #19
 4A97 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 4A9A 83 C4 04                              ADD %ESP,#4
 4A9D                      L1552  EQU $
  2088           %FINISH
 4A9D                      L1551  EQU $
  2089  
  2090           %WHILE dict(dmin) >= 0 %CYCLE;                !finishes & repeats
 4A9D                      L1553  EQU $
 4A9D 8B 7D F8                              MOV %EDI,[%EBP-8]
 4AA0 FF 77 10                              PUSH DWORD PTR [%EDI+16]
 4AA3 8B 5D FC                              MOV %EBX,[%EBP-4]
 4AA6 FF B3 40 FF FF FF                     PUSH DWORD PTR [%EBX-192]
 4AAC 89 5D EC                              MOV [%EBP-20],%EBX
 4AAF E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4AB2 83 C4 08                              ADD %ESP,#8
 4AB5 89 C6                                 MOV %ESI,%EAX
 4AB7 8B 7D EC                              MOV %EDI,[%EBP-20]
 4ABA 03 B7 3C FF FF FF                     ADD %ESI,[%EDI-196]
 4AC0 0F BF 06                              MOVSX %EAX,[%ESI]
 4AC3 3D 00 00 00 00                        CMP %EAX,#0
 4AC8 7C 00                                 JL L1554
  2091              fault(17+dict(dmin)&1)
 4ACA 8B 5D F8                              MOV %EBX,[%EBP-8]
 4ACD FF 73 10                              PUSH DWORD PTR [%EBX+16]
 4AD0 8B 75 FC                              MOV %ESI,[%EBP-4]
 4AD3 FF B6 40 FF FF FF                     PUSH DWORD PTR [%ESI-192]
 4AD9 89 75 E8                              MOV [%EBP-24],%ESI
 4ADC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4ADF 83 C4 08                              ADD %ESP,#8
 4AE2 89 C7                                 MOV %EDI,%EAX
 4AE4 8B 5D E8                              MOV %EBX,[%EBP-24]
 4AE7 03 BB 3C FF FF FF                     ADD %EDI,[%EBX-196]
 4AED 0F BF 07                              MOVSX %EAX,[%EDI]
 4AF0 25 01 00 00 00                        AND %EAX,#1
 4AF5 05 11 00 00 00                        ADD %EAX,#17
 4AFA 50                                    PUSH %EAX
 4AFB E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 4AFE 83 C4 04                              ADD %ESP,#4
  2092              dmin = dmin+1
 4B01 8B 75 F8                              MOV %ESI,[%EBP-8]
 4B04 FF 46 10                              INC DWORD PTR [%ESI+16]
  2093           %REPEAT
 4B07 EB 00                                 JMP L1553
 4B09                      L1554  EQU $
  2094           {delete names(0)}
  2095           bp=bp+1 %AND buff(bp)=';'
 4B09 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 4B0F FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 4B15 8B 7D FC                              MOV %EDI,[%EBP-4]
 4B18 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 4B1E 89 7D E4                              MOV [%EBP-28],%EDI
 4B21 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4B24 83 C4 08                              ADD %ESP,#8
 4B27 89 C3                                 MOV %EBX,%EAX
 4B29 8B 75 E4                              MOV %ESI,[%EBP-28]
 4B2C 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 4B32 C6 03 3B                              MOV BYTE PTR [%EBX],#59
  2096           bp=bp+1 %AND buff(bp)=';' %IF type = 1;       !endofprogram
 4B35 8B 45 08                              MOV %EAX,[%EBP+8]
 4B38 3D 01 00 00 00                        CMP %EAX,#1
 4B3D 75 00                                 JNE L1555
 4B3F FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 4B45 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 4B4B 8B 7D FC                              MOV %EDI,[%EBP-4]
 4B4E FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 4B54 89 7D E0                              MOV [%EBP-32],%EDI
 4B57 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4B5A 83 C4 08                              ADD %ESP,#8
 4B5D 89 C3                                 MOV %EBX,%EAX
 4B5F 8B 75 E0                              MOV %ESI,[%EBP-32]
 4B62 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 4B68 C6 03 3B                              MOV BYTE PTR [%EBX],#59
 4B6B                      L1555  EQU $
  2097  
  2098           bflags = bflags!open;                         !show if it returns
 4B6B 8B 7D F8                              MOV %EDI,[%EBP-8]
 4B6E 8B 7F D8                              MOV %EDI,[%EDI-40]
 4B71 8B 5D F8                              MOV %EBX,[%EBP-8]
 4B74 8B 43 F4                              MOV %EAX,[%EBX-12]
 4B77 09 07                                 OR [%EDI],%EAX
  2099  
  2100           def lab(0) %IF block tag # 0 %AND level # 1;  !for jump around
 4B79 8B 43 14                              MOV %EAX,[%EBX+20]
 4B7C 3D 00 00 00 00                        CMP %EAX,#0
 4B81 74 00                                 JE L1556
 4B83 8B 43 18                              MOV %EAX,[%EBX+24]
 4B86 3D 01 00 00 00                        CMP %EAX,#1
 4B8B 74 00                                 JE L1556
 4B8D 6A 00                                 PUSH #0
 4B8F E8 00 00                              CALL 'DEFLAB' (INTERNAL L1530 )
 4B92 83 C4 04                              ADD %ESP,#4
 4B95                      L1556  EQU $
  2101           %IF type # 2 %START;                          !eop, eof
 4B95 8B 45 08                              MOV %EAX,[%EBP+8]
 4B98 3D 02 00 00 00                        CMP %EAX,#2
 4B9D 74 00                                 JE L1557
  2102              fault(16) %IF level # type;                !end missing
 4B9F 8B 75 F8                              MOV %ESI,[%EBP-8]
 4BA2 8B 46 18                              MOV %EAX,[%ESI+24]
 4BA5 3B 45 08                              CMP %EAX,[%EBP+8]
 4BA8 74 00                                 JE L1558
 4BAA 6A 10                                 PUSH #16
 4BAC E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 4BAF 83 C4 04                              ADD %ESP,#4
 4BB2                      L1558  EQU $
  2103           %FINISH %ELSE %START
 4BB2 EB 00                                 JMP L1559
 4BB4                      L1557  EQU $
  2104              %IF level = 0 %START
 4BB4 8B 7D F8                              MOV %EDI,[%EBP-8]
 4BB7 8B 47 18                              MOV %EAX,[%EDI+24]
 4BBA 3D 00 00 00 00                        CMP %EAX,#0
 4BBF 75 00                                 JNE L1560
  2105                 fault(15);                              !spurious end
 4BC1 6A 0F                                 PUSH #15
 4BC3 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 4BC6 83 C4 04                              ADD %ESP,#4
  2106              %FINISH
 4BC9                      L1560  EQU $
  2107           %FINISH
 4BC9                      L1559  EQU $
  2108  
  2109           end mark = 11;               !******Mouses specific******
 4BC9 C7 05 F0 00 00 00 0B 00 00 00         MOV DWORD PTR [DATA+00F0],#11
  2110        %END
 4BD3 C9                                    LEAVE
 4BD4 C3                                    RET
 4BD5                      L1529  EQU $
  2111  
  2112        %ROUTINE def(%INTEGER p)
 4BD5                      L1561  EQU $
 4BD5 C8 00 00 04                           ENTER 0000,4
  2113  
  2114           !dump a descriptor
  2115  
  2116           %INTEGER t, f, type
  2117           %RECORD(tagfm)%NAME v
  2118           flush buffer %if bp # 0
 4BD9 A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 4BDE 3D 00 00 00 00                        CMP %EAX,#0
 4BE3 74 00                                 JE L1562
 4BE5 E8 00 00                              CALL 'FLUSHBUFFER' (INTERNAL L1002 )
 4BE8                      L1562  EQU $
  2119           defs = defs+1
 4BE8 8B 5D F4                              MOV %EBX,[%EBP-12]
 4BEB FF 43 B8                              INC DWORD PTR [%EBX-72]
  2120           v == tag(p)
 4BEE FF 75 08                              PUSH DWORD PTR [%EBP+8]
 4BF1 8B 75 FC                              MOV %ESI,[%EBP-4]
 4BF4 FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 4BFA 89 75 DC                              MOV [%EBP-36],%ESI
 4BFD E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4C00 83 C4 08                              ADD %ESP,#8
 4C03 89 C7                                 MOV %EDI,%EAX
 4C05 8B 5D DC                              MOV %EBX,[%EBP-36]
 4C08 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 4C0E 89 7D E0                              MOV [%EBP-32],%EDI
  2121           t = 0
 4C11 C7 45 EC 00 00 00 00                  MOV DWORD PTR [%EBP-20],#0
  2122           %UNLESS v_index < 0 %START;                   !no index for subnames
 4C18 8B 75 E0                              MOV %ESI,[%EBP-32]
 4C1B 0F BF 46 0A                           MOVSX %EAX,[%ESI+10]
 4C1F 3D 00 00 00 00                        CMP %EAX,#0
 4C24 7C 00                                 JL L1563
  2123              id = id+1 %AND v_index = id %IF v_index = 0
 4C26 8B 7D E0                              MOV %EDI,[%EBP-32]
 4C29 0F BF 47 0A                           MOVSX %EAX,[%EDI+10]
 4C2D 3D 00 00 00 00                        CMP %EAX,#0
 4C32 75 00                                 JNE L1564
 4C34 8B 5D F8                              MOV %EBX,[%EBP-8]
 4C37 FF 43 08                              INC DWORD PTR [%EBX+8]
 4C3A 8B 75 E0                              MOV %ESI,[%EBP-32]
 4C3D 8B 43 08                              MOV %EAX,[%EBX+8]
 4C40 88 46 0A                              MOV [%ESI+10],%AL
 4C43 88 66 0B                              MOV [%ESI+11],%AH
 4C46                      L1564  EQU $
  2124              last def = v_index
 4C46 8B 7D E0                              MOV %EDI,[%EBP-32]
 4C49 0F BF 47 0A                           MOVSX %EAX,[%EDI+10]
 4C4D 89 05 94 2D 00 00                     MOV [DATA+2D94],%EAX
  2125              t = last def
 4C53 A1 94 2D 00 00                        MOV %EAX,[DATA+2D94]
 4C58 89 45 EC                              MOV [%EBP-20],%EAX
  2126           %FINISH
 4C5B                      L1563  EQU $
  2127           op('$', t)
 4C5B 6A 24                                 PUSH #36
 4C5D FF 75 EC                              PUSH DWORD PTR [%EBP-20]
 4C60 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 4C63 83 C4 08                              ADD %ESP,#8
  2128           print ident(p, 1);                            !output the name
 4C66 FF 75 08                              PUSH DWORD PTR [%EBP+8]
 4C69 6A 01                                 PUSH #1
 4C6B E8 00 00                              CALL 'PRINTIDENT' (INTERNAL L1006 )
 4C6E 83 C4 08                              ADD %ESP,#8
  2129           t = v_flags
 4C71 8B 5D E0                              MOV %EBX,[%EBP-32]
 4C74 0F BF 43 08                           MOVSX %EAX,[%EBX+8]
 4C78 89 45 EC                              MOV [%EBP-20],%EAX
  2130           type = t
 4C7B 8B 45 EC                              MOV %EAX,[%EBP-20]
 4C7E 89 45 E4                              MOV [%EBP-28],%EAX
  2131           type = type&(\(7<<4)) %IF type&(7<<4) >= 6<<4;!routine & pred
 4C81 8B 45 E4                              MOV %EAX,[%EBP-28]
 4C84 25 70 00 00 00                        AND %EAX,#112
 4C89 3D 60 00 00 00                        CMP %EAX,#96
 4C8E 7C 00                                 JL L1565
 4C90 81 65 E4 8F FF FF FF                  AND DWORD PTR [%EBP-28],#-113
 4C97                      L1565  EQU $
  2132           op(',', type&b'1111111');             !type & form
 4C97 6A 2C                                 PUSH #44
 4C99 8B 45 E4                              MOV %EAX,[%EBP-28]
 4C9C 25 7F 00 00 00                        AND %EAX,#127
 4CA1 50                                    PUSH %EAX
 4CA2 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 4CA5 83 C4 08                              ADD %ESP,#8
  2133           f = v_format
 4CA8 8B 75 E0                              MOV %ESI,[%EBP-32]
 4CAB 8B 46 04                              MOV %EAX,[%ESI+4]
 4CAE 89 45 E8                              MOV [%EBP-24],%EAX
  2134           f = tag(f)_index %IF t&x'70' = record<<4
 4CB1 8B 45 EC                              MOV %EAX,[%EBP-20]
 4CB4 25 70 00 00 00                        AND %EAX,#112
 4CB9 3D 40 00 00 00                        CMP %EAX,#64
 4CBE 75 00                                 JNE L1566
 4CC0 FF 75 E8                              PUSH DWORD PTR [%EBP-24]
 4CC3 8B 7D FC                              MOV %EDI,[%EBP-4]
 4CC6 FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 4CCC 89 7D D8                              MOV [%EBP-40],%EDI
 4CCF E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4CD2 83 C4 08                              ADD %ESP,#8
 4CD5 89 C3                                 MOV %EBX,%EAX
 4CD7 8B 75 D8                              MOV %ESI,[%EBP-40]
 4CDA 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 4CE0 0F BF 5B 0A                           MOVSX %EBX,[%EBX+10]
 4CE4 89 5D E8                              MOV [%EBP-24],%EBX
 4CE7                      L1566  EQU $
  2135           f = v_index %IF f < 0
 4CE7 8B 45 E8                              MOV %EAX,[%EBP-24]
 4CEA 3D 00 00 00 00                        CMP %EAX,#0
 4CEF 7D 00                                 JGE L1567
 4CF1 8B 7D E0                              MOV %EDI,[%EBP-32]
 4CF4 0F BF 47 0A                           MOVSX %EAX,[%EDI+10]
 4CF8 89 45 E8                              MOV [%EBP-24],%EAX
 4CFB                      L1567  EQU $
  2136           op(',', f);               !format
 4CFB 6A 2C                                 PUSH #44
 4CFD FF 75 E8                              PUSH DWORD PTR [%EBP-24]
 4D00 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 4D03 83 C4 08                              ADD %ESP,#8
  2137           f = otype+t>>4&b'1111000'
 4D06 8B 45 EC                              MOV %EAX,[%EBP-20]
 4D09 C1 E8 04                              SHR %EAX,#4
 4D0C 25 78 00 00 00                        AND %EAX,#120
 4D11 03 05 14 01 00 00                     ADD %EAX,[DATA+0114]
 4D17 89 45 E8                              MOV [%EBP-24],%EAX
  2138           f = f!8 %IF class = 125;              !add spec from %DUP
 4D1A 8B 5D F4                              MOV %EBX,[%EBP-12]
 4D1D 8B 43 C0                              MOV %EAX,[%EBX-64]
 4D20 3D 7D 00 00 00                        CMP %EAX,#125
 4D25 75 00                                 JNE L1568
 4D27 81 4D E8 08 00 00 00                  OR DWORD PTR [%EBP-24],#8
 4D2E                      L1568  EQU $
  2139           dim = v_app;                          !dimension
 4D2E 8B 75 E0                              MOV %ESI,[%EBP-32]
 4D31 8B 06                                 MOV %EAX,[%ESI]
 4D33 89 05 00 01 00 00                     MOV [DATA+0100],%EAX
  2140           dim = 0 %unless 0 < dim <= dim limit
 4D39 A1 00 01 00 00                        MOV %EAX,[DATA+0100]
 4D3E 3D 00 00 00 00                        CMP %EAX,#0
 4D43 7E 00                                 JLE L1569
 4D45 3D 06 00 00 00                        CMP %EAX,#6
 4D4A 7E 00                                 JLE L1570
 4D4C                      L1569  EQU $
 4D4C C7 05 00 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0100],#0
 4D56                      L1570  EQU $
  2141           op(',', f+dim<<8);                    !otype & spec & prot
 4D56 6A 2C                                 PUSH #44
 4D58 A1 00 01 00 00                        MOV %EAX,[DATA+0100]
 4D5D C1 E0 08                              SHL %EAX,#8
 4D60 03 45 E8                              ADD %EAX,[%EBP-24]
 4D63 50                                    PUSH %EAX
 4D64 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 4D67 83 C4 08                              ADD %ESP,#8
  2142           defs = 0 %IF t&parameters = 0
 4D6A 8B 45 EC                              MOV %EAX,[%EBP-20]
 4D6D 25 00 10 00 00                        AND %EAX,#4096
 4D72 3D 00 00 00 00                        CMP %EAX,#0
 4D77 75 00                                 JNE L1571
 4D79 8B 7D F4                              MOV %EDI,[%EBP-12]
 4D7C C7 47 B8 00 00 00 00                  MOV DWORD PTR [%EDI-72],#0
 4D83                      L1571  EQU $
  2143           f = t&15
 4D83 8B 45 EC                              MOV %EAX,[%EBP-20]
 4D86 25 0F 00 00 00                        AND %EAX,#15
 4D8B 89 45 E8                              MOV [%EBP-24],%EAX
  2144           %IF v_flags&spec # 0 %START
 4D8E 8B 5D E0                              MOV %EBX,[%EBP-32]
 4D91 0F BF 43 08                           MOVSX %EAX,[%EBX+8]
 4D95 25 80 00 00 00                        AND %EAX,#128
 4D9A 3D 00 00 00 00                        CMP %EAX,#0
 4D9F 74 00                                 JE L1572
  2145              v_flags = v_flags&(\spec) %UNLESS 3 <= f <= 10
 4DA1 8B 45 E8                              MOV %EAX,[%EBP-24]
 4DA4 3D 03 00 00 00                        CMP %EAX,#3
 4DA9 7C 00                                 JL L1573
 4DAB 3D 0A 00 00 00                        CMP %EAX,#10
 4DB0 7E 00                                 JLE L1574
 4DB2                      L1573  EQU $
 4DB2 8B 75 E0                              MOV %ESI,[%EBP-32]
 4DB5 80 66 08 7F                           AND BYTE PTR [%ESI+8],#127
 4DB9 80 66 09 FF                           AND BYTE PTR [%ESI+9],#255
 4DBD                      L1574  EQU $
  2146              ocount = -1;                       !external specs have no constants
 4DBD C7 05 84 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+0184],#-1
  2147           %FINISH
 4DC7                      L1572  EQU $
  2148           dimension = 0
 4DC7 C7 05 AC 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01AC],#0
  2149           %if otype = 2 %and (f=2 %or f=12 %or f=14) %start
 4DD1 A1 14 01 00 00                        MOV %EAX,[DATA+0114]
 4DD6 3D 02 00 00 00                        CMP %EAX,#2
 4DDB 75 00                                 JNE L1575
 4DDD 8B 45 E8                              MOV %EAX,[%EBP-24]
 4DE0 3D 02 00 00 00                        CMP %EAX,#2
 4DE5 74 00                                 JE L1576
 4DE7 8B 45 E8                              MOV %EAX,[%EBP-24]
 4DEA 3D 0C 00 00 00                        CMP %EAX,#12
 4DEF 74 00                                 JE L1576
 4DF1 8B 45 E8                              MOV %EAX,[%EBP-24]
 4DF4 3D 0E 00 00 00                        CMP %EAX,#14
 4DF9 75 00                                 JNE L1575
 4DFB                      L1576  EQU $
  2150              v_flags = v_flags-1;               !convert to simple
 4DFB 8B 7D E0                              MOV %EDI,[%EBP-32]
 4DFE FF 4F 08                              DEC DWORD PTR [%EDI+8]
  2151           %finish
 4E01                      L1575  EQU $
  2152        %END
 4E01 C9                                    LEAVE
 4E02 C3                                    RET
 4E03                      L1529  EQU $
  2153  
  2154        %ROUTINE def s lab(%INTEGER n)
 4E03                      L1577  EQU $
 4E03 C8 00 00 04                           ENTER 0000,4
  2155  
  2156           !define a switch label, x defines the switch tag
  2157  
  2158           %INTEGER p, l, b, w, bit
  2159           p = tag(x)_format;                               !pointer to table
 4E07 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 4E0D 8B 5D FC                              MOV %EBX,[%EBP-4]
 4E10 FF B3 58 FF FF FF                     PUSH DWORD PTR [%EBX-168]
 4E16 89 5D D8                              MOV [%EBP-40],%EBX
 4E19 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4E1C 83 C4 08                              ADD %ESP,#8
 4E1F 89 C6                                 MOV %ESI,%EAX
 4E21 8B 7D D8                              MOV %EDI,[%EBP-40]
 4E24 03 B7 54 FF FF FF                     ADD %ESI,[%EDI-172]
 4E2A 8B 76 04                              MOV %ESI,[%ESI+4]
 4E2D 89 75 EC                              MOV [%EBP-20],%ESI
  2160           l = dict(p);                                     !lower bound
 4E30 FF 75 EC                              PUSH DWORD PTR [%EBP-20]
 4E33 8B 5D FC                              MOV %EBX,[%EBP-4]
 4E36 FF B3 40 FF FF FF                     PUSH DWORD PTR [%EBX-192]
 4E3C 89 5D D4                              MOV [%EBP-44],%EBX
 4E3F E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4E42 83 C4 08                              ADD %ESP,#8
 4E45 89 C6                                 MOV %ESI,%EAX
 4E47 8B 7D D4                              MOV %EDI,[%EBP-44]
 4E4A 03 B7 3C FF FF FF                     ADD %ESI,[%EDI-196]
 4E50 0F BF 06                              MOVSX %EAX,[%ESI]
 4E53 89 45 E8                              MOV [%EBP-24],%EAX
  2161           %IF l <= n <= dict(p+1) %START
 4E56 8B 45 08                              MOV %EAX,[%EBP+8]
 4E59 3B 45 E8                              CMP %EAX,[%EBP-24]
 4E5C 7C 00                                 JL L1578
 4E5E 8B 4D EC                              MOV %ECX,[%EBP-20]
 4E61 41                                    INC %ECX
 4E62 51                                    PUSH %ECX
 4E63 8B 5D FC                              MOV %EBX,[%EBP-4]
 4E66 FF B3 40 FF FF FF                     PUSH DWORD PTR [%EBX-192]
 4E6C 89 45 D0                              MOV [%EBP-48],%EAX
 4E6F 89 5D CC                              MOV [%EBP-52],%EBX
 4E72 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4E75 83 C4 08                              ADD %ESP,#8
 4E78 89 C6                                 MOV %ESI,%EAX
 4E7A 8B 7D CC                              MOV %EDI,[%EBP-52]
 4E7D 03 B7 3C FF FF FF                     ADD %ESI,[%EDI-196]
 4E83 8B 45 D0                              MOV %EAX,[%EBP-48]
 4E86 3B 06                                 CMP %EAX,[%ESI]
 4E88 7F 00                                 JG L1578
  2162              b = n-l
 4E8A 8B 45 08                              MOV %EAX,[%EBP+8]
 4E8D 2B 45 E8                              SUB %EAX,[%EBP-24]
 4E90 89 45 E4                              MOV [%EBP-28],%EAX
  2163              w = b>>4+p
 4E93 8B 45 E4                              MOV %EAX,[%EBP-28]
 4E96 C1 E8 04                              SHR %EAX,#4
 4E99 03 45 EC                              ADD %EAX,[%EBP-20]
 4E9C 89 45 E0                              MOV [%EBP-32],%EAX
  2164              bit = 1<<(b&15)
 4E9F 8B 45 E4                              MOV %EAX,[%EBP-28]
 4EA2 25 0F 00 00 00                        AND %EAX,#15
 4EA7 89 C1                                 MOV %ECX,%EAX
 4EA9 B8 01 00 00 00                        MOV %EAX,#1
 4EAE D3 E0                                 SHL %EAX,%ECX
 4EB0 89 45 DC                              MOV [%EBP-36],%EAX
  2165              %IF dict(w+2)&bit # 0 %START;                 !already set
 4EB3 8B 45 E0                              MOV %EAX,[%EBP-32]
 4EB6 05 02 00 00 00                        ADD %EAX,#2
 4EBB 50                                    PUSH %EAX
 4EBC 8B 5D FC                              MOV %EBX,[%EBP-4]
 4EBF FF B3 40 FF FF FF                     PUSH DWORD PTR [%EBX-192]
 4EC5 89 5D C8                              MOV [%EBP-56],%EBX
 4EC8 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4ECB 83 C4 08                              ADD %ESP,#8
 4ECE 89 C6                                 MOV %ESI,%EAX
 4ED0 8B 7D C8                              MOV %EDI,[%EBP-56]
 4ED3 03 B7 3C FF FF FF                     ADD %ESI,[%EDI-196]
 4ED9 0F BF 06                              MOVSX %EAX,[%ESI]
 4EDC 23 45 DC                              AND %EAX,[%EBP-36]
 4EDF 3D 00 00 00 00                        CMP %EAX,#0
 4EE4 74 00                                 JE L1579
  2166                 fault(4) %IF pending # 0
 4EE6 8B 5D F4                              MOV %EBX,[%EBP-12]
 4EE9 8B 43 AC                              MOV %EAX,[%EBX-84]
 4EEC 3D 00 00 00 00                        CMP %EAX,#0
 4EF1 74 00                                 JE L1580
 4EF3 6A 04                                 PUSH #4
 4EF5 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 4EF8 83 C4 04                              ADD %ESP,#4
 4EFB                      L1580  EQU $
  2167                 %RETURN
 4EFB C9                                    LEAVE
 4EFC C3                                    RET
  2168              %FINISH
 4EFD                      L1579  EQU $
  2169              dict(w+2) <- dict(w+2)!bit %IF pending # 0
 4EFD 8B 75 F4                              MOV %ESI,[%EBP-12]
 4F00 8B 46 AC                              MOV %EAX,[%ESI-84]
 4F03 3D 00 00 00 00                        CMP %EAX,#0
 4F08 74 00                                 JE L1581
 4F0A 8B 45 E0                              MOV %EAX,[%EBP-32]
 4F0D 05 02 00 00 00                        ADD %EAX,#2
 4F12 50                                    PUSH %EAX
 4F13 8B 7D FC                              MOV %EDI,[%EBP-4]
 4F16 FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 4F1C 89 7D C4                              MOV [%EBP-60],%EDI
 4F1F E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4F22 83 C4 08                              ADD %ESP,#8
 4F25 89 C3                                 MOV %EBX,%EAX
 4F27 8B 75 C4                              MOV %ESI,[%EBP-60]
 4F2A 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 4F30 8B 45 E0                              MOV %EAX,[%EBP-32]
 4F33 05 02 00 00 00                        ADD %EAX,#2
 4F38 50                                    PUSH %EAX
 4F39 8B 7D FC                              MOV %EDI,[%EBP-4]
 4F3C FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 4F42 89 5D C0                              MOV [%EBP-64],%EBX
 4F45 89 7D BC                              MOV [%EBP-68],%EDI
 4F48 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4F4B 83 C4 08                              ADD %ESP,#8
 4F4E 89 C3                                 MOV %EBX,%EAX
 4F50 8B 75 BC                              MOV %ESI,[%EBP-68]
 4F53 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 4F59 0F BF 1B                              MOVSX %EBX,[%EBX]
 4F5C 0B 5D DC                              OR %EBX,[%EBP-36]
 4F5F 8B 7D C0                              MOV %EDI,[%EBP-64]
 4F62 88 1F                                 MOV [%EDI],%BL
 4F64 88 7F 01                              MOV [%EDI+1],%BH
 4F67 80 27 FF                              AND BYTE PTR [%EDI],#255
 4F6A 80 67 01 FF                           AND BYTE PTR [%EDI+1],#255
 4F6E                      L1581  EQU $
  2170              set const(n)
 4F6E FF 75 08                              PUSH DWORD PTR [%EBP+8]
 4F71 E8 00 00                              CALL 'SETCONST' (INTERNAL L1036 )
 4F74 83 C4 04                              ADD %ESP,#4
  2171              op('_', tag(x)_index)   
 4F77 6A 5F                                 PUSH #95
 4F79 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 4F7F 8B 5D FC                              MOV %EBX,[%EBP-4]
 4F82 FF B3 58 FF FF FF                     PUSH DWORD PTR [%EBX-168]
 4F88 89 5D B8                              MOV [%EBP-72],%EBX
 4F8B E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4F8E 83 C4 08                              ADD %ESP,#8
 4F91 89 C6                                 MOV %ESI,%EAX
 4F93 8B 7D B8                              MOV %EDI,[%EBP-72]
 4F96 03 B7 54 FF FF FF                     ADD %ESI,[%EDI-172]
 4F9C 0F BF 46 0A                           MOVSX %EAX,[%ESI+10]
 4FA0 50                                    PUSH %EAX
 4FA1 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 4FA4 83 C4 08                              ADD %ESP,#8
  2172           %FINISH %ELSE %START
 4FA7 EB 00                                 JMP L1582
 4FA9                      L1578  EQU $
  2173              fault(12)
 4FA9 6A 0C                                 PUSH #12
 4FAB E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 4FAE 83 C4 04                              ADD %ESP,#4
  2174           %FINISH
 4FB1                      L1582  EQU $
  2175           access = 1
 4FB1 8B 5D F8                              MOV %EBX,[%EBP-8]
 4FB4 C7 43 E0 01 00 00 00                  MOV DWORD PTR [%EBX-32],#1
  2176        %END
 4FBB C9                                    LEAVE
 4FBC C3                                    RET
 4FBD                      L1529  EQU $
  2177  
  2178        %ROUTINE call
 4FBD                      L1583  EQU $
 4FBD C8 00 00 04                           ENTER 0000,4
  2179           %RECORD(tagfm)%NAME T
  2180           t == tag(x)
 4FC1 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 4FC7 8B 75 FC                              MOV %ESI,[%EBP-4]
 4FCA FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 4FD0 89 75 E8                              MOV [%EBP-24],%ESI
 4FD3 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 4FD6 83 C4 08                              ADD %ESP,#8
 4FD9 89 C7                                 MOV %EDI,%EAX
 4FDB 8B 5D E8                              MOV %EBX,[%EBP-24]
 4FDE 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 4FE4 89 7D EC                              MOV [%EBP-20],%EDI
  2181           op('@', t_index)
 4FE7 6A 40                                 PUSH #64
 4FE9 8B 75 EC                              MOV %ESI,[%EBP-20]
 4FEC 0F BF 46 0A                           MOVSX %EAX,[%ESI+10]
 4FF0 50                                    PUSH %EAX
 4FF1 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 4FF4 83 C4 08                              ADD %ESP,#8
  2182           access = 0 %IF t_flags&closed # 0;                !never comes back
 4FF7 8B 7D EC                              MOV %EDI,[%EBP-20]
 4FFA 0F BF 47 08                           MOVSX %EAX,[%EDI+8]
 4FFE 25 00 40 00 00                        AND %EAX,#16384
 5003 3D 00 00 00 00                        CMP %EAX,#0
 5008 74 00                                 JE L1584
 500A 8B 5D F8                              MOV %EBX,[%EBP-8]
 500D C7 43 E0 00 00 00 00                  MOV DWORD PTR [%EBX-32],#0
 5014                      L1584  EQU $
  2183           bp=bp+1 %AND buff(bp)='E' %IF t_app = 0;          !no parameters
 5014 8B 75 EC                              MOV %ESI,[%EBP-20]
 5017 8B 06                                 MOV %EAX,[%ESI]
 5019 3D 00 00 00 00                        CMP %EAX,#0
 501E 75 00                                 JNE L1585
 5020 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 5026 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 502C 8B 7D FC                              MOV %EDI,[%EBP-4]
 502F FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 5035 89 7D E4                              MOV [%EBP-28],%EDI
 5038 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 503B 83 C4 08                              ADD %ESP,#8
 503E 89 C3                                 MOV %EBX,%EAX
 5040 8B 75 E4                              MOV %ESI,[%EBP-28]
 5043 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 5049 C6 03 45                              MOV BYTE PTR [%EBX],#69
 504C                      L1585  EQU $
  2184        %END
 504C C9                                    LEAVE
 504D C3                                    RET
 504E                      L1529  EQU $
  2185  
  2186        %ROUTINE pop def
 504E                      L1586  EQU $
 504E C8 00 00 04                           ENTER 0000,4
  2187           set const(pstack(pending));  pending = pending-1
 5052 8B 7D F4                              MOV %EDI,[%EBP-12]
 5055 FF 77 AC                              PUSH DWORD PTR [%EDI-84]
 5058 68 B4 03 00 00                        PUSH COT+#948
 505D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5060 83 C4 08                              ADD %ESP,#8
 5063 89 C3                                 MOV %EBX,%EAX
 5065 FF B3 9C 2D 00 00                     PUSH DWORD PTR [%EBX+DATA+11676]
 506B E8 00 00                              CALL 'SETCONST' (INTERNAL L1036 )
 506E 83 C4 04                              ADD %ESP,#4
 5071 8B 75 F4                              MOV %ESI,[%EBP-12]
 5074 FF 4E AC                              DEC DWORD PTR [%ESI-84]
  2188        %END
 5077 C9                                    LEAVE
 5078 C3                                    RET
 5079                      L1529  EQU $
  2189  
  2190        %ROUTINE pop lit
 5079                      L1587  EQU $
 5079 C8 00 00 04                           ENTER 0000,4
  2191           %IF pending = 0 %THEN lit = 0 %ELSE %START
 507D 8B 7D F4                              MOV %EDI,[%EBP-12]
 5080 8B 47 AC                              MOV %EAX,[%EDI-84]
 5083 3D 00 00 00 00                        CMP %EAX,#0
 5088 75 00                                 JNE L1588
 508A C7 05 48 02 00 00 00 00 00 00         MOV DWORD PTR [DATA+0248],#0
 5094 EB 00                                 JMP L1589
 5096                      L1588  EQU $
  2192              lit = pstack(pending);  pending = pending-1
 5096 8B 5D F4                              MOV %EBX,[%EBP-12]
 5099 FF 73 AC                              PUSH DWORD PTR [%EBX-84]
 509C 68 B4 03 00 00                        PUSH COT+#948
 50A1 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 50A4 83 C4 08                              ADD %ESP,#8
 50A7 89 C6                                 MOV %ESI,%EAX
 50A9 8B B6 9C 2D 00 00                     MOV %ESI,[%ESI+DATA+11676]
 50AF 89 35 48 02 00 00                     MOV [DATA+0248],%ESI
 50B5 8B 7D F4                              MOV %EDI,[%EBP-12]
 50B8 FF 4F AC                              DEC DWORD PTR [%EDI-84]
  2193           %FINISH
 50BB                      L1589  EQU $
  2194        %END
 50BB C9                                    LEAVE
 50BC C3                                    RET
 50BD                      L1529  EQU $
  2195  
  2196  
  2197        %IF sstype < 0 %START;                       !executable statement
 50BD A1 7C 01 00 00                        MOV %EAX,[DATA+017C]
 50C2 3D 00 00 00 00                        CMP %EAX,#0
 50C7 7D 00                                 JGE L1590
  2198           %IF level = 0 %START;                     !outermost level
 50C9 8B 5D F8                              MOV %EBX,[%EBP-8]
 50CC 8B 43 18                              MOV %EAX,[%EBX+24]
 50CF 3D 00 00 00 00                        CMP %EAX,#0
 50D4 75 00                                 JNE L1591
  2199              fault(13);                             !*order
 50D6 6A 0D                                 PUSH #13
 50D8 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 50DB 83 C4 04                              ADD %ESP,#4
  2200           %FINISH %ELSE %START
 50DE EB 00                                 JMP L1592
 50E0                      L1591  EQU $
  2201              %IF access = 0 %START
 50E0 8B 75 F8                              MOV %ESI,[%EBP-8]
 50E3 8B 46 E0                              MOV %EAX,[%ESI-32]
 50E6 3D 00 00 00 00                        CMP %EAX,#0
 50EB 75 00                                 JNE L1593
  2202                 access = 1;  fault(-1);             !only a warning
 50ED C7 46 E0 01 00 00 00                  MOV DWORD PTR [%ESI-32],#1
 50F4 6A FF                                 PUSH #-1
 50F6 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 50F9 83 C4 04                              ADD %ESP,#4
  2203              %FINISH
 50FC                      L1593  EQU $
  2204           %FINISH
 50FC                      L1592  EQU $
  2205        %FINISH
 50FC                      L1590  EQU $
  2206  
  2207        %IF diag&2 # 0 %START
 50FC A1 5C 02 00 00                        MOV %EAX,[DATA+025C]
 5101 25 02 00 00 00                        AND %EAX,#2
 5106 3D 00 00 00 00                        CMP %EAX,#0
 510B 74 00                                 JE L1594
  2208           newline %IF sym # nl
 510D A1 E4 00 00 00                        MOV %EAX,[DATA+00E4]
 5112 3D 0A 00 00 00                        CMP %EAX,#10
 5117 74 00                                 JE L1595
 5119 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
 511C                      L1595  EQU $
  2209           printstring("ss =")
 511C 81 EC 00 01 00 00                     SUB %ESP,#256
 5122 89 E0                                 MOV %EAX,%ESP
 5124 50                                    PUSH %EAX
 5125 B8 C4 03 00 00                        MOV %EAX,COT+#964
 512A 50                                    PUSH %EAX
 512B 68 FF 00 00 00                        PUSH #255
 5130 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 5133 83 C4 0C                              ADD %ESP,#12
 5136 E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 5139 81 C4 00 01 00 00                     ADD %ESP,#256
  2210           write(ss, 1)
 513F FF 35 64 01 00 00                     PUSH DWORD PTR [DATA+0164]
 5145 6A 01                                 PUSH #1
 5147 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 514A 83 C4 08                              ADD %ESP,#8
  2211           newline
 514D E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
  2212           count = 5
 5150 C7 05 4C 2E 00 00 05 00 00 00         MOV DWORD PTR [DATA+2E4C],#5
  2213           name = ""
 515A C6 05 40 2E 00 00 00                  MOV BYTE PTR [DATA+2E40],#0
  2214        %FINISH
 5161                      L1594  EQU $
  2215  
  2216        next = ss
 5161 A1 64 01 00 00                        MOV %EAX,[DATA+0164]
 5166 89 45 D8                              MOV [%EBP-40],%EAX
  2217        pending = 0;  lmode = 0
 5169 C7 45 AC 00 00 00 00                  MOV DWORD PTR [%EBP-84],#0
 5170 C7 45 F0 00 00 00 00                  MOV DWORD PTR [%EBP-16],#0
  2218        link = 0;  decs = 0
 5177 C7 45 D4 00 00 00 00                  MOV DWORD PTR [%EBP-44],#0
 517E C7 45 B4 00 00 00 00                  MOV DWORD PTR [%EBP-76],#0
  2219        defs = 0;  resln = 0;  done = 0
 5185 C7 45 B8 00 00 00 00                  MOV DWORD PTR [%EBP-72],#0
 518C C7 45 E4 00 00 00 00                  MOV DWORD PTR [%EBP-28],#0
 5193 C7 45 C4 00 00 00 00                  MOV DWORD PTR [%EBP-60],#0
  2220        ord = level
 519A 8B 7D F8                              MOV %EDI,[%EBP-8]
 519D 8B 47 18                              MOV %EAX,[%EDI+24]
 51A0 89 45 DC                              MOV [%EBP-36],%EAX
  2221        ord = 1 %IF this >= 0;                       !recordformat declarations
 51A3 A1 44 01 00 00                        MOV %EAX,[DATA+0144]
 51A8 3D 00 00 00 00                        CMP %EAX,#0
 51AD 7C 00                                 JL L1596
 51AF C7 45 DC 01 00 00 00                  MOV DWORD PTR [%EBP-36],#1
 51B6                      L1596  EQU $
  2222  c(0):
 51B6                      L1597  EQU $
  2223  top:  %IF next # link %START
 51B6                      L1598  EQU $
 51B6 8B 45 D8                              MOV %EAX,[%EBP-40]
 51B9 3B 45 D4                              CMP %EAX,[%EBP-44]
 51BC 74 00                                 JE L1599
  2224           get next;  ->c(class)
 51BE E8 00 00                              CALL 'GETNEXT' (INTERNAL L1531 )
 51C1 8B 45 C0                              MOV %EAX,[%EBP-64]
 51C4 C1 E0 02                              SHL %EAX,#2
 51C7 89 C3                                 MOV %EBX,%EAX
 51C9 FF A3 2C 01 00 00                     JMP DWORD PTR [%EBX+SWTAB+300]
  2225        %FINISH
 51CF                      L1599  EQU $
  2226  
  2227        !all done, tidy up declarations and jumps
  2228  
  2229        newline %IF diag&2 # 0 %AND count # 5
 51CF A1 5C 02 00 00                        MOV %EAX,[DATA+025C]
 51D4 25 02 00 00 00                        AND %EAX,#2
 51D9 3D 00 00 00 00                        CMP %EAX,#0
 51DE 74 00                                 JE L1600
 51E0 A1 4C 2E 00 00                        MOV %EAX,[DATA+2E4C]
 51E5 3D 05 00 00 00                        CMP %EAX,#5
 51EA 74 00                                 JE L1600
 51EC E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
 51EF                      L1600  EQU $
  2230  
  2231        %IF lmode&(loop!then!else) # 0 %START;       !pending labels and jumps
 51EF 8B 45 F0                              MOV %EAX,[%EBP-16]
 51F2 25 1C 00 00 00                        AND %EAX,#28
 51F7 3D 00 00 00 00                        CMP %EAX,#0
 51FC 74 00                                 JE L1601
  2232           op('B', label-1) %IF lmode&loop # 0;      !repeat
 51FE 8B 45 F0                              MOV %EAX,[%EBP-16]
 5201 25 10 00 00 00                        AND %EAX,#16
 5206 3D 00 00 00 00                        CMP %EAX,#0
 520B 74 00                                 JE L1602
 520D 6A 42                                 PUSH #66
 520F 8B 75 F8                              MOV %ESI,[%EBP-8]
 5212 8B 46 E4                              MOV %EAX,[%ESI-28]
 5215 48                                    DEC %EAX
 5216 50                                    PUSH %EAX
 5217 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 521A 83 C4 08                              ADD %ESP,#8
 521D                      L1602  EQU $
  2233           def lab(label)   %IF lmode&then # 0;      !entry from then
 521D 8B 45 F0                              MOV %EAX,[%EBP-16]
 5220 25 04 00 00 00                        AND %EAX,#4
 5225 3D 00 00 00 00                        CMP %EAX,#0
 522A 74 00                                 JE L1603
 522C 8B 7D F8                              MOV %EDI,[%EBP-8]
 522F FF 77 E4                              PUSH DWORD PTR [%EDI-28]
 5232 E8 00 00                              CALL 'DEFLAB' (INTERNAL L1530 )
 5235 83 C4 04                              ADD %ESP,#4
 5238                      L1603  EQU $
  2234           def lab(label-1) %IF lmode&else # 0;      !entry from else
 5238 8B 45 F0                              MOV %EAX,[%EBP-16]
 523B 25 08 00 00 00                        AND %EAX,#8
 5240 3D 00 00 00 00                        CMP %EAX,#0
 5245 74 00                                 JE L1604
 5247 8B 5D F8                              MOV %EBX,[%EBP-8]
 524A 8B 43 E4                              MOV %EAX,[%EBX-28]
 524D 48                                    DEC %EAX
 524E 50                                    PUSH %EAX
 524F E8 00 00                              CALL 'DEFLAB' (INTERNAL L1530 )
 5252 83 C4 04                              ADD %ESP,#4
 5255                      L1604  EQU $
  2235        %FINISH
 5255                      L1601  EQU $
  2236  
  2237        %RETURN %IF decs = 0
 5255 8B 45 B4                              MOV %EAX,[%EBP-76]
 5258 3D 00 00 00 00                        CMP %EAX,#0
 525D 75 00                                 JNE L1605
 525F C9                                    LEAVE
 5260 C3                                    RET
 5261                      L1605  EQU $
  2238        atom1 = error %AND %RETURN %IF atom1 # 0;    !%INTEGERROUTINE
 5261 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 5266 3D 00 00 00 00                        CMP %EAX,#0
 526B 74 00                                 JE L1606
 526D C7 05 A4 00 00 00 00 80 00 00         MOV DWORD PTR [DATA+00A4],#32768
 5277 C9                                    LEAVE
 5278 C3                                    RET
 5279                      L1606  EQU $
  2239        order = ord
 5279 8B 45 DC                              MOV %EAX,[%EBP-36]
 527C 89 05 90 01 00 00                     MOV [DATA+0190],%EAX
  2240        decl = decl&(\15)+decmap(decl&15);           !construct declarator flags
 5282 A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 5287 25 F0 FF FF FF                        AND %EAX,#-16
 528C 8B 0D FC 00 00 00                     MOV %ECX,[DATA+00FC]
 5292 81 E1 0F 00 00 00                     AND %ECX,#15
 5298 51                                    PUSH %ECX
 5299 68 A4 03 00 00                        PUSH COT+#932
 529E 89 45 A8                              MOV [%EBP-88],%EAX
 52A1 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 52A4 83 C4 08                              ADD %ESP,#8
 52A7 89 C6                                 MOV %ESI,%EAX
 52A9 8B 45 A8                              MOV %EAX,[%EBP-88]
 52AC 0F BF 8E 64 2D 00 00                  MOVSX %ECX,[%ESI+DATA+11620]
 52B3 01 C8                                 ADD %EAX,%ECX
 52B5 89 05 FC 00 00 00                     MOV [DATA+00FC],%EAX
  2241        atom1 = atoms(decl&15);                      !generate class
 52BB A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 52C0 25 0F 00 00 00                        AND %EAX,#15
 52C5 50                                    PUSH %EAX
 52C6 68 04 00 00 00                        PUSH COT+#4
 52CB E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 52CE 83 C4 08                              ADD %ESP,#8
 52D1 89 C7                                 MOV %EDI,%EAX
 52D3 31 C0                                 XOR %EAX,%EAX
 52D5 8A 87 8C 00 00 00                     MOV %AL,[%EDI+DATA+140]
 52DB 89 05 A4 00 00 00                     MOV [DATA+00A4],%EAX
  2242        %IF otype # 0 %START;                        !own, const etc.
 52E1 A1 14 01 00 00                        MOV %EAX,[DATA+0114]
 52E6 3D 00 00 00 00                        CMP %EAX,#0
 52EB 74 00                                 JE L1607
  2243           atom1 = atom1+1 %IF atom1 # proc
 52ED A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 52F2 3D 07 00 00 00                        CMP %EAX,#7
 52F7 74 00                                 JE L1608
 52F9 FF 05 A4 00 00 00                     INC DWORD PTR [DATA+00A4]
 52FF                      L1608  EQU $
  2244           %IF otype = 2 %START;                     !const
 52FF A1 14 01 00 00                        MOV %EAX,[DATA+0114]
 5304 3D 02 00 00 00                        CMP %EAX,#2
 5309 75 00                                 JNE L1609
  2245              n = decl&15
 530B A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 5310 25 0F 00 00 00                        AND %EAX,#15
 5315 89 45 C8                              MOV [%EBP-56],%EAX
  2246              %if n&1 # 0 %start
 5318 8B 45 C8                              MOV %EAX,[%EBP-56]
 531B 25 01 00 00 00                        AND %EAX,#1
 5320 3D 00 00 00 00                        CMP %EAX,#0
 5325 74 00                                 JE L1610
  2247                 decl = decl!prot
 5327 81 0D FC 00 00 00 00 01 00 00         OR DWORD PTR [DATA+00FC],#256
  2248                 decl = decl!const bit %IF decl&b'1111111' = iform
 5331 A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 5336 25 7F 00 00 00                        AND %EAX,#127
 533B 3D 11 00 00 00                        CMP %EAX,#17
 5340 75 00                                 JNE L1611
 5342 81 0D FC 00 00 00 00 20 00 00         OR DWORD PTR [DATA+00FC],#8192
 534C                      L1611  EQU $
  2249              %finish
 534C                      L1610  EQU $
  2250           %else
 534C EB 00                                 JMP L1612
 534E                      L1609  EQU $
  2251              decl = decl!own bit
 534E 81 0D FC 00 00 00 00 02 00 00         OR DWORD PTR [DATA+00FC],#512
  2252           %FINISH
 5358                      L1612  EQU $
  2253        %FINISH
 5358                      L1607  EQU $
  2254        sstype = 1 %IF sstype = 0 %AND atom1 = proc
 5358 A1 7C 01 00 00                        MOV %EAX,[DATA+017C]
 535D 3D 00 00 00 00                        CMP %EAX,#0
 5362 75 00                                 JNE L1613
 5364 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 5369 3D 07 00 00 00                        CMP %EAX,#7
 536E 75 00                                 JNE L1613
 5370 C7 05 7C 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+017C],#1
 537A                      L1613  EQU $
  2255        atom1 = atom1+1 %IF decl&spec # 0;             !onto spec variant
 537A A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 537F 25 80 00 00 00                        AND %EAX,#128
 5384 3D 00 00 00 00                        CMP %EAX,#0
 5389 74 00                                 JE L1614
 538B FF 05 A4 00 00 00                     INC DWORD PTR [DATA+00A4]
 5391                      L1614  EQU $
  2256        ocount = 0 %AND cont = '+' %IF atom1 = 5;      !own array
 5391 A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 5396 3D 05 00 00 00                        CMP %EAX,#5
 539B 75 00                                 JNE L1615
 539D C7 05 84 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0184],#0
 53A7 C7 05 F4 00 00 00 2B 00 00 00         MOV DWORD PTR [DATA+00F4],#43
 53B1                      L1615  EQU $
  2257        %IF anyform(decl&15) = 0 %START;               !check meaningful
 53B1 A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 53B6 25 0F 00 00 00                        AND %EAX,#15
 53BB 50                                    PUSH %EAX
 53BC 68 04 00 00 00                        PUSH COT+#4
 53C1 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 53C4 83 C4 08                              ADD %ESP,#8
 53C7 89 C3                                 MOV %EBX,%EAX
 53C9 8A 9B 54 2D 00 00                     MOV %BL,[%EBX+DATA+11604]
 53CF 81 E3 FF 00 00 00                     AND %EBX,#255
 53D5 83 FB 00                              CMP %EBX,#0
 53D8 75 00                                 JNE L1616
  2258           %IF decl>>4&7 = record %START
 53DA A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 53DF C1 E8 04                              SHR %EAX,#4
 53E2 25 07 00 00 00                        AND %EAX,#7
 53E7 3D 04 00 00 00                        CMP %EAX,#4
 53EC 75 00                                 JNE L1617
  2259              this = fdef %IF tag(fdef)_flags&spec # 0
 53EE FF 35 40 01 00 00                     PUSH DWORD PTR [DATA+0140]
 53F4 8B 75 FC                              MOV %ESI,[%EBP-4]
 53F7 FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 53FD 89 75 A4                              MOV [%EBP-92],%ESI
 5400 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5403 83 C4 08                              ADD %ESP,#8
 5406 89 C7                                 MOV %EDI,%EAX
 5408 8B 5D A4                              MOV %EBX,[%EBP-92]
 540B 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 5411 0F BF 47 08                           MOVSX %EAX,[%EDI+8]
 5415 25 80 00 00 00                        AND %EAX,#128
 541A 3D 00 00 00 00                        CMP %EAX,#0
 541F 74 00                                 JE L1618
 5421 A1 40 01 00 00                        MOV %EAX,[DATA+0140]
 5426 89 05 44 01 00 00                     MOV [DATA+0144],%EAX
 542C                      L1618  EQU $
  2260              atom1 = error+21 %IF fdef = this;        !*context for format
 542C A1 40 01 00 00                        MOV %EAX,[DATA+0140]
 5431 3B 05 44 01 00 00                     CMP %EAX,[DATA+0144]
 5437 75 00                                 JNE L1619
 5439 C7 05 A4 00 00 00 15 80 00 00         MOV DWORD PTR [DATA+00A4],#32789
 5443                      L1619  EQU $
  2261           %FINISH
 5443                      L1617  EQU $
  2262           atom1 = error+10 %IF fdef = 0;              !*size
 5443 A1 40 01 00 00                        MOV %EAX,[DATA+0140]
 5448 3D 00 00 00 00                        CMP %EAX,#0
 544D 75 00                                 JNE L1620
 544F C7 05 A4 00 00 00 0A 80 00 00         MOV DWORD PTR [DATA+00A4],#32778
 5459                      L1620  EQU $
  2263        %FINISH
 5459                      L1616  EQU $
  2264        %RETURN
 5459 C9                                    LEAVE
 545A C3                                    RET
  2265  
  2266  atop:   access = 0;  ->top
 545B                      L1621  EQU $
 545B 8B 75 F8                              MOV %ESI,[%EBP-8]
 545E C7 46 E0 00 00 00 00                  MOV DWORD PTR [%ESI-32],#0
 5465 EB 00                                 JMP L1598
  2267  
  2268  ! declarators
  2269  
  2270  c(88):                                                !rtype
 5467                      L1622  EQU $
  2271  c(28): decl = x&(\7);                                 !stype
 5467                      L1623  EQU $
 5467 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 546C 25 F8 FF FF FF                        AND %EAX,#-8
 5471 89 05 FC 00 00 00                     MOV [DATA+00FC],%EAX
  2272         fdef = x&7;                                    !precision
 5477 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 547C 25 07 00 00 00                        AND %EAX,#7
 5481 89 05 40 01 00 00                     MOV [DATA+0140],%EAX
  2273         fdef = reals ln %IF x&b'1110001' = real<<4+1;  !convert to long
 5487 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 548C 25 71 00 00 00                        AND %EAX,#113
 5491 3D 21 00 00 00                        CMP %EAX,#33
 5496 75 00                                 JNE L1624
 5498 A1 18 01 00 00                        MOV %EAX,[DATA+0118]
 549D 89 05 40 01 00 00                     MOV [DATA+0140],%EAX
 54A3                      L1624  EQU $
  2274         decs = 1;  ->top
 54A3 C7 45 B4 01 00 00 00                  MOV DWORD PTR [%EBP-76],#1
 54AA EB 00                                 JMP L1598
  2275  c(34):                                                !own
 54AC                      L1625  EQU $
  2276  c(35): otype = x;  ord = 1;  ->top;                   !external
 54AC                      L1626  EQU $
 54AC A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 54B1 89 05 14 01 00 00                     MOV [DATA+0114],%EAX
 54B7 C7 45 DC 01 00 00 00                  MOV DWORD PTR [%EBP-36],#1
 54BE EB 00                                 JMP L1598
  2277  c(152):decl = decl+x<<1;  ->top;                      !xname
 54C0                      L1627  EQU $
 54C0 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 54C5 D1 E0                                 SHL %EAX,#1
 54C7 01 05 FC 00 00 00                     ADD [DATA+00FC],%EAX
 54CD EB 00                                 JMP L1598
  2278  c(31):                                                !proc
 54CF                      L1628  EQU $
  2279  c(32): spec mode = level+1;                           !fn/map
 54CF                      L1629  EQU $
 54CF 8B 7D F8                              MOV %EDI,[%EBP-8]
 54D2 8B 47 18                              MOV %EAX,[%EDI+24]
 54D5 40                                    INC %EAX
 54D6 89 05 80 01 00 00                     MOV [DATA+0180],%EAX
  2280         decl = decl!prot %IF x = 9;                    !function
 54DC A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 54E1 3D 09 00 00 00                        CMP %EAX,#9
 54E6 75 00                                 JNE L1630
 54E8 81 0D FC 00 00 00 00 01 00 00         OR DWORD PTR [DATA+00FC],#256
 54F2                      L1630  EQU $
  2281  c(29): ord = 1;                                       !array
 54F2                      L1631  EQU $
 54F2 C7 45 DC 01 00 00 00                  MOV DWORD PTR [%EBP-36],#1
  2282         dim = 0
 54F9 C7 05 00 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0100],#0
  2283  c(30): decl = decl+x;                                 !name
 5503                      L1632  EQU $
 5503 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 5508 01 05 FC 00 00 00                     ADD [DATA+00FC],%EAX
  2284         decs = 1
 550E C7 45 B4 01 00 00 00                  MOV DWORD PTR [%EBP-76],#1
  2285         ->top
 5515 EB 00                                 JMP L1598
  2286  c(27): lit = 0;                                       ! arrayd
 5517                      L1633  EQU $
 5517 C7 05 48 02 00 00 00 00 00 00         MOV DWORD PTR [DATA+0248],#0
  2287         %IF pending # 0 %START
 5521 8B 45 AC                              MOV %EAX,[%EBP-84]
 5524 3D 00 00 00 00                        CMP %EAX,#0
 5529 74 00                                 JE L1634
  2288            pop lit
 552B E8 00 00                              CALL 'POPLIT' (INTERNAL L1587 )
  2289            %UNLESS 0<lit<=dim limit %START
 552E A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 5533 3D 00 00 00 00                        CMP %EAX,#0
 5538 7E 00                                 JLE L1635
 553A 3D 06 00 00 00                        CMP %EAX,#6
 553F 7E 00                                 JLE L1636
 5541                      L1635  EQU $
  2290               atom1 = error + 11;  %RETURN
 5541 C7 05 A4 00 00 00 0B 80 00 00         MOV DWORD PTR [DATA+00A4],#32779
 554B C9                                    LEAVE
 554C C3                                    RET
  2291            %FINISH
 554D                      L1636  EQU $
  2292         %FINISH
 554D                      L1634  EQU $
  2293         dim = lit
 554D A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 5552 89 05 00 01 00 00                     MOV [DATA+0100],%EAX
  2294         decl = decl + x;  decs = 1
 5558 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 555D 01 05 FC 00 00 00                     ADD [DATA+00FC],%EAX
 5563 C7 45 B4 01 00 00 00                  MOV DWORD PTR [%EBP-76],#1
  2295         -> top
 556A EB 00                                 JMP L1598
  2296  c(37): x = x!subname;                                 !record
 556C                      L1637  EQU $
 556C 81 0D A0 00 00 00 00 08 00 00         OR DWORD PTR [DATA+00A0],#2048
  2297  c(36): lit = 0;                                       !string
 5576                      L1638  EQU $
 5576 C7 05 48 02 00 00 00 00 00 00         MOV DWORD PTR [DATA+0248],#0
  2298         %IF pending # 0 %START
 5580 8B 45 AC                              MOV %EAX,[%EBP-84]
 5583 3D 00 00 00 00                        CMP %EAX,#0
 5588 74 00                                 JE L1639
  2299           pop lit
 558A E8 00 00                              CALL 'POPLIT' (INTERNAL L1587 )
  2300            %UNLESS 0 < lit <= 255 %START;              !max length wrong
 558D A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 5592 3D 00 00 00 00                        CMP %EAX,#0
 5597 7E 00                                 JLE L1640
 5599 3D FF 00 00 00                        CMP %EAX,#255
 559E 7E 00                                 JLE L1641
 55A0                      L1640  EQU $
  2301               atom1 = error+10;  %RETURN
 55A0 C7 05 A4 00 00 00 0A 80 00 00         MOV DWORD PTR [DATA+00A4],#32778
 55AA C9                                    LEAVE
 55AB C3                                    RET
  2302            %FINISH
 55AC                      L1641  EQU $
  2303         %FINISH
 55AC                      L1639  EQU $
  2304         fdef = lit;                                    !format or length
 55AC A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 55B1 89 05 40 01 00 00                     MOV [DATA+0140],%EAX
  2305  c(33): decl = x;                                      !switch
 55B7                      L1642  EQU $
 55B7 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 55BC 89 05 FC 00 00 00                     MOV [DATA+00FC],%EAX
  2306         decs = 1
 55C2 C7 45 B4 01 00 00 00                  MOV DWORD PTR [%EBP-76],#1
  2307         ->top
 55C9 EB 00                                 JMP L1598
  2308  c(39): decl = decl!spec;                              !spec
 55CB                      L1643  EQU $
 55CB 81 0D FC 00 00 00 80 00 00 00         OR DWORD PTR [DATA+00FC],#128
  2309         ocount = -1;                                   !no initialisation
 55D5 C7 05 84 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+0184],#-1
  2310         spec mode = -1
 55DF C7 05 80 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+0180],#-1
  2311         ->top
 55E9 EB 00                                 JMP L1598
  2312  c(38): decl = 64+4;                                   !recordformat (spec)
 55EB                      L1644  EQU $
 55EB C7 05 FC 00 00 00 44 00 00 00         MOV DWORD PTR [DATA+00FC],#68
  2313         order = 1
 55F5 C7 05 90 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+0190],#1
  2314         atom1 = x
 55FF A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 5604 89 05 A4 00 00 00                     MOV [DATA+00A4],%EAX
  2315         decl = decl!spec %if atom1 = 12;               !formatspec
 560A A1 A4 00 00 00                        MOV %EAX,[DATA+00A4]
 560F 3D 0C 00 00 00                        CMP %EAX,#12
 5614 75 00                                 JNE L1645
 5616 81 0D FC 00 00 00 80 00 00 00         OR DWORD PTR [DATA+00FC],#128
 5620                      L1645  EQU $
  2316         fdef = tmax+1;                                 !format tag
 5620 8B 5D F8                              MOV %EBX,[%EBP-8]
 5623 8B 43 0C                              MOV %EAX,[%EBX+12]
 5626 40                                    INC %EAX
 5627 89 05 40 01 00 00                     MOV [DATA+0140],%EAX
  2317         %return
 562D C9                                    LEAVE
 562E C3                                    RET
  2318  c(175):id = id+1;  tag(x)_index = id;  %return;       !FSID
 562F                      L1646  EQU $
 562F 8B 75 F8                              MOV %ESI,[%EBP-8]
 5632 FF 46 08                              INC DWORD PTR [%ESI+8]
 5635 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 563B 8B 7D FC                              MOV %EDI,[%EBP-4]
 563E FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 5644 89 7D A0                              MOV [%EBP-96],%EDI
 5647 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 564A 83 C4 08                              ADD %ESP,#8
 564D 89 C3                                 MOV %EBX,%EAX
 564F 8B 75 A0                              MOV %ESI,[%EBP-96]
 5652 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 5658 8B 7D F8                              MOV %EDI,[%EBP-8]
 565B 8B 47 08                              MOV %EAX,[%EDI+8]
 565E 88 43 0A                              MOV [%EBX+10],%AL
 5661 88 63 0B                              MOV [%EBX+11],%AH
 5664 C9                                    LEAVE
 5665 C3                                    RET
  2319  c(41): decs = 1;  decl = x!spec!closed;  ->top;       !label
 5666                      L1647  EQU $
 5666 C7 45 B4 01 00 00 00                  MOV DWORD PTR [%EBP-76],#1
 566D A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 5672 0D 80 00 00 00                        OR %EAX,#128
 5677 0D 00 40 00 00                        OR %EAX,#16384
 567C 89 05 FC 00 00 00                     MOV [DATA+00FC],%EAX
 5682 EB 00                                 JMP L1598
  2320  c(133):recid = 0;  rbase = tmin-1;                    !fname
 5684                      L1648  EQU $
 5684 8B 5D FC                              MOV %EBX,[%EBP-4]
 5687 C7 43 9C 00 00 00 00                  MOV DWORD PTR [%EBX-100],#0
 568E A1 60 01 00 00                        MOV %EAX,[DATA+0160]
 5693 48                                    DEC %EAX
 5694 89 05 50 01 00 00                     MOV [DATA+0150],%EAX
  2321         this = x
 569A A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 569F 89 05 44 01 00 00                     MOV [DATA+0144],%EAX
  2322         fm base = fdef;  format list = tmin
 56A5 A1 40 01 00 00                        MOV %EAX,[DATA+0140]
 56AA 89 05 B4 01 00 00                     MOV [DATA+01B4],%EAX
 56B0 A1 60 01 00 00                        MOV %EAX,[DATA+0160]
 56B5 89 05 BC 01 00 00                     MOV [DATA+01BC],%EAX
  2323         def(this);                      ->top
 56BB FF 35 44 01 00 00                     PUSH DWORD PTR [DATA+0144]
 56C1 E8 00 00                              CALL 'DEF' (INTERNAL L1561 )
 56C4 83 C4 04                              ADD %ESP,#4
 56C7 EB 00                                 JMP L1598
  2324  c(148):fdef = 0 %AND ->top %IF next = 0;              !reclb
 56C9                      L1649  EQU $
 56C9 8B 45 D8                              MOV %EAX,[%EBP-40]
 56CC 3D 00 00 00 00                        CMP %EAX,#0
 56D1 75 00                                 JNE L1650
 56D3 C7 05 40 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0140],#0
 56DD EB 00                                 JMP L1598
 56DF                      L1650  EQU $
  2325         get next;                                      !skip name
 56DF E8 00 00                              CALL 'GETNEXT' (INTERNAL L1531 )
  2326         fdef = x
 56E2 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 56E7 89 05 40 01 00 00                     MOV [DATA+0140],%EAX
  2327         ->top
 56ED EB 00                                 JMP L1598
  2328  c(127):bp=bp+1 %AND buff(bp)='}';  ->top;             !%POUT
 56EF                      L1651  EQU $
 56EF FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 56F5 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 56FB 8B 75 FC                              MOV %ESI,[%EBP-4]
 56FE FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 5704 89 75 9C                              MOV [%EBP-100],%ESI
 5707 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 570A 83 C4 08                              ADD %ESP,#8
 570D 89 C7                                 MOV %EDI,%EAX
 570F 8B 5D 9C                              MOV %EBX,[%EBP-100]
 5712 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 5718 C6 07 7D                              MOV BYTE PTR [%EDI],#125
 571B EB 00                                 JMP L1598
  2329  c(126):bp=bp+1 %AND buff(bp)='{';  ->top;             !%PIN
 571D                      L1652  EQU $
 571D FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 5723 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 5729 8B 75 FC                              MOV %ESI,[%EBP-4]
 572C FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 5732 89 75 98                              MOV [%EBP-104],%ESI
 5735 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5738 83 C4 08                              ADD %ESP,#8
 573B 89 C7                                 MOV %EDI,%EAX
 573D 8B 5D 98                              MOV %EBX,[%EBP-104]
 5740 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 5746 C6 07 7B                              MOV BYTE PTR [%EDI],#123
 5749 EB 00                                 JMP L1598
  2330  
  2331  c(174):set bp;                                        !rangerb
 574B                      L1653  EQU $
 574B E8 00 00                              CALL 'SETBP' (INTERNAL L1547 )
  2332  c(171):                                               !fmlb
 574E                      L1654  EQU $
  2333  c(172):                                               !fmrb
 574E                      L1655  EQU $
  2334  c(173):bp=bp+1 %AND buff(bp)='~';  bp=bp+1 %AND buff(bp)=class-171+'A';  ->top;         !fmor
 574E                      L1656  EQU $
 574E FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 5754 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 575A 8B 75 FC                              MOV %ESI,[%EBP-4]
 575D FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 5763 89 75 94                              MOV [%EBP-108],%ESI
 5766 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5769 83 C4 08                              ADD %ESP,#8
 576C 89 C7                                 MOV %EDI,%EAX
 576E 8B 5D 94                              MOV %EBX,[%EBP-108]
 5771 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 5777 C6 07 7E                              MOV BYTE PTR [%EDI],#126
 577A FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 5780 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 5786 8B 75 FC                              MOV %ESI,[%EBP-4]
 5789 FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 578F 89 75 90                              MOV [%EBP-112],%ESI
 5792 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5795 83 C4 08                              ADD %ESP,#8
 5798 89 C7                                 MOV %EDI,%EAX
 579A 8B 5D 90                              MOV %EBX,[%EBP-112]
 579D 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 57A3 8B 45 C0                              MOV %EAX,[%EBP-64]
 57A6 2D AB 00 00 00                        SUB %EAX,#171
 57AB 05 41 00 00 00                        ADD %EAX,#65
 57B0 88 07                                 MOV [%EDI],%AL
 57B2 EB 00                                 JMP L1598
  2335  c(168):rbase = -rbase;                                !orrb
 57B4                      L1657  EQU $
 57B4 F7 1D 50 01 00 00                     NEG DWORD PTR [DATA+0150]
  2336         sstype = 0;  spec mode = 0
 57BA C7 05 7C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+017C],#0
 57C4 C7 05 80 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0180],#0
  2337  
  2338  c(147):search base = 0;                               !recrb
 57CE                      L1658  EQU $
 57CE C7 05 B8 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01B8],#0
  2339         tag(this)_app = tmin
 57D8 FF 35 44 01 00 00                     PUSH DWORD PTR [DATA+0144]
 57DE 8B 75 FC                              MOV %ESI,[%EBP-4]
 57E1 FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 57E7 89 75 8C                              MOV [%EBP-116],%ESI
 57EA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 57ED 83 C4 08                              ADD %ESP,#8
 57F0 89 C7                                 MOV %EDI,%EAX
 57F2 8B 5D 8C                              MOV %EBX,[%EBP-116]
 57F5 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 57FB A1 60 01 00 00                        MOV %EAX,[DATA+0160]
 5800 89 07                                 MOV [%EDI],%EAX
  2340         tag(this)_format = rbase
 5802 FF 35 44 01 00 00                     PUSH DWORD PTR [DATA+0144]
 5808 8B 75 FC                              MOV %ESI,[%EBP-4]
 580B FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 5811 89 75 88                              MOV [%EBP-120],%ESI
 5814 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5817 83 C4 08                              ADD %ESP,#8
 581A 89 C7                                 MOV %EDI,%EAX
 581C 8B 5D 88                              MOV %EBX,[%EBP-120]
 581F 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 5825 A1 50 01 00 00                        MOV %EAX,[DATA+0150]
 582A 89 47 04                              MOV [%EDI+4],%EAX
  2341         ->top
 582D EB 00                                 JMP L1598
  2342  
  2343  c(45):bp=bp+1 %and buff(bp)='U' %IF x = 36;  ->top;   !sign
 582F                      L1659  EQU $
 582F A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 5834 3D 24 00 00 00                        CMP %EAX,#36
 5839 75 00                                 JNE L1660
 583B FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 5841 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 5847 8B 75 FC                              MOV %ESI,[%EBP-4]
 584A FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 5850 89 75 84                              MOV [%EBP-124],%ESI
 5853 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5856 83 C4 08                              ADD %ESP,#8
 5859 89 C7                                 MOV %EDI,%EAX
 585B 8B 5D 84                              MOV %EBX,[%EBP-124]
 585E 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 5864 C6 07 55                              MOV BYTE PTR [%EDI],#85
 5867                      L1660  EQU $
 5867 EB 00                                 JMP L1598
  2344  c(46):bp=bp+1;  buff(bp)='\';  ->top;                 !uop
 5869                      L1661  EQU $
 5869 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 586F FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 5875 8B 75 FC                              MOV %ESI,[%EBP-4]
 5878 FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 587E 89 B5 80 FF FF FF                     MOV [%EBP-128],%ESI
 5884 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5887 83 C4 08                              ADD %ESP,#8
 588A 89 C7                                 MOV %EDI,%EAX
 588C 8B 9D 80 FF FF FF                     MOV %EBX,[%EBP-128]
 5892 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 5898 C6 07 5C                              MOV BYTE PTR [%EDI],#92
 589B EB 00                                 JMP L1598
  2345  c(47):                                                !mod
 589D                      L1662  EQU $
  2346  c(48):                                                !dot
 589D                      L1663  EQU $
  2347  c(42):                                                !op1
 589D                      L1664  EQU $
  2348  c(43):                                                !op2
 589D                      L1665  EQU $
  2349  c(44):bp=bp+1;  buff(bp)=operator(x);  ->top;         !op3
 589D                      L1666  EQU $
 589D FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 58A3 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 58A9 8B 75 FC                              MOV %ESI,[%EBP-4]
 58AC FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 58B2 89 B5 7C FF FF FF                     MOV [%EBP-132],%ESI
 58B8 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 58BB 83 C4 08                              ADD %ESP,#8
 58BE 89 C7                                 MOV %EDI,%EAX
 58C0 8B 9D 7C FF FF FF                     MOV %EBX,[%EBP-132]
 58C6 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 58CC FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 58D2 68 84 03 00 00                        PUSH COT+#900
 58D7 89 BD 78 FF FF FF                     MOV [%EBP-136],%EDI
 58DD E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 58E0 83 C4 08                              ADD %ESP,#8
 58E3 89 C6                                 MOV %ESI,%EAX
 58E5 8B BD 78 FF FF FF                     MOV %EDI,[%EBP-136]
 58EB 8A 86 3B 2D 00 00                     MOV %AL,[%ESI+DATA+11579]
 58F1 88 07                                 MOV [%EDI],%AL
 58F3 EB 00                                 JMP L1598
  2350  
  2351  !conditions & jumps
  2352  
  2353        %ROUTINE push(%INTEGER x)
 58F5 EB 00                                 JMP L1667
 58F7                      L1668  EQU $
 58F7 C8 00 00 04                           ENTER 0000,4
  2354           %IF cnest(cp)&2 # x %START
 58FB 8B 5D F4                              MOV %EBX,[%EBP-12]
 58FE FF 73 E0                              PUSH DWORD PTR [%EBX-32]
 5901 68 04 00 00 00                        PUSH COT+#4
 5906 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5909 83 C4 08                              ADD %ESP,#8
 590C 89 C6                                 MOV %ESI,%EAX
 590E 31 C0                                 XOR %EAX,%EAX
 5910 8A 86 84 2D 00 00                     MOV %AL,[%ESI+DATA+11652]
 5916 25 02 00 00 00                        AND %EAX,#2
 591B 3B 45 08                              CMP %EAX,[%EBP+8]
 591E 74 00                                 JE L1669
  2355              cnest(cp) = cnest(cp)!1;  x = x+4
 5920 8B 7D F4                              MOV %EDI,[%EBP-12]
 5923 FF 77 E0                              PUSH DWORD PTR [%EDI-32]
 5926 68 04 00 00 00                        PUSH COT+#4
 592B E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 592E 83 C4 08                              ADD %ESP,#8
 5931 89 C3                                 MOV %EBX,%EAX
 5933 8B 75 F4                              MOV %ESI,[%EBP-12]
 5936 FF 76 E0                              PUSH DWORD PTR [%ESI-32]
 5939 68 04 00 00 00                        PUSH COT+#4
 593E 89 5D EC                              MOV [%EBP-20],%EBX
 5941 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5944 83 C4 08                              ADD %ESP,#8
 5947 89 C7                                 MOV %EDI,%EAX
 5949 31 C0                                 XOR %EAX,%EAX
 594B 8A 87 84 2D 00 00                     MOV %AL,[%EDI+DATA+11652]
 5951 0D 01 00 00 00                        OR %EAX,#1
 5956 8B 5D EC                              MOV %EBX,[%EBP-20]
 5959 88 83 84 2D 00 00                     MOV [%EBX+DATA+11652],%AL
 595F 83 45 08 04                           ADD DWORD PTR [%EBP+8],#4
  2356           %FINISH
 5963                      L1669  EQU $
  2357           clab = clab+1 %IF cnest(cp)&1 # 0
 5963 8B 75 F4                              MOV %ESI,[%EBP-12]
 5966 FF 76 E0                              PUSH DWORD PTR [%ESI-32]
 5969 68 04 00 00 00                        PUSH COT+#4
 596E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5971 83 C4 08                              ADD %ESP,#8
 5974 89 C7                                 MOV %EDI,%EAX
 5976 31 C0                                 XOR %EAX,%EAX
 5978 8A 87 84 2D 00 00                     MOV %AL,[%EDI+DATA+11652]
 597E 25 01 00 00 00                        AND %EAX,#1
 5983 3D 00 00 00 00                        CMP %EAX,#0
 5988 74 00                                 JE L1670
 598A 8B 5D F4                              MOV %EBX,[%EBP-12]
 598D FF 43 EC                              INC DWORD PTR [%EBX-20]
 5990                      L1670  EQU $
  2358           cnest(cp+1) = x;  cp = cp+1
 5990 8B 75 F4                              MOV %ESI,[%EBP-12]
 5993 8B 46 E0                              MOV %EAX,[%ESI-32]
 5996 40                                    INC %EAX
 5997 50                                    PUSH %EAX
 5998 68 04 00 00 00                        PUSH COT+#4
 599D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 59A0 83 C4 08                              ADD %ESP,#8
 59A3 89 C7                                 MOV %EDI,%EAX
 59A5 8B 45 08                              MOV %EAX,[%EBP+8]
 59A8 88 87 84 2D 00 00                     MOV [%EDI+DATA+11652],%AL
 59AE 8B 5D F4                              MOV %EBX,[%EBP-12]
 59B1 FF 43 E0                              INC DWORD PTR [%EBX-32]
  2359        %END
 59B4 C9                                    LEAVE
 59B5 C3                                    RET
 59B6                      L1667  EQU $
  2360  
  2361        %ROUTINE pop label(%INTEGER mode)
 59B6                      L1671  EQU $
 59B6 C8 00 00 04                           ENTER 0000,4
  2362           lmode = dict(dmin)
 59BA 8B 75 F8                              MOV %ESI,[%EBP-8]
 59BD FF 76 10                              PUSH DWORD PTR [%ESI+16]
 59C0 8B 7D FC                              MOV %EDI,[%EBP-4]
 59C3 FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 59C9 89 7D EC                              MOV [%EBP-20],%EDI
 59CC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 59CF 83 C4 08                              ADD %ESP,#8
 59D2 89 C3                                 MOV %EBX,%EAX
 59D4 8B 75 EC                              MOV %ESI,[%EBP-20]
 59D7 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 59DD 8B 7D F4                              MOV %EDI,[%EBP-12]
 59E0 0F BF 1B                              MOVSX %EBX,[%EBX]
 59E3 89 5F F0                              MOV [%EDI-16],%EBX
  2363           %IF lmode < 0 %OR lmode&1 # mode %START
 59E6 8B 47 F0                              MOV %EAX,[%EDI-16]
 59E9 3D 00 00 00 00                        CMP %EAX,#0
 59EE 7C 00                                 JL L1672
 59F0 8B 47 F0                              MOV %EAX,[%EDI-16]
 59F3 25 01 00 00 00                        AND %EAX,#1
 59F8 3B 45 08                              CMP %EAX,[%EBP+8]
 59FB 74 00                                 JE L1673
 59FD                      L1672  EQU $
  2364              fault(mode+8)
 59FD 8B 45 08                              MOV %EAX,[%EBP+8]
 5A00 05 08 00 00 00                        ADD %EAX,#8
 5A05 50                                    PUSH %EAX
 5A06 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 5A09 83 C4 04                              ADD %ESP,#4
  2365           %FINISH %ELSE %START
 5A0C EB 00                                 JMP L1674
 5A0E                      L1673  EQU $
  2366              dmin = dmin+1;  label = label-3
 5A0E 8B 5D F8                              MOV %EBX,[%EBP-8]
 5A11 FF 43 10                              INC DWORD PTR [%EBX+16]
 5A14 83 6B E4 03                           SUB DWORD PTR [%EBX-28],#3
  2367           %FINISH
 5A18                      L1674  EQU $
  2368        %END
 5A18 C9                                    LEAVE
 5A19 C3                                    RET
 5A1A                      L1667  EQU $
  2369  
  2370  c(56):                                         !and
 5A1A                      L1675  EQU $
  2371  c(57):push(x);  ->top;                         !or
 5A1A                      L1676  EQU $
 5A1A FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 5A20 E8 00 00                              CALL 'PUSH' (INTERNAL L1668 )
 5A23 83 C4 04                              ADD %ESP,#4
 5A26 EB 00                                 JMP L1598
  2372  c(58):cnest(cp) = cnest(cp)!!2;  ->top;        !not
 5A28                      L1677  EQU $
 5A28 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 5A2B 68 04 00 00 00                        PUSH COT+#4
 5A30 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5A33 83 C4 08                              ADD %ESP,#8
 5A36 89 C6                                 MOV %ESI,%EAX
 5A38 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 5A3B 68 04 00 00 00                        PUSH COT+#4
 5A40 89 B5 74 FF FF FF                     MOV [%EBP-140],%ESI
 5A46 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5A49 83 C4 08                              ADD %ESP,#8
 5A4C 89 C7                                 MOV %EDI,%EAX
 5A4E 31 C0                                 XOR %EAX,%EAX
 5A50 8A 87 84 2D 00 00                     MOV %AL,[%EDI+DATA+11652]
 5A56 35 02 00 00 00                        XOR %EAX,#2
 5A5B 8B 9D 74 FF FF FF                     MOV %EBX,[%EBP-140]
 5A61 88 83 84 2D 00 00                     MOV [%EBX+DATA+11652],%AL
 5A67 EB 00                                 JMP L1598
  2373  
  2374  c(138):x = 128+32+16+4;                        !csep: treat like %WHILE
 5A69                      L1678  EQU $
 5A69 C7 05 A0 00 00 00 B4 00 00 00         MOV DWORD PTR [DATA+00A0],#180
  2375  c(59):                                         !while
 5A73                      L1679  EQU $
  2376  c(60):%IF class = 138 %THEN op('f', label-1) %C
  2377+                       %ELSE def lab(label-1);  !until
 5A73                      L1680  EQU $
 5A73 8B 45 C0                              MOV %EAX,[%EBP-64]
 5A76 3D 8A 00 00 00                        CMP %EAX,#138
 5A7B 75 00                                 JNE L1681
 5A7D 6A 66                                 PUSH #102
 5A7F 8B 75 F8                              MOV %ESI,[%EBP-8]
 5A82 8B 46 E4                              MOV %EAX,[%ESI-28]
 5A85 48                                    DEC %EAX
 5A86 50                                    PUSH %EAX
 5A87 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 5A8A 83 C4 08                              ADD %ESP,#8
 5A8D EB 00                                 JMP L1682
 5A8F                      L1681  EQU $
 5A8F 8B 7D F8                              MOV %EDI,[%EBP-8]
 5A92 8B 47 E4                              MOV %EAX,[%EDI-28]
 5A95 48                                    DEC %EAX
 5A96 50                                    PUSH %EAX
 5A97 E8 00 00                              CALL 'DEFLAB' (INTERNAL L1530 )
 5A9A 83 C4 04                              ADD %ESP,#4
 5A9D                      L1682  EQU $
  2378  c(166):                                        !runtil
 5A9D                      L1683  EQU $
  2379  c(62):lmode = (lmode&(else!loop)) !(x>>3);     !cword
 5A9D                      L1684  EQU $
 5A9D 8B 45 F0                              MOV %EAX,[%EBP-16]
 5AA0 25 18 00 00 00                        AND %EAX,#24
 5AA5 8B 0D A0 00 00 00                     MOV %ECX,[DATA+00A0]
 5AAB C1 E9 03                              SHR %ECX,#3
 5AAE 09 C1                                 OR %ECX,%EAX
 5AB0 89 4D F0                              MOV [%EBP-16],%ECX
  2380        clab = label;  cp = 1;  cnest(1) = x&7
 5AB3 8B 5D F8                              MOV %EBX,[%EBP-8]
 5AB6 8B 43 E4                              MOV %EAX,[%EBX-28]
 5AB9 89 45 EC                              MOV [%EBP-20],%EAX
 5ABC C7 45 E0 01 00 00 00                  MOV DWORD PTR [%EBP-32],#1
 5AC3 6A 01                                 PUSH #1
 5AC5 68 04 00 00 00                        PUSH COT+#4
 5ACA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5ACD 83 C4 08                              ADD %ESP,#8
 5AD0 89 C6                                 MOV %ESI,%EAX
 5AD2 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 5AD7 25 07 00 00 00                        AND %EAX,#7
 5ADC 88 86 84 2D 00 00                     MOV [%ESI+DATA+11652],%AL
  2381        ->top
 5AE2 EB 00                                 JMP L1598
  2382  c(72):pop label(0);                            !repeat
 5AE4                      L1685  EQU $
 5AE4 6A 00                                 PUSH #0
 5AE6 E8 00 00                              CALL 'POPLABEL' (INTERNAL L1671 )
 5AE9 83 C4 04                              ADD %ESP,#4
  2383        def lab(label+1) %IF lmode&32 # 0;  ->atop
 5AEC 8B 45 F0                              MOV %EAX,[%EBP-16]
 5AEF 25 20 00 00 00                        AND %EAX,#32
 5AF4 3D 00 00 00 00                        CMP %EAX,#0
 5AF9 74 00                                 JE L1686
 5AFB 8B 7D F8                              MOV %EDI,[%EBP-8]
 5AFE 8B 47 E4                              MOV %EAX,[%EDI-28]
 5B01 40                                    INC %EAX
 5B02 50                                    PUSH %EAX
 5B03 E8 00 00                              CALL 'DEFLAB' (INTERNAL L1530 )
 5B06 83 C4 04                              ADD %ESP,#4
 5B09                      L1686  EQU $
 5B09 EB 00                                 JMP L1621
  2384  c(69):pop label(1);               ->top;       !finish
 5B0B                      L1687  EQU $
 5B0B 6A 01                                 PUSH #1
 5B0D E8 00 00                              CALL 'POPLABEL' (INTERNAL L1671 )
 5B10 83 C4 04                              ADD %ESP,#4
 5B13 EB 00                                 JMP L1598
  2385  c(163):                                        !xelse
 5B15                      L1688  EQU $
  2386  c(70):pop label(1);                            !finish else ...
 5B15                      L1689  EQU $
 5B15 6A 01                                 PUSH #1
 5B17 E8 00 00                              CALL 'POPLABEL' (INTERNAL L1671 )
 5B1A 83 C4 04                              ADD %ESP,#4
  2387        fault(7) %IF lmode&3 = 3;                !dangling else
 5B1D 8B 45 F0                              MOV %EAX,[%EBP-16]
 5B20 25 03 00 00 00                        AND %EAX,#3
 5B25 3D 03 00 00 00                        CMP %EAX,#3
 5B2A 75 00                                 JNE L1690
 5B2C 6A 07                                 PUSH #7
 5B2E E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 5B31 83 C4 04                              ADD %ESP,#4
 5B34                      L1690  EQU $
  2388  c(68):lmode = (lmode&else)!3;                  !...else...
 5B34                      L1691  EQU $
 5B34 8B 45 F0                              MOV %EAX,[%EBP-16]
 5B37 25 08 00 00 00                        AND %EAX,#8
 5B3C 0D 03 00 00 00                        OR %EAX,#3
 5B41 89 45 F0                              MOV [%EBP-16],%EAX
  2389        %IF access # 0 %START
 5B44 8B 5D F8                              MOV %EBX,[%EBP-8]
 5B47 8B 43 E0                              MOV %EAX,[%EBX-32]
 5B4A 3D 00 00 00 00                        CMP %EAX,#0
 5B4F 74 00                                 JE L1692
  2390           op('F', label-1);  lmode = else!3
 5B51 6A 46                                 PUSH #70
 5B53 8B 43 E4                              MOV %EAX,[%EBX-28]
 5B56 48                                    DEC %EAX
 5B57 50                                    PUSH %EAX
 5B58 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 5B5B 83 C4 08                              ADD %ESP,#8
 5B5E C7 45 F0 0B 00 00 00                  MOV DWORD PTR [%EBP-16],#11
  2391        %FINISH
 5B65                      L1692  EQU $
  2392        def lab(label)
 5B65 8B 75 F8                              MOV %ESI,[%EBP-8]
 5B68 FF 76 E4                              PUSH DWORD PTR [%ESI-28]
 5B6B E8 00 00                              CALL 'DEFLAB' (INTERNAL L1530 )
 5B6E 83 C4 04                              ADD %ESP,#4
  2393        ->top %IF next # 0
 5B71 8B 45 D8                              MOV %EAX,[%EBP-40]
 5B74 3D 00 00 00 00                        CMP %EAX,#0
 5B79 74 00                                 JE L1693
 5B7B EB 00                                 JMP L1598
 5B7D                      L1693  EQU $
  2394  
  2395  c(120):                                        !%MSTART
 5B7D                      L1694  EQU $
  2396  c(67):                                         !start
 5B7D                      L1695  EQU $
  2397  c(71):                                         !cycle
 5B7D                      L1696  EQU $
  2398  stcy: def lab(label-1) %AND lmode = loop %IF lmode = 0;!cycle
 5B7D                      L1697  EQU $
 5B7D 8B 45 F0                              MOV %EAX,[%EBP-16]
 5B80 3D 00 00 00 00                        CMP %EAX,#0
 5B85 75 00                                 JNE L1698
 5B87 8B 7D F8                              MOV %EDI,[%EBP-8]
 5B8A 8B 47 E4                              MOV %EAX,[%EDI-28]
 5B8D 48                                    DEC %EAX
 5B8E 50                                    PUSH %EAX
 5B8F E8 00 00                              CALL 'DEFLAB' (INTERNAL L1530 )
 5B92 83 C4 04                              ADD %ESP,#4
 5B95 C7 45 F0 10 00 00 00                  MOV DWORD PTR [%EBP-16],#16
 5B9C                      L1698  EQU $
  2399        dmin = dmin-1;  abandon(3) %IF dmin <= dmax
 5B9C 8B 5D F8                              MOV %EBX,[%EBP-8]
 5B9F FF 4B 10                              DEC DWORD PTR [%EBX+16]
 5BA2 8B 43 10                              MOV %EAX,[%EBX+16]
 5BA5 3B 05 5C 01 00 00                     CMP %EAX,[DATA+015C]
 5BAB 7F 00                                 JG L1699
 5BAD 6A 03                                 PUSH #3
 5BAF E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 5BB2 83 C4 04                              ADD %ESP,#4
 5BB5                      L1699  EQU $
  2400        dict(dmin) = lmode
 5BB5 8B 75 F8                              MOV %ESI,[%EBP-8]
 5BB8 FF 76 10                              PUSH DWORD PTR [%ESI+16]
 5BBB 8B 7D FC                              MOV %EDI,[%EBP-4]
 5BBE FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 5BC4 89 BD 70 FF FF FF                     MOV [%EBP-144],%EDI
 5BCA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5BCD 83 C4 08                              ADD %ESP,#8
 5BD0 89 C3                                 MOV %EBX,%EAX
 5BD2 8B B5 70 FF FF FF                     MOV %ESI,[%EBP-144]
 5BD8 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 5BDE 8B 45 F0                              MOV %EAX,[%EBP-16]
 5BE1 88 03                                 MOV [%EBX],%AL
 5BE3 88 63 01                              MOV [%EBX+1],%AH
  2401        label = label+3
 5BE6 8B 7D F8                              MOV %EDI,[%EBP-8]
 5BE9 83 47 E4 03                           ADD DWORD PTR [%EDI-28],#3
  2402        %RETURN
 5BED C9                                    LEAVE
 5BEE C3                                    RET
  2403  
  2404  c(64):fault(13) %IF dict(dmin) >= 0 %OR inhibit # 0;  !on event
 5BEF                      L1700  EQU $
 5BEF 8B 5D F8                              MOV %EBX,[%EBP-8]
 5BF2 FF 73 10                              PUSH DWORD PTR [%EBX+16]
 5BF5 8B 75 FC                              MOV %ESI,[%EBP-4]
 5BF8 FF B6 40 FF FF FF                     PUSH DWORD PTR [%ESI-192]
 5BFE 89 B5 6C FF FF FF                     MOV [%EBP-148],%ESI
 5C04 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5C07 83 C4 08                              ADD %ESP,#8
 5C0A 89 C7                                 MOV %EDI,%EAX
 5C0C 8B 9D 6C FF FF FF                     MOV %EBX,[%EBP-148]
 5C12 03 BB 3C FF FF FF                     ADD %EDI,[%EBX-196]
 5C18 0F BF 07                              MOVSX %EAX,[%EDI]
 5C1B 3D 00 00 00 00                        CMP %EAX,#0
 5C20 7D 00                                 JGE L1701
 5C22 8B 75 F8                              MOV %ESI,[%EBP-8]
 5C25 8B 46 DC                              MOV %EAX,[%ESI-36]
 5C28 3D 00 00 00 00                        CMP %EAX,#0
 5C2D 74 00                                 JE L1702
 5C2F                      L1701  EQU $
 5C2F 6A 0D                                 PUSH #13
 5C31 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 5C34 83 C4 04                              ADD %ESP,#4
 5C37                      L1702  EQU $
  2405        inhibit = 1
 5C37 8B 7D F8                              MOV %EDI,[%EBP-8]
 5C3A C7 47 DC 01 00 00 00                  MOV DWORD PTR [%EDI-36],#1
  2406        n = 0
 5C41 C7 45 C8 00 00 00 00                  MOV DWORD PTR [%EBP-56],#0
  2407        n = x'FFFF' %IF pending = 0;             !* = all events
 5C48 8B 45 AC                              MOV %EAX,[%EBP-84]
 5C4B 3D 00 00 00 00                        CMP %EAX,#0
 5C50 75 00                                 JNE L1703
 5C52 C7 45 C8 FF FF 00 00                  MOV DWORD PTR [%EBP-56],#65535
 5C59                      L1703  EQU $
  2408        %WHILE pending > 0 %CYCLE
 5C59                      L1704  EQU $
 5C59 8B 45 AC                              MOV %EAX,[%EBP-84]
 5C5C 3D 00 00 00 00                        CMP %EAX,#0
 5C61 7E 00                                 JLE L1705
  2409           pop lit;  fault(10) %IF lit&(\15) # 0;!too big
 5C63 E8 00 00                              CALL 'POPLIT' (INTERNAL L1587 )
 5C66 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 5C6B 25 F0 FF FF FF                        AND %EAX,#-16
 5C70 3D 00 00 00 00                        CMP %EAX,#0
 5C75 74 00                                 JE L1706
 5C77 6A 0A                                 PUSH #10
 5C79 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 5C7C 83 C4 04                              ADD %ESP,#4
 5C7F                      L1706  EQU $
  2410           j = 1<<lit
 5C7F 8B 0D 48 02 00 00                     MOV %ECX,[DATA+0248]
 5C85 B8 01 00 00 00                        MOV %EAX,#1
 5C8A D3 E0                                 SHL %EAX,%ECX
 5C8C 89 45 D0                              MOV [%EBP-48],%EAX
  2411           dubious = 1 %IF n&j # 0
 5C8F 8B 45 C8                              MOV %EAX,[%EBP-56]
 5C92 23 45 D0                              AND %EAX,[%EBP-48]
 5C95 3D 00 00 00 00                        CMP %EAX,#0
 5C9A 74 00                                 JE L1707
 5C9C C7 05 98 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+0198],#1
 5CA6                      L1707  EQU $
  2412           n = n!j;                              !construct bit mask
 5CA6 8B 45 D0                              MOV %EAX,[%EBP-48]
 5CA9 09 45 C8                              OR [%EBP-56],%EAX
  2413        %REPEAT
 5CAC EB 00                                 JMP L1704
 5CAE                      L1705  EQU $
  2414        op('o', n);  op(',', label)
 5CAE 6A 6F                                 PUSH #111
 5CB0 FF 75 C8                              PUSH DWORD PTR [%EBP-56]
 5CB3 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 5CB6 83 C4 08                              ADD %ESP,#8
 5CB9 6A 2C                                 PUSH #44
 5CBB 8B 5D F8                              MOV %EBX,[%EBP-8]
 5CBE FF 73 E4                              PUSH DWORD PTR [%EBX-28]
 5CC1 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 5CC4 83 C4 08                              ADD %ESP,#8
  2415        lmode = then!1;  ->stcy
 5CC7 C7 45 F0 05 00 00 00                  MOV DWORD PTR [%EBP-16],#5
 5CCE EB 00                                 JMP L1697
  2416  
  2417  
  2418  c(104):op('J', tag(x)_index);                   !l
 5CD0                      L1708  EQU $
 5CD0 6A 4A                                 PUSH #74
 5CD2 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 5CD8 8B 75 FC                              MOV %ESI,[%EBP-4]
 5CDB FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 5CE1 89 B5 68 FF FF FF                     MOV [%EBP-152],%ESI
 5CE7 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5CEA 83 C4 08                              ADD %ESP,#8
 5CED 89 C7                                 MOV %EDI,%EAX
 5CEF 8B 9D 68 FF FF FF                     MOV %EBX,[%EBP-152]
 5CF5 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 5CFB 0F BF 47 0A                           MOVSX %EAX,[%EDI+10]
 5CFF 50                                    PUSH %EAX
 5D00 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 5D03 83 C4 08                              ADD %ESP,#8
  2419         inhibit = 1;            ->atop
 5D06 8B 75 F8                              MOV %ESI,[%EBP-8]
 5D09 C7 46 DC 01 00 00 00                  MOV DWORD PTR [%ESI-36],#1
 5D10 EB 00                                 JMP L1621
  2420  c(149):stats = stats-1;                         !lab
 5D12                      L1709  EQU $
 5D12 FF 0D DC 00 00 00                     DEC DWORD PTR [DATA+00DC]
  2421         access = 1;  inhibit = 1
 5D18 8B 7D F8                              MOV %EDI,[%EBP-8]
 5D1B C7 47 E0 01 00 00 00                  MOV DWORD PTR [%EDI-32],#1
 5D22 C7 47 DC 01 00 00 00                  MOV DWORD PTR [%EDI-36],#1
  2422         op('L', tag(x)_index);  ->top
 5D29 6A 4C                                 PUSH #76
 5D2B FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 5D31 8B 5D FC                              MOV %EBX,[%EBP-4]
 5D34 FF B3 58 FF FF FF                     PUSH DWORD PTR [%EBX-168]
 5D3A 89 9D 64 FF FF FF                     MOV [%EBP-156],%EBX
 5D40 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5D43 83 C4 08                              ADD %ESP,#8
 5D46 89 C6                                 MOV %ESI,%EAX
 5D48 8B BD 64 FF FF FF                     MOV %EDI,[%EBP-156]
 5D4E 03 B7 54 FF FF FF                     ADD %ESI,[%EDI-172]
 5D54 0F BF 46 0A                           MOVSX %EAX,[%ESI+10]
 5D58 50                                    PUSH %EAX
 5D59 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 5D5C 83 C4 08                              ADD %ESP,#8
 5D5F EB 00                                 JMP L1598
  2423  
  2424  c(63):j = dmin;  l = label-3;                   !exit, continue
 5D61                      L1710  EQU $
 5D61 8B 5D F8                              MOV %EBX,[%EBP-8]
 5D64 8B 43 10                              MOV %EAX,[%EBX+16]
 5D67 89 45 D0                              MOV [%EBP-48],%EAX
 5D6A 8B 43 E4                              MOV %EAX,[%EBX-28]
 5D6D 2D 03 00 00 00                        SUB %EAX,#3
 5D72 89 43 B4                              MOV [%EBX-76],%EAX
  2425        %CYCLE
 5D75                      L1711  EQU $
  2426           fault(7) %AND ->top %IF dict(j) < 0
 5D75 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 5D78 8B 75 FC                              MOV %ESI,[%EBP-4]
 5D7B FF B6 40 FF FF FF                     PUSH DWORD PTR [%ESI-192]
 5D81 89 B5 60 FF FF FF                     MOV [%EBP-160],%ESI
 5D87 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5D8A 83 C4 08                              ADD %ESP,#8
 5D8D 89 C7                                 MOV %EDI,%EAX
 5D8F 8B 9D 60 FF FF FF                     MOV %EBX,[%EBP-160]
 5D95 03 BB 3C FF FF FF                     ADD %EDI,[%EBX-196]
 5D9B 0F BF 07                              MOVSX %EAX,[%EDI]
 5D9E 3D 00 00 00 00                        CMP %EAX,#0
 5DA3 7D 00                                 JGE L1712
 5DA5 6A 07                                 PUSH #7
 5DA7 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 5DAA 83 C4 04                              ADD %ESP,#4
 5DAD EB 00                                 JMP L1598
 5DAF                      L1712  EQU $
  2427           %EXIT %IF dict(j)&1 = 0
 5DAF FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 5DB2 8B 75 FC                              MOV %ESI,[%EBP-4]
 5DB5 FF B6 40 FF FF FF                     PUSH DWORD PTR [%ESI-192]
 5DBB 89 B5 5C FF FF FF                     MOV [%EBP-164],%ESI
 5DC1 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5DC4 83 C4 08                              ADD %ESP,#8
 5DC7 89 C7                                 MOV %EDI,%EAX
 5DC9 8B 9D 5C FF FF FF                     MOV %EBX,[%EBP-164]
 5DCF 03 BB 3C FF FF FF                     ADD %EDI,[%EBX-196]
 5DD5 0F BF 07                              MOVSX %EAX,[%EDI]
 5DD8 25 01 00 00 00                        AND %EAX,#1
 5DDD 3D 00 00 00 00                        CMP %EAX,#0
 5DE2 75 00                                 JNE L1713
 5DE4 EB 00                                 JMP L1714
 5DE6                      L1713  EQU $
  2428           j = j+1;  l = l-3
 5DE6 FF 45 D0                              INC DWORD PTR [%EBP-48]
 5DE9 8B 75 F8                              MOV %ESI,[%EBP-8]
 5DEC 83 6E B4 03                           SUB DWORD PTR [%ESI-76],#3
  2429        %REPEAT
 5DF0 EB 00                                 JMP L1711
 5DF2                      L1714  EQU $
  2430        l = l+1 %IF x = 32;                       !continue
 5DF2 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 5DF7 3D 20 00 00 00                        CMP %EAX,#32
 5DFC 75 00                                 JNE L1715
 5DFE 8B 7D F8                              MOV %EDI,[%EBP-8]
 5E01 FF 47 B4                              INC DWORD PTR [%EDI-76]
 5E04                      L1715  EQU $
  2431        op('F', l)
 5E04 6A 46                                 PUSH #70
 5E06 8B 5D F8                              MOV %EBX,[%EBP-8]
 5E09 FF 73 B4                              PUSH DWORD PTR [%EBX-76]
 5E0C E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 5E0F 83 C4 08                              ADD %ESP,#8
  2432        dict(j) = dict(j)!x;                      !show given
 5E12 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 5E15 8B 75 FC                              MOV %ESI,[%EBP-4]
 5E18 FF B6 40 FF FF FF                     PUSH DWORD PTR [%ESI-192]
 5E1E 89 B5 58 FF FF FF                     MOV [%EBP-168],%ESI
 5E24 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5E27 83 C4 08                              ADD %ESP,#8
 5E2A 89 C7                                 MOV %EDI,%EAX
 5E2C 8B 9D 58 FF FF FF                     MOV %EBX,[%EBP-168]
 5E32 03 BB 3C FF FF FF                     ADD %EDI,[%EBX-196]
 5E38 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 5E3B 8B 75 FC                              MOV %ESI,[%EBP-4]
 5E3E FF B6 40 FF FF FF                     PUSH DWORD PTR [%ESI-192]
 5E44 89 B5 54 FF FF FF                     MOV [%EBP-172],%ESI
 5E4A 89 BD 50 FF FF FF                     MOV [%EBP-176],%EDI
 5E50 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5E53 83 C4 08                              ADD %ESP,#8
 5E56 89 C7                                 MOV %EDI,%EAX
 5E58 8B 9D 54 FF FF FF                     MOV %EBX,[%EBP-172]
 5E5E 03 BB 3C FF FF FF                     ADD %EDI,[%EBX-196]
 5E64 0F BF 07                              MOVSX %EAX,[%EDI]
 5E67 0B 05 A0 00 00 00                     OR %EAX,[DATA+00A0]
 5E6D 8B B5 50 FF FF FF                     MOV %ESI,[%EBP-176]
 5E73 88 06                                 MOV [%ESI],%AL
 5E75 88 66 01                              MOV [%ESI+1],%AH
 5E78 80 26 FF                              AND BYTE PTR [%ESI],#255
 5E7B 80 66 01 FF                           AND BYTE PTR [%ESI+1],#255
  2433        ->atop
 5E7F EB 00                                 JMP L1621
  2434  
  2435  c(50):bp=bp+1 %AND buff(bp)='C';  ->cop;        !acomp
 5E81                      L1716  EQU $
 5E81 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 5E87 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 5E8D 8B 7D FC                              MOV %EDI,[%EBP-4]
 5E90 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 5E96 89 BD 4C FF FF FF                     MOV [%EBP-180],%EDI
 5E9C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5E9F 83 C4 08                              ADD %ESP,#8
 5EA2 89 C3                                 MOV %EBX,%EAX
 5EA4 8B B5 4C FF FF FF                     MOV %ESI,[%EBP-180]
 5EAA 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 5EB0 C6 03 43                              MOV BYTE PTR [%EBX],#67
 5EB3 EB 00                                 JMP L1717
  2436  
  2437  c(49): bp = bp+1
 5EB5                      L1718  EQU $
 5EB5 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
  2438         %IF next # 0 %START;                     !comparator
 5EBB 8B 45 D8                              MOV %EAX,[%EBP-40]
 5EBE 3D 00 00 00 00                        CMP %EAX,#0
 5EC3 74 00                                 JE L1719
  2439            buff(bp)='"';  push(0);               !double sided
 5EC5 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 5ECB 8B 7D FC                              MOV %EDI,[%EBP-4]
 5ECE FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 5ED4 89 BD 48 FF FF FF                     MOV [%EBP-184],%EDI
 5EDA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5EDD 83 C4 08                              ADD %ESP,#8
 5EE0 89 C3                                 MOV %EBX,%EAX
 5EE2 8B B5 48 FF FF FF                     MOV %ESI,[%EBP-184]
 5EE8 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 5EEE C6 03 22                              MOV BYTE PTR [%EBX],#34
 5EF1 6A 00                                 PUSH #0
 5EF3 E8 00 00                              CALL 'PUSH' (INTERNAL L1668 )
 5EF6 83 C4 04                              ADD %ESP,#4
  2440         %FINISH %ELSE %START
 5EF9 EB 00                                 JMP L1720
 5EFB                      L1719  EQU $
  2441            buff(bp)='?'
 5EFB FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 5F01 8B 7D FC                              MOV %EDI,[%EBP-4]
 5F04 FF B7 28 FF FF FF                     PUSH DWORD PTR [%EDI-216]
 5F0A 89 BD 44 FF FF FF                     MOV [%EBP-188],%EDI
 5F10 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5F13 83 C4 08                              ADD %ESP,#8
 5F16 89 C3                                 MOV %EBX,%EAX
 5F18 8B B5 44 FF FF FF                     MOV %ESI,[%EBP-188]
 5F1E 03 9E 24 FF FF FF                     ADD %EBX,[%ESI-220]
 5F24 C6 03 3F                              MOV BYTE PTR [%EBX],#63
  2442         %FINISH
 5F27                      L1720  EQU $
  2443  
  2444  cop:   x = x!!1 %IF cnest(cp)&2 # 0;            !invert the condition
 5F27                      L1717  EQU $
 5F27 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 5F2A 68 04 00 00 00                        PUSH COT+#4
 5F2F E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5F32 83 C4 08                              ADD %ESP,#8
 5F35 89 C7                                 MOV %EDI,%EAX
 5F37 31 C0                                 XOR %EAX,%EAX
 5F39 8A 87 84 2D 00 00                     MOV %AL,[%EDI+DATA+11652]
 5F3F 25 02 00 00 00                        AND %EAX,#2
 5F44 3D 00 00 00 00                        CMP %EAX,#0
 5F49 74 00                                 JE L1721
 5F4B 81 35 A0 00 00 00 01 00 00 00         XOR DWORD PTR [DATA+00A0],#1
 5F55                      L1721  EQU $
  2445         j = cp;  l = clab
 5F55 8B 45 E0                              MOV %EAX,[%EBP-32]
 5F58 89 45 D0                              MOV [%EBP-48],%EAX
 5F5B 8B 5D F8                              MOV %EBX,[%EBP-8]
 5F5E 8B 45 EC                              MOV %EAX,[%EBP-20]
 5F61 89 43 B4                              MOV [%EBX-76],%EAX
  2446         %WHILE cnest(j)&4 = 0 %CYCLE
 5F64                      L1722  EQU $
 5F64 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 5F67 68 04 00 00 00                        PUSH COT+#4
 5F6C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5F6F 83 C4 08                              ADD %ESP,#8
 5F72 89 C6                                 MOV %ESI,%EAX
 5F74 31 C0                                 XOR %EAX,%EAX
 5F76 8A 86 84 2D 00 00                     MOV %AL,[%ESI+DATA+11652]
 5F7C 25 04 00 00 00                        AND %EAX,#4
 5F81 3D 00 00 00 00                        CMP %EAX,#0
 5F86 75 00                                 JNE L1723
  2447            j = j-1;  l = l-cnest(j)&1
 5F88 FF 4D D0                              DEC DWORD PTR [%EBP-48]
 5F8B FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 5F8E 68 04 00 00 00                        PUSH COT+#4
 5F93 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5F96 83 C4 08                              ADD %ESP,#8
 5F99 89 C7                                 MOV %EDI,%EAX
 5F9B 31 C0                                 XOR %EAX,%EAX
 5F9D 8A 87 84 2D 00 00                     MOV %AL,[%EDI+DATA+11652]
 5FA3 25 01 00 00 00                        AND %EAX,#1
 5FA8 8B 5D F8                              MOV %EBX,[%EBP-8]
 5FAB 29 43 B4                              SUB [%EBX-76],%EAX
  2448         %REPEAT
 5FAE EB 00                                 JMP L1722
 5FB0                      L1723  EQU $
  2449         op(cc(x), l)
 5FB0 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 5FB6 68 94 03 00 00                        PUSH COT+#916
 5FBB E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5FBE 83 C4 08                              ADD %ESP,#8
 5FC1 89 C6                                 MOV %ESI,%EAX
 5FC3 31 C0                                 XOR %EAX,%EAX
 5FC5 8A 86 4C 2D 00 00                     MOV %AL,[%ESI+DATA+11596]
 5FCB 50                                    PUSH %EAX
 5FCC 8B 7D F8                              MOV %EDI,[%EBP-8]
 5FCF FF 77 B4                              PUSH DWORD PTR [%EDI-76]
 5FD2 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 5FD5 83 C4 08                              ADD %ESP,#8
  2450         def lab(clab+1) %IF cnest(cp)&1 # 0
 5FD8 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 5FDB 68 04 00 00 00                        PUSH COT+#4
 5FE0 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 5FE3 83 C4 08                              ADD %ESP,#8
 5FE6 89 C3                                 MOV %EBX,%EAX
 5FE8 8A 9B 84 2D 00 00                     MOV %BL,[%EBX+DATA+11652]
 5FEE 81 E3 FF 00 00 00                     AND %EBX,#255
 5FF4 81 E3 01 00 00 00                     AND %EBX,#1
 5FFA 83 FB 00                              CMP %EBX,#0
 5FFD 74 00                                 JE L1724
 5FFF 8B 45 EC                              MOV %EAX,[%EBP-20]
 6002 40                                    INC %EAX
 6003 50                                    PUSH %EAX
 6004 E8 00 00                              CALL 'DEFLAB' (INTERNAL L1530 )
 6007 83 C4 04                              ADD %ESP,#4
 600A                      L1724  EQU $
  2451         cp = cp-1
 600A FF 4D E0                              DEC DWORD PTR [%EBP-32]
  2452         clab = clab-cnest(cp)&1
 600D FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 6010 68 04 00 00 00                        PUSH COT+#4
 6015 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6018 83 C4 08                              ADD %ESP,#8
 601B 89 C6                                 MOV %ESI,%EAX
 601D 31 C0                                 XOR %EAX,%EAX
 601F 8A 86 84 2D 00 00                     MOV %AL,[%ESI+DATA+11652]
 6025 25 01 00 00 00                        AND %EAX,#1
 602A 29 45 EC                              SUB [%EBP-20],%EAX
  2453         ->top
 602D EB 00                                 JMP L1598
  2454  
  2455  c(78):                                              !fresult
 602F                      L1725  EQU $
  2456  c(79):                                              !mresult
 602F                      L1726  EQU $
  2457  c(80):   open = 0;                                  !return, true, false
 602F                      L1727  EQU $
 602F 8B 7D F8                              MOV %EDI,[%EBP-8]
 6032 C7 47 F4 00 00 00 00                  MOV DWORD PTR [%EDI-12],#0
  2458  c(82):   access = 0;                                !stop
 6039                      L1728  EQU $
 6039 8B 5D F8                              MOV %EBX,[%EBP-8]
 603C C7 43 E0 00 00 00 00                  MOV DWORD PTR [%EBX-32],#0
  2459  c(89):                                              !addop
 6043                      L1729  EQU $
  2460  c(81):   bp=bp+1 %AND buff(bp)=x;  ->top;           !monitor
 6043                      L1730  EQU $
 6043 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 6049 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 604F 8B 75 FC                              MOV %ESI,[%EBP-4]
 6052 FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 6058 89 B5 40 FF FF FF                     MOV [%EBP-192],%ESI
 605E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6061 83 C4 08                              ADD %ESP,#8
 6064 89 C7                                 MOV %EDI,%EAX
 6066 8B 9D 40 FF FF FF                     MOV %EBX,[%EBP-192]
 606C 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 6072 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6077 88 07                                 MOV [%EDI],%AL
 6079 EB 00                                 JMP L1598
  2461  
  2462  c(65):   pop lit;  op('e', lit);  ->atop;           !signal
 607B                      L1731  EQU $
 607B E8 00 00                              CALL 'POPLIT' (INTERNAL L1587 )
 607E 6A 65                                 PUSH #101
 6080 FF 35 48 02 00 00                     PUSH DWORD PTR [DATA+0248]
 6086 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 6089 83 C4 08                              ADD %ESP,#8
 608C EB 00                                 JMP L1621
  2463  
  2464  c(51):   bp=bp+1 %AND buff(bp)='S';  ->top;         !eq
 608E                      L1732  EQU $
 608E FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 6094 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 609A 8B 75 FC                              MOV %ESI,[%EBP-4]
 609D FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 60A3 89 B5 3C FF FF FF                     MOV [%EBP-196],%ESI
 60A9 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 60AC 83 C4 08                              ADD %ESP,#8
 60AF 89 C7                                 MOV %EDI,%EAX
 60B1 8B 9D 3C FF FF FF                     MOV %EBX,[%EBP-196]
 60B7 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 60BD C6 07 53                              MOV BYTE PTR [%EDI],#83
 60C0 EB 00                                 JMP L1598
  2465  c(53):   bp=bp+1 %AND buff(bp)='j';  ->top;         !jam transfer
 60C2                      L1733  EQU $
 60C2 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 60C8 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 60CE 8B 75 FC                              MOV %ESI,[%EBP-4]
 60D1 FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 60D7 89 B5 38 FF FF FF                     MOV [%EBP-200],%ESI
 60DD E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 60E0 83 C4 08                              ADD %ESP,#8
 60E3 89 C7                                 MOV %EDI,%EAX
 60E5 8B 9D 38 FF FF FF                     MOV %EBX,[%EBP-200]
 60EB 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 60F1 C6 07 6A                              MOV BYTE PTR [%EDI],#106
 60F4 EB 00                                 JMP L1598
  2466  c(52):   bp=bp+1 %AND buff(bp)='Z';  ->top;         !eqeq
 60F6                      L1734  EQU $
 60F6 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 60FC FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 6102 8B 75 FC                              MOV %ESI,[%EBP-4]
 6105 FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 610B 89 B5 34 FF FF FF                     MOV [%EBP-204],%ESI
 6111 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6114 83 C4 08                              ADD %ESP,#8
 6117 89 C7                                 MOV %EDI,%EAX
 6119 8B 9D 34 FF FF FF                     MOV %EBX,[%EBP-204]
 611F 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 6125 C6 07 5A                              MOV BYTE PTR [%EDI],#90
 6128 EB 00                                 JMP L1598
  2467  
  2468  c(74):%IF level = 0 %START;                         !begin
 612A                      L1735  EQU $
 612A 8B 75 F8                              MOV %ESI,[%EBP-8]
 612D 8B 46 18                              MOV %EAX,[%ESI+24]
 6130 3D 00 00 00 00                        CMP %EAX,#0
 6135 75 00                                 JNE L1736
  2469           %IF progmode <= 0 %THEN progmode = 1 %ELSE fault(7)
 6137 A1 78 01 00 00                        MOV %EAX,[DATA+0178]
 613C 3D 00 00 00 00                        CMP %EAX,#0
 6141 7F 00                                 JG L1737
 6143 C7 05 78 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+0178],#1
 614D EB 00                                 JMP L1738
 614F                      L1737  EQU $
 614F 6A 07                                 PUSH #7
 6151 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 6154 83 C4 04                              ADD %ESP,#4
 6157                      L1738  EQU $
  2470           {Permit BEGIN after external defs}
  2471        %FINISH
 6157                      L1736  EQU $
  2472        spec mode = level+1
 6157 8B 7D F8                              MOV %EDI,[%EBP-8]
 615A 8B 47 18                              MOV %EAX,[%EDI+24]
 615D 40                                    INC %EAX
 615E 89 05 80 01 00 00                     MOV [DATA+0180],%EAX
  2473        block x = 0
 6164 C7 05 50 02 00 00 00 00 00 00         MOV DWORD PTR [DATA+0250],#0
  2474        bp=bp+1 %AND buff(bp)='H';  %RETURN
 616E FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 6174 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 617A 8B 5D FC                              MOV %EBX,[%EBP-4]
 617D FF B3 28 FF FF FF                     PUSH DWORD PTR [%EBX-216]
 6183 89 9D 30 FF FF FF                     MOV [%EBP-208],%EBX
 6189 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 618C 83 C4 08                              ADD %ESP,#8
 618F 89 C6                                 MOV %ESI,%EAX
 6191 8B BD 30 FF FF FF                     MOV %EDI,[%EBP-208]
 6197 03 B7 24 FF FF FF                     ADD %ESI,[%EDI-220]
 619D C6 06 48                              MOV BYTE PTR [%ESI],#72
 61A0 C9                                    LEAVE
 61A1 C3                                    RET
  2475  c(77):perm = 0;  lines = 0;  stats = 0;             !endofperm
 61A2                      L1739  EQU $
 61A2 C7 05 74 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0174],#0
 61AC C7 05 C4 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00C4],#0
 61B6 C7 05 DC 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00DC],#0
  2476        close input
 61C0 E8 6F 00                              CALL 'CLOSEINPUT' (EXTERN 111)
  2477        select input(source)
 61C3 6A 01                                 PUSH #1
 61C5 E8 1B 00                              CALL 'SELECTINPUT' (EXTERN 27)
 61C8 83 C4 04                              ADD %ESP,#4
  2478        list = list-1
 61CB FF 0D 54 02 00 00                     DEC DWORD PTR [DATA+0254]
  2479        tbase = tmax;  tstart = tmax
 61D1 8B 5D F8                              MOV %EBX,[%EBP-8]
 61D4 8B 43 0C                              MOV %EAX,[%EBX+12]
 61D7 89 43 EC                              MOV [%EBX-20],%EAX
 61DA 8B 43 0C                              MOV %EAX,[%EBX+12]
 61DD 89 43 E8                              MOV [%EBX-24],%EAX
  2480        %RETURN
 61E0 C9                                    LEAVE
 61E1 C3                                    RET
  2481  c(76):%IF include # 0 %AND x = 0 %START;            !end of ...
 61E2                      L1740  EQU $
 61E2 A1 70 01 00 00                        MOV %EAX,[DATA+0170]
 61E7 3D 00 00 00 00                        CMP %EAX,#0
 61EC 74 00                                 JE L1741
 61EE A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 61F3 3D 00 00 00 00                        CMP %EAX,#0
 61F8 75 00                                 JNE L1741
  2482           lines = include;  sstype =  0;             !include
 61FA A1 70 01 00 00                        MOV %EAX,[DATA+0170]
 61FF 89 05 C4 00 00 00                     MOV [DATA+00C4],%EAX
 6205 C7 05 7C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+017C],#0
  2483           close input
 620F E8 6F 00                              CALL 'CLOSEINPUT' (EXTERN 111)
  2484           list = include list
 6212 A1 68 01 00 00                        MOV %EAX,[DATA+0168]
 6217 89 05 54 02 00 00                     MOV [DATA+0254],%EAX
  2485           include level = 0
 621D C7 05 6C 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+016C],#0
  2486           include = 0;  select input(source);  %RETURN
 6227 C7 05 70 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+0170],#0
 6231 6A 01                                 PUSH #1
 6233 E8 1B 00                              CALL 'SELECTINPUT' (EXTERN 27)
 6236 83 C4 04                              ADD %ESP,#4
 6239 C9                                    LEAVE
 623A C3                                    RET
  2487        %FINISH
 623B                      L1741  EQU $
  2488        ss = -1;                                      !prog/file
 623B C7 05 64 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+0164],#-1
  2489  c(75):compile end(x);  %RETURN;                     !%END
 6245                      L1742  EQU $
 6245 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 624B E8 00 00                              CALL 'COMPILEEND' (INTERNAL L1550 )
 624E 83 C4 04                              ADD %ESP,#4
 6251 C9                                    LEAVE
 6252 C3                                    RET
  2490  
  2491  c(85):%IF x=0 %THEN control=lit %ELSE %START;       !control
 6253                      L1743  EQU $
 6253 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6258 3D 00 00 00 00                        CMP %EAX,#0
 625D 75 00                                 JNE L1744
 625F A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6264 89 05 58 02 00 00                     MOV [DATA+0258],%EAX
 626A EB 00                                 JMP L1745
 626C                      L1744  EQU $
  2492           diag = lit&x'3FFF' %IF lit>>14&3 = 1
 626C A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6271 C1 E8 0E                              SHR %EAX,#14
 6274 25 03 00 00 00                        AND %EAX,#3
 6279 3D 01 00 00 00                        CMP %EAX,#1
 627E 75 00                                 JNE L1746
 6280 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6285 25 FF 3F 00 00                        AND %EAX,#16383
 628A 89 05 5C 02 00 00                     MOV [DATA+025C],%EAX
 6290                      L1746  EQU $
  2493        %FINISH
 6290                      L1745  EQU $
  2494        op('z'-x, lit)
 6290 B8 7A 00 00 00                        MOV %EAX,#122
 6295 2B 05 A0 00 00 00                     SUB %EAX,[DATA+00A0]
 629B 50                                    PUSH %EAX
 629C FF 35 48 02 00 00                     PUSH DWORD PTR [DATA+0248]
 62A2 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 62A5 83 C4 08                              ADD %ESP,#8
  2495        ->top
 62A8 EB 00                                 JMP L1598
  2496  c(83):list = list+x-2;   ->top;                     !%LIST/%ENDOFLIST
 62AA                      L1747  EQU $
 62AA A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 62AF 03 05 A0 00 00 00                     ADD %EAX,[DATA+00A0]
 62B5 2D 02 00 00 00                        SUB %EAX,#2
 62BA 89 05 54 02 00 00                     MOV [DATA+0254],%EAX
 62C0 EB 00                                 JMP L1598
  2497  c(84):reals ln = x;      ->top;                     !%REALS long/normal
 62C2                      L1748  EQU $
 62C2 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 62C7 89 05 18 01 00 00                     MOV [DATA+0118],%EAX
 62CD EB 00                                 JMP L1598
  2498  c(86):%IF include # 0 %START;                       !include "file"
 62CF                      L1749  EQU $
 62CF A1 70 01 00 00                        MOV %EAX,[DATA+0170]
 62D4 3D 00 00 00 00                        CMP %EAX,#0
 62D9 74 00                                 JE L1750
  2499           fault(7);  %RETURN
 62DB 6A 07                                 PUSH #7
 62DD E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 62E0 83 C4 04                              ADD %ESP,#4
 62E3 C9                                    LEAVE
 62E4 C3                                    RET
  2500        %FINISH
 62E5                      L1750  EQU $
  2501        get next;                                     !sconst
 62E5 E8 00 00                              CALL 'GETNEXT' (INTERNAL L1531 )
  2502        include file = string(x-x'4000'+stbase)
 62E8 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 62ED 2D 00 40 00 00                        SUB %EAX,#16384
 62F2 03 05 54 01 00 00                     ADD %EAX,[DATA+0154]
 62F8 8B 75 FC                              MOV %ESI,[%EBP-4]
 62FB 8D 4E A0                              LEA %ECX,[%ESI-96]
 62FE 51                                    PUSH %ECX
 62FF 50                                    PUSH %EAX
 6300 6A 3F                                 PUSH #63
 6302 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 6305 83 C4 0C                              ADD %ESP,#12
  2503        %begin
 6308 E8 00 00                              CALL '$L1751' (INTERNAL L1751 )
 630B EB 00                                 JMP L1752
 630D                      L1751  EQU $
 630D C8 00 00 04                           ENTER 0000,4
  2504           %on 9 %start;  Abandon(9);  %finish
 6311 89 65 EC                              MOV [%EBP-20],%ESP
 6314 EB 00                                 JMP L1753
 6316                      L1754  EQU $
 6316 8B 65 EC                              MOV %ESP,[%EBP-20]
 6319 6A 09                                 PUSH #9
 631B E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 631E 83 C4 04                              ADD %ESP,#4
 6321                      L1753  EQU $
  2505           open input(3, include file)
 6321 6A 03                                 PUSH #3
 6323 81 EC 00 01 00 00                     SUB %ESP,#256
 6329 89 E0                                 MOV %EAX,%ESP
 632B 50                                    PUSH %EAX
 632C 8B 7D FC                              MOV %EDI,[%EBP-4]
 632F 8D 47 A0                              LEA %EAX,[%EDI-96]
 6332 50                                    PUSH %EAX
 6333 68 FF 00 00 00                        PUSH #255
 6338 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 633B 83 C4 0C                              ADD %ESP,#12
 633E E8 71 00                              CALL 'OPENINPUT' (EXTERN 113)
 6341 81 C4 04 01 00 00                     ADD %ESP,#260
  2506        %end
 6347 C9                                    LEAVE
 6348 C3                                    RET
 6349                      L1752  EQU $
  2507        include = lines;  lines = 0
  2508        include list = list;  include level = level
 6349 A1 C4 00 00 00                        MOV %EAX,[DATA+00C4]
 634E 89 05 70 01 00 00                     MOV [DATA+0170],%EAX
 6354 C7 05 C4 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+00C4],#0
 635E A1 54 02 00 00                        MOV %EAX,[DATA+0254]
 6363 89 05 68 01 00 00                     MOV [DATA+0168],%EAX
 6369 8B 5D F8                              MOV %EBX,[%EBP-8]
 636C 8B 43 18                              MOV %EAX,[%EBX+24]
 636F 89 05 6C 01 00 00                     MOV [DATA+016C],%EAX
  2509        select input(3)
 6375 6A 03                                 PUSH #3
 6377 E8 1B 00                              CALL 'SELECTINPUT' (EXTERN 27)
 637A 83 C4 04                              ADD %ESP,#4
  2510        ->top
 637D EB 00                                 JMP L1598
  2511  
  2512  c(154):dimension = dimension+1;                     !dbsep
 637F                      L1755  EQU $
 637F FF 05 AC 01 00 00                     INC DWORD PTR [DATA+01AC]
  2513         fault(11) %IF dimension = dim limit+1
 6385 A1 AC 01 00 00                        MOV %EAX,[DATA+01AC]
 638A 3D 07 00 00 00                        CMP %EAX,#7
 638F 75 00                                 JNE L1756
 6391 6A 0B                                 PUSH #11
 6393 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 6396 83 C4 04                              ADD %ESP,#4
 6399                      L1756  EQU $
  2514         ->top
 6399 EB 00                                 JMP L1598
  2515  c(145):set bp;                       ->top;         !crb
 639B                      L1757  EQU $
 639B E8 00 00                              CALL 'SETBP' (INTERNAL L1547 )
 639E EB 00                                 JMP L1598
  2516  c(146):set bp;                                      !rcrb
 63A0                      L1758  EQU $
 63A0 E8 00 00                              CALL 'SETBP' (INTERNAL L1547 )
  2517  c(142):                                             !bplrb
 63A3                      L1759  EQU $
  2518         dimension = 1 %IF dimension = 0
 63A3 A1 AC 01 00 00                        MOV %EAX,[DATA+01AC]
 63A8 3D 00 00 00 00                        CMP %EAX,#0
 63AD 75 00                                 JNE L1760
 63AF C7 05 AC 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+01AC],#1
 63B9                      L1760  EQU $
  2519         op('d', dimension);  op(',', defs)
 63B9 6A 64                                 PUSH #100
 63BB FF 35 AC 01 00 00                     PUSH DWORD PTR [DATA+01AC]
 63C1 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 63C4 83 C4 08                              ADD %ESP,#8
 63C7 6A 2C                                 PUSH #44
 63C9 FF 75 B8                              PUSH DWORD PTR [%EBP-72]
 63CC E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 63CF 83 C4 08                              ADD %ESP,#8
  2520         %IF class # 146 %START
 63D2 8B 45 C0                              MOV %EAX,[%EBP-64]
 63D5 3D 92 00 00 00                        CMP %EAX,#146
 63DA 74 00                                 JE L1761
  2521            set subs(defs)
 63DC FF 75 B8                              PUSH DWORD PTR [%EBP-72]
 63DF E8 00 00                              CALL 'SETSUBS' (INTERNAL L1543 )
 63E2 83 C4 04                              ADD %ESP,#4
  2522            fault(13) %IF dict(dmin) >= 0 %OR inhibit # 0 %OR level=0
 63E5 8B 75 F8                              MOV %ESI,[%EBP-8]
 63E8 FF 76 10                              PUSH DWORD PTR [%ESI+16]
 63EB 8B 7D FC                              MOV %EDI,[%EBP-4]
 63EE FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 63F4 89 BD 2C FF FF FF                     MOV [%EBP-212],%EDI
 63FA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 63FD 83 C4 08                              ADD %ESP,#8
 6400 89 C3                                 MOV %EBX,%EAX
 6402 8B B5 2C FF FF FF                     MOV %ESI,[%EBP-212]
 6408 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 640E 0F BF 1B                              MOVSX %EBX,[%EBX]
 6411 83 FB 00                              CMP %EBX,#0
 6414 7D 00                                 JGE L1762
 6416 8B 7D F8                              MOV %EDI,[%EBP-8]
 6419 8B 47 DC                              MOV %EAX,[%EDI-36]
 641C 3D 00 00 00 00                        CMP %EAX,#0
 6421 75 00                                 JNE L1762
 6423 8B 47 18                              MOV %EAX,[%EDI+24]
 6426 3D 00 00 00 00                        CMP %EAX,#0
 642B 75 00                                 JNE L1763
 642D                      L1762  EQU $
 642D 6A 0D                                 PUSH #13
 642F E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 6432 83 C4 04                              ADD %ESP,#4
 6435                      L1763  EQU $
  2523         %FINISH
 6435                      L1761  EQU $
  2524         dimension = 0;  defs = 0
 6435 C7 05 AC 01 00 00 00 00 00 00         MOV DWORD PTR [DATA+01AC],#0
 643F C7 45 B8 00 00 00 00                  MOV DWORD PTR [%EBP-72],#0
  2525         ->top
 6446 EB 00                                 JMP L1598
  2526  c(128):id = dupid;  ->top;                          !EDUP
 6448                      L1764  EQU $
 6448 8B 5D F8                              MOV %EBX,[%EBP-8]
 644B 8B 45 E8                              MOV %EAX,[%EBP-24]
 644E 89 43 08                              MOV [%EBX+8],%EAX
 6451 EB 00                                 JMP L1598
  2527  c(130):block x = x
 6453                      L1765  EQU $
 6453 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6458 89 05 50 02 00 00                     MOV [DATA+0250],%EAX
  2528         op('F', 0) %IF decl&spec = 0 %AND level # 0; !jump round proc
 645E A1 FC 00 00 00                        MOV %EAX,[DATA+00FC]
 6463 25 80 00 00 00                        AND %EAX,#128
 6468 3D 00 00 00 00                        CMP %EAX,#0
 646D 75 00                                 JNE L1766
 646F 8B 75 F8                              MOV %ESI,[%EBP-8]
 6472 8B 46 18                              MOV %EAX,[%ESI+24]
 6475 3D 00 00 00 00                        CMP %EAX,#0
 647A 74 00                                 JE L1766
 647C 6A 46                                 PUSH #70
 647E 6A 00                                 PUSH #0
 6480 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 6483 83 C4 08                              ADD %ESP,#8
 6486                      L1766  EQU $
  2529  c(125):dupid = id;                                  !%DUP
 6486                      L1767  EQU $
 6486 8B 7D F8                              MOV %EDI,[%EBP-8]
 6489 8B 47 08                              MOV %EAX,[%EDI+8]
 648C 89 45 E8                              MOV [%EBP-24],%EAX
  2530         %return %if Level < 0                        {spec about}
 648F 8B 47 18                              MOV %EAX,[%EDI+24]
 6492 3D 00 00 00 00                        CMP %EAX,#0
 6497 7D 00                                 JGE L1768
 6499 C9                                    LEAVE
 649A C3                                    RET
 649B                      L1768  EQU $
  2531  c(90): def(x);  ->top;                              !ident
 649B                      L1769  EQU $
 649B FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 64A1 E8 00 00                              CALL 'DEF' (INTERNAL L1561 )
 64A4 83 C4 04                              ADD %ESP,#4
 64A7 EB 00                                 JMP L1598
  2532  c(131):                                             !cident
 64A9                      L1770  EQU $
  2533         %IF tag(x)_flags&(b'1111111'+const bit) = iform+const bit %START
 64A9 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 64AF 8B 5D FC                              MOV %EBX,[%EBP-4]
 64B2 FF B3 58 FF FF FF                     PUSH DWORD PTR [%EBX-168]
 64B8 89 9D 28 FF FF FF                     MOV [%EBP-216],%EBX
 64BE E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 64C1 83 C4 08                              ADD %ESP,#8
 64C4 89 C6                                 MOV %ESI,%EAX
 64C6 8B BD 28 FF FF FF                     MOV %EDI,[%EBP-216]
 64CC 03 B7 54 FF FF FF                     ADD %ESI,[%EDI-172]
 64D2 0F BF 46 08                           MOVSX %EAX,[%ESI+8]
 64D6 25 7F 20 00 00                        AND %EAX,#8319
 64DB 3D 11 20 00 00                        CMP %EAX,#8209
 64E0 75 00                                 JNE L1771
  2534            tag(x)_format = lit
 64E2 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 64E8 8B 5D FC                              MOV %EBX,[%EBP-4]
 64EB FF B3 58 FF FF FF                     PUSH DWORD PTR [%EBX-168]
 64F1 89 9D 24 FF FF FF                     MOV [%EBP-220],%EBX
 64F7 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 64FA 83 C4 08                              ADD %ESP,#8
 64FD 89 C6                                 MOV %ESI,%EAX
 64FF 8B BD 24 FF FF FF                     MOV %EDI,[%EBP-220]
 6505 03 B7 54 FF FF FF                     ADD %ESI,[%EDI-172]
 650B A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6510 89 46 04                              MOV [%ESI+4],%EAX
  2535         %FINISH %ELSE %START
 6513 EB 00                                 JMP L1772
 6515                      L1771  EQU $
  2536            set const(lit) %IF pending # 0
 6515 8B 45 AC                              MOV %EAX,[%EBP-84]
 6518 3D 00 00 00 00                        CMP %EAX,#0
 651D 74 00                                 JE L1773
 651F FF 35 48 02 00 00                     PUSH DWORD PTR [DATA+0248]
 6525 E8 00 00                              CALL 'SETCONST' (INTERNAL L1036 )
 6528 83 C4 04                              ADD %ESP,#4
 652B                      L1773  EQU $
  2537            def(x)
 652B FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 6531 E8 00 00                              CALL 'DEF' (INTERNAL L1561 )
 6534 83 C4 04                              ADD %ESP,#4
  2538           op('A', 1)
 6537 6A 41                                 PUSH #65
 6539 6A 01                                 PUSH #1
 653B E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 653E 83 C4 08                              ADD %ESP,#8
  2539         %FINISH
 6541                      L1772  EQU $
  2540         cident = x
 6541 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6546 89 45 B0                              MOV [%EBP-80],%EAX
  2541         ->top
 6549 EB 00                                 JMP L1598
  2542  c(124):dubious = 1 %IF tag(cident)_flags&prot # 0; !%DUBIOUS
 654B                      L1774  EQU $
 654B FF 75 B0                              PUSH DWORD PTR [%EBP-80]
 654E 8B 5D FC                              MOV %EBX,[%EBP-4]
 6551 FF B3 58 FF FF FF                     PUSH DWORD PTR [%EBX-168]
 6557 89 9D 20 FF FF FF                     MOV [%EBP-224],%EBX
 655D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6560 83 C4 08                              ADD %ESP,#8
 6563 89 C6                                 MOV %ESI,%EAX
 6565 8B BD 20 FF FF FF                     MOV %EDI,[%EBP-224]
 656B 03 B7 54 FF FF FF                     ADD %ESI,[%EDI-172]
 6571 0F BF 46 08                           MOVSX %EAX,[%ESI+8]
 6575 25 00 01 00 00                        AND %EAX,#256
 657A 3D 00 00 00 00                        CMP %EAX,#0
 657F 74 00                                 JE L1775
 6581 C7 05 98 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+0198],#1
 658B                      L1775  EQU $
  2543         ->top
 658B EB 00                                 JMP L1598
  2544  c(97):                                              !f
 658D                      L1776  EQU $
  2545  c(98):                                              !m
 658D                      L1777  EQU $
  2546  c(99):                                              !p
 658D                      L1778  EQU $
  2547  c(96): call;  ->top;                                !r
 658D                      L1779  EQU $
 658D E8 00 00                              CALL 'CALL' (INTERNAL L1583 )
 6590 EB 00                                 JMP L1598
  2548  
  2549  c(165):                                             !nlab
 6592                      L1780  EQU $
  2550  c(100):                                             !rp
 6592                      L1781  EQU $
  2551  c(101):                                             !fp
 6592                      L1782  EQU $
  2552  c(102):                                             !mp
 6592                      L1783  EQU $
  2553  c(103):                                             !pp
 6592                      L1784  EQU $
  2554  c(91):                                              !v
 6592                      L1785  EQU $
  2555  c(92):                                              !n
 6592                      L1786  EQU $
  2556  c(106):                                             !a
 6592                      L1787  EQU $
  2557  c(107):                                             !an
 6592                      L1788  EQU $
  2558  c(108):                                             !na
 6592                      L1789  EQU $
  2559  c(109):                                             !nan
 6592                      L1790  EQU $
  2560        k = tag(x)_index
 6592 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 6598 8B 5D FC                              MOV %EBX,[%EBP-4]
 659B FF B3 58 FF FF FF                     PUSH DWORD PTR [%EBX-168]
 65A1 89 9D 1C FF FF FF                     MOV [%EBP-228],%EBX
 65A7 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 65AA 83 C4 08                              ADD %ESP,#8
 65AD 89 C6                                 MOV %ESI,%EAX
 65AF 8B BD 1C FF FF FF                     MOV %EDI,[%EBP-228]
 65B5 03 B7 54 FF FF FF                     ADD %ESI,[%EDI-172]
 65BB 0F BF 46 0A                           MOVSX %EAX,[%ESI+10]
 65BF 89 45 CC                              MOV [%EBP-52],%EAX
  2561        %IF k < 0 %THEN op('n', -k) %ELSE op('@', k)
 65C2 8B 45 CC                              MOV %EAX,[%EBP-52]
 65C5 3D 00 00 00 00                        CMP %EAX,#0
 65CA 7D 00                                 JGE L1791
 65CC 6A 6E                                 PUSH #110
 65CE 8B 45 CC                              MOV %EAX,[%EBP-52]
 65D1 F7 D8                                 NEG %EAX
 65D3 50                                    PUSH %EAX
 65D4 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 65D7 83 C4 08                              ADD %ESP,#8
 65DA EB 00                                 JMP L1792
 65DC                      L1791  EQU $
 65DC 6A 40                                 PUSH #64
 65DE FF 75 CC                              PUSH DWORD PTR [%EBP-52]
 65E1 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 65E4 83 C4 08                              ADD %ESP,#8
 65E7                      L1792  EQU $
  2562        ->top
 65E7 EB 00                                 JMP L1598
  2563  c(121):set const(0);  ->top;                        !special for zero
 65E9                      L1793  EQU $
 65E9 6A 00                                 PUSH #0
 65EB E8 00 00                              CALL 'SETCONST' (INTERNAL L1036 )
 65EE 83 C4 04                              ADD %ESP,#4
 65F1 EB 00                                 JMP L1598
  2564  c(167):bp=bp+1;  buff(bp)='G';  ->pstr;             !aconst (alias)
 65F3                      L1794  EQU $
 65F3 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 65F9 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 65FF 8B 5D FC                              MOV %EBX,[%EBP-4]
 6602 FF B3 28 FF FF FF                     PUSH DWORD PTR [%EBX-216]
 6608 89 9D 18 FF FF FF                     MOV [%EBP-232],%EBX
 660E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6611 83 C4 08                              ADD %ESP,#8
 6614 89 C6                                 MOV %ESI,%EAX
 6616 8B BD 18 FF FF FF                     MOV %EDI,[%EBP-232]
 661C 03 B7 24 FF FF FF                     ADD %ESI,[%EDI-220]
 6622 C6 06 47                              MOV BYTE PTR [%ESI],#71
 6625 EB 00                                 JMP L1795
  2565  c(const):                                           !const
 6627                      L1796  EQU $
  2566         %IF x < 0 %START;                            !constinteger
 6627 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 662C 3D 00 00 00 00                        CMP %EAX,#0
 6631 7D 00                                 JGE L1797
  2567            set const(tag(-x)_format);  ->top
 6633 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6638 F7 D8                                 NEG %EAX
 663A 50                                    PUSH %EAX
 663B 8B 5D FC                              MOV %EBX,[%EBP-4]
 663E FF B3 58 FF FF FF                     PUSH DWORD PTR [%EBX-168]
 6644 89 9D 14 FF FF FF                     MOV [%EBP-236],%EBX
 664A E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 664D 83 C4 08                              ADD %ESP,#8
 6650 89 C6                                 MOV %ESI,%EAX
 6652 8B BD 14 FF FF FF                     MOV %EDI,[%EBP-236]
 6658 03 B7 54 FF FF FF                     ADD %ESI,[%EDI-172]
 665E FF 76 04                              PUSH DWORD PTR [%ESI+4]
 6661 E8 00 00                              CALL 'SETCONST' (INTERNAL L1036 )
 6664 83 C4 04                              ADD %ESP,#4
 6667 EB 00                                 JMP L1598
  2568         %FINISH
 6669                      L1797  EQU $
  2569         %IF x&x'4000' # 0 %START;                    !strings
 6669 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 666E 25 00 40 00 00                        AND %EAX,#16384
 6673 3D 00 00 00 00                        CMP %EAX,#0
 6678 74 00                                 JE L1798
  2570            bp=bp+1 %AND buff(bp)=''''
 667A FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 6680 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 6686 8B 5D FC                              MOV %EBX,[%EBP-4]
 6689 FF B3 28 FF FF FF                     PUSH DWORD PTR [%EBX-216]
 668F 89 9D 10 FF FF FF                     MOV [%EBP-240],%EBX
 6695 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6698 83 C4 08                              ADD %ESP,#8
 669B 89 C6                                 MOV %ESI,%EAX
 669D 8B BD 10 FF FF FF                     MOV %EDI,[%EBP-240]
 66A3 03 B7 24 FF FF FF                     ADD %ESI,[%EDI-220]
 66A9 C6 06 27                              MOV BYTE PTR [%ESI],#39
  2571  pstr:     x = x-x'4000'+stbase
 66AC                      L1795  EQU $
 66AC A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 66B1 2D 00 40 00 00                        SUB %EAX,#16384
 66B6 03 05 54 01 00 00                     ADD %EAX,[DATA+0154]
 66BC 89 05 A0 00 00 00                     MOV [DATA+00A0],%EAX
  2572            k = byteinteger(x)
 66C2 8B 1D A0 00 00 00                     MOV %EBX,[DATA+00A0]
 66C8 31 C0                                 XOR %EAX,%EAX
 66CA 8A 03                                 MOV %AL,[%EBX]
 66CC 89 45 CC                              MOV [%EBP-52],%EAX
  2573            bp=bp+1 %AND buff(bp)=k
 66CF FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 66D5 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 66DB 8B 75 FC                              MOV %ESI,[%EBP-4]
 66DE FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 66E4 89 B5 0C FF FF FF                     MOV [%EBP-244],%ESI
 66EA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 66ED 83 C4 08                              ADD %ESP,#8
 66F0 89 C7                                 MOV %EDI,%EAX
 66F2 8B 9D 0C FF FF FF                     MOV %EBX,[%EBP-244]
 66F8 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 66FE 8B 45 CC                              MOV %EAX,[%EBP-52]
 6701 88 07                                 MOV [%EDI],%AL
  2574            k = k+x
 6703 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6708 01 45 CC                              ADD [%EBP-52],%EAX
  2575            %CYCLE
 670B                      L1799  EQU $
  2576               ->top %IF x = k
 670B A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6710 3B 45 CC                              CMP %EAX,[%EBP-52]
 6713 75 00                                 JNE L1800
 6715 EB 00                                 JMP L1598
 6717                      L1800  EQU $
  2577               x = x+1;  bp=bp+1 %AND buff(bp)=byteinteger(x)
 6717 FF 05 A0 00 00 00                     INC DWORD PTR [DATA+00A0]
 671D FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 6723 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 6729 8B 75 FC                              MOV %ESI,[%EBP-4]
 672C FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 6732 89 B5 08 FF FF FF                     MOV [%EBP-248],%ESI
 6738 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 673B 83 C4 08                              ADD %ESP,#8
 673E 89 C7                                 MOV %EDI,%EAX
 6740 8B 9D 08 FF FF FF                     MOV %EBX,[%EBP-248]
 6746 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 674C 8B 35 A0 00 00 00                     MOV %ESI,[DATA+00A0]
 6752 8A 06                                 MOV %AL,[%ESI]
 6754 88 07                                 MOV [%EDI],%AL
  2578            %REPEAT
 6756 EB 00                                 JMP L1799
  2579         %FINISH
 6758                      L1798  EQU $
  2580         %IF x&x'2000' # 0 %START;                    !real
 6758 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 675D 25 00 20 00 00                        AND %EAX,#8192
 6762 3D 00 00 00 00                        CMP %EAX,#0
 6767 74 00                                 JE L1801
  2581            x = x-x'2000'+stbase
 6769 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 676E 2D 00 20 00 00                        SUB %EAX,#8192
 6773 03 05 54 01 00 00                     ADD %EAX,[DATA+0154]
 6779 89 05 A0 00 00 00                     MOV [DATA+00A0],%EAX
  2582            k = byteinteger(x)
 677F 8B 3D A0 00 00 00                     MOV %EDI,[DATA+00A0]
 6785 31 C0                                 XOR %EAX,%EAX
 6787 8A 07                                 MOV %AL,[%EDI]
 6789 89 45 CC                              MOV [%EBP-52],%EAX
  2583            op('D', k);  bp=bp+1 %AND buff(bp)=','
 678C 6A 44                                 PUSH #68
 678E FF 75 CC                              PUSH DWORD PTR [%EBP-52]
 6791 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 6794 83 C4 08                              ADD %ESP,#8
 6797 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 679D FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 67A3 8B 5D FC                              MOV %EBX,[%EBP-4]
 67A6 FF B3 28 FF FF FF                     PUSH DWORD PTR [%EBX-216]
 67AC 89 9D 04 FF FF FF                     MOV [%EBP-252],%EBX
 67B2 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 67B5 83 C4 08                              ADD %ESP,#8
 67B8 89 C6                                 MOV %ESI,%EAX
 67BA 8B BD 04 FF FF FF                     MOV %EDI,[%EBP-252]
 67C0 03 B7 24 FF FF FF                     ADD %ESI,[%EDI-220]
 67C6 C6 06 2C                              MOV BYTE PTR [%ESI],#44
  2584            k = k+x
 67C9 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 67CE 01 45 CC                              ADD [%EBP-52],%EAX
  2585            %CYCLE
 67D1                      L1802  EQU $
  2586               ->top %IF x = k
 67D1 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 67D6 3B 45 CC                              CMP %EAX,[%EBP-52]
 67D9 75 00                                 JNE L1803
 67DB EB 00                                 JMP L1598
 67DD                      L1803  EQU $
  2587               x = x+1;  j = byteinteger(x)
 67DD FF 05 A0 00 00 00                     INC DWORD PTR [DATA+00A0]
 67E3 8B 1D A0 00 00 00                     MOV %EBX,[DATA+00A0]
 67E9 31 C0                                 XOR %EAX,%EAX
 67EB 8A 03                                 MOV %AL,[%EBX]
 67ED 89 45 D0                              MOV [%EBP-48],%EAX
  2588               %IF j = '@' %START
 67F0 8B 45 D0                              MOV %EAX,[%EBP-48]
 67F3 3D 40 00 00 00                        CMP %EAX,#64
 67F8 75 00                                 JNE L1804
  2589                  op('@', litpool(byteinteger(x+1)));  ->top
 67FA 6A 40                                 PUSH #64
 67FC A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6801 40                                    INC %EAX
 6802 8A 00                                 MOV %AL,[%EAX]
 6804 25 FF 00 00 00                        AND %EAX,#255
 6809 50                                    PUSH %EAX
 680A 8B 75 FC                              MOV %ESI,[%EBP-4]
 680D FF 76 88                              PUSH DWORD PTR [%ESI-120]
 6810 89 B5 00 FF FF FF                     MOV [%EBP-256],%ESI
 6816 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6819 83 C4 08                              ADD %ESP,#8
 681C 89 C7                                 MOV %EDI,%EAX
 681E 8B 9D 00 FF FF FF                     MOV %EBX,[%EBP-256]
 6824 03 7B 84                              ADD %EDI,[%EBX-124]
 6827 FF 37                                 PUSH DWORD PTR [%EDI]
 6829 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 682C 83 C4 08                              ADD %ESP,#8
 682F EB 00                                 JMP L1598
  2590               %FINISH
 6831                      L1804  EQU $
  2591               bp=bp+1 %AND buff(bp)=j
 6831 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 6837 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 683D 8B 75 FC                              MOV %ESI,[%EBP-4]
 6840 FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 6846 89 B5 FC FE FF FF                     MOV [%EBP-260],%ESI
 684C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 684F 83 C4 08                              ADD %ESP,#8
 6852 89 C7                                 MOV %EDI,%EAX
 6854 8B 9D FC FE FF FF                     MOV %EBX,[%EBP-260]
 685A 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 6860 8B 45 D0                              MOV %EAX,[%EBP-48]
 6863 88 07                                 MOV [%EDI],%AL
  2592            %REPEAT
 6865 EB 00                                 JMP L1802
  2593         %FINISH
 6867                      L1801  EQU $
  2594         set const(lit pool(x))
 6867 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 686D 8B 75 FC                              MOV %ESI,[%EBP-4]
 6870 FF 76 88                              PUSH DWORD PTR [%ESI-120]
 6873 89 B5 F8 FE FF FF                     MOV [%EBP-264],%ESI
 6879 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 687C 83 C4 08                              ADD %ESP,#8
 687F 89 C7                                 MOV %EDI,%EAX
 6881 8B 9D F8 FE FF FF                     MOV %EBX,[%EBP-264]
 6887 03 7B 84                              ADD %EDI,[%EBX-124]
 688A FF 37                                 PUSH DWORD PTR [%EDI]
 688C E8 00 00                              CALL 'SETCONST' (INTERNAL L1036 )
 688F 83 C4 04                              ADD %ESP,#4
  2595         ->top
 6892 EB 00                                 JMP L1598
  2596  
  2597  c(137):bp=bp+1 %AND buff(bp)='i';               ->top;         !asep
 6894                      L1805  EQU $
 6894 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 689A FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 68A0 8B 75 FC                              MOV %ESI,[%EBP-4]
 68A3 FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 68A9 89 B5 F4 FE FF FF                     MOV [%EBP-268],%ESI
 68AF E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 68B2 83 C4 08                              ADD %ESP,#8
 68B5 89 C7                                 MOV %EDI,%EAX
 68B7 8B 9D F4 FE FF FF                     MOV %EBX,[%EBP-268]
 68BD 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 68C3 C6 07 69                              MOV BYTE PTR [%EDI],#105
 68C6 EB 00                                 JMP L1598
  2598  c(141):bp=bp+1 %AND buff(bp)='a';               ->top;         !arb
 68C8                      L1806  EQU $
 68C8 FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 68CE FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 68D4 8B 75 FC                              MOV %ESI,[%EBP-4]
 68D7 FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 68DD 89 B5 F0 FE FF FF                     MOV [%EBP-272],%ESI
 68E3 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 68E6 83 C4 08                              ADD %ESP,#8
 68E9 89 C7                                 MOV %EDI,%EAX
 68EB 8B 9D F0 FE FF FF                     MOV %EBX,[%EBP-272]
 68F1 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 68F7 C6 07 61                              MOV BYTE PTR [%EDI],#97
 68FA EB 00                                 JMP L1598
  2599  
  2600  !own arrays
  2601  
  2602  c(132):ocount = ub-lb+1
 68FC                      L1807  EQU $
 68FC A1 9C 2D 00 00                        MOV %EAX,[DATA+2D9C]
 6901 2B 05 98 2D 00 00                     SUB %EAX,[DATA+2D98]
 6907 40                                    INC %EAX
 6908 89 05 84 01 00 00                     MOV [DATA+0184],%EAX
  2603         def(x);                               !oident
 690E FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 6914 E8 00 00                              CALL 'DEF' (INTERNAL L1561 )
 6917 83 C4 04                              ADD %ESP,#4
  2604         dimension = 1;  set subs(1)
 691A C7 05 AC 01 00 00 01 00 00 00         MOV DWORD PTR [DATA+01AC],#1
 6924 6A 01                                 PUSH #1
 6926 E8 00 00                              CALL 'SETSUBS' (INTERNAL L1543 )
 6929 83 C4 04                              ADD %ESP,#4
  2605         %IF next = 0 %START;                  !no initialisation
 692C 8B 45 D8                              MOV %EAX,[%EBP-40]
 692F 3D 00 00 00 00                        CMP %EAX,#0
 6934 75 00                                 JNE L1808
  2606            op('A', ocount) %IF ocount > 0
 6936 A1 84 01 00 00                        MOV %EAX,[DATA+0184]
 693B 3D 00 00 00 00                        CMP %EAX,#0
 6940 7E 00                                 JLE L1809
 6942 6A 41                                 PUSH #65
 6944 FF 35 84 01 00 00                     PUSH DWORD PTR [DATA+0184]
 694A E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 694D 83 C4 08                              ADD %ESP,#8
 6950                      L1809  EQU $
  2607            ocount = -1
 6950 C7 05 84 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+0184],#-1
  2608         %FINISH %ELSE %START;                 !initialisation given
 695A EB 00                                 JMP L1810
 695C                      L1808  EQU $
  2609            get next
 695C E8 00 00                              CALL 'GETNEXT' (INTERNAL L1531 )
  2610         %FINISH
 695F                      L1810  EQU $
  2611         ->top
 695F EB 00                                 JMP L1598
  2612  c(162):lit = ocount;  ->ins;                 !indef
 6961                      L1811  EQU $
 6961 A1 84 01 00 00                        MOV %EAX,[DATA+0184]
 6966 89 05 48 02 00 00                     MOV [DATA+0248],%EAX
 696C EB 00                                 JMP L1812
  2613  c(143):pop lit;                              !orb
 696E                      L1813  EQU $
 696E E8 00 00                              CALL 'POPLIT' (INTERNAL L1587 )
  2614  ins:   fault(10) %AND lit = 0 %IF lit < 0
 6971                      L1812  EQU $
 6971 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6976 3D 00 00 00 00                        CMP %EAX,#0
 697B 7D 00                                 JGE L1814
 697D 6A 0A                                 PUSH #10
 697F E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 6982 83 C4 04                              ADD %ESP,#4
 6985 C7 05 48 02 00 00 00 00 00 00         MOV DWORD PTR [DATA+0248],#0
 698F                      L1814  EQU $
  2615         get next
 698F E8 00 00                              CALL 'GETNEXT' (INTERNAL L1531 )
  2616         ->inst
 6992 EB 00                                 JMP L1815
  2617  c(139):                                      !osep (x=19)
 6994                      L1816  EQU $
  2618  c(153):lit = 1
 6994                      L1817  EQU $
 6994 C7 05 48 02 00 00 01 00 00 00         MOV DWORD PTR [DATA+0248],#1
  2619  inst:  pop def %IF pending # 0;              !ownt (x=0)
 699E                      L1815  EQU $
 699E 8B 45 AC                              MOV %EAX,[%EBP-84]
 69A1 3D 00 00 00 00                        CMP %EAX,#0
 69A6 74 00                                 JE L1818
 69A8 E8 00 00                              CALL 'POPDEF' (INTERNAL L1586 )
 69AB                      L1818  EQU $
  2620         op('A', lit)
 69AB 6A 41                                 PUSH #65
 69AD FF 35 48 02 00 00                     PUSH DWORD PTR [DATA+0248]
 69B3 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 69B6 83 C4 08                              ADD %ESP,#8
  2621         ocount = ocount-lit
 69B9 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 69BE 29 05 84 01 00 00                     SUB [DATA+0184],%EAX
  2622         %IF ocount >= 0 %START
 69C4 A1 84 01 00 00                        MOV %EAX,[DATA+0184]
 69C9 3D 00 00 00 00                        CMP %EAX,#0
 69CE 7C 00                                 JL L1819
  2623            ->top %IF x # 0;                          !more coming
 69D0 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 69D5 3D 00 00 00 00                        CMP %EAX,#0
 69DA 74 00                                 JE L1820
 69DC EB 00                                 JMP L1598
 69DE                      L1820  EQU $
  2624            ocount = -1 %AND %RETURN %IF ocount = 0;  !all done
 69DE A1 84 01 00 00                        MOV %EAX,[DATA+0184]
 69E3 3D 00 00 00 00                        CMP %EAX,#0
 69E8 75 00                                 JNE L1821
 69EA C7 05 84 01 00 00 FF FF FF FF         MOV DWORD PTR [DATA+0184],#-1
 69F4 C9                                    LEAVE
 69F5 C3                                    RET
 69F6                      L1821  EQU $
  2625         %FINISH
 69F6                      L1819  EQU $
  2626         fault(11);  %RETURN
 69F6 6A 0B                                 PUSH #11
 69F8 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 69FB 83 C4 04                              ADD %ESP,#4
 69FE C9                                    LEAVE
 69FF C3                                    RET
  2627  
  2628  c(swit):op('W', tag(x)_index);  inhibit = 1;  ->atop
 6A00                      L1822  EQU $
 6A00 6A 57                                 PUSH #87
 6A02 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 6A08 8B 75 FC                              MOV %ESI,[%EBP-4]
 6A0B FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 6A11 89 B5 EC FE FF FF                     MOV [%EBP-276],%ESI
 6A17 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6A1A 83 C4 08                              ADD %ESP,#8
 6A1D 89 C7                                 MOV %EDI,%EAX
 6A1F 8B 9D EC FE FF FF                     MOV %EBX,[%EBP-276]
 6A25 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 6A2B 0F BF 47 0A                           MOVSX %EAX,[%EDI+10]
 6A2F 50                                    PUSH %EAX
 6A30 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 6A33 83 C4 08                              ADD %ESP,#8
 6A36 8B 75 F8                              MOV %ESI,[%EBP-8]
 6A39 C7 46 DC 01 00 00 00                  MOV DWORD PTR [%ESI-36],#1
 6A40 EB 00                                 JMP L1621
  2629  c(134):def(x);                               !swid
 6A42                      L1823  EQU $
 6A42 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 6A48 E8 00 00                              CALL 'DEF' (INTERNAL L1561 )
 6A4B 83 C4 04                              ADD %ESP,#4
  2630         n = ub-lb+1
 6A4E A1 9C 2D 00 00                        MOV %EAX,[DATA+2D9C]
 6A53 2B 05 98 2D 00 00                     SUB %EAX,[DATA+2D98]
 6A59 40                                    INC %EAX
 6A5A 89 45 C8                              MOV [%EBP-56],%EAX
  2631         n = (n+15)>>4;                        !slots needed (includes zero)
 6A5D 8B 45 C8                              MOV %EAX,[%EBP-56]
 6A60 05 0F 00 00 00                        ADD %EAX,#15
 6A65 C1 E8 04                              SHR %EAX,#4
 6A68 89 45 C8                              MOV [%EBP-56],%EAX
  2632         j = dmax;  dmax = dmax+n+2
 6A6B A1 5C 01 00 00                        MOV %EAX,[DATA+015C]
 6A70 89 45 D0                              MOV [%EBP-48],%EAX
 6A73 A1 5C 01 00 00                        MOV %EAX,[DATA+015C]
 6A78 03 45 C8                              ADD %EAX,[%EBP-56]
 6A7B 05 02 00 00 00                        ADD %EAX,#2
 6A80 89 05 5C 01 00 00                     MOV [DATA+015C],%EAX
  2633         abandon(1) %IF dmax >= dmin
 6A86 A1 5C 01 00 00                        MOV %EAX,[DATA+015C]
 6A8B 8B 7D F8                              MOV %EDI,[%EBP-8]
 6A8E 3B 47 10                              CMP %EAX,[%EDI+16]
 6A91 7C 00                                 JL L1824
 6A93 6A 01                                 PUSH #1
 6A95 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 6A98 83 C4 04                              ADD %ESP,#4
 6A9B                      L1824  EQU $
  2634         tag(x)_format = j
 6A9B FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 6AA1 8B 5D FC                              MOV %EBX,[%EBP-4]
 6AA4 FF B3 58 FF FF FF                     PUSH DWORD PTR [%EBX-168]
 6AAA 89 9D E8 FE FF FF                     MOV [%EBP-280],%EBX
 6AB0 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6AB3 83 C4 08                              ADD %ESP,#8
 6AB6 89 C6                                 MOV %ESI,%EAX
 6AB8 8B BD E8 FE FF FF                     MOV %EDI,[%EBP-280]
 6ABE 03 B7 54 FF FF FF                     ADD %ESI,[%EDI-172]
 6AC4 8B 45 D0                              MOV %EAX,[%EBP-48]
 6AC7 89 46 04                              MOV [%ESI+4],%EAX
  2635         dict(j) = lb;  dict(j+1) = ub
 6ACA FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 6ACD 8B 5D FC                              MOV %EBX,[%EBP-4]
 6AD0 FF B3 40 FF FF FF                     PUSH DWORD PTR [%EBX-192]
 6AD6 89 9D E4 FE FF FF                     MOV [%EBP-284],%EBX
 6ADC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6ADF 83 C4 08                              ADD %ESP,#8
 6AE2 89 C6                                 MOV %ESI,%EAX
 6AE4 8B BD E4 FE FF FF                     MOV %EDI,[%EBP-284]
 6AEA 03 B7 3C FF FF FF                     ADD %ESI,[%EDI-196]
 6AF0 A1 98 2D 00 00                        MOV %EAX,[DATA+2D98]
 6AF5 88 06                                 MOV [%ESI],%AL
 6AF7 88 66 01                              MOV [%ESI+1],%AH
 6AFA 8B 45 D0                              MOV %EAX,[%EBP-48]
 6AFD 40                                    INC %EAX
 6AFE 50                                    PUSH %EAX
 6AFF 8B 5D FC                              MOV %EBX,[%EBP-4]
 6B02 FF B3 40 FF FF FF                     PUSH DWORD PTR [%EBX-192]
 6B08 89 9D E0 FE FF FF                     MOV [%EBP-288],%EBX
 6B0E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6B11 83 C4 08                              ADD %ESP,#8
 6B14 89 C6                                 MOV %ESI,%EAX
 6B16 8B BD E0 FE FF FF                     MOV %EDI,[%EBP-288]
 6B1C 03 B7 3C FF FF FF                     ADD %ESI,[%EDI-196]
 6B22 A1 9C 2D 00 00                        MOV %EAX,[DATA+2D9C]
 6B27 88 06                                 MOV [%ESI],%AL
 6B29 88 66 01                              MOV [%ESI+1],%AH
  2636         %CYCLE
 6B2C                      L1825  EQU $
  2637            n = n-1
 6B2C FF 4D C8                              DEC DWORD PTR [%EBP-56]
  2638            ->top %IF n < 0
 6B2F 8B 45 C8                              MOV %EAX,[%EBP-56]
 6B32 3D 00 00 00 00                        CMP %EAX,#0
 6B37 7D 00                                 JGE L1826
 6B39 EB 00                                 JMP L1598
 6B3B                      L1826  EQU $
  2639            j = j+1;  dict(j+1) = 0
 6B3B FF 45 D0                              INC DWORD PTR [%EBP-48]
 6B3E 8B 45 D0                              MOV %EAX,[%EBP-48]
 6B41 40                                    INC %EAX
 6B42 50                                    PUSH %EAX
 6B43 8B 5D FC                              MOV %EBX,[%EBP-4]
 6B46 FF B3 40 FF FF FF                     PUSH DWORD PTR [%EBX-192]
 6B4C 89 9D DC FE FF FF                     MOV [%EBP-292],%EBX
 6B52 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6B55 83 C4 08                              ADD %ESP,#8
 6B58 89 C6                                 MOV %ESI,%EAX
 6B5A 8B BD DC FE FF FF                     MOV %EDI,[%EBP-292]
 6B60 03 B7 3C FF FF FF                     ADD %ESI,[%EDI-196]
 6B66 C6 06 00                              MOV BYTE PTR [%ESI],#0
 6B69 C6 46 01 00                           MOV BYTE PTR [%ESI+1],#0
  2640         %REPEAT
 6B6D EB 00                                 JMP L1825
  2641  c(151):stats = stats-1;                      !slab
 6B6F                      L1827  EQU $
 6B6F FF 0D DC 00 00 00                     DEC DWORD PTR [DATA+00DC]
  2642         fault(7) %AND %RETURN %IF x < tbase
 6B75 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6B7A 8B 5D F8                              MOV %EBX,[%EBP-8]
 6B7D 3B 43 EC                              CMP %EAX,[%EBX-20]
 6B80 7D 00                                 JGE L1828
 6B82 6A 07                                 PUSH #7
 6B84 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 6B87 83 C4 04                              ADD %ESP,#4
 6B8A C9                                    LEAVE
 6B8B C3                                    RET
 6B8C                      L1828  EQU $
  2643         %IF pending # 0 %START;               !explicit label
 6B8C 8B 45 AC                              MOV %EAX,[%EBP-84]
 6B8F 3D 00 00 00 00                        CMP %EAX,#0
 6B94 74 00                                 JE L1829
  2644            def s lab(pstack(1))
 6B96 6A 01                                 PUSH #1
 6B98 68 B4 03 00 00                        PUSH COT+#948
 6B9D E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6BA0 83 C4 08                              ADD %ESP,#8
 6BA3 89 C6                                 MOV %ESI,%EAX
 6BA5 FF B6 9C 2D 00 00                     PUSH DWORD PTR [%ESI+DATA+11676]
 6BAB E8 00 00                              CALL 'DEFSLAB' (INTERNAL L1577 )
 6BAE 83 C4 04                              ADD %ESP,#4
  2645         %FINISH %ELSE %START
 6BB1 EB 00                                 JMP L1830
 6BB3                      L1829  EQU $
  2646            fault(4) %AND %RETURN %IF tag(x)_app # 0
 6BB3 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 6BB9 8B 7D FC                              MOV %EDI,[%EBP-4]
 6BBC FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 6BC2 89 BD D8 FE FF FF                     MOV [%EBP-296],%EDI
 6BC8 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6BCB 83 C4 08                              ADD %ESP,#8
 6BCE 89 C3                                 MOV %EBX,%EAX
 6BD0 8B B5 D8 FE FF FF                     MOV %ESI,[%EBP-296]
 6BD6 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 6BDC 8B 1B                                 MOV %EBX,[%EBX]
 6BDE 83 FB 00                              CMP %EBX,#0
 6BE1 74 00                                 JE L1831
 6BE3 6A 04                                 PUSH #4
 6BE5 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 6BE8 83 C4 04                              ADD %ESP,#4
 6BEB C9                                    LEAVE
 6BEC C3                                    RET
 6BED                      L1831  EQU $
  2647            tag(x)_app = 1
 6BED FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 6BF3 8B 7D FC                              MOV %EDI,[%EBP-4]
 6BF6 FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 6BFC 89 BD D4 FE FF FF                     MOV [%EBP-300],%EDI
 6C02 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6C05 83 C4 08                              ADD %ESP,#8
 6C08 89 C3                                 MOV %EBX,%EAX
 6C0A 8B B5 D4 FE FF FF                     MOV %ESI,[%EBP-300]
 6C10 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 6C16 C7 03 01 00 00 00                     MOV DWORD PTR [%EBX],#1
  2648            n = tag(x)_format
 6C1C FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 6C22 8B 7D FC                              MOV %EDI,[%EBP-4]
 6C25 FF B7 58 FF FF FF                     PUSH DWORD PTR [%EDI-168]
 6C2B 89 BD D0 FE FF FF                     MOV [%EBP-304],%EDI
 6C31 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6C34 83 C4 08                              ADD %ESP,#8
 6C37 89 C3                                 MOV %EBX,%EAX
 6C39 8B B5 D0 FE FF FF                     MOV %ESI,[%EBP-304]
 6C3F 03 9E 54 FF FF FF                     ADD %EBX,[%ESI-172]
 6C45 8B 5B 04                              MOV %EBX,[%EBX+4]
 6C48 89 5D C8                              MOV [%EBP-56],%EBX
  2649            %FOR j = dict(n), 1, dict(n+1) %CYCLE
 6C4B 8B 45 C8                              MOV %EAX,[%EBP-56]
 6C4E 40                                    INC %EAX
 6C4F 50                                    PUSH %EAX
 6C50 8B 7D FC                              MOV %EDI,[%EBP-4]
 6C53 FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 6C59 89 BD CC FE FF FF                     MOV [%EBP-308],%EDI
 6C5F E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6C62 83 C4 08                              ADD %ESP,#8
 6C65 89 C3                                 MOV %EBX,%EAX
 6C67 8B B5 CC FE FF FF                     MOV %ESI,[%EBP-308]
 6C6D 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 6C73 FF 75 C8                              PUSH DWORD PTR [%EBP-56]
 6C76 8B 7D FC                              MOV %EDI,[%EBP-4]
 6C79 FF B7 40 FF FF FF                     PUSH DWORD PTR [%EDI-192]
 6C7F 89 9D C8 FE FF FF                     MOV [%EBP-312],%EBX
 6C85 89 BD C4 FE FF FF                     MOV [%EBP-316],%EDI
 6C8B E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6C8E 83 C4 08                              ADD %ESP,#8
 6C91 89 C3                                 MOV %EBX,%EAX
 6C93 8B B5 C4 FE FF FF                     MOV %ESI,[%EBP-316]
 6C99 03 9E 3C FF FF FF                     ADD %EBX,[%ESI-196]
 6C9F 8B BD C8 FE FF FF                     MOV %EDI,[%EBP-312]
 6CA5 0F BF 07                              MOVSX %EAX,[%EDI]
 6CA8 89 85 C0 FE FF FF                     MOV [%EBP-320],%EAX
 6CAE 0F BF 1B                              MOVSX %EBX,[%EBX]
 6CB1 8D 5B FF                              LEA %EBX,[%EBX-1]
 6CB4 89 5D D0                              MOV [%EBP-48],%EBX
 6CB7                      L1832  EQU $
 6CB7 8B 45 D0                              MOV %EAX,[%EBP-48]
 6CBA 3B 85 C0 FE FF FF                     CMP %EAX,[%EBP-320]
 6CC0 74 00                                 JE L1833
 6CC2 40                                    INC %EAX
 6CC3 89 45 D0                              MOV [%EBP-48],%EAX
  2650               def s lab(j)
 6CC6 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 6CC9 E8 00 00                              CALL 'DEFSLAB' (INTERNAL L1577 )
 6CCC 83 C4 04                              ADD %ESP,#4
  2651               flush buffer %IF bp >= 128
 6CCF A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 6CD4 3D 80 00 00 00                        CMP %EAX,#128
 6CD9 7C 00                                 JL L1834
 6CDB E8 00 00                              CALL 'FLUSHBUFFER' (INTERNAL L1002 )
 6CDE                      L1834  EQU $
  2652            %REPEAT
 6CDE EB 00                                 JMP L1832
 6CE0                      L1833  EQU $
  2653         %FINISH
 6CE0                      L1830  EQU $
  2654         inhibit = 1
 6CE0 8B 5D F8                              MOV %EBX,[%EBP-8]
 6CE3 C7 43 DC 01 00 00 00                  MOV DWORD PTR [%EBX-36],#1
  2655         %RETURN
 6CEA C9                                    LEAVE
 6CEB C3                                    RET
  2656  
  2657  c(140):bp=bp+1 %AND buff(bp)='p';                  ->top;          !psep
 6CEC                      L1835  EQU $
 6CEC FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 6CF2 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 6CF8 8B 75 FC                              MOV %ESI,[%EBP-4]
 6CFB FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 6D01 89 B5 BC FE FF FF                     MOV [%EBP-324],%ESI
 6D07 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6D0A 83 C4 08                              ADD %ESP,#8
 6D0D 89 C7                                 MOV %EDI,%EAX
 6D0F 8B 9D BC FE FF FF                     MOV %EBX,[%EBP-324]
 6D15 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 6D1B C6 07 70                              MOV BYTE PTR [%EDI],#112
 6D1E EB 00                                 JMP L1598
  2658  c(144):buff(bp+1)='p';  buff(bp+2)='E';  bp=bp+2;  ->top;          !prb
 6D20                      L1836  EQU $
 6D20 A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 6D25 40                                    INC %EAX
 6D26 50                                    PUSH %EAX
 6D27 8B 75 FC                              MOV %ESI,[%EBP-4]
 6D2A FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 6D30 89 B5 B8 FE FF FF                     MOV [%EBP-328],%ESI
 6D36 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6D39 83 C4 08                              ADD %ESP,#8
 6D3C 89 C7                                 MOV %EDI,%EAX
 6D3E 8B 9D B8 FE FF FF                     MOV %EBX,[%EBP-328]
 6D44 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 6D4A C6 07 70                              MOV BYTE PTR [%EDI],#112
 6D4D A1 60 02 00 00                        MOV %EAX,[DATA+0260]
 6D52 05 02 00 00 00                        ADD %EAX,#2
 6D57 50                                    PUSH %EAX
 6D58 8B 75 FC                              MOV %ESI,[%EBP-4]
 6D5B FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 6D61 89 B5 B4 FE FF FF                     MOV [%EBP-332],%ESI
 6D67 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6D6A 83 C4 08                              ADD %ESP,#8
 6D6D 89 C7                                 MOV %EDI,%EAX
 6D6F 8B 9D B4 FE FF FF                     MOV %EBX,[%EBP-332]
 6D75 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 6D7B C6 07 45                              MOV BYTE PTR [%EDI],#69
 6D7E 83 05 60 02 00 00 02                  ADD DWORD PTR [DATA+0260],#2
 6D85 EB 00                                 JMP L1598
  2659  
  2660  !constant expressions
  2661  
  2662  c(155):                                      !pconst
 6D87                      L1837  EQU $
  2663         %IF x < 0 %THEN lit = tag(-x)_format %c
  2664+                  %ELSE lit = lit pool(x)
 6D87 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6D8C 3D 00 00 00 00                        CMP %EAX,#0
 6D91 7D 00                                 JGE L1838
 6D93 A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6D98 F7 D8                                 NEG %EAX
 6D9A 50                                    PUSH %EAX
 6D9B 8B 75 FC                              MOV %ESI,[%EBP-4]
 6D9E FF B6 58 FF FF FF                     PUSH DWORD PTR [%ESI-168]
 6DA4 89 B5 B0 FE FF FF                     MOV [%EBP-336],%ESI
 6DAA E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6DAD 83 C4 08                              ADD %ESP,#8
 6DB0 89 C7                                 MOV %EDI,%EAX
 6DB2 8B 9D B0 FE FF FF                     MOV %EBX,[%EBP-336]
 6DB8 03 BB 54 FF FF FF                     ADD %EDI,[%EBX-172]
 6DBE 8B 7F 04                              MOV %EDI,[%EDI+4]
 6DC1 89 3D 48 02 00 00                     MOV [DATA+0248],%EDI
 6DC7 EB 00                                 JMP L1839
 6DC9                      L1838  EQU $
 6DC9 FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 6DCF 8B 75 FC                              MOV %ESI,[%EBP-4]
 6DD2 FF 76 88                              PUSH DWORD PTR [%ESI-120]
 6DD5 89 B5 AC FE FF FF                     MOV [%EBP-340],%ESI
 6DDB E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6DDE 83 C4 08                              ADD %ESP,#8
 6DE1 89 C7                                 MOV %EDI,%EAX
 6DE3 8B 9D AC FE FF FF                     MOV %EBX,[%EBP-340]
 6DE9 03 7B 84                              ADD %EDI,[%EBX-124]
 6DEC 8B 3F                                 MOV %EDI,[%EDI]
 6DEE 89 3D 48 02 00 00                     MOV [DATA+0248],%EDI
 6DF4                      L1839  EQU $
  2665         pending = pending+1;     pstack(pending) = lit;  ->top
 6DF4 FF 45 AC                              INC DWORD PTR [%EBP-84]
 6DF7 FF 75 AC                              PUSH DWORD PTR [%EBP-84]
 6DFA 68 B4 03 00 00                        PUSH COT+#948
 6DFF E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6E02 83 C4 08                              ADD %ESP,#8
 6E05 89 C6                                 MOV %ESI,%EAX
 6E07 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6E0C 89 86 9C 2D 00 00                     MOV [%ESI+DATA+11676],%EAX
 6E12 EB 00                                 JMP L1598
  2666  c(156):lit = pstack(pending);  lit = -lit %IF lit < 0
 6E14                      L1840  EQU $
 6E14 FF 75 AC                              PUSH DWORD PTR [%EBP-84]
 6E17 68 B4 03 00 00                        PUSH COT+#948
 6E1C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6E1F 83 C4 08                              ADD %ESP,#8
 6E22 89 C7                                 MOV %EDI,%EAX
 6E24 8B BF 9C 2D 00 00                     MOV %EDI,[%EDI+DATA+11676]
 6E2A 89 3D 48 02 00 00                     MOV [DATA+0248],%EDI
 6E30 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6E35 3D 00 00 00 00                        CMP %EAX,#0
 6E3A 7D 00                                 JGE L1841
 6E3C F7 1D 48 02 00 00                     NEG DWORD PTR [DATA+0248]
 6E42                      L1841  EQU $
  2667                                  pstack(pending) = lit;  ->top;  !cmod
 6E42 FF 75 AC                              PUSH DWORD PTR [%EBP-84]
 6E45 68 B4 03 00 00                        PUSH COT+#948
 6E4A E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6E4D 83 C4 08                              ADD %ESP,#8
 6E50 89 C3                                 MOV %EBX,%EAX
 6E52 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6E57 89 83 9C 2D 00 00                     MOV [%EBX+DATA+11676],%EAX
 6E5D EB 00                                 JMP L1598
  2668  c(157):lit = -pstack(pending);  pstack(pending) = lit;  ->top;  !csign
 6E5F                      L1842  EQU $
 6E5F FF 75 AC                              PUSH DWORD PTR [%EBP-84]
 6E62 68 B4 03 00 00                        PUSH COT+#948
 6E67 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6E6A 83 C4 08                              ADD %ESP,#8
 6E6D 89 C6                                 MOV %ESI,%EAX
 6E6F 8B B6 9C 2D 00 00                     MOV %ESI,[%ESI+DATA+11676]
 6E75 F7 DE                                 NEG %ESI
 6E77 89 35 48 02 00 00                     MOV [DATA+0248],%ESI
 6E7D FF 75 AC                              PUSH DWORD PTR [%EBP-84]
 6E80 68 B4 03 00 00                        PUSH COT+#948
 6E85 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6E88 83 C4 08                              ADD %ESP,#8
 6E8B 89 C7                                 MOV %EDI,%EAX
 6E8D A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6E92 89 87 9C 2D 00 00                     MOV [%EDI+DATA+11676],%EAX
 6E98 EB 00                                 JMP L1598
  2669  c(158):lit = \pstack(pending);  pstack(pending) = lit;  ->top;  !cuop
 6E9A                      L1843  EQU $
 6E9A FF 75 AC                              PUSH DWORD PTR [%EBP-84]
 6E9D 68 B4 03 00 00                        PUSH COT+#948
 6EA2 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6EA5 83 C4 08                              ADD %ESP,#8
 6EA8 89 C3                                 MOV %EBX,%EAX
 6EAA 8B 9B 9C 2D 00 00                     MOV %EBX,[%EBX+DATA+11676]
 6EB0 F7 D3                                 NOT %EBX
 6EB2 89 1D 48 02 00 00                     MOV [DATA+0248],%EBX
 6EB8 FF 75 AC                              PUSH DWORD PTR [%EBP-84]
 6EBB 68 B4 03 00 00                        PUSH COT+#948
 6EC0 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6EC3 83 C4 08                              ADD %ESP,#8
 6EC6 89 C6                                 MOV %ESI,%EAX
 6EC8 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6ECD 89 86 9C 2D 00 00                     MOV [%ESI+DATA+11676],%EAX
 6ED3 EB 00                                 JMP L1598
  2670  c(159):                                      !cop1
 6ED5                      L1844  EQU $
  2671  c(160):                                      !cop2
 6ED5                      L1845  EQU $
  2672  c(161):pending = pending-1;                  !cop3
 6ED5                      L1846  EQU $
 6ED5 FF 4D AC                              DEC DWORD PTR [%EBP-84]
  2673         lit2 = pstack(pending+1);  lit = pstack(pending)
 6ED8 8B 45 AC                              MOV %EAX,[%EBP-84]
 6EDB 40                                    INC %EAX
 6EDC 50                                    PUSH %EAX
 6EDD 68 B4 03 00 00                        PUSH COT+#948
 6EE2 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6EE5 83 C4 08                              ADD %ESP,#8
 6EE8 89 C7                                 MOV %EDI,%EAX
 6EEA 8B BF 9C 2D 00 00                     MOV %EDI,[%EDI+DATA+11676]
 6EF0 89 7D BC                              MOV [%EBP-68],%EDI
 6EF3 FF 75 AC                              PUSH DWORD PTR [%EBP-84]
 6EF6 68 B4 03 00 00                        PUSH COT+#948
 6EFB E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6EFE 83 C4 08                              ADD %ESP,#8
 6F01 89 C3                                 MOV %EBX,%EAX
 6F03 8B 9B 9C 2D 00 00                     MOV %EBX,[%EBX+DATA+11676]
 6F09 89 1D 48 02 00 00                     MOV [DATA+0248],%EBX
  2674         ->litop(x>>2)
 6F0F A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 6F14 C1 E8 02                              SHR %EAX,#2
 6F17 C1 E0 02                              SHL %EAX,#2
 6F1A 89 C6                                 MOV %ESI,%EAX
 6F1C FF A6 FC 03 00 00                     JMP DWORD PTR [%ESI+SWTAB+1020]
  2675  litop(10):lit = lit*lit2;   ->setl
 6F22                      L1847  EQU $
 6F22 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6F27 F7 6D BC                              IMUL DWORD PTR [%EBP-68]
 6F2A 89 05 48 02 00 00                     MOV [DATA+0248],%EAX
 6F30 EB 00                                 JMP L1848
  2676  litop(12):
 6F32                      L1849  EQU $
  2677  litop(3):n = 1;                              !lit = lit\\lit2
 6F32                      L1850  EQU $
 6F32 C7 45 C8 01 00 00 00                  MOV DWORD PTR [%EBP-56],#1
  2678           fault(10) %IF lit2 < 0
 6F39 8B 45 BC                              MOV %EAX,[%EBP-68]
 6F3C 3D 00 00 00 00                        CMP %EAX,#0
 6F41 7D 00                                 JGE L1851
 6F43 6A 0A                                 PUSH #10
 6F45 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 6F48 83 C4 04                              ADD %ESP,#4
 6F4B                      L1851  EQU $
  2679           %WHILE lit2 > 0 %CYCLE
 6F4B                      L1852  EQU $
 6F4B 8B 45 BC                              MOV %EAX,[%EBP-68]
 6F4E 3D 00 00 00 00                        CMP %EAX,#0
 6F53 7E 00                                 JLE L1853
  2680              lit2 = lit2-1
 6F55 FF 4D BC                              DEC DWORD PTR [%EBP-68]
  2681              n = n*lit
 6F58 8B 45 C8                              MOV %EAX,[%EBP-56]
 6F5B F7 2D 48 02 00 00                     IMUL DWORD PTR [DATA+0248]
 6F61 89 45 C8                              MOV [%EBP-56],%EAX
  2682           %REPEAT
 6F64 EB 00                                 JMP L1852
 6F66                      L1853  EQU $
  2683           lit = n;           ->setl
 6F66 8B 45 C8                              MOV %EAX,[%EBP-56]
 6F69 89 05 48 02 00 00                     MOV [DATA+0248],%EAX
 6F6F EB 00                                 JMP L1848
  2684  litop(1):lit = lit<<lit2;   ->setl
 6F71                      L1854  EQU $
 6F71 8B 4D BC                              MOV %ECX,[%EBP-68]
 6F74 D3 25 48 02 00 00                     SHL [DATA+0248],%ECX
 6F7A EB 00                                 JMP L1848
  2685  litop(2):lit = lit>>lit2;   ->setl
 6F7C                      L1855  EQU $
 6F7C 8B 4D BC                              MOV %ECX,[%EBP-68]
 6F7F D3 2D 48 02 00 00                     SHR [DATA+0248],%ECX
 6F85 EB 00                                 JMP L1848
  2686  litop(5):lit = lit&lit2;    ->setl
 6F87                      L1856  EQU $
 6F87 8B 45 BC                              MOV %EAX,[%EBP-68]
 6F8A 21 05 48 02 00 00                     AND [DATA+0248],%EAX
 6F90 EB 00                                 JMP L1848
  2687  litop(11):
 6F92                      L1857  EQU $
  2688  litop(4):%IF lit2 = 0 %THEN fault(10) %ELSE lit = lit//lit2
 6F92                      L1858  EQU $
 6F92 8B 45 BC                              MOV %EAX,[%EBP-68]
 6F95 3D 00 00 00 00                        CMP %EAX,#0
 6F9A 75 00                                 JNE L1859
 6F9C 6A 0A                                 PUSH #10
 6F9E E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 6FA1 83 C4 04                              ADD %ESP,#4
 6FA4 EB 00                                 JMP L1860
 6FA6                      L1859  EQU $
 6FA6 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6FAB 99                                    CWD
 6FAC F7 7D BC                              IDIV DWORD PTR [%EBP-68]
 6FAF 89 05 48 02 00 00                     MOV [DATA+0248],%EAX
 6FB5                      L1860  EQU $
  2689                              ->setl
 6FB5 EB 00                                 JMP L1848
  2690  litop(8):lit = lit+lit2;    ->setl
 6FB7                      L1861  EQU $
 6FB7 8B 45 BC                              MOV %EAX,[%EBP-68]
 6FBA 01 05 48 02 00 00                     ADD [DATA+0248],%EAX
 6FC0 EB 00                                 JMP L1848
  2691  litop(9):lit = lit-lit2;    ->setl
 6FC2                      L1862  EQU $
 6FC2 8B 45 BC                              MOV %EAX,[%EBP-68]
 6FC5 29 05 48 02 00 00                     SUB [DATA+0248],%EAX
 6FCB EB 00                                 JMP L1848
  2692  litop(6):lit = lit!lit2;    ->setl
 6FCD                      L1863  EQU $
 6FCD 8B 45 BC                              MOV %EAX,[%EBP-68]
 6FD0 09 05 48 02 00 00                     OR [DATA+0248],%EAX
 6FD6 EB 00                                 JMP L1848
  2693  litop(7):lit = lit!!lit2
 6FD8                      L1864  EQU $
 6FD8 8B 45 BC                              MOV %EAX,[%EBP-68]
 6FDB 31 05 48 02 00 00                     XOR [DATA+0248],%EAX
  2694  
  2695  setl: pstack(pending) = lit;  ->top
 6FE1                      L1848  EQU $
 6FE1 FF 75 AC                              PUSH DWORD PTR [%EBP-84]
 6FE4 68 B4 03 00 00                        PUSH COT+#948
 6FE9 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 6FEC 83 C4 08                              ADD %ESP,#8
 6FEF 89 C7                                 MOV %EDI,%EAX
 6FF1 A1 48 02 00 00                        MOV %EAX,[DATA+0248]
 6FF6 89 87 9C 2D 00 00                     MOV [%EDI+DATA+11676],%EAX
 6FFC EB 00                                 JMP L1598
  2696  
  2697  c(170):Fault(4) %if IMPCOM_Option # ""
 6FFE                      L1865  EQU $
 6FFE B8 38 00 00 00                        MOV %EAX,DATA+#56
 7003 50                                    PUSH %EAX
 7004 B9 05 00 00 00                        MOV %ECX,COT+#5
 7009 51                                    PUSH %ECX
 700A 89 85 A8 FE FF FF                     MOV [%EBP-344],%EAX
 7010 89 8D A4 FE FF FF                     MOV [%EBP-348],%ECX
 7016 E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 7019 83 C4 08                              ADD %ESP,#8
 701C 3D 00 00 00 00                        CMP %EAX,#0
 7021 74 00                                 JE L1866
 7023 6A 04                                 PUSH #4
 7025 E8 00 00                              CALL 'FAULT' (INTERNAL L1043 )
 7028 83 C4 04                              ADD %ESP,#4
 702B                      L1866  EQU $
  2698         IMPCOM_Option = String(x-x'4000'+Stbase);      !Option string
 702B A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 7030 2D 00 40 00 00                        SUB %EAX,#16384
 7035 03 05 54 01 00 00                     ADD %EAX,[DATA+0154]
 703B B9 38 00 00 00                        MOV %ECX,DATA+#56
 7040 51                                    PUSH %ECX
 7041 50                                    PUSH %EAX
 7042 6A 3F                                 PUSH #63
 7044 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 7047 83 C4 0C                              ADD %ESP,#12
  2699         ->Top
 704A EB 00                                 JMP L1598
  2700  
  2701  !string resolution
  2702  
  2703  c(135):resln = 2;                    ->top;           !dotl
 704C                      L1867  EQU $
 704C C7 45 E4 02 00 00 00                  MOV DWORD PTR [%EBP-28],#2
 7053 EB 00                                 JMP L1598
  2704  c(136):resln = resln+1;              ->top;           !dotr
 7055                      L1868  EQU $
 7055 FF 45 E4                              INC DWORD PTR [%EBP-28]
 7058 EB 00                                 JMP L1598
  2705  c(55): op('r', resln);    resln = 0; ->top;           !resop
 705A                      L1869  EQU $
 705A 6A 72                                 PUSH #114
 705C FF 75 E4                              PUSH DWORD PTR [%EBP-28]
 705F E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 7062 83 C4 08                              ADD %ESP,#8
 7065 C7 45 E4 00 00 00 00                  MOV DWORD PTR [%EBP-28],#0
 706C EB 00                                 JMP L1598
  2706  c(164):op('r', resln+4);  resln = 0;                  !cresop
 706E                      L1870  EQU $
 706E 6A 72                                 PUSH #114
 7070 8B 45 E4                              MOV %EAX,[%EBP-28]
 7073 05 04 00 00 00                        ADD %EAX,#4
 7078 50                                    PUSH %EAX
 7079 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 707C 83 C4 08                              ADD %ESP,#8
 707F C7 45 E4 00 00 00 00                  MOV DWORD PTR [%EBP-28],#0
  2707  c(122):x = 6;                        ->cop;           !%PRED
 7086                      L1871  EQU $
 7086 C7 05 A0 00 00 00 06 00 00 00         MOV DWORD PTR [DATA+00A0],#6
 7090 EB 00                                 JMP L1717
  2708  c(87): set const(pstack(1));                          !mass
 7092                      L1872  EQU $
 7092 6A 01                                 PUSH #1
 7094 68 B4 03 00 00                        PUSH COT+#948
 7099 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 709C 83 C4 08                              ADD %ESP,#8
 709F 89 C3                                 MOV %EBX,%EAX
 70A1 FF B3 9C 2D 00 00                     PUSH DWORD PTR [%EBX+DATA+11676]
 70A7 E8 00 00                              CALL 'SETCONST' (INTERNAL L1036 )
 70AA 83 C4 04                              ADD %ESP,#4
  2709         bp=bp+1 %AND buff(bp)='P';    ->top
 70AD FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 70B3 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 70B9 8B 75 FC                              MOV %ESI,[%EBP-4]
 70BC FF B6 28 FF FF FF                     PUSH DWORD PTR [%ESI-216]
 70C2 89 B5 A0 FE FF FF                     MOV [%EBP-352],%ESI
 70C8 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 70CB 83 C4 08                              ADD %ESP,#8
 70CE 89 C7                                 MOV %EDI,%EAX
 70D0 8B 9D A0 FE FF FF                     MOV %EBX,[%EBP-352]
 70D6 03 BB 24 FF FF FF                     ADD %EDI,[%EBX-220]
 70DC C6 07 50                              MOV BYTE PTR [%EDI],#80
 70DF EB 00                                 JMP L1598
  2710     %END
 70E1 C9                                    LEAVE
 70E2 C3                                    RET
 70E3                      L1134  EQU $
  2711  
  2712  %END;                                                 !of compile block
 70E3 C9                                    LEAVE
 70E4 C3                                    RET
 70E5                      L1001  EQU $
  2713  
  2714     %ON 9 %START
 70E5 89 A5 20 FF FF FF                     MOV [%EBP-224],%ESP
 70EB EB 00                                 JMP L1873
 70ED                      L1874  EQU $
 70ED 8B A5 20 FF FF FF                     MOV %ESP,[%EBP-224]
  2715        abandon(5)
 70F3 6A 05                                 PUSH #5
 70F5 E8 00 00                              CALL 'ABANDON' (INTERNAL L1013 )
 70F8 83 C4 04                              ADD %ESP,#4
  2716     %FINISH
 70FB                      L1873  EQU $
  2717  
  2718  impcom_flags = 0
 70FB C7 05 04 00 00 00 00 00 00 00         MOV DWORD PTR [DATA+0004],#0
  2719  impcom_option = ""
 7105 C6 05 38 00 00 00 00                  MOV BYTE PTR [DATA+0038],#0
  2720  
  2721     list = 15 %IF Impcom_Flags&x'1000' # 0
 710C A1 04 00 00 00                        MOV %EAX,[DATA+0004]
 7111 25 00 10 00 00                        AND %EAX,#4096
 7116 3D 00 00 00 00                        CMP %EAX,#0
 711B 74 00                                 JE L1875
 711D C7 05 54 02 00 00 0F 00 00 00         MOV DWORD PTR [DATA+0254],#15
 7127                      L1875  EQU $
  2722  
  2723     open output(2, "LISTING");
 7127 6A 02                                 PUSH #2
 7129 81 EC 00 01 00 00                     SUB %ESP,#256
 712F 89 E0                                 MOV %EAX,%ESP
 7131 50                                    PUSH %EAX
 7132 B8 C9 03 00 00                        MOV %EAX,COT+#969
 7137 50                                    PUSH %EAX
 7138 68 FF 00 00 00                        PUSH #255
 713D E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 7140 83 C4 0C                              ADD %ESP,#12
 7143 E8 70 00                              CALL 'OPENOUTPUT' (EXTERN 112)
 7146 81 C4 04 01 00 00                     ADD %ESP,#260
  2724     open input(2, "prims-null.inc");
 714C 6A 02                                 PUSH #2
 714E 81 EC 00 01 00 00                     SUB %ESP,#256
 7154 89 E0                                 MOV %EAX,%ESP
 7156 50                                    PUSH %EAX
 7157 B8 D1 03 00 00                        MOV %EAX,COT+#977
 715C 50                                    PUSH %EAX
 715D 68 FF 00 00 00                        PUSH #255
 7162 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 7165 83 C4 0C                              ADD %ESP,#12
 7168 E8 71 00                              CALL 'OPENINPUT' (EXTERN 113)
 716B 81 C4 04 01 00 00                     ADD %ESP,#260
  2725     select input(2);  selectoutput(listing)
 7171 6A 02                                 PUSH #2
 7173 E8 1B 00                              CALL 'SELECTINPUT' (EXTERN 27)
 7176 83 C4 04                              ADD %ESP,#4
 7179 6A 02                                 PUSH #2
 717B E8 2D 00                              CALL 'SELECTOUTPUT' (EXTERN 45)
 717E 83 C4 04                              ADD %ESP,#4
  2726     tag(max tag) = 0;                       !%BEGIN defn
 7181 68 20 03 00 00                        PUSH #800
 7186 FF B5 58 FF FF FF                     PUSH DWORD PTR [%EBP-168]
 718C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 718F 83 C4 08                              ADD %ESP,#8
 7192 89 C6                                 MOV %ESI,%EAX
 7194 03 B5 54 FF FF FF                     ADD %ESI,[%EBP-172]
 719A 89 F7                                 MOV %EDI,%ESI
 719C B9 10 00 00 00                        MOV %ECX,#16
 71A1 31 C0                                 XOR %EAX,%EAX
 71A3 F3 AA                                 REP STOSB
  2727     tag(0) = 0;  tag(0)_flags = 7;          !%BEGIN tag!
 71A5 6A 00                                 PUSH #0
 71A7 FF B5 58 FF FF FF                     PUSH DWORD PTR [%EBP-168]
 71AD E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 71B0 83 C4 08                              ADD %ESP,#8
 71B3 89 C7                                 MOV %EDI,%EAX
 71B5 03 BD 54 FF FF FF                     ADD %EDI,[%EBP-172]
 71BB B9 10 00 00 00                        MOV %ECX,#16
 71C0 31 C0                                 XOR %EAX,%EAX
 71C2 F3 AA                                 REP STOSB
 71C4 6A 00                                 PUSH #0
 71C6 FF B5 58 FF FF FF                     PUSH DWORD PTR [%EBP-168]
 71CC E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 71CF 83 C4 08                              ADD %ESP,#8
 71D2 89 C3                                 MOV %EBX,%EAX
 71D4 03 9D 54 FF FF FF                     ADD %EBX,[%EBP-172]
 71DA C6 43 08 07                           MOV BYTE PTR [%EBX+8],#7
 71DE C6 43 09 00                           MOV BYTE PTR [%EBX+9],#0
  2728     Hash(x) = 0 %FOR x = 0, 1, max names
 71E2 C7 05 A0 00 00 00 FF FF FF FF         MOV DWORD PTR [DATA+00A0],#-1
 71EC                      L1876  EQU $
 71EC A1 A0 00 00 00                        MOV %EAX,[DATA+00A0]
 71F1 3D FF 07 00 00                        CMP %EAX,#2047
 71F6 74 00                                 JE L1877
 71F8 40                                    INC %EAX
 71F9 89 05 A0 00 00 00                     MOV [DATA+00A0],%EAX
 71FF FF 35 A0 00 00 00                     PUSH DWORD PTR [DATA+00A0]
 7205 FF B5 70 FF FF FF                     PUSH DWORD PTR [%EBP-144]
 720B E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 720E 83 C4 08                              ADD %ESP,#8
 7211 89 C6                                 MOV %ESI,%EAX
 7213 03 B5 6C FF FF FF                     ADD %ESI,[%EBP-148]
 7219 C6 06 00                              MOV BYTE PTR [%ESI],#0
 721C C6 46 01 00                           MOV BYTE PTR [%ESI+1],#0
 7220 EB 00                                 JMP L1876
 7222                      L1877  EQU $
  2729     printstring("         Edinburgh IMP77 Compiler - Version ")
 7222 81 EC 00 01 00 00                     SUB %ESP,#256
 7228 89 E0                                 MOV %EAX,%ESP
 722A 50                                    PUSH %EAX
 722B B8 E0 03 00 00                        MOV %EAX,COT+#992
 7230 50                                    PUSH %EAX
 7231 68 FF 00 00 00                        PUSH #255
 7236 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 7239 83 C4 0C                              ADD %ESP,#12
 723C E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 723F 81 C4 00 01 00 00                     ADD %ESP,#256
  2730     printstring(version);  newlines(2)
 7245 81 EC 00 01 00 00                     SUB %ESP,#256
 724B 89 E0                                 MOV %EAX,%ESP
 724D 50                                    PUSH %EAX
 724E B8 00 00 00 00                        MOV %EAX,COT+#0
 7253 50                                    PUSH %EAX
 7254 68 FF 00 00 00                        PUSH #255
 7259 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 725C 83 C4 0C                              ADD %ESP,#12
 725F E8 3B 00                              CALL 'PRINTSTRING' (EXTERN 59)
 7262 81 C4 00 01 00 00                     ADD %ESP,#256
 7268 6A 02                                 PUSH #2
 726A E8 44 00                              CALL 'NEWLINES' (EXTERN 68)
 726D 83 C4 04                              ADD %ESP,#4
  2731     op('l', 0)
 7270 6A 6C                                 PUSH #108
 7272 6A 00                                 PUSH #0
 7274 E8 00 00                              CALL 'OP' (INTERNAL L1035 )
 7277 83 C4 08                              ADD %ESP,#8
  2732     compile block(0, 0, max dict, 0, 0)
 727A 6A 00                                 PUSH #0
 727C 6A 00                                 PUSH #0
 727E 68 70 17 00 00                        PUSH #6000
 7283 6A 00                                 PUSH #0
 7285 6A 00                                 PUSH #0
 7287 E8 00 00                              CALL 'COMPILEBLOCK' (INTERNAL L1037 )
 728A 83 C4 14                              ADD %ESP,#20
  2733     bp=bp+1 %AND buff(bp)=nl                {for bouncing off}
 728D FF 05 60 02 00 00                     INC DWORD PTR [DATA+0260]
 7293 FF 35 60 02 00 00                     PUSH DWORD PTR [DATA+0260]
 7299 FF B5 28 FF FF FF                     PUSH DWORD PTR [%EBP-216]
 729F E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 72A2 83 C4 08                              ADD %ESP,#8
 72A5 89 C7                                 MOV %EDI,%EAX
 72A7 03 BD 24 FF FF FF                     ADD %EDI,[%EBP-220]
 72AD C6 07 0A                              MOV BYTE PTR [%EDI],#10
  2734     flush buffer
 72B0 E8 00 00                              CALL 'FLUSHBUFFER' (INTERNAL L1002 )
  2735     Impcom_Statements = stats
 72B3 A1 DC 00 00 00                        MOV %EAX,[DATA+00DC]
 72B8 89 05 00 00 00 00                     MOV [DATA+0000],%EAX
  2736     Impcom_Statements = -faulty %IF faulty # 0
 72BE A1 BC 00 00 00                        MOV %EAX,[DATA+00BC]
 72C3 3D 00 00 00 00                        CMP %EAX,#0
 72C8 74 00                                 JE L1878
 72CA A1 BC 00 00 00                        MOV %EAX,[DATA+00BC]
 72CF F7 D8                                 NEG %EAX
 72D1 89 05 00 00 00 00                     MOV [DATA+0000],%EAX
 72D7                      L1878  EQU $
  2737  %ENDOFPROGRAM
 72D7 C9                                    LEAVE
 72D8 C3                                    RET
