; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 57F21130457B229B7ED74E30D2B6E6E5 ; File Name : th05/MAINE.EXE ; Format : MS-DOS executable (EXE) ; Base Address: 0h Range: 0h-1C6F0h Loaded length: 128A6h ; Entry Point : 0:0 ; OS type : MS DOS ; Application type: Executable 16bit .286 ; Force the .model directive to create 16-bit default segments... .model large __LARGE__ equ 1 .386 ; ... then switch to what we actually need. ; And yes, we can't move this to an include file for some reason. include ReC98.inc include th05/th05.inc extern _execl:proc extern _tolower:proc ; =========================================================================== ; Segment type: Pure code _TEXT segment word public 'CODE' use16 assume cs:_TEXT assume es:nothing, ds:_DATA, fs:nothing, gs:nothing include libs/master.lib/bfnt_entry_pat.asm include libs/master.lib/bfnt_header_read.asm include libs/master.lib/bfnt_header_analysis.asm include libs/master.lib/atrtcmod.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_in.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_filesize.asm include libs/master.lib/dos_keyclear.asm include libs/master.lib/dos_read.asm include libs/master.lib/dos_seek.asm include libs/master.lib/dos_setvect.asm include libs/master.lib/egc.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_size.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_circlefill.asm include libs/master.lib/grc_setclip.asm include libs/master.lib/grcg_hline.asm include libs/master.lib/grcg_pset.asm include libs/master.lib/grcg_setcolor.asm include libs/master.lib/grcg_vline.asm include libs/master.lib/gdc_outpw.asm include libs/master.lib/get_machine_98.asm include libs/master.lib/get_machine_at.asm include libs/master.lib/get_machine_dosbox.asm include libs/master.lib/check_machine_fmr.asm include libs/master.lib/get_machine.asm include libs/master.lib/gaiji_putca.asm include libs/master.lib/gaiji_putsa.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 include libs/master.lib/graph_hide.asm include libs/master.lib/graph_pi_free.asm include libs/master.lib/graph_pi_load_pack.asm include libs/master.lib/graph_scrollup.asm include libs/master.lib/graph_show.asm include libs/master.lib/iatan2.asm include libs/master.lib/isqrt.asm include libs/master.lib/js_end.asm include libs/master.lib/palette_show.asm include libs/master.lib/pfclose.asm include libs/master.lib/pfgetc.asm 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/rottbl.asm include libs/master.lib/smem_release.asm include libs/master.lib/smem_wget.asm include libs/master.lib/soundio.asm include libs/master.lib/text_clear.asm 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/palette_white_out.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 include libs/master.lib/mem_unassign.asm 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_rect.asm include libs/master.lib/super_put.asm include libs/master.lib/super_convert_tiny.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2DB6 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp push ds push si push di mov es, graph_VramSeg mov cx, [bp+arg_4] mov di, [bp+arg_2] mov bx, [bp+arg_0] shl bx, 1 mov bp, [bx+21DCh] mov ds, word ptr [bx+1DDCh] mov ax, di shl ax, 2 add di, ax shl di, 4 mov ax, cx and cx, 7 shr ax, 3 add di, ax xor si, si lodsw cmp al, 80h jnz short loc_2E3F GRCG_NOINT_SETMODE_VIA_MOV al, GC_RMW push ax mov dx, bp mov al, 50h ; 'P' mul dl mov bp, ax shr dl, 1 pop ax nop loc_2E02: GRCG_SETCOLOR_DIRECT_INLINED ah mov ch, dl loc_2E1C: lodsw mov bl, ah xor ah, ah ror ax, cl mov es:[di], ax xor bh, bh ror bx, cl mov es:[di+50h], bx add di, 0A0h dec ch jnz short loc_2E1C sub di, bp lodsw cmp al, GC_TDW jz short loc_2E02 out 7Ch, al loc_2E3F: pop di pop si pop ds pop bp retf 6 sub_2DB6 endp include libs/master.lib/js_start.asm include libs/master.lib/js_sense.asm include libs/master.lib/bgm_bell_org.asm include libs/master.lib/bgm_mget.asm include libs/master.lib/bgm_read_sdata.asm include libs/master.lib/bgm_timer.asm include libs/master.lib/bgm_pinit.asm include libs/master.lib/bgm_timerhook.asm include libs/master.lib/bgm_play.asm include libs/master.lib/bgm_sound.asm include libs/master.lib/bgm_effect_sound.asm include libs/master.lib/bgm_stop_play.asm include libs/master.lib/bgm_set_tempo.asm include libs/master.lib/bgm_init_finish.asm include libs/master.lib/bgm_stop_sound.asm include libs/master.lib/graph_pack_put_8_noclip.asm include libs/master.lib/graph_gaiji_puts.asm include libs/master.lib/graph_gaiji_putc.asm include libs/master.lib/pfint21.asm db 0 include th03/formats/pfopen.asm include libs/master.lib/pf_str_ieq.asm _TEXT ends ; =========================================================================== ; Segment type: Pure code maine_01_TEXT segment byte public 'CODE' use16 assume cs:maine_01_TEXT ;org 5 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A545 proc near var_A = byte ptr -0Ah var_4 = word ptr -4 enter 0Ah, 0 push si push ds push offset aMiko_cfg ; "MIKO.CFG" call file_ropen push ss lea ax, [bp+var_A] push ax push 0Ah call file_read call file_close mov si, [bp+var_4] mov word ptr _ksoconfig+2, si mov word ptr _ksoconfig, 0 mov ax, si pop si leave retn sub_A545 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_A576(char *arg0) sub_A576 proc near _arg0 = dword ptr 4 push bp mov bp, sp call cdg_freeall call graph_hide call text_clear call sub_EC36 pushd 0 pushd [bp+_arg0] ; arg0 pushd [bp+_arg0] ; path call _execl add sp, 0Ch pop bp retn 4 sub_A576 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A5A4 proc near push bp mov bp, sp les bx, _ksoconfig cmp byte ptr es:[bx+1Ah], 0FEh jnz short loc_A5BD les bx, off_10190 mov byte ptr es:[bx+3], 30h ; '0' jmp short loc_A5DC ; --------------------------------------------------------------------------- loc_A5BD: les bx, _ksoconfig cmp byte ptr es:[bx+1Ah], 0FDh jnz short loc_A5D3 les bx, off_10190 mov byte ptr es:[bx+3], 32h ; '2' jmp short loc_A5DC ; --------------------------------------------------------------------------- loc_A5D3: les bx, off_10190 mov byte ptr es:[bx+3], 31h ; '1' loc_A5DC: les bx, _ksoconfig mov al, es:[bx+14h] add al, 30h ; '0' les bx, off_10190 mov es:[bx+4], al push word ptr off_10190+2 push bx call sub_A695 call sub_AFD6 pop bp retn sub_A5A4 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) public _main _main proc far _argc = word ptr 6 _argv = dword ptr 8 _envp = dword ptr 0Ch push bp mov bp, sp call sub_A545 or ax, ax jz loc_A693 mov word_107CA, 5208h push ds push offset aKaikidan1_dat call sub_F0B4 les bx, _ksoconfig mov al, es:[bx+12h] mov ah, 0 push ax mov al, es:[bx+15h] mov ah, 0 push ax call snd_determine_modes call snd_load pascal, ds, offset aMiko, SND_LOAD_SE call graph_show les bx, _ksoconfig mov eax, es:[bx+28h] mov random_seed, eax push 64h ; 'd' call frame_delay les bx, _ksoconfig cmp byte ptr es:[bx+1Ah], 0FEh jb short loc_A665 call sub_A5A4 call sub_E41D jmp short loc_A679 ; --------------------------------------------------------------------------- loc_A665: les bx, _ksoconfig cmp byte ptr es:[bx+1Ah], 0FDh jnz short loc_A67E call sub_A5A4 call sub_B3CB call sub_D1B1 loc_A679: call sub_C1DD jmp short loc_A684 ; --------------------------------------------------------------------------- loc_A67E: call sub_C1DD call sub_D1B1 loc_A684: kajacall KAJA_SONG_FADE, 4 push ds push offset arg0 ; "op" call sub_A576 loc_A693: pop bp retf _main endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A695 proc near var_2 = word ptr -2 arg_0 = dword ptr 4 enter 2, 0 pushd [bp+arg_0] call file_ropen or ax, ax jnz short loc_A6AD mov ax, 1 leave retn 4 ; --------------------------------------------------------------------------- loc_A6AD: call file_size mov [bp+var_2], ax mov word_14F88, 2E88h push ds push word_14F88 push ax call file_read call file_close xor ax, ax leave retn 4 sub_A695 endp EGC_START_COPY_DEF 1, near ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A705 proc near arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 arg_6 = word ptr 0Ah push bp mov bp, sp push si push di mov si, [bp+arg_6] mov di, [bp+arg_4] graph_accesspage 1 push si push di push 0 push [bp+arg_2] push [bp+arg_0] call sub_EE68 push si push di push 14000C8h call sub_F3FC pop di pop si pop bp retn 8 sub_A705 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A738 proc near var_2 = byte ptr -2 var_1 = byte ptr -1 arg_0 = dword ptr 4 enter 2, 0 mov bx, word_14F88 mov cl, [bx] inc word_14F88 mov bx, word_14F88 mov al, [bx] mov [bp+var_1], al inc word_14F88 mov bx, word_14F88 mov al, [bx] mov [bp+var_2], al inc word_14F88 mov al, cl mov ah, 0 mov bx, ax test byte ptr [bx+1A39h], 2 jnz short loc_A77F les bx, [bp+arg_0] mov ax, word_1500C mov es:[bx], ax sub word_14F88, 3 leave retn 4 ; --------------------------------------------------------------------------- loc_A77F: mov al, [bp+var_1] mov ah, 0 mov bx, ax test byte ptr [bx+1A39h], 2 jnz short loc_A7A3 mov al, cl mov ah, 0 add ax, 0FFD0h les bx, [bp+arg_0] mov es:[bx], ax sub word_14F88, 2 leave retn 4 ; --------------------------------------------------------------------------- loc_A7A3: mov al, [bp+var_2] mov ah, 0 mov bx, ax test byte ptr [bx+1A39h], 2 jnz short loc_A7D3 mov al, cl mov ah, 0 add ax, 0FFD0h imul ax, 0Ah mov dl, [bp+var_1] mov dh, 0 add ax, dx add ax, 0FFD0h les bx, [bp+arg_0] mov es:[bx], ax dec word_14F88 leave retn 4 ; --------------------------------------------------------------------------- loc_A7D3: mov al, cl mov ah, 0 add ax, 0FFD0h imul ax, 64h mov dl, [bp+var_1] mov dh, 0 add dx, 0FFD0h imul dx, 0Ah add ax, dx mov dl, [bp+var_2] mov dh, 0 add ax, dx add ax, 0FFD0h les bx, [bp+arg_0] mov es:[bx], ax leave retn 4 sub_A738 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A7FE proc near arg_0 = dword ptr 4 push bp mov bp, sp mov bx, word_14F88 cmp byte ptr [bx], 2Ch ; ',' loc_A808: jnz short loc_A819 inc word_14F88 pushd [bp+arg_0] call sub_A738 pop bp retn 4 ; --------------------------------------------------------------------------- loc_A819: les bx, [bp+arg_0] mov ax, word_1500C mov es:[bx], ax pop bp retn 4 sub_A7FE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A826 proc near push bp mov bp, sp add word_15004, 10h cmp word_15004, 230h jl short loc_A864 add word_15006, 10h mov word_15004, 90h ; '・ cmp word_15006, 180h jl short loc_A864 call sub_A8EC cmp byte_14F8E, 0 jnz short loc_A858 push 0 call sub_A92B loc_A858: mov word_15004, 50h ; 'P' mov word_15006, 140h loc_A864: pop bp retn sub_A826 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A866 proc near var_2 = word ptr -2 arg_0 = word ptr 4 enter 2, 0 push si push di mov cx, 140h jmp short loc_A8E0 ; --------------------------------------------------------------------------- loc_A871: egc_selectpat egc_setrop EGC_COMPAREREAD or EGC_WS_PATREG or EGC_RL_MEMREAD outw2 EGC_BITLENGTHREG, 0Fh mov bx, [bp+arg_0] shl bx, 3 mov ax, cx and ax, 3 add ax, ax add bx, ax outw2 EGC_MASKREG, [bx+732h] mov ax, cx shl ax, 6 mov dx, cx shl dx, 4 add ax, dx add ax, 0Ah mov si, ax xor di, di jmp short loc_A8D9 ; --------------------------------------------------------------------------- loc_A8B2: graph_accesspage 1 les bx, _VRAM_PLANE_B add bx, si mov ax, es:[bx] mov [bp+var_2], ax mov al, 0 out dx, al mov bx, word ptr _VRAM_PLANE_B add bx, si mov ax, [bp+var_2] mov es:[bx], ax add di, 10h add si, 2 loc_A8D9: cmp di, 1E0h jl short loc_A8B2 inc cx loc_A8E0: cmp cx, 180h jl short loc_A871 pop di pop si leave retn 2 sub_A866 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A8EC proc near push bp mov bp, sp push si graph_accesspage 0 call egc_start_copy_1 cmp byte_14F8E, 0 jnz short loc_A917 xor si, si jmp short loc_A912 ; --------------------------------------------------------------------------- loc_A904: push si call sub_A866 push word_15008 call frame_delay inc si loc_A912: cmp si, 4 jl short loc_A904 loc_A917: push 4 call sub_A866 call egc_off push 1 call frame_delay pop si pop bp retn sub_A8EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A92B proc near var_2 = word ptr -2 arg_0 = word ptr 4 enter 2, 0 push si push di mov si, [bp+arg_0] xor di, di mov [bp+var_2], 0 loc_A93B: call _input_reset_sense_held cmp _input, INPUT_NONE jz short loc_A950 push 1 call frame_delay jmp short loc_A93B ; --------------------------------------------------------------------------- loc_A950: or si, si jnz short loc_A95C mov si, 3E7h mov [bp+var_2], 1 loc_A95C: graph_accesspage 0 loc_A962: call _input_reset_sense_held push 240h push word_15006 push 100010h call sub_ECDE or si, si jle short loc_A9BD test _input.hi, high INPUT_OK jnz short loc_A9BD test _input.lo, low INPUT_SHOT jnz short loc_A9BD test _input.hi, high INPUT_CANCEL jnz short loc_A9BD push 240h push word_15006 mov ax, di shr ax, 3 and ax, 3 add ax, 1Ch push ax push 0Fh call graph_gaiji_putc inc di cmp [bp+var_2], 0 jnz short loc_A9B4 dec si loc_A9B4: push 1 call frame_delay jmp short loc_A962 ; --------------------------------------------------------------------------- loc_A9BD: pop di pop si leave retn 2 sub_A92B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A9C3 proc near var_16 = byte ptr -16h var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = byte ptr 4 enter 16h, 0 push si mov al, [bp+arg_0] mov ah, 0 push ax ; ch call _tolower pop cx mov [bp+arg_0], al mov ah, 0 mov [bp+var_6], ax mov cx, 10h ; switch 16 cases mov bx, offset word_AF96 loc_A9E2: mov ax, cs:[bx] cmp ax, [bp+var_6] jz short loc_A9F2 add bx, 2 loop loc_A9E2 jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_A9F2: jmp word ptr cs:[bx+20h] ; switch jump loc_A9F6: add word_15006, 10h ; jumptable 0000A9F2 case 110 mov word_15004, 50h ; 'P' cmp word_15006, 180h jl loc_AF8F ; default loc_AA0B: mov bx, word_14F88 ; jumptable 0000A9F2 case 115 mov al, [bx] mov [bp+arg_0], al call sub_A8EC cmp [bp+arg_0], 2Dh ; '-' jz short loc_AA3A mov word_1500C, 0 push ss lea ax, [bp+var_2] push ax call sub_A738 cmp byte_14F8E, 0 jnz short loc_AA3E push [bp+var_2] call sub_A92B jmp short loc_AA3E ; --------------------------------------------------------------------------- loc_AA3A: inc word_14F88 loc_AA3E: mov word_15004, 50h ; 'P' mov word_15006, 140h graph_accesspage 1 push 500140h push 1E00040h call sub_ECDE mov dx, 0A6h mov al, 0 loc_AA66: out dx, al jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AA6A: mov bx, word_14F88 ; jumptable 0000A9F2 case 99 mov al, [bx] mov ah, 0 push ax ; ch call _tolower pop cx mov [bp+arg_0], al cmp [bp+arg_0], 3Dh ; '=' jz loc_AF34 mov word_1500C, 0Fh push ss lea ax, [bp+var_2] push ax call sub_A738 mov al, byte ptr [bp+var_2] mov byte_1500A, al jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AA9B: mov word_1500C, 2 ; jumptable 0000A9F2 case 98 push ss lea ax, [bp+var_2] push ax call sub_A738 mov ax, [bp+var_2] mov word_107BC, ax jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AAB2: mov bx, word_14F88 ; jumptable 0000A9F2 case 119 mov al, [bx] mov ah, 0 push ax ; ch call _tolower pop cx mov [bp+arg_0], al cmp [bp+arg_0], 6Fh ; 'o' jz short loc_AAD0 cmp [bp+arg_0], 69h ; 'i' jnz short loc_AAFE loc_AAD0: inc word_14F88 mov word_1500C, 1 push ss lea ax, [bp+var_2] push ax call sub_A738 cmp [bp+arg_0], 69h ; 'i' jnz short loc_AAF3 push [bp+var_2] call palette_white_in jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AAF3: push [bp+var_2] call palette_white_out jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AAFE: call sub_A8EC mov word_1500C, 40h cmp [bp+arg_0], 6Dh ; 'm' jz short loc_AB33 cmp [bp+arg_0], 6Bh ; 'k' jnz short loc_AB17 inc word_14F88 loc_AB17: push ss lea ax, [bp+var_2] push ax call sub_A738 cmp byte_14F8E, 0 jnz loc_AF8F ; default push [bp+var_2] call frame_delay jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AB33: inc word_14F88 mov bx, word_14F88 mov al, [bx] mov [bp+arg_0], al cmp [bp+arg_0], 6Bh ; 'k' jnz short loc_AB4A inc word_14F88 loc_AB4A: push ss lea ax, [bp+var_2] push ax call sub_A738 push ss lea ax, [bp+var_4] push ax call sub_A7FE cmp byte_14F8E, 0 jnz loc_AF8F ; default push [bp+var_2] push [bp+var_4] call sub_F25F jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AB71: mov bx, word_14F88 ; jumptable 0000A9F2 case 118 cmp byte ptr [bx], 70h ; 'p' jz short loc_AB91 mov word_1500C, 2 push ss lea ax, [bp+var_2] push ax call sub_A738 mov ax, [bp+var_2] mov word_15008, ax jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AB91: inc word_14F88 mov word_1500C, 0 push ss lea ax, [bp+var_2] push ax call sub_A738 mov dx, 0A4h mov al, byte ptr [bp+var_2] jmp loc_AA66 ; --------------------------------------------------------------------------- loc_ABAC: mov word_1500C, 64h ; 'd' ; jumptable 0000A9F2 case 116 push ss lea ax, [bp+var_2] push ax call sub_A738 cmp byte_14F8E, 0 jnz short loc_ABC8 push 1 call frame_delay loc_ABC8: mov ax, [bp+var_2] mov PaletteTone, ax call far ptr palette_show jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_ABD6: mov bx, word_14F88 ; jumptable 0000A9F2 case 102 mov al, [bx] mov [bp+arg_0], al cmp [bp+arg_0], 6Dh ; 'm' jz short loc_AC21 cmp [bp+arg_0], 69h ; 'i' jz short loc_ABF3 cmp [bp+arg_0], 6Fh ; 'o' jnz loc_AF8F ; default loc_ABF3: inc word_14F88 mov word_1500C, 1 push ss lea ax, [bp+var_2] push ax call sub_A738 cmp [bp+arg_0], 69h ; 'i' jnz short loc_AC16 push [bp+var_2] call palette_black_in jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AC16: push [bp+var_2] call palette_black_out jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AC21: inc word_14F88 mov word_1500C, 1 push ss lea ax, [bp+var_2] push ax call sub_A738 mov ax, [bp+var_2] add ax, (KAJA_SONG_FADE shl 8) push ax jmp loc_AF11 ; --------------------------------------------------------------------------- loc_AC3D: mov word_1500C, 8 ; jumptable 0000A9F2 case 103 push ss lea ax, [bp+var_2] push ax call sub_A738 mov [bp+var_4], 0 jmp short loc_AC75 ; --------------------------------------------------------------------------- loc_AC52: test byte ptr [bp+var_4], 1 jz short loc_AC5C push 4 jmp short loc_AC5F ; --------------------------------------------------------------------------- loc_AC5C: push 18Ch loc_AC5F: call graph_scrollup cmp byte_14F8E, 0 jnz short loc_AC72 push 1 call frame_delay loc_AC72: inc [bp+var_4] loc_AC75: mov ax, [bp+var_4] cmp ax, [bp+var_2] jle short loc_AC52 call graph_scrollup pascal, 0 jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AC87: call sub_A8EC ; jumptable 0000A9F2 case 107 mov word_1500C, 0 push ss lea ax, [bp+var_2] push ax call sub_A738 cmp byte_14F8E, 0 jnz loc_AF8F ; default push [bp+var_2] call sub_A92B jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_ACAA: graph_accesspage 1 ; jumptable 0000A9F2 case 64 call graph_clear graph_accesspage 0 call graph_clear call sub_EB66 jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_ACC8: mov bx, word_14F88 ; jumptable 0000A9F2 case 112 mov al, [bx] mov [bp+arg_0], al inc word_14F88 cmp [bp+arg_0], 3Dh ; '=' jz short loc_ACE1 cmp [bp+arg_0], 40h jnz short loc_AD13 loc_ACE1: graph_accesspage 1 cmp [bp+arg_0], 3Dh ; '=' jnz short loc_ACF4 call pi_slot_palette_apply pascal, 0 loc_ACF4: call pi_slot_put pascal, large 0, 0 push 0 call graph_copy_page graph_accesspage 0 call sub_EB66 jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AD13: cmp [bp+arg_0], 2Dh ; '-' jnz short loc_AD23 call pi_slot_free pascal, 0 jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AD23: cmp [bp+arg_0], 70h ; 'p' jnz short loc_AD33 call pi_slot_palette_apply pascal, 0 jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AD33: cmp [bp+arg_0], 2Ch ; ',' jz short loc_AD40 dec word_14F88 jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AD40: mov [bp+var_2], 0 jmp short loc_AD74 ; --------------------------------------------------------------------------- loc_AD47: mov bx, word_14F88 mov al, [bx] mov [bp+arg_0], al inc word_14F88 mov ah, 0 mov bx, ax test byte ptr [bx+1A39h], 20h jnz short loc_AD7A loc_AD5F: cmp [bp+arg_0], 20h ; ' ' jz short loc_AD7A lea bx, [bp+var_16] add bx, [bp+var_2] mov al, [bp+arg_0] mov ss:[bx], al inc [bp+var_2] loc_AD74: cmp [bp+var_2], 0Ch jl short loc_AD47 loc_AD7A: lea bx, [bp+var_16] add bx, [bp+var_2] mov byte ptr ss:[bx], 0 call pi_slot_free pascal, 0 push 0 push ss lea ax, [bp+var_16] push ax call pi_slot_load jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AD9A: mov word_1500C, 4 ; jumptable 0000A9F2 case 61 mov bx, word_14F88 mov al, [bx] mov [bp+arg_0], al cmp [bp+arg_0], 3Dh ; '=' jz short loc_AE07 push ss lea ax, [bp+var_2] push ax call sub_A738 push 1 call frame_delay graph_showpage 0 graph_accesspage 1 cmp [bp+var_2], 4 jge short loc_ADE3 call pi_slot_put_quarter pascal, (160 shl 16) + 64, 0, [bp+var_2] jmp loc_AE64 ; --------------------------------------------------------------------------- loc_ADE3: call grcg_setcolor pascal, (GC_RMW shl 16) + 0 push 140040h push 3B0107h call grcg_byteboxfill_x GRCG_OFF_CLOBBERING dx jmp short loc_AE64 ; --------------------------------------------------------------------------- loc_AE07: inc word_14F88 push ss lea ax, [bp+var_2] push ax call sub_A738 mov word_1500C, 1 push ss loc_AE1A: lea ax, [bp+var_4] push ax call sub_A7FE xor si, si jmp short loc_AE42 ; --------------------------------------------------------------------------- loc_AE25: push 0A00040h push [bp+var_2] push si call sub_A705 cmp byte_14F8E, 0 jnz short loc_AE41 push [bp+var_4] call frame_delay loc_AE41: inc si loc_AE42: cmp si, 4 jl short loc_AE25 graph_accesspage 1 call pi_slot_put_quarter pascal, (160 shl 16) + 64, 0, [bp+var_2] push 1 call frame_delay loc_AE64: push 0A00040h push 14000C8h call sub_F3FC jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AE78: mov bx, word_14F88 ; jumptable 0000A9F2 case 109 mov al, [bx] mov [bp+arg_0], al cmp [bp+arg_0], 24h ; '$' jnz short loc_AE96 inc word_14F88 kajacall KAJA_SONG_STOP jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AE96: cmp [bp+arg_0], 2Ah ; '*' jnz short loc_AEAA inc word_14F88 kajacall KAJA_SONG_PLAY jmp loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AEAA: cmp [bp+arg_0], 2Ch ; ',' jnz loc_AF8F ; default inc word_14F88 mov [bp+var_2], 0 jmp short loc_AEEA ; --------------------------------------------------------------------------- loc_AEBD: mov bx, word_14F88 mov al, [bx] mov [bp+arg_0], al inc word_14F88 mov ah, 0 mov bx, ax test byte ptr [bx+1A39h], 20h jnz short loc_AEF0 cmp [bp+arg_0], 20h ; ' ' jz short loc_AEF0 lea bx, [bp+var_16] add bx, [bp+var_2] mov al, [bp+arg_0] mov ss:[bx], al inc [bp+var_2] loc_AEEA: cmp [bp+var_2], 0Ch jl short loc_AEBD loc_AEF0: lea bx, [bp+var_16] add bx, [bp+var_2] mov byte ptr ss:[bx], 0 kajacall KAJA_SONG_STOP push ss lea ax, [bp+var_16] push ax push SND_LOAD_SONG call snd_load push (KAJA_SONG_PLAY shl 8) loc_AF11: call snd_kaja_interrupt jmp short loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AF18: push ss ; jumptable 0000A9F2 case 101 lea ax, [bp+var_2] push ax call sub_A738 call snd_se_reset call snd_se_play pascal, [bp+var_2] call snd_se_update jmp short loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AF34: inc word_14F88 mov al, byte_10830 mov ah, 0 imul ax, 6 mov bx, word_14F88 mov dl, [bx] mov bx, ax mov [bx+4ED3h], dl inc word_14F88 mov al, byte_10830 mov ah, 0 imul ax, 6 mov bx, word_14F88 mov dl, [bx] mov bx, ax mov [bx+4ED4h], dl add word_14F88, 2 mov word_1500C, 0Fh push ss lea ax, [bp+var_2] push ax call sub_A738 mov al, byte_10830 mov ah, 0 mov dl, byte ptr [bp+var_2] mov bx, ax mov [bx+4ECBh], dl inc byte_10830 jmp short loc_AF8F ; default ; --------------------------------------------------------------------------- loc_AF8B: mov al, 0FFh ; jumptable 0000A9F2 case 36 jmp short loc_AF91 ; --------------------------------------------------------------------------- loc_AF8F: mov al, 0 ; default loc_AF91: pop si leave retn 2 sub_A9C3 endp ; --------------------------------------------------------------------------- word_AF96 dw 24h, 3Dh, 40h, 62h dw 63h, 65h, 66h, 67h ; value table for switch statement dw 6Bh, 6Dh, 6Eh, 70h dw 73h, 74h, 76h, 77h dw offset loc_AF8B ; jump table for switch statement dw offset loc_AD9A dw offset loc_ACAA dw offset loc_AA9B dw offset loc_AA6A dw offset loc_AF18 dw offset loc_ABD6 dw offset loc_AC3D dw offset loc_AC87 dw offset loc_AE78 dw offset loc_A9F6 dw offset loc_ACC8 dw offset loc_AA0B dw offset loc_ABAC dw offset loc_AB71 dw offset loc_AAB2 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AFD6 proc near var_A = word ptr -0Ah var_8 = dword ptr -8 var_3 = word ptr -3 enter 0Ah, 0 push si mov word ptr [bp+var_8+2], ds mov word ptr [bp+var_8], 75Ah mov word_15004, 50h ; 'P' mov word_15006, 140h mov word_15008, 2 mov byte_1500A, 0Fh mov word_107BC, 2 mov byte_14F8E, 0 loc_B005: call _input_reset_sense_held test _input.hi, high INPUT_CANCEL jz short loc_B018 mov byte_14F8E, 1 jmp short loc_B01D ; --------------------------------------------------------------------------- loc_B018: mov byte_14F8E, 0 loc_B01D: xor si, si mov bx, word_14F88 mov al, [bx] mov byte ptr [bp+var_3], al inc word_14F88 mov ah, 0 mov bx, ax test byte ptr [bx+1A39h], 20h jnz short loc_B005 cmp byte ptr [bp+var_3], 20h ; ' ' jz short loc_B005 cmp byte ptr [bp+var_3], 5Ch jnz short loc_B05D mov bx, word_14F88 mov al, [bx] mov byte ptr [bp+var_3], al inc word_14F88 push [bp+var_3] call sub_A9C3 cmp al, 0FFh jnz short loc_B005 jmp loc_B196 ; --------------------------------------------------------------------------- loc_B05D: cmp byte ptr [bp+var_3], 40h jnz loc_B118 mov bx, word_14F88 mov al, [bx] mov ah, 0 push ax ; ch call _tolower pop cx mov byte ptr [bp+var_3], al inc word_14F88 mov ah, 0 mov [bp+var_A], ax mov cx, 4 ; switch 4 cases mov bx, offset word_B1A5 loc_B086: mov ax, cs:[bx] cmp ax, [bp+var_A] jz short loc_B095 add bx, 2 loop loc_B086 jmp short loc_B0E2 ; default ; --------------------------------------------------------------------------- loc_B095: jmp word ptr cs:[bx+8] ; switch jump loc_B099: mov [bp+var_3+1], 9 ; jumptable 0000B095 case 116 jmp short loc_B0F4 ; --------------------------------------------------------------------------- loc_B0A0: mov [bp+var_3+1], 6 ; jumptable 0000B095 case 104 jmp short loc_B0F4 ; --------------------------------------------------------------------------- loc_B0A7: mov [bp+var_3+1], 8 ; jumptable 0000B095 case 63 jmp short loc_B0F4 ; --------------------------------------------------------------------------- loc_B0AE: mov bx, word_14F88 ; jumptable 0000B095 case 33 mov al, [bx] mov byte ptr [bp+var_3], al inc word_14F88 mov ah, 0 cmp ax, 21h ; '!' jz short loc_B0C9 cmp ax, 3Fh ; '?' jz short loc_B0D0 jmp short loc_B0D7 ; --------------------------------------------------------------------------- loc_B0C9: mov [bp+var_3+1], 0Ah jmp short loc_B0F4 ; --------------------------------------------------------------------------- loc_B0D0: mov [bp+var_3+1], 0Bh jmp short loc_B0F4 ; --------------------------------------------------------------------------- loc_B0D7: dec word_14F88 mov [bp+var_3+1], 7 jmp short loc_B0F4 ; --------------------------------------------------------------------------- loc_B0E2: dec word_14F88 ; default mov word_1500C, 3 push ss lea ax, [bp+var_3+1] push ax call sub_A738 loc_B0F4: graph_showpage 0 graph_accesspage 1 push word_15004 push word_15006 push [bp+var_3+1] mov al, byte_1500A mov ah, 0 push ax call graph_gaiji_putc jmp short loc_B18D ; --------------------------------------------------------------------------- loc_B118: les bx, [bp+var_8] mov al, byte ptr [bp+var_3] mov es:[bx], al mov bx, word_14F88 mov al, [bx] mov byte ptr [bp+var_3], al mov bx, word ptr [bp+var_8] mov es:[bx+1], al inc word_14F88 cmp word_15004, 50h ; 'P' jnz short loc_B164 xor si, si jmp short loc_B15B ; --------------------------------------------------------------------------- loc_B140: mov bx, si imul bx, 6 mov ax, [bx+4ED3h] les bx, [bp+var_8] cmp ax, es:[bx] jnz short loc_B15A mov al, [si+4ECBh] mov byte_1500A, al jmp short loc_B164 ; --------------------------------------------------------------------------- loc_B15A: inc si loc_B15B: mov al, byte_10830 mov ah, 0 cmp ax, si jg short loc_B140 loc_B164: graph_showpage 0 graph_accesspage 1 push word_15004 push word_15006 mov al, byte_1500A mov ah, 0 push ax pushd [bp+var_8] call sub_E914 graph_accesspage 0 loc_B18D: call sub_A826 mov si, 1 jmp loc_B005 ; --------------------------------------------------------------------------- loc_B196: call sub_EC04 call pi_slot_free pascal, 0 pop si leave retn sub_AFD6 endp ; --------------------------------------------------------------------------- word_B1A5 dw 21h, 3Fh, 68h, 74h ; value table for switch statement dw offset loc_B0AE ; jump table for switch statement dw offset loc_B0A7 dw offset loc_B0A0 dw offset loc_B099 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B1B5 proc near var_4 = dword ptr -4 enter 4, 0 push si push di mov bx, allcast_step shl bx, 2 mov ax, word ptr (ALLCAST_PTRS+2)[bx] mov dx, word ptr ALLCAST_PTRS[bx] mov word ptr [bp+var_4+2], ax mov word ptr [bp+var_4], dx mov bx, allcast_screen_plus_one add bx, bx mov ax, word ptr ALLCAST_LINES_PER_SCREEN[bx] dec ax shl ax, 4 mov dx, 0C0h sub dx, ax mov ax, allcast_line_on_screen shl ax, 5 add dx, ax mov si, dx mov word_107BC, 7 xor di, di jmp short loc_B21E ; --------------------------------------------------------------------------- loc_B1F7: push 40h push si push 0Fh pushd [bp+var_4] call sub_E914 call sub_B37C push 40h push si push 0Fh pushd [bp+var_4] call sub_E914 call sub_B37C dec word_107BC inc di loc_B21E: cmp di, 4 jl short loc_B1F7 mov word_107BC, 2 push 40h push si push 0Fh pushd [bp+var_4] call sub_E914 call sub_B37C push 40h push si push 0Fh pushd [bp+var_4] call sub_E914 call sub_B37C inc allcast_step inc allcast_line_on_screen mov bx, allcast_screen_plus_one add bx, bx mov ax, word ptr ALLCAST_LINES_PER_SCREEN[bx] cmp ax, allcast_line_on_screen jg short loc_B26D mov allcast_line_on_screen, 0 mov al, 1 jmp short loc_B26F ; --------------------------------------------------------------------------- loc_B26D: mov al, 0 loc_B26F: pop di pop si leave retn sub_B1B5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B273 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 al, byte_15018 mov ah, 0 shl ax, 4 mov dx, allcast_screen_plus_one add dx, dx add ax, dx mov bx, ax mov ax, [bx+7E0h] mov [bp+var_2], ax push 2 call palette_black_out call grcg_setcolor pascal, (GC_RMW shl 16) + 0Eh graph_accesspage 1 pushd 0 push 4F018Fh call grcg_byteboxfill_x graph_accesspage 0 pushd 0 push 4F018Fh call grcg_byteboxfill_x call sub_B37C GRCG_OFF_CLOBBERING dx mov PaletteTone, 64h ; 'd' call far ptr palette_show call pi_slot_palette_apply pascal, 0 xor si, si jmp short loc_B309 ; --------------------------------------------------------------------------- loc_B2EE: push di push [bp+arg_0] push 0 push [bp+var_2] mov ax, si mov bx, 4 cwd idiv bx push ax call sub_EE68 call sub_B37C inc si loc_B309: cmp si, 8 jl short loc_B2EE call pi_slot_put_quarter pascal, di, [bp+arg_0], 0, [bp+var_2] call sub_B37C call pi_slot_put_quarter pascal, di, [bp+arg_0], 0, [bp+var_2] inc allcast_screen_plus_one cmp allcast_screen_plus_one, 8 jge short loc_B357 push 0 mov al, byte_15018 mov ah, 0 shl ax, 5 mov dx, allcast_screen_plus_one shl dx, 2 add ax, dx mov bx, ax pushd dword ptr [bx+760h] call pi_slot_load loc_B357: add word_15012, 2 loc_B35C: call sub_B37C or al, al jz short loc_B35C call sub_B1B5 or al, al jz short loc_B357 add word_15012, 1Eh loc_B36F: call sub_B37C or al, al jz short loc_B36F pop di pop si leave retn 4 sub_B273 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B37C proc near push bp mov bp, sp push 2 call frame_delay graph_accesspage byte_1085E mov al, 1 sub al, byte_1085E mov byte_1085E, al graph_showpage al inc word_15010 call sub_F23C mov word_1500E, ax cmp word_1500E, 0 jge short loc_B3B9 mov ax, word_15010 mov bx, 16h cwd idiv bx mov word_1500E, ax loc_B3B9: mov ax, word_1500E cmp ax, word_15012 jl short loc_B3C7 mov ax, 1 jmp short loc_B3C9 ; --------------------------------------------------------------------------- loc_B3C7: xor ax, ax loc_B3C9: pop bp retn sub_B37C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B3CB proc near push bp mov bp, sp mov allcast_step, 0 les bx, _ksoconfig mov al, es:[bx+14h] mov byte_15018, al mov PaletteTone, 0 call far ptr palette_show call grcg_setcolor pascal, (GC_RMW shl 16) + 14 graph_accesspage 1 pushd 0 push 4F018Fh call grcg_byteboxfill_x graph_accesspage 0 pushd 0 push 4F018Fh call grcg_byteboxfill_x GRCG_OFF_CLOBBERING dx mov allcast_screen_plus_one, 0 push 0 mov al, byte_15018 mov ah, 0 shl ax, 5 mov bx, ax pushd dword ptr [bx+760h] call pi_slot_load call pi_slot_palette_apply pascal, 0 call snd_load pascal, ds, offset aExed, SND_LOAD_SONG kajacall KAJA_SONG_PLAY mov word_15012, 2 loc_B45F: call sub_B37C or al, al jz short loc_B45F mov PaletteTone, 64h ; 'd' call far ptr palette_show push 0A00064h call sub_B273 push 0A00064h call sub_B273 push 0A00064h call sub_B273 push 0A00064h call sub_B273 push 0A00064h call sub_B273 push 0A00064h call sub_B273 push 0A00064h call sub_B273 add word_15012, 10h loc_B4B5: call sub_B37C or al, al jz short loc_B4B5 push 4 call palette_black_out call pi_slot_free pascal, 0 graph_accesspage 0 graph_showpage al pop bp retn sub_B3CB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B4D6 proc near var_1 = byte ptr -1 enter 2, 0 push si mov si, 4 jmp short loc_B503 ; --------------------------------------------------------------------------- loc_B4E0: mov al, [si+4F1Bh] mov [bp+var_1], al mov al, byte_1501B ror [bp+var_1], 3 xor [bp+var_1], al mov al, [si+4F1Ah] mov dl, byte_1501A add dl, [bp+var_1] add al, dl mov [si+4F1Ah], al inc si loc_B503: cmp si, 5Fh ; '_' jl short loc_B4E0 mov al, byte_1501A add [si+4F1Ah], al xor cx, cx mov si, 4 jmp short loc_B51F ; --------------------------------------------------------------------------- loc_B516: mov al, [si+4F1Ah] mov ah, 0 add cx, ax inc si loc_B51F: cmp si, 60h jl short loc_B516 mov al, byte ptr word_1501C sub al, cl pop si leave retn sub_B4D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B52C proc near var_1 = byte ptr -1 enter 2, 0 push si mov word_1501C, 0 mov si, 4 jmp short loc_B547 ; --------------------------------------------------------------------------- loc_B53C: mov al, [si+4F1Ah] mov ah, 0 add word_1501C, ax inc si loc_B547: cmp si, 60h jl short loc_B53C call IRand mov byte_1501A, al call IRand mov byte_1501B, al mov [bp+var_1], 0 mov si, 5Fh ; '_' jmp short loc_B588 ; --------------------------------------------------------------------------- loc_B565: mov al, [si+4F1Ah] mov dl, byte_1501A add dl, [bp+var_1] sub al, dl mov [si+4F1Ah], al mov al, [si+4F1Ah] mov [bp+var_1], al mov al, byte_1501B ror [bp+var_1], 3 xor [bp+var_1], al dec si loc_B588: cmp si, 4 jge short loc_B565 pop si leave retn sub_B52C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B590 proc near var_3 = byte ptr -3 var_2 = word ptr -2 enter 4, 0 push si mov [bp+var_3], 0A8h ; 'ィ' mov [bp+var_2], 0 jmp short loc_B60E ; --------------------------------------------------------------------------- loc_B5A0: mov byte_15078, 12h xor si, si jmp short loc_B5B5 ; --------------------------------------------------------------------------- loc_B5A9: mov bx, [bp+var_2] shl bx, 3 mov byte ptr [bx+si+4F4Bh], 0A0h inc si loc_B5B5: cmp si, 8 jl short loc_B5A9 cmp [bp+var_2], 0 jnz short loc_B5CD mov bx, [bp+var_2] shl bx, 3 mov byte ptr [bx+4F51h], 0A1h ; '。' jmp short loc_B5DF ; --------------------------------------------------------------------------- loc_B5CD: mov bx, [bp+var_2] shl bx, 3 mov al, [bp+var_3] mov [bx+4F50h], al add al, 0FEh mov [bp+var_3], al loc_B5DF: mov bx, [bp+var_2] mov al, 0A6h sub al, byte ptr [bp+var_2] mov [bx+4F73h], al xor si, si jmp short loc_B5FB ; --------------------------------------------------------------------------- loc_B5EF: mov bx, [bp+var_2] imul bx, 9 mov byte ptr [bx+si+4F1Eh], 0C4h ; 'ト' inc si loc_B5FB: cmp si, 8 jl short loc_B5EF mov bx, [bp+var_2] imul bx, 9 mov byte ptr [bx+4F26h], 0 inc [bp+var_2] loc_B60E: cmp [bp+var_2], 5 jl short loc_B5A0 push ds push offset aGensou_scr ; "GENSOU.SCR" call file_create mov [bp+var_2], 0 jmp short loc_B638 ; --------------------------------------------------------------------------- loc_B624: call sub_B52C push ds push offset byte_1501A push 60h call file_write call sub_B4D6 inc [bp+var_2] loc_B638: cmp [bp+var_2], 14h jl short loc_B624 call file_close pop si leave retn sub_B590 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B646 proc near arg_0 = word ptr 4 push bp mov bp, sp push ds push offset aGensou_scr_0 ; "GENSOU.SCR" call file_exist or ax, ax jz short loc_B694 push ds push offset aGensou_scr_1 ; "GENSOU.SCR" call file_ropen mov ax, [bp+arg_0] imul ax, 5 mov dl, _hiscore_rank mov dh, 0 add ax, dx imul ax, 60h movzx eax, ax push eax push 0 call file_seek push ds push offset byte_1501A push 60h call file_read call file_close call sub_B4D6 or al, al jz short loc_B69D loc_B694: call sub_B590 mov al, 1 pop bp retn 2 ; --------------------------------------------------------------------------- loc_B69D: mov al, 0 pop bp retn 2 sub_B646 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B6A3 proc near push bp mov bp, sp push si call sub_B52C push ds push offset aGensou_scr_2 ; "GENSOU.SCR" call file_append mov al, byte ptr word_15178 mov ah, 0 imul ax, 5 mov dl, _hiscore_rank mov dh, 0 add ax, dx imul ax, 60h movzx eax, ax push eax push 0 call file_seek push ds push offset byte_1501A push 60h call file_write xor si, si jmp short loc_B723 ; --------------------------------------------------------------------------- loc_B6E2: mov ax, si imul ax, 60h movzx eax, ax push eax push 0 call file_seek push ds push offset byte_1501A push 60h call file_read call sub_B4D6 call sub_B52C mov ax, si imul ax, 60h movzx eax, ax push eax push 0 call file_seek push ds push offset byte_1501A push 60h call file_write inc si loc_B723: cmp si, 14h jl short loc_B6E2 call file_close pop si pop bp retn sub_B6A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B730 proc near var_2 = word ptr -2 enter 2, 0 mov [bp+var_2], 4 jmp short loc_B78C ; --------------------------------------------------------------------------- loc_B73B: mov cx, 7 jmp short loc_B785 ; --------------------------------------------------------------------------- loc_B740: les bx, _ksoconfig add bx, cx mov al, es:[bx+20h] mov ah, 0 mov bx, [bp+var_2] shl bx, 3 add bx, cx mov dl, [bx+4F4Bh] mov dh, 0 add dx, 0FF60h cmp ax, dx jg short loc_B789 les bx, _ksoconfig add bx, cx mov al, es:[bx+20h] mov ah, 0 mov bx, [bp+var_2] shl bx, 3 add bx, cx mov dl, [bx+4F4Bh] mov dh, 0 add dx, 0FF60h cmp ax, dx jl short loc_B799 dec cx loc_B785: or cx, cx jge short loc_B740 loc_B789: dec [bp+var_2] loc_B78C: cmp [bp+var_2], 0 jge short loc_B73B mov byte_15176, 0 jmp short loc_B7AE ; --------------------------------------------------------------------------- loc_B799: cmp [bp+var_2], 4 jnz short loc_B7A6 mov byte_15176, 0FFh leave retn ; --------------------------------------------------------------------------- loc_B7A6: mov al, byte ptr [bp+var_2] inc al mov byte_15176, al loc_B7AE: mov [bp+var_2], 3 jmp short loc_B807 ; --------------------------------------------------------------------------- loc_B7B5: mov cx, 7 jmp short loc_B7D3 ; --------------------------------------------------------------------------- loc_B7BA: mov bx, [bp+var_2] imul bx, 9 add bx, cx mov al, [bx+4F1Eh] mov bx, [bp+var_2] imul bx, 9 add bx, cx mov [bx+4F27h], al dec cx loc_B7D3: or cx, cx jge short loc_B7BA mov cx, 7 jmp short loc_B7F5 ; --------------------------------------------------------------------------- loc_B7DC: mov bx, [bp+var_2] shl bx, 3 add bx, cx mov al, [bx+4F4Bh] mov bx, [bp+var_2] shl bx, 3 add bx, cx mov [bx+4F53h], al dec cx loc_B7F5: or cx, cx jge short loc_B7DC mov bx, [bp+var_2] mov al, [bx+4F73h] mov [bx+4F74h], al dec [bp+var_2] loc_B807: mov al, byte_15176 mov ah, 0 cmp ax, [bp+var_2] jle short loc_B7B5 mov cx, 7 jmp short loc_B828 ; --------------------------------------------------------------------------- loc_B816: mov al, byte_15176 mov ah, 0 imul ax, 9 add ax, cx mov bx, ax mov byte ptr [bx+4F1Eh], 0C4h ; 'ト' dec cx loc_B828: or cx, cx jge short loc_B816 mov cx, 7 jmp short loc_B84F ; --------------------------------------------------------------------------- loc_B831: les bx, _ksoconfig add bx, cx mov al, es:[bx+20h] add al, 0A0h mov dl, byte_15176 mov dh, 0 shl dx, 3 add dx, cx mov bx, dx mov [bx+4F4Bh], al dec cx loc_B84F: or cx, cx jge short loc_B831 les bx, _ksoconfig cmp byte ptr es:[bx+1Ah], 0FDh jb short loc_B86C mov al, byte_15176 mov ah, 0 mov bx, ax mov byte ptr [bx+4F73h], 0E9h ; '・ leave retn ; --------------------------------------------------------------------------- loc_B86C: cmp _hiscore_rank, RANK_EXTRA jnb short loc_B88B les bx, _ksoconfig mov al, es:[bx+13h] add al, 0A1h ; '。' mov dl, byte_15176 mov dh, 0 mov bx, dx mov [bx+4F73h], al leave retn ; --------------------------------------------------------------------------- loc_B88B: mov al, byte_15176 mov ah, 0 mov bx, ax mov byte ptr [bx+4F73h], 0A1h ; '。' leave retn sub_B730 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B899 proc near var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 4, 0 push si push di mov si, [bp+arg_2] mov bx, [bp+arg_0] cmp bx, 3 ja short loc_B90A add bx, bx jmp cs:off_B9B9[bx] loc_B8B1: mov di, 0AEh ; 'ョ' or si, si jnz short loc_B8BD mov ax, 58h ; 'X' jmp short loc_B907 ; --------------------------------------------------------------------------- loc_B8BD: mov ax, si shl ax, 4 add ax, 60h jmp short loc_B907 ; --------------------------------------------------------------------------- loc_B8C7: mov di, 1EEh or si, si jnz short loc_B8D3 mov ax, 58h ; 'X' jmp short loc_B907 ; --------------------------------------------------------------------------- loc_B8D3: mov ax, si shl ax, 4 add ax, 60h jmp short loc_B907 ; --------------------------------------------------------------------------- loc_B8DD: mov di, 0AEh ; 'ョ' or si, si jnz short loc_B8E9 mov ax, 0E0h ; '・ jmp short loc_B907 ; --------------------------------------------------------------------------- loc_B8E9: mov ax, si shl ax, 4 add ax, 0E8h ; '・ jmp short loc_B907 ; --------------------------------------------------------------------------- loc_B8F3: mov di, 1EEh or si, si jnz short loc_B8FF mov ax, 0E0h ; '・ jmp short loc_B907 ; --------------------------------------------------------------------------- loc_B8FF: mov ax, si shl ax, 4 add ax, 0E8h ; '・ loc_B907: mov [bp+var_4], ax loc_B90A: mov al, byte_15176 mov ah, 0 cmp ax, si jnz short loc_B922 mov al, byte ptr word_15178 mov ah, 0 cmp ax, [bp+arg_0] jnz short loc_B922 mov ax, 0Ah jmp short loc_B924 ; --------------------------------------------------------------------------- loc_B922: xor ax, ax loc_B924: mov [bp+arg_0], ax mov bx, si shl bx, 3 mov al, [bx+4F52h] mov ah, 0 add ax, 0FF60h cmp ax, 0Ah jl short loc_B95E lea ax, [di-20h] push ax push [bp+var_4] mov bx, si shl bx, 3 mov al, [bx+4F52h] mov ah, 0 add ax, 0FF60h mov bx, 0Ah cwd idiv bx add ax, [bp+arg_0] push ax call super_put loc_B95E: lea ax, [di-10h] push ax push [bp+var_4] mov bx, si shl bx, 3 mov al, [bx+4F52h] mov ah, 0 add ax, 0FF60h mov bx, 0Ah cwd idiv bx add dx, [bp+arg_0] push dx call super_put mov [bp+var_2], 6 jmp short loc_B9AD ; --------------------------------------------------------------------------- loc_B989: push di push [bp+var_4] mov bx, si shl bx, 3 add bx, [bp+var_2] mov al, [bx+4F4Bh] mov ah, 0 add ax, [bp+arg_0] add ax, 0FF60h push ax call super_put dec [bp+var_2] add di, 10h loc_B9AD: cmp [bp+var_2], 0 jge short loc_B989 pop di pop si leave retn 4 sub_B899 endp ; --------------------------------------------------------------------------- off_B9B9 dw offset loc_B8B1 dw offset loc_B8C7 dw offset loc_B8DD dw offset loc_B8F3 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B9C1 proc near var_3 = byte ptr -3 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 enter 4, 0 push si push di mov si, [bp+arg_4] mov al, byte_15176 mov ah, 0 cmp ax, si jnz short loc_B9E1 mov al, byte ptr word_15178 mov ah, 0 cmp ax, [bp+arg_2] jnz short loc_B9E1 mov al, 7 jmp short loc_B9E3 ; --------------------------------------------------------------------------- loc_B9E1: mov al, 2 loc_B9E3: mov [bp+var_3], al mov bx, [bp+arg_2] cmp bx, 3 ja short loc_BA4E add bx, bx jmp cs:off_BA7C[bx] loc_B9F5: mov di, 126h or si, si jnz short loc_BA01 mov ax, 58h ; 'X' jmp short loc_BA4B ; --------------------------------------------------------------------------- loc_BA01: mov ax, si shl ax, 4 add ax, 60h jmp short loc_BA4B ; --------------------------------------------------------------------------- loc_BA0B: mov di, 266h or si, si jnz short loc_BA17 mov ax, 58h ; 'X' jmp short loc_BA4B ; --------------------------------------------------------------------------- loc_BA17: mov ax, si shl ax, 4 add ax, 60h jmp short loc_BA4B ; --------------------------------------------------------------------------- loc_BA21: mov di, 126h or si, si jnz short loc_BA2D mov ax, 0E0h ; '・ jmp short loc_BA4B ; --------------------------------------------------------------------------- loc_BA2D: mov ax, si shl ax, 4 add ax, 0E8h ; '・ jmp short loc_BA4B ; --------------------------------------------------------------------------- loc_BA37: mov di, 266h or si, si jnz short loc_BA43 mov ax, 0E0h ; '・ jmp short loc_BA4B ; --------------------------------------------------------------------------- loc_BA43: mov ax, si shl ax, 4 add ax, 0E8h ; '・ loc_BA4B: mov [bp+var_2], ax loc_BA4E: lea ax, [di+2] push ax mov ax, [bp+var_2] add ax, 2 push ax push [bp+arg_0] push 0Eh call graph_gaiji_putc push di push [bp+var_2] push [bp+arg_0] mov al, [bp+var_3] mov ah, 0 push ax call graph_gaiji_putc pop di pop si leave retn 6 sub_B9C1 endp ; --------------------------------------------------------------------------- db 0 off_BA7C dw offset loc_B9F5 dw offset loc_BA0B dw offset loc_BA21 dw offset loc_BA37 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BA84 proc near arg_0 = byte ptr 4 arg_2 = byte ptr 6 arg_4 = word ptr 8 push bp mov bp, sp push si push di mov al, [bp+arg_2] mov ah, 0 mov bx, ax cmp bx, 3 ja short loc_BB00 add bx, bx jmp cs:off_BBE7[bx] loc_BA9C: mov si, 8 cmp [bp+arg_4], 0 jnz short loc_BAAA mov ax, 58h ; 'X' jmp short loc_BAFE ; --------------------------------------------------------------------------- loc_BAAA: mov ax, [bp+arg_4] shl ax, 4 add ax, 60h jmp short loc_BAFE ; --------------------------------------------------------------------------- loc_BAB5: mov si, 148h cmp [bp+arg_4], 0 jnz short loc_BAC3 mov ax, 58h ; 'X' jmp short loc_BAFE ; --------------------------------------------------------------------------- loc_BAC3: mov ax, [bp+arg_4] shl ax, 4 add ax, 60h jmp short loc_BAFE ; --------------------------------------------------------------------------- loc_BACE: mov si, 8 cmp [bp+arg_4], 0 jnz short loc_BADC mov ax, 0E0h ; '・ jmp short loc_BAFE ; --------------------------------------------------------------------------- loc_BADC: mov ax, [bp+arg_4] shl ax, 4 add ax, 0E8h ; '・ jmp short loc_BAFE ; --------------------------------------------------------------------------- loc_BAE7: mov si, 148h cmp [bp+arg_4], 0 jnz short loc_BAF5 mov ax, 0E0h ; '・ jmp short loc_BAFE ; --------------------------------------------------------------------------- loc_BAF5: mov ax, [bp+arg_4] shl ax, 4 add ax, 0E8h ; '・ loc_BAFE: mov di, ax loc_BB00: push si push di push 820012h call sub_ECDE lea ax, [si+2] push ax lea ax, [di+2] push ax push 10h mov ax, [bp+arg_4] imul ax, 9 add ax, 4F1Eh push ds push ax push 0Eh call graph_gaiji_puts push si push di push 10h mov ax, [bp+arg_4] imul ax, 9 add ax, 4F1Eh push ds push ax push 6 call graph_gaiji_puts mov al, [bp+arg_0] mov ah, 0 shl ax, 4 add ax, si push ax push di mov bx, [bp+arg_4] imul bx, 9 mov al, [bp+arg_0] mov ah, 0 add bx, ax mov al, [bx+4F1Eh] mov ah, 0 push ax push 7 call graph_gaiji_putc call grcg_setcolor pascal, (GC_RMW shl 16) + 7 mov al, [bp+arg_0] mov ah, 0 shl ax, 4 add ax, si push ax mov al, [bp+arg_0] mov ah, 0 shl ax, 4 add ax, si add ax, 10h push ax lea ax, [di+0Fh] push ax call grcg_hline lea ax, [si-2] push ax lea ax, [di-1] push ax lea ax, [di+10h] push ax call grcg_vline lea ax, [si+132h] push ax lea ax, [di-1] push ax lea ax, [di+10h] push ax call grcg_vline lea ax, [si-2] push ax lea ax, [si+132h] push ax lea ax, [di-1] push ax call grcg_hline lea ax, [si-2] push ax lea ax, [si+132h] push ax lea ax, [di+10h] push ax call grcg_hline GRCG_OFF_CLOBBERING dx pop di pop si pop bp retn 6 sub_BA84 endp ; --------------------------------------------------------------------------- db 0 off_BBE7 dw offset loc_BA9C dw offset loc_BAB5 dw offset loc_BACE dw offset loc_BAE7 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BBEF 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 si, [bp+arg_2] mov bx, [bp+arg_0] cmp bx, 3 ja short loc_BC67 add bx, bx jmp cs:off_BCCB[bx] loc_BC07: mov [bp+var_2], 8 or si, si jnz short loc_BC15 mov ax, 58h ; 'X' jmp short loc_BC65 ; --------------------------------------------------------------------------- loc_BC15: mov ax, si shl ax, 4 add ax, 60h jmp short loc_BC65 ; --------------------------------------------------------------------------- loc_BC1F: mov [bp+var_2], 148h or si, si jnz short loc_BC2D mov ax, 58h ; 'X' jmp short loc_BC65 ; --------------------------------------------------------------------------- loc_BC2D: mov ax, si shl ax, 4 add ax, 60h jmp short loc_BC65 ; --------------------------------------------------------------------------- loc_BC37: mov [bp+var_2], 8 or si, si jnz short loc_BC45 mov ax, 0E0h ; '・ jmp short loc_BC65 ; --------------------------------------------------------------------------- loc_BC45: mov ax, si shl ax, 4 add ax, 0E8h ; '・ jmp short loc_BC65 ; --------------------------------------------------------------------------- loc_BC4F: mov [bp+var_2], 148h or si, si jnz short loc_BC5D mov ax, 0E0h ; '・ jmp short loc_BC65 ; --------------------------------------------------------------------------- loc_BC5D: mov ax, si shl ax, 4 add ax, 0E8h ; '・ loc_BC65: mov di, ax loc_BC67: push si push [bp+arg_0] call sub_B899 push si push [bp+arg_0] mov al, [si+4F73h] mov ah, 0 push ax call sub_B9C1 mov al, byte ptr word_15178 mov ah, 0 cmp ax, [bp+arg_0] jnz short loc_BC8F mov al, byte_15176 mov ah, 0 cmp ax, si jz short loc_BCC4 loc_BC8F: mov ax, [bp+var_2] add ax, 2 push ax lea ax, [di+2] push ax push 10h mov ax, si imul ax, 9 add ax, 4F1Eh push ds push ax push 0Eh call graph_gaiji_puts push [bp+var_2] push di push 10h mov ax, si imul ax, 9 add ax, 4F1Eh push ds push ax push 2 call graph_gaiji_puts loc_BCC4: pop di pop si leave retn 4 sub_BBEF endp ; --------------------------------------------------------------------------- db 0 off_BCCB dw offset loc_BC07 dw offset loc_BC1F dw offset loc_BC37 dw offset loc_BC4F ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BCD3 proc near arg_0 = word ptr 4 push bp mov bp, sp push si xor si, si jmp short loc_BCE3 ; --------------------------------------------------------------------------- loc_BCDB: push si push [bp+arg_0] call sub_BBEF inc si loc_BCE3: cmp si, 5 jl short loc_BCDB pop si pop bp retn 2 sub_BCD3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BCED proc near arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 push bp mov bp, sp push si push di mov si, [bp+arg_4] mov di, [bp+arg_2] mov ax, si add ax, ax add ax, 17h push ax lea ax, [di+15h] push ax mov bx, di imul bx, 11h mov al, [bx+si+14EEh] mov ah, 0 push ax push [bp+arg_0] call gaiji_putca pop di pop si pop bp retn 6 sub_BCED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BD1E proc near push bp mov bp, sp call snd_se_update call sub_BE76 push 1 call frame_delay graph_accesspage byte_11621 mov al, 1 sub al, byte_11621 mov byte_11621, al graph_showpage al pop bp retn sub_BD1E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BD46 proc near arg_0 = byte ptr 4 arg_2 = byte ptr 6 arg_4 = word ptr 8 arg_6 = word ptr 0Ah arg_8 = word ptr 0Ch push bp mov bp, sp push si push di mov di, [bp+arg_4] mov al, [bp+arg_0] mov ah, 0 imul ax, 1Ch add ax, 4F7Ah mov si, ax cmp byte ptr [si], 0 jz short loc_BD68 mov byte ptr [si], 5 jmp short loc_BD68 ; --------------------------------------------------------------------------- loc_BD65: call sub_BD1E loc_BD68: cmp byte ptr [si], 0 jnz short loc_BD65 mov byte ptr [si], 1 mov word ptr [si+14h], 0 mov bx, [bp+arg_6] imul bx, 11h add bx, [bp+arg_8] mov al, [bx+14EEh] mov [si+1], al cmp byte ptr [si+1], 0CDh ; 'ヘ' jnz short loc_BD8F mov byte ptr [si+1], 2 loc_BD8F: mov ax, [bp+arg_8] add ax, ax add ax, 17h shl ax, 4 shl ax, 3 add ax, 80h mov [si+2], ax mov ax, [bp+arg_6] add ax, 15h shl ax, 4 shl ax, 4 add ax, 80h mov [si+4], ax call IRand mov [si+12h], al call IRand mov bx, 40h cwd idiv bx add dl, 40h mov [si+13h], dl mov al, [bp+arg_2] mov ah, 0 mov bx, ax cmp bx, 3 ja short loc_BE42 add bx, bx jmp cs:off_BE6E[bx] loc_BDE1: mov [bp+arg_8], 8 or di, di jnz short loc_BDEF mov ax, 58h ; 'X' jmp short loc_BE3F ; --------------------------------------------------------------------------- loc_BDEF: mov ax, di shl ax, 4 add ax, 60h jmp short loc_BE3F ; --------------------------------------------------------------------------- loc_BDF9: mov [bp+arg_8], 148h or di, di jnz short loc_BE07 mov ax, 58h ; 'X' jmp short loc_BE3F ; --------------------------------------------------------------------------- loc_BE07: mov ax, di shl ax, 4 add ax, 60h jmp short loc_BE3F ; --------------------------------------------------------------------------- loc_BE11: mov [bp+arg_8], 8 or di, di jnz short loc_BE1F mov ax, 0E0h ; '・ jmp short loc_BE3F ; --------------------------------------------------------------------------- loc_BE1F: mov ax, di shl ax, 4 add ax, 0E8h ; '・ jmp short loc_BE3F ; --------------------------------------------------------------------------- loc_BE29: mov [bp+arg_8], 148h or di, di jnz short loc_BE37 mov ax, 0E0h ; '・ jmp short loc_BE3F ; --------------------------------------------------------------------------- loc_BE37: mov ax, di shl ax, 4 add ax, 0E8h ; '・ loc_BE3F: mov [bp+arg_6], ax loc_BE42: mov ax, [bp+arg_8] shl ax, 4 mov dl, [bp+arg_0] mov dh, 0 shl dx, 4 shl dx, 4 add ax, dx add ax, 80h mov [si+0Eh], ax mov ax, [bp+arg_6] shl ax, 4 add ax, 80h mov [si+10h], ax pop di pop si pop bp retn 0Ah sub_BD46 endp ; --------------------------------------------------------------------------- db 0 off_BE6E dw offset loc_BDE1 dw offset loc_BDF9 dw offset loc_BE11 dw offset loc_BE29 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BE76 proc near var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 8, 0 push si push di mov si, 4F7Ah xor di, di jmp short loc_BECC ; --------------------------------------------------------------------------- loc_BE83: cmp byte ptr [si], 0 jz short loc_BEC8 cmp byte ptr [si], 4 jnz short loc_BE90 mov byte ptr [si], 0 loc_BE90: cmp word ptr [si+6], 0 jge short loc_BE9B mov word ptr [si+6], 0 loc_BE9B: cmp word ptr [si+8], 0 jge short loc_BEA6 mov word ptr [si+8], 0 loc_BEA6: mov ax, [si+6] mov bx, 10h cwd idiv bx add ax, 0FFF0h push ax mov ax, [si+8] cwd idiv bx add ax, 0FFF0h push ax push 200020h call sub_ECDE loc_BEC8: inc di add si, 1Ch loc_BECC: cmp di, 8 jl short loc_BE83 mov al, byte_15176 mov ah, 0 push ax push word_15178 push word_11622 call sub_BA84 mov si, 4F7Ah xor di, di jmp loc_C156 ; --------------------------------------------------------------------------- loc_BEEA: cmp byte ptr [si], 0 jz loc_C152 mov al, [si] mov ah, 0 dec ax mov bx, ax cmp bx, 4 ja loc_C141 add bx, bx jmp cs:off_C162[bx] loc_BF06: mov eax, [si+2] mov [si+6], eax mov ax, [si+2] mov bx, 10h cwd idiv bx add ax, 0FFF0h mov [bp+var_4], ax mov ax, [si+4] cwd idiv bx add ax, 0FFF0h mov [bp+var_6], ax mov ax, [si+14h] shr ax, 1 add ax, 14h mov [bp+var_2], ax cmp [bp+var_2], 18h jl loc_C141 inc byte ptr [si] loc_BF3E: mov eax, [si+2] mov [si+6], eax lea ax, [si+0Ah] push ax pushd 0 mov al, [si+13h] mov ah, 0 push ax mov al, [si+12h] mov ah, 0 push ax call vector2_at mov ax, [si+0Ah] add [si+2], ax mov ax, [si+0Ch] add [si+4], ax mov ax, [si+2] mov bx, 10h cwd idiv bx add ax, 0FFF8h mov [bp+var_4], ax mov ax, [si+4] cwd idiv bx add ax, 0FFF8h mov [bp+var_6], ax cmp [bp+var_4], 0 jge short loc_BF9F mov [bp+var_4], 0 mov al, 80h sub al, [si+12h] mov [si+12h], al mov word ptr [si+2], 80h jmp short loc_BFB8 ; --------------------------------------------------------------------------- loc_BF9F: cmp [bp+var_4], 270h jl short loc_BFB8 mov [bp+var_4], 270h mov al, 80h sub al, [si+12h] mov [si+12h], al mov word ptr [si+2], 2780h loc_BFB8: cmp [bp+var_6], 0 jge short loc_BFD2 mov [bp+var_6], 0 mov al, [si+12h] neg al mov [si+12h], al mov word ptr [si+4], 80h jmp short loc_BFEB ; --------------------------------------------------------------------------- loc_BFD2: cmp [bp+var_6], 180h jl short loc_BFEB mov [bp+var_6], 180h mov al, [si+12h] neg al mov [si+12h], al mov word ptr [si+4], 1880h loc_BFEB: mov ax, [si+14h] shr ax, 2 and ax, 3 add ax, 1Ch mov [bp+var_2], ax mov ax, [si+10h] sub ax, [si+4] push ax mov ax, [si+0Eh] sub ax, [si+2] push ax call iatan2 mov [bp+var_8], al mov al, [si+12h] sub al, [bp+var_8] mov [bp+var_7], al cmp [bp+var_7], 80h jb short loc_C077 cmp [bp+var_7], 0FEh jb short loc_C035 mov al, [bp+var_8] mov [si+12h], al cmp byte ptr [si+13h], 80h jnb loc_C0CC jmp short loc_C089 ; --------------------------------------------------------------------------- loc_C035: cmp [bp+var_7], 0F0h ; '・ jbe short loc_C04C mov [bp+var_7], 1 cmp byte ptr [si+13h], 80h jnb short loc_C06F mov al, [si+13h] add al, 2 jmp short loc_C06C ; --------------------------------------------------------------------------- loc_C04C: mov al, [bp+var_7] mov ah, 0 push ax mov ax, 100h pop dx sub ax, dx mov bx, 10h cwd idiv bx mov [bp+var_7], al cmp byte ptr [si+13h], 8 jbe short loc_C06F mov al, [si+13h] add al, 0FEh loc_C06C: mov [si+13h], al loc_C06F: mov al, [bp+var_7] add [si+12h], al jmp short loc_C0CC ; --------------------------------------------------------------------------- loc_C077: cmp [bp+var_7], 2 ja short loc_C093 mov al, [bp+var_8] mov [si+12h], al cmp byte ptr [si+13h], 80h jnb short loc_C0CC loc_C089: mov al, [si+13h] add al, 2 mov [si+13h], al jmp short loc_C0CC ; --------------------------------------------------------------------------- loc_C093: cmp [bp+var_7], 10h jnb short loc_C0AA mov [bp+var_7], 1 cmp byte ptr [si+13h], 80h jnb short loc_C0C6 mov al, [si+13h] add al, 2 jmp short loc_C0C3 ; --------------------------------------------------------------------------- loc_C0AA: mov al, [bp+var_7] mov ah, 0 mov bx, 10h cwd idiv bx mov [bp+var_7], al cmp byte ptr [si+13h], 8 jbe short loc_C0C6 mov al, [si+13h] add al, 0FEh loc_C0C3: mov [si+13h], al loc_C0C6: mov al, [bp+var_7] sub [si+12h], al loc_C0CC: mov ax, [si+2] sub ax, [si+0Eh] add ax, 40h cmp ax, 80h jnb short loc_C141 mov ax, [si+4] sub ax, [si+10h] add ax, 40h cmp ax, 80h jnb short loc_C141 inc byte ptr [si] mov word ptr [si+14h], 0 mov al, byte_15176 mov ah, 0 imul ax, 9 mov dl, [si+1] mov bx, ax mov [bx+di+4F1Eh], dl jmp short loc_C141 ; --------------------------------------------------------------------------- loc_C102: mov ax, [si+14h] shr ax, 2 add ax, 18h mov [bp+var_2], ax cmp [bp+var_2], 1Ch jl short loc_C118 inc byte ptr [si] jmp short loc_C152 ; --------------------------------------------------------------------------- loc_C118: mov eax, [si+0Eh] mov [si+6], eax mov ax, [si+0Eh] mov bx, 10h cwd idiv bx add ax, 0FFF0h mov [bp+var_4], ax mov ax, [si+10h] cwd idiv bx add ax, 0FFF0h mov [bp+var_6], ax jmp short loc_C141 ; --------------------------------------------------------------------------- loc_C13D: dec byte ptr [si] jmp short loc_C152 ; --------------------------------------------------------------------------- loc_C141: inc word ptr [si+14h] push [bp+var_4] push [bp+var_6] push [bp+var_2] call super_put_rect loc_C152: inc di add si, 1Ch loc_C156: cmp di, 8 jl loc_BEEA pop di pop si leave retn sub_BE76 endp ; --------------------------------------------------------------------------- db 0 off_C162 dw offset loc_BF06 dw offset loc_BF3E dw offset loc_C102 dw offset loc_C141 dw offset loc_C13D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C16C proc near var_1 = byte ptr -1 enter 2, 0 push si push di mov [bp+var_1], 0 call snd_se_play pascal, 11 mov si, 4F7Ah xor di, di jmp short loc_C1AF ; --------------------------------------------------------------------------- loc_C184: cmp byte ptr [si], 1 jnz short loc_C18C mov byte ptr [si], 2 loc_C18C: cmp byte ptr [si], 2 jnz short loc_C1AB mov ax, [si+10h] sub ax, [si+4] push ax mov ax, [si+0Eh] sub ax, [si+2] push ax call iatan2 mov [si+12h], al mov byte ptr [si+13h], 60h loc_C1AB: inc di add si, 1Ch loc_C1AF: cmp di, 8 jl short loc_C184 loc_C1B4: mov [bp+var_1], 0 xor di, di mov si, 4F7Ah jmp short loc_C1CB ; --------------------------------------------------------------------------- loc_C1BF: cmp byte ptr [si], 0 jz short loc_C1C7 inc [bp+var_1] loc_C1C7: inc di add si, 1Ch loc_C1CB: cmp di, 8 jl short loc_C1BF call sub_BD1E cmp [bp+var_1], 0 jnz short loc_C1B4 pop di pop si leave retn sub_C16C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C1DD proc near var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 8, 0 push si push di mov [bp+var_7], 0 graph_accesspage 0 graph_showpage al mov PaletteTone, 0 call far ptr palette_show graph_accesspage 1 call pi_slot_load pascal, 0, ds, offset aHi01_pi call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 push 0 call graph_copy_page push ds push offset aScnum_bft ; "scnum.bft" call super_entry_bfnt push ds push offset aSctm0_bft ; "sctm0.bft" call super_entry_bfnt push ds push offset aSctm1_bft ; "sctm1.bft" call super_entry_bfnt les bx, _ksoconfig cmp byte ptr es:[bx+13h], 6 jnz short loc_C256 mov al, 4 jmp short loc_C25E ; --------------------------------------------------------------------------- loc_C256: les bx, _ksoconfig mov al, es:[bx+11h] loc_C25E: mov _hiscore_rank, al les bx, _ksoconfig mov al, es:[bx+14h] mov byte ptr word_15178, al mov [bp+var_4], 0 jmp short loc_C28C ; --------------------------------------------------------------------------- loc_C273: mov al, byte ptr word_15178 mov ah, 0 cmp ax, [bp+var_4] jz short loc_C289 push [bp+var_4] call sub_B646 push [bp+var_4] call sub_BCD3 loc_C289: inc [bp+var_4] loc_C28C: cmp [bp+var_4], 4 jl short loc_C273 mov al, byte ptr word_15178 mov ah, 0 push ax call sub_B646 les bx, _ksoconfig cmp byte ptr es:[bx+16h], 0 jnz short loc_C2AD cmp _hiscore_rank, RANK_EXTRA jnz short loc_C2BB loc_C2AD: call sub_B730 mov al, byte ptr word_15178 mov ah, 0 push ax call sub_BCD3 jmp short loc_C2EB ; --------------------------------------------------------------------------- loc_C2BB: mov byte_15176, 0FFh mov al, byte ptr word_15178 mov ah, 0 push ax call sub_BCD3 push 7C00C4h push 9 push ds push offset aGxgnbGvbGhvVGv call sub_E914 push 7800C0h push 2 push ds push offset aGxgnbGvbGhvV_0 call sub_E914 loc_C2EB: call sub_EB66 les bx, _ksoconfig cmp byte ptr es:[bx+1Ah], 0FDh jb short loc_C307 cmp byte ptr es:[bx+20h], 0 jnz short loc_C307 mov byte_15078, 80h loc_C307: push 1 call graph_copy_page call sub_EB66 kajacall KAJA_SONG_STOP call snd_load pascal, ds, offset aName, SND_LOAD_SONG kajacall KAJA_SONG_PLAY push 2 call palette_black_in cmp byte_15176, 0FFh jz loc_C5C3 mov al, byte_15176 mov ah, 0 push ax push word_15178 push 0 call sub_BA84 graph_accesspage 0 mov al, byte_15176 mov ah, 0 push ax push word_15178 push 0 call sub_BA84 graph_accesspage 1 mov [bp+var_4], 0 jmp short loc_C3AA ; --------------------------------------------------------------------------- loc_C36F: mov [bp+var_6], 0 jmp short loc_C3A1 ; --------------------------------------------------------------------------- loc_C376: mov ax, [bp+var_6] add ax, ax add ax, 23 push ax mov ax, [bp+var_4] add ax, 21 push ax mov bx, [bp+var_4] imul bx, 11h add bx, [bp+var_6] mov al, [bx+14EEh] mov ah, 0 push ax push TX_WHITE call gaiji_putca inc [bp+var_6] loc_C3A1: cmp [bp+var_6], 11h jl short loc_C376 inc [bp+var_4] loc_C3AA: cmp [bp+var_4], 3 jl short loc_C36F push (23 shl 16) + 21 mov al, gALPHABET mov ah, 0 push ax push TX_GREEN + TX_REVERSE call gaiji_putca xor si, si xor di, di mov [bp+var_2], 1 loc_C3CD: call _input_reset_sense_held cmp [bp+var_2], 0 jnz loc_C58A test _input.lo, low INPUT_MOVEMENT jz short loc_C438 push si push di push TX_WHITE call sub_BCED test _input.lo, low INPUT_UP jz short loc_C3F1 dec di loc_C3F1: test _input.lo, low INPUT_DOWN jz short loc_C3F9 inc di loc_C3F9: test _input.lo, low INPUT_LEFT jz short loc_C401 dec si loc_C401: test _input.lo, low INPUT_RIGHT jz short loc_C409 inc si loc_C409: or di, di jge short loc_C412 mov di, 2 jmp short loc_C419 ; --------------------------------------------------------------------------- loc_C412: cmp di, 2 jle short loc_C419 xor di, di loc_C419: or si, si jge short loc_C422 mov si, 10h jmp short loc_C429 ; --------------------------------------------------------------------------- loc_C422: cmp si, 10h jle short loc_C429 xor si, si loc_C429: push si push di push TX_GREEN + TX_REVERSE call sub_BCED call snd_se_play pascal, 1 loc_C438: test _input.lo, low INPUT_SHOT jnz short loc_C448 test _input.hi, high INPUT_OK jz loc_C516 loc_C448: mov bx, di imul bx, 11h mov al, [bx+si+14EEh] mov [bp+var_8], al mov ah, 0 cmp ax, 0CEh jz short loc_C469 cmp ax, 0CFh ; 'マ' jz short loc_C4C4 cmp ax, 0D5h ; 'ユ' jz loc_C57D jmp short loc_C4D4 ; --------------------------------------------------------------------------- loc_C469: mov al, byte_15176 mov ah, 0 imul ax, 9 add ax, word_11622 mov bx, ax mov byte ptr [bx+4F1Eh], 2 mov bx, word_11622 imul bx, 1Ch cmp byte ptr [bx+4F7Ah], 0 jz short loc_C496 mov bx, word_11622 imul bx, 1Ch mov byte ptr [bx+4F7Ah], 5 loc_C496: cmp word_11622, 0 jle short loc_C4A1 dec word_11622 loc_C4A1: mov bx, word_11622 imul bx, 1Ch cmp byte ptr [bx+4F7Ah], 0 jz short loc_C4BB mov bx, word_11622 imul bx, 1Ch mov byte ptr [bx+4F7Ah], 5 loc_C4BB: call snd_se_play pascal, 4 jmp short loc_C516 ; --------------------------------------------------------------------------- loc_C4C4: call snd_se_play pascal, 11 cmp word_11622, 7 jge short loc_C516 jmp short loc_C512 ; --------------------------------------------------------------------------- loc_C4D4: call snd_se_play pascal, 11 push si push di mov al, byte_15176 mov ah, 0 push ax push word_15178 push word_11622 call sub_BD46 cmp word_11622, 7 jnz short loc_C50B push si push di push TX_WHITE call sub_BCED mov si, 10h mov di, 2 push si push di push TX_GREEN + TX_REVERSE call sub_BCED loc_C50B: cmp word_11622, 7 jge short loc_C516 loc_C512: inc word_11622 loc_C516: test _input.lo, low INPUT_BOMB jz short loc_C576 mov al, byte_15176 mov ah, 0 imul ax, 9 add ax, word_11622 mov bx, ax mov byte ptr [bx+4F1Eh], 2 mov bx, word_11622 imul bx, 1Ch cmp byte ptr [bx+4F7Ah], 0 jz short loc_C54A mov bx, word_11622 imul bx, 1Ch mov byte ptr [bx+4F7Ah], 5 loc_C54A: cmp word_11622, 0 jle short loc_C555 dec word_11622 loc_C555: mov bx, word_11622 imul bx, 1Ch cmp byte ptr [bx+4F7Ah], 0 jz short loc_C56F mov bx, word_11622 imul bx, 1Ch mov byte ptr [bx+4F7Ah], 5 loc_C56F: call snd_se_play pascal, 4 loc_C576: test _input.hi, high INPUT_CANCEL jz short loc_C582 loc_C57D: call sub_C16C jmp short loc_C5BE ; --------------------------------------------------------------------------- loc_C582: mov ax, _input mov [bp+var_2], ax jmp short loc_C5B8 ; --------------------------------------------------------------------------- loc_C58A: mov ax, _input cmp ax, [bp+var_2] jnz short loc_C5A8 inc [bp+var_7] cmp [bp+var_7], 1Eh jbe short loc_C5B8 test [bp+var_7], 1 jnz short loc_C5B8 mov [bp+var_2], 0 jmp short loc_C5B8 ; --------------------------------------------------------------------------- loc_C5A8: cmp _input, INPUT_NONE jnz short loc_C5B4 mov [bp+var_2], 0 loc_C5B4: mov [bp+var_7], 0 loc_C5B8: call sub_BD1E jmp loc_C3CD ; --------------------------------------------------------------------------- loc_C5BE: call sub_B6A3 jmp short loc_C5CD ; --------------------------------------------------------------------------- loc_C5C3: call sub_B6A3 push 0 call _input_wait_for_change loc_C5CD: call sub_EC04 call super_free call text_clear push 1 call palette_black_out pop di pop si leave retn sub_C1DD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C5E7 proc near var_6 = word ptr -6 var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 var_1 = byte ptr -1 arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 enter 6, 0 push si xor si, si mov [bp+var_4], 2 mov ax, [bp+arg_0] mov bx, 64h ; 'd' xor dx, dx div bx mov [bp+var_6], ax mov ax, [bp+arg_0] xor dx, dx div bx mov [bp+arg_0], dx cmp byte_11713, 0 jnz short loc_C625 or si, [bp+var_6] or si, si jz short loc_C621 mov al, byte ptr [bp+var_6] add al, 0A0h mov [bp+var_4], al jmp short loc_C625 ; --------------------------------------------------------------------------- loc_C621: mov [bp+var_4], 2 loc_C625: mov ax, [bp+arg_0] mov bx, 0Ah xor dx, dx div bx mov [bp+var_6], ax mov ax, [bp+arg_0] xor dx, dx div bx mov [bp+arg_0], dx or si, [bp+var_6] mov al, byte_11713 mov ah, 0 or si, ax or si, si jz short loc_C654 mov al, byte ptr [bp+var_6] add al, 0A0h mov [bp+var_3], al jmp short loc_C658 ; --------------------------------------------------------------------------- loc_C654: mov [bp+var_3], 2 loc_C658: mov al, byte ptr [bp+arg_0] add al, 0A0h mov [bp+var_2], al mov [bp+var_1], 0 push [bp+arg_4] push [bp+arg_2] push 10h push ss lea ax, [bp+var_4] push ax push word_116E4 call graph_gaiji_puts pop si leave retn 6 sub_C5E7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C67F proc near var_C = byte ptr -0Ch var_3 = byte ptr -3 var_2 = byte ptr -2 var_1 = byte ptr -1 arg_0 = dword ptr 4 arg_4 = word ptr 8 arg_6 = word ptr 0Ah enter 0Ch, 0 push si push di mov di, [bp+arg_6] les bx, [bp+arg_0] cmp byte ptr es:[bx+7], 0Ah jb short loc_C6AC mov al, es:[bx+7] mov ah, 0 mov bx, 0Ah cwd idiv bx mov [bp+var_1], al add al, 0A0h mov [bp+var_C], al mov [bp+var_2], 1 jmp short loc_C6B4 ; --------------------------------------------------------------------------- loc_C6AC: mov [bp+var_C], 2 mov [bp+var_2], 0 loc_C6B4: mov si, 1 jmp short loc_C6F1 ; --------------------------------------------------------------------------- loc_C6B9: mov ax, 8 sub ax, si les bx, [bp+arg_0] add bx, ax mov al, es:[bx] mov ah, 0 mov bx, 0Ah cwd idiv bx mov [bp+var_1], dl mov al, [bp+var_1] or [bp+var_2], al cmp [bp+var_2], 0 jnz short loc_C6E2 cmp si, 8 jnz short loc_C6EC loc_C6E2: mov al, [bp+var_1] add al, 0A0h mov [bp+si+var_C], al jmp short loc_C6F0 ; --------------------------------------------------------------------------- loc_C6EC: mov [bp+si+var_C], 2 loc_C6F0: inc si loc_C6F1: cmp si, 8 jle short loc_C6B9 mov [bp+var_3], 0 push di push [bp+arg_4] push 10h push ss lea ax, [bp+var_C] push ax push word_116E4 call graph_gaiji_puts lea ax, [di+90h] push ax push [bp+arg_4] push word_116E4 push ds push offset aU__0 call sub_E914 pop di pop si leave retn 8 sub_C67F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C729 proc near var_6 = dword ptr -6 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 arg_6 = word ptr 0Ah enter 6, 0 push si push di mov si, [bp+arg_6] mov di, [bp+arg_4] cmp [bp+arg_2], 0 jz short loc_C745 mov [bp+var_6], 0F4240h jmp short loc_C74D ; --------------------------------------------------------------------------- loc_C745: mov [bp+var_6], 0 loc_C74D: mov ax, [bp+arg_2] cmp ax, [bp+arg_0] jz short loc_C786 cmp [bp+arg_2], 0 jz short loc_C770 movzx ebx, [bp+arg_2] mov eax, [bp+var_6] xor edx, edx div ebx mov [bp+var_6], eax jmp short loc_C778 ; --------------------------------------------------------------------------- loc_C770: mov [bp+var_6], 0 loc_C778: movzx eax, [bp+arg_0] imul eax, [bp+var_6] mov [bp+var_6], eax loc_C786: cmp byte_116EA, 0 jnz short loc_C797 mov eax, dword_1517E add eax, [bp+var_6] jmp short loc_C79F ; --------------------------------------------------------------------------- loc_C797: mov eax, dword_1517E sub eax, [bp+var_6] loc_C79F: mov dword_1517E, eax cmp byte_1517C, 0 jz short loc_C7B6 mov eax, [bp+var_6] shr eax, 2 mov dword_15182, eax loc_C7B6: mov eax, [bp+var_6] mov ebx, 2710h xor edx, edx div ebx mov [bp+var_2], ax push si push di push ax call sub_C5E7 mov ebx, 2710h mov eax, [bp+var_6] xor edx, edx div ebx mov [bp+var_6], edx mov eax, [bp+var_6] mov ebx, 64h ; 'd' xor edx, edx div ebx mov [bp+var_2], ax mov byte_11713, 1 lea ax, [si+30h] push ax push di push [bp+var_2] call sub_C5E7 mov byte_11713, 0 lea ax, [si+30h] push ax push di push word_116E4 push ds push offset aBd call sub_E914 lea ax, [si+60h] push ax push di push word_116E4 push ds push offset aBu call sub_E914 pop di pop si leave retn 8 sub_C729 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C835 proc near var_2 = word ptr -2 arg_0 = dword ptr 4 arg_4 = word ptr 8 arg_6 = word ptr 0Ah enter 2, 0 push si push di mov si, [bp+arg_6] mov di, [bp+arg_4] mov eax, [bp+arg_0] mov ebx, 2710h xor edx, edx div ebx mov [bp+var_2], ax push si push di push ax call sub_C5E7 mov ebx, 2710h mov eax, [bp+arg_0] xor edx, edx div ebx mov [bp+arg_0], edx mov eax, [bp+arg_0] mov ebx, 64h ; 'd' xor edx, edx div ebx mov [bp+var_2], ax mov byte_11713, 1 lea ax, [si+30h] push ax push di push [bp+var_2] call sub_C5E7 mov byte_11713, 0 lea ax, [si+30h] push ax push di push word_116E4 push ds push offset aBd_0 call sub_E914 pop di pop si leave retn 8 sub_C835 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C8AE proc near var_4 = dword ptr -4 enter 4, 0 les bx, _ksoconfig mov eax, es:[bx+28h] mov random_seed, eax mov al, es:[bx+0Dh] mov ah, 0 dec ax mov bx, ax cmp bx, 5 ja short loc_C90E add bx, bx jmp cs:off_C9F6[bx] loc_C8D4: mov [bp+var_4], 9C4h jmp short loc_C90E ; --------------------------------------------------------------------------- loc_C8DE: mov [bp+var_4], 7D0h jmp short loc_C90E ; --------------------------------------------------------------------------- loc_C8E8: mov [bp+var_4], 5DCh jmp short loc_C90E ; --------------------------------------------------------------------------- loc_C8F2: mov [bp+var_4], 3E8h jmp short loc_C90E ; --------------------------------------------------------------------------- loc_C8FC: mov [bp+var_4], 1F4h jmp short loc_C90E ; --------------------------------------------------------------------------- loc_C906: mov [bp+var_4], 0 loc_C90E: les bx, _ksoconfig mov al, es:[bx+0Eh] mov ah, 0 or ax, ax jz short loc_C928 cmp ax, 1 jz short loc_C932 cmp ax, 2 jz short loc_C93C jmp short loc_C944 ; --------------------------------------------------------------------------- loc_C928: add [bp+var_4], 9C4h jmp short loc_C944 ; --------------------------------------------------------------------------- loc_C932: add [bp+var_4], 5DCh jmp short loc_C944 ; --------------------------------------------------------------------------- loc_C93C: add [bp+var_4], 3E8h loc_C944: les bx, _ksoconfig cmp byte ptr es:[bx+16h], 0 jz short loc_C957 add [bp+var_4], 7D0h loc_C957: les bx, _ksoconfig cmp word ptr es:[bx+3Ah], 0 jz short loc_C971 mov ax, es:[bx+3Ah] imul ax, 3 movzx eax, ax add [bp+var_4], eax loc_C971: les bx, _ksoconfig mov al, es:[bx+1Bh] mov ah, 0 mov dl, es:[bx+1Ch] mov dh, 0 sub ax, dx cwde imul eax, 0C8h add [bp+var_4], eax cmp [bp+var_4], 0 jge short loc_C9A1 mov [bp+var_4], 0 jmp short loc_C9B3 ; --------------------------------------------------------------------------- loc_C9A1: cmp [bp+var_4], 2710h jle short loc_C9B3 mov [bp+var_4], 2710h loc_C9B3: mov eax, [bp+var_4] imul eax, 64h mov [bp+var_4], eax add dword_1517E, eax mov ax, word_116E2 add ax, 0B0h ; 'ー' push ax mov ax, word_116E8 add ax, 0D8h push ax pushd [bp+var_4] call sub_C835 mov ax, word_116E2 add ax, 110h push ax mov ax, word_116E8 add ax, 0D8h push ax push word_116E4 push ds push offset aBu_0 call sub_E914 leave retn sub_C8AE endp ; --------------------------------------------------------------------------- off_C9F6 dw offset loc_C8D4 dw offset loc_C8DE dw offset loc_C8E8 dw offset loc_C8F2 dw offset loc_C8FC dw offset loc_C906 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CA02 proc near push bp mov bp, sp les bx, _ksoconfig cmp byte ptr es:[bx+1Ah], 0FFh jz short loc_CA17 cmp byte ptr es:[bx+1Ah], 0FDh jnz short loc_CA57 loc_CA17: les bx, _ksoconfig cmp byte ptr es:[bx+11h], 0 jnz short loc_CA26 mov al, 4 pop bp retn ; --------------------------------------------------------------------------- loc_CA26: les bx, _ksoconfig cmp byte ptr es:[bx+27h], 7 ja short loc_CA35 mov al, 1 pop bp retn ; --------------------------------------------------------------------------- loc_CA35: les bx, _ksoconfig cmp byte ptr es:[bx+1Bh], 6 jb short loc_CA44 mov al, 7 pop bp retn ; --------------------------------------------------------------------------- loc_CA44: les bx, _ksoconfig cmp byte ptr es:[bx+0Ch], 0Fh jb short loc_CA53 mov al, 8 pop bp retn ; --------------------------------------------------------------------------- loc_CA53: mov al, 0 pop bp retn ; --------------------------------------------------------------------------- loc_CA57: les bx, _ksoconfig cmp byte ptr es:[bx+1Ah], 0FEh jnz short loc_CA66 mov al, 2 pop bp retn ; --------------------------------------------------------------------------- loc_CA66: les bx, _ksoconfig mov al, es:[bx+1Ch] mov ah, 0 mov dl, es:[bx+1Bh] mov dh, 0 add dx, dx cmp ax, dx jg short loc_CA80 mov al, 5 pop bp retn ; --------------------------------------------------------------------------- loc_CA80: les bx, _ksoconfig cmp byte ptr es:[bx+13h], 4 jb short loc_CA97 cmp word ptr es:[bx+32h], 15Eh ja short loc_CA97 mov al, 6 pop bp retn ; --------------------------------------------------------------------------- loc_CA97: mov al, 3 pop bp retn sub_CA02 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CA9B proc near var_4 = dword ptr -4 enter 4, 0 push si mov dword_1517E, 0 mov word_107BC, 2 push word_116E2 push word_116E8 push word_116E4 push ds push offset aB@b@b@b@b@b@b@ ; "        腕前判定" call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 18h push ax push word_116E4 push ds push offset aUqiUx ; "難易度" call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 30h ; '0' push ax push word_116E4 push ds push offset aNPiuU_ ; "最終得点" call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 48h ; 'H' push ax push word_116E4 push ds push offset aGGxi call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 60h push ax push word_116E4 push ds push offset aGGaogcpi call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 78h ; 'x' push ax push word_116E4 push ds push offset aGqbGatbrmcj ; "ゲーム達成率" call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 90h ; '・ push ax push word_116E4 push ds push offset aIlcSObcj ; "悪霊退治率" call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0A8h ; 'ィ' push ax push word_116E4 push ds push offset aGagcgegai call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0C0h push ax push word_116E4 push ds push offset aUU_gagcgeganNv ; "得点アイテム最高点率" call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0D8h push ax push word_116E4 push ds push offset aLcnzvv ; "気合い" call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0F0h ; '・ push ax push word_116E4 push ds push offset aPicacovCj ; "処理落ち率" call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 110h push ax push word_116E4 push ds push offset aVavVVSrso ; "あなたの腕前" call sub_E914 les bx, _ksoconfig cmp byte ptr es:[bx+13h], 6 jnz short loc_CBDB mov al, 4 jmp short loc_CBE3 ; --------------------------------------------------------------------------- loc_CBDB: les bx, _ksoconfig mov al, es:[bx+11h] loc_CBE3: mov _verdict_rank, al mov ax, word_116E2 add ax, 0A0h push ax mov ax, word_116E8 add ax, 18h push ax push 10h push ds mov al, _verdict_rank mov ah, 0 shl ax, 3 add ax, offset grEASY push ax push word_116E4 call graph_gaiji_puts mov ax, word_116E2 add ax, 80h push ax mov ax, word_116E8 add ax, 30h ; '0' push ax mov ax, word ptr _ksoconfig add ax, 20h ; ' ' push word ptr _ksoconfig+2 push ax call sub_C67F mov ax, word_116E2 add ax, 0E0h ; '・ push ax mov ax, word_116E8 add ax, 48h ; 'H' push ax les bx, _ksoconfig mov al, es:[bx+1Bh] mov ah, 0 push ax call sub_C5E7 mov ax, word_116E2 add ax, 0E0h ; '・ push ax mov ax, word_116E8 add ax, 60h push ax les bx, _ksoconfig mov al, es:[bx+1Ch] mov ah, 0 push ax call sub_C5E7 mov ax, word_116E2 add ax, 110h push ax mov ax, word_116E8 add ax, 48h ; 'H' push ax push word_116E4 push ds push offset aI call sub_E914 mov ax, word_116E2 add ax, 110h push ax mov ax, word_116E8 add ax, 60h push ax push word_116E4 push ds push offset aI_0 call sub_E914 mov byte_1517C, 1 les bx, _ksoconfig cmp byte ptr es:[bx+13h], 6 jz short loc_CCC6 cmp byte ptr es:[bx+1Ah], 0FEh jb short loc_CCB3 mov word ptr es:[bx+2Ch], 0B3B0h loc_CCB3: mov ax, word_116E2 add ax, 0B0h ; 'ー' push ax mov ax, word_116E8 add ax, 78h ; 'x' push ax push 0B3B0h jmp short loc_CCE8 ; --------------------------------------------------------------------------- loc_CCC6: les bx, _ksoconfig cmp byte ptr es:[bx+1Ah], 0FDh jnz short loc_CCD7 mov word ptr es:[bx+2Ch], 3200h loc_CCD7: mov ax, word_116E2 add ax, 0B0h ; 'ー' push ax mov ax, word_116E8 add ax, 78h ; 'x' push ax push 3200h loc_CCE8: les bx, _ksoconfig push word ptr es:[bx+2Ch] call sub_C729 mov byte_1517C, 0 mov ax, word_116E2 add ax, 0B0h ; 'ー' push ax mov ax, word_116E8 add ax, 90h ; '・ push ax les bx, _ksoconfig push word ptr es:[bx+36h] push word ptr es:[bx+38h] call sub_C729 mov ax, word_116E2 add ax, 0B0h ; 'ー' push ax mov ax, word_116E8 add ax, 0A8h ; 'ィ' push ax les bx, _ksoconfig push word ptr es:[bx+2Eh] push word ptr es:[bx+30h] call sub_C729 mov ax, word_116E2 add ax, 0B0h ; 'ー' push ax mov ax, word_116E8 add ax, 0C0h push ax les bx, _ksoconfig push word ptr es:[bx+32h] push word ptr es:[bx+34h] call sub_C729 call sub_C8AE mov byte_116EA, 1 mov ax, word_116E2 add ax, 0B0h ; 'ー' push ax mov ax, word_116E8 add ax, 0F0h ; '・ push ax les bx, _ksoconfig mov eax, es:[bx+40h] mov ebx, 0Ah xor edx, edx div ebx push ax mov bx, word ptr _ksoconfig mov eax, es:[bx+3Ch] mov ebx, 0Ah xor edx, edx div ebx push ax call sub_C729 mov byte_116EA, 0 mov ebx, 0Ch mov eax, dword_1517E cdq idiv ebx mov dword_1517E, eax mov eax, dword_15182 add dword_1517E, eax les bx, _ksoconfig cmp byte ptr es:[bx+4Bh], 0Ah jb short loc_CDCB add dword_1517E, 7A120h jmp short loc_CDF3 ; --------------------------------------------------------------------------- loc_CDCB: les bx, _ksoconfig movzx eax, byte ptr es:[bx+4Ah] imul eax, 1388h add dword_1517E, eax movzx eax, byte ptr es:[bx+4Bh] imul eax, 0C350h add dword_1517E, eax loc_CDF3: mov al, _verdict_rank mov ah, 0 mov bx, ax cmp bx, RANK_EXTRA ja loc_CEAF add bx, bx jmp cs:off_D165[bx] loc_CE08: sub dword_1517E, 0C350h mov [bp+var_4], 0C3500h jmp loc_CEAF ; --------------------------------------------------------------------------- loc_CE1C: mov [bp+var_4], 0F4240h jmp loc_CEAF ; --------------------------------------------------------------------------- loc_CE27: mov eax, dword_1517E imul eax, 5 mov dword_1517E, eax mov ebx, 4 cdq idiv ebx mov dword_1517E, eax add dword_1517E, 249F0h mov [bp+var_4], 124F80h jmp short loc_CEAF ; --------------------------------------------------------------------------- loc_CE55: mov eax, dword_1517E imul eax, 3 mov dword_1517E, eax mov ebx, 2 cdq idiv ebx mov dword_1517E, eax add dword_1517E, 493E0h mov [bp+var_4], 155CC0h jmp short loc_CEAF ; --------------------------------------------------------------------------- loc_CE83: mov eax, dword_1517E imul eax, 3 mov dword_1517E, eax mov ebx, 2 cdq idiv ebx mov dword_1517E, eax add dword_1517E, 3D090h mov [bp+var_4], 1E8480h loc_CEAF: les bx, _ksoconfig mov al, es:[bx+0Dh] mov ah, 0 dec ax mov bx, ax cmp bx, 5 ja short loc_CF0A add bx, bx jmp cs:off_D159[bx] loc_CEC8: add dword_1517E, 0C350h add [bp+var_4], 186A0h jmp short loc_CF0A ; --------------------------------------------------------------------------- loc_CEDB: add dword_1517E, 61A8h add [bp+var_4], 0C350h jmp short loc_CF0A ; --------------------------------------------------------------------------- loc_CEEE: sub [bp+var_4], 61A8h jmp short loc_CF0A ; --------------------------------------------------------------------------- loc_CEF8: sub [bp+var_4], 0C350h jmp short loc_CF0A ; --------------------------------------------------------------------------- loc_CF02: sub [bp+var_4], 124F8h loc_CF0A: les bx, _ksoconfig mov al, es:[bx+0Eh] mov ah, 0 or ax, ax jz short loc_CF24 cmp ax, 1 jz short loc_CF37 cmp ax, 2 jz short loc_CF4A jmp short loc_CF5B ; --------------------------------------------------------------------------- loc_CF24: add dword_1517E, 0C350h add [bp+var_4], 186A0h jmp short loc_CF5B ; --------------------------------------------------------------------------- loc_CF37: add dword_1517E, 7530h add [bp+var_4], 0C350h jmp short loc_CF5B ; --------------------------------------------------------------------------- loc_CF4A: add dword_1517E, 4E20h add [bp+var_4], 61A8h loc_CF5B: les bx, _ksoconfig cmp byte ptr es:[bx+16h], 0 jnz short loc_CF77 sub dword_1517E, 30D40h sub [bp+var_4], 186A0h loc_CF77: les bx, _ksoconfig cmp byte ptr es:[bx+1Bh], 0Ah jb short loc_CF8D sub dword_1517E, 493E0h jmp short loc_CFA3 ; --------------------------------------------------------------------------- loc_CF8D: les bx, _ksoconfig movzx eax, byte ptr es:[bx+1Bh] imul eax, 7530h sub dword_1517E, eax loc_CFA3: les bx, _ksoconfig cmp byte ptr es:[bx+1Ch], 0Fh jb short loc_CFB9 sub dword_1517E, 36EE8h jmp short loc_CFCF ; --------------------------------------------------------------------------- loc_CFB9: les bx, _ksoconfig movzx eax, byte ptr es:[bx+1Ch] imul eax, 3A98h sub dword_1517E, eax loc_CFCF: les bx, _ksoconfig cmp byte ptr es:[bx+1Ah], 0FDh jnb short loc_CFF5 mov eax, dword_1517E imul eax, 7 mov dword_1517E, eax mov ebx, 8 cdq idiv ebx mov dword_1517E, eax loc_CFF5: cmp dword_1517E, 0 jge short loc_D008 mov dword_1517E, 0 jmp short loc_D01A ; --------------------------------------------------------------------------- loc_D008: mov eax, dword_1517E cmp eax, [bp+var_4] jbe short loc_D01A mov eax, [bp+var_4] mov dword_1517E, eax loc_D01A: mov byte_15187, 0 mov byte_151A5, 0 les bx, _ksoconfig mov eax, es:[bx+40h] shr eax, 1 cmp eax, es:[bx+3Ch] jbe loc_D120 mov ax, word_116E2 add ax, 0B0h ; 'ー' push ax mov ax, word_116E8 add ax, 110h push ax pushd [dword_1517E] call sub_C835 mov ax, word_116E2 add ax, 110h push ax mov ax, word_116E8 add ax, 110h push ax push word_116E4 push ds push offset aU_ call sub_E914 push ds push offset a_ude_txt ; "_ude.txt" call file_ropen cmp dword_1517E, 16E360h jge short loc_D0E1 cmp dword_1517E, 0 jnz short loc_D08B mov si, 19h jmp short loc_D0D1 ; --------------------------------------------------------------------------- loc_D08B: cmp dword_1517E, 100590h jge short loc_D0AE mov eax, dword_1517E mov ebx, 0C350h cdq idiv ebx mov dx, 18h sub dx, ax mov si, dx jmp short loc_D0D1 ; --------------------------------------------------------------------------- loc_D0AE: cmp dword_1517E, 124F80h jge short loc_D0BE mov si, 3 jmp short loc_D0D1 ; --------------------------------------------------------------------------- loc_D0BE: cmp dword_1517E, 149970h jge short loc_D0CE mov si, 2 jmp short loc_D0D1 ; --------------------------------------------------------------------------- loc_D0CE: mov si, 1 loc_D0D1: mov ax, si imul ax, 1Eh cwde push eax push 0 call file_seek loc_D0E1: push ds push offset byte_15187 push 1Eh call file_read call sub_CA02 mov ah, 0 mov si, ax imul ax, 1Eh add ax, 30Ch cwde push eax push 0 call file_seek push ds push offset byte_151A5 push 1Eh call file_read call file_close mov byte_151A3, 0 mov byte_151C1, 0 jmp short loc_D156 ; --------------------------------------------------------------------------- loc_D120: mov ax, word_116E2 add ax, 0B0h ; 'ー' push ax mov ax, word_116E8 add ax, 110h push ax push word_116E4 push ds push offset aBhbhbhbhbhbhu_ ; "??????点" call sub_E914 mov ax, word_116E2 add ax, 30h ; '0' push ax mov ax, word_116E8 add ax, 128h push ax push word_116E6 push ds push offset aPicacovVVcvsfT ; "処理落ちによる判定不可" call sub_E914 loc_D156: pop si leave retn sub_CA9B endp ; --------------------------------------------------------------------------- off_D159 dw offset loc_CEC8 dw offset loc_CEDB dw offset loc_CF0A dw offset loc_CEEE dw offset loc_CEF8 dw offset loc_CF02 off_D165 dw offset loc_CE08 dw offset loc_CE1C dw offset loc_CE27 dw offset loc_CE55 dw offset loc_CE83 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D16F proc near push bp mov bp, sp cmp byte_15187, 0 jz short loc_D1AF mov ax, word_116E2 add ax, 30h ; '0' push ax mov ax, word_116E8 add ax, 128h push ax push word_116E6 push ds push offset byte_15187 call sub_E914 mov ax, word_116E2 add ax, 30h ; '0' push ax mov ax, word_116E8 add ax, 138h push ax push word_116E6 push ds push offset byte_151A5 call sub_E914 loc_D1AF: pop bp retn sub_D16F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D1B1 proc near push bp mov bp, sp mov PaletteTone, 0 call far ptr palette_show graph_accesspage 1 call pi_slot_load pascal, 0, ds, offset aUde_pi call pi_slot_palette_apply pascal, 0 call pi_slot_put pascal, large 0, 0 call pi_slot_free pascal, 0 push 0 call graph_copy_page push 4 call palette_black_in graph_accesspage 0 graph_showpage al call sub_CA9B push 40h call frame_delay call sub_D16F push 0 call _input_wait_for_change push 2 call palette_black_out pop bp retn sub_D1B1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D21D proc near var_2 = word ptr -2 enter 2, 0 push si push di push word_116E2 mov ax, word_116E8 add ax, 40h push ax push word_116E4 push ds push offset aB@vpcB@ ; " 1面 " call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 60h push ax push word_116E4 push ds push offset aB@vqcB@ ; " 2面 " call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 80h push ax push word_116E4 push ds push offset aB@vrcB@ ; " 3面 " call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0A0h push ax push word_116E4 push ds push offset aB@vscB@ ; " 4面 " call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0C0h push ax push word_116E4 push ds push offset aB@vtcB@ ; " 5面 " call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0E0h ; '・ push ax push word_116E4 push ds push offset aB@vucB@ ; " 6面 " call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 120h push ax push word_116E4 push ds push offset aNPiuU__0 ; "最終得点" call sub_E914 mov ax, word_116E2 add ax, 80h mov [bp+var_2], ax xor si, si mov ax, word_116E8 add ax, 40h mov di, ax jmp short loc_D2FE ; --------------------------------------------------------------------------- loc_D2E0: push [bp+var_2] push di mov ax, si shl ax, 3 mov dx, word ptr _ksoconfig add dx, ax add dx, 4Ch ; 'L' push word ptr _ksoconfig+2 push dx call sub_C67F inc si add di, 20h ; ' ' loc_D2FE: cmp si, 6 jl short loc_D2E0 push [bp+var_2] mov ax, word_116E8 add ax, 120h push ax mov ax, word ptr _ksoconfig add ax, 20h ; ' ' push word ptr _ksoconfig+2 push ax call sub_C67F pop di pop si leave retn sub_D21D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D31F proc near arg_0 = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 arg_6 = word ptr 0Ah push bp mov bp, sp mov ax, [bp+arg_6] mov word_151D6, ax mov ax, [bp+arg_4] mov word_151D8, ax mov ax, [bp+arg_2] mov word_151CE, ax mov ax, [bp+arg_0] mov word_151D0, ax mov ax, word_151CE cwd sub ax, dx sar ax, 1 mov dx, word_151D6 sub dx, ax add dx, 0FFF8h push dx mov ax, word_151D0 cwd sub ax, dx sar ax, 1 mov dx, word_151D8 sub dx, ax add dx, 0FFF8h push dx mov ax, word_151CE cwd sub ax, dx sar ax, 1 add ax, word_151D6 add ax, 7 push ax mov ax, word_151D0 cwd sub ax, dx sar ax, 1 add ax, word_151D8 add ax, 7 push ax call grc_setclip pop bp retn 8 sub_D31F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D387 proc near var_4 = word ptr -4 var_2 = word ptr -2 enter 4, 0 push si push di mov si, 50E4h mov [bp+var_2], 55F8h mov [bp+var_4], 5618h push 14000C8h push 1800140h call sub_D31F mov word_151DE, 0 xor di, di jmp short loc_D41B ; --------------------------------------------------------------------------- loc_D3B3: call IRand cwd idiv word_151CE shl dx, 4 mov ax, word_151CE shl ax, 3 sub dx, ax movsx eax, dx mov [si], eax call IRand cwd idiv word_151D0 shl dx, 4 mov ax, word_151D0 shl ax, 3 sub dx, ax movsx eax, dx mov [si+4], eax call IRand mov [si+12h], al mov word ptr [si+0Eh], 0Ah mov word ptr [si+0Ch], 0 mov byte ptr [si+13h], 0 lea ax, [si+8] push ax pushd 0 push word ptr [si+0Eh] mov al, [si+12h] mov ah, 0 push ax call vector2_at inc di add si, 14h loc_D41B: cmp di, 40h jl short loc_D3B3 mov dword ptr [si], 0FFFFC190h mov byte ptr [si+13h], 0 mov word ptr [si+8], 0 mov word ptr [si+0Ah], 0 mov word_151DA, 0 mov word_151DC, 0 xor di, di jmp short loc_D451 ; --------------------------------------------------------------------------- loc_D445: mov bx, [bp+var_2] mov word ptr [bx], 0C190h inc di add [bp+var_2], 4 loc_D451: cmp di, 8 jl short loc_D445 xor di, di jmp short loc_D494 ; --------------------------------------------------------------------------- loc_D45A: call IRand cwd idiv word_151CE shl dx, 4 mov ax, word_151CE shl ax, 3 sub dx, ax mov bx, [bp+var_4] mov [bx], dx call IRand cwd idiv word_151D0 shl dx, 4 mov ax, word_151D0 shl ax, 3 sub dx, ax mov bx, [bp+var_4] mov [bx+2], dx inc di add [bp+var_4], 4 loc_D494: cmp di, 30h ; '0' jl short loc_D45A pop di pop si leave retn sub_D387 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D49D proc near push bp mov bp, sp push si push di mov si, 50E4h xor di, di jmp short loc_D4ED ; --------------------------------------------------------------------------- loc_D4A9: mov ax, [si+4] neg ax push ax mov ax, [si] neg ax push ax call iatan2 mov [si+12h], al push word ptr [si] push word ptr [si+4] call ihypot mov bx, 20h ; ' ' cwd idiv bx mov [si+0Eh], ax mov word ptr [si+10h], 0 lea ax, [si+8] push ax pushd 0 push word ptr [si+0Eh] mov al, [si+12h] mov ah, 0 push ax call vector2_at inc di add si, 14h loc_D4ED: cmp di, 40h jl short loc_D4A9 mov dword ptr [si], 0 mov dword ptr [si+4], 0 mov byte ptr [si+13h], 1 pop di pop si pop bp retn sub_D49D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D509 proc near push bp mov bp, sp push si mov si, 50E4h xor ax, ax jmp short loc_D51F ; --------------------------------------------------------------------------- loc_D514: mov dword ptr [si], 0FFFFC190h inc ax add si, 14h loc_D51F: cmp ax, 40h jl short loc_D514 mov byte ptr [si+13h], 10h mov word_151DE, 1 pop si pop bp retn sub_D509 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D531 proc near push bp mov bp, sp push si push di mov si, 50E4h xor di, di jmp loc_D5C9 ; --------------------------------------------------------------------------- loc_D53E: mov ax, [si+4] neg ax push ax mov ax, [si] neg ax push ax call iatan2 mov [si+12h], al push word ptr [si] push word ptr [si+4] call ihypot mov bx, 20h ; ' ' cwd idiv bx mov [si+0Eh], ax mov word ptr [si+0Ch], 0 call IRand and al, 7Fh mov [si+12h], al call IRand mov bx, 40h cwd idiv bx add dx, 5Ch mov [si+0Eh], dx push 50D2h push word_156E4 push word_156E8 push 0C0h mov al, [si+12h] mov ah, 0 push ax call vector2_at lea ax, [si+8] push ax pushd 0 push word ptr [si+0Eh] mov al, [si+12h] mov ah, 0 push ax call vector2_at movsx eax, word_151D2 mov [si], eax movsx eax, word_151D4 mov [si+4], eax inc di add si, 14h loc_D5C9: cmp di, 40h jl loc_D53E mov dword ptr [si], 0FFFFC190h mov word_151DE, 1 pop di pop si pop bp retn sub_D531 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D5E1 proc near var_4 = word ptr -4 var_2 = word ptr -2 enter 4, 0 push si push di mov si, 50E4h mov [bp+var_4], 55F8h mov di, 5618h mov [bp+var_2], 0 jmp loc_D6FF ; --------------------------------------------------------------------------- loc_D5FA: cmp dword ptr [si], 0FFFFC190h jz loc_D6F9 mov ax, [si+8] sub ax, word_151DA cwde add [si], eax mov ax, [si+0Ah] sub ax, word_151DC cwde add [si+4], eax cmp word_151DE, 0 jnz loc_D6AB mov ax, word_151CE neg ax shl ax, 3 add ax, 0FFC0h cwde cmp eax, [si] jl short loc_D649 mov ax, word_151CE shl ax, 4 add ax, 80h cwde add [si], eax jmp short loc_D667 ; --------------------------------------------------------------------------- loc_D649: mov ax, word_151CE shl ax, 3 add ax, 40h cwde cmp eax, [si] jg short loc_D667 mov ax, word_151CE shl ax, 4 add ax, 80h cwde sub [si], eax loc_D667: mov ax, word_151D0 neg ax shl ax, 3 add ax, 0FFC0h cwde cmp eax, [si+4] jl short loc_D68B mov ax, word_151D0 shl ax, 4 add ax, 80h cwde add [si+4], eax jmp short loc_D6AB ; --------------------------------------------------------------------------- loc_D68B: mov ax, word_151D0 shl ax, 3 add ax, 40h cwde cmp eax, [si+4] jg short loc_D6AB mov ax, word_151D0 shl ax, 4 add ax, 80h cwde sub [si+4], eax loc_D6AB: cmp word_151DE, 0 jz short loc_D6F9 mov ax, word_151DE sub [si+0Eh], ax cmp word ptr [si+0Eh], 0 jnz short loc_D6C7 mov dword ptr [si], 0FFFFC190h jmp short loc_D6F9 ; --------------------------------------------------------------------------- loc_D6C7: cmp word ptr [si+0Eh], 23h ; '#' jle short loc_D6D4 mov word ptr [si+0Ch], 0 jmp short loc_D6E4 ; --------------------------------------------------------------------------- loc_D6D4: mov ax, [si+0Eh] mov bx, 7 cwd idiv bx or dx, dx jnz short loc_D6E4 inc word ptr [si+0Ch] loc_D6E4: lea ax, [si+8] push ax pushd 0 push word ptr [si+0Eh] mov al, [si+12h] mov ah, 0 push ax call vector2_at loc_D6F9: inc [bp+var_2] add si, 14h loc_D6FF: cmp [bp+var_2], 40h jl loc_D5FA mov [bp+var_2], 0 jmp short loc_D72C ; --------------------------------------------------------------------------- loc_D70E: mov bx, [bp+var_4] cmp word ptr [bx], 0C190h jz short loc_D725 mov bx, [bp+var_4] mov ax, word_151DA sub [bx], ax mov ax, word_151DC sub [bx+2], ax loc_D725: inc [bp+var_2] add [bp+var_4], 4 loc_D72C: cmp [bp+var_2], 8 jl short loc_D70E mov [bp+var_2], 0 jmp loc_D7F8 ; --------------------------------------------------------------------------- loc_D73A: mov ax, [bp+var_2] mov bx, 2 cwd idiv bx or dx, dx jnz short loc_D751 mov ax, word_151DA sub [di], ax mov ax, word_151DC jmp short loc_D763 ; --------------------------------------------------------------------------- loc_D751: mov ax, word_151DA cwd sub ax, dx sar ax, 1 sub [di], ax mov ax, word_151DC cwd sub ax, dx sar ax, 1 loc_D763: sub [di+2], ax cmp word_151DA, 0 jnz short loc_D7A5 mov ax, word_151CE neg ax shl ax, 3 cmp ax, [di] jge short loc_D783 mov ax, word_151CE shl ax, 3 cmp ax, [di] jg short loc_D7CA loc_D783: call IRand cwd idiv word_151CE shl dx, 4 mov ax, word_151CE shl ax, 3 sub dx, ax mov [di], dx mov ax, word_151D0 shl ax, 3 mov [di+2], ax jmp short loc_D7CA ; --------------------------------------------------------------------------- loc_D7A5: mov ax, word_151CE neg ax shl ax, 3 cmp ax, [di] jl short loc_D7B6 mov ax, word_151CE jmp short loc_D7C5 ; --------------------------------------------------------------------------- loc_D7B6: mov ax, word_151CE shl ax, 3 cmp ax, [di] jg short loc_D7CA mov ax, word_151CE neg ax loc_D7C5: shl ax, 3 mov [di], ax loc_D7CA: mov ax, word_151D0 neg ax shl ax, 3 cmp ax, [di+2] jl short loc_D7DC mov ax, word_151D0 jmp short loc_D7EC ; --------------------------------------------------------------------------- loc_D7DC: mov ax, word_151D0 shl ax, 3 cmp ax, [di+2] jg short loc_D7F2 mov ax, word_151D0 neg ax loc_D7EC: shl ax, 3 mov [di+2], ax loc_D7F2: inc [bp+var_2] add di, 4 loc_D7F8: cmp [bp+var_2], 30h ; '0' jl loc_D73A mov si, 55E4h cmp dword ptr [si], 0FFFFC190h jz short loc_D83F mov ax, [si+8] sub ax, word_151DA cwde add [si], eax mov ax, [si+0Ah] sub ax, word_151DC cwde add [si+4], eax cmp byte ptr [si+13h], 10h jb short loc_D83F cmp byte_1183A, 0 jz short loc_D83F call sub_D853 cmp word ptr [si+0Ah], 0B4h ; 'エ' jge short loc_D83F inc word ptr [si+0Ah] loc_D83F: mov ax, word_151E2 mov bx, 3 cwd idiv bx or dx, dx jnz short loc_D84F call sub_D8B6 loc_D84F: pop di pop si leave retn sub_D5E1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D853 proc near push bp mov bp, sp push si mov ax, word_1183C inc word_1183C imul ax, 14h add ax, 50E4h mov si, ax mov word ptr [si+0Ch], 0 call IRand and al, 7Fh mov [si+12h], al mov word ptr [si+0Eh], 30h ; '0' push 50D2h push word_156E4 push word_156E8 push 0C0h mov al, [si+12h] mov ah, 0 push ax call vector2_at movsx eax, word_151D2 mov [si], eax movsx eax, word_151D4 mov [si+4], eax cmp word_1183C, 40h jl short loc_D8B3 mov word_1183C, 0 loc_D8B3: pop si pop bp retn sub_D853 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D8B6 proc near push bp mov bp, sp mov dx, 6 jmp short loc_D8E3 ; --------------------------------------------------------------------------- loc_D8BE: mov bx, dx shl bx, 2 mov ax, [bx+55F8h] mov bx, dx shl bx, 2 mov [bx+55FCh], ax mov bx, dx shl bx, 2 mov ax, [bx+55FAh] mov bx, dx shl bx, 2 mov [bx+55FEh], ax dec dx loc_D8E3: or dx, dx jge short loc_D8BE mov ax, word_156E4 mov word_156F8, ax mov ax, word_156E8 mov word_156FA, ax pop bp retn sub_D8B6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D8F5 proc near push bp mov bp, sp push si mov si, 50E4h xor cx, cx jmp short loc_D91D ; --------------------------------------------------------------------------- loc_D900: inc word ptr [si+10h] mov ax, [si+10h] mov bx, 8 cwd idiv bx or dx, dx jnz short loc_D919 cmp word ptr [si+0Ch], 5 jge short loc_D919 inc word ptr [si+0Ch] loc_D919: inc cx add si, 14h loc_D91D: cmp cx, 40h jl short loc_D900 cmp byte ptr [si+13h], 10h jnb short loc_D92E mov al, byte_1183A add [si+13h], al loc_D92E: pop si pop bp retn sub_D8F5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D931 proc near var_2 = word ptr -2 enter 2, 0 push si inc word_1183E cmp word_1183E, 50h ; 'P' jl loc_DA31 cmp word_1183E, 0B0h ; 'ー' jge short loc_D951 inc word_151DC jmp short loc_D9B5 ; --------------------------------------------------------------------------- loc_D951: cmp word_1183E, 158h jge short loc_D964 mov al, byte_1183A mov ah, 0 add word_151DC, ax jmp short loc_D9B5 ; --------------------------------------------------------------------------- loc_D964: cmp byte_11840, 0 jnz short loc_D991 mov ax, word_151E2 mov bx, 10h cwd idiv bx or dx, dx jnz short loc_D97D mov ax, 1 jmp short loc_D97F ; --------------------------------------------------------------------------- loc_D97D: xor ax, ax loc_D97F: add word_151DC, ax cmp word_151DC, 0B6h ; 'カ' jle short loc_D9B5 inc byte_11840 jmp short loc_D9B5 ; --------------------------------------------------------------------------- loc_D991: mov ax, word_151E2 mov bx, 10h cwd idiv bx or dx, dx jnz short loc_D9A3 mov ax, 1 jmp short loc_D9A5 ; --------------------------------------------------------------------------- loc_D9A3: xor ax, ax loc_D9A5: sub word_151DC, ax cmp word_151DC, 0B2h ; 'イ' jge short loc_D9B5 dec byte_11840 loc_D9B5: cmp word_1183E, 0EAh ; '・ jl short loc_DA31 cmp word_1183E, 200h jge short loc_DA04 mov ax, word_1183E add ax, 0FF16h mov si, ax cmp si, 58h ; 'X' jle short loc_D9D7 add ax, 0FFA8h jmp short loc_D9D9 ; --------------------------------------------------------------------------- loc_D9D7: xor ax, ax loc_D9D9: mov [bp+var_2], ax mov ax, 140h sub ax, [bp+var_2] push ax push 0C8h mov ax, si cwd sub ax, dx sar ax, 1 mov dx, 180h sub dx, ax push dx mov ax, si mov bx, 8 cwd idiv bx add ax, 140h push ax call sub_D31F jmp short loc_DA31 ; --------------------------------------------------------------------------- loc_DA04: cmp word_1183E, 3E0h jl short loc_DA18 cmp word_1183E, 400h jg short loc_DA18 dec word_156EC loc_DA18: cmp word_1183E, 3F0h jl short loc_DA2C cmp word_1183E, 410h jg short loc_DA2C dec word_151DA loc_DA2C: mov ax, 1 jmp short loc_DA33 ; --------------------------------------------------------------------------- loc_DA31: xor ax, ax loc_DA33: pop si leave retn sub_D931 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DA36 proc near push bp mov bp, sp push si mov ax, word_11842 imul ax, 14h add ax, 50E4h mov si, ax inc word_11842 mov ax, word_11842 cmp ax, 40h jge loc_DAD4 call IRand mov bx, 18h cwd idiv bx add dx, 8 mov [si+0Eh], dx call IRand mov bx, 40h cwd idiv bx add dl, 20h ; ' ' mov [si+12h], dl call IRand mov bx, 6 cwd idiv bx mov [si+0Ch], dx call IRand cwd idiv word_151CE shl dx, 4 mov ax, word_151CE shl ax, 3 sub dx, ax movsx eax, dx mov [si], eax mov ax, word_151D0 neg ax shl ax, 3 add ax, 0FFC0h cwde mov [si+4], eax cmp byte ptr [si+12h], 40h jnb short loc_DABA mov al, 0 jmp short loc_DABC ; --------------------------------------------------------------------------- loc_DABA: mov al, 1 loc_DABC: mov [si+13h], al lea ax, [si+8] push ax pushd 0 push word ptr [si+0Eh] mov al, [si+12h] mov ah, 0 push ax call vector2_at loc_DAD4: pop si pop bp retn sub_DA36 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DAD7 proc near push bp mov bp, sp push si push di mov si, 50E4h cmp word_151DA, 0 jge short loc_DAEF mov al, byte_1183A mov ah, 0 add word_151DA, ax loc_DAEF: inc word_11844 cmp word_11844, 20h ; ' ' jl loc_DBE0 cmp word_11844, 80h jge short loc_DB0B dec word_151DC jmp loc_DBC3 ; --------------------------------------------------------------------------- loc_DB0B: cmp word_11844, 134h jge short loc_DB1F mov al, byte_1183A mov ah, 0 sub word_151DC, ax jmp loc_DBC3 ; --------------------------------------------------------------------------- loc_DB1F: mov ax, word_151CE cwd sub ax, dx sar ax, 1 add ax, word_151D6 cmp ax, 276h jge short loc_DB45 mov ax, word_151D6 add ax, 4 push ax push 0C8h push word_151CE push word_151D0 call sub_D31F loc_DB45: mov word_151DE, 0 mov ax, word_11844 mov bx, 8 cwd idiv bx or dx, dx jnz short loc_DB9F call sub_DA36 xor di, di jmp short loc_DB9A ; --------------------------------------------------------------------------- loc_DB5F: cmp byte ptr [si+13h], 0 jnz short loc_DB74 inc byte ptr [si+12h] cmp byte ptr [si+12h], 60h jb short loc_DB81 mov byte ptr [si+13h], 1 jmp short loc_DB81 ; --------------------------------------------------------------------------- loc_DB74: dec byte ptr [si+12h] cmp byte ptr [si+12h], 20h ; ' ' ja short loc_DB81 mov byte ptr [si+13h], 0 loc_DB81: lea ax, [si+8] push ax pushd 0 push word ptr [si+0Eh] mov al, [si+12h] mov ah, 0 push ax call vector2_at inc di add si, 14h loc_DB9A: cmp di, 40h jl short loc_DB5F loc_DB9F: cmp word_11844, 7530h jl short loc_DBAD mov word_11844, 7528h loc_DBAD: mov ax, word_151CE cwd sub ax, dx sar ax, 1 add ax, word_151D6 cmp ax, 276h jl short loc_DBC3 mov ax, 1 jmp short loc_DBE2 ; --------------------------------------------------------------------------- loc_DBC3: mov ax, word_11844 mov bx, 4 cwd idiv bx or dx, dx jnz short loc_DBE0 cmp Palettes+2, 60h jnb short loc_DBE0 inc Palettes+2 call far ptr palette_show loc_DBE0: xor ax, ax loc_DBE2: pop di pop si pop bp retn sub_DAD7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DBE6 proc near var_2C = byte ptr -2Ch var_2 = word ptr -2 arg_0 = word 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 2Ch, 0 push si push di mov di, [bp+arg_8] cmp [bp+arg_2], 0 jge short loc_DBFF mov byte_11846, 1 mov al, 1 jmp loc_DCF6 ; --------------------------------------------------------------------------- loc_DBFF: mov ax, [bp+arg_6] mov bx, 10h cwd idiv bx add ax, 7 cmp ax, [bp+arg_2] jge short loc_DC48 call grcg_setcolor pascal, (GC_RMW shl 16) + 1 mov ax, [bp+arg_A] mov bx, 8 cwd idiv bx push ax push di mov ax, [bp+arg_A] add ax, [bp+arg_6] dec ax cwd idiv bx push ax mov ax, di add ax, [bp+arg_4] dec ax push ax call grcg_byteboxfill_x GRCG_OFF_CLOBBERING dx mov al, 2 jmp loc_DCF6 ; --------------------------------------------------------------------------- loc_DC48: mov bx, 8 mov ax, [bp+arg_A] cwd idiv bx mov [bp+arg_A], ax mov bx, 10h mov ax, di cwd idiv bx mov di, ax mov ax, [bp+arg_6] cwd idiv bx mov [bp+arg_6], ax mov ax, [bp+arg_4] cwd idiv bx mov [bp+arg_4], ax cmp [bp+arg_0], 0 jle short loc_DC7D mov [bp+var_2], 0 jmp short loc_DC84 ; --------------------------------------------------------------------------- loc_DC7D: mov ax, [bp+arg_6] dec ax mov [bp+var_2], ax loc_DC84: xor si, si jmp short loc_DCD0 ; --------------------------------------------------------------------------- loc_DC88: cmp [bp+arg_2], 7 jl short loc_DC9A lea bx, [bp+var_2C] add bx, [bp+var_2] mov byte ptr ss:[bx], 98h ; '・ jmp short loc_DCBA ; --------------------------------------------------------------------------- loc_DC9A: cmp [bp+arg_2], 0 jge short loc_DCAC lea bx, [bp+var_2C] add bx, [bp+var_2] mov byte ptr ss:[bx], 2 jmp short loc_DCBA ; --------------------------------------------------------------------------- loc_DCAC: lea bx, [bp+var_2C] add bx, [bp+var_2] mov al, 9Fh ; '・ sub al, byte ptr [bp+arg_2] mov ss:[bx], al loc_DCBA: mov ax, si add ax, ax add ax, [bp+arg_A] cmp ax, 50h ; 'P' jge short loc_DCD5 inc si mov ax, [bp+arg_0] add [bp+var_2], ax dec [bp+arg_2] loc_DCD0: cmp si, [bp+arg_6] jl short loc_DC88 loc_DCD5: mov [bp+si+var_2C], 0 xor si, si jmp short loc_DCEF ; --------------------------------------------------------------------------- loc_DCDD: push [bp+arg_A] push di push ss lea ax, [bp+var_2C] push ax push TX_BLACK call gaiji_putsa inc si inc di loc_DCEF: cmp si, [bp+arg_4] jle short loc_DCDD mov al, 0 loc_DCF6: pop di pop si leave retn 0Ch sub_DBE6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DCFC proc near var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 @@slot = word ptr 6 @@y_center = word ptr 8 @@x_center = word ptr 0Ah enter 4, 0 push si push di mov di, [bp+@@y_center] mov ax, [bp+@@slot] shl ax, 4 add ax, offset _cdg_slots mov si, ax mov ax, [si+CDGSlot.pixel_width] cwd sub ax, dx sar ax, 1 sub [bp+@@x_center], ax mov ax, [si+CDGSlot.pixel_height] cwd sub ax, dx sar ax, 1 sub di, ax cmp word_11848, 1 jg loc_DDBC mov ax, [si+CDGSlot.pixel_width] mov bx, 10h cwd idiv bx add ax, 7 mov word_151C4, ax mov word_151C6, 0 inc word_11848 call cdg_put_noalpha pascal, [bp+@@x_center], di, [bp+@@slot] mov [bp+var_2], 0 jmp short loc_DDB1 ; --------------------------------------------------------------------------- loc_DD5A: mov [bp+var_4], 0 jmp short loc_DDA2 ; --------------------------------------------------------------------------- loc_DD61: mov ax, [bp+@@x_center] mov bx, 8 cwd idiv bx push ax mov ax, [bp+var_4] cwd idiv bx pop dx add dx, ax cmp dx, 50h ; 'P' jge short loc_DD9E mov ax, [bp+@@x_center] cwd idiv bx push ax mov ax, [bp+var_4] cwd idiv bx pop dx add dx, ax push dx mov ax, di mov bx, 10h cwd idiv bx push ax push ds push offset unk_1184C push TX_BLACK + TX_REVERSE call text_putsa loc_DD9E: add [bp+var_4], 10h loc_DDA2: mov ax, [si+2] cmp ax, [bp+var_4] jge short loc_DD61 add [bp+var_2], 10h add di, 10h loc_DDB1: mov ax, [si+4] cmp ax, [bp+var_2] jge short loc_DD5A jmp loc_DE6C ; --------------------------------------------------------------------------- loc_DDBC: cmp word_11848, 3 jg short loc_DE01 inc word_151C6 mov ax, word_151C6 mov bx, 4 cwd idiv bx or dx, dx jnz short loc_DDD8 dec word_151C4 loc_DDD8: push [bp+@@x_center] push di push [si+CDGSlot.pixel_width] push [si+CDGSlot.pixel_height] push word_151C4 push 1 call sub_DBE6 cmp al, 1 jnz short loc_DE6C inc word_11848 mov word_151C4, 0 mov word_151C6, 0 jmp short loc_DE6C ; --------------------------------------------------------------------------- loc_DE01: mov ax, word_151E0 cmp ax, [bp+arg_0] jl short loc_DE6C cmp [bp+arg_0], 0F9Ch jz short loc_DE6C cmp word_11848, 4 jnz short loc_DE49 inc word_151C6 mov ax, word_151C6 mov bx, 4 cwd idiv bx or dx, dx jnz short loc_DE2C inc word_151C4 loc_DE2C: push [bp+@@x_center] push di push [si+CDGSlot.pixel_width] push [si+CDGSlot.pixel_height] push word_151C4 push 0FFFFh call sub_DBE6 cmp al, 2 jnz short loc_DE6C inc word_11848 jmp short loc_DE6C ; --------------------------------------------------------------------------- loc_DE49: push [bp+@@x_center] push di push [si+CDGSlot.pixel_width] push [si+CDGSlot.pixel_height] push 80FFFFh call sub_DBE6 mov word_11848, 0 mov byte_11846, 1 mov ax, 1 jmp short loc_DE6E ; --------------------------------------------------------------------------- loc_DE6C: xor ax, ax loc_DE6E: pop di pop si leave retn 8 sub_DCFC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DE74 proc near var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 @@slot = word ptr 6 @@y_center = word ptr 8 @@x_center = word ptr 0Ah enter 4, 0 push si push di mov di, [bp+@@y_center] mov ax, [bp+@@slot] shl ax, 4 add ax, offset _cdg_slots mov si, ax mov ax, [si+CDGSlot.pixel_width] cwd sub ax, dx sar ax, 1 sub [bp+@@x_center], ax mov ax, [si+CDGSlot.pixel_height] cwd sub ax, dx sar ax, 1 sub di, ax cmp word_1184A, 1 jg loc_DF34 mov ax, [si+CDGSlot.pixel_width] mov bx, 10h cwd idiv bx add ax, 7 mov word_151C8, ax mov word_151CA, 0 inc word_1184A call cdg_put_noalpha pascal, [bp+@@x_center], di, [bp+@@slot] mov [bp+var_2], 0 jmp short loc_DF29 ; --------------------------------------------------------------------------- loc_DED2: mov [bp+var_4], 0 jmp short loc_DF1A ; --------------------------------------------------------------------------- loc_DED9: mov ax, [bp+@@x_center] mov bx, 8 cwd idiv bx push ax mov ax, [bp+var_4] cwd idiv bx pop dx add dx, ax cmp dx, 50h ; 'P' jge short loc_DF16 mov ax, [bp+@@x_center] cwd idiv bx push ax mov ax, [bp+var_4] cwd idiv bx pop dx add dx, ax push dx mov ax, di mov bx, 10h cwd idiv bx push ax push ds push offset unk_1184F push TX_BLACK + TX_REVERSE call text_putsa loc_DF16: add [bp+var_4], 10h loc_DF1A: mov ax, [si+CDGSlot.pixel_width] cmp ax, [bp+var_4] jge short loc_DED9 add [bp+var_2], 10h add di, 10h loc_DF29: mov ax, [si+CDGSlot.pixel_height] cmp ax, [bp+var_2] jge short loc_DED2 jmp loc_DFE4 ; --------------------------------------------------------------------------- loc_DF34: cmp word_1184A, 3 jg short loc_DF79 inc word_151CA mov ax, word_151CA mov bx, 4 cwd idiv bx or dx, dx jnz short loc_DF50 dec word_151C8 loc_DF50: push [bp+@@x_center] push di push [si+CDGSlot.pixel_width] push [si+CDGSlot.pixel_height] push word_151C8 push 1 call sub_DBE6 cmp al, 1 jnz short loc_DFE4 inc word_1184A mov word_151C8, 0 mov word_151CA, 0 jmp short loc_DFE4 ; --------------------------------------------------------------------------- loc_DF79: mov ax, word_151E0 cmp ax, [bp+arg_0] jl short loc_DFE4 cmp [bp+arg_0], 0F9Ch jz short loc_DFE4 cmp word_1184A, 4 jnz short loc_DFC1 inc word_151CA mov ax, word_151CA mov bx, 4 cwd idiv bx or dx, dx jnz short loc_DFA4 inc word_151C8 loc_DFA4: push [bp+@@x_center] push di push [si+CDGSlot.pixel_width] push [si+CDGSlot.pixel_height] push word_151C8 push 0FFFFh call sub_DBE6 cmp al, 2 jnz short loc_DFE4 inc word_1184A jmp short loc_DFE4 ; --------------------------------------------------------------------------- loc_DFC1: push [bp+@@x_center] push di push [si+CDGSlot.pixel_width] push [si+CDGSlot.pixel_height] push 80FFFFh call sub_DBE6 mov word_1184A, 0 mov byte_11846, 1 mov ax, 1 jmp short loc_DFE6 ; --------------------------------------------------------------------------- loc_DFE4: xor ax, ax loc_DFE6: pop di pop si leave retn 8 sub_DE74 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DFEC proc near 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 enter 0Ah, 0 push si push di mov si, 55E4h mov [bp+var_8], 5614h mov [bp+var_A], 5618h call grcg_setcolor pascal, (GC_RMW shl 16) + 0 mov ax, word_151CE cwd sub ax, dx sar ax, 1 mov dx, word_151D6 sub dx, ax push dx mov ax, word_151D0 cwd sub ax, dx sar ax, 1 mov dx, word_151D8 sub dx, ax push dx mov ax, word_151CE cwd sub ax, dx sar ax, 1 add ax, word_151D6 dec ax push ax mov ax, word_151D0 cwd sub ax, dx sar ax, 1 add ax, word_151D8 dec ax push ax call grcg_boxfill GRCG_OFF_CLOBBERING dx xor di, di jmp short loc_E098 ; --------------------------------------------------------------------------- loc_E053: mov bx, [bp+var_A] mov ax, [bx] mov bx, 10h cwd idiv bx add ax, word_151D6 add ax, 0FFFCh mov [bp+var_2], ax mov bx, [bp+var_A] mov ax, [bx+2] mov bx, 10h cwd idiv bx add ax, word_151D8 add ax, 0FFFCh mov [bp+var_4], ax push [bp+var_2] push ax mov ax, di mov bx, 2 cwd idiv bx add dx, 6 push dx call sub_2DB6 inc di add [bp+var_A], 4 loc_E098: cmp di, 30h ; '0' jl short loc_E053 xor di, di mov [bp+var_6], 6 jmp short loc_E0FB ; --------------------------------------------------------------------------- loc_E0A6: mov bx, [bp+var_8] cmp word ptr [bx], 0C190h jz short loc_E0F6 mov bx, [bp+var_8] mov ax, [bx] mov bx, 10h cwd idiv bx add ax, word_151D6 mov [bp+var_2], ax mov bx, [bp+var_8] mov ax, [bx+2] mov bx, 10h cwd idiv bx add ax, word_151D8 mov [bp+var_4], ax push GC_RMW mov ax, [bp+var_6] inc [bp+var_6] push ax call grcg_setcolor push [bp+var_2] push [bp+var_4] push 10h call grcg_circlefill GRCG_OFF_CLOBBERING dx loc_E0F6: inc di sub [bp+var_8], 4 loc_E0FB: cmp di, 8 jl short loc_E0A6 cmp dword ptr [si], 0FFFFC190h jz loc_E18B mov eax, [si] mov ebx, 10h cdq idiv ebx add ax, word_151D6 add ax, 0FFF0h mov [bp+var_2], ax mov eax, [si+4] cdq idiv ebx add ax, word_151D8 add ax, 0FFF0h mov [bp+var_4], ax cmp byte ptr [si+13h], 10h jb short loc_E161 mov al, byte_151CC mov ah, 0 mov bx, 4 cwd idiv bx cwd idiv bx add dx, 8 mov di, dx push [bp+var_2] push [bp+var_4] push dx call super_put_rect inc byte_151CC jmp short loc_E18B ; --------------------------------------------------------------------------- loc_E161: call grcg_setcolor pascal, (GC_RMW shl 16) + 15 mov ax, [bp+var_2] add ax, 10h push ax mov ax, [bp+var_4] add ax, 10h push ax mov al, [si+13h] mov ah, 0 push ax call grcg_circlefill GRCG_OFF_CLOBBERING dx loc_E18B: sub si, 14h xor di, di jmp loc_E21D ; --------------------------------------------------------------------------- loc_E193: cmp dword ptr [si], 0FFFFC190h jz short loc_E219 mov ax, word_151CE neg ax shl ax, 3 add ax, 0FFC0h cwde cmp eax, [si] jge short loc_E219 mov ax, word_151CE shl ax, 3 add ax, 40h cwde cmp eax, [si] jle short loc_E219 mov ax, word_151D0 neg ax shl ax, 3 add ax, 0FFC0h cwde cmp eax, [si+4] jge short loc_E219 mov ax, word_151D0 shl ax, 3 add ax, 40h cwde cmp eax, [si+4] jle short loc_E219 mov eax, [si] mov ebx, 10h cdq idiv ebx add ax, word_151D6 add ax, 0FFFCh mov [bp+var_2], ax mov eax, [si+4] cdq idiv ebx add ax, word_151D8 add ax, 0FFFCh mov [bp+var_4], ax push [bp+var_2] push ax push word ptr [si+0Ch] call sub_2DB6 loc_E219: inc di sub si, 14h loc_E21D: cmp di, 40h jl loc_E193 call grcg_setcolor pascal, (GC_RMW shl 16) + 1 mov ax, word_151CE cwd sub ax, dx sar ax, 1 mov dx, word_151D6 sub dx, ax add dx, 0FFF8h push dx mov ax, word_151D0 cwd sub ax, dx sar ax, 1 mov dx, word_151D8 sub dx, ax push dx mov ax, word_151CE cwd sub ax, dx sar ax, 1 mov dx, word_151D6 sub dx, ax dec dx push dx mov ax, word_151D0 cwd sub ax, dx sar ax, 1 add ax, word_151D8 dec ax push ax call grcg_boxfill mov ax, word_151CE cwd sub ax, dx sar ax, 1 add ax, word_151D6 push ax mov ax, word_151D0 cwd sub ax, dx sar ax, 1 mov dx, word_151D8 sub dx, ax push dx mov ax, word_151CE cwd sub ax, dx sar ax, 1 add ax, word_151D6 add ax, 7 push ax mov ax, word_151D0 cwd sub ax, dx sar ax, 1 add ax, word_151D8 dec ax push ax call grcg_boxfill mov ax, word_151CE cwd sub ax, dx sar ax, 1 mov dx, word_151D6 sub dx, ax add dx, 0FFF8h push dx mov ax, word_151D0 cwd sub ax, dx sar ax, 1 mov dx, word_151D8 sub dx, ax add dx, 0FFF8h push dx mov ax, word_151CE cwd sub ax, dx sar ax, 1 add ax, word_151D6 add ax, 7 push ax mov ax, word_151D0 cwd sub ax, dx sar ax, 1 mov dx, word_151D8 sub dx, ax dec dx push dx call grcg_boxfill mov ax, word_151CE cwd sub ax, dx sar ax, 1 mov dx, word_151D6 sub dx, ax add dx, 0FFF8h push dx mov ax, word_151D0 cwd sub ax, dx sar ax, 1 add ax, word_151D8 push ax mov ax, word_151CE cwd sub ax, dx sar ax, 1 add ax, word_151D6 add ax, 7 push ax mov ax, word_151D0 cwd sub ax, dx sar ax, 1 add ax, word_151D8 add ax, 7 push ax call grcg_boxfill GRCG_OFF_CLOBBERING dx pop di pop si leave retn sub_DFEC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E349 proc near push bp mov bp, sp call sub_D5E1 call sub_DFEC push 1 call frame_delay graph_accesspage byte_1183A mov al, 1 sub al, byte_1183A mov byte_1183A, al graph_showpage al cmp byte_11846, 0 jz short loc_E37E call text_clear mov byte_11846, 0 loc_E37E: inc word_151E2 call sub_F23C mov word_151E0, ax cmp word_151E0, 0 jge short loc_E39D mov ax, word_151E2 mov bx, 16h cwd idiv bx mov word_151E0, ax loc_E39D: pop bp retn sub_E349 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E39F proc near arg_0 = word ptr 4 push bp mov bp, sp push si push di push ds push ds pop es assume es:_DATA mov ax, 0E000h mov ds, ax assume ds:nothing xor si, si mov di, [bp+arg_0] add di, 56D8h mov ax, 160h loc_E3B8: mov cx, 14h rep movsw add si, 28h ; '(' dec ax jnz short loc_E3B8 pop ds assume ds:_DATA pop di pop si pop bp retn 2 sub_E39F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E3CA proc near arg_0 = word ptr 4 push bp mov bp, sp push si push di call grcg_setcolor pascal, (GC_TDW shl 16) + 1 mov ax, GRAM_400 mov es, ax assume es:nothing xor di, di mov dx, 160h loc_E3E4: mov cx, (40 / 2) rep stosw add di, ROW_SIZE - 40 dec dx jnz short loc_E3E4 call grcg_setcolor pascal, (GC_RMW shl 16) + 13 xor di, di mov si, [bp+arg_0] add si, 56D8h mov dx, 160h loc_E406: mov cx, (40 / 2) rep movsw add di, ROW_SIZE - 40 dec dx jnz short loc_E406 GRCG_OFF_CLOBBERING dx pop di pop si pop bp retn 2 sub_E3CA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E41D proc near var_4 = word ptr -4 var_2 = word ptr -2 enter 4, 0 push si push di mov word_116E2, 20h ; ' ' mov word_116E4, 0Dh mov word_116E6, 0Dh mov word_116E8, 10h mov PaletteTone, 0 call far ptr palette_show call grcg_setcolor pascal, (GC_RMW shl 16) + 1 graph_accesspage 0 pushd 0 push 4F018Fh call grcg_byteboxfill_x GRCG_OFF_CLOBBERING dx call sub_D21D push 3700h call sub_E39F call grcg_setcolor pascal, (GC_RMW shl 16) + 1 pushd 0 push 4F018Fh call grcg_byteboxfill_x graph_accesspage 1 pushd 0 push 4F018Fh call grcg_byteboxfill_x GRCG_OFF_CLOBBERING dx call snd_load pascal, ds, offset aStaff, SND_LOAD_SONG kajacall KAJA_SONG_PLAY call cdg_load_all_noalpha pascal, 0, ds, offset aStf00_cdg call cdg_load_all_noalpha pascal, 1, ds, offset aStf01_cdg call cdg_load_all_noalpha pascal, 2, ds, offset aStf02_cdg call cdg_load_all_noalpha pascal, 3, ds, offset aStf03_cdg call cdg_load_all_noalpha pascal, 4, ds, offset aStf04_cdg call cdg_load_all_noalpha pascal, 5, ds, offset aStf05_cdg call cdg_load_all_noalpha pascal, 6, ds, offset aStf06_cdg call cdg_load_all_noalpha pascal, 7, ds, offset aStf07_cdg call cdg_load_all_noalpha pascal, 8, ds, offset aStf08_cdg call cdg_load_all_noalpha pascal, 9, ds, offset aStf09_cdg call cdg_load_all_noalpha pascal, 10, ds, offset aStf10_cdg push ds push offset aStf01_bft ; "stf01.bft" call super_entry_bfnt push ds push offset aStf00_bft ; "stf00.bft" call super_entry_bfnt xor si, si jmp short loc_E550 ; --------------------------------------------------------------------------- loc_E549: push si call super_convert_tiny inc si loc_E550: cmp si, 8 jl short loc_E549 mov Palettes+2, 30h ; '0' call sub_D387 xor si, si mov word_151E2, 0 loc_E565: cmp si, 64h ; 'd' jg short loc_E573 mov PaletteTone, si call far ptr palette_show loc_E573: call sub_E349 inc si cmp word_151E0, 1Eh jl short loc_E565 call sub_D49D xor si, si jmp short loc_E58C ; --------------------------------------------------------------------------- loc_E585: call sub_D8F5 call sub_E349 inc si loc_E58C: cmp si, 20h ; ' ' jl short loc_E585 call sub_D509 loc_E594: call sub_D931 mov si, ax call sub_E349 or si, si jz short loc_E594 cmp word_151E0, 30h ; '0' jl short loc_E594 xor si, si xor di, di loc_E5AB: call sub_D931 cmp si, 80h jle short loc_E5C9 push 21000F0h push 1004Ch call sub_DE74 or ax, ax jz short loc_E5C9 xor si, si loc_E5C9: push 1D000C0h pushd 4Ch ; 'L' call sub_DCFC mov di, ax call sub_E349 inc si or di, di jz short loc_E5AB xor di, di loc_E5E1: call sub_D931 push 1D000C8h push 2005Ch call sub_DCFC mov di, ax call sub_E349 or di, di jz short loc_E5E1 xor si, si xor di, di loc_E600: call sub_D931 cmp si, 100h jle short loc_E61E push 1D000E0h push 40078h call sub_DE74 or ax, ax jz short loc_E61E xor si, si loc_E61E: push 1D000B0h push 30078h call sub_DCFC mov di, ax call sub_E349 inc si or di, di jz short loc_E600 call sub_D531 loc_E63A: call sub_DAD7 mov si, ax call sub_E349 or si, si jz short loc_E63A xor di, di loc_E648: call sub_DAD7 push 0B000C8h push 500ACh call sub_DCFC mov di, ax call sub_E349 or di, di jz short loc_E648 loc_E663: call sub_DAD7 push 0B000C8h push 600BCh call sub_DCFC mov di, ax call sub_E349 or di, di jz short loc_E663 loc_E67E: call sub_DAD7 push 0B000C8h push 700CCh call sub_DCFC mov di, ax call sub_E349 or di, di jz short loc_E67E loc_E699: call sub_DAD7 push 0B000C8h push 800DCh call sub_DCFC mov di, ax call sub_E349 or di, di jz short loc_E699 loc_E6B4: call sub_DAD7 push 0B000C8h push 900ECh call sub_DCFC mov di, ax call sub_E349 or di, di jz short loc_E6B4 xor si, si mov [bp+var_2], 0 mov [bp+var_4], 0 loc_E6DB: call _input_reset_sense_held cmp si, 100h jz short loc_E6EC cmp si, 101h jnz short loc_E6F1 loc_E6EC: call sub_CA9B jmp short loc_E70D ; --------------------------------------------------------------------------- loc_E6F1: cmp si, 140h jz short loc_E6FD cmp si, 141h jnz short loc_E702 loc_E6FD: call sub_D16F jmp short loc_E70D ; --------------------------------------------------------------------------- loc_E702: cmp si, 15Eh jnz short loc_E70D push 0 call sub_E39F loc_E70D: call sub_DAD7 push 0B00170h push 0A0F9Ch call sub_DCFC inc si cmp si, 190h jl loc_E7BB test _input.hi, high INPUT_CANCEL jnz short loc_E757 test _input.lo, low INPUT_BOMB jnz short loc_E757 cmp [bp+var_4], 0 jnz short loc_E781 test _input.lo, low INPUT_SHOT jnz short loc_E74A test _input.hi, high INPUT_OK jz short loc_E75C loc_E74A: cmp [bp+var_2], 0 jnz short loc_E757 mov [bp+var_4], 1 jmp short loc_E75C ; --------------------------------------------------------------------------- loc_E757: call sub_E349 jmp short loc_E7C1 ; --------------------------------------------------------------------------- loc_E75C: test _input.lo, low INPUT_DOWN jz short loc_E76E cmp [bp+var_2], 0 jnz short loc_E76E mov [bp+var_4], 1 loc_E76E: test _input.lo, low INPUT_UP jz short loc_E781 cmp [bp+var_2], 3700h jnz short loc_E781 mov [bp+var_4], 2 loc_E781: cmp [bp+var_4], 1 jnz short loc_E79A add [bp+var_2], 140h cmp [bp+var_2], 3700h jbe short loc_E7B5 mov [bp+var_2], 3700h jmp short loc_E7B0 ; --------------------------------------------------------------------------- loc_E79A: cmp [bp+var_4], 2 jnz short loc_E7BB sub [bp+var_2], 140h cmp [bp+var_2], 0 jge short loc_E7B5 mov [bp+var_2], 0 loc_E7B0: mov [bp+var_4], 0 loc_E7B5: push [bp+var_2] call sub_E3CA loc_E7BB: call sub_E349 jmp loc_E6DB ; --------------------------------------------------------------------------- loc_E7C1: kajacall KAJA_SONG_FADE, 4 mov si, 64h ; 'd' loc_E7CC: mov PaletteTone, si call far ptr palette_show call sub_DAD7 call sub_E349 dec si or si, si jg short loc_E7CC call cdg_freeall call super_free pushd 0 push 27F018Fh call grc_setclip pop di pop si leave retn sub_E41D endp maine_01_TEXT ends ; --------------------------------------------------------------------------- ; =========================================================================== ; Segment type: Pure code maine_02_TEXT segment word public 'CODE' use16 assume cs:maine_02_TEXT ;org 0Ch assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing include th03/formats/hfliplut.asm include th04/snd/pmd_res.asm include th02/snd/mmd_res.asm include th04/snd/detmodes.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E914 proc far arg_0 = dword ptr 6 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh push bp mov bp, sp push si push di push ds mov dx, [bp+arg_4] GRCG_NOINT_SETMODE_VIA_MOV al, GC_RMW GRCG_SETCOLOR_DIRECT_INLINED dx mov ax, GRAM_400 mov es, ax assume es:nothing mov dx, [bp+arg_6] shl dx, 6 mov di, dx shr dx, 2 add di, dx mov cx, [bp+arg_8] mov al, 0Bh out 68h, al mov bx, word_107BC add bx, bx cmp bx, 8 jb short loc_E970 cmp bx, 10h jnb short loc_E970 mov ax, word_1078C[bx] mov word ptr cs:loc_EA68+3, ax mov bx, 8 loc_E970: mov ax, word_10780[bx] mov word ptr cs:loc_E9D2+1, ax mov ax, word_1078A[bx] mov word ptr cs:loc_EA24+1, ax mov ax, word_107BE mov word ptr cs:loc_E9F1+1, ax mov word ptr cs:loc_EA38+1, ax push ds pop fs assume fs:_DATA lds si, [bp+arg_0] lodsb or al, al jz short loc_E9FD loc_E996: mov dx, cx shr dx, 3 add di, dx and cx, 7 mov ah, 9 test al, 0E0h jns short loc_EA0F jp short loc_EA0C mov ah, al lodsb shl ah, 1 cmp al, 9Fh jnb short loc_E9B6 cmp al, 80h adc ax, 0FEDFh loc_E9B6: sbb al, 0FEh and ax, 7F7Fh out 0A1h, al mov al, ah out 0A3h, al nop loc_E9C2: mov al, ch or al, 20h out 0A5h, al in al, 0A9h mov ah, al mov al, ch out 0A5h, al in al, 0A9h loc_E9D2: call sub_EA4D mov bh, al mov bl, 0 shr ax, cl shr bx, cl xchg ah, al stosw mov es:[di], bl add di, 4Eh ; 'N' inc ch cmp ch, 10h jb short loc_E9C2 sub di, 500h loc_E9F1: mov dx, 1234h loc_E9F4: xor ch, ch add cx, dx lodsb or al, al jnz short loc_E996 loc_E9FD: mov al, 0Ah out 68h, al GRCG_OFF_VIA_XOR al pop ds pop di pop si pop bp retf 0Ah ; --------------------------------------------------------------------------- loc_EA0C: add ax, 80h loc_EA0F: cmp al, 20h ; ' ' jz short loc_EA38 out 0A1h, al mov al, ah out 0A3h, al nop loc_EA1A: mov al, ch or al, 20h out 0A5h, al in al, 0A9h xor ah, ah loc_EA24: call sub_EA4D ror ax, cl stosw add di, 4Eh ; 'N' inc ch cmp ch, 10h jb short loc_EA1A sub di, 500h loc_EA38: mov dx, 1234h shr dx, 1 jmp short loc_E9F4 sub_E914 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_EA40 proc near mov dx, ax add dx, dx or ax, dx retn sub_EA40 endp ; --------------------------------------------------------------------------- mov dx, ax shl dx, 1 or ax, dx ; =============== S U B R O U T I N E ======================================= sub_EA4D proc near mov dx, ax mov bp, ax add bp, bp or ax, bp xor dx, ax add dx, dx not dx and ax, dx retn sub_EA4D endp ; =============== S U B R O U T I N E ======================================= sub_EA5E proc near call sub_EA4D mov bl, ch and bx, 3 add bx, bx loc_EA68: and ax, fs:[bx+1234h] retn sub_EA5E endp include th04/formats/cdg_put_noalpha.asm include th04/snd/se.asm ; =============== S U B R O U T I N E ======================================= sub_EB66 proc far push si push di cmp word_107C2, 0 jnz short loc_EB9B push 7D00h call hmem_allocbyte mov word_107C2, ax push 7D00h call hmem_allocbyte mov word_107C4, ax push 7D00h call hmem_allocbyte mov word_107C6, ax push 7D00h call hmem_allocbyte mov word_107C8, ax loc_EB9B: mov dl, 4 push ds push 0E000h push word_107C8 push 0B800h push word_107C6 push 0B000h push word_107C4 push 0A800h push word_107C2 loc_EBBA: pop es pop ds xor si, si xor di, di mov cx, (ROW_SIZE * RES_Y) / 4 rep movsd dec dl jnz short loc_EBBA pop ds pop di pop si retf sub_EB66 endp ; --------------------------------------------------------------------------- push si push di mov dl, 4 push ds push 0E000h push word_107C8 push 0B800h push word_107C6 push 0B000h push word_107C4 push 0A800h push word_107C2 loc_EBEF: pop ds pop es xor si, si xor di, di mov cx, (ROW_SIZE * RES_Y) / 4 rep movsd dec dl jnz short loc_EBEF pop ds pop di pop si retf ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_EC04 proc far cmp word_107C2, 0 jz short locret_EC35 push word_107C2 call hmem_free push word_107C4 call hmem_free push word_107C6 call hmem_free push word_107C8 call hmem_free mov word_107C2, 0 locret_EC35: retf sub_EC04 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EC36 proc far push bp mov bp, sp call pfend graph_accesspage 1 call graph_clear graph_accesspage 0 call graph_clear graph_accesspage 0 graph_showpage al call mem_unassign call vsync_end call text_clear call js_end call egc_start call bgm_finish pop bp retf sub_EC36 endp include th04/math/vector1_at.asm include th04/math/vector2_at.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_ECDE proc far 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 push di push si push ds cld mov ax, [bp+arg_6] mov dx, [bp+arg_4] mov bx, ax sar bx, 4 shl bx, 1 shl dx, 6 add bx, dx shr dx, 2 add bx, dx mov word ptr cs:loc_ED43+1, bx and ax, 0Fh mov cx, ax add ax, [bp+arg_2] shr ax, 4 or cx, cx jz short loc_ED11 inc ax loc_ED11: mov word ptr cs:loc_ED48+1, ax jmp short $+2 mov cx, 28h ; '(' sub cx, ax shl cx, 1 mov ax, [bp+arg_0] mov bp, cx push 0E000h push word_107C8 push 0B800h push word_107C6 push 0B000h push word_107C4 push 0A800h push word_107C2 mov dl, 4 loc_ED41: mov bx, ax loc_ED43: mov di, 1234h pop ds pop es loc_ED48: mov cx, 1234h mov si, di rep movsw add di, bp dec bx jnz short loc_ED48 dec dl jnz short loc_ED41 pop ds pop si pop di pop bp retf 8 sub_ECDE endp ; --------------------------------------------------------------------------- nop include th05/snd/load.asm include th05/snd/kajaint.asm push bp mov bp, sp push si push di mov si, [bp+8] mov di, si shl si, 2 les si, [si+6FEh] assume es:nothing imul di, 48h push word ptr [bp+0Ch] push word ptr [bp+0Ah] mov ax, [di+27CEh] push ax shr ax, 1 push ax mov di, [di+27D0h] mov ax, [bp+6] call sub_EEB2 pop di pop si pop bp retf 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EE68 proc far arg_0 = word ptr 6 arg_2 = byte ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh push bp mov bp, sp push si push di xor ax, ax xor dx, dx mov si, [bp+arg_4] mov cl, [bp+arg_2] test cl, 1 jz short loc_EE7F mov ax, 0A0h loc_EE7F: test cl, 2 jz short loc_EE87 mov dx, 0FA0h loc_EE87: shl si, 2 les si, [si+6FEh] add si, ax mov ax, es add ax, dx mov es, ax assume es:nothing mov di, 0C8h push [bp+arg_8] push [bp+arg_6] push 140h push 140h mov ax, [bp+arg_0] call sub_EEB2 pop di pop si pop bp retf 0Ah sub_EE68 endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EEB2 proc near arg_0 = word ptr 2 arg_2 = word ptr 4 arg_4 = word ptr 6 arg_6 = word ptr 8 shl ax, 3 add ax, 6DEh mov word_128B4, ax mov bp, sp mov dx, [bp+arg_6] shr dx, 3 mov ax, [bp+arg_4] shl ax, 6 add dx, ax shr ax, 2 add dx, ax mov word_128B8, dx mov word_128B6, 0 loc_EEDA: push es call graph_pack_put_8_noclip pascal, 0, 400, es, si, [bp+arg_2] push ds push di push si mov di, word_128B8 add word_128B8, 50h ; 'P' cmp word_128B8, 7D00h jb short loc_EF04 sub word_128B8, 7D00h loc_EF04: call sub_EF39 mov ax, GRAM_400 mov es, ax assume es:nothing mov ds, ax assume ds:nothing mov si, 7D00h mov cx, [bp+arg_2] shr cx, 4 rep movsw call egc_off pop si pop di pop ds assume ds:_DATA pop es assume es:nothing add si, [bp+arg_0] mov ax, si shr ax, 4 mov dx, es add dx, ax mov es, dx and si, 0Fh dec di jnz short loc_EEDA retn 8 sub_EEB2 endp ; =============== S U B R O U T I N E ======================================= sub_EF39 proc near call egc_on outw2 EGC_ACTIVEPLANEREG, 0FFF0h egc_selectpat egc_setrop EGC_COMPAREREAD or EGC_WS_PATREG or EGC_RL_MEMREAD outw2 EGC_ADDRRESSREG, 0 outw2 EGC_BITLENGTHREG, 0Fh mov bx, word_128B4 mov ax, word_128B6 and ax, 3 shl ax, 1 add bx, ax outw2 EGC_MASKREG, [bx] inc word_128B6 retn sub_EF39 endp include th05/formats/pi_slot_load.asm include th05/formats/pi_slot_put.asm include th05/formats/pi_slot_palette_apply.asm include th05/formats/pi_slot_free.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_F0B4 proc far arg_0 = dword ptr 6 push bp mov bp, sp push word_107CA call mem_assign_dos or ax, ax jz short loc_F0CB mov ax, 1 pop bp locret_F0C8: retf 4 ; --------------------------------------------------------------------------- loc_F0CB: mov bbufsiz, 1000h call vsync_start call egc_start call graph_400line call js_start pushd [bp+arg_0] call pfstart push 800h call bgm_init xor ax, ax pop bp retf 4 sub_F0B4 endp include th04/hardware/input_sense.asm include th05/hardware/input_held.asm include th05/hardware/input_wait.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_F23C proc far push bp mov bp, sp cmp _snd_bgm_mode, SND_BGM_OFF jnz short loc_F24B mov ax, 0FFFFh pop bp retf ; --------------------------------------------------------------------------- loc_F24B: mov ah, KAJA_GET_SONG_MEASURE cmp _snd_bgm_mode, SND_BGM_MIDI jz short loc_F258 int 60h ; - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE ; BX = handle ; Return: CF set on error, DH = error code ; CF clear if successful jmp short loc_F25D ; --------------------------------------------------------------------------- loc_F258: mov dx, 0C0h int 61h ; reserved for user interrupt loc_F25D: pop bp retf sub_F23C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_F25F proc far arg_0 = word ptr 6 arg_2 = word ptr 8 push bp mov bp, sp push si loc_F263: call sub_F23C mov si, ax or si, si jge short loc_F277 push [bp+arg_0] nopcall frame_delay jmp short loc_F27C ; --------------------------------------------------------------------------- loc_F277: cmp si, [bp+arg_2] jl short loc_F263 loc_F27C: pop si pop bp retf 4 sub_F25F endp ; --------------------------------------------------------------------------- db 0 include th05/hardware/frame_delay.asm db 0 include th04/formats/cdg_load.asm ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_F3FC proc far 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 push di call sub_F478 outw EGC_MODE_ROP_REG, EGC_COMPAREREAD or EGC_WS_ROP or EGC_RL_MEMREAD or 0F0h mov ax, [bp+arg_6] mov dx, [bp+arg_4] mov bx, ax sar bx, 4 shl bx, 1 shl dx, 6 add bx, dx shr dx, 2 add bx, dx mov di, bx and ax, 0Fh mov cx, ax add ax, [bp+arg_2] shr ax, 4 or cx, cx jz short loc_F433 inc ax loc_F433: mov word_12F86, ax mov cx, 28h ; '(' sub cx, ax shl cx, 1 mov bx, [bp+arg_0] mov bp, cx mov ax, GRAM_400 mov es, ax assume es:nothing loc_F447: mov cx, word_12F86 loc_F44B: or di, di js short loc_F463 cmp di, 7D00h jnb short loc_F463 mov al, 1 out 0A6h, al mov dx, es:[di] xor ax, ax out 0A6h, al mov es:[di], dx loc_F463: add di, 2 loop loc_F44B add di, bp dec bx jns short loc_F447 call egc_off pop di pop bp retf 8 sub_F3FC endp ; --------------------------------------------------------------------------- nop ; =============== S U B R O U T I N E ======================================= sub_F478 proc near push es push 0 pop es pushf cli GRCG_SETMODE_VIA_MOV al, GC_TDW mov es:[495h], al popf pop es assume es:nothing mov al, 7 out 6Ah, al ; PC-98 GDC (6a): ; mov al, 5 out 6Ah, al ; PC-98 GDC (6a): ; mov al, 6 out 6Ah, al ; PC-98 GDC (6a): ; outw EGC_ACTIVEPLANEREG, 0FFF0h outw EGC_READPLANEREG, 0FFh outw EGC_MASKREG, 0FFFFh mov dx, EGC_ADDRRESSREG sub ax, ax out dx, ax outw EGC_BITLENGTHREG, 0Fh retn sub_F478 endp maine_02_TEXT ends .data off_10190 dd a_ed00_txt ; "_ED00.TXT" aMiko_cfg db 'MIKO.CFG',0 a_ed00_txt db '_ED00.TXT',0 aKaikidan1_dat db '怪綺談1.dat',0 aMiko db 'miko',0 ; char arg0[] arg0 db 'op',0 db 0 include libs/master.lib/atan8[data].asm include libs/master.lib/atrtcmod[data].asm 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/get_machine_98[data].asm include libs/master.lib/get_machine_at[data].asm include libs/master.lib/grp[data].asm include libs/master.lib/js[data].asm include libs/master.lib/machine[data].asm include libs/master.lib/pal[data].asm include libs/master.lib/pf[data].asm 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 include libs/master.lib/bgm_timerhook[data].asm include libs/master.lib/bgm[data].asm include th04/snd/se_priority[data].asm word_10780 dw 71h dw 6Bh dw 78h dw 72h dw 89h word_1078A dw 1Fh word_1078C dw 19h dw 26h dw 20h dw 37h db 9Ch db 6 db 0A4h db 6 db 0ACh ; ャ db 6 db 0B4h ; エ db 6 db 88h db 88h db 0 db 0 db 22h ; " db 22h ; " db 0 db 0 db 88h db 88h db 44h ; D db 44h ; D db 22h ; " db 22h ; " db 11h db 11h db 0AAh ; ェ db 0AAh ; ェ db 44h ; D db 44h ; D db 0AAh ; ェ db 0AAh ; ェ db 11h db 11h db 0AAh ; ェ db 0AAh ; ェ db 55h ; U db 55h ; U db 0AAh ; ェ db 0AAh ; ェ db 55h ; U db 55h ; U word_107BC dw 2 word_107BE dw 10h include th03/snd/se_state[data].asm word_107C2 dw 0 word_107C4 dw 0 word_107C6 dw 0 word_107C8 dw 0 word_107CA dw 4E20h include th05/snd/load[data].asm include th04/snd/snd[data].asm dw 0 db 11h db 11h db 0 db 0 db 44h ; D db 44h ; D db 88h db 88h db 11h db 11h db 22h ; " db 22h ; " db 44h ; D db 44h ; D db 0AAh ; ェ db 0AAh ; ェ db 55h ; U db 55h ; U db 0AAh ; ェ db 0AAh ; ェ db 55h ; U db 55h ; U db 0EEh db 0EEh db 77h ; w db 77h ; w db 0BBh ; サ db 0BBh ; サ db 0DDh db 0DDh include th05/formats/pi_slot_buffers[bss].asm include th05/hardware/vram_planes[data].asm include th03/formats/cdg[data].asm byte_10830 db 0 db 0 db 88h db 88h db 0 db 0 db 22h ; " db 22h ; " db 0 db 0 db 88h db 88h db 44h ; D db 44h ; D db 22h ; " db 22h ; " db 11h db 11h db 0AAh ; ェ db 0AAh ; ェ db 44h ; D db 44h ; D db 0AAh ; ェ db 0AAh ; ェ db 11h db 11h db 0AAh ; ェ db 0AAh ; ェ db 44h ; D db 44h ; D db 0AAh ; ェ db 0AAh ; ェ db 55h ; U db 55h ; U db 0FFh db 0FFh db 0FFh db 0FFh db 0FFh db 0FFh db 0FFh db 0FFh db 20h db 20h db 0 db 0 byte_1085E db 0 db 0 dd aExed01_pi ; "EXED01.pi" dd aExed07_pi ; "EXED07.pi" dd aExed08_pi ; "EXED08.pi" dd aExed09_pi ; "EXED09.pi" dd aExed10_pi ; "EXED10.pi" dd aExed16_pi ; "EXED16.pi" dd aExed15_pi ; "EXED15.pi" dd 0 dd aExed01_pi_0 ; "EXED01.pi" dd aExed11_pi ; "EXED11.pi" dd aExed11_pi_0 ; "EXED11.pi" dd aExed11_pi_1 ; "EXED11.pi" dd aExed03_pi ; "EXED03.pi" dd aExed16_pi_0 ; "EXED16.pi" dd aExed15_pi_0 ; "EXED15.pi" dd 0 dd aExed01_pi_1 ; "EXED01.pi" dd aExed12_pi ; "EXED12.pi" dd aExed12_pi_0 ; "EXED12.pi" dd aExed13_pi ; "EXED13.pi" dd aExed04_pi ; "EXED04.pi" dd aExed16_pi_1 ; "EXED16.pi" dd aExed15_pi_1 ; "EXED15.pi" dd 0 dd aExed01_pi_2 ; "EXED01.pi" dd aExed14_pi ; "EXED14.pi" dd aExed05_pi ; "EXED05.pi" dd aExed14_pi_0 ; "EXED14.pi" dd aExed06_pi ; "EXED06.pi" dd aExed16_pi_2 ; "EXED16.pi" dd aExed15_pi_2 ; "EXED15.pi" dd 0 db 1 db 0 db 0 db 0 db 1 db 0 db 3 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 0 db 1 db 0 db 2 db 0 db 1 db 0 db 1 db 0 db 1 db 0 db 0 db 0 db 1 db 0 db 2 db 0 db 0 db 0 db 1 db 0 db 0 db 0 db 2 db 0 db 2 db 0 db 0 db 0 db 1 db 0 db 0 db 0 db 0 db 0 db 2 db 0 db 0 db 0 db 3 db 0 db 3 db 0 db 0 db 0 ALLCAST_PTRS dd aProjectOfTouho dd aNo_1Buumx ; " Project of TOUHOU "... dd aReimuHakureiSh dd aNo_2Buumx dd aReimuHakurei_0 dd aRikaEngineer dd aMeiraSamurai dd aMarisaKirisame dd aMimaGhost dd aNo_3Buumx dd aReimuHakurei_1 dd aMarisaKirisa_0 dd aMimaGhost_0 dd aEllenWitch dd aKotohimePrince dd aKanaAnaberalPo dd aRikakoAsakuraS dd aTiyuriKitashir dd aYumemiOkazakiP dd aNo_4Buumx dd aReimuHakurei_2 dd aMarisaKirisa_1 dd aOrangeOriental dd aKurumiVampire dd aElliyGateKeepe dd aYukaOrientalDe dd aMugetuMaid dd aGengetuDemon dd aNo_5Buumx dd aReimuHakurei_3 dd aMarisaKirisa_2 dd aMimaGhost_1 dd aYukaOriental_0 dd aSaraGateKeeper dd aLuizeDemon dd aAliceWitchOfDe dd aYukiBlackWitch dd aMaiWhiteWitch dd aYumekoMaid dd aShinkiGoddessO dd aProgramerZunJu dd aGraphicsZunJun dd aMusicComposeZu dd aP_m_d_ProgramM dd aSpecialThanksA dd aAmusementMaker dd aAndAllTestPlay ALLCAST_LINES_PER_SCREEN equ $-2 dw 1, 2, 6, 10, 9, 12, 7 db 0 db 0 allcast_line_on_screen dw 0 aExed01_pi db 'EXED01.pi',0 aExed07_pi db 'EXED07.pi',0 aExed08_pi db 'EXED08.pi',0 aExed09_pi db 'EXED09.pi',0 aExed10_pi db 'EXED10.pi',0 aExed16_pi db 'EXED16.pi',0 aExed15_pi db 'EXED15.pi',0 aExed01_pi_0 db 'EXED01.pi',0 aExed11_pi db 'EXED11.pi',0 aExed11_pi_0 db 'EXED11.pi',0 aExed11_pi_1 db 'EXED11.pi',0 aExed03_pi db 'EXED03.pi',0 aExed16_pi_0 db 'EXED16.pi',0 aExed15_pi_0 db 'EXED15.pi',0 aExed01_pi_1 db 'EXED01.pi',0 aExed12_pi db 'EXED12.pi',0 aExed12_pi_0 db 'EXED12.pi',0 aExed13_pi db 'EXED13.pi',0 aExed04_pi db 'EXED04.pi',0 aExed16_pi_1 db 'EXED16.pi',0 aExed15_pi_1 db 'EXED15.pi',0 aExed01_pi_2 db 'EXED01.pi',0 aExed14_pi db 'EXED14.pi',0 aExed05_pi db 'EXED05.pi',0 aExed14_pi_0 db 'EXED14.pi',0 aExed06_pi db 'EXED06.pi',0 aExed16_pi_2 db 'EXED16.pi',0 aExed15_pi_2 db 'EXED15.pi',0 aProjectOfTouho db ' Project of TOUHOU All Cast',0 aNo_1Buumx db 'No.1 「東方靈異伝」 〜 Highly Responsive to Prayers 1996,1997',0 aReimuHakureiSh db ' Reimu Hakurei ( Shaman )',0 aNo_2Buumx db 'No.2 「東方封魔録」 〜 The story of eastern wonderland 1997',0 aReimuHakurei_0 db ' Reimu Hakurei ( Shaman )',0 aRikaEngineer db ' Rika ( Engineer )',0 aMeiraSamurai db ' Meira ( Samurai )',0 aMarisaKirisame db ' Marisa Kirisame ( Sorceress )',0 aMimaGhost db ' Mima ( Ghost )',0 aNo_3Buumx db 'No.3 「東方夢時空」 〜 The Phantasmagoria of Dim.Dream... 1997',0 aReimuHakurei_1 db ' Reimu Hakurei ( Shaman )',0 aMarisaKirisa_0 db ' Marisa Kirisame ( Sorceress )',0 aMimaGhost_0 db ' Mima ( Ghost )',0 aEllenWitch db ' Ellen ( Witch )',0 aKotohimePrince db ' Kotohime ( Princess )',0 aKanaAnaberalPo db ' Kana Anaberal ( Poltergeist )',0 aRikakoAsakuraS db ' Rikako Asakura ( Scientist )',0 aTiyuriKitashir db ' Tiyuri Kitashirakawa ( Assistant professor )',0 aYumemiOkazakiP db ' Yumemi Okazaki ( Professor )',0 aNo_4Buumx db 'No.4 「東方幻想郷」 〜 Lotus Land Story 1998',0 aReimuHakurei_2 db ' Reimu Hakurei ( Shaman )',0 aMarisaKirisa_1 db ' Marisa Kirisame ( Sorceress )',0 aOrangeOriental db ' Orange ( Oriental demon )',0 aKurumiVampire db ' Kurumi ( Vampire )',0 aElliyGateKeepe db ' Elliy ( Gate keeper )',0 aYukaOrientalDe db ' Yuka ( Oriental demon )',0 aMugetuMaid db ' Mugetu ( Maid )',0 aGengetuDemon db ' Gengetu ( Demon )',0 aNo_5Buumx db 'No.5 「東方怪綺談」 〜 Mystic Square 1998',0 aReimuHakurei_3 db ' Reimu Hakurei ( Shaman )',0 aMarisaKirisa_2 db ' Marisa Kirisame ( Sorceress )',0 aMimaGhost_1 db ' Mima ( Ghost )',0 aYukaOriental_0 db ' Yuka ( Oriental demon )',0 aSaraGateKeeper db ' Sara ( Gate keeper )',0 aLuizeDemon db ' Luize ( Demon )',0 aAliceWitchOfDe db ' Alice ( Witch of death )',0 aYukiBlackWitch db ' Yuki ( Black witch )',0 aMaiWhiteWitch db ' Mai ( White witch )',0 aYumekoMaid db ' Yumeko ( Maid )',0 aShinkiGoddessO db ' Shinki ( Goddess of devil',27h,'s world )',0 aProgramerZunJu db ' Programer ZUN (Junya Ota)',0 aGraphicsZunJun db ' Graphics ZUN (Junya Ota)',0 aMusicComposeZu db ' Music Compose ZUN (Junya Ota)',0 aP_m_d_ProgramM db ' P.M.D. Program M.Kajihara(KAJA)',0 aSpecialThanksA db ' Special Thanks Aotaka',0 aAmusementMaker db ' Amusement Makers',0 aAndAllTestPlay db ' and all test player and you ... ',0 aExed db 'EXED',0 gALPHABET db 0AAh, 0ABh, 0ACh, 0ADh, 0AEh, 0AFh, 0B0h, 0B1h, 0B2h db 0B3h, 0B4h, 0B5h, 0B6h, 0B7h, 0B8h, 0B9h, 0BAh, 0BBh db 0BCh, 0BDh, 0BEh, 0BFh, 0C0h, 0C1h, 0C2h, 0C3h, 0C4h db 0C5h, 3, 6, 7, 8, 0Ch, 0Fh, 0A0h, 0A1h, 0A2h, 0A3h db 0A4h, 0A5h, 0A6h, 0A7h, 0A8h, 0A9h, 0E6h, 0E7h, 0E8h db 0CEh, 0CFh, 0CDh, 0D5h byte_11621 db 0 word_11622 dw 0 aGensou_scr db 'GENSOU.SCR',0 aGensou_scr_0 db 'GENSOU.SCR',0 aGensou_scr_1 db 'GENSOU.SCR',0 aGensou_scr_2 db 'GENSOU.SCR',0 aHi01_pi db 'hi01.pi',0 aScnum_bft db 'scnum.bft',0 aSctm0_bft db 'sctm0.bft',0 aSctm1_bft db 'sctm1.bft',0 aGxgnbGvbGhvVGv db 'スローモードでのプレイでは、スコアは記録されません',0 aGxgnbGvbGhvV_0 db 'スローモードでのプレイでは、スコアは記録されません',0 aName db 'name',0 db 0 word_116E2 dw 150h word_116E4 dw 2 word_116E6 dw 6 word_116E8 dw 30h byte_116EA db 0 include th04/strings/verdict[data].asm byte_11713 db 0 aU__0 db '点',0 aBd db '.',0 aBu db '%',0 aBd_0 db '.',0 aBu_0 db '%',0 aB@b@b@b@b@b@b@ db '        腕前判定',0 aUqiUx db '難易度',0 aNPiuU_ db '最終得点',0 aGGxi db 'ミス回数',0 aGGaogcpi db 'ボム使用回数',0 aGqbGatbrmcj db 'ゲーム達成率',0 aIlcSObcj db '悪霊退治率',0 aGagcgegai db 'アイテム回収率',0 aUU_gagcgeganNv db '得点アイテム最高点率',0 aLcnzvv db '気合い',0 aPicacovCj db '処理落ち率',0 aVavVVSrso db 'あなたの腕前',0 aI db '回',0 aI_0 db '回',0 aU_ db '点',0 a_ude_txt db '_ude.txt',0 aBhbhbhbhbhbhu_ db '??????点',0 aPicacovVVcvsfT db '処理落ちによる判定不可',0 aUde_pi db 'ude.pi',0 aB@vpcB@ db ' 1面 ',0 aB@vqcB@ db ' 2面 ',0 aB@vrcB@ db ' 3面 ',0 aB@vscB@ db ' 4面 ',0 aB@vtcB@ db ' 5面 ',0 aB@vucB@ db ' 6面 ',0 aNPiuU__0 db '最終得点',0 byte_1183A db 0 db 0 word_1183C dw 0 word_1183E dw 0 byte_11840 db 0 db 0 word_11842 dw 0 word_11844 dw 0 byte_11846 db 0 db 0 word_11848 dw 0 word_1184A dw 0 unk_1184C db 20h db 20h db 0 unk_1184F db 20h db 20h db 0 aStaff db 'staff',0 aStf00_cdg db 'stf00.cdg',0 aStf01_cdg db 'stf01.cdg',0 aStf02_cdg db 'stf02.cdg',0 aStf03_cdg db 'stf03.cdg',0 aStf04_cdg db 'stf04.cdg',0 aStf05_cdg db 'stf05.cdg',0 aStf06_cdg db 'stf06.cdg',0 aStf07_cdg db 'stf07.cdg',0 aStf08_cdg db 'stf08.cdg',0 aStf09_cdg db 'stf09.cdg',0 aStf10_cdg db 'stf10.cdg',0 aStf01_bft db 'stf01.bft',0 aStf00_bft db 'stf00.bft',0 .data? ; TODO: Missing clip[bss].asm (16 bytes) somewhere in there... public _ksoconfig _ksoconfig dd ? dd ? dd ? dd ? dd ? include libs/master.lib/fil[bss].asm include libs/master.lib/js[bss].asm 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 include libs/master.lib/super_put_rect[bss].asm include th03/formats/hfliplut[bss].asm include th04/snd/interrupt[bss].asm include libs/master.lib/bgm[bss].asm include th02/snd/load[bss].asm word_128B4 dw ? word_128B6 dw ? word_128B8 dw ? include th05/formats/pi_slot_headers[bss].asm include th04/hardware/input[bss].asm include th04/formats/cdg[bss].asm include libs/master.lib/pfint21[bss].asm word_12F86 dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; 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 ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; 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_14100 dw ? word_14102 dw ? dword_14104 dd ? word_14108 dw ? word_1410A dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; byte_1420C db ? db ? word_1420E dw ? word_14210 dw ? byte_14212 db ? byte_14213 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 ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; word_14F88 dw ? dd ? ; byte_14F8E 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 ? ; db ? ; word_15004 dw ? word_15006 dw ? word_15008 dw ? byte_1500A db ? db ? word_1500C dw ? word_1500E dw ? word_15010 dw ? word_15012 dw ? allcast_screen_plus_one dw ? allcast_step dw ? byte_15018 db ? db ? byte_1501A db ? byte_1501B db ? word_1501C dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; byte_15078 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 ? ; db ? ; byte_15176 db ? _hiscore_rank db ? word_15178 dw ? dw ? byte_1517C db ? db ? dword_1517E dd ? dword_15182 dd ? _verdict_rank db ? byte_15187 db ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; db ? ; byte_151A3 db ? db ? ; byte_151A5 db ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; db ? ; db ? ; db ? ; byte_151C1 db ? dw ? word_151C4 dw ? word_151C6 dw ? word_151C8 dw ? word_151CA dw ? byte_151CC db ? db ? word_151CE dw ? word_151D0 dw ? word_151D2 dw ? word_151D4 dw ? word_151D6 dw ? word_151D8 dw ? word_151DA dw ? word_151DC dw ? word_151DE dw ? word_151E0 dw ? word_151E2 dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; word_156E4 dw ? dw ? word_156E8 dw ? dw ? word_156EC dw ? dd ? ; dd ? ; db ? ; db ? ; word_156F8 dw ? word_156FA dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; 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 ? ; byte_18F2E 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 ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; 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 ? ; word_1A7E8 dw ? dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; dd ? ; 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 ? ; end