ReC98/libs/BorlandC/emu/emu086.asm

5742 lines
82 KiB
NASM
Raw Normal View History

2014-11-02 10:15:20 +00:00
EMU_PROG segment para public 'CODE' use16
assume cs:EMU_PROG
assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
db 87h
db 0E2h
byte_10052 db 0, 0Ch, 18h, 24h, 30h, 3Ch, 48h, 54h, 60h, 6Ch, 78h
db 84h, 90h, 9Ch, 0A8h, 0B4h
emu086_10062 proc near
push dx
push si
emu086_10064:
mov dx, [si+6]
and dh, 7Fh
or dx, [si]
or dx, [si+2]
or dx, [si+4]
jnz short emu086_10094
cmp bx, 0FFFFh
jz short emu086_10090
cmp word ptr [bx+8], 4001h
jl short emu086_10090
mov dx, [bx+6]
and dh, 7Fh
or dx, [bx]
or dx, [bx+2]
or dx, [bx+4]
jnz short emu086_100D4
emu086_10090:
clc
emu086_10091:
pop si
pop dx
retn
emu086_10094:
cmp bx, 0FFFFh
jz short emu086_100D6
cmp word ptr [bx+8], 4001h
jl short emu086_100D6
mov dx, [bx+6]
and dh, 7Fh
or dx, [bx]
or dx, [bx+2]
or dx, [bx+4]
jz short emu086_100D6
mov dx, [si+6]
cmp dx, [bx+6]
ja short emu086_100D6
jb short emu086_100D4
mov dx, [si+4]
cmp dx, [bx+4]
ja short emu086_100D6
jb short emu086_100D4
mov dx, [si+2]
cmp dx, [bx+2]
ja short emu086_100D6
jb short emu086_100D4
mov dx, [si]
cmp dx, [bx]
ja short emu086_100D6
emu086_100D4:
mov si, bx
emu086_100D6:
push di
mov ch, 1
call emu086_12759
mov cx, 6
cld
rep movsw
stc
pop di
jmp short emu086_10091
emu086_10062 endp
; START OF FUNCTION CHUNK FOR emu086_100FE
emu086_100E6:
mov al, [si+0Ah]
emu086_100E9:
mov [bp-5], al
mov word ptr [bp-4], 4001h
nop
jmp short emu086_10131
emu086_100F4:
mov di, [bp+4]
nopcall emu086_10EA3
emu086_100FB:
jmp emu086_10291
; END OF FUNCTION CHUNK FOR emu086_100FE
emu086_100FE proc near
; FUNCTION CHUNK AT 0096 SIZE 00000018 BYTES
push bx
push di
mov bx, di
mov di, [bp+4]
nopcall emu086_10062
pop di
pop bx
jb short emu086_100FB
cmp bx, 4001h
jl short emu086_100E6
mov al, [bp-6]
or al, al
jnz short emu086_100F4
jmp short emu086_100E6
emu086_100FE endp
; START OF FUNCTION CHUNK FOR emu086_10143
emu086_1011C:
mov bx, 0FFFFh
mov al, [di+0Ah]
xor al, cl
mov si, di
mov di, [bp+4]
nopcall emu086_10062
jb short emu086_100FB
jmp short emu086_100E9
emu086_10131:
mov ax, [si]
mov bx, [si+2]
mov cx, [si+4]
mov dx, [si+6]
jmp emu086_1027E
; END OF FUNCTION CHUNK FOR emu086_10143
emu086_1013F proc near
mov cl, 1
jmp short emu086_10145
emu086_1013F endp
emu086_10143 proc near
var_6 = byte ptr -6
var_5 = byte ptr -5
var_4 = word ptr -4
var_2 = byte ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
; FUNCTION CHUNK AT 00CC SIZE 00000023 BYTES
mov cl, 0
emu086_10145:
push bp
mov bp, sp
lea sp, [bp-6]
push si
push di
mov si, [bp+arg_4]
mov di, [bp+arg_2]
mov al, cl
xor al, [di+0Ah]
xor al, [si+0Ah]
mov [bp+var_6], al
mov ax, [si+8]
mov bx, [di+8]
cmp ax, 4001h
jge short emu086_100FE
cmp bx, 4001h
jge short emu086_1011C
cmp ax, bx
jge short emu086_1017B
xor cl, [di+0Ah]
xchg ax, bx
xchg si, di
jmp short emu086_1017E
emu086_1017B:
mov cl, [si+0Ah]
emu086_1017E:
mov [bp+var_5], cl
mov cx, [si+8]
mov [bp+var_4], cx
cmp bx, 0C001h
jle short emu086_10131
sub ax, bx
cmp ax, 41h ; 'A'
jg short emu086_10131
mov bx, [di+2]
mov cx, [di+4]
mov dx, [di+6]
mov di, [di]
xchg ax, di
mov [bp+var_2], 0
sub di, 8
jl short emu086_101C1
emu086_101A9:
mov [bp+var_2], al
mov al, ah
mov ah, bl
mov bl, bh
mov bh, cl
mov cl, ch
mov ch, dl
mov dl, dh
mov dh, 0
sub di, 8
jge short emu086_101A9
emu086_101C1:
and di, 7
jz short emu086_101D4
emu086_101C6:
shr dx, 1
rcr cx, 1
rcr bx, 1
rcr ax, 1
rcr [bp+var_2], 1
dec di
jnz short emu086_101C6
emu086_101D4:
cmp [bp+var_6], 0
jnz short emu086_101F7
add ax, [si]
adc bx, [si+2]
adc cx, [si+4]
adc dx, [si+6]
jnb short emu086_1025E
rcr dx, 1
rcr cx, 1
rcr bx, 1
rcr ax, 1
rcr [bp+var_2], 1
inc [bp+var_4]
jmp short emu086_1025E
emu086_101F7:
xor [bp+var_5], 1
sub ax, [si]
sbb bx, [si+2]
sbb cx, [si+4]
sbb dx, [si+6]
jnb short emu086_10220
xor [bp+var_5], 1
not dx
not cx
not bx
not ax
neg [bp+var_2]
cmc
adc ax, di
adc bx, di
adc cx, di
adc dx, di
emu086_10220:
mov si, 8
emu086_10223:
or dh, dh
jnz short emu086_1025C
mov dh, dl
mov dl, ch
mov ch, cl
mov cl, bh
mov bh, bl
mov bl, ah
mov ah, al
mov al, [bp+var_2]
mov [bp+var_2], 0
sub [bp+var_4], 8
dec si
jge short emu086_10223
mov [bp+var_4], 0C001h
mov [bp+var_5], 0
jmp short emu086_1027E
emu086_1024E:
dec [bp+var_4]
shl [bp+var_2], 1
rcl ax, 1
rcl bx, 1
rcl cx, 1
adc dx, dx
emu086_1025C:
jns short emu086_1024E
emu086_1025E:
shl [bp+var_2], 1
adc ax, di
adc bx, di
adc cx, di
adc dx, di
jnb short emu086_10270
rcr dx, 1
inc [bp+var_4]
emu086_10270:
cmp [bp+var_4], 4001h
jge short emu086_10299
cmp [bp+var_4], 0C001h
jle short emu086_102A2
emu086_1027E:
cld
mov di, [bp+arg_0]
stosw
xchg ax, bx
stosw
xchg ax, cx
stosw
xchg ax, dx
stosw
mov ax, [bp+var_4]
stosw
mov al, [bp+var_5]
stosb
emu086_10291:
pop di
pop si
mov sp, bp
pop bp
retn 6
emu086_10299:
mov ch, 8
mov [bp+var_4], 4001h
jmp short emu086_102A9
emu086_102A2:
mov ch, 10h
mov [bp+var_4], 0C001h
emu086_102A9:
call emu086_12759
mov [bp+var_5], 0
sub ax, ax
mov bx, ax
mov cx, ax
cwd
jmp short emu086_1027E
emu086_10143 endp
; START OF FUNCTION CHUNK FOR emu086_1030D
emu086_102B9:
mov ax, 4001h
emu086_102BC:
mov di, [bp+arg_0]
mov cl, [bp+var_6]
call emu086_10E8D
emu086_102C5:
pop ax
jmp emu086_1039D
emu086_102C9:
push di
mov bx, di
mov di, [bp+arg_0]
call emu086_10062
pop di
jb short emu086_102C5
cmp word ptr [di+8], 0C001h
jle short emu086_102F4
jmp short emu086_102B9
emu086_102DE:
push si
mov bx, 0FFFFh
mov si, di
mov di, [bp+arg_0]
call emu086_10062
pop si
jb short emu086_102C5
cmp word ptr [si+8], 0C001h
jg short emu086_102B9
emu086_102F4:
mov di, [bp+arg_0]
call emu086_10EA3
jmp short emu086_102C5
emu086_102FC:
mov ch, 8
call emu086_12759
jmp short emu086_102B9
emu086_10303:
mov ch, 10h
call emu086_12759
emu086_10308:
mov ax, 0C001h
jmp short emu086_102BC
; END OF FUNCTION CHUNK FOR emu086_1030D
emu086_1030D proc near
var_6 = byte ptr -6
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
arg_1A = word ptr 1Eh
; FUNCTION CHUNK AT 0269 SIZE 00000054 BYTES
push bp
mov bp, sp
push si
push di
cld
mov si, [bp+arg_4]
mov di, [bp+arg_2]
mov cl, [si+0Ah]
xor cl, [di+0Ah]
push cx
mov dx, 4001h
mov bx, [di+8]
mov cx, 0C001h
mov ax, [si+8]
cmp ax, dx
jge short emu086_102C9
cmp bx, dx
jge short emu086_102DE
cmp ax, cx
jle short emu086_10308
cmp bx, cx
jle short emu086_10308
add ax, bx
dec ax
cmp ax, 4001h
jge short emu086_102FC
inc ax
cmp ax, 0C001h
jle short emu086_10303
push word ptr [si+6]
push word ptr [si+4]
push word ptr [si+2]
push word ptr [si]
sub sp, 4
push word ptr [di+6]
push word ptr [di+4]
push word ptr [di+2]
push word ptr [di]
xchg ax, di
mov bp, sp
call emu086_103A3
add sp, 14h
or dx, dx
js short emu086_1037B
dec di
shl si, 1
rcl ax, 1
rcl bx, 1
rcl cx, 1
rcl dx, 1
emu086_1037B:
shl si, 1
adc ax, 0
jnb short emu086_1038D
adc bx, ax
adc cx, ax
adc dx, ax
jnb short emu086_1038D
rcr dx, 1
inc di
emu086_1038D:
mov si, di
mov di, [bp+arg_1A]
stosw
xchg ax, bx
stosw
xchg ax, cx
stosw
xchg ax, dx
stosw
xchg ax, si
stosw
pop ax
stosb
emu086_1039D:
pop di
pop si
pop bp
retn 6
emu086_1030D endp
emu086_103A3 proc near
push di
sub di, di
mov cx, di
mov si, di
test byte ptr [bp+0Fh], 80h
jz short emu086_103B6
mov cx, [bp+0]
mov si, [bp+2]
emu086_103B6:
test byte ptr [bp+3], 80h
jz short emu086_103CB
add cx, [bp+0Ch]
adc si, [bp+0Eh]
adc di, di
test byte ptr [bp+0Fh], 80h
jz short emu086_103CB
dec di
emu086_103CB:
sub bx, bx
mov ax, [bp+0Ch]
mul word ptr [bp+4]
add cx, ax
adc si, dx
adc di, 0
mov ax, [bp+10h]
or ax, ax
jz short emu086_103F8
mul word ptr [bp+0]
add cx, ax
adc si, dx
adc di, 0
mov ax, [bp+10h]
mul word ptr [bp+2]
add si, ax
adc di, dx
adc bx, 0
emu086_103F8:
mov ax, [bp+0Ch]
mul word ptr [bp+6]
add si, ax
adc di, dx
adc bx, 0
mov ax, [bp+0Eh]
mul word ptr [bp+4]
add si, ax
adc di, dx
adc bx, 0
mov ax, [bp+12h]
or ax, ax
jz short emu086_10423
mul word ptr [bp+0]
add si, ax
adc di, dx
adc bx, 0
emu086_10423:
sub cx, cx
push si
mov si, cx
mov ax, [bp+0Eh]
mul word ptr [bp+6]
add di, ax
adc bx, dx
adc cx, 0
mov ax, [bp+10h]
or ax, ax
jz short emu086_10453
mul word ptr [bp+4]
add di, ax
adc bx, dx
adc cx, 0
mov ax, [bp+10h]
mul word ptr [bp+6]
add bx, ax
adc cx, dx
adc si, 0
emu086_10453:
mov ax, [bp+12h]
or ax, ax
jz short emu086_1047E
mul word ptr [bp+2]
add di, ax
adc bx, dx
adc cx, 0
adc si, 0
mov ax, [bp+12h]
mul word ptr [bp+4]
add bx, ax
adc cx, dx
adc si, 0
mov ax, [bp+12h]
mul word ptr [bp+6]
add cx, ax
adc si, dx
emu086_1047E:
mov dx, si
xchg ax, di
pop si
pop di
retn
emu086_103A3 endp
; START OF FUNCTION CHUNK FOR emu086_104DA
emu086_10484:
mov si, di
mov di, [bp+arg_0]
nopcall emu086_10062
jb short emu086_104BE
cmp word ptr [bx+8], 4001h
jl short emu086_104C6
call emu086_10EA3
jmp short emu086_104BE
emu086_1049B:
mov si, bx
mov bx, 0FFFFh
mov di, [bp+arg_0]
nopcall emu086_10062
jb short emu086_104BE
jmp short emu086_104B0
emu086_104AB:
mov ch, 4
emu086_104AD:
call emu086_12759
emu086_104B0:
mov ax, 4001h
emu086_104B3:
mov cl, [bp-7]
nop
mov di, [bp+arg_0]
nopcall emu086_10E8D
emu086_104BE:
jmp emu086_10822
emu086_104C1:
mov ch, 10h
call emu086_12759
emu086_104C6:
mov ax, 0C001h
jmp short emu086_104B3
emu086_104CB:
mov ch, 8
jmp short emu086_104AD
emu086_104CF:
mov ax, [bp-12h]
or ax, [bp-14h]
jnz short emu086_10536
jmp emu086_1082E
; END OF FUNCTION CHUNK FOR emu086_104DA
emu086_104DA proc near
var_14 = word ptr -14h
var_12 = word ptr -12h
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_C = word ptr -0Ch
var_A = word ptr -0Ah
var_8 = byte ptr -8
var_7 = byte ptr -7
var_6 = word ptr -6
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
; FUNCTION CHUNK AT 0434 SIZE 00000056 BYTES
push bp
mov bp, sp
push si
push di
lea sp, [bp-0Ch]
mov di, [bp+arg_2]
mov bx, [bp+arg_4]
cld
mov al, [bx+0Ah]
xor al, [di+0Ah]
mov [bp+var_7], al
mov si, [di+8]
mov ax, [bx+8]
cmp si, 4001h
jge short emu086_10484
cmp ax, 4001h
jge short emu086_1049B
cmp si, 0C001h
jle short emu086_104AB
cmp ax, 0C001h
jle short emu086_104C6
sub ax, si
cmp ax, 4001h
jge short emu086_104CB
cmp ax, 0C001h
jle short emu086_104C1
mov dx, [di+6]
push dx
mov cx, [di+4]
push cx
push word ptr [di+2]
push word ptr [di]
mov [bp+var_6], ax
mov [bp+var_8], 0
mov di, [bx+6]
mov si, [bx+4]
jcxz short emu086_104CF
emu086_10536:
xchg ax, cx
mov cx, [bx+2]
mov bx, [bx]
cmp di, dx
jb short emu086_105BA
mov [bp+var_8], 1
sub bx, [bp+var_14]
sbb cx, [bp+var_12]
sbb si, ax
sbb di, dx
jnb short emu086_105BA
sub ax, ax
cwd
sub ax, si
sbb dx, di
div [bp+var_E]
mov [bp+var_A], ax
mul [bp+var_E]
add si, ax
adc di, dx
mov ax, [bp+var_10]
mul [bp+var_A]
add cx, ax
adc si, dx
adc di, 0
mov ax, [bp+var_12]
mul [bp+var_A]
add bx, ax
adc cx, dx
adc si, 0
adc di, 0
mov ax, [bp+var_14]
mul [bp+var_A]
neg [bp+var_A]
sbb [bp+var_8], 0
add bx, dx
adc cx, 0
adc si, 0
adc di, 0
xchg ax, di
jl short emu086_105B5
cmp si, [bp+var_E]
jb short emu086_105B7
add [bp+var_A], 1
adc [bp+var_8], 0
sub di, [bp+var_14]
sbb bx, [bp+var_12]
sbb cx, [bp+var_10]
sbb si, [bp+var_E]
emu086_105B5:
jl short emu086_1061D
emu086_105B7:
jmp emu086_10686
emu086_105BA:
mov ax, si
mov dx, di
div [bp+var_E]
mov [bp+var_A], ax
mul [bp+var_E]
sub si, ax
sbb di, dx
mov ax, [bp+var_10]
mul [bp+var_A]
sub cx, ax
sbb si, dx
sbb di, 0
mov ax, [bp+var_12]
mul [bp+var_A]
sub bx, ax
sbb cx, dx
sbb si, 0
sbb di, 0
mov ax, [bp+var_14]
mul [bp+var_A]
neg ax
sbb bx, dx
sbb cx, 0
sbb si, 0
sbb di, 0
xchg ax, di
jge short emu086_105B7
mov dx, si
neg dx
cmp dx, [bp+var_E]
jb short emu086_1061D
sub [bp+var_A], 1
sbb [bp+var_8], 0
add di, [bp+var_14]
adc bx, [bp+var_12]
adc cx, [bp+var_10]
adc si, [bp+var_E]
jge short emu086_10686
emu086_1061D:
sub ax, ax
cwd
sub ax, cx
sbb dx, si
div [bp+var_E]
mov [bp+var_C], ax
mul [bp+var_E]
add cx, ax
adc si, dx
mov ax, [bp+var_10]
mul [bp+var_C]
add bx, ax
adc cx, dx
adc si, 0
mov ax, [bp+var_12]
mul [bp+var_C]
add di, ax
adc bx, dx
adc cx, 0
adc si, 0
mov ax, [bp+var_14]
mul [bp+var_C]
sub ax, ax
neg [bp+var_C]
sbb [bp+var_A], ax
sbb [bp+var_8], al
add di, dx
adc bx, ax
adc cx, ax
adc si, ax
jl short emu086_106E4
cmp cx, [bp+var_E]
jb short emu086_10683
add [bp+var_C], 1
adc [bp+var_A], ax
adc [bp+var_8], al
sub di, [bp+var_12]
sbb bx, [bp+var_10]
sbb cx, [bp+var_E]
jl short emu086_106E4
emu086_10683:
jmp emu086_10739
emu086_10686:
mov ax, cx
mov dx, si
div [bp+var_E]
mov [bp+var_C], ax
mul [bp+var_E]
sub cx, ax
sbb si, dx
mov ax, [bp+var_10]
mul [bp+var_C]
sub bx, ax
sbb cx, dx
sbb si, 0
mov ax, [bp+var_12]
mul [bp+var_C]
sub di, ax
sbb bx, dx
sbb cx, 0
sbb si, 0
mov ax, [bp+var_14]
mul [bp+var_C]
sub ax, ax
sub di, dx
sbb bx, ax
sbb cx, ax
sbb si, ax
jge short emu086_10739
mov dx, cx
neg dx
cmp dx, [bp+var_E]
jb short emu086_106E4
sub [bp+var_C], 1
sbb [bp+var_A], ax
sbb [bp+var_8], al
add di, [bp+var_12]
adc bx, [bp+var_10]
adc cx, [bp+var_E]
jge short emu086_10739
emu086_106E4:
sub ax, ax
cwd
sub ax, bx
sbb dx, cx
div [bp+var_E]
mov si, ax
mul [bp+var_E]
add bx, ax
adc cx, dx
mov ax, [bp+var_10]
mul si
add di, ax
adc bx, dx
adc cx, 0
mov ax, [bp+var_12]
mul si
sub ax, ax
neg si
sbb [bp+var_C], ax
sbb [bp+var_A], ax
sbb [bp+var_8], al
add di, dx
adc bx, ax
adc cx, ax
jl short emu086_10781
cmp bx, [bp+var_E]
jb short emu086_10736
add si, 1
adc [bp+var_C], ax
adc [bp+var_A], ax
adc [bp+var_8], al
sub di, [bp+var_10]
sbb bx, [bp+var_E]
jl short emu086_10781
emu086_10736:
jmp emu086_107C3
emu086_10739:
mov ax, bx
mov dx, cx
div [bp+var_E]
mov si, ax
mul [bp+var_E]
sub bx, ax
sbb cx, dx
mov ax, [bp+var_10]
mul si
sub di, ax
sbb bx, dx
sbb cx, 0
mov ax, [bp+var_12]
mul si
sub ax, ax
sub di, dx
sbb bx, ax
sbb cx, ax
jge short emu086_107C3
mov dx, bx
neg dx
cmp dx, [bp+var_E]
jb short emu086_10781
sub si, 1
sbb [bp+var_C], ax
sbb [bp+var_A], ax
sbb [bp+var_8], al
add di, [bp+var_10]
adc bx, [bp+var_E]
jge short emu086_107C3
emu086_10781:
mov ax, [bp+var_10]
shr ax, 1
neg ax
mov cx, [bp+var_E]
add ax, cx
sub dx, dx
sub ax, di
sbb dx, bx
mov bx, [bp+var_C]
mov di, [bp+var_A]
cmp dx, cx
jnb short emu086_107B8
div cx
sub dx, cx
neg dx
neg ax
emu086_107A5:
mov dl, [bp+var_8]
sbb si, 0
jnb short emu086_107E1
sbb bx, 0
sbb di, 0
sbb dl, 0
jmp short emu086_107E1
emu086_107B8:
sub ax, ax
cwd
stc
jmp short emu086_107A5
emu086_107BE:
sub ax, ax
cwd
jmp short emu086_107DE
emu086_107C3:
mov ax, [bp+var_10]
shr ax, 1
neg ax
cwd
add ax, di
adc dx, bx
mov bx, [bp+var_C]
mov di, [bp+var_A]
mov cx, [bp+var_E]
cmp dx, cx
jnb short emu086_107BE
div cx
emu086_107DE:
mov dl, [bp+var_8]
emu086_107E1:
shr dl, 1
jnb short emu086_107F2
rcr di, 1
rcr bx, 1
rcr si, 1
rcr ax, 1
rcr dh, 1
inc [bp+var_6]
emu086_107F2:
shr cx, 1
sub ch, dh
mov cx, [bp+var_6]
adc ax, 0
jnb short emu086_10809
adc si, ax
adc bx, ax
adc di, ax
jnb short emu086_10809
rcr di, 1
inc cx
emu086_10809:
cmp cx, 4001h
jge short emu086_1082B
mov dx, di
mov di, [bp+arg_0]
cld
stosw
xchg ax, si
stosw
xchg ax, bx
stosw
xchg ax, dx
stosw
xchg ax, cx
stosw
mov al, [bp+var_7]
stosb
emu086_10822:
lea sp, [bp-4]
pop di
pop si
pop bp
retn 6
emu086_1082B:
jmp emu086_104B0
emu086_1082E:
mov cx, dx
mov dx, di
xchg ax, si
cmp dx, cx
jb short emu086_1083D
sub dx, cx
mov [bp+var_8], 1
emu086_1083D:
div cx
xchg ax, di
mov ax, [bx+2]
div cx
mov bx, [bx]
xchg ax, bx
div cx
xchg ax, si
sub ax, ax
div cx
jmp short emu086_107DE
emu086_104DA endp ; sp-analysis failed
mov si, word ptr ds:__emu+0Dh
emu086_10855 proc near
push bp
mov bp, sp
push si
push di
mov ax, [si+8]
cmp ax, 0C001h
jle short emu086_1088B
cmp ax, 4001h
jge short emu086_1088F
cmp byte ptr [si+0Ah], 0
jnz short emu086_10899
call emu086_10EBB
call emu086_108AA
mov di, word ptr ds:__emu+0Dh
push si
push di
push si
call emu086_104DA
push di
push si
push si
call emu086_10143
dec word ptr [si+8]
add word ptr ds:__emu+0Dh, 0Ch
emu086_1088B:
pop di
pop si
pop bp
retn
emu086_1088F:
mov bx, 0FFFFh
mov di, si
call emu086_10062
jmp short emu086_1088B
emu086_10899:
mov ch, 1
call emu086_12759
mov di, si
call emu086_10E77
mov word ptr [di+8], 4001h
jmp short emu086_1088B
emu086_10855 endp
emu086_108AA proc near
push si
push di
mov di, word ptr ds:__emu+0Dh
mov bx, [di+8]
mov dx, [di+6]
mov ax, [di+4]
mov cx, [di+2]
sar bx, 1
jnb short emu086_108C7
inc bx
shr dx, 1
rcr ax, 1
rcr cx, 1
emu086_108C7:
cmp dx, 0FFFEh
jnb short emu086_108E9
push bx
push cx
mov cx, dx
mov bx, ax
mov si, dx
stc
rcr si, 1
emu086_108D7:
div si
dec si
cmp si, ax
jbe short emu086_108F0
inc si
add si, ax
rcr si, 1
mov dx, cx
mov ax, bx
jmp short emu086_108D7
emu086_108E9:
stc
rcr dx, 1
rcr ax, 1
jmp short emu086_10907
emu086_108F0:
inc si
cmp si, ax
jnb short emu086_108F6
xchg ax, si
emu086_108F6:
pop cx
pop bx
xchg ax, cx
div si
sub dx, dx
add si, cx
rcr si, 1
rcr ax, 1
adc ax, dx
adc dx, si
emu086_10907:
cld
sub cx, cx
xchg ax, cx
stosw
stosw
xchg ax, cx
stosw
xchg ax, dx
stosw
xchg ax, bx
stosw
mov al, 0
stosb
pop di
pop si
retn
emu086_108AA endp
byte_10919 db 0, 2, 40h, 42h, 1, 3, 41h, 43h
emu086_10921 proc near
var_A = word ptr -0Ah
var_4 = word ptr -4
var_2 = byte ptr -2
push bp
mov bp, sp
push word ptr [di+0Ah]
lea sp, [bp-6]
push si
push di
mov ax, [di]
mov bx, [di+2]
mov cx, [di+4]
mov dx, [di+6]
mov [bp+var_4], 0
mov di, [di+8]
sub di, [si+8]
jge short emu086_1095B
jmp short emu086_10997
emu086_10946:
inc di
jmp short emu086_10986
emu086_10949:
dec di
jl short emu086_10946
shl [bp+var_4], 1
shl ax, 1
rcl bx, 1
rcl cx, 1
adc dx, dx
jb short emu086_10974
jns short emu086_10949
emu086_1095B:
cmp dx, [si+6]
ja short emu086_10974
jb short emu086_10949
cmp cx, [si+4]
ja short emu086_10974
jb short emu086_10949
cmp bx, [si+2]
ja short emu086_10974
jb short emu086_10949
cmp ax, [si]
jb short emu086_10949
emu086_10974:
inc [bp+var_4]
sub ax, [si]
sbb bx, [si+2]
sbb cx, [si+4]
sbb dx, [si+6]
or di, di
jg short emu086_10949
emu086_10986:
or dx, dx
js short emu086_10997
jz short emu086_109CF
emu086_1098C:
dec di
shl ax, 1
rcl bx, 1
rcl cx, 1
adc dx, dx
jns short emu086_1098C
emu086_10997:
add di, [si+8]
emu086_1099A:
push di
mov di, [bp+var_A]
stosw
xchg ax, bx
stosw
xchg ax, cx
stosw
xchg ax, dx
stosw
pop ax
stosw
mov al, [bp+var_2]
stosb
and ds:__emu+1, 0B8h
mov di, 7
mov ax, [bp+var_4]
cmp [bp+var_2], 1
jnz short emu086_109BE
neg ax
emu086_109BE:
and di, ax
mov dl, cs:byte_10919[di]
or ds:__emu+1, dl
pop di
pop si
mov sp, bp
pop bp
retn
emu086_109CF:
xchg dx, cx
xchg cx, bx
xchg ax, bx
sub di, 10h
or dx, dx
jnz short emu086_10986
xchg dx, cx
xchg cx, bx
sub di, 10h
or dx, dx
jnz short emu086_10986
xchg dx, cx
sub di, 10h
or dx, dx
jnz short emu086_10986
mov di, 0C001h
sub dx, dx
sub cx, cx
sub bx, bx
sub ax, ax
jmp short emu086_1099A
emu086_10921 endp
; START OF FUNCTION CHUNK FOR emu086_10A29
emu086_109FC:
mov dx, [si+6]
and dh, 7Fh
or dx, [si]
or dx, [si+2]
or dx, [si+4]
jz short emu086_10A3F
emu086_10A0C:
mov ch, 1
call emu086_12759
mov ax, 4500h
jmp emu086_10AA7
emu086_10A17:
mov dx, [di+6]
and dh, 7Fh
or dx, [di]
or dx, [di+2]
or dx, [di+4]
jnz short emu086_10A0C
jmp short emu086_10A45
; END OF FUNCTION CHUNK FOR emu086_10A29
emu086_10A29 proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
; FUNCTION CHUNK AT 09AC SIZE 0000002D BYTES
push bp
mov bp, sp
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_0]
mov ax, [si+8]
mov bx, [di+8]
cmp ax, 4001h
jge short emu086_109FC
emu086_10A3F:
cmp bx, 4001h
jge short emu086_10A17
emu086_10A45:
mov dx, ax
cmp ax, bx
jg short emu086_10A4D
mov dx, bx
emu086_10A4D:
cmp dx, 0C001h
jle short emu086_10A8E
mov cl, [si+0Ah]
cmp cl, [di+0Ah]
jl short emu086_10AA4
jg short emu086_10A9A
cmp ax, bx
jl short emu086_10A95
jg short emu086_10A9F
mov ax, [si+6]
cmp ax, [di+6]
jnz short emu086_10A93
mov ch, 3
and ch, ds:__emu+3
jz short emu086_10AB1
mov ax, [si+4]
cmp ax, [di+4]
jnz short emu086_10A93
mov ax, [si+2]
cmp ax, [di+2]
jnz short emu086_10A93
cmp ch, 2
jz short emu086_10AD3
mov ax, [si]
cmp ax, [di]
jnz short emu086_10A93
emu086_10A8E:
mov ax, 4000h
jmp short emu086_10AA7
emu086_10A93:
ja short emu086_10A9F
emu086_10A95:
cmp cl, 0
jnz short emu086_10AA4
emu086_10A9A:
mov ax, 100h
jmp short emu086_10AA7
emu086_10A9F:
cmp cl, 0
jnz short emu086_10A9A
emu086_10AA4:
mov ax, 0
emu086_10AA7:
mov ds:__emu+1, ah
pop di
pop si
pop bp
retn 4
emu086_10AB1:
mov bx, [si]
sub bx, [di]
mov bx, [si+2]
sbb bx, [di+2]
mov bx, [si+4]
sbb bx, [di+4]
ja short emu086_10ACC
neg bx
and bx, 0FF80h
jz short emu086_10A8E
jmp short emu086_10A95
emu086_10ACC:
and bx, 0FF80h
jz short emu086_10A8E
jmp short emu086_10A9F
emu086_10AD3:
mov bx, [si]
sub bx, [di]
ja short emu086_10AE2
neg bx
and bh, 0FCh
jz short emu086_10A8E
jmp short emu086_10A95
emu086_10AE2:
and bh, 0FCh
jz short emu086_10A8E
jmp short emu086_10A9F
emu086_10A29 endp
emu086_10AE9 proc near
mov ax, 4000h
cmp word ptr [si+8], 0C001h
jle short emu086_10B06
cmp word ptr [si+8], 4001h
jge short emu086_10B0B
emu086_10AFA:
mov ax, 100h
cmp byte ptr [si+0Ah], 1
jz short emu086_10B06
mov ax, 0
emu086_10B06:
mov ds:__emu+1, ah
retn
emu086_10B0B:
mov dx, [si+6]
and dh, 7Fh
or dx, [si]
or dx, [si+2]
or dx, [si+4]
jz short emu086_10AFA
mov ch, 1
call emu086_12759
mov ax, 4500h
jmp short emu086_10B06
emu086_10AE9 endp
emu086_10B25 proc near
mov ax, 4000h
cmp word ptr [si+8], 0C001h
jle short emu086_10B42
cmp word ptr [si+8], 4001h
jge short emu086_10B47
mov ax, 400h
emu086_10B39:
cmp byte ptr [si+0Ah], 1
jnz short emu086_10B42
or ax, 200h
emu086_10B42:
mov ds:__emu+1, ah
retn
emu086_10B47:
mov ax, 500h
mov dx, [si+6]
and dh, 7Fh
or dx, [si]
or dx, [si+2]
or dx, [si+4]
jz short emu086_10B39
mov ax, 100h
jmp short emu086_10B39
emu086_10B25 endp
emu086_10B5F proc near
mov ax, [si+4]
mov dx, [si+6]
mov bx, [si+8]
mov cl, [si+0Ah]
cmp word ptr [si], 0
jnz short emu086_10B7F
cmp word ptr [si+2], 0
jnz short emu086_10B7F
test al, 7Fh
jnz short emu086_10B7F
test ah, 1
jz short emu086_10B8E
emu086_10B7F:
add al, al
adc ah, 0
adc dx, 0
jnb short emu086_10B8E
rcr dx, 1
rcr ax, 1
inc bx
emu086_10B8E:
add bx, 7Eh ; '~'
jle short emu086_10BC5
cmp bx, 0FFh
jge short emu086_10BB0
emu086_10B99:
shl dx, 1
shr cl, 1
rcr bl, 1
rcr dx, 1
mov al, ah
mov ah, dl
mov dl, dh
mov dh, bl
stosw
xchg ax, dx
stosw
sub di, 4
retn
emu086_10BB0:
cmp word ptr [si+8], 4001h
jge short emu086_10BC0
mov ch, 8
call emu086_12759
sub dx, dx
sub ax, ax
emu086_10BC0:
mov bx, 0FFh
jmp short emu086_10B99
emu086_10BC5:
cmp word ptr [si+8], 0C001h
jle short emu086_10BD1
mov ch, 10h
call emu086_12759
emu086_10BD1:
sub bx, bx
mov dx, bx
mov ax, bx
jmp short emu086_10B99
emu086_10B5F endp
emu086_10BD9 proc near
mov ax, es:[si]
mov dx, es:[si+2]
push si
sub si, si
shl dx, 1
rcl si, 1
sub bx, bx
add bl, dh
jz short emu086_10C1B
cmp dh, 0FFh
jz short emu086_10C16
sub bx, 7Eh ; '~'
emu086_10BF5:
stc
rcr dl, 1
emu086_10BF8:
mov dh, dl
mov dl, ah
mov ch, al
mov cl, 0
sub ax, ax
mov [di], ax
mov [di+2], ax
mov [di+4], cx
mov [di+6], dx
mov [di+8], bx
xchg ax, si
mov [di+0Ah], al
pop si
retn
emu086_10C16:
mov bx, 4001h
jmp short emu086_10BF5
emu086_10C1B:
mov cx, dx
or cx, ax
jz short emu086_10C2F
sub bx, 7Eh ; '~'
shr dl, 1
emu086_10C26:
add ax, ax
adc dl, dl
js short emu086_10BF8
dec bx
jmp short emu086_10C26
emu086_10C2F:
mov bx, 0C001h
jmp short emu086_10BF8
emu086_10BD9 endp
mov es, cx
emu086_10C36 proc near
push di
mov ax, [si+1]
mov di, [si+3]
mov cx, [si+5]
mov dl, [si+7]
mov bx, [si+8]
mov dh, 3
and dh, al
or dh, [si]
jnz short emu086_10C52
test al, 8
jz short emu086_10C63
emu086_10C52:
add ax, 4
adc di, 0
adc cx, 0
adc dl, 0
jnb short emu086_10C63
rcr dl, 1
inc bx
emu086_10C63:
add bx, 3FEh
jle short emu086_10CAB
cmp bx, 7FFh
jge short emu086_10CB8
emu086_10C6F:
and al, 0F8h
shl dl, 1
shr bx, 1
rcr dl, 1
or al, bh
mov dh, bl
mov bx, di
shr di, 1
rcr ax, 1
rcr dx, 1
rcr cx, 1
rcr bx, 1
shr di, 1
rcr ax, 1
rcr dx, 1
rcr cx, 1
rcr bx, 1
or al, [si+0Ah]
shr di, 1
rcr ax, 1
rcr dx, 1
rcr cx, 1
rcr bx, 1
emu086_10C9E:
pop di
cld
stosw
xchg ax, bx
stosw
xchg ax, cx
stosw
xchg ax, dx
stosw
sub di, 8
retn
emu086_10CAB:
sub dx, dx
cmp word ptr [si+8], 0C001h
jle short emu086_10CC7
mov ch, 10h
jmp short emu086_10CC4
emu086_10CB8:
cmp word ptr [si+8], 4001h
jge short emu086_10CD4
mov dx, 0FFE0h
mov ch, 8
emu086_10CC4:
call emu086_12759
emu086_10CC7:
or dl, [si+0Ah]
ror dx, 1
sub cx, cx
mov bx, cx
mov ax, cx
jmp short emu086_10C9E
emu086_10CD4:
mov bx, 7FFh
jmp short emu086_10C6F
emu086_10C36 endp
mov si, bx
mov es, ax
emu086_10CDD proc near
mov dx, es:[si+6]
mov cx, 5
shl dx, 1
rcl ch, 1
mov [di+0Ah], ch
shr dx, cl
jz short emu086_10D52
cmp dx, 7FFh
jz short emu086_10D38
mov bl, 10h
sub dx, 3FEh
emu086_10CFB:
mov [di+8], dx
mov dx, es:[si+5]
and dh, 0Fh
or dh, bl
mov cx, es:[si+3]
mov bx, es:[si+1]
mov ah, es:[si]
mov al, 0
shl ax, 1
rcl bx, 1
rcl cx, 1
rcl dx, 1
shl ax, 1
rcl bx, 1
rcl cx, 1
rcl dx, 1
shl ax, 1
rcl bx, 1
rcl cx, 1
rcl dx, 1
emu086_10D2C:
mov [di], ax
mov [di+2], bx
mov [di+4], cx
mov [di+6], dx
retn
emu086_10D38:
mov bx, 0Fh
and bl, es:[si+6]
or bx, es:[si+4]
or bx, es:[si+2]
or bx, es:[si]
mov dx, 4001h
or bl, 10h
jmp short emu086_10CFB
emu086_10D52:
mov bx, 0Fh
and bl, es:[si+6]
or bx, es:[si+4]
or bx, es:[si+2]
or bx, es:[si]
jnz short emu086_10D6B
mov dx, 0C001h
jmp short emu086_10CFB
emu086_10D6B:
mov dx, es:[si+5]
and dh, 0Fh
mov cx, es:[si+3]
mov bx, es:[si+1]
mov ah, es:[si]
mov al, 4
emu086_10D7F:
dec al
shl ah, 1
rcl bx, 1
rcl cx, 1
adc dx, dx
jns short emu086_10D7F
push ax
mov ah, 0
sub ax, 4FEh
mov [di+8], ax
pop ax
mov al, 0
jmp short emu086_10D2C
emu086_10CDD endp
mov es, cx
emu086_10D9B proc near
cld
movsw
movsw
movsw
movsw
lodsw
mov cl, [si]
cmp ax, 4001h
jge short emu086_10DBB
add ax, 3FFEh
jl short emu086_10DC0
emu086_10DAD:
shl ax, 1
shr cl, 1
rcr ax, 1
stosw
sub di, 0Ah
sub si, 0Ah
retn
emu086_10DBB:
mov ax, 7FFFh
jmp short emu086_10DAD
emu086_10DC0:
sub ax, ax
jmp short emu086_10DAD
emu086_10D9B endp
mov si, bx
mov es, ax
emu086_10DC8 proc near
push si
mov cx, ds
mov dx, es
mov es, cx
mov ds, dx
std
lea si, [si+8]
lea di, [di+0Ah]
lodsw
xchg ax, bx
sub ax, ax
shl bx, 1
rcl ax, 1
stosb
dec di
shr bx, 1
jz short emu086_10DF9
sub bx, 3FFEh
xchg ax, bx
stosw
movsw
movsw
movsw
movsw
emu086_10DF0:
cld
mov es, dx
mov ds, cx
inc di
inc di
pop si
retn
emu086_10DF9:
mov ax, 0C001h
stosw
sub ax, ax
stosw
stosw
stosw
stosw
jmp short emu086_10DF0
emu086_10DC8 endp
byte_10E05 db 0, 0, 0, 0, 0, 0, 0, 80h, 1, 0, 0
db ?
emu086_10E11 proc near
mov ax, offset byte_10E05
jmp short emu086_10E7A
emu086_10E11 endp
byte_10E16 db 0FEh, 8Ah, 1Bh, 0CDh, 4Bh, 78h, 9Ah, 0D4h, 2, 0, 0
db ?
emu086_10E22 proc near
mov ax, offset byte_10E16
jmp short emu086_10E7A
emu086_10E22 endp
byte_10E27 db 0BBh, 0F0h, 17h, 5Ch, 29h, 3Bh, 0AAh, 0B8h, 1, 0, 0
db ?
emu086_10E33 proc near
mov ax, offset byte_10E27
jmp short emu086_10E7A
emu086_10E33 endp
byte_10E38 db 35h, 0C2h, 68h, 21h, 0A2h, 0DAh, 0Fh, 0C9h, 2, 0, 0
db ?
emu086_10E44 proc near
mov ax, offset byte_10E38
jmp short emu086_10E7A
emu086_10E44 endp
byte_10E49 db 99h, 0F7h, 0CFh, 0FBh, 84h, 9Ah, 20h, 9Ah, 0FFh, 0FFh
db 0, ?
emu086_10E55 proc near
mov ax, offset byte_10E49
jmp short emu086_10E7A
emu086_10E55 endp
byte_10E5A db 0ACh, 79h, 0CFh, 0D1h, 0F7h, 17h, 72h, 0B1h, 0, 0, 0
db ?
emu086_10E66 proc near
mov ax, offset byte_10E5A
jmp short emu086_10E7A
emu086_10E66 endp
byte_10E6B db 0, 0, 0, 0, 0, 0, 0, 0, 1, 0C0h, 0
db ?
emu086_10E77 proc near
mov ax, offset byte_10E6B
emu086_10E7A:
push ds
mov cx, cs
mov ds, cx
xchg ax, si
cld
mov cx, 5
rep movsw
movsb
sub di, 0Bh
xchg ax, si
pop ds
retn
emu086_10E77 endp
emu086_10E8D proc near
cld
push di
push ax
cmp ax, 0C001h
mov ax, 0
stosw
stosw
stosw
rcr ax, 1
stosw
pop ax
stosw
mov al, cl
stosb
pop di
retn
emu086_10E8D endp
emu086_10EA3 proc near
mov ch, 1
call emu086_12759
push di
sub ax, ax
cld
stosw
stosw
stosw
mov ah, 0C0h ; '<27>'
stosw
mov ax, 4001h
stosw
mov al, 1
stosb
pop di
retn
emu086_10EA3 endp
emu086_10EBB proc near
push di
push es
mov di, ss
mov es, di
sub word ptr ds:__emu+0Dh, 0Ch
mov di, word ptr ds:__emu+0Dh
cld
mov cx, 5
rep movsw
movsb
pop es
pop di
sub si, 0Bh
retn
emu086_10EBB endp
emu086_10ED7 proc near
push si
push di
sub word ptr ds:__emu+0Dh, 0Ch
mov di, word ptr ds:__emu+0Dh
push ds
push es
push ds
pop es
push cs
pop ds
cld
mov cx, 5
rep movsw
movsb
pop es
pop ds
pop di
pop si
retn
emu086_10ED7 endp
emu086_10EF4 proc near
push si
mov si, word ptr ds:__emu+0Dh
cld
mov cx, 5
rep movsw
movsb
inc si
mov word ptr ds:__emu+0Dh, si
sub di, 0Bh
pop si
retn
emu086_10EF4 endp
emu086_10F0A proc near
push si
push di
push es
mov si, word ptr ds:__emu+0Dh
lea di, [si-0Ch]
mov word ptr ds:__emu+0Dh, di
cld
mov cx, ss
mov es, cx
mov cx, 5
rep movsw
movsb
pop es
pop di
pop si
retn
emu086_10F0A endp
emu086_10F27 proc near
push si
push di
mov si, word ptr ds:__emu+0Dh
mov di, si
cld
push es
mov cx, ss
mov es, cx
mov cx, 5
emu086_10F38:
lodsw
xchg ax, [di+0Ch]
stosw
loop emu086_10F38
lodsb
xchg al, [di+0Ch]
stosb
pop es
pop di
pop si
retn
emu086_10F27 endp
emu086_10F48 proc near
mov ax, es:[si]
sub cx, cx
cwd
xor ax, dx
sub ax, dx
jz short emu086_10F86
and dl, 1
emu086_10F57:
mov bx, cx
xchg ax, cx
shl ax, 1
emu086_10F5C:
rcr ax, 1
inc bx
shr cx, 1
rcr ax, 1
jcxz short emu086_10F6C
inc bx
shr cx, 1
jnz short emu086_10F5C
rcr ax, 1
emu086_10F6C:
mov [di+0Ah], dl
mov [di+8], bx
mov [di+6], ax
mov [di+4], cx
mov [di+2], cx
mov [di], cx
retn
sub cx, cx
mov dx, cx
or ax, ax
jnz short emu086_10F57
emu086_10F86:
mov bx, 0C001h
jmp short emu086_10F6C
emu086_10F48 endp
emu086_10F8B proc near
mov cx, [si+8]
cmp cx, 10h
emu086_10F91:
jg short emu086_11003
cmp cx, 0C001h
jle short emu086_1100D
mov bx, [si+6]
sub ax, ax
or cx, cx
jge short emu086_10FA6
shr bx, 1
rcr dx, 1
emu086_10FA6:
mov dx, [si+4]
or cx, cx
jle short emu086_10FB5
emu086_10FAD:
shl dx, 1
rcl bx, 1
rcl ax, 1
loop emu086_10FAD
emu086_10FB5:
or dx, [si]
or dx, [si+2]
or bl, dh
or bl, dl
mov cl, 0Ch
and cl, ds:__emu+3
cmp cl, 0Ch
jz short emu086_10FF3
cmp cl, 0
jz short emu086_10FE4
add cl, [si+0Ah]
cmp cl, 4
jz short emu086_10FF3
cmp cl, 9
jz short emu086_10FF3
neg bx
adc ax, 0
jb short emu086_11003
jmp short emu086_10FF3
emu086_10FE4:
mov dl, 1
and dl, al
or bl, dl
add bx, 7FFFh
adc ax, 0
jb short emu086_11003
emu086_10FF3:
cmp byte ptr [si+0Ah], 1
jz short emu086_11011
sahf
jns short emu086_11017
cmp ds:__emu+3Ch, 1
jz short emu086_11017
emu086_11003:
mov ch, 8
call emu086_12759
mov ax, 8000h
jmp short emu086_11017
emu086_1100D:
sub ax, ax
jmp short emu086_11017
emu086_11011:
neg ax
jz short emu086_11017
jns short emu086_11003
emu086_11017:
mov ds:__emu+3Ch, 0
mov es:[di], ax
retn
emu086_10F8B endp
emu086_11020 proc near
mov ds:__emu+3Ch, 1
mov cx, [si+8]
cmp cx, 10h
jmp emu086_10F91
emu086_11020 endp
emu086_1102E proc near
push si
push di
cld
mov cx, 5
rep movsw
movsb
pop di
pop si
xchg si, di
lea si, [si+8]
cmp word ptr [si], 0C001h
jle short locret_11053
cmp word ptr [si], 4001h
jge short emu086_11054
dec word ptr [si]
call emu086_10F48
mov word ptr [si], 1
locret_11053:
retn
emu086_11054:
mov word ptr [si], 0C001h
mov word ptr [di+8], 0Dh
mov byte ptr [di+7], 80h ; '<27>'
jmp short locret_11053
emu086_1102E endp
emu086_11063 proc near
push bp
mov bp, sp
push si
push di
mov cx, [si+8]
cmp cx, 0Fh
jg short emu086_11078
or cx, cx
jg short emu086_11082
sub ax, ax
jmp short emu086_11094
emu086_11078:
mov ch, 8
call emu086_12759
mov ax, 7FFFh
jmp short emu086_1108C
emu086_11082:
mov ax, [si+6]
neg cl
add cl, 10h
shr ax, cl
emu086_1108C:
cmp byte ptr [si+0Ah], 1
jnz short emu086_11094
neg ax
emu086_11094:
mov cx, [di+8]
cmp cx, 0C001h
jle short emu086_110B2
cmp cx, 4001h
jge short emu086_110B2
add ax, cx
cmp ax, 0C001h
jle short emu086_110C0
cmp ax, 4001h
jge short emu086_110B6
mov [di+8], ax
emu086_110B2:
pop di
pop si
pop bp
retn
emu086_110B6:
mov ch, 8
call emu086_12759
mov ax, 4001h
jmp short emu086_110C8
emu086_110C0:
mov ch, 10h
call emu086_12759
mov ax, 0C001h
emu086_110C8:
call emu086_10E8D
jmp short emu086_110B2
emu086_11063 endp
emu086_110CD proc near
mov cx, dx
xchg ax, bx
jmp short emu086_110E1
emu086_110CD endp
emu086_110D2 proc near
mov cx, dx
xchg ax, bx
mov dx, 0
jmp short emu086_110F3
emu086_110D2 endp
emu086_110DA proc near
mov bx, es:[si]
mov cx, es:[si+2]
emu086_110E1:
sub ax, ax
mov dx, 0
or cx, cx
jns short emu086_110F3
not cx
neg bx
sbb cx, 0FFFFh
mov dl, 1
emu086_110F3:
mov [di+0Ah], dl
mov dl, 10h
or cx, cx
jnz short emu086_11108
xchg bx, cx
mov dl, 0
jcxz short emu086_11120
jmp short emu086_11108
emu086_11104:
rcr bx, 1
rcr ax, 1
emu086_11108:
inc dx
shr cx, 1
jnz short emu086_11104
rcr bx, 1
rcr ax, 1
emu086_11111:
mov [di+8], dx
mov [di+6], bx
mov [di+4], ax
mov [di+2], cx
mov [di], cx
retn
emu086_11120:
mov dx, 0C001h
jmp short emu086_11111
emu086_110DA endp
emu086_11125 proc near
mov ds:__emu+3Ch, 1
mov cx, [si+8]
cmp cx, 20h ; ' '
jmp short emu086_11138
emu086_11125 endp
emu086_11132 proc near
mov cx, [si+8]
cmp cx, 20h ; ' '
emu086_11138:
jg short emu086_1116D
or cx, cx
jge short emu086_1117A
cmp cx, 0C001h
jle short emu086_11157
mov bl, 0Ch
and bl, ds:__emu+3
add bl, [si+0Ah]
cmp bl, 5
jz short emu086_1115D
cmp bl, 8
jz short emu086_1115D
emu086_11157:
sub dx, dx
mov ax, dx
jmp short emu086_11177
emu086_1115D:
sub dx, dx
mov ax, 1
cmp bl, 5
jnz short emu086_11177
neg ax
not dx
jmp short emu086_11177
emu086_1116D:
mov ch, 8
call emu086_12759
mov dx, 8000h
sub ax, ax
emu086_11177:
jmp emu086_11211
emu086_1117A:
mov bx, [si+2]
or bl, [si]
or bl, [si+1]
mov ax, [si+4]
mov dx, [si+6]
sub cl, 10h
ja short emu086_1119D
emu086_1118D:
or al, bl
or al, bh
xchg ax, bx
xchg ax, dx
sub dx, dx
add cl, 10h
jle short emu086_1118D
and cl, 0Fh
emu086_1119D:
jcxz short emu086_111BC
push si
mov si, 0FFFFh
rol dx, cl
rol ax, cl
shl si, cl
mov cx, si
and cx, ax
xor ax, cx
and si, dx
xor dx, si
or ax, si
or bl, bh
or bl, cl
mov bh, ch
pop si
emu086_111BC:
mov cl, 0Ch
and cl, ds:__emu+3
cmp cl, 0Ch
jz short emu086_11204
cmp cl, 0
jz short emu086_111DF
add cl, [si+0Ah]
cmp cl, 4
jz short emu086_11204
cmp cl, 9
jz short emu086_11204
neg bx
jb short emu086_111E9
jmp short emu086_11204
emu086_111DF:
mov cl, 1
and cl, al
or bl, cl
add bx, 7FFFh
emu086_111E9:
adc ax, 0
adc dx, 0
jns short emu086_11204
cmp byte ptr [si+0Ah], 1
jnz short emu086_11201
cmp dx, 8000h
jnz short emu086_11201
or ax, ax
jz short emu086_11204
emu086_11201:
jmp emu086_1116D
emu086_11204:
cmp byte ptr [si+0Ah], 1
jnz short emu086_11211
not dx
neg ax
sbb dx, 0FFFFh
emu086_11211:
mov ds:__emu+3Ch, 0
mov es:[di], ax
mov es:[di+2], dx
retn
emu086_11132 endp
emu086_1121E proc near
push bp
push si
mov ax, es:[si]
mov bx, es:[si+2]
mov cx, es:[si+4]
mov dx, es:[si+6]
mov bp, 0
or dx, dx
jl short emu086_11249
jg short emu086_1125E
or cx, cx
jnz short emu086_1125E
or bx, bx
jnz short emu086_1125E
or ax, ax
jnz short emu086_1125E
mov si, 0C001h
jmp short emu086_1127C
emu086_11249:
not dx
not cx
not bx
neg ax
cmc
adc bx, 0
adc cx, 0
adc dx, 0
mov bp, 1
emu086_1125E:
mov si, 40h ; '@'
emu086_11261:
or dx, dx
jnz short emu086_1126F
xchg dx, cx
xchg cx, bx
xchg ax, bx
sub si, 10h
jmp short emu086_11261
emu086_1126F:
js short emu086_1127C
emu086_11271:
dec si
add ax, ax
adc bx, bx
adc cx, cx
adc dx, dx
jns short emu086_11271
emu086_1127C:
mov [di+8], si
mov [di+6], dx
mov [di+4], cx
mov [di+2], bx
mov [di], ax
xchg ax, bp
mov [di+0Ah], al
pop si
pop bp
retn
emu086_1121E endp
emu086_11291 proc near
push bp
push di
mov cx, [si+8]
cmp cx, 3Fh ; '?'
jg short emu086_112D4
or cx, cx
jge short emu086_112E5
cmp cx, 0C001h
jle short emu086_112B8
mov bl, 0Ch
and bl, ds:__emu+3
add bl, [si+0Ah]
cmp bl, 5
jz short emu086_112BC
cmp bl, 8
jz short emu086_112BC
emu086_112B8:
sub bp, bp
jmp short emu086_112DC
emu086_112BC:
sub bp, bp
mov dx, bp
mov ax, 1
cmp bl, 5
mov bx, bp
jnz short emu086_112E2
neg ax
not bx
not dx
not bp
jmp short emu086_112E2
emu086_112D4:
mov ch, 8
call emu086_12759
mov bp, 8000h
emu086_112DC:
sub dx, dx
mov bx, dx
mov ax, bx
emu086_112E2:
jmp emu086_11376
emu086_112E5:
mov bp, [si+6]
mov dx, [si+4]
mov bx, [si+2]
mov di, [si]
sub ax, ax
sub cl, 30h ; '0'
ja short emu086_1130D
emu086_112F7:
or al, ah
mov ah, 0
or ax, di
mov di, bx
mov bx, dx
mov dx, bp
sub bp, bp
add cl, 10h
jle short emu086_112F7
and cl, 0Fh
emu086_1130D:
neg cl
jz short emu086_11322
add cl, 10h
emu086_11314:
or al, ah
shr bp, 1
rcr dx, 1
rcr bx, 1
rcr di, 1
rcr ah, 1
loop emu086_11314
emu086_11322:
mov cl, 0Ch
and cl, ds:__emu+3
cmp cl, 0Ch
jz short emu086_1135D
cmp cl, 0
jz short emu086_11347
add cl, [si+0Ah]
cmp cl, 4
jz short emu086_1135D
cmp cl, 9
jz short emu086_1135D
neg ax
jb short emu086_11350
jmp short emu086_1135D
emu086_11345:
jmp short emu086_112D4
emu086_11347:
mov cl, 1
and cx, di
or al, cl
add ax, 7FFFh
emu086_11350:
mov cx, 0
adc di, cx
adc bx, cx
adc dx, cx
adc bp, cx
js short emu086_11345
emu086_1135D:
xchg ax, di
cmp byte ptr [si+0Ah], 1
jnz short emu086_11376
not bp
not dx
not bx
neg ax
cmc
adc bx, 0
adc dx, 0
adc bp, 0
emu086_11376:
pop di
stosw
xchg ax, bx
stosw
xchg ax, dx
stosw
xchg ax, bp
stosw
sub di, 8
pop bp
retn
emu086_11291 endp
mov si, word ptr ds:__emu+0Dh
emu086_11387 proc near
push bp
push si
push di
xchg bp, si
mov cx, [bp+8]
cmp cx, 40h ; '@'
jge short emu086_113C5
or cx, cx
jge short emu086_113E2
cmp cx, 0C001h
jle short emu086_113B6
mov ch, 20h ; ' '
call emu086_12759
mov cl, 0Ch
and cl, ds:__emu+3
add cl, [bp+0Ah]
cmp cl, 5
jz short emu086_113BD
cmp cl, 8
jz short emu086_113BD
emu086_113B6:
sub bx, bx
mov si, 0C001h
jmp short emu086_113CE
emu086_113BD:
mov si, 1
mov bx, 8000h
jmp short emu086_113CE
emu086_113C5:
jz short emu086_113DF
mov ch, 20h ; ' '
call emu086_12759
jmp short emu086_113DF
emu086_113CE:
sub ax, ax
mov [bp+0], ax
mov [bp+2], ax
mov [bp+4], ax
mov [bp+6], bx
mov [bp+8], si
emu086_113DF:
jmp emu086_11492
emu086_113E2:
mov si, 38h ; '8'
and si, cx
xor cx, si
shr si, 1
shr si, 1
shr si, 1
neg si
add si, 7
cmp si, 7
jnz short emu086_113FF
mov ah, 0
mov al, [bp+si]
jmp short emu086_11401
emu086_113FF:
mov ax, [bp+si]
emu086_11401:
sub bx, bx
mov di, si
emu086_11405:
dec di
jl short emu086_1140E
or bl, [bp+di]
mov [bp+di], bh
jmp short emu086_11405
emu086_1140E:
mov dx, 0FFh
and cl, 7
shr dx, cl
mov di, dx
inc di
and dx, ax
jnz short emu086_11421
or bl, bl
jz short emu086_11492
emu086_11421:
mov ch, 20h ; ' '
call emu086_12759
xor ax, dx
mov cl, 0Ch
and cl, ds:__emu+3
cmp cl, 0Ch
jz short emu086_1144B
cmp cl, 0
jz short emu086_11456
add cl, [bp+0Ah]
cmp cl, 4
jz short emu086_1144B
cmp cl, 9
jz short emu086_1144B
or bl, dl
jnz short emu086_1146C
jmp short emu086_11492
emu086_1144B:
mov [bp+si], al
cmp byte ptr [bp+7], 0
jnz short emu086_11492
jmp emu086_113B6
emu086_11456:
or bl, bl
jnz short emu086_11466
test ax, di
jnz short emu086_11466
add dx, dx
cmp dx, di
jbe short emu086_1144B
jmp short emu086_1146C
emu086_11466:
add dx, dx
cmp dx, di
jb short emu086_1144B
emu086_1146C:
sub si, 7
jl short emu086_1147A
add ax, di
mov [bp+si+7], al
neg ah
jmp short emu086_11489
emu086_1147A:
add ax, di
mov [bp+si+7], ax
inc si
emu086_11480:
inc si
jg short emu086_11489
adc byte ptr [bp+si+7], 0
jb short emu086_11480
emu086_11489:
jnb short emu086_11492
stc
rcr word ptr [bp+6], 1
inc word ptr [bp+8]
emu086_11492:
pop di
pop si
pop bp
retn
emu086_11387 endp
emu086_11496 proc near
push bp
push si
push di
mov bp, word ptr ds:__emu+0Dh
mov ax, [bp+0]
mov bx, [bp+2]
mov cx, [bp+4]
mov dx, [bp+6]
sub di, di
mov si, [bp+8]
cmp si, 0C001h
jz short emu086_114D5
cmp si, 0FFF0h
jg short emu086_114C6
mov di, ax
mov ax, bx
mov bx, cx
mov cx, dx
sub dx, dx
add si, 10h
emu086_114C6:
inc si
jg short emu086_114D5
shr dx, 1
rcr cx, 1
rcr bx, 1
rcr ax, 1
rcr di, 1
jmp short emu086_114C6
emu086_114D5:
shl di, 1
mov di, 0
adc ax, di
adc bx, di
adc cx, di
adc dx, di
mov [bp+0], ax
mov [bp+2], bx
mov [bp+4], cx
mov [bp+6], dx
mov bx, di
mov cx, di
mov si, di
test byte ptr [bp+3], 80h
jz short emu086_11504
mov bx, [bp+0]
mov cx, [bp+2]
shl bx, 1
rcl cx, 1
emu086_11504:
mov ax, [bp+0]
mul word ptr [bp+4]
add bx, ax
adc cx, dx
adc si, di
add bx, ax
adc cx, dx
adc si, di
mov bx, cx
mov cx, si
sub si, si
mov ax, [bp+2]
mul word ptr [bp+4]
add bx, ax
adc cx, dx
adc si, di
add bx, ax
adc cx, dx
adc si, di
mov ax, [bp+0]
mul word ptr [bp+6]
add bx, ax
adc cx, dx
adc si, di
add bx, ax
adc cx, dx
adc si, di
shl bx, 1
adc cx, di
adc si, di
mov bx, cx
mov cx, si
sub si, si
mov ax, [bp+4]
mul ax
add bx, ax
adc cx, dx
adc si, di
mov ax, [bp+6]
mul word ptr [bp+2]
add bx, ax
adc cx, dx
adc si, di
add bx, ax
adc cx, dx
adc si, di
mov ax, [bp+6]
mul word ptr [bp+4]
add cx, ax
adc si, dx
adc di, di
add cx, ax
adc si, dx
adc di, 0
mov ax, [bp+6]
mul ax
add si, ax
adc di, dx
mov [bp+0], bx
mov [bp+2], cx
mov [bp+4], si
mov [bp+6], di
mov byte ptr [bp+0Ah], 0
mov word ptr [bp+8], 0
pop di
pop si
pop bp
retn
emu086_11496 endp
emu086_1159E proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_6 = byte ptr 0Ah
arg_12 = byte ptr 16h
push bp
mov bp, sp
push si
push di
push ds
push es
mov al, 0Ch
mul byte ptr [bp+arg_2]
sub ax, 0Ch
xchg ax, si
add si, [bp+arg_0]
call emu086_10ED7
mov di, si
emu086_115B6:
dec byte ptr [bp+arg_2]
jle short emu086_11633
push bp
mov bp, word ptr ds:__emu+0Dh
mov al, [bp+arg_12]
xor [bp+arg_6], al
call emu086_103A3
mov [bp+0], ax
mov [bp+2], bx
mov [bp+arg_0], cx
mov [bp+arg_2], dx
sub di, 0Ch
mov bx, cs:[di]
mov cx, cs:[di+2]
mov dx, cs:[di+4]
mov si, cs:[di+6]
mov al, cs:[di+0Ah]
cmp al, [bp+arg_6]
jz short emu086_11624
sub bx, [bp+0]
sbb cx, [bp+2]
sbb dx, [bp+arg_0]
sbb si, [bp+arg_2]
jnb short emu086_11612
not si
not dx
not cx
neg bx
cmc
adc cx, 0
adc dx, 0
adc si, 0
xor al, 1
emu086_11612:
mov [bp+0], bx
mov [bp+2], cx
mov [bp+arg_0], dx
mov [bp+arg_2], si
mov [bp+arg_6], al
pop bp
jmp short emu086_115B6
emu086_11624:
add [bp+0], bx
adc [bp+2], cx
adc [bp+arg_0], dx
adc [bp+arg_2], si
pop bp
jmp short emu086_115B6
emu086_11633:
mov si, word ptr ds:__emu+0Dh
cld
lodsw
xchg ax, bx
lodsw
xchg ax, cx
lodsw
xchg ax, dx
lodsw
xchg ax, di
lodsw
lodsb
inc si
mov word ptr ds:__emu+0Dh, si
xchg si, di
sub di, di
cmp al, 1
jnz short emu086_11660
not si
not dx
not cx
neg bx
cmc
adc cx, di
adc dx, di
adc si, di
jmp short emu086_11672
emu086_11660:
stc
rcr si, 1
rcr dx, 1
rcr cx, 1
rcr bx, 1
adc bx, di
adc cx, di
adc dx, di
adc si, di
inc di
emu086_11672:
mov ax, word ptr ds:__emu+0Dh
xchg ax, di
xchg ax, bx
stosw
xchg ax, cx
stosw
xchg ax, dx
stosw
xchg ax, si
stosw
xchg ax, bx
stosw
mov al, 0
stosb
pop es
pop ds
pop di
pop si
pop bp
retn 4
emu086_1159E endp
word_1168B dw 8
word_1168D dw 0
dw 0
dw 0
dw 0
dw 0
db 0
db ?
dw 0AAB6h
dw 0AAAAh
dw 0AAAAh
dw 2AAAh
dw 0
db 1
db ?
dw 2403h
dw 2222h
dw 2222h
dw 222h
dw 0
db 0
db ?
dw 0E4B3h
dw 0D00h
dw 0D0h
dw 0Dh
dw 0
db 1
db ?
dw 86Eh
dw 0C74Bh
dw 2E3Bh
dw 0
dw 0
db 0
db ?
dw 40C6h
dw 9916h
dw 6Bh
dw 0
dw 0
db 1
db ?
dw 450Ch
dw 0B092h
dw 0
dw 0
dw 0
db 0
db ?
dw 45D5h
dw 0D6h
dw 0
dw 0
dw 0
db 1
db ?
word_116ED dw 8
word_116EF dw 0
dw 0
dw 0
dw 0
dw 0
db 0
db ?
dw 0FF88h
dw 0FFFFh
dw 0FFFFh
dw 7FFFh
dw 0
db 1
db ?
dw 9AA6h
dw 0AAAAh
dw 0AAAAh
dw 0AAAh
dw 0
dw ?
dw 0E67Fh
dw 5B04h
dw 5B0h
dw 5Bh
dw 0
db 1
db ?
dw 26EFh
dw 19Bh
dw 0A01Ah
dw 1
dw 0
db 0
db ?
dw 0CE1Dh
dw 93DCh
dw 49Fh
dw 0
dw 0
db 1
db ?
dw 0B10Fh
dw 0F74Bh
dw 8
dw 0
dw 0
db 0
db ?
dw 0D803h
dw 0C7Bh
dw 0
dw 0
dw 0
db 1
db ?
emu086_1174F proc near
call emu086_10EBB
call emu086_11496
emu086_11755:
push cs:word_1168B
mov ax, offset word_1168D
push ax
call emu086_1159E
push word ptr ds:__emu+0Dh
push si
push si
call emu086_1030D
add word ptr ds:__emu+0Dh, 0Ch
retn
emu086_1174F endp
emu086_11770 proc near
call emu086_11496
emu086_11773:
push cs:word_116ED
mov ax, offset word_116EF
push ax
call emu086_1159E
retn
emu086_11770 endp
emu086_11780 proc near
call emu086_10EBB
call emu086_11496
call emu086_10F0A
call emu086_11755
call emu086_11773
retn
emu086_11780 endp
dw 0C235h
dw 2168h
dw 0DAA2h
dw 0C90Fh
dw 1
db 0
db ?
word_1179C dw 8
word_1179E dw 0
dw 0
dw 0
dw 0
dw 0
db 0
db ?
dw 5557h
dw 5555h
dw 5555h
dw 155h
dw 0
db 1
db ?
dw 32BEh
dw 3333h
dw 3333h
dw 3
dw 0
db 0
db ?
dw 1E7Dh
dw 9249h
dw 924h
dw 0
dw 0
db 1
db ?
dw 0FEBCh
dw 71C6h
dw 1Ch
dw 0
dw 0
db 0
db ?
dw 0FF5Ch
dw 5D16h
dw 0
dw 0
dw 0
db 1
db ?
dw 0BBD8h
dw 13Ah
dw 0
dw 0
dw 0
db 0
db ?
dw 0C0Ah
dw 4
dw 0
dw 0
dw 0
db 1
db ?
word_117FE dw 0
dw 0
dw 0
dw 0E700h
dw 0FFFDh
db 0
db ?
dw 0A4BDh
dw 7BD6h
dw 64EEh
dw 0B35Ch
dw 0FFFFh
db 0
db ?
dw 85B5h
dw 0FC47h
dw 3074h
dw 0A111h
dw 0
db 0
db ?
dw 0
dw 0
dw 0
dw 8000h
dw 1
db 0
db ?
word_1182E dw 0FA9Ch
dw 0B064h
dw 1DB2h
dw 0E607h
dw 0FFFEh
db 0
db ?
dw 0FA9Ch
dw 0B064h
dw 1DB2h
dw 0E607h
dw 0FFFFh
db 0
db ?
dw 0BBF5h
dw 44Bh
dw 5646h
dw 0AC85h
dw 0
db 0
db ?
word_11852 dw 6EE6h
dw 1FD9h
dw 9BDh
dw 0E9FAh
dw 0FFFEh
db 0
db ?
dw 7B8Dh
dw 0BD35h
dw 845Bh
dw 0F6DDh
dw 0FFFFh
db 0
db ?
dw 0D57Fh
dw 235h
dw 80DBh
dw 0CC73h
dw 0
db 0
db ?
emu086_11876 proc near
var_2 = word ptr -2
push bp
mov bp, sp
lea sp, [bp-2]
push si
push di
push si
push di
push si
call emu086_104DA
mov [bp+var_2], 0
mov di, offset word_117FE
emu086_1188C:
cmp [bp+var_2], 3
jnb short emu086_118B3
xchg si, di
call emu086_10ED7
xchg di, si
push si
push word ptr ds:__emu+0Dh
call emu086_10A29
add word ptr ds:__emu+0Dh, 0Ch
cmp ax, 0
jnz short emu086_118B3
inc [bp+var_2]
add di, 0Ch
jmp short emu086_1188C
emu086_118B3:
cmp [bp+var_2], 0
jnz short emu086_118BE
call emu086_11929
jmp short emu086_11923
emu086_118BE:
mov bx, [bp+var_2]
dec bx
mov bl, cs:byte_10052[bx]
mov [bp+var_2], bx
add bx, offset word_11852
mov di, bx
xchg si, di
call emu086_10ED7
xchg di, si
push si
mov di, word ptr ds:__emu+0Dh
push di
lea ax, [di-0Ch]
mov word ptr ds:__emu+0Dh, ax
push ax
call emu086_1013F
push si
push di
push si
call emu086_1030D
call emu086_10E11
push di
push si
push si
call emu086_10143
push word ptr ds:__emu+0Dh
push si
push si
call emu086_104DA
add word ptr ds:__emu+0Dh, 18h
call emu086_11929
mov di, [bp+var_2]
add di, offset word_1182E
xchg si, di
call emu086_10ED7
xchg di, si
push word ptr ds:__emu+0Dh
push si
push si
call emu086_10143
add word ptr ds:__emu+0Dh, 0Ch
emu086_11923:
pop di
pop si
mov sp, bp
pop bp
retn
emu086_11876 endp ; sp-analysis failed
emu086_11929 proc near
push si
push di
call emu086_10EBB
cmp word ptr [si+8], 0FFE0h
jg short emu086_1193B
mov di, si
call emu086_10EF4
jmp short emu086_1195D
emu086_1193B:
mov di, word ptr ds:__emu+0Dh
add word ptr [di+8], 3
call emu086_11496
push cs:word_1179C
mov ax, offset word_1179E
push ax
call emu086_1159E
push di
push si
push si
call emu086_1030D
add word ptr ds:__emu+0Dh, 0Ch
emu086_1195D:
pop di
pop si
retn
emu086_11929 endp
word_11960 dw 0Dh
word_11962 dw 0
dw 0
dw 0
dw 0
dw 0
db 0
db ?
dw 3
dw 0
dw 0
dw 4000h
dw 0
db 0
db ?
dw 0AAA9h
dw 0AAAAh
dw 0AAAAh
dw 0AAAh
dw 0
db 0
db ?
dw 5578h
dw 5555h
dw 5555h
dw 155h
dw 0
db 0
db ?
dw 2326h
dw 2222h
dw 2222h
dw 22h
dw 0
db 0
db ?
dw 2B1Ch
dw 82D8h
dw 0D82Dh
dw 2
dw 0
db 0
db ?
dw 0F9FCh
dw 4033h
dw 3403h
dw 0
dw 0
db 0
db ?
dw 5214h
dw 3403h
dw 340h
dw 0
dw 0
db 0
db ?
dw 6C1Eh
dw 3BC7h
dw 2Eh
dw 0
dw 0
db 0
db ?
dw 0B04Ch
dw 4FC9h
dw 2
dw 0
dw 0
db 0
db ?
dw 0E91h
dw 1AE6h
dw 0
dw 0
dw 0
db 0
db ?
dw 7651h
dw 11Fh
dw 0
dw 0
dw 0
db 0
db ?
dw 2CC5h
dw 0Bh
dw 0
dw 0
dw 0
db 0
db ?
emu086_119FE proc near
push bp
push si
push di
mov bp, word ptr ds:__emu+0Dh
lea di, [bp-0Ch]
mov word ptr ds:__emu+0Dh, di
call emu086_10E66
push di
push si
push si
call emu086_1030D
mov word ptr ds:__emu+0Dh, bp
mov di, [si+8]
cmp di, 0FFC0h
jle short emu086_11A78
mov ax, [si]
mov bx, [si+2]
mov cx, [si+4]
mov dx, [si+6]
inc di
jge short emu086_11A46
emu086_11A2F:
shr dx, 1
rcr cx, 1
rcr bx, 1
rcr ax, 1
inc di
jl short emu086_11A2F
adc ax, 0
adc bx, 0
adc cx, 0
adc dx, 0
emu086_11A46:
sub word ptr ds:__emu+0Dh, 0Ch
cld
mov di, word ptr ds:__emu+0Dh
stosw
xchg ax, bx
stosw
xchg ax, cx
stosw
xchg ax, dx
stosw
sub ax, ax
stosw
stosb
sub di, 0Bh
push cs:word_11960
mov ax, offset word_11962
push ax
call emu086_1159E
mov ax, word ptr ds:__emu+0Dh
push ax
push si
push si
call emu086_1030D
add word ptr ds:__emu+0Dh, 0Ch
emu086_11A78:
pop di
pop si
pop bp
retn
emu086_119FE endp
word_11A7C dw 0F0BBh
dw 5C17h
dw 3B29h
dw 0B8AAh
dw 1
db 0
db ?
word_11A88 dw 9
word_11A8A dw 0
dw 0
dw 0
dw 0
dw 0
db 0
db ?
dw 5568h
dw 5555h
dw 5555h
dw 555h
dw 0
db 0
db ?
dw 34BAh
dw 3333h
dw 3333h
dw 33h
dw 0
db 0
db ?
dw 0C3A7h
dw 9248h
dw 4924h
dw 2
dw 0
db 0
db ?
dw 5D4Dh
dw 0C722h
dw 1C71h
dw 0
dw 0
db 0
db ?
dw 5624h
dw 5CEBh
dw 174h
dw 0
dw 0
db 0
db ?
dw 0AD39h
dw 0B1ECh
dw 13h
dw 0
dw 0
db 0
db ?
dw 0D6FDh
dw 0F80h
dw 1
dw 0
dw 0
db 0
db ?
dw 7AB5h
dw 10E4h
dw 0
dw 0
dw 0
db 0
db ?
emu086_11AF6 proc near
var_4 = word ptr -4
var_2 = word ptr -2
push bp
mov bp, sp
push word ptr [di+8]
push si
push di
mov ax, [di]
mov bx, [di+2]
mov cx, [di+4]
mov dx, [di+6]
cmp dx, 0B505h
ja short emu086_11B1F
shl ax, 1
rcl bx, 1
rcl cx, 1
rcl dx, 1
mov si, 0
dec [bp+var_2]
jmp short emu086_11B34
emu086_11B1F:
not dx
not cx
not bx
neg ax
cmc
adc bx, 0
adc cx, 0
adc dx, 0
mov si, 1
emu086_11B34:
sub di, di
emu086_11B36:
or dx, dx
jnz short emu086_11B53
xchg ax, bx
xchg ax, cx
xchg ax, dx
sub di, 10h
cmp di, 0FFC0h
jg short emu086_11B36
sub word ptr ds:__emu+0Dh, 0Ch
mov di, word ptr ds:__emu+0Dh
call emu086_10E77
jmp short emu086_11B80
emu086_11B53:
js short emu086_11B60
emu086_11B55:
dec di
shl ax, 1
rcl bx, 1
rcl cx, 1
adc dx, dx
jns short emu086_11B55
emu086_11B60:
push si
push di
push dx
push cx
push bx
push ax
mov si, sp
call emu086_11BE6
mov si, offset word_11A7C
call emu086_10ED7
mov si, word ptr ds:__emu+0Dh
mov ax, sp
push si
push ax
push si
call emu086_1030D
add sp, 0Ch
emu086_11B80:
lea si, [bp+var_2]
sub word ptr ds:__emu+0Dh, 0Ch
mov di, word ptr ds:__emu+0Dh
call emu086_10F48
lea si, [di+0Ch]
push si
push di
push di
call emu086_10143
push di
push [bp+var_4]
push [bp+var_4]
call emu086_1030D
add word ptr ds:__emu+0Dh, 18h
pop di
pop si
mov sp, bp
pop bp
retn
emu086_11AF6 endp
emu086_11BAD proc near
var_2 = word ptr -2
push bp
mov bp, sp
push si
push di
mov si, di
call emu086_10EBB
mov si, word ptr ds:__emu+0Dh
call emu086_11BE6
mov si, offset word_11A7C
call emu086_10ED7
mov si, word ptr ds:__emu+0Dh
push si
lea si, [si+0Ch]
push si
push si
call emu086_1030D
push si
push [bp+var_2]
push [bp+var_2]
call emu086_1030D
add word ptr ds:__emu+0Dh, 18h
pop di
pop si
mov sp, bp
pop bp
retn
emu086_11BAD endp
emu086_11BE6 proc near
push bp
mov bp, sp
push si
push di
cmp word ptr [si+8], 0FFC0h
jle short emu086_11C37
sub word ptr ds:__emu+0Dh, 0Ch
mov di, word ptr ds:__emu+0Dh
call emu086_10E11
inc word ptr [di+8]
push si
push di
push di
call emu086_10143
push si
push di
push di
call emu086_104DA
call emu086_10F0A
mov bx, word ptr ds:__emu+0Dh
add word ptr [bx+8], 2
call emu086_11496
push cs:word_11A88
mov ax, offset word_11A8A
push ax
call emu086_1159E
push word ptr ds:__emu+0Dh
push di
push si
call emu086_1030D
inc word ptr [si+8]
add word ptr ds:__emu+0Dh, 18h
emu086_11C37:
pop di
pop si
mov sp, bp
pop bp
retn
emu086_11BE6 endp
emu086_11C3D proc near
mov cl, 0
jmp short emu086_11C47
emu086_11C41:
mov cl, 2
jmp short emu086_11C47
emu086_11C45:
mov cl, 4
emu086_11C47:
mov es, di
mov bp, sp
mov di, word ptr ds:__emu+0Dh
mov ch, [di+0Ah]
push cx
push ax
cmp word ptr [di+8], 0FFE0h
jg short emu086_11C65
cmp cl, 2
jnz short emu086_11C62
call emu086_10E11
emu086_11C62:
jmp emu086_11D1F
emu086_11C65:
cmp word ptr [di+8], 40h ; '@'
jle short emu086_11C76
call emu086_10EA3
mov word ptr [di+6], 21h ; '!'
jmp emu086_11D1F
emu086_11C76:
mov byte ptr [di+0Ah], 0
lea si, [di-0Ch]
mov word ptr ds:__emu+0Dh, si
xchg di, si
call emu086_10E44
xchg di, si
sub word ptr [si+8], 2
call emu086_10921
and al, 7
mov [bp-4], al
mov bl, [bp-2]
cmp bl, 4
jz short emu086_11CD7
add bl, [bp-4]
and bl, 7
mov [bp-4], bl
shr bx, 1
jnb short emu086_11CBA
xchg di, si
call emu086_10E44
xchg di, si
sub word ptr [si+8], 2
push si
push di
push di
call emu086_1013F
emu086_11CBA:
mov word ptr ds:__emu+0Dh, di
mov si, di
test byte ptr [bp-4], 3
jp short emu086_11CCB
call emu086_11770
jmp short emu086_11CCE
emu086_11CCB:
call emu086_1174F
emu086_11CCE:
mov bl, [bp-4]
shr bl, 1
shr bl, 1
jmp short emu086_11D13
emu086_11CD7:
test byte ptr [bp-4], 1
jz short emu086_11CEE
xchg si, di
call emu086_10E44
xchg si, di
sub word ptr [si+8], 2
push si
push di
push di
call emu086_1013F
emu086_11CEE:
mov word ptr ds:__emu+0Dh, di
mov si, di
call emu086_11780
lea di, [si-0Ch]
mov ax, si
test byte ptr [bp-4], 3
jp short emu086_11D04
xchg si, di
emu086_11D04:
xchg ax, di
push si
push ax
push di
call emu086_104DA
mov bl, [bp-4]
shr bl, 1
and bl, 1
emu086_11D13:
cmp byte ptr [bp-2], 2
jz short emu086_11D1C
xor bl, [bp-1]
emu086_11D1C:
mov [di+0Ah], bl
emu086_11D1F:
mov word ptr ds:__emu+0Dh, di
mov sp, bp
retn
emu086_11C3D endp
emu086_11D26 proc near
mov es, di
mov si, word ptr ds:__emu+0Dh
lea di, [si-0Ch]
mov word ptr ds:__emu+0Dh, di
call emu086_10E11
mov ax, [si+8]
cmp ax, 4001h
jge short emu086_11D76
cmp ax, 0C001h
jle short emu086_11D71
mov cl, 0
mov bx, si
dec ax
jl short emu086_11D51
call emu086_10F27
mov bx, di
mov cl, 1
emu086_11D51:
mov ch, 0
xchg ch, [bx+0Ah]
push cx
call emu086_11876
pop cx
cmp cl, 1
jnz short emu086_11D6E
push cx
call emu086_10E44
dec word ptr [di+8]
push di
push si
push si
call emu086_1013F
pop cx
emu086_11D6E:
mov [si+0Ah], ch
emu086_11D71:
mov word ptr ds:__emu+0Dh, si
retn
emu086_11D76:
mov di, si
push word ptr [si+0Ah]
call emu086_10E44
pop ax
mov [si+0Ah], al
dec word ptr [si+8]
jmp short emu086_11D71
emu086_11D26 endp
emu086_11D87 proc near
mov es, di
mov si, word ptr ds:__emu+0Dh
lea di, [si-0Ch]
mov word ptr ds:__emu+0Dh, di
call emu086_10E66
jmp short emu086_11DBB
emu086_11D99:
mov es, di
mov si, word ptr ds:__emu+0Dh
lea di, [si-0Ch]
mov word ptr ds:__emu+0Dh, di
call emu086_10E11
jmp short emu086_11DBB
emu086_11DAB:
mov es, di
mov si, word ptr ds:__emu+0Dh
lea di, [si-0Ch]
mov word ptr ds:__emu+0Dh, di
call emu086_10E55
emu086_11DBB:
call emu086_10F27
cmp byte ptr [di+0Ah], 0
jnz short emu086_11DDD
mov ax, [di+8]
cmp ax, 0C001h
jle short emu086_11DD9
cmp ax, 4001h
jge short emu086_11DDD
call emu086_11AF6
emu086_11DD4:
mov word ptr ds:__emu+0Dh, si
retn
emu086_11DD9:
mov ch, 4
jmp short emu086_11DDF
emu086_11DDD:
mov ch, 1
emu086_11DDF:
call emu086_12759
mov ax, 4001h
mov di, si
mov cl, 0
call emu086_10E8D
cmp ch, 1
jnz short emu086_11DD4
mov word ptr [di+6], 0C000h
jmp short emu086_11DD4
emu086_11D87 endp
emu086_11DF8 proc near
mov ax, offset emu086_10E33
jmp short emu086_11E0B
emu086_11DFD:
mov es, di
mov si, word ptr ds:__emu+0Dh
lea di, [si-0Ch]
jmp short emu086_11E24
emu086_11E08:
mov ax, offset emu086_10E22
emu086_11E0B:
mov es, di
mov si, word ptr ds:__emu+0Dh
lea di, [si-0Ch]
mov word ptr ds:__emu+0Dh, di
call ax ; emu086_10E33
push si
push di
push si
call emu086_1030D
mov word ptr ds:__emu+0Dh, si
emu086_11E24:
mov bp, sp
mov ax, 0
push ax
mov ax, [si+8]
cmp ax, 0Ch
jg short emu086_11E80
cmp ax, 0FFC0h
jle short emu086_11EAC
call emu086_10F0A
inc word ptr [di+8]
push word ptr ds:__emu+2
and ds:__emu+3, 0F3h
or ds:__emu+3, 4
mov si, di
call emu086_11387
pop word ptr ds:__emu+2
push ax
mov di, sp
call emu086_10F8B
dec word ptr [si+8]
lea di, [si+0Ch]
push di
push si
push di
call emu086_1013F
pop ax
sar ax, 1
jnb short emu086_11EC8
mov word ptr [si], 6485h
mov word ptr [si+2], 0F9DEh
mov word ptr [si+4], 0F333h
mov word ptr [si+6], 0B504h
jmp short emu086_11EDB
emu086_11E80:
cmp ax, 4001h
jnz short emu086_11E95
mov ax, 7FFFh
and ax, [si+6]
or ax, [si+4]
or ax, [si+2]
or ax, [si]
jnz short emu086_11EB3
emu086_11E95:
cmp byte ptr [si+0Ah], 0
jnz short emu086_11EC1
mov di, si
mov ch, 8
call emu086_12759
mov ax, 4001h
mov cl, 0
call emu086_10E8D
jmp short emu086_11F01
emu086_11EAC:
mov di, si
call emu086_10E11
jmp short emu086_11F01
emu086_11EB3:
mov word ptr [si+6], 0C000h
mov di, si
mov ch, 1
call emu086_12759
jmp short emu086_11F01
emu086_11EC1:
mov di, si
call emu086_10E77
jmp short emu086_11F01
emu086_11EC8:
mov word ptr [si], 0
emu086_11ECC:
mov word ptr [si+2], 0
mov word ptr [si+4], 0
mov word ptr [si+6], 8000h
emu086_11EDB:
inc ax
mov [si+8], ax
mov byte ptr [si+0Ah], 0
mov di, si
lea si, [di+0Ch]
call emu086_119FE
push si
push di
push si
call emu086_1030D
push si
push di
push si
call emu086_10143
cmp byte ptr [bp-2], 1
jnz short emu086_11F01
xor byte ptr [si+0Ah], 1
emu086_11F01:
mov word ptr ds:__emu+0Dh, si
mov sp, bp
retn
emu086_11DF8 endp
emu086_11F08 proc near
push bx
push cx
push dx
mov cl, 4
mov ch, 0Ah
mov bx, es:[si]
mov al, bh
shr al, cl
mul ch
mov dl, 0Fh
and dl, bh
add al, dl
mul ch
mov dx, 0F0h ; '<27>'
and dl, bl
shr dx, cl
add ax, dx
mov cx, 0Ah
mul cx
and bx, 0Fh
add ax, bx
pop dx
pop cx
pop bx
retn
emu086_11F08 endp
emu086_11F37 proc near
var_4 = word ptr -4
var_2 = word ptr -2
push bp
mov bp, sp
push si
push di
mov al, es:[si+9]
and ax, 80h
rol al, 1
mov [di+0Ah], al
mov cl, 4
mov al, es:[si+8]
shl ax, cl
shr al, cl
aad
mov di, 2710h
mul di
xchg ax, bx
lea si, [si+6]
call emu086_11F08
add ax, bx
adc dl, dh
mov bx, dx
mul di
xchg ax, bx
mov cx, dx
mul di
add cx, ax
adc dl, dh
sub si, 2
call emu086_11F08
add ax, bx
adc cx, 0
adc dl, dh
push si
mov bx, dx
mul di
xchg ax, cx
mov si, dx
mul di
xchg ax, bx
xchg di, dx
mul dx
add bx, si
adc di, ax
pop si
sub si, 2
call emu086_11F08
add ax, cx
adc bx, dx
adc di, dx
mov si, 2710h
mul si
xchg ax, bx
mov cx, dx
mul si
xchg ax, si
xchg di, dx
mul dx
add cx, si
adc di, ax
adc dx, 0
mov si, [bp+var_2]
call emu086_11F08
add bx, ax
adc cx, 0
adc di, 0
adc dx, 0
mov ax, 40h ; '@'
emu086_11FC8:
or dx, dx
jnz short emu086_11FD9
sub ax, 10h
jz short emu086_11FFD
xchg dx, di
xchg di, cx
xchg cx, bx
jmp short emu086_11FC8
emu086_11FD9:
js short emu086_11FE6
emu086_11FDB:
dec ax
shl bx, 1
rcl cx, 1
rcl di, 1
adc dx, dx
jns short emu086_11FDB
emu086_11FE6:
mov si, [bp+var_4]
mov [si], bx
mov [si+2], cx
mov [si+4], di
mov [si+6], dx
mov [si+8], ax
pop di
pop si
mov sp, bp
pop bp
retn
emu086_11FFD:
mov ax, 0C001h
jmp short emu086_11FE6
emu086_11F37 endp
emu086_12002 proc near
push ax
push cx
mov al, 64h ; 'd'
mov cl, 4
xchg ax, dx
div dl
mov dl, ah
aam
shl ah, cl
or ah, al
xchg ax, dx
aam
shl ah, cl
or al, ah
mov ah, dh
stosw
pop cx
pop ax
retn
emu086_12002 endp
emu086_12020 proc near
var_2 = word ptr -2
push bp
mov bp, sp
push si
push di
cld
mov ax, [si+8]
mov bx, [si]
mov cx, [si+2]
mov dx, [si+6]
mov si, [si+4]
cmp ax, 0
jl short emu086_12071
sub ax, 3Ch ; '<'
jl short emu086_1205D
jg short emu086_12073
cmp dx, 0DE0Bh
jb short emu086_1205D
ja short emu086_12073
cmp si, 6B3Ah
jb short emu086_1205D
ja short emu086_12073
cmp cx, 763Fh
jb short emu086_1205D
ja short emu086_12073
cmp bx, 0FFF0h
ja short emu086_12073
emu086_1205D:
mov ah, 0
sub al, 4
emu086_12061:
add al, 10h
jg short emu086_12075
mov ah, bh
mov bx, cx
mov cx, si
mov si, dx
sub dx, dx
jmp short emu086_12061
emu086_12071:
jmp short emu086_120DA
emu086_12073:
jmp short emu086_120E3
emu086_12075:
sub al, 10h
jge short emu086_12087
emu086_12079:
shr dx, 1
rcr si, 1
rcr cx, 1
rcr bx, 1
rcr ah, 1
inc al
jl short emu086_12079
emu086_12087:
add ah, ah
adc bx, 0
adc cx, 0
adc si, 0
adc dx, 0
xchg ax, si
mov si, 2710h
div si
xchg ax, cx
div si
xchg ax, bx
div si
call emu086_12002
sub dx, dx
xchg ax, cx
div si
xchg ax, bx
div si
xchg ax, cx
div si
call emu086_12002
mov dx, bx
xchg ax, cx
div si
xchg ax, cx
div si
call emu086_12002
mov dx, cx
div si
call emu086_12002
aam
mov cl, 4
shl ah, cl
or al, ah
stosb
emu086_120CD:
mov si, [bp+var_2]
mov al, [si+0Ah]
ror al, 1
stosb
pop di
pop si
pop bp
retn
emu086_120DA:
mov al, 0
emu086_120DC:
mov cx, 9
rep stosb
jmp short emu086_120CD
emu086_120E3:
mov ch, 8
call emu086_12759
mov al, 99h ; '<27>'
jmp short emu086_120DC
emu086_12020 endp
emu086_120EC dw offset emu086_121EE
dw offset emu086_121F8
dw offset emu086_12202
dw offset emu086_1220C
dw offset emu086_12216
dw offset emu086_1221D
dw offset emu086_1223B
dw offset emu086_12224
emu086_120FC dw offset emu086_125CC
dw offset e287_FPU_Control
dw offset emu086_126B1
dw offset emu086_126B3
emu086_12104 dw offset emu086_10BD9
dw offset emu086_110DA
dw offset emu086_10CDD
dw offset emu086_10F48
emu086_1210C dw offset emu086_122CC
dw offset emu086_122D3
dw offset emu086_122DD
dw offset emu086_122DA
dw offset emu086_122E4
dw offset emu086_122E3
dw offset emu086_122EC
dw offset emu086_122EB
emu086_1211C dw offset emu086_10BD9
dw offset emu086_110DA
dw offset emu086_10CDD
dw offset emu086_10F48
emu086_12124 dw offset emu086_10B5F
dw offset emu086_11132
dw offset emu086_10C36
dw offset emu086_10F8B
emu086_1212C dw offset emu086_12364
dw offset emu086_1235E
dw offset emu086_123C5
dw offset emu086_12433
dw offset emu086_1236D
dw offset emu086_12443
dw offset emu086_1235E
dw offset emu086_12423
emu086_1213C dw offset emu086_12378
dw offset emu086_1235E
dw offset emu086_123A1
dw offset emu086_12460
dw offset emu086_123F7
dw offset emu086_1246D
dw offset emu086_123FC
dw offset emu086_12453
; START OF FUNCTION CHUNK FOR e086_Entry
emu086_1214C:
mov ch, 1
call emu086_12759
jmp emu086_126E1
emu086_12154:
ja short emu086_1217A
test ah, 20h
jnz short emu086_1214C
mov al, ah
inc dx
mov di, ds
and al, 0C0h
jz short emu086_12172
cmp al, 80h ; '<27>'
mov di, ss
jb short emu086_12172
mov di, [bp+0]
ja short emu086_12172
mov di, [bp+14h]
emu086_12172:
lods byte ptr es:[si]
xchg ah, al
and al, 7
jmp short emu086_121B7
emu086_1217A:
cmp al, 9
jnz short emu086_12192
mov ax, es
xor ax, word ptr ss:__emu+7
mov es, ax
push es
pop es
mov word ptr es:[si-3], 0E489h
jmp emu086_126E1
emu086_12192:
jmp EmuVectorException
; END OF FUNCTION CHUNK FOR e086_Entry
dw offset __emu+35h
public e086_Entry
e086_Entry proc far
; FUNCTION CHUNK AT 20FC SIZE 00000049 BYTES
; FUNCTION CHUNK AT 22A3 SIZE 0000006B BYTES
; FUNCTION CHUNK AT 244A SIZE 000000AB BYTES
; FUNCTION CHUNK AT 257C SIZE 00000075 BYTES
sti
cld
push ax
push cx
push dx
push bx
push ds
push bp
push si
push di
push es
mov bp, sp
mov word ptr ss:__emu+33h, bp
public rs1
rs1:
les si, [bp+12h]
mov dl, 0
dec si
lods word ptr es:[si]
sub al, 34h ; '4'
cmp al, 8
jnb short emu086_12154
emu086_121B7:
mov bx, 0C007h
and bl, ah
and bh, ah
xchg ax, cx
cmp bh, 0C0h ; '<27>'
jnb short emu086_1222B
cmp bh, 40h ; '@'
ja short emu086_121DB
jz short emu086_121DF
sub ax, ax
cmp bl, 6
jnz short emu086_121E2
lods word ptr es:[si]
mov [bp+12h], si
mov si, ds
jmp short emu086_12240
emu086_121DB:
lods word ptr es:[si]
jmp short emu086_121E2
emu086_121DF:
lods byte ptr es:[si]
cbw
emu086_121E2:
mov [bp+12h], si
mov bh, 0
shl bx, 1
jmp cs:emu086_120EC[bx]
emu086_121EE:
add ax, [bp+0Ah]
add ax, [bp+4]
mov si, ds
jmp short emu086_12240
emu086_121F8:
add ax, [bp+0Ah]
add ax, [bp+2]
mov si, ds
jmp short emu086_12240
emu086_12202:
add ax, [bp+6]
add ax, [bp+4]
mov si, ss
jmp short emu086_12240
emu086_1220C:
add ax, [bp+6]
add ax, [bp+2]
mov si, ss
jmp short emu086_12240
emu086_12216:
add ax, [bp+4]
mov si, ds
jmp short emu086_12240
emu086_1221D:
add ax, [bp+2]
mov si, ds
jmp short emu086_12240
emu086_12224:
add ax, [bp+0Ah]
mov si, ds
jmp short emu086_12240
emu086_1222B:
mov [bp+12h], si
mov ax, ss
mov ds, ax
mov es, ax
test cl, 1
jz short emu086_1226C
jmp short emu086_12252
emu086_1223B:
add ax, [bp+6]
mov si, ss
emu086_12240:
xchg ax, si
cmp dl, 1
jnz short emu086_12247
xchg ax, di
emu086_12247:
mov es, ax
mov ax, ss
mov ds, ax
test cl, 1
jz short emu086_1226C
emu086_12252:
cmp ch, 0C0h ; '<27>'
jnb short emu086_1225A
jmp emu086_122F3
emu086_1225A:
test ch, 20h
jnz short emu086_12262
jmp emu086_1249A
emu086_12262:
mov bx, 6
and bl, cl
jmp cs:emu086_120FC[bx]
emu086_1226C:
mov ax, 38h ; '8'
and al, ch
shr ax, 1
shr ax, 1
xchg ax, bp
cmp ch, 0C0h ; '<27>'
jnb short emu086_122A5
mov di, word ptr ds:__emu+0Dh
sub di, 0Ch
mov word ptr ds:__emu+0Dh, di
mov bx, 6
and bl, cl
call cs:emu086_12104[bx]
mov cx, ss
mov es, cx
mov si, 0Ch
mov bx, di
lea ax, [bx+si]
mov dx, ax
mov cx, offset emu086_126DC
jmp cs:emu086_1210C[bp]
emu086_122A5:
mov bh, 0
mov bl, cs:byte_10052[bx]
mov ax, word ptr ds:__emu+0Dh
add bx, ax
test cl, 4
mov dx, ax
jz short emu086_122BA
mov dx, bx
emu086_122BA:
sub si, si
test cl, 2
jz short emu086_122C4
mov si, 0Ch
emu086_122C4:
mov cx, offset emu086_126DC
jmp cs:emu086_1210C[bp]
e086_Entry endp ; sp-analysis failed
emu086_122CC proc near
push ax
push bx
push dx
push cx
jmp emu086_10143
emu086_122CC endp
emu086_122D3 proc near
push ax
push bx
push dx
push cx
jmp emu086_1030D
emu086_122D3 endp
emu086_122DA proc near
add si, 0Ch
emu086_122DD:
push ax
push bx
push cx
jmp emu086_10A29
emu086_122DA endp
emu086_122E3 proc near
xchg ax, bx
emu086_122E4:
push ax
push bx
push dx
push cx
jmp emu086_1013F
emu086_122E3 endp
emu086_122EB proc near
xchg ax, bx
emu086_122EC:
push ax
push bx
push dx
push cx
jmp emu086_104DA
emu086_122EB endp
; START OF FUNCTION CHUNK FOR e086_Entry
emu086_122F3:
mov bp, 6
and bp, cx
test ch, 20h
jnz short emu086_1233F
test ch, 10h
jnz short emu086_1231C
test ch, 8
jnz short emu086_1235B
mov di, word ptr ds:__emu+0Dh
mov ax, 0FFF4h
add di, ax
mov word ptr ds:__emu+4, ax
mov ax, offset emu086_126D7
push ax
jmp cs:emu086_1211C[bp]
emu086_1231C:
mov di, word ptr ds:__emu+0Dh
xchg si, di
test ch, 8
jnz short emu086_12330
mov ax, offset emu086_126E1
push ax
jmp cs:emu086_12124[bp]
emu086_12330:
mov word ptr ds:__emu+4, 0Ch
mov ax, offset emu086_126D7
push ax
jmp cs:emu086_12124[bp]
emu086_1233F:
mov ax, 8
and al, ch
or bp, ax
mov ax, offset emu086_126E1
push ax
test ch, 10h
jnz short emu086_12354
jmp cs:emu086_1212C[bp]
emu086_12354:
xchg si, di
jmp cs:emu086_1213C[bp]
emu086_1235B:
jmp emu086_126E1
; END OF FUNCTION CHUNK FOR e086_Entry
emu086_1235E proc near
mov ch, 1
call emu086_12759
retn
emu086_1235E endp
emu086_12364 proc near
mov cl, 4
mov ax, es:[si+2]
mov word ptr ds:__emu, ax
emu086_1236D:
mov ax, es:[si]
mov word ptr ds:__emu+2, ax
mov ch, 0
jmp emu086_12759
emu086_12364 endp
emu086_12378 proc near
call emu086_123F7
call emu086_123FC
mov ax, word ptr ds:__emu+11h
sub ax, word ptr ds:__emu+0Dh
mov cx, 60h ; '`'
cmp ax, cx
jb short emu086_1238D
xchg ax, cx
emu086_1238D:
mov dl, 0Ch
div dl
xchg ax, cx
add cx, cx
mov ax, 0FFFFh
shr ax, cl
stosw
sub ax, ax
stosw
stosw
stosw
stosw
retn
emu086_12378 endp
emu086_123A1 proc near
call emu086_12378
mov si, word ptr ds:__emu+0Dh
mov bp, es:[di-0Ah]
neg bp
dec bp
emu086_123AF:
jz short emu086_123C0
call emu086_10D9B
add si, 0Ch
add di, 0Ah
shl bp, 1
shl bp, 1
jmp short emu086_123AF
emu086_123C0:
mov word ptr ds:__emu+0Dh, si
retn
emu086_123A1 endp
emu086_123C5 proc near
mov di, word ptr ds:__emu+0Dh
mov bp, es:[si+4]
neg bp
dec bp
jz short emu086_12364
add si, 5Eh ; '^'
emu086_123D5:
sub si, 0Ah
shr bp, 1
shr bp, 1
jnb short emu086_123D5
emu086_123DE:
sub di, 0Ch
call emu086_10DC8
sub si, 0Ah
shr bp, 1
shr bp, 1
jb short emu086_123DE
add si, 0FFFCh
mov word ptr ds:__emu+0Dh, di
jmp emu086_12364
emu086_123C5 endp
emu086_123F7 proc near
mov ax, word ptr ds:__emu+2
stosw
retn
emu086_123F7 endp
emu086_123FC proc near
mov ax, word ptr ds:__emu+11h
sub ax, word ptr ds:__emu+0Dh
mov cx, 60h ; '`'
cmp ax, cx
jb short emu086_1240B
xchg ax, cx
emu086_1240B:
neg ax
mov cl, 0Ch
idiv cl
and al, 7
mov cl, 3
shl al, cl
mov cx, word ptr ds:__emu
and ch, 0C7h
or ch, al
xchg ax, cx
stosw
retn
emu086_123FC endp
emu086_12423 proc near
mov di, word ptr ds:__emu+0Dh
sub di, 0Ch
call emu086_1121E
sub word ptr ds:__emu+0Dh, 0Ch
retn
emu086_12423 endp
emu086_12433 proc near
mov di, word ptr ds:__emu+0Dh
sub di, 0Ch
call emu086_11F37
sub word ptr ds:__emu+0Dh, 0Ch
retn
emu086_12433 endp
emu086_12443 proc near
mov di, word ptr ds:__emu+0Dh
sub di, 0Ch
call emu086_10DC8
sub word ptr ds:__emu+0Dh, 0Ch
retn
emu086_12443 endp
emu086_12453 proc near
mov si, word ptr ds:__emu+0Dh
call emu086_11291
add word ptr ds:__emu+0Dh, 0Ch
retn
emu086_12453 endp
emu086_12460 proc near
mov si, word ptr ds:__emu+0Dh
call emu086_12020
add word ptr ds:__emu+0Dh, 0Ch
retn
emu086_12460 endp
emu086_1246D proc near
mov si, word ptr ds:__emu+0Dh
call emu086_10D9B
add word ptr ds:__emu+0Dh, 0Ch
retn
emu086_1246D endp
emu086_1247A dw offset emu086_124B9
dw offset emu086_12513
dw offset emu086_124CC
dw offset emu086_124C7
dw offset emu086_1251A
dw offset emu086_12513
dw offset emu086_1251A
dw offset emu086_1251A
dw offset emu086_1250E
dw offset emu086_12513
dw offset emu086_1252B
dw offset emu086_12536
dw offset emu086_12536
dw offset emu086_12513
dw offset emu086_12536
dw offset emu086_12536
; START OF FUNCTION CHUNK FOR e086_Entry
emu086_1249A:
mov bh, 0
mov bl, cs:byte_10052[bx]
mov si, word ptr ds:__emu+0Dh
add si, bx
mov bl, 18h
and bl, ch
and cl, 6
or bl, cl
cld
mov cx, 6
jmp cs:emu086_1247A[bx]
emu086_124B9:
sub word ptr ds:__emu+0Dh, 0Ch
mov di, word ptr ds:__emu+0Dh
rep movsw
jmp emu086_126E1
emu086_124C7:
mov di, 0Ch
jmp short emu086_124CF
emu086_124CC:
mov di, 0
emu086_124CF:
mov ax, word ptr ds:__emu+11h
sub ax, 0Ch
cmp si, ax
jz short emu086_124E9
xchg di, si
mov ax, 4001h
mov cl, 0
call emu086_10E8D
add word ptr ds:__emu+0Dh, si
jmp short emu086_12542
emu086_124E9:
add di, 0Ch
mov dx, di
mov cx, si
sub cx, word ptr ds:__emu+0Dh
jz short emu086_12508
push ss
pop es
sub si, 2
mov di, word ptr ds:__emu+11h
sub di, 2
std
shr cx, 1
rep movsw
cld
emu086_12508:
add word ptr ds:__emu+0Dh, dx
jmp short emu086_12542
emu086_1250E:
test ch, 7
jz short emu086_12542
emu086_12513:
mov ch, 1
call emu086_12759
jmp short emu086_12542
emu086_1251A:
mov di, word ptr ds:__emu+0Dh
emu086_1251E:
mov ax, [di]
xchg ax, [si]
stosw
add si, 2
loop emu086_1251E
jmp emu086_126E1
emu086_1252B:
mov di, si
mov si, word ptr ds:__emu+0Dh
rep movsw
jmp emu086_126E1
emu086_12536:
mov di, si
mov si, word ptr ds:__emu+0Dh
rep movsw
mov word ptr ds:__emu+0Dh, si
emu086_12542:
jmp emu086_126E1
; END OF FUNCTION CHUNK FOR e086_Entry
byte_12545 db 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 4, 4, 8
db 6, 8, 6, 4, 2, 0, 10, 8, 4, 4, 4, 10, 4, 4
emu086_12565 dw offset emu086_125A5
dw offset emu086_125AA
dw offset emu086_125B7
dw offset emu086_125B7
dw offset emu086_10AE9
dw offset emu086_10B25
dw offset emu086_125B7
dw offset emu086_125B7
dw offset emu086_10E11
dw offset emu086_10E22
dw offset emu086_10E33
dw offset emu086_10E44
dw offset emu086_10E55
dw offset emu086_10E66
dw offset emu086_10E77
dw offset emu086_125B7
dw offset emu086_119FE
dw offset emu086_11AF6
dw offset emu086_11780
dw offset emu086_11876
dw offset emu086_125AF
dw offset emu086_125B7
dw offset emu086_125B7
dw offset emu086_125B7
dw offset emu086_10921
dw offset emu086_11BAD
dw offset emu086_10855
dw offset emu086_125B7
dw offset emu086_11387
dw offset emu086_11063
dw offset emu086_125B7
dw offset emu086_125B7
emu086_125A5 proc near
xor byte ptr [si+0Ah], 1
retn
emu086_125A5 endp
emu086_125AA proc near
mov byte ptr [si+0Ah], 0
retn
emu086_125AA endp
emu086_125AF proc near
push si
push di
call emu086_1102E
pop di
pop si
retn
emu086_125AF endp
emu086_125B7 proc far
mov ch, 1
call emu086_12759
jmp emu086_126E1
retn
emu086_125B7 endp
emu086_125C0 dw offset emu086_125DF
dw offset emu086_12616
dw offset emu086_125F2
dw offset emu086_12601
dw offset emu086_1261E
dw offset emu086_12631
; START OF FUNCTION CHUNK FOR e086_Entry
emu086_125CC:
mov bx, 1Fh
and bl, ch
mov al, cs:byte_12545[bx]
cbw
xchg ax, di
shl bx, 1
jmp cs:emu086_125C0[di]
emu086_125DF:
mov di, word ptr ds:__emu+0Dh
sub di, 0Ch
call cs:emu086_12565[bx]
mov word ptr ds:__emu+0Dh, di
jmp emu086_126E1
emu086_125F2:
mov si, word ptr ds:__emu+0Dh
mov di, si
mov ax, offset emu086_126E1
push ax
jmp cs:emu086_12565[bx]
emu086_12601:
mov si, word ptr ds:__emu+0Dh
mov di, si
sub di, 0Ch
call cs:emu086_12565[bx]
mov word ptr ds:__emu+0Dh, di
jmp emu086_126E1
emu086_12616:
add word ptr ds:__emu+0Dh, 0Ch
jmp emu086_126E1
emu086_1261E:
mov di, word ptr ds:__emu+0Dh
lea si, [di+0Ch]
call cs:emu086_12565[bx]
mov word ptr ds:__emu+0Dh, si
jmp emu086_126E1
emu086_12631:
mov di, word ptr ds:__emu+0Dh
lea si, [di+0Ch]
mov ax, offset emu086_126E1
push ax
jmp cs:emu086_12565[bx]
; END OF FUNCTION CHUNK FOR e086_Entry
public e287_FPU_Control
e287_FPU_Control proc far
and ch, 1Fh
cmp ch, 3
jnz short emu086_1269E
mov word ptr ds:__emu+39h, 2
mov word ptr ds:__emu+35h, 6D65h
mov word ptr ds:__emu+37h, 8775h
mov word ptr ds:__emu+4, 0
mov di, word ptr ds:__emu+11h
mov word ptr ds:__emu+0Dh, di
mov bx, word ptr ds:__emu+0Fh
sub bx, di
neg bx
mov ax, 4001h
mov cl, 0
call emu086_10E8D
mov byte ptr [di+7], 0C0h ; '<27>'
lea si, [di+0Ah]
sub di, 2
mov cx, word ptr ds:__emu+0Fh
sub cx, di
neg cx
shr cx, 1
std
rep movsw
mov word ptr ds:__emu, 4100h
mov word ptr ds:__emu+2, 33Fh
jmp short emu086_126AF
emu086_1269E:
cmp ch, 2
jnz short emu086_126AA
mov ds:__emu, 0
jmp short emu086_126AF
emu086_126AA:
mov ch, 1
call emu086_12759
emu086_126AF:
jmp short emu086_126E1
emu086_126B1:
jmp short emu086_126AA
emu086_126B3:
test ch, 1Fh
jnz short emu086_126AA
mov ax, word ptr ds:__emu+0Dh
sub ax, word ptr ds:__emu+11h
mov cl, 0Ch
idiv cl
and al, 7
mov cl, 3
shl al, cl
mov cx, word ptr ds:__emu
and ch, 0C7h
or ch, al
mov [bp+10h], cx
jmp short emu086_126E1
emu086_126D7:
mov si, word ptr ss:__emu+4
emu086_126DC:
add word ptr ss:__emu+0Dh, si
emu086_126E1:
mov ax, word ptr ss:__emu+0Fh
cmp word ptr ss:__emu+0Dh, ax
jb short emu086_126FB
emu086_126EC:
mov sp, word ptr ss:__emu+33h
pop es
pop di
pop si
pop bp
pop ds
pop bx
pop dx
pop cx
pop ax
public rs2
rs2:
iret
emu086_126FB:
mov ch, 40h ; '@'
mov di, word ptr ds:__emu+11h
mov word ptr ds:__emu+0Dh, di
call emu086_12759
int 3 ; Trap to Debugger
jmp short emu086_126EC
e287_FPU_Control endp
dw offset emu086_11C3D
dw offset emu086_11C41
dw offset emu086_11C45
dw offset emu086_11C3D
dw offset emu086_11C41
dw offset emu086_11C45
dw offset emu086_11D26
dw offset emu086_11D87
dw offset emu086_11D99
dw offset emu086_11DAB
dw offset emu086_11DF8
dw offset emu086_11DFD
dw offset emu086_11E08
public e086_Shortcut
e086_Shortcut proc near
sti
cld
push ax
push cx
push dx
push bx
push ds
push bp
push si
push di
push es
mov bp, sp
mov word ptr ss:__emu+33h, sp
lds si, [bp+12h]
lodsb
mov [bp+12h], si
mov di, ss
mov ds, di
cbw
xchg ax, bx
cmp bl, 0E6h ; '<27>'
jb short emu086_12752
mov ax, offset emu086_126E1
push ax
jmp word ptr cs:e086_Shortcut[bx]
emu086_12752:
mov ch, 1
call emu086_12759
jmp short emu086_126E1
e086_Shortcut endp
emu086_12759 proc near
push ax
push cx
push ds
push ss
pop ds
mov al, ds:__emu
mov cl, ds:__emu+2
and cl, 7Fh
xor cl, 7Fh
or al, ch
mov ah, al
and ah, cl
xor ah, al
test ah, 8
jz short emu086_1277A
or al, 20h
emu086_1277A:
test al, cl
jz short emu086_1278D
or al, 80h
mov ds:__emu, al
and al, cl
cmp al, 20h ; ' '
jnz short EmuVectorException
pop ds
pop cx
pop ax
retn
emu086_1278D:
and al, 7Fh
mov ds:__emu, al
pop ds
pop cx
pop ax
retn
emu086_12759 endp
public EmuVectorException
EmuVectorException proc near
call __fpuint
cmp ax, 0FFFFh
jz short emu086_127AE
mov ah, 35h ; '5'
int 21h
mov word ptr ss:__emu+41h, bx
mov word ptr ss:__emu+43h, es
emu086_127AE:
mov sp, word ptr ss:__emu+33h
pop es
pop di
pop si
pop bp
pop ds
pop bx
pop dx
pop cx
pop ax
jmp dword ptr ss:__emu+41h
EmuVectorException endp
EMU_PROG ends