; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 661F4F8FFAF1F3274F503D154133DEF0 ; File Name : th03/OP.EXE ; Format : MS-DOS executable (EXE) ; Base Address: 0h Range: 0h-FD80h Loaded length: E97Ah ; Entry Point : 0:0 ; OS type : MS DOS ; Application type: Executable 16bit .386 .model large include ReC98.inc ; =========================================================================== ; Segment type: Pure code seg000 segment word public 'CODE' use16 assume cs:seg000 assume es:nothing, ss:seg005, ds:dseg, fs:nothing, gs:nothing include libs/BorlandC/c0.asm db 0 include libs/master.lib/bfnt_entry_pat.asm include libs/master.lib/bfnt_extend_header_skip.asm include libs/master.lib/bfnt_header_read.asm include libs/master.lib/bfnt_header_analysis.asm include libs/master.lib/bcloser.asm include libs/master.lib/bfill.asm include libs/master.lib/bfnt_palette_set.asm include libs/master.lib/bgetc.asm include libs/master.lib/palette_black_out.asm include libs/master.lib/bopenr.asm include libs/master.lib/bread.asm include libs/master.lib/bseek.asm include libs/master.lib/bseek_.asm include libs/master.lib/dos_axdx.asm include libs/master.lib/dos_keyclear.asm include libs/master.lib/dos_puts2.asm include libs/master.lib/dos_setvect.asm include libs/master.lib/egc.asm include libs/master.lib/egc_shift_left_all.asm include libs/master.lib/file_append.asm include libs/master.lib/file_close.asm include libs/master.lib/file_create.asm include libs/master.lib/file_exist.asm include libs/master.lib/file_read.asm include libs/master.lib/file_ropen.asm include libs/master.lib/file_seek.asm include libs/master.lib/file_write.asm include libs/master.lib/dos_close.asm include libs/master.lib/dos_ropen.asm include libs/master.lib/grcg_boxfill.asm include libs/master.lib/grcg_byteboxfill_x.asm include libs/master.lib/grcg_polygon_c.asm include libs/master.lib/grcg_pset.asm include libs/master.lib/grcg_setcolor.asm include libs/master.lib/gaiji_backup.asm include libs/master.lib/gaiji_entry_bfnt.asm include libs/master.lib/gaiji_putsa.asm include libs/master.lib/gaiji_read.asm include libs/master.lib/gaiji_write.asm include libs/master.lib/graph_400line.asm include libs/master.lib/graph_clear.asm include libs/master.lib/graph_copy_page.asm include libs/master.lib/graph_extmode.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1232 proc far arg_0 = word ptr 6 arg_2 = dword ptr 8 arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh arg_A = word ptr 10h push bp mov bp, sp push si push di push ds mov es, graph_VramSeg assume es:nothing mov cx, [bp+arg_A] mov di, [bp+arg_8] mov bx, [bp+arg_6] lds si, [bp+arg_2] mov dx, [bp+arg_0] mov bp, bx mov ax, di shl ax, 2 add di, ax shl di, 4 mov al, 0C0h ; 'ΐ' pushf cli out 7Ch, al popf shr dx, 1 sbb al, al out 7Eh, al shr dx, 1 sbb al, al out 7Eh, al shr dx, 1 sbb al, al out 7Eh, al shr dx, 1 sbb al, al out 7Eh, al mov al, 0Bh out 68h, al loc_127A: lodsb or al, al jz short loc_12CC mov ah, 0 adc ax, 5680h and ax, 0FF7Fh mov bx, cx and cx, 7 shr bx, 3 add di, bx out 0A1h, al ; Interrupt Controller #2, 8259A mov al, ah out 0A3h, al ; Interrupt Controller #2, 8259A mov dx, 10h xor ch, ch loc_129C: mov al, ch or al, 20h out 0A5h, al ; Interrupt Controller #2, 8259A in al, 0A9h ; Interrupt Controller #2, 8259A mov ah, al mov al, ch out 0A5h, al ; Interrupt Controller #2, 8259A in al, 0A9h ; Interrupt Controller #2, 8259A mov bh, al mov bl, 0 shr ax, cl shr bx, cl xchg al, ah stosw mov es:[di], bl add di, 4Eh ; 'N' inc ch dec dx jnz short loc_129C sub di, 500h xor ch, ch add cx, bp jmp short loc_127A ; --------------------------------------------------------------------------- loc_12CC: mov al, 0Ah out 68h, al xor al, al out 7Ch, al pop ds pop di pop si pop bp retf 0Ch sub_1232 endp ; --------------------------------------------------------------------------- nop include libs/master.lib/graph_pi_free.asm include libs/master.lib/graph_pi_load_pack.asm include libs/master.lib/graph_pack_put_8.asm include libs/master.lib/graph_show.asm include libs/master.lib/graph_start.asm include libs/master.lib/js_end.asm include libs/master.lib/keybeep.asm include libs/master.lib/make_linework.asm include libs/master.lib/palette_init.asm include libs/master.lib/palette_show.asm include libs/master.lib/pfclose.asm ; --------------------------------------------------------------------------- push bp mov bp, sp mov es, word ptr [bp+6] call word ptr es:2 pop bp retf 2 ; --------------------------------------------------------------------------- nop cmp word ptr es:1Ah, 0 jz short loc_1BF6 dec word ptr es:1Ah add word ptr es:12h, 1 adc word ptr es:14h, 0 mov ax, es:1Ch retn ; --------------------------------------------------------------------------- loc_1BF6: call word ptr es:4 test ah, ah jnz short locret_1C25 cmp ax, es:1Ch mov es:1Ch, ax jnz short locret_1C25 push ax call word ptr es:4 test ah, ah jnz short loc_1C24 mov es:1Ah, ax sub word ptr es:12h, 1 sbb word ptr es:14h, 0 loc_1C24: pop ax locret_1C25: retn ; =============== S U B R O U T I N E ======================================= sub_1C26 proc near mov ax, es:0Ah mov dx, es:0Ch cmp dx, es:8 jb short loc_1C43 ja short loc_1C3F cmp ax, es:6 jb short loc_1C43 loc_1C3F: mov ax, 0FFFFh retn ; --------------------------------------------------------------------------- loc_1C43: add ax, 1 adc dx, 0 mov es:0Ah, ax mov es:0Ch, dx add word ptr es:12h, 1 adc word ptr es:14h, 0 push es push word ptr es:0 call bgetc pop es retn sub_1C26 endp ; =============== S U B R O U T I N E ======================================= sub_1C6A proc near call sub_1C26 or ah, ah jnz short locret_1C76 xor al, es:1Eh locret_1C76: retn sub_1C6A endp ; --------------------------------------------------------------------------- db 0 include libs/master.lib/pfread.asm include libs/master.lib/pfrewind.asm include libs/master.lib/pfseek.asm include libs/master.lib/random.asm include libs/master.lib/palette_entry_rgb.asm include libs/master.lib/rottbl.asm include libs/master.lib/smem_release.asm include libs/master.lib/smem_wget.asm include libs/master.lib/soundio.asm include libs/BorlandC/text_clear.asm include libs/BorlandC/txesc.asm db 0 include libs/master.lib/text_putsa.asm include libs/master.lib/vsync.asm include libs/master.lib/vsync_wait.asm include libs/master.lib/palette_white_in.asm include libs/master.lib/hmem_lallocate.asm include libs/master.lib/mem_assign_dos.asm include libs/master.lib/mem_assign.asm include libs/master.lib/memheap.asm ; =============== S U B R O U T I N E ======================================= sub_2676 proc far cmp mem_TopSeg, 0 jz short loc_2691 mov ax, mem_TopSeg mov es, ax xor ax, ax cmp mem_MyOwn, ax mov mem_TopSeg, ax jz short loc_2691 mov ah, 49h int 21h ; DOS - 2+ - FREE MEMORY ; ES = segment address of area to be freed loc_2691: mov ax, 1 retf sub_2676 endp ; --------------------------------------------------------------------------- xor ax, ax stc retf include libs/master.lib/super_free.asm include libs/master.lib/super_entry_pat.asm include libs/master.lib/super_entry_at.asm include libs/master.lib/super_entry_bfnt.asm include libs/master.lib/super_cancel_pat.asm include libs/master.lib/super_put.asm ; =============== S U B R O U T I N E ======================================= sub_2A8A proc far push si push di mov ah, 52h int 21h ; DOS - 2+ internal - GET LIST OF LISTS ; Return: ES:BX -> DOS list of lists cld mov bx, es:[bx-2] loc_2A95: mov es, bx assume es:nothing inc bx mov ax, es:1 or ax, ax jz short loc_2AAD mov di, 10h mov cx, 0Ah mov si, 5DEh repe cmpsb jz short loc_2ABE loc_2AAD: mov ax, es:3 add bx, ax mov al, es:0 cmp al, 4Dh ; 'M' jz short loc_2A95 mov bx, 0 loc_2ABE: mov ax, bx mov ResPalSeg, ax pop di pop si retf sub_2A8A endp ; =============== S U B R O U T I N E ======================================= sub_2AC6 proc far push si push di nop push cs call near ptr sub_2A8A or ax, ax mov ax, 2 jnz short loc_2B38 mov ax, 5800h int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY ; AL = function code: get allocation strategy mov dx, ax mov ax, 5801h mov bx, 1 int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY ; AL = function code: set allocation strategy mov ah, 48h ; 'H' mov bx, 4 int 21h ; DOS - 2+ - ALLOCATE MEMORY ; BX = number of 16-byte paragraphs desired mov cx, 0 jb short loc_2B2F mov bx, cs cmp bx, ax jnb short loc_2B0A mov es, ax assume es:nothing mov ah, 49h int 21h ; DOS - 2+ - FREE MEMORY ; ES = segment address of area to be freed mov ax, 5801h mov bx, 2 int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY ; AL = function code: set allocation strategy mov ah, 48h ; 'H' mov bx, 4 int 21h ; DOS - 2+ - ALLOCATE MEMORY ; BX = number of 16-byte paragraphs desired loc_2B0A: mov cx, ax mov ResPalSeg, ax dec cx mov es, cx assume es:nothing mov ax, 0FFFFh mov es:1, ax inc cx mov es, cx assume es:nothing cld xor di, di mov si, 5DEh mov cx, 0Ah rep movsb xor ax, ax stosw stosw stosw mov cx, 1 loc_2B2F: mov ax, 5801h mov bx, dx int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY ; AL = function code: set allocation strategy mov ax, cx loc_2B38: pop di pop si retf sub_2AC6 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_2B3C proc far mov ax, ResPalSeg or ax, ax jnz short loc_2B4C nop push cs call near ptr sub_2A8A or ax, ax jnz short locret_2B58 loc_2B4C: mov es, ax assume es:nothing mov ah, 49h int 21h ; DOS - 2+ - FREE MEMORY ; ES = segment address of area to be freed mov ResPalSeg, 0 locret_2B58: retf sub_2B3C endp ; --------------------------------------------------------------------------- nop ; --------------------------------------------------------------------------- dword_2B5A dd 0 byte_2B5E db 0 db 90h ;  ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2B60 proc far arg_0 = dword ptr 6 push bp mov bp, sp cld mov ax, word ptr cs:dword_2B5A or ax, word ptr cs:dword_2B5A+2 jz short loc_2B72 jmp loc_2BF3 ; --------------------------------------------------------------------------- loc_2B72: push di push si push word ptr [bp+arg_0+2] push word ptr [bp+arg_0] call file_ropen push 10h call hmem_allocbyte mov di, ax push ax push 0 push 10h call file_read mov ax, di mov es, ax mov di, es:0 mov si, es:6 push ax call hmem_free push di call hmem_allocbyte mov word_F290, ax push ax push 0 push di call file_read call file_close mov cx, di mov ax, word_F290 mov es, ax mov ax, si xor bx, bx loc_2BC1: xor es:[bx], al sub al, es:[bx] inc bx loop loc_2BC1 pop si pop di mov ax, 3521h int 21h ; DOS - 2+ - GET INTERRUPT VECTOR ; AL = interrupt number ; Return: ES:BX = value of interrupt vector mov word ptr cs:dword_2B5A, bx mov word ptr cs:dword_2B5A+2, es mov word_F28C, 0 mov word_F28E, 0FFFFh push ds push cs pop ds assume ds:seg000 mov dx, 2C54h mov ax, 2521h int 21h ; DOS - SET INTERRUPT VECTOR ; AL = interrupt number ; DS:DX = new vector to be used for specified interrupt pop ds assume ds:dseg loc_2BF3: push si push di push ds mov cx, 0FFFFh mov al, 0 les di, [bp+arg_0] repne scasb not cx sub di, cx mov si, di mov di, 1A1Ch push ds push es pop ds pop es shr cx, 1 rep movsw adc cx, cx rep movsb pop ds pop di pop si pop bp retf 4 sub_2B60 endp ; =============== S U B R O U T I N E ======================================= sub_2C1C proc far mov ax, word ptr cs:dword_2B5A or ax, word ptr cs:dword_2B5A+2 jz short locret_2C53 push ds lds dx, cs:dword_2B5A mov ax, 2521h int 21h ; DOS - SET INTERRUPT VECTOR ; AL = interrupt number ; DS:DX = new vector to be used for specified interrupt pop ds xor ax, ax mov word ptr cs:dword_2B5A, ax mov word ptr cs:dword_2B5A+2, ax cmp word_F28C, ax jz short locret_2C53 push word_F28C call pfclose push word_F290 call hmem_free locret_2C53: retf sub_2C1C endp ; --------------------------------------------------------------------------- cmp cs:byte_2B5E, 0 jz short loc_2C61 jmp cs:dword_2B5A ; --------------------------------------------------------------------------- loc_2C61: pusha push ds push es mov bp, sp mov di, seg dseg mov ds, di inc cs:byte_2B5E push word ptr [bp+18h] popf mov cs:byte_2CB8, ah mov si, 2C88h loc_2C7C: add si, 4 cmp ah, cs:[si] jnz short loc_2C7C mov di, word_F28E jmp word ptr cs:[si+2] ; --------------------------------------------------------------------------- db 3Dh, 0, 0BCh, 2Ch, 3Eh, 0, 0F1h, 2Ch, 3Fh, 0, 0Fh, 2Dh db 42h, 0, 23h, 2Dh, 46h, 0, 84h, 2Dh, 40h, 0, 88h, 2Dh db 45h, 0, 88h, 2Dh, 4Ch, 0, 66h, 2Dh, 57h, 0, 88h, 2Dh db 5Ch, 0, 88h, 2Dh, 44h, 0, 72h, 2Dh byte_2CB8 db 0 db 0 ; --------------------------------------------------------------------------- mov word ptr [di], gs test al, 0Fh jz short loc_2CC3 jmp loc_2D8C ; --------------------------------------------------------------------------- loc_2CC3: or di, di js short loc_2CCA jmp loc_2D8C ; --------------------------------------------------------------------------- loc_2CCA: push ds push offset unk_F20C push word ptr [bp+2] push dx push cs call near ptr sub_2EF2 or ax, ax jnz short loc_2CDD jmp loc_2D8C ; --------------------------------------------------------------------------- loc_2CDD: mov word_F28C, ax mov es, ax mov es, word ptr es:0 mov ax, es:0 mov word_F28E, ax jmp loc_2DA7 ; --------------------------------------------------------------------------- cmp bx, di jz short loc_2CF8 jmp loc_2D8C ; --------------------------------------------------------------------------- loc_2CF8: push word_F28C call pfclose mov word_F28C, 0 mov word_F28E, 0FFFFh jmp loc_2DA7 ; --------------------------------------------------------------------------- cmp bx, di jnz short loc_2D8C push word ptr [bp+2] push dx push cx push word_F28C call pfread jmp loc_2DA7 ; --------------------------------------------------------------------------- cmp bx, di jnz short loc_2D8C or cx, cx jl short loc_2D9E cmp al, 1 jz short loc_2D57 jl short loc_2D4B mov es, word_F28C mov dx, es:16h mov cx, es:18h sub dx, es:12h sbb cx, es:14h jmp short loc_2D57 ; --------------------------------------------------------------------------- loc_2D4B: push cx push dx push word_F28C call pfrewind pop dx pop cx loc_2D57: push word_F28C push cx push dx call pfseek mov [bp+0Eh], dx jmp short loc_2DA7 ; --------------------------------------------------------------------------- db 2Eh, 0C5h, 16h, 5Ah, 2Bh, 0B8h, 21h, 25h, 0CDh, 21h db 0EBh, 1Ah, 8Ah, 0C8h, 0B8h, 1, 0, 0D3h, 0E0h, 2Eh, 85h db 6, 82h, 2Dh, 75h, 8, 0EBh, 0Ah, 0CFh, 14h, 8Bh, 0CFh db 74h, 16h, 3Bh, 0DFh, 74h, 12h ; --------------------------------------------------------------------------- loc_2D8C: dec cs:byte_2B5E push word ptr [bp+18h] popf pop es pop ds popa cli jmp cs:dword_2B5A ; --------------------------------------------------------------------------- loc_2D9E: or byte ptr [bp+18h], 1 mov ax, 1 jmp short loc_2DAB ; --------------------------------------------------------------------------- loc_2DA7: and byte ptr [bp+18h], 0FEh loc_2DAB: mov [bp+12h], ax dec cs:byte_2B5E pop es pop ds popa iret ; --------------------------------------------------------------------------- db 0 ; =============== S U B R O U T I N E ======================================= sub_2DB8 proc far mov cx, 100h mov dx, 188h loc_2DBE: in al, dx inc al jnz short loc_2DC9 loop loc_2DBE xor ax, ax jmp short loc_2DDD ; --------------------------------------------------------------------------- loc_2DC9: pushf cli mov bh, 7 call sound_i and al, 3Fh or al, 80h mov bl, al call sound_o popf mov ax, 1 loc_2DDD: mov word_DABC, ax retf sub_2DB8 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_2DE2 proc near mov bh, 0Fh call sound_o mov dx, 188h mov al, 0Eh out dx, al inc dx inc dx in al, dx not al retn sub_2DE2 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_2DF4 proc far push bp push si push di xor bp, bp cmp word_DABC, 0 jz short loc_2E0D pushf cli mov bl, 80h ; '€' call sub_2DE2 and ax, 3Fh mov si, ax popf loc_2E0D: or word_E9A4, si pop di pop si pop bp retf sub_2DF4 endp ; --------------------------------------------------------------------------- nop xchg dx, bx out dx, al xchg dx, bx in al, dx not al retn ; --------------------------------------------------------------------------- db 0 ; --------------------------------------------------------------------------- include libs/master.lib/draw_trapezoid.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2EF2 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch enter 0, 0 push si push di mov mem_AllocID, 7 push 1Fh call hmem_allocbyte jb loc_2FFE mov si, ax push [bp+arg_6] push [bp+arg_4] call bopenr or ax, ax jz loc_2FF7 mov es, si mov es:0, ax mov ax, word_F290 mov fs, ax xor ax, ax mov di, ax loc_2F29: mov al, fs:[di] mov bx, 2 or al, al jz short loc_2F4B mov bx, 3 add bx, di push [bp+arg_2] push [bp+arg_0] push fs push bx call sub_300C jnz short loc_2F4D add di, 20h ; ' ' jmp short loc_2F29 ; --------------------------------------------------------------------------- loc_2F4B: mov ax, bx loc_2F4D: mov es, si mov ax, fs:[di+14h] mov dx, fs:[di+16h] mov es:0Eh, ax mov es:10h, dx push word ptr es:0 push dx push ax push 0 call bseek_ mov ax, 1C26h mov dl, fs:[di+2] mov es, si or dl, dl jz short loc_2F82 mov es:1Eh, dl mov ax, offset sub_1C6A loc_2F82: mov es:4, ax mov es, cx mov ax, fs:[di] mov es, si cmp ax, 0F388h jz short loc_2F9C cmp ax, 9595h jz short loc_2FA6 mov ax, 5 jmp short loc_2FEB ; --------------------------------------------------------------------------- loc_2F9C: mov ax, es:4 mov es:2, ax jmp short loc_2FBB ; --------------------------------------------------------------------------- loc_2FA6: mov word ptr es:2, 1BD8h mov word ptr es:1Ah, 0 mov word ptr es:1Ch, 0FFFFh loc_2FBB: mov bx, fs:[di+10h] mov dx, fs:[di+12h] xor ax, ax mov es:6, bx mov es:8, ax mov es:16h, dx mov es:18h, ax mov es:0Ah, ax mov es:0Ch, ax mov es:12h, ax mov es:14h, ax mov ax, si jmp short loc_3005 ; --------------------------------------------------------------------------- loc_2FEB: mov pferrno, ax push word ptr es:0 call bcloser loc_2FF7: push si call hmem_free jmp short loc_3003 ; --------------------------------------------------------------------------- loc_2FFE: mov byte ptr pferrno, 3 loc_3003: xor ax, ax loc_3005: pop di pop si leave retf 8 sub_2EF2 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_300C proc near arg_0 = dword ptr 4 arg_4 = dword ptr 8 push bp mov bp, sp push si push ds cld les bx, [bp+arg_4] lds si, [bp+arg_0] loc_3018: mov ah, es:[bx] inc bx lodsb sub al, 61h ; 'a' cmp al, 19h ja short loc_3025 sub al, 20h ; ' ' loc_3025: sub ah, 61h ; 'a' cmp ah, 19h ja short loc_3030 sub ah, 20h ; ' ' loc_3030: cmp ah, al jnz short loc_303A add al, 61h ; 'a' jnz short loc_3018 jmp short loc_303C ; --------------------------------------------------------------------------- loc_303A: xor ax, ax loc_303C: test ax, ax pop ds pop si pop bp retn 8 sub_300C endp include libs/BorlandC/__abort.asm include libs/BorlandC/stpcpy.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: library function noreturn ; void abort(void) _abort proc far ; ___call_terminate+6Ep ... push si push di mov ax, 16h push ax nop call raise pop cx nop push cs call near ptr __abort _abort endp ; --------------------------------------------------------------------------- pop di pop si retf include libs/BorlandC/atexit.asm include libs/BorlandC/del.asm include libs/BorlandC/delarray.asm include libs/BorlandC/dosenv.asm include libs/BorlandC/dosgdriv.asm include libs/BorlandC/errormsg.asm include libs/BorlandC/exit.asm include libs/BorlandC/f_scopy.asm include libs/BorlandC/getvect.asm include libs/BorlandC/H_LDIV.ASM include libs/BorlandC/H_LLSH.ASM include libs/BorlandC/H_PADD.ASM include libs/BorlandC/__IOERROR.ASM include libs/BorlandC/_isatty.asm include libs/BorlandC/lseek.asm include libs/BorlandC/new.asm include libs/BorlandC/N_LXMUL.ASM include libs/BorlandC/N_PCMP.ASM include libs/BorlandC/setupio.asm include libs/BorlandC/toupper.asm include libs/BorlandC/xxas.asm include libs/BorlandC/xxv.asm include libs/BorlandC/cputype.asm include libs/BorlandC/FARHEAP.ASM include libs/BorlandC/fbrk.asm include libs/BorlandC/signal.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame ; int __cdecl __far _access(char *pathname, char) __access proc far pathname = dword ptr 6 arg_4 = byte ptr 0Ah push bp mov bp, sp push si push di xor ax, ax push ax ; func push word ptr [bp+pathname+2] push word ptr [bp+pathname] ; pathname nop call __chmod add sp, 6 mov dx, ax cmp dx, 0FFFFh jnz short loc_45D2 jmp short loc_45EA ; --------------------------------------------------------------------------- loc_45D2: test [bp+arg_4], 2 jz short loc_45DD test dl, 1 jnz short loc_45E1 loc_45DD: xor ax, ax jmp short loc_45EA ; --------------------------------------------------------------------------- loc_45E1: mov _errno, 5 mov ax, 0FFFFh loc_45EA: pop di pop si pop bp retf __access endp ; --------------------------------------------------------------------------- db 50h, 51h, 52h, 53h, 54h, 55h, 56h, 57h, 1Eh, 6, 8Bh db 0ECh, 0A1h, 0A4h, 0Fh, 0Bh, 6, 0A6h, 0Fh, 75h, 27h db 0BEh, 2 dup(0FFh), 1Eh, 0B8h, 0, 63h, 0F8h, 0CDh, 21h db 8Ch, 0D8h, 1Fh, 72h, 0Bh, 8Ch, 0DAh, 3Bh, 0C2h, 74h db 5, 83h, 0FEh, 0FFh, 75h, 6, 0BEh, 0A8h, 0Fh, 0B8h dw seg dseg ; --------------------------------------------------------------------------- mov word ptr dword_E794, si mov word ptr dword_E794+2, ax mov sp, bp pop es pop ds pop di pop si pop bp pop bx pop bx pop dx pop cx pop ax retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4637 proc far ; sub_4B43+182p ... arg_0 = byte ptr 6 push bp mov bp, sp push si push di mov al, [bp+arg_0] xor cx, cx les bx, dword_E794 loc_4645: mov dx, es:[bx] or dx, dx jz short loc_4657 cmp al, dl jb short loc_4657 inc bx inc bx cmp al, dh ja short loc_4645 inc cx loc_4657: xchg ax, cx pop di pop si pop bp retf sub_4637 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_465C proc far var_4 = dword ptr -4 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp sub sp, 4 push si push di xor cx, cx mov dx, [bp+arg_2] mov ax, [bp+arg_0] mov word ptr [bp+var_4+2], dx mov word ptr [bp+var_4], ax loc_4672: les bx, [bp+var_4] cmp byte ptr es:[bx], 0 jnz short loc_467F xor cx, cx jmp short loc_46AD ; --------------------------------------------------------------------------- loc_467F: cmp cx, 1 jnz short loc_4689 mov cx, 2 jmp short loc_46A0 ; --------------------------------------------------------------------------- loc_4689: les bx, [bp+var_4] mov al, es:[bx] push ax push cs call near ptr sub_4637 pop cx or ax, ax jz short loc_469E mov cx, 1 jmp short loc_46A0 ; --------------------------------------------------------------------------- loc_469E: xor cx, cx loc_46A0: mov ax, word ptr [bp+var_4] cmp ax, [bp+arg_4] jnb short loc_46AD inc word ptr [bp+var_4] jmp short loc_4672 ; --------------------------------------------------------------------------- loc_46AD: or cx, cx jnz short loc_46B6 mov ax, 1 jmp short loc_46B8 ; --------------------------------------------------------------------------- loc_46B6: xor ax, ax loc_46B8: pop di pop si mov sp, bp pop bp retf sub_465C endp include libs/BorlandC/chmoda.asm include libs/BorlandC/fflush.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame ; int flushall(void) _flushall proc far ; _fflush+12p var_8 = word ptr -8 var_6 = word ptr -6 stream = dword ptr -4 push bp mov bp, sp sub sp, 8 push si push di mov [bp+var_8], 0 mov ax, __nfile mov [bp+var_6], ax mov word ptr [bp+stream+2], ds mov word ptr [bp+stream], 0B20h jmp short loc_47E9 ; --------------------------------------------------------------------------- loc_47CD: les bx, [bp+stream] test byte ptr es:[bx+2], 3 jz short loc_47E5 push word ptr [bp+stream+2] push bx ; stream nop call _fflush pop cx pop cx inc [bp+var_8] loc_47E5: add word ptr [bp+stream], 14h loc_47E9: mov ax, [bp+var_6] dec [bp+var_6] or ax, ax jnz short loc_47CD mov ax, [bp+var_8] pop di pop si mov sp, bp pop bp retf _flushall endp ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame sub_47FC proc near var_6 = dword ptr -6 var_2 = word ptr -2 arg_0 = dword ptr 4 push bp mov bp, sp sub sp, 6 push si push di les bx, [bp+arg_0] cmp word ptr es:[bx], 0 jge short loc_4819 mov cx, es:[bx+6] add cx, es:[bx] inc cx mov ax, cx jmp short loc_4826 ; --------------------------------------------------------------------------- loc_4819: les bx, [bp+arg_0] mov ax, es:[bx] cwd xor ax, dx sub ax, dx mov cx, ax loc_4826: mov [bp+var_2], ax les bx, [bp+arg_0] test byte ptr es:[bx+2], 40h jnz short loc_487A les bx, [bp+arg_0] mov dx, es:[bx+0Eh] mov ax, es:[bx+0Ch] mov word ptr [bp+var_6+2], dx mov word ptr [bp+var_6], ax cmp word ptr es:[bx], 0 jge short loc_4873 jmp short loc_485B ; --------------------------------------------------------------------------- loc_484C: dec word ptr [bp+var_6] les bx, [bp+var_6] cmp byte ptr es:[bx], 0Ah jnz short loc_485B inc [bp+var_2] loc_485B: mov ax, cx dec cx or ax, ax jnz short loc_484C jmp short loc_487A ; --------------------------------------------------------------------------- loc_4864: les bx, [bp+var_6] inc word ptr [bp+var_6] cmp byte ptr es:[bx], 0Ah jnz short loc_4873 inc [bp+var_2] loc_4873: mov ax, cx dec cx or ax, ax jnz short loc_4864 loc_487A: mov ax, [bp+var_2] pop di pop si mov sp, bp pop bp retn 4 sub_47FC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame ; int __cdecl fseek(FILE *stream, __int32 offset, int whence) _fseek proc far stream = dword ptr 6 _offset = dword ptr 0Ah whence = word ptr 0Eh push bp mov bp, sp push si push di push word ptr [bp+stream+2] push word ptr [bp+stream] ; stream nop call _fflush pop cx pop cx or ax, ax jz short loc_48A0 mov ax, 0FFFFh jmp short loc_4903 ; --------------------------------------------------------------------------- loc_48A0: cmp [bp+whence], 1 jnz short loc_48BD les bx, [bp+stream] cmp word ptr es:[bx], 0 jle short loc_48BD push word ptr [bp+stream+2] push bx call sub_47FC cwd sub word ptr [bp+_offset], ax sbb word ptr [bp+_offset+2], dx loc_48BD: les bx, [bp+stream] and word ptr es:[bx+2], 0FE5Fh mov word ptr es:[bx], 0 mov dx, es:[bx+0Ah] mov ax, es:[bx+8] mov es:[bx+0Eh], dx mov es:[bx+0Ch], ax push [bp+whence] ; fromwhere push word ptr [bp+_offset+2] push word ptr [bp+_offset] ; offset mov al, es:[bx+4] cbw push ax ; handle nop push cs call near ptr _lseek add sp, 8 cmp dx, 0FFFFh jnz short loc_4901 cmp ax, 0FFFFh jnz short loc_4901 mov ax, 0FFFFh jmp short loc_4903 ; --------------------------------------------------------------------------- loc_4901: xor ax, ax loc_4903: pop di pop si pop bp retf _fseek endp ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame ; __int32 __cdecl ftell(FILE *stream) _ftell proc far var_8 = word ptr -8 var_6 = word ptr -6 _offset = dword ptr -4 stream = dword ptr 6 push bp mov bp, sp sub sp, 8 push si push di mov ax, 1 push ax ; fromwhere xor ax, ax push ax push ax ; offset les bx, [bp+stream] mov al, es:[bx+4] cbw push ax ; handle nop push cs call near ptr _lseek add sp, 8 mov word ptr [bp+_offset+2], dx mov word ptr [bp+_offset], ax cmp dx, 0FFFFh jnz short loc_493B cmp ax, 0FFFFh jnz short loc_493B jmp loc_49DC ; --------------------------------------------------------------------------- loc_493B: les bx, [bp+stream] cmp word ptr es:[bx], 0 jl short loc_4947 jmp loc_49CC ; --------------------------------------------------------------------------- loc_4947: mov al, es:[bx+4] cbw add ax, ax mov bx, ax test byte ptr [bx+0CB3h], 8 jz short loc_49BA mov ax, 2 push ax ; fromwhere xor ax, ax push ax push ax ; offset mov bx, word ptr [bp+stream] mov al, es:[bx+4] cbw push ax ; handle nop push cs call near ptr _lseek add sp, 8 mov [bp+var_6], dx mov [bp+var_8], ax cmp dx, 0FFFFh jnz short loc_4982 cmp ax, 0FFFFh jnz short loc_4982 jmp short loc_49E2 ; --------------------------------------------------------------------------- loc_4982: xor ax, ax push ax ; fromwhere push word ptr [bp+_offset+2] push word ptr [bp+_offset] ; offset les bx, [bp+stream] mov al, es:[bx+4] cbw push ax ; handle nop push cs call near ptr _lseek add sp, 8 cmp dx, 0FFFFh jnz short loc_49AE cmp ax, 0FFFFh jnz short loc_49AE mov dx, 0FFFFh mov ax, 0FFFFh jmp short loc_49E2 ; --------------------------------------------------------------------------- loc_49AE: mov dx, [bp+var_6] mov ax, [bp+var_8] mov word ptr [bp+_offset+2], dx mov word ptr [bp+_offset], ax loc_49BA: push word ptr [bp+stream+2] push word ptr [bp+stream] call sub_47FC cwd add word ptr [bp+_offset], ax adc word ptr [bp+_offset+2], dx jmp short loc_49DC ; --------------------------------------------------------------------------- loc_49CC: push word ptr [bp+stream+2] push word ptr [bp+stream] call sub_47FC cwd sub word ptr [bp+_offset], ax sbb word ptr [bp+_offset+2], dx loc_49DC: mov dx, word ptr [bp+_offset+2] mov ax, word ptr [bp+_offset] loc_49E2: pop di pop si mov sp, bp pop bp retf _ftell endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_49E8 proc near arg_0 = word ptr 4 push bp mov bp, sp push si push di mov ax, [bp+arg_0] cmp ax, 5Ch ; '\' jz short loc_49FA cmp ax, 2Fh ; '/' jnz short loc_49FF loc_49FA: mov ax, 1 jmp short loc_4A01 ; --------------------------------------------------------------------------- loc_49FF: xor ax, ax loc_4A01: pop di pop si pop bp retn 2 sub_49E8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4A07 proc near arg_0 = dword ptr 4 arg_4 = word ptr 8 arg_6 = word ptr 0Ah push bp mov bp, sp push si push di les bx, [bp+arg_0] mov al, es:[bx] mov ah, 0 push ax call sub_49E8 or ax, ax jz short loc_4A39 push word ptr [bp+arg_0+2] push word ptr [bp+arg_0] push [bp+arg_6] push [bp+arg_4] nop push cs call near ptr sub_465C add sp, 8 or ax, ax jz short loc_4A39 mov ax, 1 jmp short loc_4A3B ; --------------------------------------------------------------------------- loc_4A39: xor ax, ax loc_4A3B: pop di pop si pop bp retn 8 sub_4A07 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4A41 proc far drive = word ptr -12h var_10 = word ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 s = dword ptr -4 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch push bp mov bp, sp sub sp, 12h push si push di mov ax, 0A1h ; '‘' push ax nop push cs call near ptr _malloc pop cx mov word ptr [bp+s+2], dx mov word ptr [bp+s], ax or ax, dx jnz short loc_4A60 jmp loc_4CA3 ; --------------------------------------------------------------------------- loc_4A60: mov dx, [bp+arg_6] mov ax, [bp+arg_4] mov word ptr [bp+var_C+2], dx mov word ptr [bp+var_C], ax les bx, [bp+var_C] mov al, es:[bx] cbw mov bx, ax test byte ptr [bx+0D51h], 0Ch jz short loc_4AA0 mov bx, word ptr [bp+var_C] cmp byte ptr es:[bx+1], 3Ah ; ':' jnz short loc_4AA0 mov al, es:[bx] cbw mov [bp+var_10], ax push ax ; ch nop push cs call near ptr _toupper pop cx add ax, 0FFC0h mov [bp+drive], ax add word ptr [bp+var_C], 2 jmp short loc_4AB6 ; --------------------------------------------------------------------------- loc_4AA0: push ss lea ax, [bp+drive] push ax ; drive nop call __dos_getdrive pop cx pop cx mov ax, [bp+drive] add ax, 41h ; 'A' dec ax mov [bp+var_10], ax loc_4AB6: les bx, [bp+var_C] mov al, es:[bx] cbw push ax call sub_49E8 or ax, ax jnz short loc_4B1E mov ax, 0A1h ; '‘' push ax ; len push word ptr [bp+s+2] push word ptr [bp+s] ; buf push [bp+drive] ; drive nopcall __getdcwd add sp, 8 or ax, dx jnz short loc_4AEE push word ptr [bp+s+2] push word ptr [bp+s] nop push cs call near ptr _farfree pop cx pop cx jmp loc_4CA3 ; --------------------------------------------------------------------------- loc_4AEE: push word ptr [bp+s+2] push word ptr [bp+s] ; s nop push cs call near ptr _strlen pop cx pop cx mov dx, word ptr [bp+s+2] add ax, word ptr [bp+s] mov word ptr [bp+var_8+2], dx mov word ptr [bp+var_8], ax push dx push word ptr [bp+s] dec ax push dx push ax call sub_4A07 or ax, ax jnz short loc_4B40 les bx, [bp+var_8] mov byte ptr es:[bx], 5Ch ; '\' jmp short loc_4B3D ; --------------------------------------------------------------------------- loc_4B1E: mov dx, word ptr [bp+s+2] mov ax, word ptr [bp+s] mov word ptr [bp+var_8+2], dx mov word ptr [bp+var_8], ax les bx, [bp+var_8] mov al, byte ptr [bp+var_10] mov es:[bx], al inc word ptr [bp+var_8] les bx, [bp+var_8] mov byte ptr es:[bx], 3Ah ; ':' loc_4B3D: inc word ptr [bp+var_8] loc_4B40: push word ptr [bp+var_C+2] sub_4A41 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4B43 proc far push word ptr [bp-0Ch] ; src push word ptr [bp-6] push word ptr [bp-8] ; dest nop push cs call near ptr _strcpy add sp, 8 mov dx, [bp-2] mov ax, [bp-4] mov [bp-6], dx mov [bp-8], ax mov [bp-0Ah], dx mov [bp-0Ch], ax loc_4B66: ; sub_4B43+196j ... les bx, [bp-0Ch] inc word ptr [bp-0Ch] mov al, es:[bx] cbw mov [bp-0Eh], ax or ax, ax jz short loc_4B82 push ax call sub_49E8 or ax, ax jnz short loc_4B82 jmp loc_4CB4 ; --------------------------------------------------------------------------- loc_4B82: les bx, [bp-8] cmp byte ptr es:[bx-1], 2Eh ; '.' jnz short loc_4BA9 push word ptr [bp-2] push word ptr [bp-4] mov ax, [bp-8] add ax, 0FFFEh push word ptr [bp-6] push ax call sub_4A07 or ax, ax jz short loc_4BA9 sub word ptr [bp-8], 2 jmp short loc_4C20 ; --------------------------------------------------------------------------- loc_4BA9: les bx, [bp-8] cmp byte ptr es:[bx-1], 2Eh ; '.' jnz short loc_4C20 cmp byte ptr es:[bx-2], 2Eh ; '.' jnz short loc_4C20 push word ptr [bp-2] push word ptr [bp-4] mov ax, [bp-8] add ax, 0FFFDh push word ptr [bp-6] push ax call sub_4A07 or ax, ax jz short loc_4C20 sub word ptr [bp-8], 3 les bx, [bp-8] cmp byte ptr es:[bx-1], 3Ah ; ':' jnz short loc_4C09 mov ax, [bp-8] dec ax push word ptr [bp-6] push ax push word ptr [bp-2] push word ptr [bp-4] nop push cs call near ptr sub_465C add sp, 8 or ax, ax jz short loc_4C09 push word ptr [bp-2] push word ptr [bp-4] nop push cs call near ptr _farfree pop cx pop cx jmp loc_4CA3 ; --------------------------------------------------------------------------- loc_4C09: push word ptr [bp-2] push word ptr [bp-4] dec word ptr [bp-8] mov ax, [bp-8] push word ptr [bp-6] push ax call sub_4A07 or ax, ax jz short loc_4C09 loc_4C20: cmp word ptr [bp-0Eh], 0 jz short loc_4C29 jmp loc_4CA9 ; --------------------------------------------------------------------------- loc_4C29: push word ptr [bp-2] push word ptr [bp-4] mov ax, [bp-8] dec ax push word ptr [bp-6] push ax call sub_4A07 or ax, ax jz short loc_4C41 dec word ptr [bp-8] loc_4C41: les bx, [bp-8] cmp byte ptr es:[bx-1], 3Ah ; ':' jnz short loc_4C6F mov ax, [bp-8] dec ax push word ptr [bp-6] push ax push word ptr [bp-2] push word ptr [bp-4] nop push cs call near ptr sub_465C add sp, 8 or ax, ax jz short loc_4C6F les bx, [bp-8] mov byte ptr es:[bx], 5Ch ; '\' inc word ptr [bp-8] loc_4C6F: ; sub_4B43+120j les bx, [bp-8] mov byte ptr es:[bx], 0 push word ptr [bp-2] push word ptr [bp-4] ; s nop push cs call near ptr _strlen pop cx pop cx inc ax mov dx, ax mov ax, [bp+6] or ax, [bp+8] jnz short loc_4C91 jmp loc_4D15 ; --------------------------------------------------------------------------- loc_4C91: cmp dx, [bp+0Eh] jbe short loc_4CEE push word ptr [bp-2] push word ptr [bp-4] nop push cs call near ptr _farfree pop cx pop cx loc_4CA3: xor dx, dx xor ax, ax jmp short loc_4D24 ; --------------------------------------------------------------------------- loc_4CA9: les bx, [bp-8] mov al, [bp-0Eh] mov es:[bx], al jmp short loc_4CE8 ; --------------------------------------------------------------------------- loc_4CB4: les bx, [bp-8] mov al, [bp-0Eh] mov es:[bx], al inc word ptr [bp-8] push word ptr [bp-0Eh] nop push cs call near ptr sub_4637 pop cx or ax, ax jnz short loc_4CD0 jmp loc_4B66 ; --------------------------------------------------------------------------- loc_4CD0: les bx, [bp-0Ch] cmp byte ptr es:[bx], 0 jnz short loc_4CDC jmp loc_4B66 ; --------------------------------------------------------------------------- loc_4CDC: mov al, es:[bx] les bx, [bp-8] mov es:[bx], al inc word ptr [bp-0Ch] loc_4CE8: inc word ptr [bp-8] jmp loc_4B66 ; --------------------------------------------------------------------------- loc_4CEE: push word ptr [bp-2] push word ptr [bp-4] ; src push word ptr [bp+8] push word ptr [bp+6] ; dest nop push cs call near ptr _strcpy push word ptr [bp-2] push word ptr [bp-4] nop push cs call near ptr _farfree add sp, 0Ch mov dx, [bp+8] mov ax, [bp+6] jmp short loc_4D24 ; --------------------------------------------------------------------------- loc_4D15: push dx push word ptr [bp-2] push word ptr [bp-4] nop push cs call near ptr _realloc add sp, 6 loc_4D24: ; sub_4B43+1D0j pop di pop si mov sp, bp pop bp retf sub_4B43 endp ; sp-analysis failed include libs/BorlandC/getdcwd.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame ; char *__cdecl getenv(const char *name) _getenv proc far ; sub_96AE+126p var_4 = dword ptr -4 _name = dword ptr 6 push bp mov bp, sp sub sp, 4 push si push di les di, [bp+_name] mov ax, es or ax, di jz short loc_4DF8 mov al, 0 mov ah, es:[di] mov cx, 0FFFFh cld repne scasb not cx dec cx jz short loc_4DF8 les di, environ@ mov word ptr [bp+var_4+2], es mov bx, es or bx, di mov word ptr [bp+var_4], di jnz short loc_4E05 loc_4DF8: xor dx, dx xor ax, ax jmp short loc_4E31 ; --------------------------------------------------------------------------- loc_4DFE: add word ptr [bp+var_4], 4 les di, [bp+var_4] loc_4E05: les di, es:[di] mov bx, es or bx, di jz short loc_4DF8 mov al, es:[di] or al, al jz short loc_4DF8 cmp ah, al jnz short loc_4DFE mov bx, cx cmp byte ptr es:[bx+di], 3Dh ; '=' jnz short loc_4DFE push ds lds si, [bp+_name] repe cmpsb pop ds xchg cx, bx jnz short loc_4DFE inc di mov ax, di mov dx, es loc_4E31: pop di pop si mov sp, bp pop bp retf _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame ; void __cdecl _searchenv(const char *file, const char *varname, char *pathname) __searchenv proc far var_4 = dword ptr -4 src = dword ptr 6 varname = dword ptr 0Ah pathname = dword ptr 0Eh push bp mov bp, sp sub sp, 4 push si push di push word ptr [bp+varname+2] push word ptr [bp+varname] ; name nop push cs call near ptr _getenv pop cx pop cx mov word ptr [bp+var_4+2], dx mov word ptr [bp+var_4], ax or ax, dx jnz short loc_4F69 mov word ptr [bp+var_4+2], ds mov word ptr [bp+var_4], 0FB4h loc_4F69: push word ptr [bp+pathname+2] push word ptr [bp+pathname] ; pathname push word ptr [bp+var_4+2] push word ptr [bp+var_4] ; __int32 push word ptr [bp+src+2] push word ptr [bp+src] ; src nop push cs call near ptr sub_4F89 add sp, 0Ch pop di pop si mov sp, bp pop bp retf __searchenv endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl __far sub_4F89(char *src, __int32, char *pathname) sub_4F89 proc far var_4 = word ptr -4 var_2 = word ptr -2 src = dword ptr 6 arg_4 = dword ptr 0Ah pathname = dword ptr 0Eh push bp mov bp, sp sub sp, 4 push si push di mov ax, 50h ; 'P' push ax ; len push word ptr [bp+pathname+2] push word ptr [bp+pathname] ; buf xor ax, ax push ax ; drive nopcall __getdcwd add sp, 8 or ax, dx jnz short loc_4FAE xor dx, dx jmp short loc_4FBD ; --------------------------------------------------------------------------- loc_4FAE: push word ptr [bp+pathname+2] push word ptr [bp+pathname] ; s nop push cs call near ptr _strlen pop cx pop cx mov dx, ax loc_4FBD: les bx, [bp+pathname] add bx, dx mov byte ptr es:[bx], 0 or dx, dx jz short loc_5012 mov bx, dx add bx, word ptr [bp+pathname] mov bl, es:[bx-1] mov al, bl cmp al, 5Ch ; '\' jz short loc_4FE3 cmp bl, 2Fh ; '/' jz short loc_4FE3 cmp bl, 3Ah ; ':' jnz short loc_4FFF loc_4FE3: mov ax, word ptr [bp+pathname] add ax, dx dec ax push word ptr [bp+pathname+2] push ax push word ptr [bp+pathname+2] push word ptr [bp+pathname] nop push cs call near ptr sub_465C add sp, 8 or ax, ax jnz short loc_5012 loc_4FFF: push ds mov ax, 0FB6h push ax ; src push word ptr [bp+pathname+2] push word ptr [bp+pathname] ; dest nop push cs call near ptr _strcat add sp, 8 loc_5012: push word ptr [bp+src+2] push word ptr [bp+src] ; src push word ptr [bp+pathname+2] push word ptr [bp+pathname] ; dest nop push cs call near ptr _strcat add sp, 8 xor ax, ax push ax ; char push word ptr [bp+pathname+2] push word ptr [bp+pathname] ; pathname nop push cs call near ptr __access add sp, 6 or ax, ax jz short loc_5086 les bx, [bp+arg_4] cmp byte ptr es:[bx], 0 jnz short loc_504D les bx, [bp+pathname] mov byte ptr es:[bx], 0 jmp short loc_50C5 ; --------------------------------------------------------------------------- loc_504D: xor dx, dx jmp short loc_5065 ; --------------------------------------------------------------------------- loc_5051: les bx, [bp+pathname] add bx, dx push es les si, [bp+arg_4] mov al, es:[si] pop es mov es:[bx], al inc word ptr [bp+arg_4] inc dx loc_5065: les bx, [bp+arg_4] cmp byte ptr es:[bx], 3Bh ; ';' jz short loc_5074 cmp byte ptr es:[bx], 0 jnz short loc_5051 loc_5074: les bx, [bp+arg_4] cmp byte ptr es:[bx], 0 jnz short loc_5080 jmp loc_4FBD ; --------------------------------------------------------------------------- loc_5080: inc word ptr [bp+arg_4] jmp loc_4FBD ; --------------------------------------------------------------------------- loc_5086: mov ax, 50h ; 'P' push ax push word ptr [bp+pathname+2] push word ptr [bp+pathname] xor ax, ax push ax push ax nop push cs call near ptr sub_4A41 add sp, 0Ah mov [bp+var_2], dx mov [bp+var_4], ax or ax, dx jz short loc_50C5 push [bp+var_2] push [bp+var_4] ; src push word ptr [bp+pathname+2] push word ptr [bp+pathname] ; dest nop push cs call near ptr _strcpy push [bp+var_2] push [bp+var_4] nop push cs call near ptr _farfree add sp, 0Ch loc_50C5: ; sub_4F89+11Bj pop di pop si mov sp, bp pop bp retf sub_4F89 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame ; int __cdecl setvbuf(FILE *stream, char *buf, int type, size_t size) _setvbuf proc far stream = dword ptr 6 buf = dword ptr 0Ah _type = word ptr 0Eh _size = word ptr 10h push bp mov bp, sp push si push di les bx, [bp+stream] mov ax, es:[bx+12h] cmp ax, word ptr [bp+stream] jz short loc_50DF jmp loc_51B6 ; --------------------------------------------------------------------------- loc_50DF: cmp [bp+_type], 2 jle short loc_50E8 jmp loc_51B6 ; --------------------------------------------------------------------------- loc_50E8: cmp [bp+_size], 7FFFh jbe short loc_50F2 jmp loc_51B6 ; --------------------------------------------------------------------------- loc_50F2: cmp word_E7AA, 0 jnz short loc_5108 cmp word ptr [bp+stream], 0B34h jnz short loc_5108 mov word_E7AA, 1 jmp short loc_511C ; --------------------------------------------------------------------------- loc_5108: cmp word_E7A8, 0 jnz short loc_511C cmp word ptr [bp+stream], 0B20h jnz short loc_511C mov word_E7A8, 1 loc_511C: les bx, [bp+stream] cmp word ptr es:[bx], 0 jz short loc_5139 mov ax, 1 push ax ; whence xor ax, ax push ax push ax ; offset push word ptr [bp+stream+2] push bx ; stream nop push cs call near ptr _fseek add sp, 0Ah loc_5139: les bx, [bp+stream] test byte ptr es:[bx+2], 4 jz short loc_5152 push word ptr es:[bx+0Ah] push word ptr es:[bx+8] nop push cs call near ptr _farfree pop cx pop cx loc_5152: les bx, [bp+stream] and word ptr es:[bx+2], 0FFF3h mov word ptr es:[bx+6], 0 mov dx, word ptr [bp+stream+2] mov ax, word ptr [bp+stream] add ax, 5 mov es:[bx+0Ah], dx mov es:[bx+8], ax mov es:[bx+0Eh], dx mov es:[bx+0Ch], ax cmp [bp+_type], 2 jz short loc_51E6 cmp [bp+_size], 0 jbe short loc_51E6 mov word ptr _exitbuf+2, seg seg000 mov word ptr _exitbuf, 54F4h mov ax, word ptr [bp+buf] or ax, word ptr [bp+buf+2] jnz short loc_51BB push [bp+_size] nop push cs call near ptr _malloc pop cx mov word ptr [bp+buf+2], dx mov word ptr [bp+buf], ax or ax, dx jz short loc_51B6 les bx, [bp+stream] or word ptr es:[bx+2], 4 jmp short loc_51BB ; --------------------------------------------------------------------------- loc_51B6: mov ax, 0FFFFh jmp short loc_51E8 ; --------------------------------------------------------------------------- loc_51BB: les bx, [bp+stream] mov dx, word ptr [bp+buf+2] mov ax, word ptr [bp+buf] mov es:[bx+0Eh], dx mov es:[bx+0Ch], ax mov es:[bx+0Ah], dx mov es:[bx+8], ax mov ax, [bp+_size] mov es:[bx+6], ax cmp [bp+_type], 1 jnz short loc_51E6 or word ptr es:[bx+2], 8 loc_51E6: xor ax, ax loc_51E8: pop di pop si pop bp retf _setvbuf endp include libs/BorlandC/_strcat.asm include libs/BorlandC/_strcmp.asm include libs/BorlandC/_strcpy.asm include libs/BorlandC/_stricmp.asm include libs/BorlandC/_strlen.asm include libs/BorlandC/strrchr.asm include libs/BorlandC/write.asm include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame ; int __stdcall _DOSCMD(int, int, char *s, int, int) __DOSCMD proc near dest = dword ptr -0Eh var_A = dword ptr -0Ah var_6 = dword ptr -6 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 s = dword ptr 8 arg_8 = word ptr 0Ch arg_A = word ptr 0Eh push bp mov bp, sp sub sp, 0Eh push si push di mov [bp+var_2], 3 mov ax, word ptr [bp+s] or ax, word ptr [bp+s+2] jz short loc_8C66 push word ptr [bp+s+2] push word ptr [bp+s] ; s nop push cs call near ptr _strlen pop cx pop cx add ax, [bp+var_2] inc ax mov [bp+var_2], ax loc_8C66: mov dx, [bp+arg_2] mov ax, [bp+arg_0] mov word ptr [bp+var_6+2], dx mov word ptr [bp+var_6], ax jmp short loc_8C90 ; --------------------------------------------------------------------------- loc_8C74: les bx, [bp+var_6] push word ptr es:[bx+2] push word ptr es:[bx] ; s nop push cs call near ptr _strlen pop cx pop cx add ax, [bp+var_2] inc ax mov [bp+var_2], ax add word ptr [bp+var_6], 4 loc_8C90: les bx, [bp+var_6] mov ax, es:[bx] or ax, es:[bx+2] jnz short loc_8C74 push [bp+var_2] nop push cs call near ptr _malloc pop cx mov word ptr [bp+var_A+2], dx mov word ptr [bp+var_A], ax or ax, dx jnz short loc_8CB6 xor dx, dx xor ax, ax jmp loc_8D6C ; --------------------------------------------------------------------------- loc_8CB6: mov dx, word ptr [bp+var_A+2] mov ax, word ptr [bp+var_A] inc ax mov word ptr [bp+dest+2], dx mov word ptr [bp+dest], ax les bx, [bp+dest] mov byte ptr es:[bx], 20h ; ' ' inc word ptr [bp+dest] mov ax, word ptr [bp+s] or ax, word ptr [bp+s+2] jz short loc_8CF9 push word ptr [bp+s+2] push word ptr [bp+s] ; src push word ptr [bp+dest+2] push word ptr [bp+dest] ; dest nop call _stpcpy add sp, 8 mov word ptr [bp+dest+2], dx mov word ptr [bp+dest], ax les bx, [bp+dest] mov byte ptr es:[bx], 20h ; ' ' inc word ptr [bp+dest] loc_8CF9: mov ax, [bp+arg_8] or ax, [bp+arg_A] jz short loc_8D47 mov dx, [bp+arg_2] mov ax, [bp+arg_0] mov word ptr [bp+var_6+2], dx mov word ptr [bp+var_6], ax jmp short loc_8D3B ; --------------------------------------------------------------------------- loc_8D0F: les bx, [bp+var_6] push word ptr es:[bx+2] push word ptr es:[bx] ; src push word ptr [bp+dest+2] push word ptr [bp+dest] ; dest nop call _stpcpy add sp, 8 mov word ptr [bp+dest+2], dx mov word ptr [bp+dest], ax les bx, [bp+dest] mov byte ptr es:[bx], 20h ; ' ' inc word ptr [bp+dest] add word ptr [bp+var_6], 4 loc_8D3B: les bx, [bp+var_6] mov ax, es:[bx] or ax, es:[bx+2] jnz short loc_8D0F loc_8D47: les bx, [bp+dest] mov byte ptr es:[bx-1], 0Dh mov byte ptr es:[bx], 0 mov ax, word ptr [bp+dest] xor dx, dx sub ax, word ptr [bp+var_A] sbb dx, 0 add al, 0FEh ; 'ώ' les bx, [bp+var_A] mov es:[bx], al mov dx, word ptr [bp+var_A+2] mov ax, word ptr [bp+var_A] loc_8D6C: pop di pop si mov sp, bp pop bp retn 0Ch __DOSCMD endp include libs/BorlandC/exec.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame ; int execl(char *path, char *arg0, ...) _execl proc far ; sub_9BDF+160P ... s = dword ptr 6 arg0 = word ptr 0Ah push bp mov bp, sp push si push di xor ax, ax push ax ; int push ax ; int push ax ; int push ss ; int lea ax, [bp+arg0] push ax ; int push word ptr [bp+s+2] push word ptr [bp+s] ; s mov ax, 8EDBh push ax ; int call sub_96AE add sp, 10h pop di pop si pop bp retf _execl endp ; =============== S U B R O U T I N E ======================================= ; Attributes: library function bp-based frame ; int __cdecl setblock(unsigned int __psp, unsigned int newsize) _setblock proc far ___psp = word ptr 6 newsize = word ptr 8 push bp mov bp, sp push si push di mov ah, 4Ah ; 'J' mov bx, [bp+newsize] mov es, [bp+___psp] int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK) ; ES = segment address of block to change ; BX = new size in paragraphs jb short loc_9152 mov ax, 0FFFFh jmp short loc_9158 ; --------------------------------------------------------------------------- loc_9152: push bx push ax call __IOERROR pop ax loc_9158: pop di pop si pop bp retf _setblock endp include libs/BorlandC/setenvp.asm include libs/BorlandC/ctor2.asm include libs/BorlandC/ctor3.asm include libs/BorlandC/strings.asm ; =============== S U B R O U T I N E ======================================= sub_952E proc far push si push di cmp _cFlag, 0 jz short loc_9541 mov _cFlag, 0 mov al, _cChar jmp short loc_9546 ; --------------------------------------------------------------------------- loc_9541: mov ax, 700h int 21h ; DOS - DIRECT STDIN INPUT, NO ECHO loc_9546: mov ah, 0 pop di pop si retf sub_952E endp include libs/BorlandC/kbhit.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9561 proc far arg_0 = word ptr 6 push bp mov bp, sp push si push di mov ax, [bp+arg_0] cmp ah, 81h ; '' jb short loc_959B cmp ah, 0A0h ; ' ' jb short loc_957D cmp ah, 0E0h ; 'ΰ' jb short loc_959B cmp ah, 0F0h ; 'π' jnb short loc_959B loc_957D: cmp al, 40h ; '@' jb short loc_959B cmp al, 0FDh ; 'ύ' jnb short loc_959B cmp al, 7Fh ; '' jz short loc_959B cmp al, 80h ; '€' adc al, 61h ; 'a' jb short loc_9591 sub al, 0A2h ; '’' loc_9591: rcl ah, 1 and ah, 7Fh add ax, 1F21h jmp short loc_959D ; --------------------------------------------------------------------------- loc_959B: xor ax, ax loc_959D: pop di pop si pop bp retf sub_9561 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_95A1 proc far var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch push bp mov bp, sp sub sp, 8 push si push di mov dx, [bp+arg_2] mov ax, [bp+arg_0] mov word ptr [bp+var_4+2], dx mov word ptr [bp+var_4], ax jmp short loc_9612 ; --------------------------------------------------------------------------- loc_95B7: les bx, [bp+var_4] mov al, es:[bx] push ax nop push cs call near ptr sub_4637 pop cx or ax, ax jz short loc_95D6 inc word ptr [bp+var_4] les bx, [bp+var_4] cmp byte ptr es:[bx], 0 jnz short loc_960F jmp short loc_961B ; --------------------------------------------------------------------------- loc_95D6: mov dx, [bp+arg_6] mov ax, [bp+arg_4] mov word ptr [bp+var_8+2], dx mov word ptr [bp+var_8], ax jmp short loc_95F5 ; --------------------------------------------------------------------------- loc_95E4: les bx, [bp+var_4] mov al, es:[bx] les bx, [bp+var_8] cmp al, es:[bx] jz short loc_95FE inc word ptr [bp+var_8] loc_95F5: les bx, [bp+var_8] cmp byte ptr es:[bx], 0 jnz short loc_95E4 loc_95FE: les bx, [bp+var_8] cmp byte ptr es:[bx], 0 jz short loc_960F mov dx, word ptr [bp+var_4+2] mov ax, word ptr [bp+var_4] jmp short loc_961F ; --------------------------------------------------------------------------- loc_960F: inc word ptr [bp+var_4] loc_9612: les bx, [bp+var_4] cmp byte ptr es:[bx], 0 jnz short loc_95B7 loc_961B: xor dx, dx xor ax, ax loc_961F: pop di pop si mov sp, bp pop bp retf sub_95A1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl __far sub_9625(int, int, char *pathname, char *src, int) sub_9625 proc far dest = byte ptr -50h arg_0 = word ptr 6 arg_2 = word ptr 8 pathname = dword ptr 0Ah src = dword ptr 0Eh arg_C = word ptr 12h push bp mov bp, sp sub sp, 50h push si push di push [bp+arg_2] push [bp+arg_0] ; src push ss lea ax, [bp+dest] push ax ; dest nop push cs call near ptr _strcpy push word ptr [bp+src+2] push word ptr [bp+src] ; src push ss lea ax, [bp+dest] push ax ; dest nop push cs call near ptr _strcat add sp, 10h cmp [bp+arg_C], 0 jz short loc_9679 push word ptr [bp+pathname+2] push word ptr [bp+pathname] ; pathname push ds mov ax, 113Eh push ax ; varname push ss lea ax, [bp+dest] push ax ; file nop push cs call near ptr __searchenv add sp, 0Ch les bx, [bp+pathname] cmp byte ptr es:[bx], 0 jz short loc_96A6 jmp short loc_96A1 ; --------------------------------------------------------------------------- loc_9679: push ss lea ax, [bp+dest] push ax ; src push word ptr [bp+pathname+2] push word ptr [bp+pathname] ; dest nop push cs call near ptr _strcpy add sp, 8 mov ax, 4 push ax ; char push ss lea ax, [bp+dest] push ax ; pathname nop push cs call near ptr __access add sp, 6 or ax, ax jnz short loc_96A6 loc_96A1: mov ax, 1 jmp short loc_96A8 ; --------------------------------------------------------------------------- loc_96A6: xor ax, ax loc_96A8: pop di pop si mov sp, bp pop bp retf sub_9625 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_96AE(int, char *s, int, int, int, int, int) sub_96AE proc near pathname = word ptr -9Ch var_1A = word ptr -1Ah var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h s1 = dword ptr -10h var_C = word ptr -0Ch var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 s = dword ptr 6 arg_6 = word ptr 0Ah arg_8 = word ptr 0Ch arg_A = word ptr 0Eh arg_C = word ptr 10h arg_E = word ptr 12h push bp mov bp, sp sub sp, 9Ch push si push di les bx, [bp+s] mov al, es:[bx] cbw mov dx, ax cmp ax, 61h ; 'a' jb short loc_96C8 sub dx, 20h ; ' ' loc_96C8: cmp dx, 41h ; 'A' jb short loc_96DC cmp dx, 5Ah ; 'Z' ja short loc_96DC les bx, [bp+s] cmp byte ptr es:[bx+1], 3Ah ; ':' jz short loc_96F2 loc_96DC: push ds mov ax, 1143h push ax push word ptr [bp+s+2] push word ptr [bp+s] push cs call near ptr sub_95A1 add sp, 8 or ax, dx jz short loc_96F7 loc_96F2: mov [bp+arg_E], 0 loc_96F7: mov [bp+var_1A], 0 mov ax, 2Eh ; '.' push ax ; char push word ptr [bp+s+2] push word ptr [bp+s] ; s nop push cs call near ptr strrchr add sp, 6 mov word ptr [bp+s1+2], dx mov word ptr [bp+s1], ax or ax, dx jz short loc_9756 push [bp+arg_E] ; int push ds mov ax, 1146h push ax ; src push ss lea ax, [bp+pathname] push ax ; pathname push word ptr [bp+s+2] ; int push word ptr [bp+s] ; int push cs call near ptr sub_9625 add sp, 0Eh mov [bp+var_18], ax or ax, ax jnz short loc_973D jmp loc_97C1 ; --------------------------------------------------------------------------- loc_973D: push ds mov ax, 1147h push ax ; s2 push word ptr [bp+s1+2] push word ptr [bp+s1] ; s1 nop push cs call near ptr _stricmp add sp, 8 or ax, ax jnz short loc_97C1 jmp short loc_97BC ; --------------------------------------------------------------------------- loc_9756: push [bp+arg_E] ; int push ds mov ax, 114Ch push ax ; src push ss lea ax, [bp+pathname] push ax ; pathname push word ptr [bp+s+2] ; int push word ptr [bp+s] ; int push cs call near ptr sub_9625 add sp, 0Eh mov [bp+var_18], ax or ax, ax jnz short loc_97C1 push [bp+arg_E] ; int push ds mov ax, 1151h push ax ; src push ss lea ax, [bp+pathname] push ax ; pathname push word ptr [bp+s+2] ; int push word ptr [bp+s] ; int push cs call near ptr sub_9625 add sp, 0Eh mov [bp+var_18], ax or ax, ax jnz short loc_97C1 push [bp+arg_E] ; int push ds mov ax, 1156h push ax ; src push ss lea ax, [bp+pathname] push ax ; pathname push word ptr [bp+s+2] ; int push word ptr [bp+s] ; int push cs call near ptr sub_9625 add sp, 0Eh mov [bp+var_18], ax or ax, ax jz short loc_97C1 loc_97BC: mov [bp+var_1A], 1 loc_97C1: cmp [bp+var_18], 0 jz short loc_97E3 cmp [bp+var_1A], 0 jz short loc_97EC push ds mov ax, 115Bh push ax ; name nop push cs call near ptr _getenv pop cx pop cx mov [bp+var_2], dx mov [bp+var_4], ax or ax, dx jnz short loc_97EC loc_97E3: mov _errno, 2 jmp loc_98B2 ; --------------------------------------------------------------------------- loc_97EC: ; sub_96AE+133j cmp [bp+var_1A], 0 jz short loc_9805 push [bp+var_2] push [bp+var_4] push ds mov ax, offset aC ; "/c" push ax push [bp+arg_8] push [bp+arg_6] jmp short loc_9819 ; --------------------------------------------------------------------------- loc_9805: push ss ; int lea ax, [bp+pathname] push ax ; int xor ax, ax push ax push ax ; s mov ax, [bp+arg_6] add ax, 4 push [bp+arg_8] ; int push ax ; int loc_9819: call __DOSCMD mov [bp+var_6], dx mov [bp+var_8], ax mov ax, [bp+var_8] or ax, [bp+var_6] jnz short loc_9833 mov _errno, 8 ; Hack (jmp loc_98B2) db 0e9h, 07fh, 000h ; --------------------------------------------------------------------------- loc_9833: mov ax, [bp+var_8] inc ax push [bp+var_6] push ax ; s nop push cs call near ptr _strlen pop cx pop cx cmp ax, 80h ; '€' jb short loc_985C mov _errno, 14h push [bp+var_6] push [bp+var_8] nop push cs call near ptr _farfree pop cx pop cx jmp short loc_98B2 ; --------------------------------------------------------------------------- loc_985C: mov ax, [bp+arg_A] or ax, [bp+arg_C] jnz short loc_9871 mov dx, word ptr environ@+2 mov ax, word ptr environ@ mov [bp+arg_C], dx mov [bp+arg_A], ax loc_9871: push [bp+arg_C] ; int push [bp+arg_A] ; int cmp [bp+var_1A], 0 jz short loc_9885 mov dx, [bp+var_2] mov ax, [bp+var_4] jmp short loc_988B ; --------------------------------------------------------------------------- loc_9885: mov dx, ss lea ax, [bp+pathname] loc_988B: push dx push ax ; s push ss lea ax, [bp+var_14] push ax ; __int32 call __DOSENV mov [bp+var_A], dx mov [bp+var_C], ax or ax, dx jnz short loc_98B7 mov _errno, 8 push [bp+var_6] push [bp+var_8] nop push cs call near ptr _farfree pop cx pop cx loc_98B2: ; sub_96AE+182j ... mov ax, 0FFFFh jmp short loc_9902 ; --------------------------------------------------------------------------- loc_98B7: call _exitbuf push [bp+var_A] push [bp+var_C] push [bp+var_6] push [bp+var_8] cmp [bp+var_1A], 0 jz short loc_98D5 mov dx, [bp+var_2] mov ax, [bp+var_4] jmp short loc_98DB ; --------------------------------------------------------------------------- loc_98D5: mov dx, ss lea ax, [bp+pathname] loc_98DB: push dx push ax call [bp+arg_0] add sp, 0Ch mov [bp+var_16], ax push word ptr [bp+var_14+2] push word ptr [bp+var_14] nop push cs call near ptr _farfree push [bp+var_6] push [bp+var_8] nop push cs call near ptr _farfree add sp, 8 mov ax, [bp+var_16] loc_9902: pop di pop si mov sp, bp pop bp retn sub_96AE endp seg000 ends ; =========================================================================== ; Segment type: Pure code seg001 segment byte public 'CODE' use16 assume cs:seg001 ;org 8 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9908 proc near var_A = word ptr -0Ah var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_3 = word ptr -3 enter 0Ah, 0 push ds push offset aYume_cfg ; "YUME.CFG" call file_ropen push ss lea ax, [bp+var_8] push ax push 8 call file_read call file_close mov ax, [bp+var_3] mov [bp+var_A], ax mov word ptr dword_FC54+2, ax mov word ptr dword_FC54, 0 les bx, dword_FC54 mov al, [bp+var_8] mov es:[bx+15h], al call sub_BEFA mov byte_D880, 0 cmp byte_DDCC, 0 jnz short loc_9961 les bx, dword_FC54 mov byte ptr es:[bx+15h], 0 mov byte_D880, 1 jmp short loc_996C ; --------------------------------------------------------------------------- loc_9961: cmp [bp+var_8], 0 jnz short loc_996C mov byte_DDCC, 0 loc_996C: les bx, dword_FC54 mov al, [bp+var_7] mov es:[bx+16h], al mov al, [bp+var_6] mov es:[bx+0Bh], al leave retn sub_9908 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9980 proc near ; sub_9BDF+140p ... var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 enter 8, 0 push ds push offset aYume_cfg ; "YUME.CFG" call file_append push large 0 push 0 call file_seek les bx, dword_FC54 mov al, es:[bx+15h] mov [bp+var_8], al mov al, es:[bx+16h] mov [bp+var_7], al mov al, es:[bx+0Bh] mov [bp+var_6], al push ss lea ax, [bp+var_8] push ax push 4 call file_write call file_close leave retn sub_9980 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_99C3 proc near var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 enter 8, 0 lea ax, [bp+var_8] push ss push ax push ds push offset unk_D881 mov cx, 8 call SCOPY@ push ds push offset aYume_cfg ; "YUME.CFG" call file_append push large 0 push 0 call file_seek les bx, dword_FC54 mov al, es:[bx+15h] mov [bp+var_8], al mov al, es:[bx+16h] mov [bp+var_7], al mov al, es:[bx+0Bh] mov [bp+var_6], al push ss lea ax, [bp+var_8] push ax push 8 call file_write call file_close leave retn sub_99C3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A17 proc near var_4 = word ptr -4 var_2 = word ptr -2 enter 4, 0 push si les bx, dword_FC54 mov byte ptr es:[bx+39h], 0 mov byte ptr es:[bx+17h], 0 mov byte ptr es:[bx+33h], 0 mov byte ptr es:[bx+0Eh], 0 mov byte ptr es:[bx+0Fh], 1 mov byte ptr es:[bx+28h], 1 mov byte ptr es:[bx+34h], 2 mov byte ptr es:[bx+35h], 0 mov byte ptr es:[bx+0Dh], 0FFh call sub_BD9A or al, al jz short loc_9A59 mov al, 1 jmp loc_9B9A ; --------------------------------------------------------------------------- loc_9A59: ; sub_9A17+11Dj les bx, dword_FC54 mov al, es:[bx+0Ch] mov ah, 0 dec ax cwd sub ax, dx mov bx, ax sar bx, 1 mov al, [bx+0A0h] mov ah, 0 mov [bp+var_4], ax mov bx, word ptr dword_FC54 mov eax, es:[bx+10h] mov random_seed, eax xor si, si jmp short loc_9ADB ; --------------------------------------------------------------------------- loc_9A85: call IRand mov bx, 7 cwd idiv bx mov [bp+var_2], dx mov bx, [bp+var_2] cmp byte ptr [bx+99h], 0 jnz short loc_9A85 mov ax, [bp+var_4] cmp ax, [bp+var_2] jz short loc_9A85 mov byte ptr [bx+99h], 1 mov ax, [bp+var_2] add ax, ax inc ax mov [bp+var_2], ax les bx, dword_FC54 add bx, si mov al, byte ptr [bp+var_2] mov es:[bx+29h], al mov bx, word ptr dword_FC54 mov al, es:[bx+0Ch] mov ah, 0 cmp ax, [bp+var_2] jnz short loc_9ADA add bx, si mov al, byte ptr [bp+var_2] inc al mov es:[bx+29h], al loc_9ADA: inc si loc_9ADB: cmp si, 6 jl short loc_9A85 les bx, dword_FC54 mov al, es:[bx+29h] mov es:[bx+0Dh], al mov al, byte ptr [bp+var_4] add al, al inc al mov es:[bx+2Fh], al mov byte ptr es:[bx+30h], 0Fh cmp byte ptr es:[bx+0Ch], 0Fh jnz short loc_9B07 inc byte ptr es:[bx+30h] loc_9B07: les bx, dword_FC54 mov byte ptr es:[bx+31h], 11h cmp byte ptr es:[bx+0Ch], 11h jnz short loc_9B1B inc byte ptr es:[bx+31h] loc_9B1B: xor si, si jmp short loc_9B39 ; --------------------------------------------------------------------------- loc_9B1F: les bx, dword_FC54 add bx, si mov al, es:[bx+29h] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 cmp ax, 9 jge loc_9A59 inc si loc_9B39: cmp si, 9 jl short loc_9B1F xor si, si jmp short loc_9B4E ; --------------------------------------------------------------------------- loc_9B42: les bx, dword_FC54 add bx, si mov byte ptr es:[bx+18h], 0 inc si loc_9B4E: cmp si, 10h jl short loc_9B42 les bx, dword_FC54 mov byte ptr es:[bx+36h], 3 mov byte ptr es:[bx+37h], 0 mov al, es:[bx+0Bh] mov ah, 0 imul ax, 19h add al, 46h ; 'F' mov es:[bx+38h], al call sub_9980 call gaiji_restore push 100h call sub_C403 call sub_BFC2 push large 0 push ds push offset path ; "mainl" push ds push offset path ; "mainl" call _execl add sp, 0Ch mov al, 0 loc_9B9A: pop si leave retn sub_9A17 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B9D proc near arg_0 = word ptr 4 arg_2 = word ptr 6 push bp mov bp, sp push si push di mov di, [bp+arg_2] mov si, [bp+arg_0] or di, di jnz short loc_9BB8 push large 1B0012h push ds push offset aIiklmnop ; "ˆ‰Š‹ŒŽ" jmp short loc_9BD3 ; --------------------------------------------------------------------------- loc_9BB8: cmp di, 1 jnz short loc_9BC9 push large 1B0013h push ds push offset aIiklccss ; "ˆ‰Š‹–—˜™" jmp short loc_9BD3 ; --------------------------------------------------------------------------- loc_9BC9: push large 1B0014h push ds push offset aTufxmnop ; "’“”•ŒŽ" loc_9BD3: push si call gaiji_putsa pop di pop si pop bp retn 4 sub_9B9D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9BDF proc near var_2 = word ptr -2 enter 2, 0 push si xor si, si les bx, dword_FC54 cmp byte ptr es:[bx+28h], 80h ; '€' jnb loc_9C8B call text_clear call sub_B0AF mov [bp+var_2], 0 push large 0E1h ; 'α' call sub_9B9D push large 10001h call sub_9B9D push large 20001h call sub_9B9D loc_9C1B: call sub_C986 or si, si jnz short loc_9C7E test byte ptr word_F296, 1 jz short loc_9C4A push [bp+var_2] push 1 call sub_9B9D dec [bp+var_2] cmp [bp+var_2], 0 jge short loc_9C41 mov [bp+var_2], 2 loc_9C41: push [bp+var_2] push 0E1h ; 'α' call sub_9B9D loc_9C4A: test byte ptr word_F296, 2 jz short loc_9C70 push [bp+var_2] push 1 call sub_9B9D inc [bp+var_2] cmp [bp+var_2], 2 jle short loc_9C67 mov [bp+var_2], 0 loc_9C67: push [bp+var_2] push 0E1h ; 'α' call sub_9B9D loc_9C70: test byte ptr word_F296, 20h jnz short loc_9C9B test byte ptr word_F296+1, 20h jnz short loc_9C9B loc_9C7E: mov si, word_F296 push 1 call sub_C19E jmp short loc_9C1B ; --------------------------------------------------------------------------- loc_9C8B: les bx, dword_FC54 mov al, es:[bx+28h] mov ah, 0 add ax, 0FF80h mov [bp+var_2], ax loc_9C9B: cmp [bp+var_2], 2 jnz short loc_9CA5 mov al, 1 jmp short loc_9CA7 ; --------------------------------------------------------------------------- loc_9CA5: mov al, 0 loc_9CA7: les bx, dword_FC54 mov es:[bx+0Eh], al cmp [bp+var_2], 1 jz short loc_9CB9 mov al, 1 jmp short loc_9CBB ; --------------------------------------------------------------------------- loc_9CB9: mov al, 0 loc_9CBB: les bx, dword_FC54 mov es:[bx+0Fh], al mov byte ptr es:[bx+39h], 0 mov byte ptr es:[bx+17h], 0 mov byte ptr es:[bx+33h], 0 mov al, byte ptr [bp+var_2] add al, 80h ; '€' mov es:[bx+28h], al mov byte ptr es:[bx+35h], 0 cmp [bp+var_2], 1 jnz short loc_9CEF call sub_BA88 or al, al jz short loc_9D03 jmp short loc_9CF6 ; --------------------------------------------------------------------------- loc_9CEF: call sub_BC1F or al, al jz short loc_9D03 loc_9CF6: les bx, dword_FC54 mov byte ptr es:[bx+28h], 0 mov al, 1 jmp short loc_9D49 ; --------------------------------------------------------------------------- loc_9D03: ; sub_9BDF+115j mov [bp+var_2], 0 jmp short loc_9D19 ; --------------------------------------------------------------------------- loc_9D0A: les bx, dword_FC54 add bx, [bp+var_2] mov byte ptr es:[bx+18h], 0 inc [bp+var_2] loc_9D19: cmp [bp+var_2], 10h jl short loc_9D0A call sub_9980 call gaiji_restore push 100h call sub_C403 call sub_BFC2 push large 0 push ds push offset path ; "mainl" push ds push offset path ; "mainl" call _execl add sp, 0Ch mov al, 0 loc_9D49: pop si leave retn sub_9BDF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9D4C proc near push bp mov bp, sp push si les bx, dword_FC54 mov byte ptr es:[bx+0Eh], 1 mov byte ptr es:[bx+0Fh], 1 inc byte ptr es:[bx+39h] cmp byte ptr es:[bx+39h], 4 jbe short loc_9D6E mov byte ptr es:[bx+39h], 1 loc_9D6E: les bx, dword_FC54 mov byte ptr es:[bx+17h], 0 mov byte ptr es:[bx+33h], 0 mov byte ptr es:[bx+28h], 7Fh ; '' mov byte ptr es:[bx+35h], 0 mov al, es:[bx+39h] mov ah, 0 add ax, ax mov bx, ax mov al, [bx+0C2h] mov bx, word ptr dword_FC54 mov es:[bx+0Ch], al mov al, es:[bx+39h] mov ah, 0 add ax, ax mov dx, 0C2h ; 'Β' inc dx add ax, dx mov bx, ax mov al, [bx] mov bx, word ptr dword_FC54 mov es:[bx+0Dh], al mov al, es:[bx+39h] mov ah, 0 shl ax, 2 mov bx, ax mov eax, [bx+0C8h] mov bx, word ptr dword_FC54 mov es:[bx+10h], eax xor si, si jmp short loc_9DDF ; --------------------------------------------------------------------------- loc_9DD3: les bx, dword_FC54 add bx, si mov byte ptr es:[bx+18h], 0 inc si loc_9DDF: cmp si, 10h jl short loc_9DD3 push 1 call palette_black_out call sub_9980 call gaiji_restore push 100h call sub_C403 call sub_BFC2 push large 0 push ds push offset path ; "mainl" push ds push offset path ; "mainl" call _execl add sp, 0Ch pop si pop bp retn sub_9D4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9E16 proc near ; _main:loc_A4BCp push bp mov bp, sp push si mov word_F296, 0 xor si, si jmp short loc_9E43 ; --------------------------------------------------------------------------- loc_9E24: call sub_C986 les bx, dword_FC54 inc dword ptr es:[bx+10h] inc si cmp si, 208h jle short loc_9E3C call sub_9D4C loc_9E3C: push 1 call sub_C19E loc_9E43: cmp word_F296, 0 jz short loc_9E24 push large 0A00100h push 0 call super_put mov si, 0B0h ; '°' jmp short loc_9E76 ; --------------------------------------------------------------------------- loc_9E5C: push si call sub_B10A push si push large 1000002h call super_put push 1 call sub_C19E add si, 8 loc_9E76: cmp si, 120h jl short loc_9E5C pop si pop bp retn sub_9E16 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9E7F proc near push bp mov bp, sp push si les bx, dword_FC54 mov byte ptr es:[bx+33h], 0FFh mov byte ptr es:[bx+35h], 1 mov byte ptr es:[bx+28h], 0 xor si, si jmp short loc_9EA6 ; --------------------------------------------------------------------------- loc_9E9A: les bx, dword_FC54 add bx, si mov byte ptr es:[bx+18h], 0 inc si loc_9EA6: cmp si, 10h jl short loc_9E9A call sub_9980 call gaiji_restore push 100h call sub_C403 call super_free call sub_BFC2 push large 0 push ds push offset path ; "mainl" push ds push offset path ; "mainl" call _execl add sp, 0Ch mov al, 0 pop si pop bp retn sub_9E7F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9EDD proc near arg_0 = word ptr 4 arg_2 = word ptr 6 push bp mov bp, sp push si push di mov si, [bp+arg_2] mov di, [bp+arg_0] or si, si jnz short loc_9EF8 push large 190011h push ds push offset unk_D8CC jmp short loc_9F4B ; --------------------------------------------------------------------------- loc_9EF8: cmp si, 1 jnz short loc_9F09 push large 170012h push ds push offset a345678 ; "345678" jmp short loc_9F4B ; --------------------------------------------------------------------------- loc_9F09: cmp si, 2 jnz short loc_9F1A push large 160013h push ds push offset aAbcdefg ; "ABCDEFG" jmp short loc_9F4B ; --------------------------------------------------------------------------- loc_9F1A: cmp si, 3 jnz short loc_9F2B push large 180014h push ds push offset aVgdej ; "‚ƒ„…†" jmp short loc_9F4B ; --------------------------------------------------------------------------- loc_9F2B: cmp si, 4 jnz short loc_9F3C push large 190015h push ds push offset a?@ ; "=>?@" jmp short loc_9F4B ; --------------------------------------------------------------------------- loc_9F3C: cmp si, 5 jnz short loc_9F51 push large 1A0016h push ds push offset aHij ; "HIJ" loc_9F4B: push di call gaiji_putsa loc_9F51: pop di pop si pop bp retn 4 sub_9EDD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9F57 proc near arg_0 = word ptr 4 arg_2 = word ptr 6 push bp mov bp, sp push si push di mov di, [bp+arg_2] mov si, [bp+arg_0] or di, di jnz short loc_9FD6 push large 190011h push ds push offset aNop ; "nop" push si call gaiji_putsa push large 250011h push ds push offset asc_D965 ; " " push 0E1h ; 'α' call text_putsa les bx, dword_FC54 mov al, es:[bx+0Bh] mov ah, 0 mov bx, ax cmp bx, 3 ja loc_A092 add bx, bx jmp cs:off_A099[bx] loc_9FA2: push large 260011h push ds push offset aQrs ; "qrs" jmp loc_A08C ; --------------------------------------------------------------------------- loc_9FAF: push large 250011h push ds push offset aTuvw ; "tuvw" jmp loc_A08C ; --------------------------------------------------------------------------- loc_9FBC: push large 260011h push ds push offset aXyz ; "xyz" jmp loc_A08C ; --------------------------------------------------------------------------- loc_9FC9: push large 250011h push ds push offset asc_D910 ; "{|}~" jmp loc_A08C ; --------------------------------------------------------------------------- loc_9FD6: cmp di, 1 jnz short loc_A02A push large 190013h push ds push offset aKlmn ; "KLMN" push si call gaiji_putsa les bx, dword_FC54 mov al, es:[bx+15h] mov ah, 0 or ax, ax jz short loc_A006 cmp ax, 1 jz short loc_A012 cmp ax, 2 jz short loc_A01E jmp loc_A092 ; --------------------------------------------------------------------------- loc_A006: push large 230013h push ds push offset aZ ; "ΟΟZ[ΟΟΟ" jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A012: push large 230013h push ds push offset aOpqr ; "ΟOPQRΟΟ" jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A01E: push large 230013h push ds push offset aStuvwxy ; "STUVWXY" jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A02A: cmp di, 2 jnz short loc_A07D push large 170015h push ds push offset a_A ; "\\]^_`a" push si call gaiji_putsa les bx, dword_FC54 mov al, es:[bx+16h] mov ah, 0 or ax, ax jz short loc_A059 cmp ax, 1 jz short loc_A065 cmp ax, 2 jz short loc_A071 jmp short loc_A092 ; --------------------------------------------------------------------------- loc_A059: push large 250015h push ds push offset aHilmhi ; "hilmhi" jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A065: push large 250015h push ds push offset aJklmhi ; "jklmhi" jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A071: push large 250015h push ds push offset aHilmjk ; "hilmjk" jmp short loc_A08C ; --------------------------------------------------------------------------- loc_A07D: cmp di, 3 jnz short loc_A092 push large 200016h push ds push offset aHij ; "HIJ" loc_A08C: push si call gaiji_putsa loc_A092: pop di pop si pop bp retn 4 sub_9F57 endp ; --------------------------------------------------------------------------- db 0 off_A099 dw offset loc_9FA2 dw offset loc_9FAF dw offset loc_9FBC dw offset loc_9FC9 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A0A1 proc near arg_0 = byte ptr 4 arg_2 = byte ptr 6 push bp mov bp, sp mov al, byte_D951 cbw push ax push 1 call word_E97E mov al, [bp+arg_0] add byte_D951, al cmp byte_D951, 0 jge short loc_A0C3 mov al, [bp+arg_2] mov byte_D951, al loc_A0C3: mov al, byte_D951 cmp al, [bp+arg_2] jle short loc_A0D0 mov byte_D951, 0 loc_A0D0: mov al, byte_D951 cbw push ax push 0E1h ; 'α' call word_E97E pop bp retn 4 sub_A0A1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A0E0 proc near push bp mov bp, sp push si cmp byte_D954, 0 jnz short loc_A133 call text_clear cmp byte_D953, 0 jnz short loc_A0FA call sub_B0DB loc_A0FA: mov byte_D953, 0 mov byte_E97A, 0 xor si, si jmp short loc_A11E ; --------------------------------------------------------------------------- loc_A108: push si mov al, byte_D951 cbw cmp ax, si jnz short loc_A116 mov ax, 0E1h ; 'α' jmp short loc_A119 ; --------------------------------------------------------------------------- loc_A116: mov ax, 1 loc_A119: push ax call sub_9EDD inc si loc_A11E: cmp si, 6 jl short loc_A108 mov word_E97E, 5DDh mov byte_D954, 1 mov byte_E97A, 0 loc_A133: cmp word_F296, 0 jnz short loc_A13F mov byte_E97A, 1 loc_A13F: cmp byte_E97A, 0 jz loc_A1F3 test byte ptr word_F296, 1 jz short loc_A156 push 5 push 0FFFFh call sub_A0A1 loc_A156: test byte ptr word_F296, 2 jz short loc_A164 push 5 push 1 call sub_A0A1 loc_A164: test byte ptr word_F296+1, 20h jnz short loc_A172 test byte ptr word_F296, 20h jz short loc_A1DB loc_A172: mov al, byte_D951 cbw mov bx, ax cmp bx, 5 ja short loc_A1DB add bx, bx jmp cs:off_A1F7[bx] loc_A184: call sub_9A17 jmp short loc_A19A ; --------------------------------------------------------------------------- loc_A189: les bx, dword_FC54 mov byte ptr es:[bx+0Ch], 1 mov byte ptr es:[bx+0Dh], 1 call sub_9BDF loc_A19A: call sub_B008 call sub_9E16 call sub_B3C3 mov byte_D954, 0 mov byte_E97A, 0 mov byte_D953, 1 jmp short loc_A1F3 ; --------------------------------------------------------------------------- nop push cs call near ptr sub_AC06 jmp short loc_A19A ; --------------------------------------------------------------------------- call sub_9E7F jmp short loc_A1DB ; --------------------------------------------------------------------------- mov byte_D954, 0 mov byte_E97C, 1 mov byte_D951, 0 jmp short loc_A1DB ; --------------------------------------------------------------------------- mov byte_D954, 0 mov byte_D952, 1 loc_A1DB: test byte ptr word_F296+1, 10h jz short loc_A1E7 mov byte_D952, 1 loc_A1E7: cmp word_F296, 0 jz short loc_A1F3 mov byte_E97A, 0 loc_A1F3: pop si pop bp retn sub_A0E0 endp ; --------------------------------------------------------------------------- db 0 off_A1F7 dw offset loc_A184 dw offset loc_A189 db 0B4h, 8, 0BBh, 8, 0C0h, 8, 0D1h, 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A203 proc near push bp mov bp, sp push si cmp byte_D955, 0 jnz short loc_A24A call text_clear call sub_B0AF mov byte_E97B, 0 xor si, si jmp short loc_A235 ; --------------------------------------------------------------------------- loc_A21F: push si mov al, byte_D951 cbw cmp ax, si jnz short loc_A22D mov ax, 0E1h ; 'α' jmp short loc_A230 ; --------------------------------------------------------------------------- loc_A22D: mov ax, 1 loc_A230: push ax call sub_9F57 inc si loc_A235: cmp si, 4 jl short loc_A21F mov word_E97E, 657h mov byte_D955, 1 mov byte_E97B, 0 loc_A24A: cmp word_F296, 0 jnz short loc_A256 mov byte_E97B, 1 loc_A256: cmp byte_E97B, 0 jz loc_A414 test byte ptr word_F296, 1 jz short loc_A26D push 3 push 0FFFFh call sub_A0A1 loc_A26D: test byte ptr word_F296, 2 jz short loc_A27B push 3 push 1 call sub_A0A1 loc_A27B: test byte ptr word_F296, 8 jz loc_A31D mov al, byte_D951 cbw or ax, ax jz short loc_A298 cmp ax, 1 jz short loc_A2AE cmp ax, 2 jz short loc_A2FE jmp short loc_A312 ; --------------------------------------------------------------------------- loc_A298: les bx, dword_FC54 inc byte ptr es:[bx+0Bh] cmp byte ptr es:[bx+0Bh], 3 jbe short loc_A312 mov byte ptr es:[bx+0Bh], 0 jmp short loc_A312 ; --------------------------------------------------------------------------- loc_A2AE: cmp byte_D880, 0 jnz short loc_A312 les bx, dword_FC54 cmp byte ptr es:[bx+15h], 0 jnz short loc_A2DB mov byte ptr es:[bx+15h], 1 push 100h call sub_C403 call sub_BEFA push 0 call sub_C403 jmp short loc_A2F1 ; --------------------------------------------------------------------------- loc_A2DB: les bx, dword_FC54 mov byte ptr es:[bx+15h], 0 push 100h call sub_C403 mov byte_DDCC, 0 loc_A2F1: mov al, byte_D951 cbw push ax push 0E1h ; 'α' call sub_9F57 jmp short loc_A312 ; --------------------------------------------------------------------------- loc_A2FE: les bx, dword_FC54 inc byte ptr es:[bx+16h] cmp byte ptr es:[bx+16h], 2 jbe short loc_A312 mov byte ptr es:[bx+16h], 0 loc_A312: mov al, byte_D951 cbw push ax push 0E1h ; 'α' call sub_9F57 loc_A31D: test byte ptr word_F296, 4 jz loc_A3CC mov al, byte_D951 cbw or ax, ax jz short loc_A33B cmp ax, 1 jz short loc_A357 cmp ax, 2 jz short loc_A3A7 jmp loc_A3C1 ; --------------------------------------------------------------------------- loc_A33B: les bx, dword_FC54 cmp byte ptr es:[bx+0Bh], 0 jnz short loc_A34D mov byte ptr es:[bx+0Bh], 3 jmp short loc_A3C1 ; --------------------------------------------------------------------------- loc_A34D: les bx, dword_FC54 dec byte ptr es:[bx+0Bh] jmp short loc_A3C1 ; --------------------------------------------------------------------------- loc_A357: cmp byte_D880, 0 jnz short loc_A3C1 les bx, dword_FC54 cmp byte ptr es:[bx+15h], 0 jnz short loc_A384 mov byte ptr es:[bx+15h], 1 push 100h call sub_C403 call sub_BEFA push 0 call sub_C403 jmp short loc_A39A ; --------------------------------------------------------------------------- loc_A384: les bx, dword_FC54 mov byte ptr es:[bx+15h], 0 push 100h call sub_C403 mov byte_DDCC, 0 loc_A39A: mov al, byte_D951 cbw push ax push 0E1h ; 'α' call sub_9F57 jmp short loc_A3C1 ; --------------------------------------------------------------------------- loc_A3A7: les bx, dword_FC54 cmp byte ptr es:[bx+16h], 0 jnz short loc_A3B9 mov byte ptr es:[bx+16h], 2 jmp short loc_A3C1 ; --------------------------------------------------------------------------- loc_A3B9: les bx, dword_FC54 dec byte ptr es:[bx+16h] loc_A3C1: ; sub_A203+148j ... mov al, byte_D951 cbw push ax push 0E1h ; 'α' call sub_9F57 loc_A3CC: test byte ptr word_F296+1, 20h jnz short loc_A3DA test byte ptr word_F296, 20h jz short loc_A3F2 loc_A3DA: mov al, byte_D951 cbw cmp ax, 3 jnz short loc_A3F2 mov byte_D955, 0 mov byte_D951, 4 mov byte_E97C, 0 loc_A3F2: ; sub_A203+1DEj test byte ptr word_F296+1, 10h jz short loc_A408 mov byte_D955, 0 mov byte_D951, 4 mov byte_E97C, 0 loc_A408: cmp word_F296, 0 jz short loc_A414 mov byte_E97B, 0 loc_A414: ; sub_A203+20Aj pop si pop bp retn sub_A203 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl main(int argc, const char **argv, const char **envp) _main proc far _argc = word ptr 6 _argv = dword ptr 8 _envp = dword ptr 0Ch push bp mov bp, sp call graph_400line call text_clear call sub_2AC6 cmp graph_VramZoom, 0 jz short loc_A452 push ds push offset aVfvcvbgngngbgn ; "‚f‚c‚bƒNƒƒbƒN‚ͺ‚T‚l‚g‚š‚Ι‚Θ‚Α‚Δ‚’‚ά‚·"... call dos_puts2 push ds push offset aUmx ; "“Œ•ϋ–²Žž‹σ‚Ν‚QD‚T‚l‚g‚š‚Ε‚Θ‚’‚Ɛ³ν‚Ιƒ"... call dos_puts2 push ds push offset aViosrfvVVkvqbd ; "\n‚¨Žθ”‚Ε‚·‚ͺ‚QD‚T‚l‚g‚š‚ɐ؂θ‘Φ‚¦‚āA"... loc_A446: call dos_puts2 call sub_952E pop bp retf ; --------------------------------------------------------------------------- loc_A452: push ds push offset aCOul ; "–²Žž‹σ1.dat" call sub_C421 add sp, 4 or ax, ax jz short loc_A468 push ds push offset aGbgvgkxsslvVBb ; "\nƒƒ‚ƒŠ•s‘«‚Ε‚·Bƒƒ‚ƒŠ‹σ‚«‚𑝂₡‚Δ‚©"... jmp short loc_A446 ; --------------------------------------------------------------------------- loc_A468: call gaiji_backup push ds push offset aMikoft_bft ; "MIKOFT.bft" call gaiji_entry_bfnt call sub_9908 les bx, dword_FC54 cmp byte ptr es:[bx+28h], 80h ; '€' jb short loc_A497 cmp byte ptr es:[bx+39h], 0 jnz short loc_A497 call sub_B38D call sub_B3EF call sub_B3C3 call sub_9BDF loc_A497: les bx, dword_FC54 cmp byte ptr es:[bx+37h], 0 jnz short loc_A4B0 call sub_ADE2 les bx, dword_FC54 mov byte ptr es:[bx+37h], 1 jmp short loc_A4BC ; --------------------------------------------------------------------------- loc_A4B0: les bx, dword_FC54 mov byte ptr es:[bx+37h], 0 call sub_B008 loc_A4BC: call sub_9E16 mov byte_E97C, 0 mov word_F296, 0 call sub_A0E0 call sub_B3C3 jmp short loc_A4FE ; --------------------------------------------------------------------------- loc_A4D2: call sub_C986 mov al, byte_E97C cbw or ax, ax jz short loc_A4E6 cmp ax, 1 jz short loc_A4EB jmp short loc_A4EE ; --------------------------------------------------------------------------- loc_A4E6: call sub_A0E0 jmp short loc_A4EE ; --------------------------------------------------------------------------- loc_A4EB: call sub_A203 loc_A4EE: les bx, dword_FC54 inc dword ptr es:[bx+10h] push 1 call sub_C19E loc_A4FE: cmp byte_D952, 0 jz short loc_A4D2 call sub_99C3 call gaiji_restore call text_clear call sub_BEB8 call sub_2B3C pop bp retf _main endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A51E proc near var_1 = byte ptr -1 arg_0 = byte ptr 4 arg_2 = byte ptr 6 enter 2, 0 mov al, 1 sub al, byte ptr word_F828+1 mov [bp+var_1], al mov dx, 0A6h ; '¦' out dx, al ; Interrupt Controller #2, 8259A push 10h mov al, [bp+arg_2] mov ah, 0 shl ax, 4 add ax, 28h ; '(' push ax mov al, [bp+arg_0] mov ah, 0 or ax, 20h push ax mov al, [bp+arg_2] mov ah, 0 shl ax, 2 mov bx, ax push large dword ptr [bx+5F2h] call sub_C6DB mov dx, 0A6h ; '¦' mov al, byte ptr word_F828+1 out dx, al ; Interrupt Controller #2, 8259A push 10h mov al, [bp+arg_2] mov ah, 0 shl ax, 4 add ax, 28h ; '(' push ax mov al, [bp+arg_0] mov ah, 0 or ax, 20h push ax mov al, [bp+arg_2] mov ah, 0 shl ax, 2 mov bx, ax push large dword ptr [bx+5F2h] call sub_C6DB leave retn 4 sub_A51E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A590 proc near arg_0 = byte ptr 4 push bp mov bp, sp push si xor si, si jmp short loc_A5AD ; --------------------------------------------------------------------------- loc_A598: push si mov al, [bp+arg_0] mov ah, 0 cmp ax, si jnz short loc_A5A6 mov al, 0Fh jmp short loc_A5A8 ; --------------------------------------------------------------------------- loc_A5A6: mov al, 3 loc_A5A8: push ax call sub_A51E inc si loc_A5AD: cmp si, 15h jl short loc_A598 pop si pop bp retn 2 sub_A590 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A5B7 proc near push bp mov bp, sp push si push 7D00h call hmem_allocbyte mov word_F82A, ax xor si, si jmp short loc_A5DF ; --------------------------------------------------------------------------- loc_A5CA: les bx, dword_F1EA add bx, si mov eax, es:[bx] mov es, word_F82A mov es:[si], eax add si, 4 loc_A5DF: cmp si, 7D00h jl short loc_A5CA pop si pop bp retn sub_A5B7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A5E8 proc near push bp mov bp, sp push word_F82A call hmem_free pop bp retn sub_A5E8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A5F6 proc near push bp mov bp, sp push si push di push ds mov ax, 0A800h mov es, ax assume es:nothing mov ax, word_F82A mov ds, ax xor di, di xor si, si mov cx, 3E80h rep movsw pop ds pop di pop si pop bp retn sub_A5F6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A614 proc near var_3 = byte ptr -3 var_2 = word ptr -2 arg_0 = byte ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 arg_6 = word ptr 0Ah arg_8 = word ptr 0Ch arg_A = word ptr 0Eh enter 4, 0 push si push di mov di, [bp+arg_A] sar [bp+arg_6], 4 mov [bp+var_2], 0 jmp short loc_A67F ; --------------------------------------------------------------------------- loc_A628: mov ax, [bp+var_2] shl ax, 8 cwd idiv [bp+arg_2] add al, [bp+arg_0] mov [bp+var_3], al mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+396h] push [bp+arg_4] push [bp+arg_8] call sub_C005 add sp, 6 mov bx, [bp+var_2] shl bx, 2 mov [bx+di], ax mov al, [bp+var_3] mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+316h] push [bp+arg_4] push [bp+arg_6] call sub_C005 add sp, 6 mov bx, [bp+var_2] shl bx, 2 mov [bx+di+2], ax inc [bp+var_2] loc_A67F: mov ax, [bp+var_2] cmp ax, [bp+arg_2] jl short loc_A628 mov bx, [bp+var_2] shl bx, 2 mov ax, [di] mov [bx+di], ax mov bx, [bp+var_2] shl bx, 2 mov ax, [di+2] mov [bx+di+2], ax pop di pop si leave retn 0Ch sub_A614 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A6A3 proc near push bp mov bp, sp push si cmp byte_DE82, 0 jnz loc_A752 xor si, si jmp loc_A746 ; --------------------------------------------------------------------------- loc_A6B5: call IRand mov bx, 280h cwd idiv bx mov bx, si shl bx, 2 mov [bx+1F98h], dx call IRand mov bx, 1900h cwd idiv bx mov bx, si shl bx, 2 mov [bx+1F9Ah], dx call IRand and ax, 7 mov dx, 4 sub dx, ax mov bx, si shl bx, 2 mov [bx+1FD8h], dx mov bx, si shl bx, 2 cmp word ptr [bx+1FD8h], 0 jnz short loc_A70A mov bx, si shl bx, 2 mov word ptr [bx+1FD8h], 1 loc_A70A: call IRand and ax, 3 shl ax, 4 add ax, 20h ; ' ' mov bx, si shl bx, 2 mov [bx+1FDAh], ax call IRand mov [si+2018h], al call IRand and al, 7 mov dl, 4 sub dl, al mov [si+2028h], dl cmp byte ptr [si+2028h], 0 jnz short loc_A745 mov byte ptr [si+2028h], 4 loc_A745: inc si loc_A746: cmp si, 10h jl loc_A6B5 mov byte_DE82, 1 loc_A752: xor si, si jmp loc_A88F ; --------------------------------------------------------------------------- loc_A757: push 1F70h mov bx, si shl bx, 2 push word ptr [bx+1F98h] mov bx, si shl bx, 2 push word ptr [bx+1F9Ah] mov ax, si and ax, 3 shl ax, 4 add ax, 40h ; '@' push ax mov ax, si mov bx, 4 cwd idiv bx add ax, 3 push ax mov al, [si+2018h] push ax call sub_A614 mov bx, si shl bx, 2 mov ax, [bx+1FD8h] mov bx, si shl bx, 2 add [bx+1F98h], ax mov bx, si shl bx, 2 mov ax, [bx+1FDAh] mov bx, si shl bx, 2 add [bx+1F9Ah], ax mov al, [si+2028h] add [si+2018h], al mov bx, si shl bx, 2 cmp word ptr [bx+1F98h], 0 jle short loc_A7D1 mov bx, si shl bx, 2 cmp word ptr [bx+1F98h], 27Fh jl short loc_A7E3 loc_A7D1: mov bx, si shl bx, 2 mov dx, 0FFFFh mov ax, [bx+1FD8h] imul dx mov [bx+1FD8h], ax loc_A7E3: mov bx, si shl bx, 2 cmp word ptr [bx+1F9Ah], 1F40h jl loc_A879 call IRand mov bx, 280h cwd idiv bx mov bx, si shl bx, 2 mov [bx+1F98h], dx mov bx, si shl bx, 2 mov word ptr [bx+1F9Ah], 0F9C0h call IRand and ax, 0Fh mov dx, 8 sub dx, ax mov bx, si shl bx, 2 mov [bx+1FD8h], dx mov bx, si shl bx, 2 cmp word ptr [bx+1FD8h], 0 jnz short loc_A83E mov bx, si shl bx, 2 mov word ptr [bx+1FD8h], 1 loc_A83E: call IRand and ax, 3 shl ax, 4 add ax, 20h ; ' ' mov bx, si shl bx, 2 mov [bx+1FDAh], ax call IRand mov [si+2018h], al call IRand and al, 7 mov dl, 4 sub dl, al mov [si+2028h], dl cmp byte ptr [si+2028h], 0 jnz short loc_A879 mov byte ptr [si+2028h], 4 loc_A879: ; sub_A6A3+1CFj push ds push offset unk_F760 mov ax, si mov bx, 4 cwd idiv bx add ax, 3 push ax call grcg_polygon_c inc si loc_A88F: cmp si, 10h jl loc_A757 pop si pop bp retn sub_A6A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A899 proc near ; sub_AC06+188p ... push bp mov bp, sp call sub_A5F6 push large 0CE000Fh call grcg_setcolor call sub_A6A3 call grcg_off mov dx, 0A4h ; '€' mov al, byte ptr word_F828+1 out dx, al ; Interrupt Controller #2, 8259A mov al, 1 sub al, byte ptr word_F828+1 mov byte ptr word_F828+1, al mov dx, 0A6h ; '¦' out dx, al ; Interrupt Controller #2, 8259A push 1 call sub_CB86 pop bp retn sub_A899 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A8CF proc near var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 6, 0 push si push di mov [bp+var_6], 0 jmp short loc_A8F7 ; --------------------------------------------------------------------------- loc_A8DC: push 3200h call hmem_allocbyte mov bx, [bp+var_6] shl bx, 2 mov [bx+203Eh], ax mov word ptr [bx+203Ch], 0 inc [bp+var_6] loc_A8F7: cmp [bp+var_6], 4 jl short loc_A8DC xor si, si mov di, 40h ; '@' jmp short loc_A97D ; --------------------------------------------------------------------------- loc_A904: mov [bp+var_2], 130h jmp short loc_A975 ; --------------------------------------------------------------------------- loc_A90B: mov ax, [bp+var_2] sar ax, 3 mov dx, di shl dx, 6 add ax, dx mov dx, di shl dx, 4 add ax, dx mov [bp+var_4], ax les bx, dword_F1EA assume es:nothing add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F82C mov es:[bx+si], eax les bx, dword_F1EE add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F830 mov es:[bx+si], eax les bx, dword_F1F2 add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F834 mov es:[bx+si], eax les bx, dword_F1F6 add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F838 mov es:[bx+si], eax add si, 4 add [bp+var_2], 20h ; ' ' loc_A975: cmp [bp+var_2], 270h jl short loc_A90B inc di loc_A97D: cmp di, 50h ; 'P' jl short loc_A904 mov di, 50h ; 'P' jmp short loc_AA00 ; --------------------------------------------------------------------------- loc_A987: mov [bp+var_2], 130h jmp short loc_A9F8 ; --------------------------------------------------------------------------- loc_A98E: mov ax, [bp+var_2] sar ax, 3 mov dx, di shl dx, 6 add ax, dx mov dx, di shl dx, 4 add ax, dx mov [bp+var_4], ax les bx, dword_F1EA add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F82C mov es:[bx+si], eax les bx, dword_F1EE add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F830 mov es:[bx+si], eax les bx, dword_F1F2 add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F834 mov es:[bx+si], eax les bx, dword_F1F6 add bx, [bp+var_4] mov eax, es:[bx] les bx, dword ptr unk_F838 mov es:[bx+si], eax add si, 4 add [bp+var_2], 20h ; ' ' loc_A9F8: cmp [bp+var_2], 270h jl short loc_A98E inc di loc_AA00: cmp di, 180h jl short loc_A987 pop di pop si leave retn sub_A8CF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AA0A proc near arg_0 = word ptr 4 push bp mov bp, sp push si push ds push offset aMusic_txt ; "MUSIC.TXT" call file_ropen mov ax, [bp+arg_0] imul ax, 348h cwde push eax push 0 call file_seek push ds push offset unk_F83C push 348h call file_read call file_close xor si, si jmp short loc_AA49 ; --------------------------------------------------------------------------- loc_AA3E: mov bx, si imul bx, 2Ah mov byte ptr [bx+2074h], 0 inc si loc_AA49: cmp si, 14h jl short loc_AA3E pop si pop bp retn 2 sub_AA0A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AA53 proc near push bp mov bp, sp push word_F82E call hmem_free push word_F832 call hmem_free push word_F836 call hmem_free push word_F83A call hmem_free pop bp retn sub_AA53 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AA7C proc near var_2 = word ptr -2 enter 2, 0 push si push di xor cx, cx mov si, 40h ; '@' jmp short loc_AB05 ; --------------------------------------------------------------------------- loc_AA89: mov di, 130h jmp short loc_AAFE ; --------------------------------------------------------------------------- loc_AA8E: mov ax, di sar ax, 3 mov dx, si shl dx, 6 add ax, dx mov dx, si shl dx, 4 add ax, dx mov [bp+var_2], ax les bx, dword ptr unk_F82C add bx, cx mov eax, es:[bx] les bx, dword_F1EA add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F830 add bx, cx mov eax, es:[bx] les bx, dword_F1EE add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F834 add bx, cx mov eax, es:[bx] les bx, dword_F1F2 add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F838 add bx, cx mov eax, es:[bx] les bx, dword_F1F6 add bx, [bp+var_2] mov es:[bx], eax add cx, 4 add di, 20h ; ' ' loc_AAFE: cmp di, 270h jl short loc_AA8E inc si loc_AB05: cmp si, 50h ; 'P' jl loc_AA89 mov si, 50h ; 'P' jmp short loc_AB8D ; --------------------------------------------------------------------------- loc_AB11: mov di, 130h jmp short loc_AB86 ; --------------------------------------------------------------------------- loc_AB16: mov ax, di sar ax, 3 mov dx, si shl dx, 6 add ax, dx mov dx, si shl dx, 4 add ax, dx mov [bp+var_2], ax les bx, dword ptr unk_F82C add bx, cx mov eax, es:[bx] les bx, dword_F1EA add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F830 add bx, cx mov eax, es:[bx] les bx, dword_F1EE add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F834 add bx, cx mov eax, es:[bx] les bx, dword_F1F2 add bx, [bp+var_2] mov es:[bx], eax les bx, dword ptr unk_F838 add bx, cx mov eax, es:[bx] les bx, dword_F1F6 add bx, [bp+var_2] mov es:[bx], eax add cx, 4 add di, 20h ; ' ' loc_AB86: cmp di, 270h jl short loc_AB16 inc si loc_AB8D: cmp si, 180h jl loc_AB11 pop di pop si leave retn sub_AA7C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AB99 proc near arg_0 = word ptr 4 push bp mov bp, sp push si push di push [bp+arg_0] call sub_AA0A call sub_A5F6 call sub_AA7C push large 1300040h push 1Fh push ds push offset unk_F83C call sub_C6DB mov di, 1 jmp short loc_ABDC ; --------------------------------------------------------------------------- loc_ABC0: push 130h lea ax, [di+4] shl ax, 4 push ax push 1Dh push ds mov ax, di imul ax, 2Ah add ax, 204Ch push ax call sub_C6DB inc di loc_ABDC: cmp di, 14h jl short loc_ABC0 xor si, si jmp short loc_ABFA ; --------------------------------------------------------------------------- loc_ABE5: les bx, dword_F1EA add bx, si mov eax, es:[bx] mov es, word_F82A mov es:[si], eax add si, 4 loc_ABFA: cmp si, 7D00h jl short loc_ABE5 pop di pop si pop bp retn 2 sub_AB99 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AC06 proc far push bp mov bp, sp push si xor si, si jmp short loc_AC15 ; --------------------------------------------------------------------------- loc_AC0E: push si call sub_C69C inc si loc_AC15: cmp si, 20h ; ' ' jl short loc_AC0E call super_free call text_clear mov byte ptr word_F828+1, 1 mov PaletteTone, 0 call far ptr palette_show mov dx, 0A4h ; '€' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A mov dx, 0A6h ; '¦' out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A6h ; '¦' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A push 0 push ds push offset aOp3_pi ; "op3.pi" call sub_C940 push 0 call sub_C356 push large 0 push 0 call sub_C37B push ds push offset unk_F4B0 push large [dword_F498] call graph_pi_free mov al, byte_DE83 mov byte ptr word_F828, al push word_F828 call sub_A590 push 0 call graph_copy_page mov dx, 0A6h ; '¦' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A mov dx, 0A4h ; '€' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call sub_A5B7 call sub_A8CF mov dx, 0A6h ; '¦' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A mov al, byte_DE83 mov ah, 0 push ax call sub_AB99 mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A mov al, byte_DE83 mov ah, 0 push ax call sub_AB99 mov PaletteTone, 64h ; 'd' call far ptr palette_show loc_ACC2: ; sub_AC06+1A0j call sub_C986 cmp word_F296, 0 jz short loc_ACD3 call sub_A899 jmp short loc_ACC2 ; --------------------------------------------------------------------------- loc_ACD3: ; sub_AC06+1A7j call sub_C986 test byte ptr word_F296, 1 jz short loc_AD0E push word_F828 push 3 call sub_A51E cmp byte ptr word_F828, 0 jbe short loc_ACF5 dec byte ptr word_F828 jmp short loc_ACFA ; --------------------------------------------------------------------------- loc_ACF5: mov byte ptr word_F828, 14h loc_ACFA: cmp byte ptr word_F828, 13h jnz short loc_AD05 dec byte ptr word_F828 loc_AD05: push word_F828 push 0Fh call sub_A51E loc_AD0E: test byte ptr word_F296, 2 jz short loc_AD44 push word_F828 push 3 call sub_A51E cmp byte ptr word_F828, 14h jnb short loc_AD2B inc byte ptr word_F828 jmp short loc_AD30 ; --------------------------------------------------------------------------- loc_AD2B: mov byte ptr word_F828, 0 loc_AD30: cmp byte ptr word_F828, 13h jnz short loc_AD3B inc byte ptr word_F828 loc_AD3B: push word_F828 push 0Fh call sub_A51E loc_AD44: test byte ptr word_F296, 20h jnz short loc_AD52 test byte ptr word_F296+1, 20h jz short loc_AD9A loc_AD52: cmp byte ptr word_F828, 14h jz short loc_ADB0 push 100h call sub_C403 push 600h mov al, byte ptr word_F828 mov ah, 0 shl ax, 2 mov bx, ax push large dword ptr [bx+646h] call sub_BF52 add sp, 6 push 0 call sub_C403 mov al, byte ptr word_F828 mov byte_DE83, al mov ah, 0 push ax call sub_AB99 call sub_A899 mov al, byte ptr word_F828 mov ah, 0 push ax call sub_AB99 loc_AD9A: test byte ptr word_F296+1, 10h jnz short loc_ADB0 cmp word_F296, 0 jnz loc_ACC2 call sub_A899 jmp loc_ACD3 ; --------------------------------------------------------------------------- loc_ADB0: ; sub_AC06+199j ... call sub_C986 cmp word_F296, 0 jz short loc_ADC1 call sub_A899 jmp short loc_ADB0 ; --------------------------------------------------------------------------- loc_ADC1: call sub_A5E8 call sub_AA53 mov dx, 0A4h ; '€' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A mov dx, 0A6h ; '¦' out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A6h ; '¦' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A mov al, 0 out dx, al ; Interrupt Controller #2, 8259A pop si pop bp retf sub_AC06 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_ADE2 proc near var_3 = byte ptr -3 var_2 = word ptr -2 enter 4, 0 push si mov [bp+var_2], 0 mov [bp+var_3], 0 push ds push offset aOpwin_bft ; "opwin.bft" call super_entry_bfnt push 100h call sub_C403 push 600h push ds push offset aOp_m ; "op.m" call sub_BF52 add sp, 6 push 0 push ds push offset aTl01_pi ; "TL01.PI" call sub_C940 mov PaletteTone, 0 call far ptr palette_show mov dx, 0A6h ; '¦' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A push large 0 push 0 call sub_C37B mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A push 0 call sub_C356 push large 0 push 0 call sub_C37B push 2 call egc_shift_left_all mov Palettes+45, 0 mov Palettes+46, 0 mov Palettes+47, 0 call far ptr palette_show mov Palettes+33, 0 mov Palettes+34, 0 mov Palettes+35, 0 call far ptr palette_show push ds push offset unk_F4B0 push large [dword_F498] call graph_pi_free push 0 push ds push offset aTl02_pi ; "TL02.PI" call sub_C940 mov dx, 0A4h ; '€' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A mov si, 0A0h ; ' ' jmp short loc_AF02 ; --------------------------------------------------------------------------- loc_AEA0: push 1 call sub_C19E mov al, byte ptr [bp+var_2] mov Palettes+45, al mov Palettes+46, al mov Palettes+47, al call far ptr palette_show cmp [bp+var_2], 80h ; '€' jg short loc_AECB mov al, byte ptr [bp+var_2] mov Palettes+33, al mov Palettes+34, al mov Palettes+35, al loc_AECB: call far ptr palette_show cmp [bp+var_2], 64h ; 'd' jg short loc_AEE1 mov ax, [bp+var_2] mov PaletteTone, ax call far ptr palette_show loc_AEE1: add [bp+var_2], 2 mov dx, 0A4h ; '€' mov al, [bp+var_3] out dx, al ; Interrupt Controller #2, 8259A mov al, 1 sub al, [bp+var_3] mov [bp+var_3], al mov dx, 0A6h ; '¦' out dx, al ; Interrupt Controller #2, 8259A push 4 call egc_shift_left_all sub si, 2 loc_AF02: cmp si, 11h jg short loc_AEA0 jmp short loc_AF25 ; --------------------------------------------------------------------------- loc_AF09: mov al, byte ptr [bp+var_2] mov Palettes+45, al mov Palettes+46, al mov Palettes+47, al call far ptr palette_show add [bp+var_2], 2 push 1 call sub_C19E loc_AF25: cmp [bp+var_2], 0FFh jl short loc_AF09 mov vsync_Count1, 0 call sub_B3EF loc_AF35: cmp vsync_Count1, 10h jb short loc_AF35 xor si, si jmp short loc_AF65 ; --------------------------------------------------------------------------- loc_AF40: mov PaletteTone, 0C8h ; 'Θ' call far ptr palette_show push 1 call sub_C19E mov PaletteTone, 64h ; 'd' call far ptr palette_show push 1 call sub_C19E inc si loc_AF65: cmp si, 8 jl short loc_AF40 mov PaletteTone, 0C8h ; 'Θ' call far ptr palette_show push 0 call sub_C403 mov dx, 0A4h ; '€' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A mov dx, 0A6h ; '¦' out dx, al ; Interrupt Controller #2, 8259A push 0 call sub_C356 push large 0 push 0 call sub_C37B push 1 call sub_C19E mov PaletteTone, 64h ; 'd' call far ptr palette_show push 1 call sub_C19E xor si, si jmp short loc_AFD9 ; --------------------------------------------------------------------------- loc_AFB4: mov PaletteTone, 0C8h ; 'Θ' call far ptr palette_show push 1 call sub_C19E mov PaletteTone, 64h ; 'd' call far ptr palette_show push 1 call sub_C19E inc si loc_AFD9: cmp si, 8 jl short loc_AFB4 mov dx, 0A6h ; '¦' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A push large 0 push 0 call sub_C37B mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A push ds push offset unk_F4B0 push large [dword_F498] call graph_pi_free call sub_B38D pop si leave retn sub_ADE2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B008 proc near ; _main+A2p push bp mov bp, sp push si push ds push offset aOpwin_bft ; "opwin.bft" call super_entry_bfnt push 100h call sub_C403 push 600h push ds push offset aOp_m ; "op.m" call sub_BF52 add sp, 6 mov PaletteTone, 0 call far ptr palette_show push 0 push ds push offset aTl02_pi ; "TL02.PI" call sub_C940 mov dx, 0A4h ; '€' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call sub_B3EF mov dx, 0A6h ; '¦' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A push large 0 push 0 call sub_C37B mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A push 0 call sub_C356 push large 0 push 0 call sub_C37B mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A push ds push offset unk_F4B0 push large [dword_F498] call graph_pi_free call sub_B38D push 0 call sub_C403 xor si, si jmp short loc_B0A7 ; --------------------------------------------------------------------------- loc_B094: mov PaletteTone, si call far ptr palette_show push 1 call sub_C19E add si, 4 loc_B0A7: cmp si, 64h ; 'd' jle short loc_B094 pop si pop bp retn sub_B008 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B0AF proc near push bp mov bp, sp push si mov si, 120h jmp short loc_B0D2 ; --------------------------------------------------------------------------- loc_B0B8: push si call sub_B10A push si push large 1000002h call super_put push 1 call sub_C19E add si, 8 loc_B0D2: cmp si, 188h jl short loc_B0B8 pop si pop bp retn sub_B0AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B0DB proc near push bp mov bp, sp push si mov si, 180h jmp short loc_B101 ; --------------------------------------------------------------------------- loc_B0E4: lea ax, [si+8] push ax call sub_B10A push si push large 1000002h call super_put push 1 call sub_C19E sub si, 8 loc_B101: cmp si, 118h jge short loc_B0E4 pop si pop bp retn sub_B0DB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B10A proc near arg_0 = word ptr 4 push bp mov bp, sp push si push di mov ax, [bp+arg_0] shr ax, 3 mov di, 77B0h add di, ax mov ax, 0AD00h mov es, ax assume es:nothing loc_B11F: mov al, 1 out 0A6h, al ; Interrupt Controller #2, 8259A mov dx, es:[di] mov ax, 0B500h mov es, ax assume es:nothing mov cx, es:[di] mov ax, 0BD00h mov es, ax assume es:nothing mov bx, es:[di] mov ax, 0E500h mov es, ax assume es:nothing mov si, es:[di] xor al, al out 0A6h, al ; Interrupt Controller #2, 8259A mov es:[di], si mov ax, 0BD00h mov es, ax assume es:nothing mov es:[di], bx mov ax, 0B500h mov es, ax assume es:nothing mov es:[di], cx mov ax, 0AD00h mov es, ax assume es:nothing mov es:[di], dx sub di, 50h ; 'P' jnb short loc_B11F pop di pop si pop bp retn 2 sub_B10A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B168 proc near var_4 = word ptr -4 var_1 = byte ptr -1 arg_0 = word ptr 4 enter 4, 0 push si push di mov [bp+var_4], 0 call IRand mov byte_FC50, al call IRand mov byte_FC51, al call IRand mov byte_FBD7, al mov si, 2396h xor di, di jmp short loc_B19B ; --------------------------------------------------------------------------- loc_B192: mov al, [si] mov ah, 0 add [bp+var_4], ax inc di inc si loc_B19B: cmp di, 0CCh ; 'Μ' jl short loc_B192 mov ax, [bp+var_4] mov word_FB84, ax mov si, 2460h dec si mov al, byte_FC51 mov [bp+var_1], al mov di, 0CBh ; 'Λ' jmp short loc_B1D4 ; --------------------------------------------------------------------------- loc_B1B6: mov al, [si] mov dl, byte_FC50 add dl, [bp+var_1] sub al, dl mov [si], al mov al, [si] mov [bp+var_1], al mov al, byte_FC51 ror [bp+var_1], 3 xor [bp+var_1], al dec di dec si loc_B1D4: or di, di jge short loc_B1B6 push ds push word_E1F2 call file_append mov ax, [bp+arg_0] imul ax, 0CEh movzx eax, ax push eax push 0 call file_seek push ds push offset word_FB84 push 0CEh ; 'Ξ' call file_write call file_close pop di pop si leave retn 2 sub_B168 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B20D proc near var_1 = byte ptr -1 enter 2, 0 push si mov si, 2394h xor dx, dx jmp short loc_B235 ; --------------------------------------------------------------------------- loc_B219: mov al, [si+1] mov [bp+var_1], al mov al, byte_FC51 ror [bp+var_1], 3 xor [bp+var_1], al mov al, byte_FC50 add al, [bp+var_1] add al, [si] mov [si], al inc dx inc si loc_B235: cmp dx, 0CBh ; 'Λ' jl short loc_B219 mov al, byte_FC50 add al, byte_FC51 add al, [si] mov [si], al pop si leave retn sub_B20D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B249 proc near var_1 = byte ptr -1 enter 2, 0 push si push di mov [bp+var_1], 29h ; ')' xor si, si jmp short loc_B28A ; --------------------------------------------------------------------------- loc_B257: xor di, di jmp short loc_B266 ; --------------------------------------------------------------------------- loc_B25B: mov bx, si shl bx, 3 mov byte ptr [bx+di+2396h], 2Ah ; '*' inc di loc_B266: cmp di, 8 jl short loc_B25B xor di, di jmp short loc_B27A ; --------------------------------------------------------------------------- loc_B26F: mov bx, si imul bx, 0Ah mov byte ptr [bx+di+23E8h], 20h ; ' ' inc di loc_B27A: cmp di, 0Ah jl short loc_B26F mov byte ptr [si+244Ch], 0 mov byte ptr [si+2456h], 21h ; '!' inc si loc_B28A: cmp si, 0Ah jl short loc_B257 mov byte_FBDC, 21h ; '!' mov di, 1 jmp short loc_B2A9 ; --------------------------------------------------------------------------- loc_B299: mov bx, di imul bx, 0Ah mov al, [bp+var_1] mov [bx+23EBh], al inc di dec [bp+var_1] loc_B2A9: cmp di, 0Ah jl short loc_B299 mov byte_FBD6, 12h xor si, si jmp short loc_B2BF ; --------------------------------------------------------------------------- loc_B2B7: push si call sub_B168 call sub_B20D inc si loc_B2BF: cmp si, 4 jl short loc_B2B7 pop di pop si leave retn sub_B249 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B2C8 proc near push bp mov bp, sp push si xor cx, cx mov si, 2396h xor dx, dx jmp short loc_B2DD ; --------------------------------------------------------------------------- loc_B2D5: mov al, [si] mov ah, 0 add cx, ax inc dx inc si loc_B2DD: cmp dx, 0CCh ; 'Μ' jl short loc_B2D5 cmp word_FB84, cx jz short loc_B2ED mov al, 1 jmp short loc_B2EF ; --------------------------------------------------------------------------- loc_B2ED: mov al, 0 loc_B2EF: pop si pop bp retn sub_B2C8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B2F2 proc near arg_0 = word ptr 4 push bp mov bp, sp push ds push word_E1F2 call file_exist or ax, ax jnz short loc_B314 push ds push word_E1F2 call file_create call file_close jmp short loc_B34D ; --------------------------------------------------------------------------- loc_B314: push ds push word_E1F2 call file_ropen mov ax, [bp+arg_0] imul ax, 0CEh movzx eax, ax push eax push 0 call file_seek push ds push offset word_FB84 push 0CEh ; 'Ξ' call file_read call file_close call sub_B20D call sub_B2C8 or al, al jz short loc_B357 loc_B34D: call sub_B249 mov ax, 1 pop bp retn 2 ; --------------------------------------------------------------------------- loc_B357: xor ax, ax pop bp retn 2 sub_B2F2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B35D proc near var_1 = byte ptr -1 enter 2, 0 push si mov [bp+var_1], 7 xor si, si jmp short loc_B382 ; --------------------------------------------------------------------------- loc_B36A: push si call sub_B2F2 or ax, ax jz short loc_B376 mov al, 7 jmp short loc_B38A ; --------------------------------------------------------------------------- loc_B376: cmp byte_FBD6, 63h ; 'c' jnz short loc_B381 mov [bp+var_1], 9 loc_B381: inc si loc_B382: cmp si, 4 jl short loc_B36A mov al, [bp+var_1] loc_B38A: pop si leave retn sub_B35D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B38D proc near push bp mov bp, sp push si call sub_CB68 xor si, si jmp short loc_B3B0 ; --------------------------------------------------------------------------- loc_B39A: lea ax, [si+2] push ax mov bx, si shl bx, 2 push large dword ptr [bx+0A0Eh] push 0 call sub_C48A inc si loc_B3B0: cmp si, 3 jl short loc_B39A push 0Dh push ds push offset aSlex_cd2 ; "slex.cd2" call sub_C680 pop si pop bp retn sub_B38D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B3C3 proc near push bp mov bp, sp push 1 push ds push offset a99sl_cdg ; "99sl.cdg" push 0 call sub_C48A push 0Bh push ds push offset aSlwin_cdg ; "slwin.cdg" push 0 call sub_C514 push 0Ch push ds push offset aSlex_cdg ; "slex.cdg" push 0 call sub_C514 pop bp retn sub_B3C3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B3EF proc near push bp mov bp, sp push si push 0 push large [off_E1FE] push 0 call sub_C48A mov si, 3 jmp short loc_B41C ; --------------------------------------------------------------------------- loc_B406: lea ax, [si+2] push ax mov bx, si shl bx, 2 push large dword ptr [bx+0A0Eh] push 0 call sub_C48A inc si loc_B41C: cmp si, 6 jl short loc_B406 pop si pop bp retn sub_B3EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B424 proc near push bp mov bp, sp push si mov vsync_Count1, 0 push 100h call sub_C403 push 600h push ds push offset aSelect_m ; "select.m" call sub_BF52 add sp, 6 push 0 call sub_C403 mov word_FC64, 0C8h ; 'Θ' les bx, dword_FC54 assume es:nothing mov eax, es:[bx+10h] mov random_seed, eax call text_clear call super_free push ds push offset aChname_bft ; "chname.bft" call super_entry_bfnt mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A6h ; '¦' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A4h ; '€' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A mov byte_FC5C, 0 push ds push offset aTlsl_rgb ; "TLSL.RGB" call palette_entry_rgb call far ptr palette_show mov si, 6 jmp short loc_B4BC ; --------------------------------------------------------------------------- loc_B4A6: lea ax, [si+2] push ax mov bx, si shl bx, 2 push large dword ptr [bx+0A0Eh] push 0 call sub_C48A inc si loc_B4BC: cmp si, 9 jl short loc_B4A6 loc_B4C1: cmp vsync_Count1, 1Eh jb short loc_B4C1 mov word_FC66, 8 call sub_B35D mov byte_FC68, al pop si pop bp retn sub_B424 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B4D7 proc near ; sub_BA88:loc_BC18p ... push bp mov bp, sp push si xor si, si jmp short loc_B4E6 ; --------------------------------------------------------------------------- loc_B4DF: push si call sub_C69C inc si loc_B4E6: cmp si, 16h jl short loc_B4DF call super_free pop si pop bp retn sub_B4D7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B4F3 proc near push bp mov bp, sp push large 200060h cmp byte_FC5A, 0 jnz short loc_B50C mov al, byte_FC58 cbw add ax, 2 jmp short loc_B50E ; --------------------------------------------------------------------------- loc_B50C: xor ax, ax loc_B50E: push ax call sub_C020 push large 1A00060h cmp byte_FC5B, 0 jnz short loc_B52A mov al, byte_FC59 cbw add ax, 2 jmp short loc_B52D ; --------------------------------------------------------------------------- loc_B52A: mov ax, 1 loc_B52D: push ax call sub_C0D4 pop bp retn sub_B4F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B535 proc near push bp mov bp, sp push large 200060h cmp byte_FC5A, 0 jnz short loc_B54E mov al, byte_FC58 cbw add ax, 2 jmp short loc_B550 ; --------------------------------------------------------------------------- loc_B54E: xor ax, ax loc_B550: push ax call sub_C020 push large 1A00060h push 1 call sub_C020 pop bp retn sub_B535 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B565 proc near var_4 = word ptr -4 var_2 = word ptr -2 enter 4, 0 push si push di push large 200130h push 0Bh call far ptr loc_CAF6 les bx, dword_FC54 cmp byte ptr es:[bx+28h], 1 jz short loc_B590 push large 1A00130h push 0Bh call far ptr loc_CAF6 loc_B590: push large 0C0000Eh call grcg_setcolor mov [bp+var_2], 0 mov [bp+var_4], 13Bh jmp short loc_B625 ; --------------------------------------------------------------------------- loc_B5A7: mov di, 5 mov si, 8Ch ; 'Œ' jmp short loc_B5C7 ; --------------------------------------------------------------------------- loc_B5AF: push si push [bp+var_4] lea ax, [si+8] push ax mov ax, [bp+var_4] add ax, 0Fh push ax call grcg_boxfill dec di sub si, 0Bh loc_B5C7: mov al, byte_FC58 cbw imul ax, 3 add ax, [bp+var_2] mov bx, ax mov al, [bx+0A32h] mov ah, 0 cmp ax, di jl short loc_B5AF les bx, dword_FC54 cmp byte ptr es:[bx+28h], 1 jz short loc_B61E mov di, 5 mov si, 20Ch jmp short loc_B608 ; --------------------------------------------------------------------------- loc_B5F0: push si push [bp+var_4] lea ax, [si+8] push ax mov ax, [bp+var_4] add ax, 0Fh push ax call grcg_boxfill dec di sub si, 0Bh loc_B608: mov al, byte_FC59 cbw imul ax, 3 add ax, [bp+var_2] mov bx, ax mov al, [bx+0A32h] mov ah, 0 cmp ax, di jl short loc_B5F0 loc_B61E: inc [bp+var_2] add [bp+var_4], 10h loc_B625: cmp [bp+var_2], 3 jl loc_B5A7 call grcg_off pop di pop si leave retn sub_B565 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B636 proc near push bp mov bp, sp push si push di mov di, 88h ; 'ˆ' xor si, si jmp short loc_B663 ; --------------------------------------------------------------------------- loc_B642: push 100h push di mov ax, si add ax, ax push ax call super_put push 140h push di mov ax, si add ax, ax inc ax push ax call super_put inc si add di, 14h loc_B663: mov al, byte_FC68 mov ah, 0 cmp ax, si jg short loc_B642 pop di pop si pop bp retn sub_B636 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B670 proc near push bp mov bp, sp push large 0A00130h push 0Ch call far ptr loc_CAF6 push large 0B0013Ch mov al, byte_FC58 cbw add ax, 0Dh push ax call far ptr loc_CAF6 les bx, dword_FC54 cmp byte ptr es:[bx+28h], 1 jz short loc_B6BE push large 2200130h push 0Ch call far ptr loc_CAF6 push large 230013Ch mov al, byte_FC59 cbw add ax, 0Dh push ax call far ptr loc_CAF6 loc_B6BE: pop bp retn sub_B670 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B6C0 proc near var_7 = byte ptr -7 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 arg_6 = byte ptr 0Ah arg_8 = byte ptr 0Ch enter 8, 0 push si mov si, [bp+arg_4] mov [bp+var_6], 0 jmp short loc_B73B ; --------------------------------------------------------------------------- loc_B6CF: mov al, byte ptr [bp+var_6] add al, [bp+arg_8] mov [bp+var_7], al mov ah, 0 imul [bp+arg_2] mov bx, 100h cwd idiv bx mov [bp+var_7], al mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+396h] push si push 140h call sub_C005 add sp, 6 mov [bp+var_2], ax mov al, byte ptr [bp+var_6] add al, [bp+arg_6] mov [bp+var_7], al mov ah, 0 imul [bp+arg_0] mov bx, 100h cwd idiv bx mov [bp+var_7], al mov ah, 0 add ax, ax mov bx, ax push word ptr [bx+316h] push si push 0C8h ; 'Θ' call sub_C005 add sp, 6 mov [bp+var_4], ax push [bp+var_2] push ax call grcg_pset inc [bp+var_6] loc_B73B: cmp [bp+var_6], 100h jb short loc_B6CF pop si leave retn 0Ah sub_B6C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B747 proc near ; sub_BC1F:loc_BC69p ... var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 6, 0 push si push di mov al, byte ptr word_FC52 mov ah, 0 mov si, ax cmp si, 80h ; '€' jl short loc_B761 mov ax, 100h sub ax, si mov si, ax loc_B761: mov ax, si add ax, si add ax, 100h mov [bp+var_4], ax add si, 100h mov ax, si add ax, si mov [bp+var_2], ax push large 0C00006h call grcg_setcolor push word_FC52 mov al, byte ptr word_FC52 add al, al push ax push 0DCh ; 'ά' push si push [bp+var_2] call sub_B6C0 mov al, 0 sub al, byte ptr word_FC52 push ax mov al, byte ptr word_FC52 mov ah, 0 cwd sub ax, dx sar ax, 1 push ax push 78h ; 'x' push [bp+var_4] push si call sub_B6C0 push large 0C00005h call grcg_setcolor mov ax, word_FC66 cwd sub ax, dx sar ax, 1 mov di, ax test byte ptr word_FC66, 1 jz short loc_B7CD inc di loc_B7CD: mov [bp+var_6], 1 jmp short loc_B824 ; --------------------------------------------------------------------------- loc_B7D4: mov al, byte ptr [bp+var_6] add al, al mov dl, byte ptr word_FC52 sub dl, al push dx mov al, byte ptr word_FC52 add al, al mov dl, byte ptr [bp+var_6] shl dl, 2 sub al, dl push ax push 0DCh ; 'ά' push si push [bp+var_2] call sub_B6C0 mov al, 0 sub al, byte ptr word_FC52 mov dl, byte ptr [bp+var_6] add dl, dl add al, dl push ax mov al, byte ptr word_FC52 mov ah, 0 mov dx, [bp+var_6] add dx, dx sub ax, dx cwd sub ax, dx sar ax, 1 push ax push 78h ; 'x' push [bp+var_4] push si call sub_B6C0 inc [bp+var_6] loc_B824: cmp [bp+var_6], di jle short loc_B7D4 push large 0C00001h call grcg_setcolor lea ax, [di+1] mov [bp+var_6], ax jmp short loc_B88C ; --------------------------------------------------------------------------- loc_B83C: mov al, byte ptr [bp+var_6] add al, al mov dl, byte ptr word_FC52 sub dl, al push dx mov al, byte ptr word_FC52 add al, al mov dl, byte ptr [bp+var_6] shl dl, 2 sub al, dl push ax push 0DCh ; 'ά' push si push [bp+var_2] call sub_B6C0 mov al, 0 sub al, byte ptr word_FC52 mov dl, byte ptr [bp+var_6] add dl, dl add al, dl push ax mov al, byte ptr word_FC52 mov ah, 0 mov dx, [bp+var_6] add dx, dx sub ax, dx cwd sub ax, dx sar ax, 1 push ax push 78h ; 'x' push [bp+var_4] push si call sub_B6C0 inc [bp+var_6] loc_B88C: mov ax, [bp+var_6] cmp ax, word_FC66 jle short loc_B83C call grcg_off mov al, byte ptr word_FC52 add al, 2 mov byte ptr word_FC52, al pop di pop si leave retn sub_B747 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B8A6 proc near var_2 = word ptr -2 arg_0 = byte ptr 4 arg_2 = word ptr 6 enter 2, 0 push si push di mov si, [bp+arg_2] mov ax, si shl ax, 4 shl ax, 3 add ax, 0F0h ; 'π' mov di, ax mov al, [si+2468h] cbw imul ax, 14h add ax, 80h ; '€' mov [bp+var_2], ax push di push ax push 10h push ds mov ax, si imul ax, 3 add ax, 0A4Dh push ax mov al, [bp+arg_0] mov ah, 0 push ax call sub_1232 push di mov ax, [bp+var_2] add ax, 10h push ax push 10h push ds mov ax, si imul ax, 3 add ax, 0A53h push ax mov al, [bp+arg_0] mov ah, 0 push ax call sub_1232 pop di pop si leave retn 4 sub_B8A6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B908 proc near var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 2, 0 push si push di mov di, [bp+arg_2] mov si, [bp+arg_0] cmp byte ptr [si+246Ah], 0 jnz loc_BA82 cmp byte ptr [si+0A59h], 0 jz short loc_B932 or di, di jnz loc_BA82 mov byte ptr [si+0A59h], 0 jmp loc_BA82 ; --------------------------------------------------------------------------- loc_B932: test di, 1 jz short loc_B951 dec byte ptr [si+2468h] cmp byte ptr [si+2468h], 0 jge short loc_B94C mov al, byte_FC68 dec al mov [si+2468h], al loc_B94C: mov byte ptr [si+0A59h], 1 loc_B951: test di, 2 jz short loc_B974 inc byte ptr [si+2468h] mov al, [si+2468h] cbw mov dl, byte_FC68 mov dh, 0 cmp ax, dx jl short loc_B96F mov byte ptr [si+2468h], 0 loc_B96F: mov byte ptr [si+0A59h], 1 loc_B974: test di, 20h ; Hack db 00fh db 084h db 07fh db 000h mov al, [si+2468h] cbw mov [bp+var_2], ax les bx, dword_FC54 add bx, si mov al, byte ptr [bp+var_2] add al, al inc al mov es:[bx+0Ch], al push 1 call palette_white_in mov bx, 1 sub bx, si cmp byte ptr [bx+246Ah], 0 jz short loc_B9CC les bx, dword_FC54 mov al, es:[bx+0Ch] cmp al, es:[bx+0Dh] jnz short loc_B9CC add bx, si inc byte ptr es:[bx+0Ch] push si mov bx, [bp+var_2] shl bx, 2 push large dword ptr [bx+0A0Eh] push 1 jmp short loc_B9DA ; --------------------------------------------------------------------------- loc_B9CC: push si mov bx, [bp+var_2] shl bx, 2 push large dword ptr [bx+0A0Eh] push 0 loc_B9DA: call sub_C48A mov bx, 1 sub bx, si cmp byte ptr [bx+246Ah], 0 jz short loc_B9F1 mov word_FC62, 0 loc_B9F1: mov byte ptr [si+246Ah], 1 mov byte ptr [si+0A59h], 1 loc_B9FB: test di, 10h ; Hack db 00fh db 084h db 07fh db 000h mov al, [si+2468h] cbw mov [bp+var_2], ax les bx, dword_FC54 add bx, si mov al, byte ptr [bp+var_2] add al, al add al, 2 mov es:[bx+0Ch], al push 1 call palette_white_in mov bx, 1 sub bx, si cmp byte ptr [bx+246Ah], 0 jz short loc_BA53 les bx, dword_FC54 mov al, es:[bx+0Ch] cmp al, es:[bx+0Dh] jnz short loc_BA53 add bx, si dec byte ptr es:[bx+0Ch] push si mov bx, [bp+var_2] shl bx, 2 push large dword ptr [bx+0A0Eh] push 0 jmp short loc_BA61 ; --------------------------------------------------------------------------- loc_BA53: ; sub_B908+133j push si mov bx, [bp+var_2] shl bx, 2 push large dword ptr [bx+0A0Eh] push 1 loc_BA61: call sub_C48A mov bx, 1 sub bx, si cmp byte ptr [bx+246Ah], 0 jz short loc_BA78 mov word_FC62, 0 loc_BA78: mov byte ptr [si+246Ah], 1 mov byte ptr [si+0A59h], 1 loc_BA82: pop di pop si leave retn 4 sub_B908 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BA88 proc near push bp mov bp, sp call sub_B424 call text_clear les bx, dword_FC54 mov al, es:[bx+0Ch] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov byte_FC58, al mov al, es:[bx+0Dh] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov byte_FC59, al mov byte_FC5A, 0 mov byte_FC5B, 0 cmp byte ptr es:[bx+16h], 0 jnz short loc_BAD4 mov word ptr dword_FC5E+2, seg seg002 mov word ptr dword_FC5E, 0AFAh jmp short loc_BAF9 ; --------------------------------------------------------------------------- loc_BAD4: les bx, dword_FC54 cmp byte ptr es:[bx+16h], 1 jnz short loc_BAED mov word ptr dword_FC5E+2, seg seg002 mov word ptr dword_FC5E, 0B04h jmp short loc_BAF9 ; --------------------------------------------------------------------------- loc_BAED: mov word ptr dword_FC5E+2, seg seg002 mov word ptr dword_FC5E, 0B26h loc_BAF9: push 10h call sub_C19E mov word_FC62, 0 loc_BB06: call sub_B747 call sub_B4F3 call sub_B565 call sub_B636 call sub_B670 push 0 cmp byte_FC5A, 0 jz short loc_BB22 mov al, 0Fh jmp short loc_BB24 ; --------------------------------------------------------------------------- loc_BB22: mov al, 8 loc_BB24: push ax call sub_B8A6 push 1 cmp byte_FC5B, 0 jz short loc_BB35 mov al, 0Fh jmp short loc_BB37 ; --------------------------------------------------------------------------- loc_BB35: mov al, 0Ah loc_BB37: push ax call sub_B8A6 call sub_C1B4 call dword_FC5E push word_F292 push 0 call sub_B908 push word_F294 push 1 call sub_B908 test byte ptr word_F296+1, 10h jz short loc_BB82 mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A4h ; '€' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call text_clear call sub_B4D7 push 100h call sub_C403 mov al, 1 pop bp retn ; --------------------------------------------------------------------------- loc_BB82: cmp byte_FC5A, 0 jz short loc_BBB7 cmp byte_FC5B, 0 jz short loc_BBB7 call text_clear cmp word_FC62, 10h jb short loc_BBB0 mov ax, word_FC62 imul ax, 6 mov dx, 0C8h ; 'Θ' sub dx, ax mov PaletteTone, dx call far ptr palette_show loc_BBB0: cmp word_FC62, 20h ; ' ' ja short loc_BC18 loc_BBB7: ; sub_BA88+106j ... cmp vsync_Count1, 3 jb short loc_BBB7 cmp vsync_Count1, 4 jbe short loc_BBD0 cmp word_FC66, 1 jle short loc_BBD0 dec word_FC66 loc_BBD0: ; sub_BA88+142j mov vsync_Count1, 0 mov dx, 0A6h ; '¦' mov al, byte_FC5C out dx, al ; Interrupt Controller #2, 8259A mov al, 1 sub al, byte_FC5C mov byte_FC5C, al mov dx, 0A4h ; '€' out dx, al ; Interrupt Controller #2, 8259A push large 0C00000h call grcg_setcolor push large 0 push large 4F018Fh call grcg_byteboxfill_x call grcg_off inc word_FC62 les bx, dword_FC54 inc dword ptr es:[bx+10h] jmp loc_BB06 ; --------------------------------------------------------------------------- loc_BC18: call sub_B4D7 mov al, 0 pop bp retn sub_BA88 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BC1F proc near push bp mov bp, sp push si call sub_B424 les bx, dword_FC54 mov al, es:[bx+0Ch] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov byte_FC58, al mov al, es:[bx+0Dh] mov ah, 0 dec ax cwd sub ax, dx sar ax, 1 mov byte_FC59, al mov byte_FC5A, 0 mov byte_FC5B, 0 mov word ptr dword_FC5E+2, seg seg002 mov word ptr dword_FC5E, 0AD6h xor si, si jmp loc_BD8B ; --------------------------------------------------------------------------- loc_BC63: mov word_FC62, 0 loc_BC69: call sub_B747 call sub_B4F3 call sub_B565 call sub_B636 call sub_B670 call sub_C1B4 call dword_FC5E push 0 cmp byte_FC5A, 0 jz short loc_BC8E mov al, 0Fh jmp short loc_BC90 ; --------------------------------------------------------------------------- loc_BC8E: mov al, 8 loc_BC90: push ax call sub_B8A6 cmp byte_FC5A, 0 jz short loc_BCAE push 1 cmp byte_FC5B, 0 jz short loc_BCA8 mov al, 0Fh jmp short loc_BCAA ; --------------------------------------------------------------------------- loc_BCA8: mov al, 0Ah loc_BCAA: push ax call sub_B8A6 loc_BCAE: push word_F296 push si call sub_B908 test byte ptr word_F296+1, 10h jz short loc_BCE3 mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A4h ; '€' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call text_clear call sub_B4D7 push 100h call sub_C403 mov al, 1 jmp loc_BD97 ; --------------------------------------------------------------------------- loc_BCE3: or si, si jnz short loc_BCF7 cmp byte_FC5A, 0 jz short loc_BCF7 cmp word_FC62, 0Ch ja loc_BD8A loc_BCF7: or si, si jz short loc_BD29 cmp byte_FC5B, 0 jz short loc_BD29 call text_clear cmp word_FC62, 10h jb short loc_BD22 mov ax, word_FC62 imul ax, 6 mov dx, 0C8h ; 'Θ' sub dx, ax mov PaletteTone, dx call far ptr palette_show loc_BD22: cmp word_FC62, 20h ; ' ' ja short loc_BD8A loc_BD29: cmp vsync_Count1, 3 jb short loc_BD29 cmp vsync_Count1, 4 jbe short loc_BD42 cmp word_FC66, 1 jle short loc_BD42 dec word_FC66 loc_BD42: ; sub_BC1F+11Dj mov vsync_Count1, 0 mov dx, 0A6h ; '¦' mov al, byte_FC5C out dx, al ; Interrupt Controller #2, 8259A mov al, 1 sub al, byte_FC5C mov byte_FC5C, al mov dx, 0A4h ; '€' out dx, al ; Interrupt Controller #2, 8259A push large 0C00000h call grcg_setcolor push large 0 push large 4F018Fh call grcg_byteboxfill_x call grcg_off inc word_FC62 les bx, dword_FC54 inc dword ptr es:[bx+10h] jmp loc_BC69 ; --------------------------------------------------------------------------- loc_BD8A: ; sub_BC1F+108j inc si loc_BD8B: cmp si, 2 jl loc_BC63 call sub_B4D7 mov al, 0 loc_BD97: pop si pop bp retn sub_BC1F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BD9A proc near push bp mov bp, sp call sub_B424 mov byte_FC58, 0 mov byte_FC5A, 0 mov byte_FC5B, 1 mov word ptr dword_FC5E+2, seg seg002 mov word ptr dword_FC5E, 0AD6h mov word_FC62, 0 loc_BDC1: call sub_B747 call sub_B535 call sub_B565 call sub_B636 call sub_B670 push 0 cmp byte_FC5A, 0 jz short loc_BDDD mov al, 0Fh jmp short loc_BDDF ; --------------------------------------------------------------------------- loc_BDDD: mov al, 8 loc_BDDF: push ax call sub_B8A6 call sub_C1B4 call dword_FC5E push word_F296 push 0 call sub_B908 test byte ptr word_F296+1, 10h jz short loc_BE21 mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A4h ; '€' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call text_clear call sub_B4D7 push 100h call sub_C403 mov al, 1 pop bp retn ; --------------------------------------------------------------------------- loc_BE21: cmp byte_FC5A, 0 jz short loc_BE4F call text_clear cmp word_FC62, 10h jb short loc_BE48 mov ax, word_FC62 imul ax, 6 mov dx, 0C8h ; 'Θ' sub dx, ax mov PaletteTone, dx call far ptr palette_show loc_BE48: cmp word_FC62, 20h ; ' ' ja short loc_BEB0 loc_BE4F: cmp vsync_Count1, 3 jb short loc_BE4F cmp vsync_Count1, 4 jbe short loc_BE68 cmp word_FC66, 1 jle short loc_BE68 dec word_FC66 loc_BE68: mov vsync_Count1, 0 mov dx, 0A6h ; '¦' mov al, byte_FC5C out dx, al ; Interrupt Controller #2, 8259A mov al, 1 sub al, byte_FC5C mov byte_FC5C, al mov dx, 0A4h ; '€' out dx, al ; Interrupt Controller #2, 8259A push large 0C00000h call grcg_setcolor push large 0 push large 4F018Fh call grcg_byteboxfill_x call grcg_off inc word_FC62 les bx, dword_FC54 inc dword ptr es:[bx+10h] jmp loc_BDC1 ; --------------------------------------------------------------------------- loc_BEB0: call sub_B4D7 mov al, 0 pop bp retn sub_BD9A endp seg001 ends ; =========================================================================== ; Segment type: Pure code seg002 segment byte public 'CODE' use16 assume cs:seg002 ;org 7 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing db 0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BEB8 proc far push bp mov bp, sp nop push cs call near ptr sub_BFC2 call key_beep_on call text_systemline_show call text_cursor_show pop bp retf sub_BEB8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BED1 proc far push bp mov bp, sp mov dword_F1EA, 0A8000000h mov dword_F1EE, 0B0000000h mov dword_F1F2, 0B8000000h mov dword_F1F6, 0E0000000h pop bp retf sub_BED1 endp ; =============== S U B R O U T I N E ======================================= sub_BEFA proc far mov ah, 9 int 60h xor bx, bx cmp al, 0FFh jz short loc_BF0C inc bx mov byte_F1FA, 1 jmp short loc_BF10 ; --------------------------------------------------------------------------- loc_BF0C: mov bl, byte_F1FB loc_BF10: mov byte_DDCC, bl mov ax, bx retf sub_BEFA endp ; --------------------------------------------------------------------------- nop mov byte_F1FC, 60h ; '`' mov byte_F1FB, 0 mov byte_F1FA, 0 mov byte_F1FD, 0 xor ax, ax mov es, ax les bx, dword ptr es:[0180h] assume es:nothing cmp byte ptr es:[bx+2], 50h ; 'P' jnz short loc_BF4E cmp byte ptr es:[bx+3], 4Dh ; 'M' jnz short loc_BF4E cmp byte ptr es:[bx+4], 44h ; 'D' jnz short loc_BF4E mov ax, 1 retf ; --------------------------------------------------------------------------- loc_BF4E: xor ax, ax retf ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BF52 proc far ; sub_ADE2+26P ... arg_0 = dword ptr 6 arg_4 = word ptr 0Ah push bp mov bp, sp push si push ds mov cx, 0Dh xor si, si loc_BF5C: les bx, [bp+arg_0] add bx, si mov al, es:[bx] mov [si+1A0Eh], al inc si loop loc_BF5C mov ax, [bp+arg_4] cmp ax, 600h jnz short loc_BF93 cmp byte_F1FB, 0 jz short loc_BF93 xor bx, bx loc_BF7C: inc bx cmp byte ptr [bx+1A0Eh], 0 jnz short loc_BF7C mov byte ptr [bx+1A0Eh], 6Dh ; 'm' mov byte ptr [bx+1A0Fh], 64h ; 'd' mov byte ptr [bx+1A10h], 0 loc_BF93: mov dx, 1A0Eh mov ax, 3D00h int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE ; DS:DX -> ASCIZ filename ; AL = access mode ; 0 - read mov bx, ax mov ax, [bp+arg_4] cmp ax, 600h jnz short loc_BFB0 cmp byte_F1FB, 0 jz short loc_BFB0 int 61h ; reserved for user interrupt jmp short loc_BFB2 ; --------------------------------------------------------------------------- loc_BFB0: int 60h loc_BFB2: mov ax, 3F00h mov cx, 5000h int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE ; BX = file handle, CX = number of bytes to read ; DS:DX -> buffer pop ds mov ah, 3Eh int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE ; BX = file handle pop si pop bp retf sub_BF52 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BFC2 proc far ; sub_9BDF+150P ... push bp mov bp, sp call sub_2C1C mov dx, 0A6h ; '¦' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A mov dx, 0A4h ; '€' out dx, al ; Interrupt Controller #2, 8259A call vsync_end call sub_2676 call text_clear call js_end call egc_start pop bp retf sub_BFC2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C005 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp movsx eax, [bp+arg_2] movsx edx, [bp+arg_4] imul eax, edx sar eax, 8 add ax, [bp+arg_0] pop bp retf sub_C005 endp ; --------------------------------------------------------------------------- db 0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C020 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp push si push di push large 0C00000h call grcg_setcolor mov si, [bp+arg_0] shl si, 4 add si, 1AA8h mov ax, [si+0Eh] mov word ptr cs:loc_C097+1, ax mov ax, [bp+arg_4] sar ax, 3 add ax, [si+6] mov di, ax mov word ptr cs:loc_C090+1, ax mov ax, [si+8] mov word ptr cs:loc_C082+1, ax mov word ptr cs:loc_C09C+1, ax shl ax, 2 add ax, 50h ; 'P' mov word ptr cs:loc_C07E+1, ax jmp short $+2 mov ax, [bp+arg_2] mov bx, ax shl ax, 2 add ax, bx add ax, 0A800h mov es, ax push ds mov ax, [si+0Ch] mov ds, ax xor si, si loc_C07E: mov dx, 1234h cld loc_C082: mov cx, 1234h rep movsd sub di, dx jns short loc_C082 xor al, al out 7Ch, al loc_C090: mov bx, 1234h mov di, bx xor si, si loc_C097: mov ax, 1234h mov ds, ax assume ds:nothing loc_C09C: mov cx, 1234h loc_C09F: mov eax, [si] or es:[di], eax add si, 4 add di, 4 loop loc_C09F sub di, dx jns short loc_C09C mov di, bx mov ax, es add ax, 800h mov es, ax assume es:nothing cmp ax, 0C000h jb short loc_C09C cmp ax, 0C800h jnb short loc_C0CC add ax, 2000h mov es, ax assume es:nothing jmp short loc_C09C ; --------------------------------------------------------------------------- loc_C0CC: pop ds assume ds:dseg pop di pop si pop bp retf 6 sub_C020 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C0D4 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp push si push di push large 0C00000h call grcg_setcolor mov si, [bp+arg_0] shl si, 4 add si, 1AA8h mov ax, [bp+arg_4] sar ax, 3 add ax, [si+6] mov bx, [si+8] shl bx, 2 add ax, bx dec ax mov di, ax mov word ptr cs:loc_C154+1, ax mov word ptr cs:loc_C17C+1, ax mov word ptr cs:loc_C13E+1, bx mov word ptr cs:loc_C16A+1, bx mov ax, 50h ; 'P' sub ax, bx mov word ptr cs:loc_C13A+1, ax mov word ptr cs:loc_C166+1, ax jmp short $+2 mov ax, [bp+arg_2] mov bx, ax shl ax, 2 add ax, bx add ax, 0A800h mov es, ax assume es:nothing mov bx, 1E70h mov fs, word ptr [si+0Ch] xor si, si loc_C13A: mov dx, 1234h nop loc_C13E: mov cx, 1234h loc_C141: mov al, fs:[si] xlat mov es:[di], al inc si dec di loop loc_C141 sub di, dx jns short loc_C13E xor al, al out 7Ch, al loc_C154: mov di, 1234h mov si, [bp+arg_0] shl si, 4 add si, 1AA8h mov fs, word ptr [si+0Eh] xor si, si loc_C166: mov dx, 1234h nop loc_C16A: mov cx, 4D2h loc_C16D: mov al, fs:[si] xlat or es:[di], al inc si dec di loop loc_C16D sub di, dx jns short loc_C16A loc_C17C: mov di, 1234h mov ax, es add ax, 800h mov es, ax assume es:nothing cmp ax, 0C000h jb short loc_C16A cmp ax, 0C800h jnb short loc_C197 add ax, 2000h mov es, ax assume es:nothing jmp short loc_C16A ; --------------------------------------------------------------------------- loc_C197: pop di pop si pop bp retf 6 sub_C0D4 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C19E proc far arg_0 = word ptr 6 push bp mov bp, sp mov vsync_Count1, 0 loc_C1A7: mov ax, vsync_Count1 cmp ax, [bp+arg_0] jb short loc_C1A7 pop bp retf 2 sub_C19E endp ; --------------------------------------------------------------------------- db 0 ; =============== S U B R O U T I N E ======================================= sub_C1B4 proc far xor ax, ax mov word_F292, ax mov word_F294, ax mov word_F296, ax mov word_E9A4, ax jmp short $+2 mov bl, 2 xor ax, ax mov es, ax loc_C1CA: mov ah, byte ptr es:[531h] test ah, 4 jz short loc_C1D9 or word_F296, 1 loc_C1D9: test ah, 20h jz short loc_C1E3 or word_F296, 2 loc_C1E3: test ah, 8 jz short loc_C1F2 or word_F294, 20h or word_F296, 4 loc_C1F2: test ah, 10h jz short loc_C201 or word_F294, 10h or word_F296, 8 loc_C201: mov ah, byte ptr es:[533h] test ah, 1 jz short loc_C215 or word_F294, 8 or word_F296, 8 loc_C215: test ah, 4 jz short loc_C226 or word_F294, 200h or word_F296, 200h loc_C226: test ah, 8 jz short loc_C235 or word_F294, 2 or word_F296, 2 loc_C235: test ah, 10h jz short loc_C246 or word_F294, 800h or word_F296, 800h loc_C246: mov ah, byte ptr es:[532h] test ah, 40h jz short loc_C25A or word_F294, 4 or word_F296, 4 loc_C25A: test ah, 4 jz short loc_C26B or word_F294, 100h or word_F296, 100h loc_C26B: test ah, 8 jz short loc_C27A or word_F294, 1 or word_F296, 1 loc_C27A: test ah, 10h jz short loc_C28B or word_F294, 400h or word_F296, 400h loc_C28B: mov ah, byte ptr es:[52Fh] test ah, 2 jz short loc_C29F or word_F292, 20h or word_F296, 20h loc_C29F: test ah, 4 jz short loc_C2AE or word_F292, 10h or word_F296, 10h loc_C2AE: test ah, 10h jz short loc_C2B9 or word_F292, 200h loc_C2B9: test ah, 20h jz short loc_C2C3 or word_F292, 2 loc_C2C3: test ah, 40h jz short loc_C2CE or word_F292, 800h loc_C2CE: mov ah, byte ptr es:[52Eh] test ah, 1 jz short loc_C2DD or word_F292, 4 loc_C2DD: test ah, 4 jz short loc_C2E7 or word_F292, 8 loc_C2E7: mov ah, byte ptr es:[52Ch] test ah, 8 jz short loc_C2F7 or word_F292, 100h loc_C2F7: test ah, 10h jz short loc_C301 or word_F292, 1 loc_C301: test ah, 20h jz short loc_C30C or word_F292, 400h loc_C30C: test ah, 1 jz short loc_C317 or word_F296, 4000h loc_C317: mov ah, byte ptr es:[52Ah] test ah, 1 jz short loc_C327 or word_F296, 1000h loc_C327: mov ah, byte ptr es:[52Dh] test ah, 10h jz short loc_C337 or word_F296, 2000h loc_C337: mov ah, byte ptr es:[530h] test ah, 10h jz short loc_C346 or word_F296, 20h loc_C346: dec bl jz short locret_C354 mov cx, 400h loc_C34D: out 5Fh, al loop loc_C34D jmp loc_C1CA ; --------------------------------------------------------------------------- locret_C354: retf sub_C1B4 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C356 proc far arg_0 = word ptr 6 push bp mov bp, sp push 30h ; '0' ; n push ds mov ax, [bp+arg_0] imul ax, 48h add ax, 1CD8h push ax ; src push ds push offset Palettes ; dest call _memcpy add sp, 0Ah call far ptr palette_show pop bp retf 2 sub_C356 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C37B proc far var_6 = word ptr -6 var_4 = dword ptr -4 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah enter 6, 0 push si push di mov si, [bp+arg_2] mov di, [bp+arg_0] mov bx, di shl bx, 2 mov ax, [bx+1CAAh] mov dx, [bx+1CA8h] mov word ptr [bp+var_4+2], ax mov word ptr [bp+var_4], dx mov [bp+var_6], 0 jmp short loc_C3EF ; --------------------------------------------------------------------------- loc_C3A1: push [bp+arg_4] push si push large [bp+var_4] mov bx, di imul bx, 48h push word ptr [bx+1CD4h] call graph_pack_put_8 inc si cmp si, 190h jl short loc_C3C2 sub si, 190h loc_C3C2: mov bx, di imul bx, 48h mov ax, [bx+1CD4h] shr ax, 1 add word ptr [bp+var_4], ax mov eax, [bp+var_4] shr eax, 10h mov dx, word ptr [bp+var_4] shr dx, 4 add ax, dx mov dx, word ptr [bp+var_4] and dx, 0Fh mov word ptr [bp+var_4+2], ax mov word ptr [bp+var_4], dx inc [bp+var_6] loc_C3EF: mov bx, di imul bx, 48h mov ax, [bx+1CD6h] cmp ax, [bp+var_6] ja short loc_C3A1 pop di pop si leave retf 6 sub_C37B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C403 proc far ; sub_9BDF+14BP ... arg_0 = word ptr 6 push bp mov bp, sp cmp byte_DDCC, 0 jz short loc_C41D mov ax, [bp+arg_0] cmp byte_F1FB, 1 jz short loc_C41B int 60h jmp short loc_C41D ; --------------------------------------------------------------------------- loc_C41B: int 61h ; reserved for user interrupt loc_C41D: pop bp retf 2 sub_C403 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C421 proc far arg_0 = dword ptr 6 push bp mov bp, sp push 55F0h call mem_assign_dos or ax, ax jz short loc_C435 mov ax, 1 pop bp retf ; --------------------------------------------------------------------------- loc_C435: nop push cs call near ptr sub_BED1 call graph_start mov dx, 0A6h ; '¦' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A call graph_clear mov dx, 0A6h ; '¦' mov al, 0 out dx, al ; Interrupt Controller #2, 8259A mov dx, 0A4h ; '€' out dx, al ; Interrupt Controller #2, 8259A call vsync_start call key_beep_off call text_systemline_hide call text_cursor_hide call egc_start call sub_2DB8 push large [bp+arg_0] call sub_2B60 xor ax, ax pop bp retf sub_C421 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C48A proc far var_4 = dword ptr -4 arg_0 = word ptr 6 arg_2 = dword ptr 8 arg_6 = word ptr 0Ch enter 4, 0 push si push di mov di, [bp+arg_6] push di nop push cs call near ptr sub_C69C mov ax, di shl ax, 4 add ax, 1AA8h mov si, ax push large [bp+arg_2] call file_ropen push ds push si push 10h call file_read mov ax, [si] imul ax, 5 movzx eax, ax mov [bp+var_4], eax movsx eax, [bp+arg_0] imul eax, [bp+var_4] push eax push 1 call file_seek push word ptr [si] call hmem_allocbyte mov [si+0Ch], ax push word ptr [si+0Ch] push 0 push word ptr [si] call file_read mov ax, [si] shl ax, 2 push ax call hmem_allocbyte mov [si+0Eh], ax push word ptr [si+0Eh] push 0 mov ax, [si] shl ax, 2 push ax call file_read call file_close pop di pop si leave retf 8 sub_C48A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C514 proc far var_4 = dword ptr -4 arg_0 = word ptr 6 arg_2 = dword ptr 8 arg_6 = word ptr 0Ch enter 4, 0 push si push di mov di, [bp+arg_6] push di nop push cs call near ptr sub_C69C mov ax, di shl ax, 4 add ax, 1AA8h mov si, ax push large [bp+arg_2] call file_ropen push ds push si push 10h call file_read mov ax, [si] imul ax, 5 movzx eax, ax mov [bp+var_4], eax movsx eax, [bp+arg_0] imul eax, [bp+var_4] push eax push 1 call file_seek movzx eax, word ptr [si] push eax push 1 call file_seek mov word ptr [si+0Ch], 0 mov ax, [si] shl ax, 2 push ax call hmem_allocbyte mov [si+0Eh], ax push word ptr [si+0Eh] push 0 mov ax, [si] shl ax, 2 push ax call file_read call file_close pop di pop si leave retf 8 sub_C514 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C59A proc far var_2 = word ptr -2 arg_0 = dword ptr 6 arg_4 = word ptr 0Ah enter 2, 0 push si push di push large [bp+arg_0] call file_ropen push [bp+arg_4] nop push cs call near ptr sub_C69C mov ax, [bp+arg_4] shl ax, 4 add ax, 1AA8h mov si, ax push ds push ax push 10h call file_read mov di, si mov [bp+var_2], 1 jmp short loc_C5DD ; --------------------------------------------------------------------------- loc_C5CE: mov ax, [bp+arg_4] add ax, [bp+var_2] push ax nop push cs call near ptr sub_C69C inc [bp+var_2] loc_C5DD: mov al, [di+0Ah] mov ah, 0 cmp ax, [bp+var_2] jg short loc_C5CE mov [bp+var_2], 0 jmp short loc_C669 ; --------------------------------------------------------------------------- loc_C5EE: mov ax, [di] mov [si], ax mov ax, [di+2] mov [si+2], ax mov ax, [di+4] mov [si+4], ax mov ax, [di+6] mov [si+6], ax mov ax, [di+8] mov [si+8], ax mov al, [di+0Ah] mov [si+0Ah], al mov byte ptr [si+0Bh], 0 cmp byte_DDE0, 0 jnz short loc_C633 push word ptr [si] call hmem_allocbyte mov [si+0Ch], ax push word ptr [si+0Ch] push 0 push word ptr [si] call file_read jmp short loc_C645 ; --------------------------------------------------------------------------- loc_C633: mov word ptr [si+0Ch], 0 movzx eax, word ptr [si] push eax push 1 call file_seek loc_C645: mov ax, [si] shl ax, 2 push ax call hmem_allocbyte mov [si+0Eh], ax push word ptr [si+0Eh] push 0 mov ax, [si] shl ax, 2 push ax call file_read inc [bp+var_2] add si, 10h loc_C669: mov al, [di+0Ah] mov ah, 0 cmp ax, [bp+var_2] jg loc_C5EE call file_close pop di pop si leave retf 6 sub_C59A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C680 proc far arg_0 = dword ptr 6 arg_4 = word ptr 0Ah push bp mov bp, sp mov byte_DDE0, 1 push [bp+arg_4] push large [bp+arg_0] push cs call near ptr sub_C59A mov byte_DDE0, 0 pop bp retf 6 sub_C680 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C69C proc far arg_0 = word ptr 6 push bp mov bp, sp push si push di mov ax, [bp+arg_0] shl ax, 4 add ax, 1AA8h mov di, ax xor si, si jmp short loc_C6D0 ; --------------------------------------------------------------------------- loc_C6B0: mov bx, si add bx, bx cmp word ptr [bx+di+0Ch], 0 jz short loc_C6CF mov bx, si add bx, bx push word ptr [bx+di+0Ch] call hmem_free mov bx, si add bx, bx mov word ptr [bx+di+0Ch], 0 loc_C6CF: inc si loc_C6D0: cmp si, 2 jl short loc_C6B0 pop di pop si pop bp retf 2 sub_C69C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C6DB proc far var_32 = byte ptr -32h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = word ptr -0Ch var_A = word ptr -0Ah var_8 = dword ptr -8 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = dword ptr 6 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh enter 32h, 0 push si push di mov di, [bp+arg_8] mov ax, [bp+arg_4] sar ax, 4 and ax, 3 mov [bp+var_E], ax mov ax, [bp+arg_4] sar ax, 6 and ax, 7 mov [bp+var_10], ax push 0C0h ; 'ΐ' mov ax, [bp+arg_4] and ax, 0Fh push ax call grcg_setcolor mov dx, 68h ; 'h' mov al, 0Bh out dx, al jmp loc_C924 ; --------------------------------------------------------------------------- loc_C714: mov ax, [bp+arg_6] imul ax, 50h push ax mov ax, di mov bx, 8 cwd idiv bx pop dx add dx, ax mov word ptr [bp+var_8+2], 0A800h mov word ptr [bp+var_8], dx mov ax, di cwd idiv bx mov [bp+var_C], dx les bx, [bp+arg_0] assume es:nothing mov al, es:[bx] mov ah, 0 mov bx, ax test byte ptr [bx+103Dh], 4 jz short loc_C769 mov bx, word ptr [bp+arg_0] mov al, es:[bx] cbw shl ax, 8 mov dl, es:[bx+1] mov dh, 0 add ax, dx push ax call sub_9561 pop cx mov [bp+var_2], ax add word ptr [bp+arg_0], 2 jmp short loc_C7AF ; --------------------------------------------------------------------------- loc_C769: les bx, [bp+arg_0] mov al, es:[bx] mov ah, 0 mov bx, ax test byte ptr [bx+103Dh], 3 jz short loc_C787 mov bx, word ptr [bp+arg_0] mov al, es:[bx] mov ah, 0 add ax, 2980h jmp short loc_C7A2 ; --------------------------------------------------------------------------- loc_C787: les bx, [bp+arg_0] mov al, es:[bx] cbw mov bx, ax test byte ptr [bx+0D51h], 5Eh jz short loc_C7A7 mov bx, word ptr [bp+arg_0] mov al, es:[bx] mov ah, 0 add ax, 2900h loc_C7A2: mov [bp+var_2], ax jmp short loc_C7AC ; --------------------------------------------------------------------------- loc_C7A7: mov [bp+var_2], 2B21h loc_C7AC: inc word ptr [bp+arg_0] loc_C7AF: mov al, byte ptr [bp+var_2] and al, 0FFh mov dx, 0A1h ; '‘' out dx, al ; Interrupt Controller #2, 8259A mov ax, [bp+var_2] shr ax, 8 sub al, 20h ; ' ' mov dx, 0A3h ; '£' out dx, al ; Interrupt Controller #2, 8259A cmp [bp+var_2], 2921h jb short loc_C810 cmp [bp+var_2], 2B7Eh ja short loc_C810 cmp di, 278h jg loc_C92F mov [bp+var_12], 0 jmp short loc_C803 ; --------------------------------------------------------------------------- loc_C7E1: mov al, byte ptr [bp+var_12] or al, 20h mov dx, 0A5h ; '₯' out dx, al ; Interrupt Controller #2, 8259A mov dx, 0A9h ; '©' in al, dx ; Interrupt Controller #2, 8259A mov ah, 0 shl ax, 8 mov bx, [bp+var_12] add bx, bx lea dx, [bp+var_32] add bx, dx mov ss:[bx], ax inc [bp+var_12] loc_C803: cmp [bp+var_12], 10h jl short loc_C7E1 mov [bp+var_A], 0 jmp short loc_C866 ; --------------------------------------------------------------------------- loc_C810: cmp di, 270h jg loc_C92F mov [bp+var_12], 0 jmp short loc_C85B ; --------------------------------------------------------------------------- loc_C81F: mov al, byte ptr [bp+var_12] or al, 20h mov dx, 0A5h ; '₯' out dx, al ; Interrupt Controller #2, 8259A mov dx, 0A9h ; '©' in al, dx ; Interrupt Controller #2, 8259A mov ah, 0 shl ax, 8 mov bx, [bp+var_12] add bx, bx lea dx, [bp+var_32] add bx, dx mov ss:[bx], ax mov dx, 0A5h ; '₯' mov al, byte ptr [bp+var_12] out dx, al ; Interrupt Controller #2, 8259A mov dx, 0A9h ; '©' in al, dx ; Interrupt Controller #2, 8259A mov ah, 0 mov bx, [bp+var_12] add bx, bx lea dx, [bp+var_32] add bx, dx add ss:[bx], ax inc [bp+var_12] loc_C85B: cmp [bp+var_12], 10h jl short loc_C81F mov [bp+var_A], 1 loc_C866: mov [bp+var_12], 0 jmp loc_C90B ; --------------------------------------------------------------------------- loc_C86E: mov bx, [bp+var_12] add bx, bx lea ax, [bp+var_32] add bx, ax mov ax, ss:[bx] mov [bp+var_4], ax mov ax, [bp+var_E] cmp ax, 1 jz short loc_C892 cmp ax, 2 jz short loc_C8A8 cmp ax, 3 jz short loc_C89E jmp short loc_C8BE ; --------------------------------------------------------------------------- loc_C892: mov si, [bp+var_4] mov ax, si add ax, ax or [bp+var_4], ax jmp short loc_C8BE ; --------------------------------------------------------------------------- loc_C89E: mov si, [bp+var_4] mov ax, si add ax, ax or [bp+var_4], ax loc_C8A8: mov si, [bp+var_4] mov ax, si add ax, ax or [bp+var_4], ax xor si, [bp+var_4] mov ax, si add ax, ax not ax and [bp+var_4], ax loc_C8BE: ; sub_C6DB+1C1j cmp [bp+var_C], 0 jz short loc_C8F1 mov cl, byte ptr [bp+var_C] add cl, 8 mov ax, [bp+var_4] shr ax, cl les bx, [bp+var_8] mov es:[bx], al mov ax, [bp+var_4] mov cl, byte ptr [bp+var_C] shr ax, cl mov es:[bx+1], al mov cl, 8 sub cl, byte ptr [bp+var_C] mov al, byte ptr [bp+var_4] shl al, cl mov es:[bx+2], al jmp short loc_C904 ; --------------------------------------------------------------------------- loc_C8F1: mov ax, [bp+var_4] shr ax, 8 les bx, [bp+var_8] mov es:[bx], al mov al, byte ptr [bp+var_4] mov es:[bx+1], al loc_C904: add word ptr [bp+var_8], 50h ; 'P' inc [bp+var_12] loc_C90B: cmp [bp+var_12], 10h jl loc_C86E cmp [bp+var_A], 0 jz short loc_C91C add di, 8 loc_C91C: mov ax, [bp+var_10] add ax, 8 add di, ax loc_C924: les bx, [bp+arg_0] cmp byte ptr es:[bx], 0 jnz loc_C714 loc_C92F: ; sub_C6DB+139j mov dx, 68h ; 'h' mov al, 0Ah out dx, al call grcg_off pop di pop si leave retf 0Ah sub_C6DB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C940 proc far var_2 = word ptr -2 arg_0 = dword ptr 6 arg_4 = word ptr 0Ah enter 2, 0 push si mov si, [bp+arg_4] mov ax, si imul ax, 48h add ax, 1CC0h push ds push ax mov bx, si shl bx, 2 push large dword ptr [bx+1CA8h] call graph_pi_free push large [bp+arg_0] mov ax, si imul ax, 48h add ax, 1CC0h push ds push ax mov ax, si shl ax, 2 add ax, 1CA8h push ds push ax call graph_pi_load_pack mov [bp+var_2], ax pop si leave retf 6 sub_C940 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C986 proc far ; sub_9E16:loc_9E24P ... push bp mov bp, sp nop push cs call near ptr sub_C1B4 cmp word_DABC, 0 jz short loc_C9A1 call sub_2DF4 mov ax, word_E9A4 or word_F296, ax loc_C9A1: mov ax, word_F292 or word_F296, ax pop bp retf sub_C986 endp ; --------------------------------------------------------------------------- push bp mov bp, sp nop push cs call near ptr sub_C1B4 pop bp retf ; --------------------------------------------------------------------------- push bp mov bp, sp nop push cs call near ptr sub_C1B4 cmp word_DABC, 0 jz short loc_C9D4 call sub_2DF4 mov ax, word_E9A4 mov word_F292, ax mov ax, word_F296 mov word_F294, ax loc_C9D4: pop bp retf ; --------------------------------------------------------------------------- push bp mov bp, sp nop push cs call near ptr sub_C1B4 cmp word_DABC, 0 jz short loc_C9F6 call sub_2DF4 mov ax, word_E9A4 mov word_F294, ax mov ax, word_F296 mov word_F292, ax loc_C9F6: pop bp retf ; --------------------------------------------------------------------------- push bp mov bp, sp nop push cs call near ptr sub_C1B4 mov ax, word_F296 or word_F292, ax cmp word_DABC, 0 jz short loc_CA1A call sub_2DF4 mov ax, word_E9A4 or word_F292, ax loc_CA1A: mov word_F294, 0 pop bp retf ; --------------------------------------------------------------------------- push bp mov bp, sp nop push cs call near ptr sub_C1B4 mov ax, word_F296 or ax, word_F292 mov word_F294, ax cmp word_DABC, 0 jz short loc_CA47 call sub_2DF4 mov ax, word_E9A4 or word_F294, ax loc_CA47: mov word_F292, 0 pop bp retf ; --------------------------------------------------------------------------- push bp mov bp, sp nop push cs call near ptr sub_C1B4 test byte ptr word_F296+1, 10h jnz short loc_CA65 test byte ptr word_F296+1, 20h jz short loc_CA6B loc_CA65: mov word_F296, 1000h loc_CA6B: mov word_F292, 0 mov word_F294, 0 pop bp retf ; --------------------------------------------------------------------------- push bp mov bp, sp nop push cs call near ptr sub_C1B4 cmp word_DABC, 0 jz short loc_CA94 call sub_2DF4 mov ax, word_E9A4 or word_F296, ax loc_CA94: mov ax, word_F292 or word_F296, ax mov word_F292, 0 mov word_F294, 0 pop bp retf ; --------------------------------------------------------------------------- push bp mov bp, sp push si push di mov si, [bp+6] xor di, di loc_CAB3: push cs call near ptr sub_C986 cmp word_F296, 0 jz short loc_CAC7 push 1 nop push cs call near ptr sub_C19E jmp short loc_CAB3 ; --------------------------------------------------------------------------- loc_CAC7: or si, si jnz short loc_CAEB mov si, 270Fh jmp short loc_CAEB ; --------------------------------------------------------------------------- loc_CAD0: push cs call near ptr sub_C986 cmp word_F296, 0 jnz short loc_CAEF inc di push 1 nop push cs call near ptr sub_C19E cmp si, 270Fh jnz short loc_CAEB xor di, di loc_CAEB: cmp di, si jl short loc_CAD0 loc_CAEF: pop di pop si pop bp retf 2 ; --------------------------------------------------------------------------- db 0 ; --------------------------------------------------------------------------- loc_CAF6: push bp mov bp, sp push si push di mov si, [bp+6] shl si, 4 add si, 1AA8h mov ax, [bp+0Ah] sar ax, 3 add ax, [si+6] mov di, ax mov ax, [si+8] mov cs:word_CB3D, ax jmp short $+2 shl ax, 2 add ax, 50h ; 'P' mov dx, ax mov ax, [bp+8] mov bx, ax shl ax, 2 add ax, bx add ax, 0A800h mov es, ax push ds mov ax, [si+0Eh] mov ds, ax xor si, si mov bx, di cld nop ; --------------------------------------------------------------------------- db 0B9h word_CB3D dw 1234h db 0F3h, 66h, 0A5h, 2Bh, 0FAh, 79h, 0F6h, 8Bh, 0FBh, 8Ch db 0C0h, 5, 0, 8, 8Eh, 0C0h, 3Dh, 0, 0C0h, 72h, 0E8h, 3Dh db 0, 0C8h, 73h, 7, 5, 0, 20h, 8Eh, 0C0h, 0EBh, 0DCh, 1Fh db 5Fh, 5Eh, 5Dh, 0CAh, 6, 0, 90h ; =============== S U B R O U T I N E ======================================= sub_CB68 proc far push di xor ax, ax mov di, 1E70h xor dl, dl jmp short loc_CB7D ; --------------------------------------------------------------------------- loc_CB72: xor dl, dl mov cx, 8 loc_CB77: rol al, 1 rcr dl, 1 loop loc_CB77 loc_CB7D: mov [di], dl inc di inc al jnz short loc_CB72 pop di retf sub_CB68 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CB86 proc far arg_0 = word ptr 6 push bp mov bp, sp mov vsync_Count1, 0 loc_CB8F: mov ax, vsync_Count1 cmp ax, [bp+arg_0] jb short loc_CB8F pop bp retf 2 sub_CB86 endp seg002 ends ; =========================================================================== ; Segment type: Pure code seg003 segment byte public 'CODE' use16 assume cs:seg003 ;org 0Bh assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing db 0 include libs/BorlandC/ctor2[textc].asm include libs/BorlandC/ctor3[textc].asm include libs/BorlandC/strings[textc].asm dd 0, 0, 0 seg003 ends ; =========================================================================== ; Segment type: Pure data dseg segment para public 'DATA' use16 assume cs:dseg include libs/BorlandC/c0[data].asm byte_D880 db 0 unk_D881 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 1 db 0 db 0 db 2 db 0 db 3 db 5 db 4 db 6 aIiklmnop db 'ˆ‰Š‹ŒŽ',0 aIiklccss db 'ˆ‰Š‹–—˜™',0 aTufxmnop db '’“”•ŒŽ',0 db 3 db 1 db 5 db 0Dh db 7 db 0Bh db 9 db 5 db 58h ; X db 2 db 0 db 0 db 0E8h ; θ db 3 db 0 db 0 db 80h ; € db 0Ch db 0 db 0 db 0F4h ; τ db 1 db 0 db 0 unk_D8CC db 30h ; 0 db 31h ; 1 db 32h ; 2 db 0 a345678 db '345678',0 aAbcdefg db 'ABCDEFG',0 aVgdej db '‚ƒ„…†',0 a?@ db '=>?@',0 aHij db 'HIJ',0 ; sub_9F57+132o aNop db 'nop',0 aKlmn db 'KLMN',0 a_A db '\]^_`a',0 db 'ΟΟΟΟ',0 aQrs db 'qrs',0 aTuvw db 'tuvw',0 aXyz db 'xyz',0 asc_D910 db '{|}~',0 aZ db 'ΟΟZ[ΟΟΟ',0 aOpqr db 'ΟOPQRΟΟ',0 aStuvwxy db 'STUVWXY',0 aBcde db 'bcde',0 aBcdf db 'bcdf',0 aBcdg db 'bcdg',0 aHilmhi db 'hilmhi',0 aJklmhi db 'jklmhi',0 aHilmjk db 'hilmjk',0 byte_D951 db 0 byte_D952 db 0 ; sub_A0E0+102w ... byte_D953 db 1 ; sub_A0E0:loc_A0FAw ... byte_D954 db 0 byte_D955 db 0 aYume_cfg db 'YUME.CFG',0 ; char path[] path db 'mainl',0 ; sub_9A17+176o ... asc_D965 db ' ',0 aVfvcvbgngngbgn db '‚f‚c‚bƒNƒƒbƒN‚ͺ‚T‚l‚g‚š‚Ι‚Θ‚Α‚Δ‚’‚ά‚·B',0Ah,0 aUmx db '“Œ•ϋ–²Žž‹σ‚Ν‚QD‚T‚l‚g‚š‚Ε‚Θ‚’‚Ɛ³ν‚ΙƒQ[ƒ€‚ͺƒvƒŒƒCo—ˆ‚ά‚Ή‚ρ',0Ah,0 aViosrfvVVkvqbd db 0Ah db '‚¨Žθ”‚Ε‚·‚ͺ‚QD‚T‚l‚g‚š‚ɐ؂θ‘Φ‚¦‚āA‚ΰ‚€ˆκ“xŽΐs‚΅‚ĂˁB',0Ah,0 aCOul db '–²Žž‹σ1.dat',0 aGbgvgkxsslvVBb db 0Ah db 'ƒƒ‚ƒŠ•s‘«‚Ε‚·Bƒƒ‚ƒŠ‹σ‚«‚𑝂₡‚Δ‚©‚ηŽΐs‚΅‚Δ‚­‚θ‚α‚κ',0Ah,0 aMikoft_bft db 'MIKOFT.bft',0 db 0 include libs/master.lib/bfnt_id[data].asm include libs/master.lib/clip[data].asm include libs/master.lib/edges[data].asm include libs/master.lib/fil[data].asm include libs/master.lib/dos_ropen[data].asm include libs/master.lib/gaiji_backup[data].asm include libs/master.lib/gaiji_entry_bfnt[data].asm include libs/master.lib/grp[data].asm db 0 word_DABC dw 0 ; sub_2DF4+5r ... db 0 db 0 db 0 db 0 db 0 db 0 include libs/master.lib/pal[data].asm include libs/master.lib/pf[data].asm db 0 include libs/master.lib/rand[data].asm include libs/master.lib/sin8[data].asm include libs/master.lib/tx[data].asm include libs/master.lib/vs[data].asm include libs/master.lib/wordmask[data].asm include libs/master.lib/mem[data].asm include libs/master.lib/super_entry_bfnt[data].asm include libs/master.lib/superpa[data].asm byte_DDCC db 0 db 0 aPal98Grb db 'pal98 grb',0 include libs/master.lib/draw_trapezoid[data].asm a_exe db '.exe',0 db 0 byte_DDE0 db 0 db 0 dd aNo_1B@cVOul ; "NO.1 @–²‚ΝŽž‹σ‚π‰z‚¦‚Δ " dd aNo_2B@B@Select ; "NO.2 @ @ Selection " dd aNo_3Umx ; "NO.3 “Œ•ϋ—d—φ’k " dd aNo_4Reincarnat ; "NO.4 Reincarnation " dd aNo_5Dim_Dream ; "NO.5 Dim. Dream " dd aNo_6TabulaRasa ; "NO.6 Tabula rasa@`‹σ”’­— " dd aNo_7B@Maniacal ; "NO.7 @ Maniacal Princess " dd aNo_8CPOBLostDr ; "NO.8 –²ΑŽΈ `Lost Dream " dd aNo_9CMCvlyBDre ; "NO.9 –²ŒΆ—V‹Y `Dream War " dd aNo_10Cvc@mirab ; "NO.10 –‚–@ŒˆνI`Fight it out!" dd aNo_11B@SailorO ; "NO.11 @ Sailor of Time " dd aNo_12Strawberr ; "NO.12 Strawberry Crisis!! " dd aNo_13F ; "NO.13 ”ρ“ˆκ–‚–@’ŠE˜_ " dd aNo_14B@cvc@pri ; "NO.14 @–‚–@ΰˆ€ " dd aNo_15B@lviuvC ; "NO.15 @‹v‰“‚Μ–² " dd aNo_16Umx ; "NO.16 “Œ•ϋ‚̐‚’‹σ " dd aNo_17IiiuvCumo ; "NO.17 ‰i‰“‚Μ–žŒŽ " dd aNo_18MapleDrea ; "NO.18 Maple Dream... " dd aNo_19CRlvLxu ; "NO.19 —μl‚Μ‹x“ϊ " dd aB@b@ ; " @@ " dd aB@b@vpvxvivf ; " @@‚p‚•‚‰‚” " dd aOp_m_0 ; "op.m" dd aSelect_m_0 ; "select.m" dd a00mm_m ; "00mm.m" dd a01mm_m ; "01mm.m" dd a02mm_m ; "02mm.m" dd a03mm_m ; "03mm.m" dd a04mm_m ; "04mm.m" dd a05mm_m ; "05mm.m" dd a06mm_m ; "06mm.m" dd aDec_m ; "dec.m" dd a07mm_m ; "07mm.m" dd a08mm_m ; "08mm.m" dd aDemo1_m ; "demo1.m" dd aDemo2_m ; "demo2.m" dd aDemo3_m ; "demo3.m" dd aDemo4_m ; "demo4.m" dd aDemo5_m ; "demo5.m" dd aEd_m ; "ed.m" dd aScore_m ; "score.m" byte_DE82 db 0 byte_DE83 db 0 aNo_1B@cVOul db 'NO.1 @–²‚ΝŽž‹σ‚π‰z‚¦‚Δ ',0 aNo_2B@B@Select db 'NO.2 @ @ Selection ',0 aNo_3Umx db 'NO.3 “Œ•ϋ—d—φ’k ',0 aNo_4Reincarnat db 'NO.4 Reincarnation ',0 aNo_5Dim_Dream db 'NO.5 Dim. Dream ',0 aNo_6TabulaRasa db 'NO.6 Tabula rasa@`‹σ”’­— ',0 aNo_7B@Maniacal db 'NO.7 @ Maniacal Princess ',0 aNo_8CPOBLostDr db 'NO.8 –²ΑŽΈ `Lost Dream ',0 aNo_9CMCvlyBDre db 'NO.9 –²ŒΆ—V‹Y `Dream War ',0 aNo_10Cvc@mirab db 'NO.10 –‚–@ŒˆνI`Fight it out!',0 aNo_11B@SailorO db 'NO.11 @ Sailor of Time ',0 aNo_12Strawberr db 'NO.12 Strawberry Crisis!! ',0 aNo_13F db 'NO.13 ”ρ“ˆκ–‚–@’ŠE˜_ ',0 aNo_14B@cvc@pri db 'NO.14 @–‚–@ΰˆ€ ',0 aNo_15B@lviuvC db 'NO.15 @‹v‰“‚Μ–² ',0 aNo_16Umx db 'NO.16 “Œ•ϋ‚̐‚’‹σ ',0 aNo_17IiiuvCumo db 'NO.17 ‰i‰“‚Μ–žŒŽ ',0 aNo_18MapleDrea db 'NO.18 Maple Dream... ',0 aNo_19CRlvLxu db 'NO.19 —μl‚Μ‹x“ϊ ',0 aB@b@ db ' @@ ',0 aB@b@vpvxvivf db ' @@‚p‚•‚‰‚” ',0 aOp_m_0 db 'op.m',0 aSelect_m_0 db 'select.m',0 a00mm_m db '00mm.m',0 a01mm_m db '01mm.m',0 a02mm_m db '02mm.m',0 a03mm_m db '03mm.m',0 a04mm_m db '04mm.m',0 a05mm_m db '05mm.m',0 a06mm_m db '06mm.m',0 aDec_m db 'dec.m',0 a07mm_m db '07mm.m',0 a08mm_m db '08mm.m',0 aDemo1_m db 'demo1.m',0 aDemo2_m db 'demo2.m',0 aDemo3_m db 'demo3.m',0 aDemo4_m db 'demo4.m',0 aDemo5_m db 'demo5.m',0 aEd_m db 'ed.m',0 aScore_m db 'score.m',0 aMusic_txt db 'MUSIC.TXT',0 aOp3_pi db 'op3.pi',0 aOpwin_bft db 'opwin.bft',0 aOp_m db 'op.m',0 aTl01_pi db 'TL01.PI',0 aTl02_pi db 'TL02.PI',0 db 0 word_E1F2 dw 0A04h aYume_nem db 'YUME.NEM',0 db 0 off_E1FE dd a00sl_cd2 ; "00SL.CD2" dd a02sl_cd2 ; "02SL.CD2" dd a04sl_cd2 ; "04SL.CD2" dd a06sl_cd2 ; "06SL.CD2" dd a08sl_cd2 ; "08SL.CD2" dd a10sl_cd2 ; "10SL.CD2" dd a12sl_cd2 ; "12SL.CD2" dd a14sl_cd2 ; "14SL.CD2" dd a16sl_cd2 ; "16SL.CD2" db 3 db 1 db 5 db 4 db 4 db 2 db 3 db 4 db 3 db 2 db 3 db 1 db 4 db 1 db 4 db 2 db 2 db 5 db 4 db 5 db 1 db 5 db 2 db 4 db 5 db 5 db 3 db 12h db 13h db 0 db 16h db 17h db 0 db 14h db 15h db 0 db 18h db 19h db 0 db 0 db 0 a00sl_cd2 db '00SL.CD2',0 a02sl_cd2 db '02SL.CD2',0 a04sl_cd2 db '04SL.CD2',0 a06sl_cd2 db '06SL.CD2',0 a08sl_cd2 db '08SL.CD2',0 a10sl_cd2 db '10SL.CD2',0 a12sl_cd2 db '12SL.CD2',0 a14sl_cd2 db '14SL.CD2',0 a16sl_cd2 db '16SL.CD2',0 aSlex_cd2 db 'slex.cd2',0 a99sl_cdg db '99sl.cdg',0 aSlwin_cdg db 'slwin.cdg',0 aSlex_cdg db 'slex.cdg',0 aSelect_m db 'select.m',0 aChname_bft db 'chname.bft',0 aTlsl_rgb db 'TLSL.RGB',0 aAS_ db 'AΑα',0 aAbnormalProgra db 'Abnormal program termination',0Dh,0Ah,0 db 0 include libs/BorlandC/atexit[data].asm include libs/BorlandC/exit[data].asm include libs/BorlandC/files[data].asm include libs/BorlandC/__IOERROR[data].asm db 0 include libs/BorlandC/new[data].asm __stklen dw 1000h include libs/master.lib/ctype[data].asm db 0 include libs/BorlandC/xxv[data].asm include libs/BorlandC/cputype[data].asm include libs/BorlandC/fbrk[data].asm include libs/BorlandC/signal[data].asm dword_E794 dd 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 5Ch ; \ db 0 word_E7A8 dw 0 ; _setvbuf+4Bw word_E7AA dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm include libs/BorlandC/strings[data].asm include libs/BorlandC/kbhit[data].asm db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 8 db 0 db 8 db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 8 db 0Ah db 0Ah db 0Ah db 0Ah db 0Ah db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 9 db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0Ch db 0 db 0 db 0 db 0 aPath db 'PATH',0 db '/\',0 db 0 a_bat db '.BAT',0 a_com db '.COM',0 a_exe_0 db '.EXE',0 a_bat_0 db '.BAT',0 aComspec db 'COMSPEC',0 aC db '/c',0 InitStart label byte include libs/BorlandC/new[initdata].asm include libs/BorlandC/setupio[initdata].asm include libs/BorlandC/cputype[initdata].asm db 0 db 0Fh db 0EEh ; ξ db 45h ; E db 0 db 0 include libs/BorlandC/setenvp[initdata].asm InitEnd label byte ExitStart label byte include libs/BorlandC/new[exitdata].asm ExitEnd label byte bdata@ label byte byte_E97A db ? byte_E97B db ? byte_E97C db ? ; sub_A203+1EAw ... db ? word_E97E dw ? include libs/master.lib/clip[bss].asm include libs/master.lib/fil[bss].asm word_E9A4 dw ? ; sub_C1B4+Bw ... db ? db ? ; include libs/master.lib/pal[bss].asm include libs/master.lib/vs[bss].asm include libs/master.lib/vsync[bss].asm include libs/master.lib/mem[bss].asm include libs/master.lib/superpa[bss].asm dword_F1EA dd ? ; sub_A8CF+53r ... dword_F1EE dd ? dword_F1F2 dd ? dword_F1F6 dd ? ; sub_A8CF+10Fr ... byte_F1FA db ? byte_F1FB db ? ; seg002:006Dw ... byte_F1FC db ? byte_F1FD db ? dd ? ; dd ? ; dd ? ; db ? ; db ? ; unk_F20C db ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; db ? ; word_F28C dw ? word_F28E dw ? word_F290 dw ? word_F292 dw ? word_F294 dw ? word_F296 dw ? ; sub_9BDF:loc_9C4Ar ... dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dword_F498 dd ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; unk_F4B0 db ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; db ? ; unk_F760 db ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; db ? ; word_F828 dw ? word_F82A dw ? unk_F82C db ? ; db ? ; word_F82E dw ? unk_F830 db ? ; db ? ; word_F832 dw ? unk_F834 db ? ; ; sub_A8CF+107r ... db ? ; word_F836 dw ? unk_F838 db ? ; ; sub_A8CF+11Ar ... db ? ; word_F83A dw ? unk_F83C db ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; db ? ; word_FB84 dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; byte_FBD6 db ? ; sub_B35D:loc_B376r byte_FBD7 db ? dd ? ; byte_FBDC db ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; db ? ; byte_FC50 db ? byte_FC51 db ? word_FC52 dw ? dword_FC54 dd ? byte_FC58 db ? byte_FC59 db ? ; sub_B565:loc_B608r ... byte_FC5A db ? byte_FC5B db ? byte_FC5C db ? ; sub_BA88+151r ... db ? dword_FC5E dd ? word_FC62 dw ? ; sub_B908+16Aw ... word_FC64 dw ? word_FC66 dw ? byte_FC68 db ? ; sub_B636:loc_B663r ... db ? ; include libs/BorlandC/atexit[bss].asm include libs/BorlandC/sigdata[bss].asm dd ? ; include libs/BorlandC/signal[bss].asm include libs/BorlandC/xx[bss].asm edata@ label byte dseg ends ; =========================================================================== ; Segment type: Uninitialized seg005 segment byte stack 'STACK' use16 assume cs:seg005 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing db 80h dup(?) seg005 ends end startx