ReC98/th02_zuninit.asm

495 lines
12 KiB
NASM
Raw Normal View History

;
; +-------------------------------------------------------------------------+
; | This file has been generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
; +-------------------------------------------------------------------------+
;
; Input MD5 : 04F7FC8F2C807428042289437780947F
; File Name : th02/ZUN.COM:ZUNINIT
; Format : MS-DOS COM-file
; Base Address: 0h Range: 100h-66Eh Loaded length: 56Eh
; OS type : MS DOS
; Application type: Executable 16bit
.286
.model tiny
; ===========================================================================
; Segment type: Pure code
_TEXT segment use16
assume cs:_TEXT
org 100h
assume es:nothing, ss:nothing, ds:_TEXT
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn thunk
public start
start proc near
jmp start_0
start endp
; =============== S U B R O U T I N E =======================================
sub_103 proc far
pushf
push ax
push bx
push cx
push dx
push ds
push di
push es
mov bx, ax
shl bx, 1
xor ax, ax
mov dx, cs:off_312[bx]
call sub_202
mov ax, 0A0h
mov dx, offset aGkgBGuglbV ; "<22><><EFBFBD>^<5E>[<5B><><EFBFBD>L<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD>$"
call sub_202
loc_122:
mov ah, 4
mov al, 3
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, 10h
jz short loc_122
pop es
pop di
pop ds
pop dx
pop cx
pop bx
pop ax
popf
iret
sub_103 endp
; =============== S U B R O U T I N E =======================================
sub_136 proc far
cmp cs:byte_24D, 0
jnz short locret_147
mov cs:byte_24D, 1
call sub_15A
locret_147:
iret
sub_136 endp
; =============== S U B R O U T I N E =======================================
sub_148 proc far
cmp cs:byte_24D, 0
jnz short locret_159
mov cs:byte_24D, 2
call sub_15A
locret_159:
iret
sub_148 endp
; =============== S U B R O U T I N E =======================================
sub_15A proc near
pushf
push ax
push bx
push cx
push dx
push ds
push di
push es
mov ah, 41h
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
cmp cs:byte_24D, 2
jz short loc_18D
mov ax, 650h
mov dx, offset aVVtvVVrvsvnvog ; "<22>ނ<EFBFBD><DE82>݂ɂr<C982>s<EFBFBD>n<EFBFBD>o<EFBFBD>L<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD>$"
call sub_202
mov ax, 6F0h
mov dx, offset asc_341 ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǝv<C68E><76><EFBFBD>́B<CC81>i<EFBFBD>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>͂ˁj$"
call sub_202
mov ax, 790h
mov dx, offset aBivrvsvnvoglbV ; "<22>i<EFBFBD>r<EFBFBD>s<EFBFBD>n<EFBFBD>o<EFBFBD>L<EFBFBD>[<5B>Ŗ߂<C596><DF82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>˂<EFBFBD><CB82>j<EFBFBD>@$"
call sub_202
mov bl, 1
jmp short loc_1AA
; ---------------------------------------------------------------------------
loc_18D:
mov ax, 650h
mov dx, offset aVV ; "<22>Ȃ<EFBFBD><C882>łb<C582>n<EFBFBD>o<EFBFBD>x<EFBFBD>L<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD>$"
call sub_202
mov ax, 6F0h
mov dx, offset aVivBBbvVVmbBbb ; "<22><><EFBFBD>ȁ`<60>B<EFBFBD>ӂ<EFBFBD><D382><EFBFBD><EFBFBD>`<60>B<EFBFBD>@<40>@<40>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>A$"
call sub_202
mov ax, 790h
mov dx, offset aVbvnvovxglbIqv ; "<22>b<EFBFBD>n<EFBFBD>o<EFBFBD>x<EFBFBD>L<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>Ζ߂<CE96><DF82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>˂<EFBFBD><CB82>j$"
call sub_202
mov bl, 2
loc_1AA:
mov ah, 4
mov al, 0Ch
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, bl
jnz short loc_1AA
loc_1B4:
mov ah, 4
mov al, 0Ch
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
test ah, bl
jz short loc_1B4
mov ah, 40h
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
mov ax, 650h
mov dx, offset aB@b@b@b@b@b@b@ ; "<22>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@$"
call sub_202
mov ax, 6F0h
mov dx, offset aB@b@b@b@b@b@b@ ; "<22>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@$"
call sub_202
mov ax, 790h
mov dx, offset aB@b@b@b@b@b@b@ ; "<22>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@$"
call sub_202
mov ah, 6
int 18h ; TRANSFER TO ROM BASIC
; causes transfer to ROM-based BASIC (IBM-PC)
; often reboots a compatible; often has no effect at all
pop es
pop di
pop ds
pop dx
pop cx
pop bx
pop ax
popf
mov cs:byte_24D, 0
retn
sub_15A endp
; =============== S U B R O U T I N E =======================================
sub_1F0 proc near
shl ah, 1
cmp al, 9Fh
jnb short loc_1FB
cmp al, 80h
adc ax, 0FEDFh
loc_1FB:
sbb ax, 0DFFEh
and ax, 7F7Fh
retn
sub_1F0 endp
; =============== S U B R O U T I N E =======================================
sub_202 proc near
mov bx, dx
mov di, 0A000h
mov es, di
assume es:nothing
mov di, ax
mov dx, ax
xor ax, ax
xor cx, cx
loc_211:
mov ax, cs:[bx]
cmp al, 24h
jz short loc_22C
xchg ah, al
call sub_1F0
xchg ah, al
sub al, 20h
stosw
or ah, 80h
stosw
inc bx
inc bx
inc cx
inc cx
jmp short loc_211
; ---------------------------------------------------------------------------
loc_22C:
mov di, 0A200h
mov es, di
assume es:nothing
mov di, dx
mov ax, 41h
loc_236:
dec cx
stosw
jz short locret_23C
jmp short loc_236
; ---------------------------------------------------------------------------
locret_23C:
retn
sub_202 endp
; ---------------------------------------------------------------------------
ZUNP dw 'ZU', 'NP'
dword_241 dd 0
dword_245 dd 0
dword_249 dd 0
byte_24D db 0
aGkgBGuglbV db '<27><><EFBFBD>^<5E>[<5B><><EFBFBD>L<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD>$'
aVV_0 db '<27>Ȃ񂩂̃G<CC83><47><EFBFBD>[<5B>ł<EFBFBD><C582><EFBFBD>$'
aGtg@gcglvkvVVi db '<27>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>݂‚<DD82><C282><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>悧$'
aGbgvgkvkslvsvV db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>ł<EFBFBD><C582><EFBFBD>$'
aGogbgGtg@gcglv db '<27>o<EFBFBD>b<EFBFBD>`<60>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>Ă悧$'
aGngcgxgrgavGtg db '<27>n<EFBFBD>C<EFBFBD>X<EFBFBD>R<EFBFBD>A<EFBFBD>̃t<CC83>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD>C<EFBFBD>X<EFBFBD>R<EFBFBD>A<EFBFBD>͏<EFBFBD><CD8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>$'
off_312 dw offset aVV_0
; "<22>Ȃ񂩂̃G<CC83><47><EFBFBD>[<5B>ł<EFBFBD><C582><EFBFBD>$"
dw offset aVV_0 ; "<22>Ȃ񂩂̃G<CC83><47><EFBFBD>[<5B>ł<EFBFBD><C582><EFBFBD>$"
dw offset aGtg@gcglvkvVVi ; "<22>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>݂‚<DD82><C282><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>悧$"
dw offset aGbgvgkvkslvsvV ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>ł<EFBFBD><C582><EFBFBD>$"
dw offset aGogbgGtg@gcglv ; "<22>o<EFBFBD>b<EFBFBD>`<60>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>Ă悧$"
dw offset aGngcgxgrgavGtg ; "<22>n<EFBFBD>C<EFBFBD>X<EFBFBD>R<EFBFBD>A<EFBFBD>̃t<CC83>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>E...
aVVtvVVrvsvnvog db '<27>ނ<EFBFBD><DE82>݂ɂr<C982>s<EFBFBD>n<EFBFBD>o<EFBFBD>L<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD>$'
asc_341 db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǝv<C68E><76><EFBFBD>́B<CC81>i<EFBFBD>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>͂ˁj$'
aBivrvsvnvoglbV db '<27>i<EFBFBD>r<EFBFBD>s<EFBFBD>n<EFBFBD>o<EFBFBD>L<EFBFBD>[<5B>Ŗ߂<C596><DF82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>˂<EFBFBD><CB82>j<EFBFBD>@$'
aB@b@b@b@b@b@b@ db '<27>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@$'
aVV db '<27>Ȃ<EFBFBD><C882>łb<C582>n<EFBFBD>o<EFBFBD>x<EFBFBD>L<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD>$'
aVivBBbvVVmbBbb db '<27><><EFBFBD>ȁ`<60>B<EFBFBD>ӂ<EFBFBD><D382><EFBFBD><EFBFBD>`<60>B<EFBFBD>@<40>@<40>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>A$'
aVbvnvovxglbIqv db '<27>b<EFBFBD>n<EFBFBD>o<EFBFBD>x<EFBFBD>L<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>Ζ߂<CE96><DF82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>˂<EFBFBD><CB82>j$'
; =============== S U B R O U T I N E =======================================
sub_413 proc near
mov dx, offset aIntvectorSetPr ; "\r\n\r\nINTvector set program zuninit.com "...
mov ah, 9
int 21h ; DOS - PRINT STRING
; DS:DX -> string terminated by "$"
mov ax, 3559h
int 21h ; DOS - 2+ - GET INTERRUPT VECTOR
; AL = interrupt number
; Return: ES:BX = value of interrupt vector
cmp es:ZUNP, 'ZU'
jnz short loc_436
cmp es:ZUNP+2, 'NP'
jnz short loc_436
mov ax, 1
jmp short locret_439
; ---------------------------------------------------------------------------
loc_436:
mov ax, 0
locret_439:
retn
sub_413 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
start_0 proc near
mov si, 81h
loc_43D:
lodsb
cmp al, 0Dh
jz short loc_44E
cmp al, 2Fh
jz short loc_458
cmp al, 2Dh
jz short loc_458
cmp al, 20h
jbe short loc_43D
loc_44E:
call sub_413
test ax, ax
jz short loc_473
jmp loc_515
; ---------------------------------------------------------------------------
loc_458:
lodsb
cmp al, 20h
ja short loc_460
jmp loc_527
; ---------------------------------------------------------------------------
loc_460:
and al, 0DFh
cmp al, 52h
jz short loc_469
jmp loc_527
; ---------------------------------------------------------------------------
loc_469:
call sub_413
test ax, ax
jnz short loc_4C9
jmp loc_51E
; ---------------------------------------------------------------------------
loc_473:
mov word ptr cs:dword_241, bx
mov word ptr cs:dword_241+2, es
mov dx, offset sub_103
mov ax, 2559h
int 21h ; DOS - SET INTERRUPT VECTOR
; AL = interrupt number
; DS:DX = new vector to be used for specified interrupt
mov ah, 35h
mov al, 6
int 21h ; DOS - 2+ - GET INTERRUPT VECTOR
; AL = interrupt number
; Return: ES:BX = value of interrupt vector
mov word ptr cs:dword_249, bx
mov word ptr cs:dword_249+2, es
mov dx, offset sub_136
mov ax, 2506h
int 21h ; DOS - SET INTERRUPT VECTOR
; AL = interrupt number
; DS:DX = new vector to be used for specified interrupt
mov ah, 35h
mov al, 5
int 21h ; DOS - 2+ - GET INTERRUPT VECTOR
; AL = interrupt number
; Return: ES:BX = value of interrupt vector
mov word ptr cs:dword_245, bx
mov word ptr cs:dword_245+2, es
mov dx, offset sub_148
mov ax, 2505h
int 21h ; DOS - SET INTERRUPT VECTOR
; AL = interrupt number
; DS:DX = new vector to be used for specified interrupt
mov dx, offset aVVxvVVGbgvgkvi ; "<22><><EFBFBD><EFBFBD><E582B1><EFBFBD>ƃ<EFBFBD><C683><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n\r\n$"
mov ah, 9
int 21h ; DOS - PRINT STRING
; DS:DX -> string terminated by "$"
mov dx, offset sub_413
mov cl, 4
shr dx, cl
inc dx
mov ax, 3100h
int 21h ; DOS - DOS 2+ - TERMINATE BUT STAY RESIDENT
; AL = exit code, DX = program size, in paragraphs
; ---------------------------------------------------------------------------
loc_4C9:
push ds
mov dx, word ptr es:dword_241
mov ds, word ptr es:dword_241+2
mov ax, 2559h
int 21h ; DOS - SET INTERRUPT VECTOR
; AL = interrupt number
; DS:DX = new vector to be used for specified interrupt
mov dx, word ptr es:dword_249
mov ds, word ptr es:dword_249+2
mov ax, 2506h
int 21h ; DOS - SET INTERRUPT VECTOR
; AL = interrupt number
; DS:DX = new vector to be used for specified interrupt
mov dx, word ptr es:dword_245
mov ds, word ptr es:dword_245+2
mov ax, 2505h
int 21h ; DOS - SET INTERRUPT VECTOR
; AL = interrupt number
; DS:DX = new vector to be used for specified interrupt
pop ds
push es
mov es, word ptr es:2Ch
assume es:nothing
mov ah, 49h
int 21h ; DOS - 2+ - FREE MEMORY
; ES = segment address of area to be freed
pop es
mov ah, 49h
int 21h ; DOS - 2+ - FREE MEMORY
; ES = segment address of area to be freed
mov dx, offset aGbgvgkvivcpVjv ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĂȂ<C482><C882>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǁA<C781>E...
jnb short loc_50F
mov dx, offset aGbgvgki ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47><EFBFBD>[<5B>ł<EFBFBD><C582>B : zuninit.com\r\n$"
loc_50F:
mov ah, 9
int 21h ; DOS - PRINT STRING
; DS:DX -> string terminated by "$"
jmp short loc_530
; ---------------------------------------------------------------------------
loc_515:
mov dx, offset aVVVPatuvVVsv ; "<22><><EFBFBD>łɏ풓<C98F><ED9293><EFBFBD>Ă<EFBFBD><C482><EFBFBD>\r\n\r\n$"
mov ah, 9
int 21h ; DOS - PRINT STRING
; DS:DX -> string terminated by "$"
jmp short loc_530
; ---------------------------------------------------------------------------
loc_51E:
mov dx, offset aVVBapatuvVVVvv ; "<22>܂<EFBFBD><DC82>A<EFBFBD><EFBFBD><ED9293><EFBFBD>ĂȂ<C482><C882>킟\r\n\r\n$"
mov ah, 9
int 21h ; DOS - PRINT STRING
; DS:DX -> string terminated by "$"
jmp short loc_530
; ---------------------------------------------------------------------------
loc_527:
mov dx, offset aICbxscVGigvgvg ; "<22>Ӗ<EFBFBD><D396>s<EFBFBD><73><EFBFBD>ȃI<C883>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>I<EFBFBD>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "...
mov ah, 9
int 21h ; DOS - PRINT STRING
; DS:DX -> string terminated by "$"
jmp short $+2
loc_530:
mov ax, 4C00h
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
start_0 endp ; AL = exit code
; ---------------------------------------------------------------------------
aIntvectorSetPr db 0Dh,0Ah
db 0Dh,0Ah
db 'INTvector set program zuninit.com Version1.00 (c)zun 1997',0Dh,0Ah,'$'
aVVxvVVGbgvgkvi db '<27><><EFBFBD><EFBFBD><E582B1><EFBFBD>ƃ<EFBFBD><C683><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0Dh,0Ah
db 0Dh,0Ah,'$'
aVVVPatuvVVsv db '<27><><EFBFBD>łɏ풓<C98F><ED9293><EFBFBD>Ă<EFBFBD><C482><EFBFBD>',0Dh,0Ah
db 0Dh,0Ah,'$'
aGbgvgkvivcpVjv db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĂȂ<C482><C882>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǁA<C781><41><EFBFBD><EFBFBD><EFBFBD>Ƃ܂<C682><DC82><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>˂<EFBFBD>',0Dh,0Ah
db 0Dh,0Ah,'$'
aVVBapatuvVVVvv db '<27>܂<EFBFBD><DC82>A<EFBFBD><EFBFBD><ED9293><EFBFBD>ĂȂ<C482><C882>킟',0Dh,0Ah
db 0Dh,0Ah,'$'
aICbxscVGigvgvg db '<27>Ӗ<EFBFBD><D396>s<EFBFBD><73><EFBFBD>ȃI<C883>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>I<EFBFBD>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -R<>̂݁j',0Dh,0Ah,'$'
aGbgvgki db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47><EFBFBD>[<5B>ł<EFBFBD><C582>B : zuninit.com',0Dh,0Ah,'$'
_TEXT ends
end start