         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2    %integer sheila, sheila2
     3    %integername bert, bert2
     4    %integermap fred
 0004 EB 00                                 JMP L1001
 0006                      L1002  EQU $
 0006 C8 00 00 02                           ENTER 0000,2
     5      %result == sheila2
 000A 8B 75 FC                              MOV %ESI,[%EBP-4]
 000D 8D 46 F4                              LEA %EAX,[%ESI-12]
 0010 C9                                    LEAVE
 0011 C3                                    RET
     6    %end
 0012                      L1001  EQU $
     7    %integermap fred2(%integer i)
     8      %result == sheila2
 0012                      L1003  EQU $
 0012 C8 00 00 02                           ENTER 0000,2
 0016 8B 7D FC                              MOV %EDI,[%EBP-4]
 0019 8D 47 F4                              LEA %EAX,[%EDI-12]
 001C C9                                    LEAVE
 001D C3                                    RET
     9    %end
 001E                      L1001  EQU $
?I unused
    10  
    11    sheila = 21
 001E C7 45 F8 15 00 00 00                  MOV DWORD PTR [%EBP-8],#21
    12    sheila = bert
 0025 8B 5D F0                              MOV %EBX,[%EBP-16]
 0028 8B 03                                 MOV %EAX,[%EBX]
 002A 89 45 F8                              MOV [%EBP-8],%EAX
    13    sheila = fred
 002D E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 0030 8B 00                                 MOV %EAX,[%EAX]
 0032 89 45 F8                              MOV [%EBP-8],%EAX
    14    sheila = fred2(44)
 0035 6A 2C                                 PUSH #44
 0037 E8 00 00                              CALL 'FRED2' (INTERNAL L1003 )
 003A 83 C4 04                              ADD %ESP,#4
 003D 8B 00                                 MOV %EAX,[%EAX]
 003F 89 45 F8                              MOV [%EBP-8],%EAX
    15  
    16    bert == sheila
 0042 8D 45 F8                              LEA %EAX,[%EBP-8]
 0045 89 45 F0                              MOV [%EBP-16],%EAX
    17    bert == fred
 0048 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 004B 89 45 F0                              MOV [%EBP-16],%EAX
    18    bert == fred2(55)
 004E 6A 37                                 PUSH #55
 0050 E8 00 00                              CALL 'FRED2' (INTERNAL L1003 )
 0053 83 C4 04                              ADD %ESP,#4
 0056 89 45 F0                              MOV [%EBP-16],%EAX
    19    bert == bert
    20    bert = 42
 0059 8B 75 F0                              MOV %ESI,[%EBP-16]
 005C C7 06 2A 00 00 00                     MOV DWORD PTR [%ESI],#42
    21  
    22    fred = 63
 0062 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 0065 C7 00 3F 00 00 00                     MOV DWORD PTR [%EAX],#63
    23    fred2(88) = 63
 006B 6A 58                                 PUSH #88
 006D E8 00 00                              CALL 'FRED2' (INTERNAL L1003 )
 0070 83 C4 04                              ADD %ESP,#4
 0073 C7 00 3F 00 00 00                     MOV DWORD PTR [%EAX],#63
    24    
    25    %if sheila2 = sheila %then %stop
 0079 8B 45 F4                              MOV %EAX,[%EBP-12]
 007C 3B 45 F8                              CMP %EAX,[%EBP-8]
 007F 75 00                                 JNE L1004
 0081 B8 19 00 00 00                        MOV %EAX,#25
 0086 50                                    PUSH %EAX
 0087 31 C0                                 XOR %EAX,%EAX
 0089 50                                    PUSH %EAX
 008A 31 C0                                 XOR %EAX,%EAX
 008C 50                                    PUSH %EAX
 008D 31 C0                                 XOR %EAX,%EAX
 008F 50                                    PUSH %EAX
 0090 E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 0093 83 C4 10                              ADD %ESP,#16
 0096                      L1004  EQU $
    26    %if fred = sheila %then %stop
 0096 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 0099 8B 00                                 MOV %EAX,[%EAX]
 009B 3B 45 F8                              CMP %EAX,[%EBP-8]
 009E 75 00                                 JNE L1005
 00A0 B8 1A 00 00 00                        MOV %EAX,#26
 00A5 50                                    PUSH %EAX
 00A6 31 C0                                 XOR %EAX,%EAX
 00A8 50                                    PUSH %EAX
 00A9 31 C0                                 XOR %EAX,%EAX
 00AB 50                                    PUSH %EAX
 00AC 31 C0                                 XOR %EAX,%EAX
 00AE 50                                    PUSH %EAX
 00AF E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 00B2 83 C4 10                              ADD %ESP,#16
 00B5                      L1005  EQU $
    27    %if fred2(99) = sheila %then %stop
 00B5 6A 63                                 PUSH #99
 00B7 E8 00 00                              CALL 'FRED2' (INTERNAL L1003 )
 00BA 83 C4 04                              ADD %ESP,#4
 00BD 8B 00                                 MOV %EAX,[%EAX]
 00BF 3B 45 F8                              CMP %EAX,[%EBP-8]
 00C2 75 00                                 JNE L1006
 00C4 B8 1B 00 00 00                        MOV %EAX,#27
 00C9 50                                    PUSH %EAX
 00CA 31 C0                                 XOR %EAX,%EAX
 00CC 50                                    PUSH %EAX
 00CD 31 C0                                 XOR %EAX,%EAX
 00CF 50                                    PUSH %EAX
 00D0 31 C0                                 XOR %EAX,%EAX
 00D2 50                                    PUSH %EAX
 00D3 E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 00D6 83 C4 10                              ADD %ESP,#16
 00D9                      L1006  EQU $
    28    %if bert = sheila %then %stop
 00D9 8B 7D F0                              MOV %EDI,[%EBP-16]
 00DC 8B 07                                 MOV %EAX,[%EDI]
 00DE 3B 45 F8                              CMP %EAX,[%EBP-8]
 00E1 75 00                                 JNE L1007
 00E3 B8 1C 00 00 00                        MOV %EAX,#28
 00E8 50                                    PUSH %EAX
 00E9 31 C0                                 XOR %EAX,%EAX
 00EB 50                                    PUSH %EAX
 00EC 31 C0                                 XOR %EAX,%EAX
 00EE 50                                    PUSH %EAX
 00EF 31 C0                                 XOR %EAX,%EAX
 00F1 50                                    PUSH %EAX
 00F2 E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 00F5 83 C4 10                              ADD %ESP,#16
 00F8                      L1007  EQU $
    29    %if fred == bert %then %stop
 00F8 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 00FB 3B 45 F0                              CMP %EAX,[%EBP-16]
 00FE 75 00                                 JNE L1008
 0100 B8 1D 00 00 00                        MOV %EAX,#29
 0105 50                                    PUSH %EAX
 0106 31 C0                                 XOR %EAX,%EAX
 0108 50                                    PUSH %EAX
 0109 31 C0                                 XOR %EAX,%EAX
 010B 50                                    PUSH %EAX
 010C 31 C0                                 XOR %EAX,%EAX
 010E 50                                    PUSH %EAX
 010F E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 0112 83 C4 10                              ADD %ESP,#16
 0115                      L1008  EQU $
    30    %if fred2(11) == bert %then %stop
 0115 6A 0B                                 PUSH #11
 0117 E8 00 00                              CALL 'FRED2' (INTERNAL L1003 )
 011A 83 C4 04                              ADD %ESP,#4
 011D 3B 45 F0                              CMP %EAX,[%EBP-16]
 0120 75 00                                 JNE L1009
 0122 B8 1E 00 00 00                        MOV %EAX,#30
 0127 50                                    PUSH %EAX
 0128 31 C0                                 XOR %EAX,%EAX
 012A 50                                    PUSH %EAX
 012B 31 C0                                 XOR %EAX,%EAX
 012D 50                                    PUSH %EAX
 012E 31 C0                                 XOR %EAX,%EAX
 0130 50                                    PUSH %EAX
 0131 E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 0134 83 C4 10                              ADD %ESP,#16
 0137                      L1009  EQU $
    31    %if bert == bert2 %then %stop
 0137 8B 45 F0                              MOV %EAX,[%EBP-16]
 013A 3B 45 EC                              CMP %EAX,[%EBP-20]
 013D 75 00                                 JNE L1010
 013F B8 1F 00 00 00                        MOV %EAX,#31
 0144 50                                    PUSH %EAX
 0145 31 C0                                 XOR %EAX,%EAX
 0147 50                                    PUSH %EAX
 0148 31 C0                                 XOR %EAX,%EAX
 014A 50                                    PUSH %EAX
 014B 31 C0                                 XOR %EAX,%EAX
 014D 50                                    PUSH %EAX
 014E E8 0B 00                              CALL '_IMPSIGNAL' (EXTERN 11)
 0151 83 C4 10                              ADD %ESP,#16
 0154                      L1010  EQU $
    32  
    33  %endofprogram
 0154 C9                                    LEAVE
 0155 C3                                    RET
