         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2    %integer m,n,o,p
     3    %integerarray  q(m:n, o:p)
 0004 C7 45 D4 02 00 00 00                  MOV DWORD PTR [%EBP-44],#2
 000B 8B 45 F8                              MOV %EAX,[%EBP-8]
 000E 89 45 D8                              MOV [%EBP-40],%EAX
 0011 8B 4D F4                              MOV %ECX,[%EBP-12]
 0014 89 4D DC                              MOV [%EBP-36],%ECX
 0017 8B 55 F0                              MOV %EDX,[%EBP-16]
 001A 89 55 E0                              MOV [%EBP-32],%EDX
 001D 8B 5D EC                              MOV %EBX,[%EBP-20]
 0020 89 5D E4                              MOV [%EBP-28],%EBX
 0023 C7 45 E8 83 00 00 00                  MOV DWORD PTR [%EBP-24],#131
 002A 8D 45 D4                              LEA %EAX,[%EBP-44]
 002D 50                                    PUSH %EAX
 002E E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0031 83 C4 04                              ADD %ESP,#4
 0034 8D 4D D4                              LEA %ECX,[%EBP-44]
 0037 89 E3                                 MOV %EBX,%ESP
 0039 29 D3                                 SUB %EBX,%EDX
 003B 89 5D CC                              MOV [%EBP-52],%EBX
 003E 89 4D D0                              MOV [%EBP-48],%ECX
 0041 01 C3                                 ADD %EBX,%EAX
 0043 89 DC                                 MOV %ESP,%EBX
     4    %integer i
     5    q((m+n)//2, (o+p)//2) = 42
 0045 8B 45 F8                              MOV %EAX,[%EBP-8]
 0048 03 45 F4                              ADD %EAX,[%EBP-12]
 004B 99                                    CWD
 004C F7 3D 00 00 00 00                     IDIV DWORD PTR [COT+0000]
 0052 50                                    PUSH %EAX
 0053 8B 45 F0                              MOV %EAX,[%EBP-16]
 0056 03 45 EC                              ADD %EAX,[%EBP-20]
 0059 99                                    CWD
 005A F7 3D 00 00 00 00                     IDIV DWORD PTR [COT+0000]
 0060 50                                    PUSH %EAX
 0061 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 0064 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0067 83 C4 0C                              ADD %ESP,#12
 006A 89 C6                                 MOV %ESI,%EAX
 006C 03 75 CC                              ADD %ESI,[%EBP-52]
 006F C7 06 2A 00 00 00                     MOV DWORD PTR [%ESI],#42
     6    i = q((m+n)//2, (o+p)//2)
 0075 8B 45 F8                              MOV %EAX,[%EBP-8]
 0078 03 45 F4                              ADD %EAX,[%EBP-12]
 007B 99                                    CWD
 007C F7 3D 00 00 00 00                     IDIV DWORD PTR [COT+0000]
 0082 50                                    PUSH %EAX
 0083 8B 45 F0                              MOV %EAX,[%EBP-16]
 0086 03 45 EC                              ADD %EAX,[%EBP-20]
 0089 99                                    CWD
 008A F7 3D 00 00 00 00                     IDIV DWORD PTR [COT+0000]
 0090 50                                    PUSH %EAX
 0091 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 0094 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0097 83 C4 0C                              ADD %ESP,#12
 009A 89 C7                                 MOV %EDI,%EAX
 009C 03 7D CC                              ADD %EDI,[%EBP-52]
 009F 8B 3F                                 MOV %EDI,[%EDI]
 00A1 89 7D C8                              MOV [%EBP-56],%EDI
     7  %endofprogram
 00A4 C9                                    LEAVE
 00A5 C3                                    RET
