From 8cecebff8166bea5d4d4f7ec467bb50eb5fe288a Mon Sep 17 00:00:00 2001 From: nmlgc Date: Wed, 12 Nov 2014 23:11:16 +0100 Subject: [PATCH] Analyze any remaining byte blobs in code segments ... excluding those in packfile functions and the floating-point hacks, both of which will follow in the next few days. --- th01_fuuin.asm | 45 +- th01_reiiden_2.inc | 39 +- th02_main.asm | 8 +- th03_mainl.asm | 333 ++-- th03_op.asm | 80 +- th04_main.asm | 223 ++- th04_main_seg3+4.inc | 975 ++++++++---- th04_maine.asm | 203 ++- th04_op.asm | 347 +++-- th05_main.asm | 3439 ++++++++++++++++++++++++++++++++++-------- th05_main_seg3+4.inc | 1328 +++++++++++++--- th05_maine.asm | 290 ++-- th05_op.asm | 247 +-- 13 files changed, 5836 insertions(+), 1721 deletions(-) diff --git a/th01_fuuin.asm b/th01_fuuin.asm index f4b3301d..654c8611 100644 --- a/th01_fuuin.asm +++ b/th01_fuuin.asm @@ -503,7 +503,7 @@ arg_10 = word ptr 16h push ss push ax push ds - push offset off_12BCC + push offset FULLWIDTH_NUMBERS mov cx, 28h ; '(' call SCOPY@ xor di, di @@ -12300,27 +12300,8 @@ byte_12BA3 db 0 db 81h db 45h ; E db 81h -off_12BCC dd aVo - ; "0" -word_12BD0 dw 191h -seg_12BD2 dw seg dseg -word_12BD4 dw 194h -seg_12BD6 dw seg dseg -byte_12BD8 db 97h -byte_12BD9 db 1 -seg_12BDA db 0aah -unk_12BDB db 12h -word_12BDC dw 19Ah -seg_12BDE dw seg dseg -word_12BE0 dw 19Dh -seg_12BE2 dw seg dseg -word_12BE4 dw 1A0h -seg_12BE6 dw seg dseg -off_12BE8 dd aVv - ; "7" -word_12BEC dw 1A6h - dw seg dseg - dd aVx ; "9" +FULLWIDTH_NUMBERS dd aFW_0, aFW_1, aFW_2, aFW_3, aFW_4 + dd aFW_5, aFW_6, aFW_7, aFW_8, aFW_9 aBqbqbqbqbqbqbq db '________',0 aB@b@b@b@b@b@b@ db '        ',0 aHiscore_0 db 'HISCORE',0 @@ -12329,16 +12310,16 @@ off_12C1E dd aB@gcbGwbB@ dd aB@gmbGGlb@ ; " ノーマル " dd aB@gnbGhb@b@ ; " ハード  " dd aGlgigegbgbgn ; "ルナティック" -aVo db '0',0 -aVp db '1',0 -aVq db '2',0 -aVr db '3',0 -aVs db '4',0 -aVt db '5',0 -aVu db '6',0 -aVv db '7',0 -aVw db '8',0 -aVx db '9',0 +aFW_0 db '0',0 +aFW_1 db '1',0 +aFW_2 db '2',0 +aFW_3 db '3',0 +aFW_4 db '4',0 +aFW_5 db '5',0 +aFW_6 db '6',0 +aFW_7 db '7',0 +aFW_8 db '8',0 +aFW_9 db '9',0 aC_0 db '無',0 aUmx_0 db '東方★靈異伝  ',0 aHiscore_1 db 'HISCORE',0 diff --git a/th01_reiiden_2.inc b/th01_reiiden_2.inc index a666d6af..f70b0b8f 100644 --- a/th01_reiiden_2.inc +++ b/th01_reiiden_2.inc @@ -13699,6 +13699,8 @@ off_22684 dw offset loc_22323 dw offset loc_22350 dw offset loc_22350 dw offset loc_22350 + dw offset loc_2237D + dw offset loc_22323 seg032 ends ; =========================================================================== @@ -13706,8 +13708,8 @@ seg032 ends ; Segment type: Pure code seg033 segment byte public 'CODE' use16 assume cs:seg033 + ;org 4 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing - db 0FDh, 0Ah, 0A3h, 0Ah ; =============== S U B R O U T I N E ======================================= @@ -25932,9 +25934,12 @@ sub_28FA9 proc near retn sub_28FA9 endp -; --------------------------------------------------------------------------- -loc_28FC5: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_28FC5 proc near enter 2, 0 mov ax, word_3A6CA mov bx, 0Fh @@ -25954,15 +25959,7 @@ loc_28FC5: mov al, [bp-2] mov byte_39A27, al push 1 -; --------------------------------------------------------------------------- - db 9Ah, 1Eh, 1 - db 92h ; SEG16 SEGDEF [seg006,0] - -; =============== S U B R O U T I N E ======================================= - - -sub_28FF6 proc near - push cs + call sub_EA3E push ds push offset word_39A1E call sub_16D6A @@ -25976,7 +25973,7 @@ sub_28FF6 proc near locret_29013: leave retn -sub_28FF6 endp +sub_28FC5 endp ; =============== S U B R O U T I N E ======================================= @@ -32007,7 +32004,7 @@ loc_2C3BE: inc word_3A6CA inc word_3B433 call sub_28EA6 - call loc_28FC5 + call sub_28FC5 ; Hack (fldz) db 0cdh db 035h @@ -32139,7 +32136,7 @@ loc_2C4A1: inc word_3A6CA push 1 call sub_29A99 - call loc_28FC5 + call sub_28FC5 cmp word_3A6CA, 0 jnz loc_2CDCE mov byte_3A6CE, 3 @@ -32158,7 +32155,7 @@ loc_2C4D8: inc word_3A6CA inc word_3B433 call sub_28EA6 - call loc_28FC5 + call sub_28FC5 push 0 call sub_29D8B cmp word_35E95, 0 @@ -32232,7 +32229,7 @@ loc_2C594: inc word_3A6CA push 2 call sub_29A99 - call loc_28FC5 + call sub_28FC5 cmp word_3A6CA, 0 jnz loc_2CDCE mov byte_3A6CE, 5 @@ -32255,7 +32252,7 @@ loc_2C5D6: inc word_3A6CA inc word_3B433 call sub_28EA6 - call loc_28FC5 + call sub_28FC5 call sub_2A469 cmp word_35E95, 0 jnz short loc_2C5FE @@ -32350,7 +32347,7 @@ loc_2C6B0: inc word_3A6CA push 3 call sub_29A99 - call loc_28FC5 + call sub_28FC5 cmp word_3A6CA, 0 jnz loc_2CDCE mov byte_3A6CE, 7 @@ -32373,7 +32370,7 @@ loc_2C6F2: inc word_3A6CA inc word_3B433 call sub_28EA6 - call loc_28FC5 + call sub_28FC5 push 1 call sub_29D8B ; Hack (fldz) @@ -32511,7 +32508,7 @@ loc_2C7F1: inc word_3A6CA push 0 call sub_29A99 - call loc_28FC5 + call sub_28FC5 cmp word_3A6CA, 0 jnz loc_2CDCE mov byte_3A6CE, 1 diff --git a/th02_main.asm b/th02_main.asm index adeaec72..b579f52c 100644 --- a/th02_main.asm +++ b/th02_main.asm @@ -10408,6 +10408,8 @@ loc_F24E: mov word_1E512, 2 jmp short loc_F2C2 ; --------------------------------------------------------------------------- + +loc_F260: mov al, byte_2060A cbw mov si, ax @@ -10651,7 +10653,11 @@ off_F443 dw offset loc_F238 dw offset loc_F24E dw offset loc_F270 dw offset loc_F29E -byte_F44F db 58h, 41h, 0, 41h, 28h, 41h, 44h, 41h, 0 + dw offset loc_F2B8 + dw offset loc_F260 + dw offset loc_F288 + dw offset loc_F2A4 + db 0 seg001 ends ; =========================================================================== diff --git a/th03_mainl.asm b/th03_mainl.asm index 81d40940..3cb11132 100644 --- a/th03_mainl.asm +++ b/th03_mainl.asm @@ -954,7 +954,7 @@ sub_978D proc near call graph_show push large 160012Ch push 0 - call far ptr loc_D712 + call sub_D712 push 0 call sub_CEC2 push 2 @@ -968,7 +968,7 @@ sub_978D proc near loc_97E8: push large 160012Ch push si - call far ptr loc_D712 + call sub_D712 push 6 call sub_CB52 inc si @@ -982,10 +982,10 @@ loc_97FC: call far ptr palette_show push large 0E00040h push 6 - call far ptr loc_D712 + call sub_D712 push large 160012Ch push 5 - call far ptr loc_D712 + call sub_D712 push ds push offset aLogo1_rgb ; "logo1.rgb" call palette_entry_rgb @@ -1253,15 +1253,15 @@ var_2 = word ptr -2 call graph_pi_free push large 600060h push 0 - call far ptr loc_C9D4 + call sub_C9D4 push large 1600060h push 1 - call far ptr loc_CA88 + call sub_CA88 cmp byte_F7E5, 0 jnz short loc_9A8E push large 180002Eh push 2 - call far ptr loc_C9D4 + call sub_C9D4 loc_9A8E: push 0 @@ -1854,10 +1854,10 @@ loc_9FB3: loc_9FC8: push large 0C00110h push 0 - call far ptr loc_D712 + call sub_D712 push large 1600110h push 3 - call far ptr loc_D712 + call sub_D712 les bx, dword_105DA mov al, es:[bx+36h] les bx, [bp+var_6] @@ -1889,13 +1889,13 @@ loc_A01E: mov dx, 2 sub dx, ax push dx - call far ptr loc_D712 + call sub_D712 push large 1600110h mov ax, si add ax, ax inc ax push ax - call far ptr loc_D712 + call sub_D712 mov [bp+var_2], 1 jmp short loc_A05B ; --------------------------------------------------------------------------- @@ -3844,7 +3844,7 @@ sub_AFAC proc near call sub_CF1E push large 1400138h push 0 - call far ptr loc_C9D4 + call sub_C9D4 push 0 call sub_D130 push ds @@ -5688,7 +5688,7 @@ loc_BD65: push [bp+arg_6] push [bp+arg_4] push [bp+arg_2] - call far ptr loc_D712 + call sub_D712 jmp short loc_BD83 ; --------------------------------------------------------------------------- @@ -5696,7 +5696,7 @@ loc_BD75: push [bp+arg_6] push [bp+arg_4] push [bp+arg_2] - call far ptr loc_C9D4 + call sub_C9D4 loc_BD83: and [bp+arg_0], 7 @@ -7072,33 +7072,41 @@ sub_C990 endp ; --------------------------------------------------------------------------- db 0 -; --------------------------------------------------------------------------- -loc_C9D4: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C9D4 proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + push bp mov bp, sp push si push di push large 0C00000h call grcg_setcolor - mov si, [bp+6] + mov si, [bp+arg_0] shl si, 4 add si, 1D0Eh mov ax, [si+0Eh] - mov cs:word_CA4C, ax - mov ax, [bp+0Ah] + mov word ptr cs:loc_CA4B+1, ax + mov ax, [bp+arg_4] sar ax, 3 add ax, [si+6] mov di, ax - mov cs:word_CA45, ax + mov word ptr cs:loc_CA44+1, ax mov ax, [si+8] - mov cs:word_CA37, ax - mov cs:word_CA51, ax + mov word ptr cs:loc_CA36+1, ax + mov word ptr cs:loc_CA50+1, ax shl ax, 2 add ax, 50h ; 'P' - mov cs:word_CA33, ax + mov word ptr cs:loc_CA32+1, ax jmp short $+2 - mov ax, [bp+8] + mov ax, [bp+arg_2] mov bx, ax shl ax, 2 add ax, bx @@ -7108,36 +7116,86 @@ loc_C9D4: mov ax, [si+0Ch] mov ds, ax xor si, si -; --------------------------------------------------------------------------- - db 0BAh -word_CA33 dw 1234h - db 0FCh, 0B9h -word_CA37 dw 1234h - db 0F3h, 66h, 0A5h, 2Bh, 0FAh, 79h, 0F6h, 32h, 0C0h, 0E6h - db 7Ch, 0BBh -word_CA45 dw 1234h - db 8Bh, 0FBh, 33h, 0F6h, 0B8h -word_CA4C dw 1234h - db 8Eh, 0D8h, 0B9h -word_CA51 dw 1234h - db 66h, 8Bh, 4, 66h, 26h, 9, 5, 83h, 0C6h, 4, 83h, 0C7h - db 4, 0E2h, 0F1h, 2Bh, 0FAh, 79h, 0EAh, 8Bh, 0FBh, 8Ch - db 0C0h, 5, 0, 8, 8Eh, 0C0h, 3Dh, 0, 0C0h, 72h, 0DCh, 3Dh - db 0, 0C8h, 73h, 7, 5, 0, 20h, 8Eh, 0C0h, 0EBh, 0D0h, 1Fh - db 5Fh, 5Eh, 5Dh, 0CAh, 6, 0, 90h -; --------------------------------------------------------------------------- -loc_CA88: +loc_CA32: + mov dx, 1234h + cld + +loc_CA36: + mov cx, 1234h + rep movsd + sub di, dx + jns short loc_CA36 + xor al, al + out 7Ch, al + +loc_CA44: + mov bx, 1234h + mov di, bx + xor si, si + +loc_CA4B: + mov ax, 1234h + mov ds, ax + assume ds:nothing + +loc_CA50: + mov cx, 1234h + +loc_CA53: + mov eax, [si] + or es:[di], eax + add si, 4 + add di, 4 + loop loc_CA53 + sub di, dx + jns short loc_CA50 + mov di, bx + mov ax, es + add ax, 800h + mov es, ax + assume es:nothing + cmp ax, 0C000h + jb short loc_CA50 + cmp ax, 0C800h + jnb short loc_CA80 + add ax, 2000h + mov es, ax + assume es:nothing + jmp short loc_CA50 + +loc_CA80: + pop ds + assume ds:dseg + pop di + pop si + pop bp + retf 6 +sub_C9D4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CA88 proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + push bp mov bp, sp push si push di push large 0C00000h call grcg_setcolor - mov si, [bp+6] + mov si, [bp+arg_0] shl si, 4 add si, 1D0Eh - mov ax, [bp+0Ah] + mov ax, [bp+arg_4] sar ax, 3 add ax, [si+6] mov bx, [si+8] @@ -7145,49 +7203,94 @@ loc_CA88: add ax, bx dec ax mov di, ax - mov cs:word_CB09, ax - mov cs:word_CB31, ax - mov cs:word_CAF3, bx - mov cs:word_CB1F, bx + mov word ptr cs:loc_CB08+1, ax + mov word ptr cs:loc_CB30+1, ax + mov word ptr cs:loc_CAF2+1, bx + mov word ptr cs:loc_CB1E+1, bx mov ax, 50h ; 'P' sub ax, bx - mov cs:word_CAEF, ax - mov cs:word_CB1B, ax + mov word ptr cs:loc_CAEE+1, ax + mov word ptr cs:loc_CB1A+1, ax jmp short $+2 - mov ax, [bp+8] + mov ax, [bp+arg_2] mov bx, ax shl ax, 2 add ax, bx add ax, 0A800h mov es, ax + assume es:nothing mov bx, 20D6h mov fs, word ptr [si+0Ch] xor si, si -; --------------------------------------------------------------------------- - db 0BAh -word_CAEF dw 1234h + +loc_CAEE: + mov dx, 1234h + nop + +loc_CAF2: + mov cx, 1234h + +loc_CAF5: + mov al, fs:[si] + xlat + mov es:[di], al + inc si + dec di + loop loc_CAF5 + sub di, dx + jns short loc_CAF2 + xor al, al + out 7Ch, al + +loc_CB08: + mov di, 1234h + mov si, [bp+arg_0] + shl si, 4 + add si, 1D0Eh + mov fs, word ptr [si+0Eh] + xor si, si + +loc_CB1A: + mov dx, 1234h + nop + +loc_CB1E: + mov cx, 4D2h + +loc_CB21: + mov al, fs:[si] + xlat + or es:[di], al + inc si + dec di + loop loc_CB21 + sub di, dx + jns short loc_CB1E + +loc_CB30: + mov di, 1234h + mov ax, es + add ax, 800h + mov es, ax + assume es:nothing + cmp ax, 0C000h + jb short loc_CB1E + cmp ax, 0C800h + jnb short loc_CB4B + add ax, 2000h + mov es, ax + assume es:nothing + jmp short loc_CB1E + +loc_CB4B: + pop di + pop si + pop bp + retf 6 +sub_CA88 endp + ; --------------------------------------------------------------------------- nop -; --------------------------------------------------------------------------- - db 0B9h -word_CAF3 dw 1234h - db 64h, 8Ah, 4, 0D7h, 26h, 88h, 5, 46h, 4Fh, 0E2h, 0F5h - db 2Bh, 0FAh, 79h, 0EEh, 32h, 0C0h, 0E6h, 7Ch, 0BFh -word_CB09 dw 1234h - db 8Bh, 76h, 6, 0C1h, 0E6h, 4, 81h, 0C6h, 0Eh, 1Dh, 8Eh - db 64h, 0Eh, 33h, 0F6h, 0BAh -word_CB1B dw 1234h -; --------------------------------------------------------------------------- - nop -; --------------------------------------------------------------------------- - db 0B9h -word_CB1F dw 4D2h - db 64h, 8Ah, 4, 0D7h, 26h, 8, 5, 46h, 4Fh, 0E2h, 0F5h - db 2Bh, 0FAh, 79h, 0EEh, 0BFh -word_CB31 dw 1234h - db 8Ch, 0C0h, 5, 0, 8, 8Eh, 0C0h, 3Dh, 0, 0C0h, 72h, 0DFh - db 3Dh, 0, 0C8h, 73h, 7, 5, 0, 20h, 8Eh, 0C0h, 0EBh, 0D3h - db 5Fh, 5Eh, 5Dh, 0CAh, 6, 0, 90h ; =============== S U B R O U T I N E ======================================= @@ -8773,9 +8876,17 @@ sub_D6C5 endp ; --------------------------------------------------------------------------- db 0 -; --------------------------------------------------------------------------- -loc_D712: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D712 proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + push bp mov bp, sp push si @@ -8788,7 +8899,7 @@ loc_D712: add ax, [si+6] mov di, ax mov ax, [si+8] - mov cs:word_D759, ax + mov word ptr cs:loc_D758+1, ax jmp short $+2 shl ax, 2 add ax, 50h ; 'P' @@ -8806,13 +8917,36 @@ loc_D712: mov bx, di cld nop + +loc_D758: + mov cx, 1234h + rep movsd + sub di, dx + jns short loc_D758 + mov di, bx + mov ax, es + add ax, 800h + mov es, ax + assume es:nothing + cmp ax, 0C000h + jb short loc_D758 + cmp ax, 0C800h + jnb short loc_D77C + add ax, 2000h + mov es, ax + assume es:nothing + jmp short loc_D758 + +loc_D77C: + pop ds + pop di + pop si + pop bp + retf 6 +sub_D712 endp + ; --------------------------------------------------------------------------- - db 0B9h -word_D759 dw 1234h - db 0F3h, 66h, 0A5h, 2Bh, 0FAh, 79h, 0F6h, 8Bh, 0FBh, 8Ch - db 0C0h, 5, 0, 8, 8Eh, 0C0h, 3Dh, 0, 0C0h, 72h, 0E8h, 3Dh - db 0, 0C8h, 73h, 7, 5, 0, 20h, 8Eh, 0C0h, 0EBh, 0DCh, 1Fh - db 5Fh, 5Eh, 5Dh, 0CAh, 6, 0, 90h + nop ; =============== S U B R O U T I N E ======================================= @@ -8868,24 +9002,15 @@ dseg segment para public 'DATA' use16 include libs/BorlandC/c0[data].asm - db 22h ; " - db 1 - db 2Bh ; + - db 1 - db 34h ; 4 - db 1 - db 3Dh ; = - db 1 - db 46h ; F - db 1 - db 4Fh ; O - db 1 - db 58h ; X - db 1 - db 61h ; a - db 1 - db 6Ah ; j - db 1 + dw offset a00sl_cd2 + dw offset a02sl_cd2 + dw offset a04sl_cd2 + dw offset a06sl_cd2 + dw offset a08sl_cd2 + dw offset a10sl_cd2 + dw offset a12sl_cd2 + dw offset a14sl_cd2 + dw offset a16sl_cd2 dd a@00tx_txt ; "@00TX.TXT" dd a@01tx_txt ; "@01TX.TXT" dd a@02tx_txt ; "@02TX.TXT" @@ -8915,8 +9040,8 @@ CHAR_NAME dd NAME_REIMU ; " dd NAME_CHIYURI ; " 北白河 ちゆり" dd TITLE_YUMEMI ; "     夢幻伝説    " dd NAME_YUMEMI ; "  岡崎 夢美" -word_E502 dw 38Ah -word_E504 dw 391h +word_E502 dw offset aSt_cd2 +word_E504 dw offset aStnx1_pi a0016_pi db '0016.pi',0 db 0 db 0 diff --git a/th03_op.asm b/th03_op.asm index a8cfa595..e2fac8fb 100644 --- a/th03_op.asm +++ b/th03_op.asm @@ -1853,17 +1853,25 @@ loc_A19A: mov byte_D953, 1 jmp short loc_A1F3 ; --------------------------------------------------------------------------- + +loc_A1B4: nopcall sub_AC06 jmp short loc_A19A ; --------------------------------------------------------------------------- + +loc_A1BB: call sub_9E7F jmp short loc_A1DB ; --------------------------------------------------------------------------- + +loc_A1C0: mov byte_D954, 0 mov byte_E97C, 1 mov byte_D951, 0 jmp short loc_A1DB ; --------------------------------------------------------------------------- + +loc_A1D1: mov byte_D954, 0 mov byte_D952, 1 @@ -1887,7 +1895,10 @@ sub_A0E0 endp db 0 off_A1F7 dw offset loc_A184 dw offset loc_A189 - db 0B4h, 8, 0BBh, 8, 0C0h, 8, 0D1h, 8 + dw offset loc_A1B4 + dw offset loc_A1BB + dw offset loc_A1C0 + dw offset loc_A1D1 ; =============== S U B R O U T I N E ======================================= @@ -4364,13 +4375,13 @@ var_2 = word ptr -2 push di push large 200130h push 0Bh - call far ptr loc_CAF6 + call sub_CAF6 les bx, dword_FC54 cmp byte ptr es:[bx+28h], 1 jz short loc_B590 push large 1A00130h push 0Bh - call far ptr loc_CAF6 + call sub_CAF6 loc_B590: push large 0C0000Eh @@ -4506,25 +4517,25 @@ sub_B670 proc near mov bp, sp push large 0A00130h push 0Ch - call far ptr loc_CAF6 + call sub_CAF6 push large 0B0013Ch mov al, byte_FC58 cbw add ax, 0Dh push ax - call far ptr loc_CAF6 + call sub_CAF6 les bx, dword_FC54 cmp byte ptr es:[bx+28h], 1 jz short loc_B6BE push large 2200130h push 0Ch - call far ptr loc_CAF6 + call sub_CAF6 push large 230013Ch mov al, byte_FC59 cbw add ax, 0Dh push ax - call far ptr loc_CAF6 + call sub_CAF6 loc_B6BE: pop bp @@ -7086,27 +7097,35 @@ loc_CAEF: retf 2 ; --------------------------------------------------------------------------- db 0 -; --------------------------------------------------------------------------- -loc_CAF6: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CAF6 proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + push bp mov bp, sp push si push di - mov si, [bp+6] + mov si, [bp+arg_0] shl si, 4 add si, 1AA8h - mov ax, [bp+0Ah] + mov ax, [bp+arg_4] sar ax, 3 add ax, [si+6] mov di, ax mov ax, [si+8] - mov cs:word_CB3D, ax + mov word ptr cs:loc_CB3C+1, ax jmp short $+2 shl ax, 2 add ax, 50h ; 'P' mov dx, ax - mov ax, [bp+8] + mov ax, [bp+arg_2] mov bx, ax shl ax, 2 add ax, bx @@ -7119,13 +7138,36 @@ loc_CAF6: mov bx, di cld nop + +loc_CB3C: + mov cx, 1234h + rep movsd + sub di, dx + jns short loc_CB3C + mov di, bx + mov ax, es + add ax, 800h + mov es, ax + assume es:nothing + cmp ax, 0C000h + jb short loc_CB3C + cmp ax, 0C800h + jnb short loc_CB60 + add ax, 2000h + mov es, ax + assume es:nothing + jmp short loc_CB3C + +loc_CB60: + pop ds + pop di + pop si + pop bp + retf 6 +sub_CAF6 endp + ; --------------------------------------------------------------------------- - db 0B9h -word_CB3D dw 1234h - db 0F3h, 66h, 0A5h, 2Bh, 0FAh, 79h, 0F6h, 8Bh, 0FBh, 8Ch - db 0C0h, 5, 0, 8, 8Eh, 0C0h, 3Dh, 0, 0C0h, 72h, 0E8h, 3Dh - db 0, 0C8h, 73h, 7, 5, 0, 20h, 8Eh, 0C0h, 0EBh, 0DCh, 1Fh - db 5Fh, 5Eh, 5Dh, 0CAh, 6, 0, 90h + nop ; =============== S U B R O U T I N E ======================================= diff --git a/th04_main.asm b/th04_main.asm index 994c6307..ad7618a2 100644 --- a/th04_main.asm +++ b/th04_main.asm @@ -2911,10 +2911,24 @@ sub_BC94 endp ; --------------------------------------------------------------------------- nop + +; =============== S U B R O U T I N E ======================================= + + +nullsub_1 proc near retn +nullsub_1 endp + ; --------------------------------------------------------------------------- nop + +; =============== S U B R O U T I N E ======================================= + + +nullsub_2 proc far retf +nullsub_2 endp + ; --------------------------------------------------------------------------- nop @@ -3091,7 +3105,7 @@ loc_BDBB: mov cx, bp inc cx shl cx, 3 - mov cs:word_BDD9, cx + mov word ptr cs:loc_BDD6+3, cx loc_BDC6: xor cx, cx @@ -3102,10 +3116,9 @@ loc_BDC6: jnz short loc_BDC6 xor cx, cx call numerals_draw -; --------------------------------------------------------------------------- - db 0C7h, 44h, 5 -word_BDD9 dw 28h -; --------------------------------------------------------------------------- + +loc_BDD6: + mov word ptr [si+5], 28h cmp byte ptr [si+7], 0 jz short loc_BDF1 add word ptr [si+5], 10h @@ -4567,32 +4580,41 @@ arg_2 = word ptr 8 push bp mov bp, sp push si + mov si, 9594h + xor cx, cx + jmp short loc_C6D8 ; --------------------------------------------------------------------------- - db 0BEh, 94h -word_C69C dw 3395h,0EBC9h, 8037h, 3Ch - dw 2E75h, 4C6h,0C601h, 144h ; value table for switch statement - dw 8B00h, 846h - dw offset loc_14B47+4 ; jump table for switch statement - dw offset loc_1D38E+2 - dw offset loc_13685+2 - (offset loc_13A8F+1) - dw offset loc_15A95 - dw offset loc_1C38D+3 - dw offset loc_13CD2+2 - dw offset loc_18116+5 - dw offset loc_1D395+1 - dw offset loc_13685+2 - (offset loc_13A8F+1) - dw offset off_14A94+1 - db 0 -; --------------------------------------------------------------------------- + +loc_C6A1: + cmp byte ptr [si], 0 + jnz short loc_C6D4 + mov byte ptr [si], 1 + mov byte ptr [si+1], 0 + mov ax, [bp+arg_2] + mov bx, 10h + cwd + idiv bx + add ax, 20h + mov [si+2], ax + mov ax, [bp+arg_0] + cwd + idiv bx + add ax, 10h mov [si+4], ax + +loc_C6C8: mov word ptr [si+6], 84h mov word ptr [si+8], 0FFF8h jmp short loc_C6DD ; --------------------------------------------------------------------------- + +loc_C6D4: inc cx add si, 0Ah + +loc_C6D8: cmp cx, 10h - jl short near ptr word_C69C+5 + jl short loc_C6A1 loc_C6DD: pop si @@ -11013,7 +11035,15 @@ loc_F6B9: pop si leave retn -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F6BD proc near + +var_2 = word ptr -2 + enter 2, 0 push si push di @@ -11034,7 +11064,7 @@ loc_F6D2: loc_F6E4: inc byte_256A2 - mov byte ptr [bp-1], 0BAh + mov byte ptr [bp+var_2+1], 0BAh mov word_256A4, 0B55Eh mov byte_256A6, 0 jmp loc_F780 @@ -11045,14 +11075,14 @@ loc_F6FA: jg short loc_F720 lea ax, [si+0Ah] push ax - push word ptr [bp-1] + push [bp+var_2+1] call sub_11DCA mov word ptr [si+0Eh], 1Ch mov byte ptr [si+10h], 4 mov byte ptr [si+10h], 7 - mov al, [bp-1] + mov al, byte ptr [bp+var_2+1] add al, 6 - mov [bp-1], al + mov byte ptr [bp+var_2+1], al jmp short loc_F77D ; --------------------------------------------------------------------------- @@ -11062,18 +11092,18 @@ loc_F720: cmp di, 5 jnz short loc_F735 sub word ptr [si+2], 180h - mov byte ptr [bp-2], 0B8h + mov byte ptr [bp+var_2], 0B8h jmp short loc_F73E ; --------------------------------------------------------------------------- loc_F735: add word ptr [si+2], 180h - mov byte ptr [bp-2], 0C8h + mov byte ptr [bp+var_2], 0C8h loc_F73E: lea ax, [si+0Ah] push ax - push word ptr [bp-2] + push [bp+var_2] call sub_11DCA mov word ptr [si+0Eh], 1Ch jmp short loc_F779 @@ -11120,14 +11150,24 @@ loc_F78B: pop si leave retn -; --------------------------------------------------------------------------- +sub_F6BD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F78F proc near + +var_2 = word ptr -2 + enter 2, 0 push si push di mov di, 5 add di, 2 inc byte_256A2 - mov byte ptr [bp-1], 0BAh + mov byte ptr [bp+var_2+1], 0BAh mov word_256A4, 0B55Eh mov byte_256A6, 0 jmp loc_F833 @@ -11138,13 +11178,13 @@ loc_F7B1: jg short loc_F7D3 lea ax, [si+0Ah] push ax - push word ptr [bp-1] + push [bp+var_2+1] call sub_11DCA mov word ptr [si+0Eh], 1Ch mov byte ptr [si+10h], 7 - mov al, [bp-1] + mov al, byte ptr [bp+var_2+1] add al, 6 - mov [bp-1], al + mov byte ptr [bp+var_2+1], al jmp short loc_F830 ; --------------------------------------------------------------------------- @@ -11154,18 +11194,18 @@ loc_F7D3: cmp di, 5 jnz short loc_F7E8 sub word ptr [si+2], 180h - mov byte ptr [bp-2], 0B8h + mov byte ptr [bp+var_2], 0B8h jmp short loc_F7F1 ; --------------------------------------------------------------------------- loc_F7E8: add word ptr [si+2], 180h - mov byte ptr [bp-2], 0C8h + mov byte ptr [bp+var_2], 0C8h loc_F7F1: lea ax, [si+0Ah] push ax - push word ptr [bp-2] + push [bp+var_2] call sub_11DCA mov word ptr [si+0Eh], 1Ch jmp short loc_F82C @@ -11212,7 +11252,17 @@ loc_F83E: pop si leave retn -; --------------------------------------------------------------------------- +sub_F78F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F842 proc near + +var_2 = word ptr -2 + enter 2, 0 push si push di @@ -11262,20 +11312,20 @@ loc_F8A5: jnz short loc_F8BA sub word ptr [si+2], 180h mov byte ptr [bp-2], 0B8h - jmp short near ptr word_F8C0+3 + jmp short loc_F8C3 ; --------------------------------------------------------------------------- loc_F8BA: add word ptr [si+2], 180h -; --------------------------------------------------------------------------- - db 0C6h -word_F8C0 dw 0FE46h, 8DC8h, 0A44h,0FF50h - dw 0FE76h ; value table for switch statement - dw offset loc_13876+2 - (offset loc_13A8F+1) ; jump table for switch statement - dw offset loc_201B4 - dw offset loc_148D0+4 - dw offset loc_13AAC - dw offset loc_1A87B + mov byte ptr [bp+var_2], 0C8h + +loc_F8C3: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_11DCA + mov word ptr [si+0Eh], 1Ch + jmp short loc_F941 ; --------------------------------------------------------------------------- loc_F8D4: @@ -11335,6 +11385,8 @@ loc_F92E: loc_F93C: mov word ptr [si+0Eh], 1Eh + +loc_F941: mov byte ptr [si+10h], 7 loc_F945: @@ -11352,16 +11404,36 @@ loc_F953: pop si leave retn -; --------------------------------------------------------------------------- - db 0C8h, 2, 2 dup(0), 56h, 57h, 0BFh, 1, 0, 80h, 3Eh, 66h - db 46h, 12h, 75h, 5, 0C6h, 6, 62h - dw 43h, 62A0h,0B443h,0BB00h ; value table for switch statement - dw offset loc_13A93 - (offset loc_13A8F+1) ; jump table for switch statement - dw offset loc_13229 - (offset loc_13A8F+1) - dw offset loc_1468B - dw offset loc_1B05F+3 -; --------------------------------------------------------------------------- - add ax, [bp+di+2C7h] +sub_F842 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F957 proc near + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov di, 1 + cmp byte_259A6, 12h + jnz short loc_F96C + mov byte_256A2, 0 + +loc_F96C: + mov al, byte_256A2 + mov ah, 0 + mov bx, 3 + cwd + idiv bx + or dx, dx + jnz short loc_F97E + add di, 2 + +loc_F97E: inc byte_256A2 mov word_256A4, 0B55Eh mov byte_256A6, 0 @@ -11386,18 +11458,18 @@ loc_F9AA: cmp di, 3 jnz short loc_F9BA sub word ptr [si+2], 180h - mov byte ptr [bp-1], 0B8h + mov [bp+var_1], 0B8h jmp short loc_F9C3 ; --------------------------------------------------------------------------- loc_F9BA: add word ptr [si+2], 180h - mov byte ptr [bp-1], 0C8h + mov [bp+var_1], 0C8h loc_F9C3: lea ax, [si+0Ah] push ax - push word ptr [bp-1] + push word ptr [bp+var_1] call sub_11DCA mov word ptr [si+0Eh], 20h ; ' ' @@ -11417,6 +11489,7 @@ loc_F9E2: pop si leave retn +sub_F957 endp ; --------------------------------------------------------------------------- enter 4, 0 push si @@ -19032,7 +19105,7 @@ loc_13580: shl si, 4 add si, 3978h mov ax, [si+0Eh] - mov cs:word_135F8, ax + mov word ptr cs:loc_135F7+1, ax jmp short $+2 mov ax, [bp+8] mov bx, ax @@ -19071,10 +19144,9 @@ loc_135E8: xor al, al out 7Ch, al xor si, si -; --------------------------------------------------------------------------- - db 0B8h -word_135F8 dw 1234h -; --------------------------------------------------------------------------- + +loc_135F7: + mov ax, 1234h mov ds, ax loc_135FC: @@ -19155,11 +19227,7 @@ arg_0 = dword ptr 6 loc_1367D: mov bbufsiz, 1000h - nop - push cs - -loc_13685: - call near ptr sub_130EE + nopcall sub_130EE call vsync_start call egc_start call graph_400line @@ -19724,16 +19792,11 @@ sub_13A58 endp sub_13A8E proc far push si - -loc_13A8F: mov si, 3Fh ; '?' loc_13A92: push si - -loc_13A93: - push cs ; jumptable 0001F922 case 67 - call near ptr sub_13A58 + call sub_13A58 ; jumptable 0001F922 case 67 dec si jge short loc_13A92 pop si @@ -24869,8 +24932,8 @@ byte_25594 db ? db ? word_25596 dw ? byte_25598 db ? - db ? - db ? +byte_25599 db ? +byte_2559A db ? db ? dd ? ; word_255A0 dw ? diff --git a/th04_main_seg3+4.inc b/th04_main_seg3+4.inc index 6a3bbf88..9fb8cbad 100644 --- a/th04_main_seg3+4.inc +++ b/th04_main_seg3+4.inc @@ -1164,7 +1164,12 @@ loc_142E4: retf sub_14017 endp -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_142F1 proc near push bp mov bp, sp cmp word_26706, 2 @@ -1213,7 +1218,14 @@ loc_1436F: loc_14381: pop bp retn -; --------------------------------------------------------------------------- +sub_142F1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14383 proc near push bp mov bp, sp cmp word_26706, 20h ; ' ' @@ -1235,7 +1247,14 @@ loc_14381: loc_143C5: pop bp retn -; --------------------------------------------------------------------------- +sub_14383 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_143C7 proc near push bp mov bp, sp cmp word_26706, 1 @@ -1271,7 +1290,14 @@ loc_14411: loc_14423: pop bp retn -; --------------------------------------------------------------------------- +sub_143C7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14425 proc near push bp mov bp, sp cmp word_26706, 1 @@ -1310,69 +1336,235 @@ loc_14477: loc_14489: pop bp retn -; --------------------------------------------------------------------------- - db 0C8h, 4, 2 dup(0), 56h, 0A1h, 0B4h, 53h, 0A3h, 42h - db 46h, 0A1h, 0B6h, 53h, 0A3h, 44h, 46h, 80h, 3Eh, 0C5h - db 53h, 0, 75h, 4Eh, 68h, 0B4h, 53h, 0E8h, 89h, 0F8h, 0FFh - db 6, 0C6h, 53h, 66h, 68h, 80h, 1, 80h, 1, 6Ah, 0Ah, 0E8h - db 60h, 0A1h, 8Bh, 0F0h, 83h, 3Eh, 0C6h, 53h, 14h, 0Fh - db 8Ch, 0CAh, 1, 0FEh, 6, 0C5h, 53h, 0C7h, 6, 0C6h, 53h - db 2 dup(0), 0C7h, 6, 0BCh, 53h, 2 dup(0), 0C7h, 6, 0BEh - db 53h, 2 dup(0), 6Ah, 3, 0E8h, 82h, 0F8h, 0A2h, 58h, 42h - db 6Ah, 1, 0E8h, 7Ah, 0F8h, 0A2h, 59h, 42h, 0C6h, 6, 5Ah - db 42h, 0, 0E9h, 9Ch, 1, 80h, 3Eh, 0C5h, 53h, 1, 0Fh, 85h - db 90h, 1, 68h, 0B4h, 53h, 0E8h, 32h, 0F8h, 0FFh, 6, 0C6h - db 53h, 0C6h, 6, 0A2h, 53h, 1, 0A1h, 0B4h, 53h, 0A3h, 0A4h - db 53h, 0A1h, 0B6h, 53h, 5, 0, 0FFh, 0A3h, 0A6h, 53h, 0A0h - db 58h, 42h, 0B4h, 0, 89h, 46h, 0FCh, 0B9h, 5, 0, 0BBh - db 0Bh, 0Ch, 2Eh, 8Bh, 7, 3Bh, 46h, 0FCh, 74h, 8, 83h - db 0C3h, 2, 0E2h, 0F3h, 0E9h, 0B4h, 0, 2Eh, 0FFh, 67h - db 0Ah, 0E8h, 0B4h, 0FDh, 0E9h, 0AAh, 0, 0E8h, 40h, 0FEh - db 0E9h, 0A4h, 0, 0E8h, 7Eh, 0FEh, 0E9h, 9Eh, 0, 0E8h - db 0D6h, 0FEh, 0E9h, 98h, 0, 80h, 3Eh, 5Ah, 42h, 0Bh, 77h - db 4Ch, 0A1h, 0B4h, 53h, 0A3h, 86h, 95h, 0A1h, 0B6h, 53h - db 0A3h, 88h, 95h, 0A1h, 0C6h, 53h, 5, 0C0h, 0FFh, 50h - db 66h, 68h, 9, 0, 0Fh, 0, 0E8h, 14h, 0F6h, 0A1h, 0C6h - db 53h, 3Dh, 40h, 0, 74h, 7, 3Dh, 44h, 0, 74h, 10h, 0EBh - db 21h, 0C7h, 6, 0BCh, 53h, 2 dup(0), 0C7h, 6, 0BEh, 53h - db 2 dup(0), 0EBh, 13h, 0C7h, 6, 0C6h, 53h, 2 dup(0), 0A0h - db 5Ah, 42h, 24h, 3, 0A2h, 58h, 42h, 0C6h, 6, 0C4h, 53h - db 0, 83h, 3Eh, 0C6h, 53h, 1, 75h, 3Eh, 0A0h, 5Ah, 42h - db 0B4h, 0, 8Bh, 0D8h, 8Ah, 87h, 90h, 17h, 88h, 46h, 0FFh - db 80h, 3Eh, 59h, 42h, 0, 74h, 8, 0B0h, 80h, 2Ah, 46h - db 0FFh, 88h, 46h, 0FFh, 1Eh, 68h, 0BCh, 53h, 1Eh, 68h - db 0BEh, 53h, 0FFh, 76h, 0FFh, 6Ah, 20h, 9Ah, 37h, 0 - dw seg seg002 - db 0FEh, 6, 5Ah, 42h, 0C6h, 6, 0C4h, 53h, 1, 0C7h, 6, 90h - db 95h, 8, 0, 81h, 3Eh, 0B6h, 53h, 0, 17h, 7Dh, 0Fh, 83h - db 3Eh, 0B4h, 53h, 0, 7Eh, 8, 81h, 3Eh, 0B4h, 53h, 0, 18h - db 7Ch, 5, 0C6h, 6, 0C5h, 53h, 3, 66h, 68h, 80h, 1, 80h - db 1, 6Ah, 4, 0E8h, 7, 0A0h, 8Bh, 0F0h, 0Bh, 0F6h, 74h - db 76h, 29h, 36h, 0C2h, 53h, 83h, 3Eh, 0C2h, 53h, 0, 7Eh - db 7, 0C6h, 6, 0C8h, 53h, 1, 0EBh, 64h, 0C6h, 6, 0C8h - db 53h, 1, 0A1h, 0B6h, 53h, 5, 0, 0FFh, 50h, 0E8h, 0D8h - db 0F6h, 8Bh, 0F0h, 0C6h, 6, 0B9h, 0BCh, 1, 0A0h, 5Ah - db 42h, 0B4h, 0, 0BAh, 14h, 0, 2Bh, 0D0h, 52h, 0E8h, 21h - db 59h, 0C6h, 6, 0C5h, 53h, 0FEh, 0C6h, 6, 0C4h, 53h, 4 - db 0C7h, 6, 0C6h, 53h, 2 dup(0), 0C7h, 6, 0BCh, 53h, 2 dup(0) - db 0FFh, 36h, 0B4h, 53h, 0FFh, 36h, 0B6h, 53h, 66h, 68h - db 30h, 0, 60h, 0, 0E8h, 18h, 0F8h, 6Ah, 0Ch, 9Ah, 0D2h - db 7 - dw seg seg002 - db 0FFh, 36h, 0B4h, 53h, 0FFh, 36h, 0B6h, 53h, 6Ah, 5 - db 0E8h, 0B0h, 93h, 0EBh, 3, 0E8h -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1F903 +sub_14425 endp -loc_1468B: - mov dx, 0FF59h ; jumptable 0001F922 case 46147 - db 36h - retn 6853h -; END OF FUNCTION CHUNK FOR sub_1F903 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1448B proc far + +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 4, 0 + push si + mov ax, word ptr dword_266F4 + mov word_25982, ax + mov ax, word ptr dword_266F4+2 + mov word_25984, ax + cmp byte_26705, 0 + jnz short loc_144F1 + push 53B4h + call sub_13D32 + inc word_26706 + push large 1800180h + push 0Ah + call sub_1E618 + mov si, ax + cmp word_26706, 14h + jl loc_1468D + inc byte_26705 + mov word_26706, 0 + mov word_266FC, 0 + mov word_266FE, 0 + push 3 + call sub_13D60 + mov byte_25598, al + push 1 + call sub_13D60 + mov byte_25599, al + mov byte_2559A, 0 + jmp loc_1468D ; --------------------------------------------------------------------------- - db 52h, 3, 0E8h, 7Fh, 58h, 5Eh, 0C9h, 0CBh, 3 dup(0), 1 - db 0, 2, 0, 3, 0, 0FFh, 0, 0AAh, 0Ah, 0B0h, 0Ah, 0B6h - db 0Ah, 0BCh, 0Ah, 0C2h, 0Ah + +loc_144F1: + cmp byte_26705, 1 + jnz loc_1468A + push 53B4h + call sub_13D32 + inc word_26706 + mov byte_266E2, 1 + mov ax, word ptr dword_266F4 + mov word ptr dword_266E4, ax + mov ax, word ptr dword_266F4+2 + add ax, 0FF00h + mov word ptr dword_266E4+2, ax + mov al, byte_25598 + mov ah, 0 + mov [bp+var_4], ax + mov cx, 5 ; switch 5 cases + mov bx, offset word_1469B + +loc_14526: + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_14536 + add bx, 2 + loop loc_14526 + jmp loc_145EA +; --------------------------------------------------------------------------- + +loc_14536: + jmp word ptr cs:[bx+0Ah] ; switch jump + +loc_1453A: + call sub_142F1 ; jumptable 00014536 case 0 + jmp loc_145EA +; --------------------------------------------------------------------------- + +loc_14540: + call sub_14383 ; jumptable 00014536 case 1 + jmp loc_145EA +; --------------------------------------------------------------------------- + +loc_14546: + call sub_143C7 ; jumptable 00014536 case 2 + jmp loc_145EA +; --------------------------------------------------------------------------- + +loc_1454C: + call sub_14425 ; jumptable 00014536 case 3 + jmp loc_145EA +; --------------------------------------------------------------------------- + +loc_14552: + cmp byte_2559A, 0Bh ; jumptable 00014536 case 255 + ja short loc_145A5 + mov ax, word ptr dword_266F4 + mov word ptr dword_2A8C6, ax + mov ax, word ptr dword_266F4+2 + mov word ptr dword_2A8C6+2, ax + mov ax, word_26706 + add ax, 0FFC0h + push ax + push large 0F0009h + call sub_13B89 + mov ax, word_26706 + cmp ax, 40h ; '@' + jz short loc_14584 + cmp ax, 44h ; 'D' + jz short loc_14592 + jmp short loc_145A5 +; --------------------------------------------------------------------------- + +loc_14584: + mov word_266FC, 0 + mov word_266FE, 0 + jmp short loc_145A5 +; --------------------------------------------------------------------------- + +loc_14592: + mov word_26706, 0 + mov al, byte_2559A + and al, 3 + mov byte_25598, al + mov byte_26704, 0 + +loc_145A5: + cmp word_26706, 1 + jnz short loc_145EA + mov al, byte_2559A + mov ah, 0 + mov bx, ax + mov al, [bx+1790h] + mov [bp+var_1], al + cmp byte_25599, 0 + jz short loc_145C9 + mov al, 80h + sub al, [bp+var_1] + mov [bp+var_1], al + +loc_145C9: + push ds + push offset word_266FC + push ds + push offset word_266FE + push word ptr [bp+var_1] + push 20h ; ' ' + call sub_13117 + inc byte_2559A + mov byte_26704, 1 + mov word_2A8D0, 8 + +loc_145EA: + cmp word ptr dword_266F4+2, 1700h + jge short loc_14601 + cmp word ptr dword_266F4, 0 + jle short loc_14601 + cmp word ptr dword_266F4, 1800h + jl short loc_14606 + +loc_14601: + mov byte_26705, 3 + +loc_14606: + push large 1800180h + push 4 + call sub_1E618 + mov si, ax + or si, si + jz short loc_1468D + sub word_26702, si + cmp word_26702, 0 + jle short loc_14629 + mov byte_26708, 1 + jmp short loc_1468D +; --------------------------------------------------------------------------- + +loc_14629: + mov byte_26708, 1 + mov ax, word ptr dword_266F4+2 + add ax, 0FF00h + push ax + call sub_13D10 + mov si, ax + mov byte_2CFF9, 1 + mov al, byte_2559A + mov ah, 0 + mov dx, 14h + sub dx, ax + push dx + call sub_19F6E + mov byte_26705, 0FEh + mov byte_26704, 4 + mov word_26706, 0 + mov word_266FC, 0 + push word ptr dword_266F4 + push word ptr dword_266F4+2 + push large 600030h + call sub_13E8C + push 0Ch + call sub_138B2 + push word ptr dword_266F4 + push word ptr dword_266F4+2 + push 5 + call sub_1DA38 + jmp short loc_1468D +; --------------------------------------------------------------------------- + +loc_1468A: + call sub_1A047 + +loc_1468D: + push word_26702 + push 352h + call sub_19F16 + pop si + leave + retf +sub_1448B endp + +; --------------------------------------------------------------------------- + db 0 +word_1469B dw 0, 1, 2, 3 + dw 0FFh ; value table for switch statement + dw offset loc_1453A ; jump table for switch statement + dw offset loc_14540 + dw offset loc_14546 + dw offset loc_1454C + dw offset loc_14552 ; =============== S U B R O U T I N E ======================================= @@ -3689,8 +3881,6 @@ loc_15A8A: mov al, es:[di+1] mov [si+1Eh], al mov al, es:[di+2] - -loc_15A95: mov ah, 0 ; jumptable 0001C46F case 60 mov [si+1Ch], ax @@ -10239,7 +10429,7 @@ sub_1905A endp sub_1915D proc far -; FUNCTION CHUNK AT 5B14 SIZE 00000005 BYTES +var_2 = word ptr -2 enter 2, 0 push si @@ -10250,14 +10440,9 @@ sub_1915D proc far cmp bx, 6 ja loc_195A4 add bx, bx - jmp word ptr cs:[bx+5B46h] -sub_1915D endp + jmp cs:off_195D6[bx] - -; =============== S U B R O U T I N E ======================================= - - -sub_19178 proc far +loc_19178: cmp word_2671A, 0 jnz short loc_191DC mov word_26716, 12C0h @@ -10321,15 +10506,13 @@ loc_19226: jnz short loc_19235 push 8 call sub_138B2 -sub_19178 endp ; sp-analysis failed - -; START OF FUNCTION CHUNK FOR sub_1CD6E loc_19235: call sub_1E67C jmp loc_195A9 -; END OF FUNCTION CHUNK FOR sub_1CD6E ; --------------------------------------------------------------------------- + +loc_1923B: call sub_1E67C cmp word_2671A, 20h ; ' ' jl loc_195A9 @@ -10341,6 +10524,8 @@ loc_19235: call sub_138B2 jmp loc_195A9 ; --------------------------------------------------------------------------- + +loc_19264: mov al, byte_2671D mov ah, 0 mov bx, ax @@ -10427,6 +10612,8 @@ loc_19317: mov byte_2CFF8, 40h jmp loc_195A9 ; --------------------------------------------------------------------------- + +loc_19328: call sub_18A79 mov al, byte_2671D mov ah, 0 @@ -10461,6 +10648,8 @@ loc_19369: push large 20226h jmp loc_1942B ; --------------------------------------------------------------------------- + +loc_19372: mov al, byte_2671D mov ah, 0 mov bx, ax @@ -10548,6 +10737,8 @@ loc_1942B: call sub_1E6F3 jmp loc_195A9 ; --------------------------------------------------------------------------- + +loc_19431: call sub_18A79 mov al, byte_2671D mov ah, 0 @@ -10635,6 +10826,8 @@ loc_19500: mov word_2671A, 0 jmp loc_195A9 ; --------------------------------------------------------------------------- + +loc_19509: call sub_18A79 cmp word ptr dword_2670A, 0BF0h jge short loc_1951C @@ -10691,14 +10884,11 @@ loc_19581: mov byte_259A2, 0FFh jmp short loc_195A9 ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1915D loc_195A4: call sub_1E743 jmp short loc_195BF -; END OF FUNCTION CHUNK FOR sub_1915D ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1CD6E loc_195A9: mov ax, word ptr dword_2670A @@ -10714,7 +10904,8 @@ loc_195BF: pop si leave retf -; END OF FUNCTION CHUNK FOR sub_1CD6E +sub_1915D endp + ; --------------------------------------------------------------------------- db 0 off_195C4 dw offset loc_19387 @@ -10726,8 +10917,13 @@ off_195CC dw offset loc_19279 dw offset loc_19301 dw offset loc_19306 dw offset loc_19306 - db 0E8h, 56h, 0ABh, 57h, 0D4h, 57h, 98h, 58h, 0E2h, 58h - db 0A1h, 59h, 79h, 5Ah +off_195D6 dw offset loc_19178 + dw offset loc_1923B + dw offset loc_19264 + dw offset loc_19328 + dw offset loc_19372 + dw offset loc_19431 + dw offset loc_19509 ; =============== S U B R O U T I N E ======================================= @@ -14523,17 +14719,36 @@ loc_1B43E: retn 4 sub_1B42F endp -; --------------------------------------------------------------------------- - db 0C8h, 6, 2 dup(0), 0A0h, 0D9h, 53h, 0B4h, 0, 8Bh, 0D8h - db 83h, 0FBh, 11h, 0Fh, 87h, 55h, 4, 3, 0DBh, 2Eh, 0FFh - db 0A7h, 0A8h, 7Eh, 83h, 3Eh, 0DAh, 53h, 0, 75h, 1Ch, 0C7h - db 6, 48h, 46h - dw seg seg001 -; --------------------------------------------------------------------------- - mov word ptr dword_25986, 11C0h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B47E proc far + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + mov al, byte_26719 + mov ah, 0 + mov bx, ax + cmp bx, 11h + ja loc_1B8E5 + add bx, bx + jmp cs:off_1B938[bx] + +loc_1B497: + cmp word_2671A, 0 + jnz short loc_1B4BA + mov word ptr dword_25986+2, seg seg001 + mov word ptr dword_25986, offset nullsub_2 mov word_26700, 0 mov byte_25A08, 0 mov byte_25A1B, 0 + +loc_1B4BA: call sub_1E67C cmp word_2671A, 80h jle loc_1B8EA @@ -14546,6 +14761,8 @@ sub_1B42F endp mov byte_2CDCA, 0Fh jmp loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B4EB: call sub_1E67C cmp word_2671A, 40h jl loc_1B8EA @@ -14563,15 +14780,17 @@ sub_1B42F endp mov byte_25A07, al jmp loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B533: mov al, byte_2671D mov ah, 0 - mov [bp-2], ax - mov cx, 4 ; switch 4 cases - mov bx, offset word_1B928 + mov [bp+var_2], ax + mov cx, 4 + mov bx, 7E98h loc_1B541: mov ax, cs:[bx] - cmp ax, [bp-2] + cmp ax, [bp+var_2] jz short loc_1B550 add bx, 2 loop loc_1B541 @@ -14624,6 +14843,8 @@ loc_1B59A: call sub_1B42F jmp loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B5A6: inc word_2671A push large 0C000500h call sub_1A439 @@ -14634,6 +14855,8 @@ loc_1B59A: mov byte_2671F, 0 jmp loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B5CB: mov al, byte_2671D mov ah, 0 or ax, ax @@ -14679,6 +14902,8 @@ loc_1B623: mov byte_25A08, 1 jmp loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B634: inc word_2671A cmp byte_25A06, 0 jz short loc_1B645 @@ -14691,6 +14916,8 @@ loc_1B645: mov word_2671A, 0 jmp loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B652: call sub_1ADDB inc word_2671A call sub_1A4A8 @@ -14710,6 +14937,8 @@ loc_1B681: mov word_25A0A, 0 jmp loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B694: call sub_1E64E call sub_1A503 or al, al @@ -14724,15 +14953,17 @@ loc_1B681: mov byte_25A02, 0FFh jmp loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B6CC: mov al, byte_2671D mov ah, 0 - mov [bp-4], ax - mov cx, 4 ; switch 4 cases - mov bx, offset word_1B918 + mov [bp+var_4], ax + mov cx, 4 + mov bx, 7E88h loc_1B6DA: mov ax, cs:[bx] - cmp ax, [bp-4] + cmp ax, [bp+var_4] jz short loc_1B6E9 add bx, 2 loop loc_1B6DA @@ -14825,12 +15056,9 @@ loc_1B787: inc word_2671A jmp loc_1B8EA ; --------------------------------------------------------------------------- - db 0E8h, 0EBh -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1CCB8 -loc_1B790: - db 2Eh ; jumptable 0001CCD9 case 47109 +loc_1B78E: + call sub_1E67C call sub_1A503 or al, al jz loc_1B8EA @@ -14842,17 +15070,18 @@ loc_1B790: mov byte_25A06, 2 mov byte_25A1B, 1 jmp loc_1B8EA -; END OF FUNCTION CHUNK FOR sub_1CCB8 ; --------------------------------------------------------------------------- + +loc_1B7C1: mov al, byte_2671D mov ah, 0 - mov [bp-6], ax - mov cx, 4 ; switch 4 cases - mov bx, offset word_1B908 + mov [bp+var_6], ax + mov cx, 4 + mov bx, 7E78h loc_1B7CF: mov ax, cs:[bx] - cmp ax, [bp-6] + cmp ax, [bp+var_6] jz short loc_1B7DE add bx, 2 loop loc_1B7CF @@ -14902,6 +15131,8 @@ loc_1B81C: mov byte_26718, 92h jmp loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B82D: call sub_1E64E cmp word_2671A, 80h jl loc_1B8EA @@ -14910,6 +15141,8 @@ loc_1B81C: mov byte_266ED, 0 jmp loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B84B: call sub_1B282 call sub_1E64E or al, al @@ -14937,6 +15170,8 @@ loc_1B87C: mov byte_266D3, 1 jmp short loc_1B8EA ; --------------------------------------------------------------------------- + +loc_1B894: inc word_2671A cmp word_2671A, 10h jnz short loc_1B8A4 @@ -14964,13 +15199,13 @@ loc_1B8C7: mov byte_266D3, 1 mov byte_259A2, 0FFh jmp short loc_1B8EA -; END OF FUNCTION CHUNK FOR sub_1CD6E ; --------------------------------------------------------------------------- + +loc_1B8E5: call sub_1E743 leave retf ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1CCB8 loc_1B8EA: mov ax, word ptr dword_2670A @@ -14984,30 +15219,42 @@ loc_1B8EA: call sub_19F16 leave retf -; END OF FUNCTION CHUNK FOR sub_1CCB8 +sub_1B47E endp + ; --------------------------------------------------------------------------- -word_1B908 dw 0, 1, 2, 0FFh - ; value table for switch statement + dw 0, 1, 2, 0FFh ; value table for switch statement dw offset loc_1B7E2 ; jump table for switch statement dw offset loc_1B7E7 dw offset loc_1B7EC dw offset loc_1B7F1 -word_1B918 dw 0, 1, 2, 0FFh - ; value table for switch statement + dw 0, 1, 2, 0FFh ; value table for switch statement dw offset loc_1B6ED ; jump table for switch statement dw offset loc_1B6F2 dw offset loc_1B6F7 dw offset loc_1B6FC -word_1B928 dw 0, 1, 2, 0FFh - ; value table for switch statement + dw 0, 1, 2, 0FFh ; value table for switch statement dw offset loc_1B554 ; jump table for switch statement dw offset loc_1B559 dw offset loc_1B55E dw offset loc_1B563 - db 7, 7Ah, 5Bh, 7Ah, 0A3h, 7Ah, 16h, 7Bh, 3Bh, 7Bh, 0A4h - db 7Bh, 0C2h, 7Bh, 4, 7Ch, 3Ch, 7Ch, 0A4h, 7Bh, 0C2h, 7Bh - db 4, 7Ch, 3Ch, 7Ch, 0FEh, 7Ch, 31h, 7Dh, 9Dh, 7Dh, 0BBh - db 7Dh, 4, 7Eh +off_1B938 dw offset loc_1B497 + dw offset loc_1B4EB + dw offset loc_1B533 + dw offset loc_1B5A6 + dw offset loc_1B5CB + dw offset loc_1B634 + dw offset loc_1B652 + dw offset loc_1B694 + dw offset loc_1B6CC + dw offset loc_1B634 + dw offset loc_1B652 + dw offset loc_1B694 + dw offset loc_1B6CC + dw offset loc_1B78E + dw offset loc_1B7C1 + dw offset loc_1B82D + dw offset loc_1B84B + dw offset loc_1B894 ; =============== S U B R O U T I N E ======================================= @@ -15030,8 +15277,10 @@ loc_1B96C: cmp bx, 7 ja loc_1BBA8 add bx, bx - jmp word ptr cs:[bx-7E64h] + jmp cs:off_1BC2C[bx] ; --------------------------------------------------------------------------- + +loc_1B982: cmp word_25A34, 40h jnb short loc_1B99B test byte ptr word_25A34, 7 @@ -15067,6 +15316,8 @@ loc_1B9CE: jb loc_1BBA4 mov byte_26718, 8Dh mov byte_25A26, 2 + +loc_1B9E1: cmp word_25A34, 50h ; 'P' jnb short loc_1BA49 mov ax, word ptr dword_2598E+2 @@ -15143,6 +15394,8 @@ loc_1BA80: mov byte_25A26, 6 jmp loc_1BBA4 ; --------------------------------------------------------------------------- + +loc_1BA92: mov al, byte ptr word_25A36+1 add al, 0FCh mov byte ptr word_25A36+1, al @@ -15152,6 +15405,8 @@ loc_1BA80: ja loc_1BBA8 jmp short loc_1BB0C ; --------------------------------------------------------------------------- + +loc_1BAAC: mov al, byte ptr word_25A36+1 add al, 0FCh mov byte ptr word_25A36+1, al @@ -15172,6 +15427,8 @@ loc_1BACF: ja loc_1BBA8 jmp short loc_1BB0C ; --------------------------------------------------------------------------- + +loc_1BADA: mov al, byte ptr word_25A36+1 add al, 0FCh mov byte ptr word_25A36+1, al @@ -15181,6 +15438,8 @@ loc_1BACF: ja loc_1BBA8 jmp short loc_1BB0C ; --------------------------------------------------------------------------- + +loc_1BAF4: mov al, byte ptr word_25A36+1 add al, 0FCh mov byte ptr word_25A36+1, al @@ -15193,6 +15452,8 @@ loc_1BB0C: mov byte_25A26, 7 jmp loc_1BBA8 ; --------------------------------------------------------------------------- + +loc_1BB14: mov ax, word ptr dword_2670A+2 sub ax, word_25A2A push ax @@ -15225,6 +15486,8 @@ loc_1BB0C: mov word_25A34, 0 jmp short loc_1BBA8 ; --------------------------------------------------------------------------- + +loc_1BB76: cmp word_25A34, 20h ; ' ' jnb short loc_1BB93 test byte ptr word_25A34, 7 @@ -15293,8 +15556,14 @@ locret_1BC2A: sub_1B95C endp ; --------------------------------------------------------------------------- - db 0F2h, 7Eh, 51h, 7Fh, 2, 80h, 1Ch, 80h, 4Ah, 80h, 64h - db 80h, 84h, 80h, 0E6h, 80h +off_1BC2C dw offset loc_1B982 + dw offset loc_1B9E1 + dw offset loc_1BA92 + dw offset loc_1BAAC + dw offset loc_1BADA + dw offset loc_1BAF4 + dw offset loc_1BB14 + dw offset loc_1BB76 ; =============== S U B R O U T I N E ======================================= @@ -15487,7 +15756,7 @@ loc_1BDC3: mov ax, word_2671A mov [bp+var_2], ax mov cx, 4 ; switch 4 cases - mov bx, offset byte_1BE33 + mov bx, offset word_1BE33 loc_1BDCF: mov ax, cs:[bx] @@ -15501,6 +15770,8 @@ loc_1BDCF: loc_1BDDE: jmp word ptr cs:[bx+8] ; switch jump ; --------------------------------------------------------------------------- + +loc_1BDE2: mov ax, word ptr dword_2670A mov word ptr dword_2A8C6, ax mov ax, word ptr dword_2670A+2 @@ -15516,13 +15787,19 @@ loc_1BDFF: call sub_13B21 jmp short loc_1BE2E ; default ; --------------------------------------------------------------------------- + +loc_1BE11: push word ptr dword_2670A push word ptr dword_2670A+2 call sub_C696 mov byte_25592, 0Fh + +loc_1BE23: mov byte_2A8D2, 7 jmp short loc_1BDFF ; --------------------------------------------------------------------------- + +loc_1BE2A: mov al, 2 leave retn @@ -15536,8 +15813,14 @@ sub_1BDB4 endp ; --------------------------------------------------------------------------- db 0 -byte_1BE33 db 1, 0, 8, 0, 10h, 0, 20h, 0, 52h, 83h, 93h, 83h, 81h - db 83h, 9Ah, 83h +word_1BE33 dw 1 + dw 8 + dw 10h + dw 20h + dw offset loc_1BDE2 + dw offset loc_1BE23 + dw offset loc_1BE11 + dw offset loc_1BE2A ; =============== S U B R O U T I N E ======================================= @@ -16081,8 +16364,6 @@ sub_1C2E5 proc far var_2 = word ptr -2 -; FUNCTION CHUNK AT 8BEA SIZE 00000018 BYTES - enter 2, 0 call sub_1B95C mov al, byte_26719 @@ -16091,8 +16372,9 @@ var_2 = word ptr -2 cmp bx, 4 ja loc_1C675 add bx, bx - jmp word ptr cs:[bx-73CCh] -; --------------------------------------------------------------------------- + jmp cs:off_1C6C4[bx] + +loc_1C301: mov byte_25A27, 0 mov byte_25A26, 0 inc byte_26719 @@ -16103,6 +16385,8 @@ var_2 = word ptr -2 mov word_26720, 1770h jmp loc_1C67A ; --------------------------------------------------------------------------- + +loc_1C32D: push 53CAh call sub_13D32 mov al, byte_2671D @@ -16172,6 +16456,8 @@ loc_1C39E: mov byte_2CDCA, 0 jmp loc_1C67A ; --------------------------------------------------------------------------- + +loc_1C3D4: push 53CAh call sub_13D32 cmp word ptr dword_2670A, 0C00h @@ -16206,6 +16492,8 @@ loc_1C400: mov byte_25A24, 0 jmp loc_1C67A ; --------------------------------------------------------------------------- + +loc_1C445: mov ax, word ptr dword_2670A mov word ptr dword_266E4, ax mov ax, word ptr dword_2670A+2 @@ -16214,7 +16502,7 @@ loc_1C400: mov ah, 0 mov [bp+var_2], ax mov cx, 0Ah ; switch 10 cases - mov bx, offset unk_1C69C + mov bx, offset word_1C69C loc_1C45F: mov ax, cs:[bx] @@ -16228,33 +16516,53 @@ loc_1C45F: loc_1C46F: jmp word ptr cs:[bx+14h] ; switch jump ; --------------------------------------------------------------------------- + +loc_1C473: call sub_1BD4B jmp loc_1C585 ; default ; --------------------------------------------------------------------------- + +loc_1C479: call sub_1BE78 jmp loc_1C585 ; default ; --------------------------------------------------------------------------- + +loc_1C47F: call sub_1BF52 jmp loc_1C585 ; default ; --------------------------------------------------------------------------- + +loc_1C485: call sub_1BFAB jmp loc_1C585 ; default ; --------------------------------------------------------------------------- + +loc_1C48B: call sub_1C044 jmp loc_1C585 ; default ; --------------------------------------------------------------------------- + +loc_1C491: call sub_1C0BF jmp loc_1C585 ; default ; --------------------------------------------------------------------------- + +loc_1C497: call sub_1C164 jmp loc_1C585 ; default ; --------------------------------------------------------------------------- + +loc_1C49D: call sub_1C1CF jmp loc_1C585 ; default ; --------------------------------------------------------------------------- + +loc_1C4A3: call sub_1C251 jmp loc_1C585 ; default ; --------------------------------------------------------------------------- + +loc_1C4A9: cmp word_2671A, 20h ; ' ' jge short loc_1C4BA call sub_1BC73 @@ -16270,8 +16578,9 @@ loc_1C4BA: cmp bx, 4 ja loc_1C57F add bx, bx - jmp word ptr cs:[bx-73FEh] -; --------------------------------------------------------------------------- + jmp cs:off_1C692[bx] + +loc_1C4D3: mov al, byte_2671F mov ah, 0 mov bx, 2 @@ -16296,6 +16605,8 @@ loc_1C4EB: mov word_26716, dx jmp short loc_1C57F ; --------------------------------------------------------------------------- + +loc_1C511: mov al, byte_2671F mov ah, 0 mov bx, 4 @@ -16306,6 +16617,8 @@ loc_1C4EB: jb short loc_1C57F jmp short loc_1C4EB ; --------------------------------------------------------------------------- + +loc_1C529: mov al, byte_2671F mov ah, 0 mov bx, 4 @@ -16317,6 +16630,8 @@ loc_1C4EB: jb short loc_1C57F jmp short loc_1C4EB ; --------------------------------------------------------------------------- + +loc_1C544: mov al, byte_2671F mov ah, 0 mov bx, 4 @@ -16328,6 +16643,8 @@ loc_1C4EB: jb short loc_1C57F jmp short loc_1C4EB ; --------------------------------------------------------------------------- + +loc_1C55F: mov al, byte_2671F mov ah, 0 mov bx, 4 @@ -16402,6 +16719,8 @@ loc_1C600: inc byte_25A24 jmp short loc_1C67A ; --------------------------------------------------------------------------- + +loc_1C61F: inc word_2671A cmp word_2671A, 10h jnz short loc_1C62F @@ -16436,10 +16755,7 @@ loc_1C675: call sub_1E743 leave retf -sub_1C2E5 endp - ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1C2E5 loc_1C67A: mov ax, word ptr dword_2670A @@ -16451,68 +16767,39 @@ loc_1C67A: call sub_19F16 leave retf -; END OF FUNCTION CHUNK FOR sub_1C2E5 +sub_1C2E5 endp ; --------------------------------------------------------------------------- - db 43h ; C - db 8Ah - db 81h - db 8Ah - db 99h - db 8Ah - db 0B4h - db 8Ah - db 0CFh - db 8Ah -unk_1C69C db 0 - db 0 - db 1 - db 0 - db 2 - db 0 - db 3 - db 0 - db 4 - db 0 - db 5 - db 0 - db 6 - db 0 - db 7 - db 0 - db 8 - db 0 - db 0FFh - db 0 - db 0E3h - db 89h - db 0E9h - db 89h - db 0EFh - db 89h - db 0F5h - db 89h - db 0FBh - db 89h - db 1 - db 8Ah - db 7 - db 8Ah - db 0Dh - db 8Ah - db 13h - db 8Ah - db 19h - db 8Ah - db 71h ; q - db 88h - db 9Dh - db 88h - db 44h ; D - db 89h - db 0B5h - db 89h - db 8Fh - db 8Bh ; 窶ケ + +off_1C692 dw offset loc_1C4D3 + dw offset loc_1C511 + dw offset loc_1C529 + dw offset loc_1C544 + dw offset loc_1C55F +word_1C69C dw 0 + dw 1 + dw 2 + dw 3 + dw 4 + dw 5 + dw 6 + dw 7 + dw 8 + dw 0FFh + dw offset loc_1C473 + dw offset loc_1C479 + dw offset loc_1C47F + dw offset loc_1C485 + dw offset loc_1C48B + dw offset loc_1C491 + dw offset loc_1C497 + dw offset loc_1C49D + dw offset loc_1C4A3 + dw offset loc_1C4A9 +off_1C6C4 dw offset loc_1C301 + dw offset loc_1C32D + dw offset loc_1C3D4 + dw offset loc_1C445 + dw offset loc_1C61F ; =============== S U B R O U T I N E ======================================= @@ -17288,28 +17575,16 @@ off_1CC8C dw offset loc_1CC7C ; Attributes: bp-based frame -sub_1CCB8 proc far +sub_1CCB8 proc near var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_4 = word ptr 0Ah - -; FUNCTION CHUNK AT 0EFF SIZE 00000014 BYTES -; FUNCTION CHUNK AT 0F99 SIZE 00000008 BYTES -; FUNCTION CHUNK AT 0FD5 SIZE 00000006 BYTES -; FUNCTION CHUNK AT 0FF7 SIZE 00000002 BYTES -; FUNCTION CHUNK AT 3F18 SIZE 00000014 BYTES -; FUNCTION CHUNK AT 427E SIZE 000000AF BYTES -; FUNCTION CHUNK AT 433B SIZE 00000006 BYTES -; FUNCTION CHUNK AT 7D00 SIZE 00000031 BYTES -; FUNCTION CHUNK AT 7E5A SIZE 0000001E BYTES enter 2, 0 mov al, byte_266EC mov ah, 0 mov [bp+var_2], ax - mov cx, 0Ah ; switch 10 cases - mov bx, offset byte_1CD46 + mov cx, 0Ah + mov bx, offset word_1CD46 loc_1CCCA: mov ax, cs:[bx] @@ -17323,9 +17598,13 @@ loc_1CCCA: loc_1CCD9: jmp word ptr cs:[bx+14h] ; switch jump ; --------------------------------------------------------------------------- + +loc_1CCDD: mov byte_266EC, 30h ; '0' jmp short loc_1CCE9 ; --------------------------------------------------------------------------- + +loc_1CCE4: mov byte_266EC, 2Fh ; '/' loc_1CCE9: @@ -17334,6 +17613,8 @@ loc_1CCE9: leave retn ; --------------------------------------------------------------------------- + +loc_1CCF5: mov al, byte_266F0 mov ah, 0 cwd @@ -17344,10 +17625,14 @@ loc_1CCE9: leave retn ; --------------------------------------------------------------------------- + +loc_1CD08: mov al, byte_266EF add al, 2 jmp short loc_1CD40 ; --------------------------------------------------------------------------- + +loc_1CD0F: mov al, byte_266EF mov ah, 0 imul ax, 3 @@ -17363,6 +17648,8 @@ loc_1CCE9: leave retn ; --------------------------------------------------------------------------- + +loc_1CD32: mov al, byte_266EF mov ah, 0 cwd @@ -17376,35 +17663,45 @@ loc_1CD40: locret_1CD43: leave ; default retn -sub_1CCB8 endp ; sp-analysis failed +sub_1CCB8 endp ; --------------------------------------------------------------------------- db 0 -byte_1CD46 db 2 dup(0), 1, 0, 1Bh, 0, 1Ch, 0, 26h, 0, 2Ch, 0, 2Dh - db 0, 2Eh, 0, 2Fh, 0, 30h, 0, 54h, 92h, 4Dh, 92h, 0A2h - db 92h, 0A2h, 92h, 7Fh, 92h, 7Fh, 92h, 78h, 92h, 78h, 92h - db 65h, 92h, 65h, 92h +word_1CD46 dw 0 + dw 1 + dw 1Bh + dw 1Ch + dw 26h + dw 2Ch + dw 2Dh + dw 2Eh + dw 2Fh + dw 30h + dw offset loc_1CCE4 + dw offset loc_1CCDD + dw offset loc_1CD32 + dw offset loc_1CD32 + dw offset loc_1CD0F + dw offset loc_1CD0F + dw offset loc_1CD08 + dw offset loc_1CD08 + dw offset loc_1CCF5 + dw offset loc_1CCF5 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame -sub_1CD6E proc far +sub_1CD6E proc near var_2 = word ptr -2 -arg_24 = dword ptr 28h - -; FUNCTION CHUNK AT 53B6 SIZE 000000A1 BYTES -; FUNCTION CHUNK AT 57A5 SIZE 00000006 BYTES -; FUNCTION CHUNK AT 5B19 SIZE 0000001A BYTES -; FUNCTION CHUNK AT 7E00 SIZE 00000055 BYTES enter 2, 0 mov al, byte_266EC mov ah, 0 mov [bp+var_2], ax - mov cx, 0Ah ; switch 10 cases - mov bx, offset byte_1CDEA + mov cx, 0Ah + mov bx, offset word_1CDEA loc_1CD80: mov ax, cs:[bx] @@ -17418,9 +17715,13 @@ loc_1CD80: loc_1CD8F: jmp word ptr cs:[bx+14h] ; switch jump ; --------------------------------------------------------------------------- + +loc_1CD93: mov byte_266EC, 2Eh ; '.' jmp short loc_1CD9F ; --------------------------------------------------------------------------- + +loc_1CD9A: mov byte_266EC, 2Dh ; '-' loc_1CD9F: @@ -17429,6 +17730,8 @@ loc_1CD9F: leave retn ; --------------------------------------------------------------------------- + +loc_1CDAB: mov al, byte_266F0 mov ah, 0 cwd @@ -17440,10 +17743,14 @@ loc_1CD9F: leave retn ; --------------------------------------------------------------------------- + +loc_1CDC2: mov al, byte_266EF add al, 4 jmp short loc_1CDE4 ; --------------------------------------------------------------------------- + +loc_1CDC9: mov al, byte_266EF add al, al mov byte_266EF, al @@ -17453,6 +17760,8 @@ loc_1CD9F: leave retn ; --------------------------------------------------------------------------- + +loc_1CDDF: mov al, byte_266EF add al, al @@ -17462,14 +17771,30 @@ loc_1CDE4: locret_1CDE7: leave ; default retn -sub_1CD6E endp ; sp-analysis failed +sub_1CD6E endp ; --------------------------------------------------------------------------- db 0 -byte_1CDEA db 2 dup(0), 1, 0, 1Bh, 0, 1Ch, 0, 26h, 0, 2Ch, 0, 2Dh - db 0, 2Eh, 0, 2Fh, 0, 30h, 0, 0Ah, 93h, 3, 93h, 4Fh, 93h - db 4Fh, 93h, 39h, 93h, 39h, 93h, 32h, 93h, 32h, 93h, 1Bh - db 93h, 1Bh, 93h +word_1CDEA dw 0 + dw 1 + dw 1Bh + dw 1Ch + dw 26h + dw 2Ch + dw 2Dh + dw 2Eh + dw 2Fh + dw 30h + dw offset loc_1CD9A + dw offset loc_1CD93 + dw offset loc_1CDDF + dw offset loc_1CDDF + dw offset loc_1CDC9 + dw offset loc_1CDC9 + dw offset loc_1CDC2 + dw offset loc_1CDC2 + dw offset loc_1CDAB + dw offset loc_1CDAB ; =============== S U B R O U T I N E ======================================= @@ -18211,14 +18536,10 @@ loc_1D33C: push word_2D008 call sub_1D218 mov ah, 0 - -loc_1D38E: add [si+18h], ax loc_1D391: mov eax, dword_266E8 - -loc_1D395: mov [si+0Ah], eax mov al, byte ptr word_2D008 mov [si+11h], al @@ -20694,14 +21015,11 @@ sub_1EA4B proc near var_2 = word ptr -2 -; FUNCTION CHUNK AT 878B SIZE 00000009 BYTES -; FUNCTION CHUNK AT B443 SIZE 000000B4 BYTES - enter 2, 0 mov ax, word_2671A mov [bp+var_2], ax - mov cx, 0Ah ; switch 10 cases - mov bx, (offset byte_1EB08+1) + mov cx, 0Ah + mov bx, offset word_1EB09 loc_1EA5B: mov ax, cs:[bx] @@ -20715,6 +21033,8 @@ loc_1EA5B: loc_1EA6B: jmp word ptr cs:[bx+14h] ; switch jump ; --------------------------------------------------------------------------- + +loc_1EA6F: mov ax, word ptr dword_2670A add ax, 40h mov word ptr dword_2A8C6, ax @@ -20731,31 +21051,49 @@ loc_1EA6B: mov byte_25592, 0Fh jmp short loc_1EAF9 ; default ; --------------------------------------------------------------------------- + +loc_1EAA8: mov byte_2A8D2, 8 + +loc_1EAAD: call sub_13B21 jmp short loc_1EAF9 ; default ; --------------------------------------------------------------------------- + +loc_1EAB2: mov byte_26718, 82h jmp short loc_1EAF9 ; default ; --------------------------------------------------------------------------- + +loc_1EAB9: mov byte_26718, 83h jmp short loc_1EAF9 ; default ; --------------------------------------------------------------------------- + +loc_1EAC0: mov byte_26718, 84h push word ptr dword_2A8C6 push word ptr dword_2A8C6+2 call sub_C696 jmp short loc_1EAF9 ; default ; --------------------------------------------------------------------------- + +loc_1EAD4: mov byte_26718, 85h jmp short loc_1EAF9 ; default ; --------------------------------------------------------------------------- + +loc_1EADB: mov byte_26718, 86h jmp short loc_1EAF9 ; default ; --------------------------------------------------------------------------- + +loc_1EAE2: mov byte_26718, 87h jmp short loc_1EAF9 ; default ; --------------------------------------------------------------------------- + +loc_1EAE9: mov byte_26718, 81h push 3 call sub_138B2 @@ -20776,13 +21114,30 @@ loc_1EB04: mov al, 1 leave retn -sub_1EA4B endp ; sp-analysis failed +sub_1EA4B endp ; --------------------------------------------------------------------------- -byte_1EB08 db 0, 0Eh, 0, 10h, 0, 12h, 0, 16h, 0, 1Ah, 0, 1Eh, 0, 22h - db 0, 26h, 0, 2Ah, 0, 2Eh, 0, 0DFh, 0AFh, 18h, 0B0h, 1Dh - db 0B0h, 22h, 0B0h, 29h, 0B0h, 30h, 0B0h, 44h, 0B0h, 4Bh - db 0B0h, 52h, 0B0h, 59h, 0B0h + db 0 +word_1EB09 dw 0Eh + dw 10h + dw 12h + dw 16h + dw 1Ah + dw 1Eh + dw 22h + dw 26h + dw 2Ah + dw 2Eh + dw offset loc_1EA6F + dw offset loc_1EAA8 + dw offset loc_1EAAD + dw offset loc_1EAB2 + dw offset loc_1EAB9 + dw offset loc_1EAC0 + dw offset loc_1EAD4 + dw offset loc_1EADB + dw offset loc_1EAE2 + dw offset loc_1EAE9 ; =============== S U B R O U T I N E ======================================= @@ -21765,8 +22120,6 @@ sub_1F3AB proc far var_2 = word ptr -2 -; FUNCTION CHUNK AT BE15 SIZE 0000001B BYTES - enter 2, 0 mov ax, word ptr dword_2670A add ax, 40h @@ -21780,8 +22133,9 @@ var_2 = word ptr -2 cmp bx, 0Ch ja loc_1F8A0 add bx, bx - jmp word ptr cs:[bx-41BCh] -; --------------------------------------------------------------------------- + jmp cs:off_1F8D4[bx] + +loc_1F3D6: cmp word_2671A, 0 jnz short loc_1F3E2 mov byte_2D03C, 0 @@ -21802,6 +22156,8 @@ loc_1F3E2: mov byte_2CDCA, 0Fh jmp loc_1F8A5 ; --------------------------------------------------------------------------- + +loc_1F421: call sub_1F378 inc word_2671A call sub_1E67C @@ -21813,6 +22169,8 @@ loc_1F3E2: call sub_1E6F3 jmp loc_1F8A5 ; --------------------------------------------------------------------------- + +loc_1F44D: mov al, byte_2671D mov ah, 0 or ax, ax @@ -21851,6 +22209,8 @@ loc_1F487: push large 189Ch jmp loc_1F621 ; --------------------------------------------------------------------------- + +loc_1F490: cmp word ptr dword_2670A, 0C00h jge short loc_1F4A0 mov word_26712, 20h ; ' ' @@ -21901,11 +22261,13 @@ loc_1F4DC: mov byte_2D028, 0 jmp loc_1F8A5 ; --------------------------------------------------------------------------- + +loc_1F51C: mov al, byte_2671D mov ah, 0 mov [bp+var_2], ax mov cx, 5 ; switch 5 cases - mov bx, offset byte_1F8C0 + mov bx, offset word_1F8C0 loc_1F52A: mov ax, cs:[bx] @@ -21919,12 +22281,18 @@ loc_1F52A: loc_1F539: jmp word ptr cs:[bx+0Ah] ; switch jump ; --------------------------------------------------------------------------- + +loc_1F53D: call sub_1EE21 jmp short loc_1F579 ; default ; --------------------------------------------------------------------------- + +loc_1F542: call sub_1EE73 jmp short loc_1F579 ; default ; --------------------------------------------------------------------------- + +loc_1F547: inc byte_2671F cmp byte_2D028, 2 ja short loc_1F568 @@ -21965,6 +22333,8 @@ loc_1F591: mov word_26712, 0 jmp loc_1F8A5 ; --------------------------------------------------------------------------- + +loc_1F5A3: cmp word ptr dword_2670A+2, 800h jge short loc_1F5B3 mov word_26714, 10h @@ -21990,6 +22360,8 @@ loc_1F5C9: jl loc_1F8A5 jmp loc_1F7E1 ; --------------------------------------------------------------------------- + +loc_1F5E1: mov al, byte_2671D mov ah, 0 or ax, ax @@ -22033,6 +22405,8 @@ loc_1F621: mov byte_2D03C, 0 jmp loc_1F8A5 ; --------------------------------------------------------------------------- + +loc_1F631: cmp word ptr dword_2670A, 0C00h jge short loc_1F641 mov word_26712, 20h ; ' ' @@ -22068,6 +22442,8 @@ loc_1F677: loc_1F67D: push 53CAh + +loc_1F680: call sub_13D32 call sub_1F378 call sub_1E64E @@ -22082,6 +22458,8 @@ loc_1F67D: mov byte_2D03B, 90h jmp loc_1F8A5 ; --------------------------------------------------------------------------- + +loc_1F6B8: mov al, byte_2671D mov ah, 0 or ax, ax @@ -22127,6 +22505,8 @@ loc_1F701: mov byte_2D057, 3 jmp loc_1F8A5 ; --------------------------------------------------------------------------- + +loc_1F718: mov al, byte_2671D mov ah, 0 or ax, ax @@ -22169,6 +22549,8 @@ loc_1F752: mov Palettes, 3Ch ; '<' jmp loc_1F8A5 ; --------------------------------------------------------------------------- + +loc_1F76E: cmp word ptr dword_2670A, 0C00h jge short loc_1F77E mov word_26712, 20h ; ' ' @@ -22195,6 +22577,8 @@ loc_1F794: loc_1F7A4: cmp word ptr dword_2670A+2, 600h jle short loc_1F7B4 + +loc_1F7AC: mov word_26714, 0FFF0h jmp short loc_1F7BA ; --------------------------------------------------------------------------- @@ -22225,6 +22609,8 @@ loc_1F7E1: mov byte_2D057, 4 jmp loc_1F8A5 ; --------------------------------------------------------------------------- + +loc_1F802: mov ax, word ptr dword_2670A mov word ptr dword_266E4, ax mov ax, word ptr dword_2670A+2 @@ -22249,6 +22635,8 @@ loc_1F83D: mov word_2671A, 0 jmp short loc_1F8A5 ; --------------------------------------------------------------------------- + +loc_1F845: inc word_2671A cmp word_2671A, 10h jnz short loc_1F855 @@ -22284,10 +22672,7 @@ loc_1F8A0: call sub_1E743 leave retf -sub_1F3AB endp - ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1F3AB loc_1F8A5: mov ax, word ptr dword_2670A @@ -22300,13 +22685,32 @@ loc_1F8A5: call sub_19F16 leave retf -; END OF FUNCTION CHUNK FOR sub_1F3AB +sub_1F3AB endp + ; --------------------------------------------------------------------------- -byte_1F8C0 db 2 dup(0), 1, 0, 2, 0, 3, 0, 0FFh, 0, 0ADh, 0BAh, 0ADh - db 0BAh, 0ADh, 0BAh, 0B2h, 0BAh, 0B7h, 0BAh, 46h, 0B9h - db 91h, 0B9h, 0BDh, 0B9h, 0, 0BAh, 8Ch, 0BAh, 13h, 0BBh - db 51h, 0BBh, 0A1h, 0BBh, 28h, 0BCh, 88h, 0BCh, 0DEh, 0BCh - db 72h, 0BDh, 0B5h, 0BDh +word_1F8C0 dw 0 + dw 1 + dw 2 + dw 3 + dw 0FFh + dw offset loc_1F53D + dw offset loc_1F53D + dw offset loc_1F53D + dw offset loc_1F542 + dw offset loc_1F547 +off_1F8D4 dw offset loc_1F3D6 + dw offset loc_1F421 + dw offset loc_1F44D + dw offset loc_1F490 + dw offset loc_1F51C + dw offset loc_1F5A3 + dw offset loc_1F5E1 + dw offset loc_1F631 + dw offset loc_1F6B8 + dw offset loc_1F718 + dw offset loc_1F76E + dw offset loc_1F802 + dw offset loc_1F845 ; =============== S U B R O U T I N E ======================================= @@ -22332,13 +22736,11 @@ sub_1F903 proc near var_2 = word ptr -2 -; FUNCTION CHUNK AT 0BFB SIZE 00000007 BYTES - enter 2, 0 mov ax, word_2671A mov [bp+var_2], ax mov cx, 4 ; switch 4 cases - mov bx, offset byte_1F96A + mov bx, offset word_1F96A loc_1F913: mov ax, cs:[bx] @@ -22352,6 +22754,8 @@ loc_1F913: loc_1F922: jmp word ptr cs:[bx+8] ; switch jump ; --------------------------------------------------------------------------- + +loc_1F926: mov word_2A8CE, 1400h mov ax, word ptr dword_2670A+2 add ax, 0FD00h @@ -22367,9 +22771,13 @@ loc_1F949: leave retn ; --------------------------------------------------------------------------- + +loc_1F94E: mov byte_2A8D2, 9 jmp short loc_1F949 ; --------------------------------------------------------------------------- + +loc_1F955: push word ptr dword_2A8C6 push word ptr dword_2A8C6+2 call sub_C696 @@ -22378,12 +22786,18 @@ loc_1F949: locret_1F967: leave ; default retn -sub_1F903 endp ; sp-analysis failed +sub_1F903 endp ; --------------------------------------------------------------------------- db 0 -byte_1F96A db 30h, 0, 32h, 0, 34h, 0, 40h, 0, 96h, 3 dup(0BEh), 0B9h - db 0BEh, 0C5h, 0BEh +word_1F96A dw 30h + dw 32h + dw 34h + dw 40h + dw offset loc_1F926 + dw offset loc_1F94E + dw offset loc_1F949 + dw offset loc_1F955 ; =============== S U B R O U T I N E ======================================= @@ -23674,6 +24088,8 @@ loc_20456: push large 322C4h jmp loc_205AA ; --------------------------------------------------------------------------- + +loc_2045F: mov al, byte_2671D mov ah, 0 or ax, ax @@ -23751,6 +24167,8 @@ loc_204FD: push large 3157Ch jmp loc_205AA ; --------------------------------------------------------------------------- + +loc_20506: mov al, byte_2671D mov ah, 0 or ax, ax @@ -23833,6 +24251,8 @@ loc_205AA: mov word_2D05A, 0C00h jmp loc_206B6 ; --------------------------------------------------------------------------- + +loc_205BB: call sub_20202 call sub_1F9C5 or al, al @@ -23841,6 +24261,8 @@ loc_205AA: mov word_2671A, 20h ; ' ' jmp loc_206B6 ; --------------------------------------------------------------------------- + +loc_205D4: call sub_20050 cmp word_2671A, 5DCh jge short loc_205ED @@ -23858,6 +24280,8 @@ loc_205ED: mov byte_2D02D, 10h jmp loc_206B6 ; --------------------------------------------------------------------------- + +loc_20609: cmp word_2671A, 0BB8h jg short loc_20616 call sub_200B6 @@ -23894,6 +24318,8 @@ loc_20647: mov byte_266D3, 1 jmp short loc_206B6 ; --------------------------------------------------------------------------- + +loc_2065F: inc word_2671A cmp word_2671A, 10h jnz short loc_2066F @@ -23951,6 +24377,12 @@ off_206D8 dw offset loc_202B0 dw offset loc_202E8 dw offset loc_20311 dw offset loc_203B8 + dw offset loc_2045F + dw offset loc_20506 + dw offset loc_205BB + dw offset loc_205D4 + dw offset loc_20609 + dw offset loc_2065F seg003 ends ; --------------------------------------------------------------------------- @@ -23959,11 +24391,8 @@ seg003 ends ; Segment type: Pure code seg004 segment byte public 'CODE' use16 assume cs:seg004 + ;org 0Ch assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing - iret -; --------------------------------------------------------------------------- - db 0C9h, 76h, 0CAh, 2Bh, 0CBh, 44h, 0CBh, 79h, 0CBh, 0CFh - db 0CBh include libs/BorlandC/ctor2[textc].asm include libs/BorlandC/ctor3[textc].asm diff --git a/th04_maine.asm b/th04_maine.asm index 7d5cd64e..2da5fa00 100644 --- a/th04_maine.asm +++ b/th04_maine.asm @@ -2590,7 +2590,7 @@ loc_AEF1: inc ax push ax push 0 - call far ptr loc_D078 + call sub_D078 mov al, byte_124C7 add al, 40h mov byte_124C7, al @@ -2618,7 +2618,7 @@ loc_AEF1: inc ax push ax push 1 - call far ptr loc_D078 + call sub_D078 mov al, byte_124C7 add al, 40h mov byte_124C7, al @@ -2646,7 +2646,7 @@ loc_AEF1: inc ax push ax push 2 - call far ptr loc_D078 + call sub_D078 mov al, byte_124C7 add al, 40h mov byte_124C7, al @@ -2674,7 +2674,7 @@ loc_AEF1: inc ax push ax push 3 - call far ptr loc_D078 + call sub_D078 mov al, byte_124C7 add al, 40h mov byte_124C7, al @@ -2735,7 +2735,7 @@ loc_B04E: inc ax push ax push 0 - call far ptr loc_D078 + call sub_D078 push word ptr [bp+8] push si push _CosTable8+128 @@ -2753,7 +2753,7 @@ loc_B04E: inc ax push ax push 1 - call far ptr loc_D078 + call sub_D078 push word ptr [bp+8] mov ax, si cwd @@ -2779,7 +2779,7 @@ loc_B04E: inc ax push ax push 2 - call far ptr loc_D078 + call sub_D078 push word ptr [bp+8] push si push _CosTable8+384 @@ -2797,7 +2797,7 @@ loc_B04E: inc ax push ax push 3 - call far ptr loc_D078 + call sub_D078 mov dx, 7Ch ; '|' mov al, 0 out dx, al @@ -2855,7 +2855,7 @@ loc_B165: inc ax push ax push 0 - call far ptr loc_D078 + call sub_D078 push word ptr [bp+8] push si push _CosTable8 @@ -2873,7 +2873,7 @@ loc_B165: inc ax push ax push 1 - call far ptr loc_D078 + call sub_D078 push word ptr [bp+8] mov ax, si cwd @@ -2899,7 +2899,7 @@ loc_B165: inc ax push ax push 2 - call far ptr loc_D078 + call sub_D078 push word ptr [bp+8] push si push _CosTable8+256 @@ -2917,7 +2917,7 @@ loc_B165: inc ax push ax push 3 - call far ptr loc_D078 + call sub_D078 mov dx, 7Ch ; '|' mov al, 0 out dx, al @@ -2963,7 +2963,7 @@ arg_8 = word ptr 0Ch add ax, ax add ax, [bp+arg_2] push ax - call far ptr loc_D6F6 + call sub_D6F6 pop si pop bp retn 0Ah @@ -6622,35 +6622,45 @@ sub_D046 endp ; --------------------------------------------------------------------------- db 0 -; --------------------------------------------------------------------------- -loc_D078: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __stdcall __far sub_D078(int, int slot, int, int) +sub_D078 proc far + +arg_0 = word ptr 6 +@@slot = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + push bp mov bp, sp push si push di - mov si, [bp+8] + mov si, [bp+@@slot] shl si, 4 add si, 1B46h - mov cx, [bp+0Ch] + mov cx, [bp+arg_6] mov di, cx sar di, 4 shl di, 1 add di, [si+6] mov ax, [si+8] shl ax, 1 - mov cs:byte_D0DD, al + mov byte ptr cs:loc_D0DC+1, al and cx, 0Fh mov bx, cx shl bx, 1 mov bx, [bx+580h] - mov cs:word_D0E4, bx - mov cs:word_D0F1, bx + mov word ptr cs:loc_D0E3+1, bx + mov word ptr cs:loc_D0F0+1, bx jmp short $+2 shl ax, 1 add ax, 50h ; 'P' mov dx, ax - mov ax, [bp+0Ah] + mov ax, [bp+arg_4] mov bx, ax shl ax, 2 add ax, bx @@ -6660,22 +6670,52 @@ loc_D078: mov ax, [si+0Eh] mov si, [si] mov ds, ax - mov ax, [bp+6] + mov ax, [bp+arg_0] mov bp, dx mul si mov si, ax cld -; --------------------------------------------------------------------------- - db 0B5h -byte_D0DD db 80h - db 0ADh, 0D3h, 0C8h, 8Bh, 0D0h, 25h -word_D0E4 dw 1234h - db 33h, 0D0h, 0ABh, 0FEh, 0CDh, 0ADh, 0D3h, 0C8h, 8Bh - db 0D8h, 25h -word_D0F1 dw 1234h - db 33h, 0D8h, 0Bh, 0C2h, 8Bh, 0D3h, 0ABh, 0FEh, 0CDh, 75h - db 0EDh, 0Bh, 0D2h, 74h, 5, 26h, 89h, 15h, 33h, 0D2h, 2Bh - db 0FDh, 79h, 0D1h, 1Fh, 5Fh, 5Eh, 5Dh, 0CAh, 8, 0 + +loc_D0DC: + mov ch, 80h + lodsw + ror ax, cl + mov dx, ax + +loc_D0E3: + and ax, 1234h + xor dx, ax + stosw + dec ch + +loc_D0EB: + lodsw + ror ax, cl + mov bx, ax + +loc_D0F0: + and ax, 1234h + xor bx, ax + or ax, dx + mov dx, bx + stosw + dec ch + jnz short loc_D0EB + or dx, dx + jz short loc_D107 + mov es:[di], dx + xor dx, dx + +loc_D107: + sub di, bp + jns short loc_D0DC + pop ds + pop di + pop si + pop bp + retf 8 +sub_D078 endp + ; =============== S U B R O U T I N E ======================================= @@ -6846,11 +6886,11 @@ loc_D1FC: loc_D258: mov ax, [bx+5C0h] - mov cs:word_D2BB, ax + mov word ptr cs:loc_D2BA+1, ax mov ax, [bx+5CAh] mov word ptr cs:loc_D30C+1, ax mov ax, word_EB2E - mov cs:word_D2DA, ax + mov word ptr cs:loc_D2D9+1, ax mov word ptr cs:loc_D320+1, ax push ds pop fs @@ -6884,6 +6924,8 @@ loc_D29E: mov al, ah out 0A3h, al nop + +loc_D2AA: mov al, ch or al, 20h out 0A5h, al @@ -6892,14 +6934,24 @@ loc_D29E: mov al, ch out 0A5h, al in al, 0A9h -; --------------------------------------------------------------------------- - db 0E8h -word_D2BB dw 78h - db 8Ah, 0F8h, 0B3h, 0, 0D3h, 0E8h, 0D3h, 0EBh, 86h, 0E0h - db 0ABh, 26h, 88h, 1Dh, 83h, 0C7h, 4Eh, 0FEh, 0C5h, 80h - db 0FDh, 10h, 72h, 0D5h, 81h, 0EFh, 0, 5, 0BAh -word_D2DA dw 1234h -; --------------------------------------------------------------------------- + +loc_D2BA: + call sub_D335 + mov bh, al + mov bl, 0 + shr ax, cl + shr bx, cl + xchg ah, al + stosw + mov es:[di], bl + add di, 4Eh + inc ch + cmp ch, 10h + jb short loc_D2AA + sub di, 500h + +loc_D2D9: + mov dx, 1234h loc_D2DC: xor ch, ch @@ -7009,7 +7061,7 @@ loc_D356: shl si, 4 add si, 1B46h mov ax, [si+0Eh] - mov cs:word_D3CE, ax + mov word ptr cs:loc_D3CD+1, ax jmp short $+2 mov ax, [bp+8] mov bx, ax @@ -7049,10 +7101,9 @@ loc_D3BE: xor al, al out 7Ch, al xor si, si -; --------------------------------------------------------------------------- - db 0B8h -word_D3CE dw 1234h -; --------------------------------------------------------------------------- + +loc_D3CD: + mov ax, 1234h mov ds, ax loc_D3D2: @@ -7464,17 +7515,26 @@ locret_D6F5: retf sub_D6C4 endp -; --------------------------------------------------------------------------- -loc_D6F6: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D6F6 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+0Ch] - mov dx, [bp+0Ah] + mov ax, [bp+arg_6] + mov dx, [bp+arg_4] mov bx, ax sar bx, 4 shl bx, 1 @@ -7482,22 +7542,22 @@ loc_D6F6: add bx, dx shr dx, 2 add bx, dx - mov cs:word_D75C, bx + mov word ptr cs:loc_D75B+1, bx and ax, 0Fh mov cx, ax - add ax, [bp+8] + add ax, [bp+arg_2] shr ax, 4 or cx, cx jz short loc_D729 inc ax loc_D729: - mov cs:word_D761, ax + mov word ptr cs:loc_D760+1, ax jmp short $+2 mov cx, 28h ; '(' sub cx, ax shl cx, 1 - mov ax, [bp+6] + mov ax, [bp+arg_0] mov bp, cx push 0E000h push word_EB38 @@ -7508,14 +7568,33 @@ loc_D729: push 0A800h push word_EB32 mov dl, 4 + +loc_D759: mov bx, ax + +loc_D75B: + mov di, 1234h + pop ds + pop es + +loc_D760: + mov cx, 1234h + mov si, di + rep movsw + add di, bp + dec bx + jns short loc_D760 + dec dl + jnz short loc_D759 + pop ds + pop si + pop di + pop bp + retf 8 +sub_D6F6 endp + ; --------------------------------------------------------------------------- - db 0BFh -word_D75C dw 1234h - db 1Fh, 7, 0B9h -word_D761 dw 1234h - db 8Bh, 0F7h, 0F3h, 0A5h, 3, 0FDh, 4Bh, 79h, 0F4h, 0FEh - db 0CAh, 75h, 0E9h, 1Fh, 5Eh, 5Fh, 5Dh, 0CAh, 8, 0, 90h + nop ; =============== S U B R O U T I N E ======================================= diff --git a/th04_op.asm b/th04_op.asm index d9dd09d5..68b36adc 100644 --- a/th04_op.asm +++ b/th04_op.asm @@ -970,7 +970,7 @@ arg_2 = word ptr 6 loc_AAF3: push large 11000E0h push 0Ah - call far ptr loc_DC92 + call sub_DC92 les bx, dword_10DA4 mov al, es:[bx+0Fh] mov ah, 0 @@ -1014,7 +1014,7 @@ loc_AB4C: push 0Fh loc_AB54: - call far ptr loc_DC92 + call sub_DC92 loc_AB59: mov dx, 7Ch ; '|' @@ -1025,11 +1025,11 @@ loc_AB59: push 100h push di push 23h ; '#' - call far ptr loc_E00E + call sub_E00E push 160h push di push 24h ; '$' - call far ptr loc_E00E + call sub_E00E push large 180h push large 2800010h call sub_E378 @@ -1047,7 +1047,7 @@ loc_AB59: mov bx, [bp+var_2] shl bx, 2 push large dword ptr [bx+9Eh] - call far ptr loc_DEB4 + call sub_DEB4 loc_ABC4: pop di @@ -1107,14 +1107,14 @@ loc_AC08: loc_AC24: push large 0E000E0h push 10h - call far ptr loc_DC92 + call sub_DC92 push large 14000E0h les bx, dword_10DA4 mov al, es:[bx+0Fh] mov ah, 0 add ax, 15h push ax - call far ptr loc_DC92 + call sub_DC92 les bx, dword_10DA4 mov al, es:[bx+0Fh] mov ah, 0 @@ -1128,13 +1128,13 @@ loc_AC57: loc_AC5C: push large 0E000F0h push 11h - call far ptr loc_DC92 + call sub_DC92 push large 14000F0h les bx, dword_10DA4 mov al, es:[bx+3Ah] mov ah, 0 push ax - call far ptr loc_DC92 + call sub_DC92 mov si, 0Ah jmp loc_AD9A ; --------------------------------------------------------------------------- @@ -1142,13 +1142,13 @@ loc_AC5C: loc_AC85: push large 0E00100h push 12h - call far ptr loc_DC92 + call sub_DC92 push large 1400100h les bx, dword_10DA4 mov al, es:[bx+3Bh] mov ah, 0 push ax - call far ptr loc_DC92 + call sub_DC92 mov si, 0Bh jmp loc_AD9A ; --------------------------------------------------------------------------- @@ -1156,7 +1156,7 @@ loc_AC85: loc_ACAE: push large 0E00110h push 13h - call far ptr loc_DC92 + call sub_DC92 les bx, dword_10DA4 cmp byte ptr es:[bx+10h], 0 jnz short loc_ACCB @@ -1174,7 +1174,7 @@ loc_ACD8: mov [bp+var_2], ax push large 1400110h push ax - call far ptr loc_DC92 + call sub_DC92 les bx, dword_10DA4 mov al, es:[bx+10h] mov ah, 0 @@ -1185,7 +1185,7 @@ loc_ACD8: loc_ACF7: push large 0E00120h push 14h - call far ptr loc_DC92 + call sub_DC92 les bx, dword_10DA4 cmp byte ptr es:[bx+18h], 0 jnz short loc_AD14 @@ -1206,7 +1206,7 @@ loc_AD25: mov [bp+var_2], ax push large 1400120h push ax - call far ptr loc_DC92 + call sub_DC92 les bx, dword_10DA4 mov al, es:[bx+18h] mov ah, 0 @@ -1222,7 +1222,7 @@ loc_AD44: mov dx, 21h ; '!' sub dx, ax push dx - call far ptr loc_DC92 + call sub_DC92 mov di, 100h les bx, dword_10DA4 mov al, es:[bx+49h] @@ -1234,7 +1234,7 @@ loc_AD44: loc_AD72: push large 1100140h push 1Fh - call far ptr loc_DC92 + call sub_DC92 mov di, 100h mov si, 14h jmp short loc_AD9A @@ -1243,7 +1243,7 @@ loc_AD72: loc_AD87: push large 1100154h push 0Fh - call far ptr loc_DC92 + call sub_DC92 mov di, 100h mov si, 15h @@ -1256,7 +1256,7 @@ loc_AD9A: push di push [bp+var_4] push 23h ; '#' - call far ptr loc_E00E + call sub_E00E cmp di, 100h jnz short loc_ADBD lea ax, [di+60h] @@ -1270,7 +1270,7 @@ loc_ADBD: loc_ADC0: push [bp+var_4] push 24h ; '$' - call far ptr loc_E00E + call sub_E00E push large 180h push large 2800010h call sub_E378 @@ -1288,7 +1288,7 @@ loc_ADC0: mov bx, si shl bx, 2 push large dword ptr [bx+9Eh] - call far ptr loc_DEB4 + call sub_DEB4 loc_AE11: pop di @@ -2383,7 +2383,7 @@ loc_B6D3: push si push [bp+arg_0] push large [bp+var_4] - call far ptr loc_DEB4 + call sub_DEB4 pop si leave retn 4 @@ -2436,7 +2436,7 @@ loc_B724: push si push [bp+arg_0] push large [bp+var_4] - call far ptr loc_DEB4 + call sub_DEB4 pop si leave retn 4 @@ -2464,7 +2464,7 @@ loc_B744: mov bx, si shl bx, 2 push large dword ptr [bx+0A4Ch] - call far ptr loc_DEB4 + call sub_DEB4 inc si add di, 10h @@ -2499,7 +2499,7 @@ loc_B772: mov bx, si shl bx, 2 push large dword ptr [bx+0A70h] - call far ptr loc_DEB4 + call sub_DEB4 inc si add di, 10h @@ -2529,7 +2529,7 @@ var_2 = word ptr -2 push 0Fh push ds push offset aB@b@b@b@b@ogcp ; "     使用する音源を選択して下さい・... - call far ptr loc_DEB4 + call sub_DEB4 mov word_11E88, 0Ah mov word_11E8A, 4 push large 200080h @@ -2647,7 +2647,7 @@ var_2 = word ptr -2 push 0Fh push ds push offset aB@b@b@b@m ; "    効果音に使用する音源を選択して・... - call far ptr loc_DEB4 + call sub_DEB4 mov word_11E88, 0Ah mov word_11E8A, 4 push large 200080h @@ -3401,7 +3401,7 @@ arg_2 = byte ptr 6 shl ax, 2 mov bx, ax push large dword ptr [bx+0EB6h] - call far ptr loc_DEB4 + call sub_DEB4 mov dx, 0A6h ; 'ヲ' mov al, byte ptr word_12DBC+1 out dx, al @@ -3419,7 +3419,7 @@ arg_2 = byte ptr 6 shl ax, 2 mov bx, ax push large dword ptr [bx+0EB6h] - call far ptr loc_DEB4 + call sub_DEB4 leave retn 4 sub_BED5 endp @@ -3897,7 +3897,7 @@ sub_C2C4 proc near push 7 push ds push offset unk_12DD2 - call far ptr loc_DEB4 + call sub_DEB4 mov si, 1 jmp short loc_C306 ; --------------------------------------------------------------------------- @@ -3917,7 +3917,7 @@ loc_C2DE: imul ax, 28h add ax, 3A92h push ax - call far ptr loc_DEB4 + call sub_DEB4 loc_C305: inc si @@ -3974,11 +3974,11 @@ sub_C33F proc near mov word_FD7C, 2 push large 1400040h push large 1400140h - call far ptr loc_E4F8 + call sub_E4F8 call sub_C244 push large 1400040h push large 1400140h - call far ptr loc_E4F8 + call sub_E4F8 pop bp retn sub_C33F endp @@ -4004,7 +4004,7 @@ loc_C37C: call sub_BFA7 push large 1400040h push large 1400140h - call far ptr loc_E4F8 + call sub_E4F8 cmp byte_12DBE, 0 jz short loc_C3A2 call sub_C30E @@ -5815,7 +5815,7 @@ loc_D2A3: mov bx, si shl bx, 3 push large dword ptr [bx+13D4h] - call far ptr loc_DEB4 + call sub_DEB4 lea ax, [di+8] push ax mov ax, [bp+var_2] @@ -5825,7 +5825,7 @@ loc_D2A3: mov bx, si shl bx, 3 push large dword ptr [bx+13D8h] - call far ptr loc_DEB4 + call sub_DEB4 mov ax, 1 sub ax, si mov si, ax @@ -5854,7 +5854,7 @@ loc_D2FA: mov bx, si shl bx, 3 push large dword ptr [bx+13D4h] - call far ptr loc_DEB4 + call sub_DEB4 lea ax, [di+8] push ax mov ax, [bp+var_2] @@ -5864,7 +5864,7 @@ loc_D2FA: mov bx, si shl bx, 3 push large dword ptr [bx+13D8h] - call far ptr loc_DEB4 + call sub_DEB4 pop di pop si leave @@ -6065,7 +6065,7 @@ loc_D4A8: push 0Fh push ds push offset aStar - call far ptr loc_DEB4 + call sub_DEB4 mov word_FD7C, 2 loc_D4E5: @@ -6083,7 +6083,7 @@ loc_D4E5: add ax, dx mov bx, ax push large dword ptr [bx+13E4h] - call far ptr loc_DEB4 + call sub_DEB4 mov ax, 1 sub ax, di mov di, ax @@ -6122,7 +6122,7 @@ loc_D52F: push 0Fh push ds push offset aStar - call far ptr loc_DEB4 + call sub_DEB4 mov word_FD7C, 2 loc_D567: @@ -6140,7 +6140,7 @@ loc_D567: add ax, dx mov bx, ax push large dword ptr [bx+13E4h] - call far ptr loc_DEB4 + call sub_DEB4 pop di pop si leave @@ -6224,7 +6224,7 @@ sub_D595 proc near push 3 push ds push offset aGtgugegfgGuvSi ; "サブウェポンの選択" - call far ptr loc_DEB4 + call sub_DEB4 pop di pop si pop bp @@ -7062,26 +7062,34 @@ loc_DC8E: retf 2 sub_DC74 endp -; --------------------------------------------------------------------------- -loc_DC92: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DC92 proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + push bp mov bp, sp push si push di - mov si, [bp+6] + mov si, [bp+arg_0] shl si, 4 add si, 2716h - mov di, [bp+0Ah] + mov di, [bp+arg_4] sar di, 3 add di, [si+6] mov ax, [si+8] - mov cs:word_DCD3, ax + mov word ptr cs:loc_DCD2+1, ax jmp short $+2 shl ax, 2 add ax, 50h ; 'P' mov dx, ax - mov ax, [bp+8] + mov ax, [bp+arg_2] mov bx, ax shl ax, 2 add ax, bx @@ -7092,11 +7100,21 @@ loc_DC92: xor si, si cld nop + +loc_DCD2: + mov cx, 1234h + rep movsd + sub di, dx + jns short loc_DCD2 + pop ds + pop di + pop si + pop bp + retf 6 +sub_DC92 endp + ; --------------------------------------------------------------------------- - db 0B9h -word_DCD3 dw 1234h - db 0F3h, 66h, 0A5h, 2Bh, 0FAh, 79h, 0F6h, 1Fh, 5Fh, 5Eh - db 5Dh, 0CAh, 6, 0, 90h + nop ; =============== S U B R O U T I N E ======================================= @@ -7375,15 +7393,24 @@ loc_DEAF: retf 6 sub_DDCA endp -; --------------------------------------------------------------------------- -loc_DEB4: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DEB4 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+0Ah] + mov dx, [bp+arg_4] mov al, 0C0h pushf cli @@ -7404,12 +7431,12 @@ loc_DEB4: mov ax, 0A800h mov es, ax assume es:nothing - mov dx, [bp+0Ch] + mov dx, [bp+arg_6] shl dx, 6 mov di, dx shr dx, 2 add di, dx - mov cx, [bp+0Eh] + mov cx, [bp+arg_8] mov al, 0Bh out 68h, al mov bx, word_FD7C @@ -7419,21 +7446,21 @@ loc_DEB4: cmp bx, 10h jnb short loc_DF10 mov ax, [bx+0A0Ch] - mov cs:word_E00B, ax + mov word ptr cs:loc_E008+3, ax mov bx, 8 loc_DF10: mov ax, [bx+0A00h] - mov cs:word_DF73, ax + mov word ptr cs:loc_DF72+1, ax mov ax, [bx+0A0Ah] - mov cs:word_DFC5, ax + mov word ptr cs:loc_DFC4+1, ax mov ax, word_FD7E - mov cs:word_DF92, ax - mov cs:word_DFD9, ax + mov word ptr cs:loc_DF91+1, ax + mov word ptr cs:loc_DFD8+1, ax push ds pop fs assume fs:dseg - lds si, [bp+6] + lds si, [bp+arg_0] lodsb or al, al jz short loc_DF9D @@ -7462,6 +7489,8 @@ loc_DF56: mov al, ah out 0A3h, al nop + +loc_DF62: mov al, ch or al, 20h out 0A5h, al @@ -7470,14 +7499,24 @@ loc_DF56: mov al, ch out 0A5h, al in al, 0A9h -; --------------------------------------------------------------------------- - db 0E8h -word_DF73 dw 78h - db 8Ah, 0F8h, 0B3h, 0, 0D3h, 0E8h, 0D3h, 0EBh, 86h, 0E0h - db 0ABh, 26h, 88h, 1Dh, 83h, 0C7h, 4Eh, 0FEh, 0C5h, 80h - db 0FDh, 10h, 72h, 0D5h, 81h, 0EFh, 0, 5, 0BAh -word_DF92 dw 1234h -; --------------------------------------------------------------------------- + +loc_DF72: + call sub_DFED + 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_DF62 + sub di, 500h + +loc_DF91: + mov dx, 1234h loc_DF94: xor ch, ch @@ -7503,32 +7542,48 @@ loc_DFAC: loc_DFAF: cmp al, 20h ; ' ' - jz short near ptr byte_DFD8 + jz short loc_DFD8 out 0A1h, al mov al, ah out 0A3h, al nop + +loc_DFBA: mov al, ch or al, 20h out 0A5h, al in al, 0A9h xor ah, ah -; --------------------------------------------------------------------------- - db 0E8h -word_DFC5 dw 26h - db 0D3h, 0C8h, 0ABh, 83h, 0C7h, 4Eh, 0FEh, 0C5h, 80h, 0FDh - db 10h, 72h, 0E6h, 81h, 0EFh, 0, 5 -byte_DFD8 db 0BAh -word_DFD9 dw 1234h -; --------------------------------------------------------------------------- + +loc_DFC4: + call sub_DFED + ror ax, cl + stosw + add di, 4Eh ; 'N' + inc ch + cmp ch, 10h + jb short loc_DFBA + sub di, 500h + +loc_DFD8: + mov dx, 1234h shr dx, 1 jmp short loc_DF94 +sub_DEB4 endp + ; --------------------------------------------------------------------------- nop + +; =============== S U B R O U T I N E ======================================= + + +sub_DFE0 proc near mov dx, ax add dx, dx or ax, dx retn +sub_DFE0 endp + ; --------------------------------------------------------------------------- mov dx, ax shl dx, 1 @@ -7550,14 +7605,25 @@ sub_DFED proc near sub_DFED endp ; --------------------------------------------------------------------------- - db 0E8h, 0ECh, 0FFh, 8Ah, 0DDh, 83h, 0E3h, 2 dup(3), 0DBh - db 64h, 23h, 87h -word_E00B dw 1234h -; --------------------------------------------------------------------------- - retn -; --------------------------------------------------------------------------- + call sub_DFED + mov bl, ch + and bx, 3 + add bx, bx + +loc_E008: + and ax, fs:[bx+1234h] + retn + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E00E proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah -loc_E00E: push bp mov bp, sp push si @@ -7566,20 +7632,20 @@ loc_E00E: cli mov al, 0C0h out 7Ch, al - mov dx, 7Eh ; '~' + mov dx, 7Eh xor al, al out dx, al out dx, al out dx, al out dx, al sti - mov si, [bp+6] + mov si, [bp+arg_0] shl si, 4 add si, 2716h mov ax, [si+0Eh] - mov cs:word_E086, ax + mov word ptr cs:loc_E085+1, ax jmp short $+2 - mov ax, [bp+8] + mov ax, [bp+arg_2] mov bx, ax shl ax, 2 add ax, bx @@ -7593,7 +7659,7 @@ loc_E00E: push ax sub ax, 800h push ax - mov ax, [bp+0Ah] + mov ax, [bp+arg_4] shr ax, 3 add ax, [si+6] mov di, ax @@ -7617,11 +7683,11 @@ loc_E076: xor al, al out 7Ch, al xor si, si -; --------------------------------------------------------------------------- - db 0B8h -word_E086 dw 1234h -; --------------------------------------------------------------------------- + +loc_E085: + mov ax, 1234h mov ds, ax + assume ds:nothing loc_E08A: mov di, bx @@ -7641,10 +7707,13 @@ loc_E08E: or ax, ax jnz short loc_E08A pop ds + assume ds:dseg pop di pop si pop bp retf 6 +sub_E00E endp + ; --------------------------------------------------------------------------- nop @@ -8246,17 +8315,26 @@ locret_E4F7: retf sub_E4C6 endp -; --------------------------------------------------------------------------- -loc_E4F8: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E4F8 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+0Ch] - mov dx, [bp+0Ah] + mov ax, [bp+arg_6] + mov dx, [bp+arg_4] mov bx, ax sar bx, 4 shl bx, 1 @@ -8264,22 +8342,22 @@ loc_E4F8: add bx, dx shr dx, 2 add bx, dx - mov cs:word_E55E, bx + mov word ptr cs:loc_E55D+1, bx and ax, 0Fh mov cx, ax - add ax, [bp+8] + add ax, [bp+arg_2] shr ax, 4 or cx, cx jz short loc_E52B inc ax loc_E52B: - mov cs:word_E563, ax + mov word ptr cs:loc_E562+1, ax jmp short $+2 mov cx, 28h ; '(' sub cx, ax shl cx, 1 - mov ax, [bp+6] + mov ax, [bp+arg_0] mov bp, cx push 0E000h push word_FD88 @@ -8290,16 +8368,53 @@ loc_E52B: push 0A800h push word_FD82 mov dl, 4 + +loc_E55B: mov bx, ax + +loc_E55D: + mov di, 1234h + pop ds + pop es + +loc_E562: + mov cx, 1234h + mov si, di + rep movsw + add di, bp + dec bx + jns short loc_E562 + dec dl + jnz short loc_E55B + pop ds + pop si + pop di + pop bp + retf 8 +sub_E4F8 endp + ; --------------------------------------------------------------------------- - db 0BFh -word_E55E dw 1234h - db 1Fh, 7, 0B9h -word_E563 dw 1234h - db 8Bh, 0F7h, 0F3h, 0A5h, 3, 0FDh, 4Bh, 79h, 0F4h, 0FEh - db 0CAh, 75h, 0E9h, 1Fh, 5Eh, 5Fh, 5Dh, 0CAh, 8, 0, 90h - db 0C6h, 6, 4Ah, 0Ah, 1, 90h -; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E57A proc near + mov byte_FD8A, 1 + nop +sub_E57A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E580 proc far + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + push bp mov bp, sp push si @@ -8309,7 +8424,7 @@ word_E563 dw 1234h nopcall sub_E69A shl di, 4 add di, 2716h - push large dword ptr [bp+8] + push large [bp+arg_2] call file_ropen push ds push di @@ -8325,7 +8440,7 @@ word_E563 dw 1234h add ax, dx loc_E5BC: - mul word ptr [bp+6] + mul [bp+arg_0] movzx eax, ax push eax push 1 @@ -8337,6 +8452,8 @@ loc_E5BC: pop si pop bp retf 8 +sub_E580 endp + ; --------------------------------------------------------------------------- nop diff --git a/th05_main.asm b/th05_main.asm index 7caca243..287d0e67 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -1581,9 +1581,9 @@ loc_B469: mov word_23F5A, 2C76h jmp short loc_B4A9 ; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - call sub_E4FC + +loc_B48A: + nopcall sub_E4FC push ds push offset aBss6_cd2 ; "BSS6.CD2" call sub_B9CC @@ -1659,7 +1659,7 @@ off_B53C dw offset loc_B3EA dw offset loc_B437 dw offset loc_B450 dw offset loc_B469 - db 7Ah, 6 + dw offset loc_B48A off_B54A dw offset loc_B37E dw offset loc_B384 dw offset loc_B38A @@ -2799,10 +2799,10 @@ loc_BE7C: dec dl jnz short loc_BE7C inc di - mov word_23F4C, es - mov word_23F4A, di + mov word ptr dword_23F4A+2, es + mov word ptr dword_23F4A, di mov word ptr dword_2C926+2, seg seg003 - mov word ptr dword_2C926, 0D8Ch + mov word ptr dword_2C926, offset sub_1600C pop di pop si retn @@ -3091,10 +3091,24 @@ sub_C036 endp ; --------------------------------------------------------------------------- nop + +; =============== S U B R O U T I N E ======================================= + + +nullsub_2 proc near retn +nullsub_2 endp + ; --------------------------------------------------------------------------- nop + +; =============== S U B R O U T I N E ======================================= + + +nullsub_1 proc far retf +nullsub_1 endp + ; --------------------------------------------------------------------------- nop @@ -12929,14 +12943,16 @@ table_1083C dw loc_10730 dw loc_10760 dw loc_10760 dw loc_10760 - dw offset loc_B0D8 - db 0 - db 0 ; =============== S U B R O U T I N E ======================================= +; Attributes: bp-based frame -sub_10848 proc near +sub_10844 proc near + +var_2 = word ptr -2 + + enter 2, 0 push si push di cmp byte_26331, 0FEh @@ -12947,7 +12963,7 @@ sub_10848 proc near mov di, ax push word ptr dword_26320+2 call sub_BFB2 - mov [bp-2], ax + mov [bp+var_2], ax mov al, byte_26330 mov ah, 0 mov dl, byte_25FE5 @@ -12961,7 +12977,7 @@ sub_10848 proc near add dx, ax mov si, dx push di - push word ptr [bp-2] + push [bp+var_2] push dx call super_roll_put mov ax, word ptr dword_26320 @@ -12971,7 +12987,7 @@ sub_10848 proc near add ax, 0FF00h push ax call sub_BFB2 - mov [bp-2], ax + mov [bp+var_2], ax cmp byte_26331, 2 jnz short loc_108C2 mov al, byte_25FE4 @@ -12984,7 +13000,7 @@ sub_10848 proc near loc_108B6: push di - push word ptr [bp-2] + push [bp+var_2] push si call super_roll_put jmp short loc_10900 @@ -13003,7 +13019,7 @@ loc_108C2: cmp byte_26334, 0 jz short loc_108B6 push di - push word ptr [bp-2] + push [bp+var_2] push si push large 0FFC0h call super_roll_put_1plane @@ -13021,9 +13037,17 @@ loc_10900: pop si leave retn -sub_10848 endp +sub_10844 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10904 proc near + +var_2 = word ptr -2 -; --------------------------------------------------------------------------- enter 2, 0 push si push di @@ -13033,7 +13057,7 @@ sub_10848 endp mov ax, word_26338 sar ax, 4 add ax, 0FFF0h - mov [bp-2], ax + mov [bp+var_2], ax cmp byte_26345, 0FEh jnz short loc_10934 push di @@ -13089,7 +13113,7 @@ loc_10976: cmp byte_26348, 0 jnz short loc_10989 push di - push word ptr [bp-2] + push [bp+var_2] push si call super_put jmp short loc_10932 @@ -13097,7 +13121,7 @@ loc_10976: loc_10989: push di - push word ptr [bp-2] + push [bp+var_2] push si push large 0FFC0h call super_put_1plane @@ -13109,7 +13133,17 @@ loc_10999: pop si leave retn -; --------------------------------------------------------------------------- +sub_10904 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_109A3 proc near + +var_2 = word ptr -2 + enter 2, 0 push si push di @@ -13124,7 +13158,7 @@ loc_10999: add ax, 0FF00h push ax call sub_BFB2 - mov [bp-2], ax + mov [bp+var_2], ax cmp byte_26330, 0CAh jnz short loc_109E3 mov al, byte_25FE5 @@ -13149,7 +13183,7 @@ loc_109F0: cmp byte_26334, 0 jnz short loc_10A05 push di - push word ptr [bp-2] + push [bp+var_2] push si call super_roll_put jmp short loc_10A26 @@ -13157,7 +13191,7 @@ loc_109F0: loc_10A05: push di - push word ptr [bp-2] + push [bp+var_2] push si push large 0FFC0h call super_roll_put_1plane @@ -13175,7 +13209,17 @@ loc_10A26: pop si leave retn -; --------------------------------------------------------------------------- +sub_109A3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10A2A proc near + +var_2 = word ptr -2 + enter 2, 0 push si push di @@ -13235,7 +13279,17 @@ loc_10A94: pop si leave retn -; --------------------------------------------------------------------------- +sub_10A2A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10A9E proc near + +var_2 = word ptr -2 + enter 2, 0 push si push di @@ -13250,7 +13304,7 @@ loc_10A94: add ax, 0FF00h push ax call sub_BFB2 - mov [bp-2], ax + mov [bp+var_2], ax cmp byte_26330, 0D0h jnz short loc_10ADE mov al, byte_25FE5 @@ -13271,7 +13325,7 @@ loc_10AE3: cmp byte_26334, 0 jnz short loc_10AF8 push di - push word ptr [bp-2] + push [bp+var_2] push si call super_roll_put jmp short loc_10B19 @@ -13279,7 +13333,7 @@ loc_10AE3: loc_10AF8: push di - push word ptr [bp-2] + push [bp+var_2] push si push large 0FFC0h call super_roll_put_1plane @@ -13297,6 +13351,8 @@ loc_10B19: pop si leave retn +sub_10A9E endp + ; =============== S U B R O U T I N E ======================================= @@ -17825,453 +17881,2669 @@ table_12F97 dw loc_12F3B dw loc_12F4B dw loc_12F60 dw loc_12F67 - dw offset loc_B0D8 - db 2 dup(0), 56h, 0C6h, 46h, 0FFh, 3, 0E8h, 69h, 0F9h - db 0A8h, 9, 0Fh, 84h, 0DDh, 0, 0A8h, 8, 0Fh, 84h, 0CCh - db 0, 8Ah, 46h, 0FFh, 4, 6, 88h, 46h, 0FFh, 0E9h, 0C1h - db 0, 80h, 7Eh, 0FFh, 3, 77h, 23h, 80h, 7Eh, 0FFh, 3, 75h - db 4, 0C6h, 46h, 0FEh, 0B4h, 0C6h, 44h, 10h, 6, 8Ah, 46h - db 0FEh, 4, 6, 88h, 46h, 0FEh, 8Dh, 44h, 0Ah, 50h, 0FFh - db 76h, 0FEh, 0E8h, 0F6h, 0B4h, 0E9h, 8Ch, 0, 8Ah, 46h - db 0FFh, 0B4h, 0, 2Dh, 4, 0, 8Bh, 0D8h, 83h, 0FBh, 5, 77h - db 75h, 3, 0DBh, 2Eh, 0FFh, 0A7h, 81h, 82h, 81h, 6Ch, 2 - db 80h, 1, 0C6h, 44h, 0Fh, 2, 0C7h, 44h, 0Ah, 0EAh, 0FFh - db 0C7h, 44h, 0Ch, 24h, 0, 0EBh, 59h, 81h, 44h, 2, 80h - db 1, 0C6h, 44h, 0Fh, 3, 0C7h, 44h, 0Ah, 16h, 0, 0C7h - db 44h, 0Ch, 24h, 0, 0EBh, 44h, 81h, 6Ch, 2, 80h, 1, 0C6h - db 44h, 0Fh, 4, 0C7h, 44h, 0Ah, 0F0h, 0FFh, 0C7h, 44h - db 0Ch, 0D0h, 0FFh, 0EBh, 2Fh, 81h, 44h, 2, 80h, 1, 0C6h - db 44h, 0Fh, 4, 0C7h, 44h, 0Ah, 10h, 0, 0C7h, 44h, 0Ch - db 0D0h, 0FFh, 0EBh, 1Ah, 81h, 6Ch, 2, 80h, 1, 0EBh, 5 - db 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ah - db 2 dup(0), 0C7h, 44h, 0Ch, 0C0h, 0FFh, 0C6h, 44h, 0Eh - db 16h, 0C6h, 44h, 10h, 0Ch, 8Ah, 46h, 0FFh, 4, 0FFh, 88h - db 46h, 0FFh, 0Ah, 0C0h, 76h, 0Bh, 0E8h, 20h, 0B4h, 8Bh - db 0F0h, 0Bh, 0C0h, 0Fh, 85h, 34h, 0FFh, 5Eh, 0C9h, 0C3h - db 0F1h, 81h, 6, 82h, 1Bh, 82h, 30h, 82h, 45h, 82h, 4Ch - db 82h, 0C8h, 2, 2 dup(0), 56h, 0C6h, 46h, 0FFh, 3, 0E8h - db 6Bh, 0F8h, 0A8h, 9, 0Fh, 84h, 0E6h, 0, 0A8h, 8, 0Fh - db 84h, 0D5h, 0, 8Ah, 46h, 0FFh, 4, 6, 88h, 46h, 0FFh - db 0E9h, 0CAh, 0, 80h, 7Eh, 0FFh, 3, 77h, 23h, 0C6h, 44h - db 10h, 6, 80h, 7Eh, 0FFh, 3, 75h, 4, 0C6h, 46h, 0FEh - db 0B2h, 8Ah, 46h, 0FEh, 4, 7, 88h, 46h, 0FEh, 8Dh, 44h - db 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h, 0F8h, 0B3h, 0E9h, 95h - db 0, 8Ah, 46h, 0FFh, 0B4h, 0, 2Dh, 4, 0, 8Bh, 0D8h, 83h - db 0FBh, 5, 77h, 7Eh, 3, 0DBh, 2Eh, 0FFh, 0A7h, 89h, 83h - db 81h, 6Ch, 2, 80h, 1, 0C6h, 44h, 0Fh, 2, 0C7h, 44h, 0Ah - db 0EAh, 0FFh, 0C7h, 44h, 0Ch, 24h, 0, 0EBh, 62h, 81h - db 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 3, 0C7h, 44h, 0Ah, 16h - db 0, 0C7h, 44h, 0Ch, 24h, 0, 0EBh, 4Dh, 81h, 6Ch, 2, 80h - db 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ah, 0F0h, 0FFh, 0C7h - db 44h, 0Ch, 0D0h, 0FFh, 0EBh, 38h, 81h, 44h, 2, 80h, 1 - db 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ah, 10h, 0, 0C7h, 44h - db 0Ch, 0D0h, 0FFh, 0EBh, 23h, 81h, 6Ch, 2, 80h, 1, 0C6h - db 44h, 0Fh, 4, 0C7h, 44h, 0Ah, 8, 0, 0EBh, 0Eh, 81h, 44h - db 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ah, 0F8h - db 0FFh, 0C7h, 44h, 0Ch, 0C0h, 0FFh, 0C6h, 44h, 0Eh, 16h - db 0C6h, 44h, 10h, 0Bh, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h - db 0FFh, 0Ah, 0C0h, 76h, 0Bh, 0E8h, 19h, 0B3h, 8Bh, 0F0h - db 0Bh, 0C0h, 0Fh, 85h, 2Bh, 0FFh, 5Eh, 0C9h, 0C3h, 0 - db 0EFh, 82h, 4, 83h, 19h, 83h, 2Eh, 83h, 43h, 83h, 53h - db 83h, 0C8h, 2, 2 dup(0), 56h, 57h, 0C6h, 46h, 0FFh, 4 - db 0E8h, 62h, 0F7h, 0A8h, 9, 0Fh, 84h, 0E6h, 0, 0A8h, 8 - db 74h, 8, 8Ah, 46h, 0FFh, 4, 8, 88h, 46h, 0FFh, 0BFh - db 80h, 0FEh, 0E9h, 0C9h, 0, 80h, 7Eh, 0FFh, 4, 77h, 13h - db 1, 7Ch, 2, 0C6h, 44h, 10h, 5, 0C7h, 44h, 0Ch, 40h, 0FFh - db 81h, 0C7h, 0, 1, 0E9h, 0A4h, 0, 8Ah, 46h, 0FFh, 0B4h - db 0, 2Dh, 5, 0, 8Bh, 0D8h, 83h, 0FBh, 7, 0Fh, 87h, 8Bh - db 0, 3, 0DBh, 2Eh, 0FFh, 0A7h, 93h, 84h, 81h, 6Ch, 2 - db 80h, 1, 0C6h, 44h, 0Fh, 2, 0C7h, 44h, 0Ah, 0EAh, 0FFh - db 0C7h, 44h, 0Ch, 24h, 0, 0EBh, 6Fh, 81h, 44h, 2, 80h - db 1, 0C6h, 44h, 0Fh, 3, 0C7h, 44h, 0Ah, 16h, 0, 0C7h - db 44h, 0Ch, 24h, 0, 0EBh, 5Ah, 81h, 6Ch, 2, 80h, 1, 0C6h - db 44h, 0Fh, 4, 0C7h, 44h, 0Ah, 0F0h, 0FFh, 0EBh, 0Eh - db 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ah - db 10h, 0, 0C7h, 44h, 0Ch, 0D0h, 0FFh, 0EBh, 35h, 81h - db 6Ch, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ch, 0B0h - db 0FFh, 0EBh, 25h, 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh - db 4, 0C7h, 44h, 0Ch, 0B0h, 0FFh, 0EBh, 15h, 81h, 6Ch - db 2, 80h, 1, 0EBh, 5, 81h, 44h, 2, 80h, 1, 0C6h, 44h - db 0Fh, 4, 0C7h, 44h, 0Ch, 0E0h, 0FFh, 0C6h, 44h, 0Eh - db 16h, 0C6h, 44h, 10h, 0Bh, 8Ah, 46h, 0FFh, 4, 0FFh, 88h - db 46h, 0FFh, 0Ah, 0C0h, 76h, 0Bh, 0E8h, 10h, 0B2h, 8Bh - db 0F0h, 0Bh, 0C0h, 0Fh, 85h, 2Ch, 0FFh, 5Fh, 5Eh, 0C9h - db 0C3h, 0, 0EBh, 83h, 0, 84h, 15h, 84h, 25h, 84h, 3Ah - db 84h, 4Ah, 84h, 5Ah, 84h, 61h, 84h, 0C8h, 2, 2 dup(0) - db 56h, 57h, 0C6h, 46h, 0FFh, 4, 0E8h, 54h, 0F6h, 0A8h - db 9, 0Fh, 84h, 12h, 1, 0A8h, 8, 74h, 8, 8Ah, 46h, 0FFh - db 4, 0Ah, 88h, 46h, 0FFh, 0BFh, 80h, 0FEh, 0E9h, 0F5h - db 0, 80h, 7Eh, 0FFh, 4, 77h, 13h, 1, 7Ch, 2, 0C6h, 44h - db 10h, 5, 0C7h, 44h, 0Ch, 40h, 0FFh, 81h, 0C7h, 0, 1 - db 0E9h, 0D0h, 0, 8Ah, 46h, 0FFh, 0B4h, 0, 2Dh, 5, 0, 8Bh - db 0D8h, 83h, 0FBh, 9, 0Fh, 87h, 0B7h, 0, 3, 0DBh, 2Eh - db 0FFh, 0A7h, 0CDh, 85h, 81h, 6Ch, 2, 80h, 1, 0C6h, 44h - db 0Fh, 2, 0C7h, 44h, 0Ah, 0E4h, 0FFh, 0C7h, 44h, 0Ch - db 24h, 0, 0E9h, 9Ah, 0, 81h, 44h, 2, 80h, 1, 0C6h, 44h - db 0Fh, 3, 0C7h, 44h, 0Ah, 1Ch, 0, 0C7h, 44h, 0Ch, 24h - db 0, 0E9h, 84h, 0, 81h, 6Ch, 2, 80h, 1, 0C6h, 44h, 0Fh - db 3, 0C7h, 44h, 0Ah, 20h, 0, 0EBh, 0Eh, 81h, 44h, 2, 80h - db 1, 0C6h, 44h, 0Fh, 2, 0C7h, 44h, 0Ah, 0E0h, 0FFh, 0C7h - db 44h, 0Ch, 20h, 0, 0EBh, 5Fh, 81h, 6Ch, 2, 80h, 1, 0C6h - db 44h, 0Fh, 4, 0C7h, 44h, 0Ch, 30h, 0, 0C7h, 44h, 0Ah - db 0F0h, 0FFh, 0EBh, 4Ah, 81h, 44h, 2, 80h, 1, 0C6h, 44h - db 0Fh, 4, 0C7h, 44h, 0Ch, 30h, 0, 0C7h, 44h, 0Ah, 10h - db 0, 0EBh, 35h, 81h, 6Ch, 2, 80h, 1, 0C6h, 44h, 0Fh, 4 - db 0C7h, 44h, 0Ch, 0B0h, 0FFh, 0EBh, 25h, 81h, 44h, 2 - db 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ch, 0B0h, 0FFh - db 0EBh, 15h, 81h, 6Ch - db 2, 80h, 1, 0EBh, 5, 81h, 44h, 2, 80h, 1, 0C6h, 44h - db 0Fh, 4, 0C7h, 44h, 0Ch, 0E0h, 0FFh, 0C6h, 44h, 0Eh - db 16h, 0C6h, 44h, 10h, 0Bh, 8Ah, 46h, 0FFh, 4, 0FFh, 88h - db 46h, 0FFh, 0Ah, 0C0h, 76h, 0Bh, 0E8h, 0D6h, 0B0h, 8Bh - db 0F0h, 0Bh, 0C0h, 0Fh, 85h, 0, 0FFh, 5Fh, 5Eh, 0C9h - db 0C3h, 0, 0F9h, 84h, 0Fh, 85h, 25h, 85h, 35h, 85h, 4Ah - db 85h, 5Fh, 85h, 74h, 85h, 84h, 85h, 94h, 85h, 9Bh, 85h - db 0C8h, 2, 2 dup(0), 56h, 57h, 0C6h, 46h, 0FFh, 4, 0E8h - db 16h, 0F5h, 0A8h, 9, 0Fh, 84h, 12h, 1, 0A8h, 8, 74h - db 8, 8Ah, 46h, 0FFh, 4, 0Ah, 88h, 46h, 0FFh, 0BFh, 80h - db 0FEh, 0E9h, 0F5h, 0, 80h, 7Eh, 0FFh, 4, 77h, 13h, 1 - db 7Ch, 2, 0C6h, 44h, 10h, 4, 0C7h, 44h, 0Ch, 40h, 0FFh - db 81h, 0C7h, 0, 1, 0E9h, 0D0h, 0, 8Ah, 46h, 0FFh, 0B4h - db 0, 2Dh, 5, 0, 8Bh, 0D8h, 83h, 0FBh, 9, 0Fh, 87h, 0B7h - db 0, 3, 0DBh, 2Eh, 0FFh, 0A7h, 0Bh, 87h, 81h, 6Ch, 2 - db 80h, 1, 0C6h, 44h, 0Fh, 2, 0C7h, 44h, 0Ah, 0E4h, 0FFh - db 0C7h, 44h, 0Ch, 24h, 0, 0E9h, 9Ah, 0, 81h, 44h, 2, 80h - db 1, 0C6h, 44h, 0Fh, 3, 0C7h, 44h, 0Ah, 1Ch, 0, 0C7h - db 44h, 0Ch, 24h, 0, 0E9h, 84h, 0, 81h, 6Ch, 2, 80h, 1 - db 0C6h, 44h, 0Fh, 3, 0C7h, 44h, 0Ah, 20h, 0, 0EBh, 0Eh - db 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 2, 0C7h, 44h, 0Ah - db 0E0h, 0FFh, 0C7h, 44h, 0Ch, 20h, 0, 0EBh, 5Fh, 81h - db 6Ch, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ch, 30h - db 0, 0C7h, 44h, 0Ah, 0F0h, 0FFh, 0EBh, 4Ah, 81h, 44h - db 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ch, 30h, 0 - db 0C7h, 44h, 0Ah, 10h, 0, 0EBh, 35h, 81h, 6Ch, 2, 80h - db 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ch, 0B0h, 0FFh, 0EBh - db 25h, 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h - db 0Ch, 0B0h, 0FFh, 0EBh, 15h, 81h, 6Ch, 2, 80h, 1, 0EBh - db 5, 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h - db 0Ch, 0E0h, 0FFh, 0C6h, 44h, 0Eh, 16h, 0C6h, 44h, 10h - db 0Ah, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah, 0C0h - db 76h, 0Bh, 0E8h, 98h, 0AFh, 8Bh, 0F0h, 0Bh, 0C0h, 0Fh - db 85h, 0, 0FFh, 5Fh, 5Eh, 0C9h, 0C3h, 0, 37h, 86h, 4Dh - db 86h, 63h, 86h, 73h, 86h, 88h, 86h, 9Dh, 86h, 0B2h, 86h - db 0C2h, 86h, 0D2h, 86h, 0D9h, 86h, 0C8h, 2, 2 dup(0) - db 56h, 57h, 0C6h, 46h, 0FFh, 6, 0E8h, 0D8h, 0F3h, 0A8h - db 9, 0Fh, 84h, 55h, 1, 0A8h, 8, 74h, 8, 8Ah, 46h, 0FFh - db 4, 0Ch, 88h, 46h, 0FFh, 0BFh, 80h, 0FDh, 0E9h, 38h - db 1, 80h, 7Eh, 0FFh, 6, 77h, 13h, 1, 7Ch, 2, 0C6h, 44h - db 10h, 4, 0C7h, 44h, 0Ch, 40h, 0FFh, 81h, 0C7h, 0, 1 - db 0E9h, 13h, 1, 8Ah, 46h, 0FFh, 0B4h, 0, 2Dh, 7, 0, 8Bh - db 0D8h, 83h, 0FBh, 0Dh, 0Fh, 87h, 0FAh, 0, 3, 0DBh, 2Eh - db 0FFh, 0A7h, 8Ch, 88h, 81h, 6Ch, 2, 80h, 1, 0C6h, 44h - db 0Fh, 2, 0C7h, 44h, 0Ah, 0E0h, 0FFh, 0C7h, 44h, 0Ch - db 24h, 0, 0E9h, 0DDh, 0, 81h, 44h, 2, 80h, 1, 0C6h, 44h - db 0Fh, 3, 0C7h, 44h, 0Ah, 20h - db 0, 0C7h, 44h, 0Ch, 24h, 0, 0E9h, 0C7h, 0, 81h, 6Ch - db 2, 80h, 1, 0C6h, 44h, 0Fh, 3, 0C7h, 44h, 0Ah, 20h, 0 - db 0EBh, 0Eh, 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 2, 0C7h - db 44h, 0Ah, 0E0h, 0FFh, 0C7h, 44h, 0Ch, 20h, 0, 0E9h - db 0A1h, 0, 81h, 6Ch, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h - db 44h, 0Ch, 30h, 0, 0E9h, 90h, 0, 81h, 44h, 2, 80h, 1 - db 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ch, 30h, 0, 0E9h, 7Fh - db 0, 81h, 6Ch, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h - db 0Ch, 2 dup(0), 0C7h, 44h, 0Ah, 0F0h, 0FFh, 0EBh, 6Ah - db 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ch - db 2 dup(0), 0C7h, 44h, 0Ah, 10h, 0, 0EBh, 55h, 81h, 6Ch - db 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ch, 80h, 0FFh - db 0EBh, 45h, 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h - db 44h, 0Ch, 80h, 0FFh, 0EBh, 35h, 81h, 6Ch, 2, 80h, 1 - db 0C6h, 44h, 0Fh, 4, 0C7h, 44h, 0Ch, 0C0h, 0FFh, 0EBh - db 25h, 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h - db 0Ch, 0C0h, 0FFh, 0EBh, 15h, 81h, 6Ch, 2, 80h, 1, 0EBh - db 5, 81h, 44h, 2, 80h, 1, 0C6h, 44h, 0Fh, 4, 0C7h, 44h - db 0Ch, 0F0h, 0FFh, 0C6h, 44h, 0Eh, 16h, 0C6h, 44h, 10h - db 9, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah, 0C0h - db 76h, 0Bh, 0E8h, 17h, 0AEh, 8Bh, 0F0h, 0Bh, 0C0h, 0Fh - db 85h, 0BDh, 0FEh, 5Fh, 5Eh, 0C9h, 0C3h, 0, 75h, 87h - db 8Bh, 87h, 0A1h, 87h, 0B1h, 87h, 0C7h, 87h, 0D8h, 87h - db 0E9h, 87h, 0FEh, 87h, 13h, 88h, 23h, 88h, 33h, 88h - db 43h, 88h, 53h, 88h, 5Ah, 88h, 0C8h, 2, 2 dup(0), 56h - db 0C6h, 46h, 0FFh, 2, 0E8h, 50h, 0F2h, 0A8h, 5, 74h, 58h - db 0A8h, 1, 74h, 4Bh, 0FEh, 46h, 0FFh, 0EBh, 46h, 80h - db 7Eh, 0FFh, 2, 77h, 21h, 80h, 7Eh, 0FFh, 2, 75h, 7, 81h - db 6Ch, 2, 80h, 1, 0EBh, 5, 81h, 44h, 2, 80h, 1, 0C7h - db 44h, 0Ch, 0C0h, 0FEh, 0C6h, 44h, 0Eh, 16h, 0C6h, 44h - db 10h, 5, 0EBh, 13h, 8Dh, 44h, 0Ah, 50h, 6Ah, 0Fh, 0E8h - db 1Fh, 89h, 4, 0B8h, 50h, 0E8h, 0D7h, 0ADh, 0C6h, 44h - db 10h, 8, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah - db 0C0h, 76h, 9, 0E8h, 8Ch, 0ADh, 8Bh, 0F0h, 0Bh, 0C0h - db 75h, 0B1h, 5Eh, 0C9h, 0C3h, 0C8h, 2, 2 dup(0), 56h - db 0C6h, 46h, 0FFh, 2, 0E8h, 0E5h, 0F1h, 0A8h, 5, 74h - db 65h, 0A8h, 1, 74h, 58h, 8Ah, 46h, 0FFh, 4, 2, 88h, 46h - db 0FFh, 0EBh, 4Eh, 80h, 7Eh, 0FFh, 2, 77h, 21h, 80h, 7Eh - db 0FFh, 2, 75h, 7, 81h, 6Ch, 2, 80h, 1, 0EBh, 5, 81h - db 44h, 2, 80h, 1, 0C7h, 44h, 0Ch, 0C0h, 0FEh, 0C6h, 44h - db 0Eh, 16h, 0C6h, 44h, 10h, 5, 0EBh, 1Bh, 80h, 7Eh, 0FFh - db 4, 75h, 7, 81h, 6Ch, 2, 80h, 0, 0EBh, 5, 81h, 44h, 2 - db 80h, 0, 0C7h, 44h, 0Ch, 40h, 0FFh, 0C6h, 44h, 10h, 7 - db 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah, 0C0h - db 76h, 9, 0E8h, 14h, 0ADh, 8Bh, 0F0h, 0Bh, 0C0h, 75h - db 0A9h, 5Eh, 0C9h, 0C3h, 0C8h, 2, 2 dup(0), 56h, 0C6h - db 46h, 0FFh, 4, 0E8h, 6Dh, 0F1h, 0A8h, 5, 74h, 7Dh, 0A8h - db 1 - db 74h, 70h, 8Ah, 46h, 0FFh, 4, 2, 88h, 46h, 0FFh, 0EBh - db 66h, 80h, 7Eh, 0FFh, 4, 77h, 39h, 8Ah, 46h, 0FFh, 0B4h - db 0, 48h, 8Bh, 0D8h, 83h, 0FBh, 3, 77h, 1Dh, 3, 0DBh - db 2Eh, 0FFh, 0A7h, 1Ch, 8Ah, 0C7h, 44h, 0Ah, 0F0h, 0FFh - db 81h, 6Ch, 2, 80h, 1, 0EBh, 0Ah, 0C7h, 44h, 0Ah, 10h - db 0, 81h, 44h, 2, 80h, 1, 0C7h, 44h, 0Ch, 0C0h, 0FEh - db 0C6h, 44h, 0Eh, 16h, 0C6h, 44h, 10h, 4, 0EBh, 1Bh, 80h - db 7Eh, 0FFh, 6, 75h, 7, 81h, 6Ch, 2, 80h, 0, 0EBh, 5 - db 81h, 44h, 2, 80h, 0, 0C7h, 44h, 0Ch, 40h, 0FFh, 0C6h - db 44h, 10h, 7, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh - db 0Ah, 0C0h, 76h, 9, 0E8h, 84h, 0ACh, 8Bh, 0F0h, 0Bh - db 0C0h, 75h, 91h, 5Eh, 0C9h, 0C3h, 0, 0CFh, 89h, 0C3h - db 89h, 0D4h, 89h, 0C8h, 89h, 0C8h, 2, 2 dup(0), 56h, 0C6h - db 46h, 0FFh, 4, 0E8h, 0D4h, 0F0h, 0A8h, 5, 74h, 7Ch, 0A8h - db 1, 74h, 8, 8Ah, 46h, 0FFh, 4, 3, 88h, 46h, 0FFh, 0C6h - db 46h, 0FEh, 0BAh, 0EBh, 61h, 80h, 7Eh, 0FFh, 4, 77h - db 39h, 8Ah, 46h, 0FFh, 0B4h, 0, 48h, 8Bh, 0D8h, 83h, 0FBh - db 3, 77h, 1Dh, 3, 0DBh, 2Eh, 0FFh, 0A7h, 0B3h, 8Ah, 0C7h - db 44h, 0Ah, 10h, 0, 81h, 6Ch, 2, 80h, 1, 0EBh, 0Ah, 0C7h - db 44h, 0Ah, 0F0h, 0FFh, 81h, 44h, 2, 80h, 1, 0C7h, 44h - db 0Ch, 0C0h, 0FEh, 0C6h, 44h, 0Eh, 16h, 0C6h, 44h, 10h - db 4, 0EBh, 16h, 8Dh, 44h, 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h - db 3Fh, 0ACh, 8Ah, 46h, 0FEh, 4, 6, 88h, 46h, 0FEh, 0C6h - db 44h, 10h, 7, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh - db 0Ah, 0C0h, 76h, 9, 0E8h, 0ECh, 0ABh, 8Bh, 0F0h, 0Bh - db 0C0h, 75h, 96h, 5Eh, 0C9h, 0C3h, 60h, 8Ah, 6Ch, 8Ah - db 71h, 8Ah, 65h, 8Ah, 0C8h, 2, 2 dup(0), 56h, 0C6h, 46h - db 0FFh, 4, 0E8h, 3Dh, 0F0h, 0A8h, 5, 0Fh, 84h, 8Fh, 0 - db 0A8h, 1, 74h, 8, 8Ah, 46h, 0FFh, 4, 3, 88h, 46h, 0FFh - db 0C6h, 46h, 0FEh, 0BAh, 0EBh, 74h, 80h, 7Eh, 0FFh, 4 - db 77h, 4Ch, 8Ah, 46h, 0FFh, 0B4h, 0, 48h, 8Bh, 0D8h, 83h - db 0FBh, 3, 77h, 30h, 3, 0DBh, 2Eh, 0FFh, 0A7h, 5Fh, 8Bh - db 0C7h, 44h, 0Ah, 10h, 0, 81h, 44h, 2, 80h, 1, 0EBh, 1Dh - db 0C7h, 44h, 0Ah, 0F0h, 0FFh, 0EBh, 11h, 0C7h, 44h, 0Ah - db 0F8h, 0FFh, 81h, 44h, 2, 80h, 1, 0EBh, 0Ah, 0C7h, 44h - db 0Ah, 8, 0, 81h, 6Ch, 2, 80h, 1, 0C7h, 44h, 0Ch, 0C0h - db 0FEh, 0C6h, 44h, 0Eh, 16h, 0C6h, 44h, 10h, 4, 0EBh - db 16h, 8Dh, 44h, 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h, 93h - db 0ABh, 8Ah, 46h, 0FEh, 4, 6, 88h, 46h, 0FEh, 0C6h, 44h - db 10h, 7, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah - db 0C0h, 76h, 9, 0E8h, 40h, 0ABh, 8Bh, 0F0h, 0Bh, 0C0h - db 75h, 83h, 5Eh, 0C9h, 0C3h, 0F9h, 8Ah, 5, 8Bh, 0Ch, 8Bh - db 18h, 8Bh, 0C8h, 2, 2 dup(0), 56h, 0C6h, 46h, 0FFh, 6 - db 0E8h, 91h, 0EFh, 0A8h, 5, 0Fh, 84h, 96h, 0, 0A8h, 1 - db 74h, 8, 8Ah, 46h, 0FFh, 4, 3, 88h, 46h, 0FFh, 0C6h - db 46h, 0FEh, 0BAh, 0EBh, 79h, 80h, 7Eh, 0FFh, 6, 77h - db 51h, 8Ah, 46h, 0FFh, 0B4h, 0, 48h, 8Bh, 0D8h, 83h, 0FBh - db 5, 77h, 35h, 3, 0DBh - db 2Eh, 0FFh, 0A7h, 13h, 8Ch, 0C7h, 44h, 0Ah, 10h, 0, 81h - db 44h, 2, 0C0h, 1, 0EBh, 22h, 0C7h, 44h, 0Ah, 0F0h, 0FFh - db 81h, 6Ch, 2, 0C0h, 1, 0EBh, 16h, 0C7h, 44h, 0Ah, 0F8h - db 0FFh, 81h, 44h, 2, 80h, 1, 0EBh, 0Ah, 0C7h, 44h, 0Ah - db 8, 0, 81h, 6Ch, 2, 80h, 1, 0C7h, 44h, 0Ch, 0C0h, 0FEh - db 0C6h, 44h, 0Eh, 16h, 0C6h, 44h, 10h, 4, 0EBh, 16h, 8Dh - db 44h, 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h, 0E2h, 0AAh, 8Ah - db 46h, 0FEh, 4, 6, 88h, 46h, 0FEh, 0C6h, 44h, 10h, 7 - db 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah, 0C0h - db 76h, 0Bh, 0E8h, 8Fh, 0AAh, 8Bh, 0F0h, 0Bh, 0C0h, 0Fh - db 85h, 7Ch, 0FFh, 5Eh, 0C9h, 0C3h, 0, 0A5h, 8Bh, 0B1h - db 8Bh, 0BDh, 8Bh, 0C9h, 8Bh, 0C2h, 8Bh, 0CEh, 8Bh, 0C8h - db 2, 2 dup(0), 56h, 0C6h, 46h, 0FFh, 6, 0E8h, 0D9h, 0EEh - db 0A8h, 5, 0Fh, 84h, 0A6h, 0, 0A8h, 1, 74h, 8, 8Ah, 46h - db 0FFh, 4, 3, 88h, 46h, 0FFh, 0C6h, 46h, 0FEh, 0BAh, 0E9h - db 88h, 0, 80h, 7Eh, 0FFh, 6, 77h, 60h, 0C7h, 44h, 0Ch - db 0C0h, 0FEh, 8Ah, 46h, 0FFh, 0B4h, 0, 48h, 8Bh, 0D8h - db 83h, 0FBh, 5, 77h, 3Fh, 3, 0DBh, 2Eh, 0FFh, 0A7h, 0DAh - db 8Ch, 0C7h, 44h, 0Ah, 1Ch, 0, 0C7h, 44h, 0Ch, 0E0h, 0FEh - db 81h, 44h, 2, 0, 2, 0EBh, 27h, 0C7h, 44h, 0Ah, 0E4h - db 0FFh, 0C7h, 44h, 0Ch, 0E0h, 0FEh, 81h, 6Ch, 2, 0, 2 - db 0EBh, 16h, 0C7h, 44h, 0Ah, 0F8h, 0FFh, 81h, 44h, 2 - db 80h, 1, 0EBh, 0Ah, 0C7h, 44h, 0Ah, 8, 0, 81h, 6Ch, 2 - db 80h, 1, 0C7h, 44h, 0Ch, 0C0h, 0FEh, 0C6h, 44h, 0Eh - db 16h, 0C6h, 44h, 10h, 4, 0EBh, 16h, 8Dh, 44h, 0Ah, 50h - db 0FFh, 76h, 0FEh, 0E8h, 1Ah, 0AAh, 8Ah, 46h, 0FEh, 4 - db 6, 88h, 46h, 0FEh, 0C6h, 44h, 10h, 7, 8Ah, 46h, 0FFh - db 4, 0FFh, 88h, 46h, 0FFh, 0Ah, 0C0h, 76h, 0Bh, 0E8h - db 0C7h, 0A9h, 8Bh, 0F0h, 0Bh, 0C0h, 0Fh, 85h, 6Dh, 0FFh - db 5Eh, 0C9h, 0C3h, 63h, 8Ch, 74h, 8Ch, 85h, 8Ch, 91h - db 8Ch, 8Ah, 8Ch, 96h, 8Ch, 0C8h, 2, 2 dup(0), 56h, 0C6h - db 46h, 0FFh, 6, 0E8h, 12h, 0EEh, 0A8h, 5, 0Fh, 84h, 0E0h - db 0, 0A8h, 1, 0Fh, 84h, 0CFh, 0, 8Ah, 46h, 0FFh, 2 dup(4) - db 88h, 46h, 0FFh, 0E9h, 0C4h, 0, 80h, 7Eh, 0FFh, 6, 77h - db 6Eh, 0C7h, 44h, 0Ch, 0C0h, 0FEh, 8Ah, 46h, 0FFh, 0B4h - db 0, 48h, 8Bh, 0D8h, 83h, 0FBh, 5, 77h, 52h, 3, 0DBh - db 2Eh, 0FFh, 0A7h, 0E3h, 8Dh, 0C7h, 44h, 0Ah, 2Ah, 0 - db 0C7h, 44h, 0Ch, 0E0h, 0FEh, 81h, 44h, 2, 0, 2, 0EBh - db 3Ah, 0C7h, 44h, 0Ah, 0D6h, 0FFh, 0C7h, 44h, 0Ch, 0E0h - db 0FEh, 81h, 6Ch, 2, 0, 2, 0EBh, 29h, 0C7h, 44h, 0Ah - db 0F8h, 0FFh, 81h, 44h, 2, 80h, 1, 0EBh, 1Dh, 0C7h, 44h - db 0Ah, 8, 0, 0EBh, 11h, 0C7h, 44h, 0Ah, 8, 0, 81h, 44h - db 2, 80h, 1, 0EBh, 0Ah, 0C7h, 44h, 0Ah, 0F8h, 0FFh, 81h - db 6Ch, 2, 80h, 1, 0C6h, 44h, 0Eh, 16h, 0C6h, 44h, 10h - db 4, 0EBh, 44h, 8Ah, 46h, 0FFh, 0B4h, 0, 2Dh, 7, 0, 8Bh - db 0D8h, 83h, 0FBh, 3, 77h, 27h, 3, 0DBh, 2Eh, 0FFh, 0A7h - db 0DBh, 8Dh, 0C6h, 46h, 0FEh, 0B8h, 0EBh, 1Ah, 0C6h, 46h - db 0FEh, 0C0h, 81h, 6Ch, 2, 80h, 0, 0EBh - db 0Fh, 0C6h, 46h, 0FEh, 0C0h, 81h, 44h, 2, 80h, 0, 0EBh - db 4, 0C6h, 46h, 0FEh, 0C8h, 8Dh, 44h, 0Ah, 50h, 0FFh - db 76h, 0FEh, 0E8h, 11h, 0A9h, 0C6h, 44h, 10h, 7, 8Ah - db 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah, 0C0h, 76h - db 0Bh, 0E8h, 0C6h, 0A8h, 8Bh, 0F0h, 0Bh, 0C0h, 0Fh, 85h - db 31h, 0FFh, 5Eh, 0C9h, 0C3h, 93h, 8Dh, 99h, 8Dh, 0A4h - db 8Dh, 0AFh, 8Dh, 28h, 8Dh, 39h, 8Dh, 4Ah, 8Dh, 56h, 8Dh - db 5Dh, 8Dh, 69h, 8Dh, 0C8h, 2, 2 dup(0), 56h, 0C6h, 46h - db 0FFh, 1, 0E8h, 9, 0EDh, 0A8h, 9, 74h, 65h, 0A8h, 8 - db 74h, 58h, 8Ah, 46h, 0FFh, 4, 2, 88h, 46h, 0FFh, 0EBh - db 4Eh, 80h, 7Eh, 0FFh, 1, 75h, 10h, 6Ah, 0Fh, 0E8h, 0F8h - db 83h, 4, 0B8h, 88h, 46h, 0FEh, 0C6h, 44h, 10h, 9, 0EBh - db 22h, 80h, 7Eh, 0FFh, 3, 75h, 0Bh, 81h, 6Ch, 2, 80h - db 1, 0C6h, 46h, 0FEh, 0B8h, 0EBh, 9, 81h, 44h, 2, 80h - db 1, 0C6h, 46h, 0FEh, 0C8h, 0C6h, 44h, 0Eh, 16h, 0C6h - db 44h, 10h, 6, 8Dh, 44h, 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h - db 7Fh, 0A8h, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh - db 0Ah, 0C0h, 76h, 9, 0E8h, 38h, 0A8h, 8Bh, 0F0h, 0Bh - db 0C0h, 75h, 0A9h, 5Eh, 0C9h, 0C3h, 0C8h, 4, 2 dup(0) - db 56h, 0C6h, 46h, 0FFh, 2, 0E8h, 91h, 0ECh, 0A8h, 3, 74h - db 78h, 0A8h, 2, 74h, 4, 80h, 46h, 0FFh, 2, 24h, 1, 88h - db 46h, 0FDh, 0EBh, 60h, 80h, 7Eh, 0FFh, 2, 77h, 18h, 80h - db 7Eh, 0FFh, 2, 75h, 7, 81h, 6Ch, 2, 80h, 0, 0EBh, 5 - db 81h, 44h, 2, 80h, 0, 0C6h, 44h, 10h, 8, 0EBh, 36h, 80h - db 7Eh, 0FFh, 4, 75h, 0Bh, 81h, 6Ch, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0B8h, 0EBh, 13h, 81h, 44h, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0C8h, 80h, 7Eh, 0FDh, 0, 75h, 4, 0C6h, 46h, 0FFh - db 1, 0C6h, 44h, 0Eh, 16h, 0C6h, 44h, 10h, 6, 8Dh, 44h - db 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h, 0F4h, 0A7h, 8Ah, 46h - db 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah, 0C0h, 76h, 9, 0E8h - db 0ADh, 0A7h, 8Bh, 0F0h, 0Bh, 0C0h, 75h, 97h, 5Eh, 0C9h - db 0C3h, 0C8h, 4, 2 dup(0), 56h, 0C6h, 46h, 0FFh, 3, 0E8h - db 6, 0ECh, 0A8h, 3, 0Fh, 84h, 89h, 0, 0A8h, 2, 74h, 4 - db 80h, 46h, 0FFh, 2, 24h, 1, 88h, 46h, 0FDh, 0EBh, 71h - db 80h, 7Eh, 0FFh, 3, 77h, 18h, 80h, 7Eh, 0FFh, 3, 75h - db 4, 0C6h, 46h, 0FEh, 0B4h, 0C6h, 44h, 10h, 7, 8Ah, 46h - db 0FEh, 4, 6, 88h, 46h, 0FEh, 0EBh, 3Dh, 80h, 7Eh, 0FFh - db 5, 75h, 11h, 81h, 6Ch, 2, 80h, 1, 6Ah, 7, 0E8h, 0CFh - db 82h, 4, 0B4h, 88h, 46h, 0FEh, 0EBh, 19h, 81h, 44h, 2 - db 80h, 1, 6Ah, 7, 0E8h, 0BEh, 82h, 4, 0C4h, 88h, 46h - db 0FEh, 80h, 7Eh, 0FDh, 0, 75h, 4, 0C6h, 46h, 0FFh, 1 - db 0C7h, 44h, 0Ch, 20h, 0, 0C6h, 44h, 0Eh, 16h, 0C6h, 44h - db 10h, 6, 8Dh, 44h, 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h, 56h - db 0A7h, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah - db 0C0h, 76h, 9, 0E8h, 0Fh, 0A7h, 8Bh, 0F0h, 0Bh, 0C0h - db 75h, 86h, 5Eh, 0C9h, 0C3h, 0C8h, 4, 2 dup(0), 56h, 0C6h - db 46h, 0FFh, 3, 0E8h, 68h, 0EBh, 0A8h, 3, 0Fh, 84h, 0A1h - db 0, 0A8h, 2, 74h, 4, 80h - db 46h, 0FFh, 4, 24h, 1, 88h, 46h, 0FDh, 0E9h, 86h, 0 - db 80h, 7Eh, 0FFh, 3, 77h, 18h, 0C6h, 44h, 10h, 7, 80h - db 7Eh, 0FFh, 3, 75h, 4, 0C6h, 46h, 0FEh, 0B4h, 8Ah, 46h - db 0FEh, 4, 6, 88h, 46h, 0FEh, 0EBh, 52h, 8Ah, 46h, 0FFh - db 0B4h, 0, 2Dh, 4, 0, 8Bh, 0D8h, 83h, 0FBh, 3, 77h, 3Bh - db 3, 0DBh, 2Eh, 0FFh, 0A7h, 47h, 90h, 80h, 7Eh, 0FDh - db 0, 75h, 4, 0C6h, 46h, 0FFh, 1, 81h, 6Ch, 2, 80h, 1 - db 0C6h, 46h, 0FEh, 0B2h, 0EBh, 1Fh, 81h, 44h, 2, 80h - db 1, 0C6h, 46h, 0FEh, 0CEh, 0EBh, 14h, 81h, 6Ch, 2, 80h - db 1, 0C6h, 46h, 0FEh, 0BAh, 0EBh, 9, 81h, 44h, 2, 80h - db 1, 0C6h, 46h, 0FEh, 2 dup(0C6h), 44h, 0Eh, 16h, 0C6h - db 44h, 10h, 6, 8Dh, 44h, 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h - db 0A2h, 0A6h, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh - db 0Ah, 0C0h, 76h, 0Bh, 0E8h, 5Bh, 0A6h, 8Bh, 0F0h, 0Bh - db 0C0h, 0Fh, 85h, 6Fh, 0FFh, 5Eh, 0C9h, 0C3h, 0, 0E6h - db 8Fh, 0FBh, 8Fh, 6, 90h, 11h, 90h, 0C8h, 4, 2 dup(0) - db 56h, 0C6h, 46h, 0FFh, 4, 0E8h, 0A9h, 0EAh, 0A8h, 3 - db 0Fh, 84h, 0C3h, 0, 0A8h, 2, 74h, 4, 80h, 46h, 0FFh - db 4, 24h, 1, 88h, 46h, 0FDh, 0E9h, 0A8h, 0, 80h, 7Eh - db 0FFh, 4, 77h, 3Ah, 8Ah, 46h, 0FFh, 0B4h, 0, 48h, 8Bh - db 0D8h, 83h, 0FBh, 3, 77h, 27h, 3, 0DBh, 2Eh, 0FFh, 0A7h - db 30h, 91h, 0C6h, 46h, 0FEh, 0BAh, 0EBh, 1Ah, 0C6h, 46h - db 0FEh, 0C0h, 81h, 6Ch, 2, 80h, 0, 0EBh, 0Fh, 0C6h, 46h - db 0FEh, 0C0h, 81h, 44h, 2, 80h, 0, 0EBh, 4, 0C6h, 46h - db 0FEh, 2 dup(0C6h), 44h, 10h, 7, 0EBh, 52h, 8Ah, 46h - db 0FFh, 0B4h, 0, 2Dh, 5, 0, 8Bh, 0D8h, 83h, 0FBh, 3, 77h - db 3Bh, 3, 0DBh, 2Eh, 0FFh, 0A7h, 28h, 91h, 81h, 6Ch, 2 - db 80h, 1, 0C6h, 46h, 0FEh, 0B0h, 80h, 7Eh, 0FDh, 0, 75h - db 25h, 0C6h, 46h, 0FFh, 1, 0EBh, 1Fh, 81h, 44h, 2, 80h - db 1, 0C6h, 46h, 0FEh, 0D0h, 0EBh, 14h, 81h, 6Ch, 2, 80h - db 1, 0C6h, 46h, 0FEh, 0B8h, 0EBh, 9, 81h, 44h, 2, 80h - db 1, 0C6h, 46h, 0FEh, 0C8h, 0C6h, 44h, 0Eh, 16h, 0C6h - db 44h, 10h, 6, 8Dh, 44h, 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h - db 0C1h, 0A5h, 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh - db 0Ah, 0C0h, 76h, 0Bh, 0E8h, 7Ah, 0A5h, 8Bh, 0F0h, 0Bh - db 0C0h, 0Fh, 85h, 4Dh, 0FFh, 5Eh, 0C9h, 0C3h, 0, 0C7h - db 90h, 0DCh, 90h, 0E7h, 90h, 0F2h, 90h, 8Bh, 90h, 91h - db 90h, 9Ch, 90h, 0A7h, 90h, 0C8h, 4, 2 dup(0), 56h, 0C6h - db 46h, 0FFh, 4, 0E8h, 0C0h, 0E9h, 0A8h, 3, 0Fh, 84h, 0D9h - db 0, 0A8h, 2, 74h, 4, 80h, 46h, 0FFh, 6, 24h, 1, 88h - db 46h, 0FDh, 0E9h, 0BEh, 0, 80h, 7Eh, 0FFh, 4, 77h, 3Ah - db 8Ah, 46h, 0FFh, 0B4h, 0, 48h, 8Bh, 0D8h, 83h, 0FBh - db 3, 77h, 27h, 3, 0DBh, 2Eh, 0FFh, 0A7h, 32h, 92h, 0C6h - db 46h, 0FEh, 0BAh, 0EBh, 1Ah, 0C6h, 46h, 0FEh, 0C0h, 81h - db 6Ch, 2, 80h, 0, 0EBh, 0Fh, 0C6h, 46h, 0FEh, 0C0h, 81h - db 44h, 2, 80h, 0, 0EBh, 4, 0C6h, 46h, 0FEh, 2 dup(0C6h) - db 44h, 10h, 7, 0EBh, 68h, 8Ah, 46h, 0FFh, 0B4h, 0, 2Dh - db 5, 0, 8Bh, 0D8h, 83h, 0FBh, 5, 77h, 51h, 3, 0DBh, 2Eh - db 0FFh, 0A7h, 26h, 92h, 81h, 6Ch, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0B0h, 80h, 7Eh, 0FDh, 0, 75h, 3Bh, 0C6h, 46h - db 0FFh, 1, 0EBh, 35h, 81h, 44h, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0D0h, 0EBh, 2Ah, 81h, 6Ch, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0B7h, 0EBh, 1Fh, 81h, 44h, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0C9h, 0EBh, 14h, 81h, 6Ch, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0BEh, 0EBh, 9, 81h, 44h, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0C2h, 0C6h, 44h, 0Eh, 16h, 0C6h, 44h, 10h, 6 - db 8Dh, 44h, 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h, 0C2h, 0A4h - db 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah, 0C0h - db 76h, 0Bh, 0E8h, 7Bh, 0A4h, 8Bh, 0F0h, 0Bh, 0C0h, 0Fh - db 85h, 37h, 0FFh, 5Eh, 0C9h, 0C3h, 0B0h, 91h, 0C5h, 91h - db 0D0h, 91h, 0DBh, 91h, 0E6h, 91h, 0F1h, 91h, 74h, 91h - db 7Ah, 91h, 85h, 91h, 90h, 91h, 0C8h, 4, 2 dup(0), 56h - db 0C6h, 46h, 0FFh, 5, 0E8h, 0BEh, 0E8h, 0A8h, 3, 0Fh - db 84h, 0D5h, 0, 0A8h, 2, 74h, 4, 80h, 46h, 0FFh, 6, 24h - db 1, 88h, 46h, 0FDh, 0E9h, 0BAh, 0, 80h, 7Eh, 0FFh, 5 - db 77h, 36h, 8Ah, 46h, 0FFh, 0B4h, 0, 48h, 8Bh, 0D8h, 83h - db 0FBh, 4, 77h, 23h, 3, 0DBh, 2Eh, 0FFh, 0A7h, 31h, 93h - db 0C6h, 46h, 0FEh, 0B4h, 0EBh, 16h, 0C6h, 46h, 0FEh, 0BAh - db 0EBh, 10h, 0C6h, 46h, 0FEh, 0C0h, 0EBh, 0Ah, 0C6h, 46h - db 0FEh, 0C6h, 0EBh, 4, 0C6h, 46h, 0FEh, 0CCh, 0C6h, 44h - db 10h, 7, 0EBh, 68h, 8Ah, 46h, 0FFh, 0B4h, 0, 2Dh, 6 - db 0, 8Bh, 0D8h, 83h, 0FBh, 5, 77h, 51h, 3, 0DBh, 2Eh - db 0FFh, 0A7h, 25h, 93h, 81h, 6Ch, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0B0h, 80h, 7Eh, 0FDh, 0, 75h, 3Bh, 0C6h, 46h - db 0FFh, 1, 0EBh, 35h, 81h, 44h, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0D0h, 0EBh, 2Ah, 81h, 6Ch, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0B7h, 0EBh, 1Fh, 81h, 44h, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0C9h, 0EBh, 14h, 81h, 6Ch, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0BEh, 0EBh, 9, 81h, 44h, 2, 80h, 1, 0C6h, 46h - db 0FEh, 0C2h, 0C6h, 44h, 0Eh, 16h, 0C6h, 44h, 10h, 6 - db 8Dh, 44h, 0Ah, 50h, 0FFh, 76h, 0FEh, 0E8h, 0C4h, 0A3h - db 8Ah, 46h, 0FFh, 4, 0FFh, 88h, 46h, 0FFh, 0Ah, 0C0h - db 76h, 0Bh, 0E8h, 7Dh, 0A3h, 8Bh, 0F0h, 0Bh, 0C0h, 0Fh - db 85h, 3Bh, 0FFh, 5Eh, 0C9h, 0C3h, 0, 0AEh, 92h, 0C3h - db 92h, 0CEh, 92h, 0D9h, 92h, 0E4h, 92h, 0EFh, 92h, 76h - db 92h, 7Ch, 92h, 82h, 92h, 88h, 92h, 8Eh, 92h, 0C8h, 4 - db 2 dup(0), 56h, 0C6h, 46h, 0FFh, 5, 0E8h, 0BDh, 0E7h - db 0A8h, 3, 0Fh, 84h, 0EBh, 0, 0A8h, 2, 74h, 4, 80h, 46h - db 0FFh, 8, 24h, 1, 88h, 46h, 0FDh, 0E9h, 0D0h, 0, 80h - db 7Eh, 0FFh, 5, 77h, 36h, 8Ah, 46h, 0FFh, 0B4h, 0, 48h - db 8Bh, 0D8h, 83h, 0FBh, 4, 77h, 23h, 3, 0DBh, 2Eh, 0FFh - db 0A7h, 4Bh, 94h, 0C6h, 46h, 0FEh, 0B4h, 0EBh, 16h, 0C6h - db 46h, 0FEh, 0BAh, 0EBh, 10h, 0C6h, 46h, 0FEh, 0C0h, 0EBh - db 0Ah, 0C6h, 46h, 0FEh, 0C6h, 0EBh, 4, 0C6h, 46h, 0FEh - db 0CCh, 0C6h, 44h, 10h, 7, 0EBh, 7Eh, 8Ah, 46h, 0FFh - db 0B4h, 0, 2Dh, 6, 0, 8Bh, 0D8h, 83h, 0FBh, 7, 77h, 67h - db 3, 0DBh, 2Eh, 0FFh, 0A7h, 3Bh - db 94h, 81h, 6Ch, 2, 80h, 1, 0C6h, 46h, 0FEh, 0A8h, 80h - db 7Eh, 0FDh, 0, 75h, 51h, 0C6h, 46h, 0FFh, 1, 0EBh, 4Bh - db 81h, 44h, 2, 80h, 1, 0C6h, 46h, 0FEh, 0D8h, 0EBh, 40h - db 81h, 6Ch, 2, 80h, 1, 0C6h, 46h, 0FEh, 0B0h, 0EBh, 35h - db 81h, 44h, 2, 80h, 1, 0C6h, 46h, 0FEh, 0D0h, 0EBh, 2Ah - db 81h, 6Ch, 2, 80h, 1, 0C6h, 46h, 0FEh, 0B8h, 0EBh, 1Fh - db 81h, 44h, 2, 80h, 1, 0C6h, 46h, 0FEh, 0C8h, 0EBh, 14h - db 81h, 6Ch, 2, 80h, 1, 0C6h, 46h, 0FEh, 0C1h, 0EBh, 9 - db 81h, 44h, 2, 80h, 1, 0C6h, 46h, 0FEh, 0BFh, 0C6h, 44h - db 0Eh, 16h, 0C6h, 44h, 10h, 6, 8Dh, 44h, 0Ah, 50h, 0FFh - db 76h, 0FEh, 0E8h, 0ADh, 0A2h, 8Ah, 46h, 0FFh, 4, 0FFh - db 88h, 46h, 0FFh, 0Ah, 0C0h, 76h, 0Bh, 0E8h, 66h, 0A2h - db 8Bh, 0F0h, 0Bh, 0C0h, 0Fh, 85h, 25h, 0FFh, 5Eh, 0C9h - db 0C3h, 0AFh, 93h, 0C4h, 93h, 0CFh, 93h, 0DAh, 93h, 0E5h - db 93h, 0F0h, 93h, 0FBh, 93h, 6, 94h, 77h, 93h, 7Dh, 93h - db 83h, 93h, 89h, 93h, 8Fh, 93h, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12F9F proc near + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov byte ptr [bp+var_2+1], 3 + call sub_12914 + test al, 9 + jz loc_1308E + test al, 8 + jz loc_13083 + mov al, byte ptr [bp+var_2+1] + add al, 6 + mov byte ptr [bp+var_2+1], al + jmp loc_13083 +; --------------------------------------------------------------------------- + +loc_12FC2: + cmp byte ptr [bp+var_2+1], 3 + ja short loc_12FEB + cmp byte ptr [bp+var_2+1], 3 + jnz short loc_12FD2 + mov byte ptr [bp+var_2], 0B4h + +loc_12FD2: + mov byte ptr [si+10h], 6 + mov al, byte ptr [bp+var_2] + add al, 6 + mov byte ptr [bp+var_2], al + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + jmp loc_13077 +; --------------------------------------------------------------------------- + +loc_12FEB: + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + sub ax, 4 + mov bx, ax + cmp bx, 5 + ja short loc_1306F + add bx, bx + jmp cs:table_13091[bx] + +loc_13001: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 2 + mov word ptr [si+0Ah], 0FFEAh + mov word ptr [si+0Ch], 24h ; '$' + jmp short loc_1306F +; --------------------------------------------------------------------------- + +loc_13016: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 3 + mov word ptr [si+0Ah], 16h + mov word ptr [si+0Ch], 24h ; '$' + jmp short loc_1306F +; --------------------------------------------------------------------------- + +loc_1302B: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ah], 0FFF0h + mov word ptr [si+0Ch], 0FFD0h + jmp short loc_1306F +; --------------------------------------------------------------------------- + +loc_13040: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ah], 10h + mov word ptr [si+0Ch], 0FFD0h + jmp short loc_1306F +; --------------------------------------------------------------------------- + +loc_13055: + sub word ptr [si+2], 180h + jmp short loc_13061 +; --------------------------------------------------------------------------- + +loc_1305C: + add word ptr [si+2], 180h + +loc_13061: + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ah], 0 + mov word ptr [si+0Ch], 0FFC0h + +loc_1306F: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 0Ch + +loc_13077: + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_1308E + +loc_13083: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_12FC2 + +loc_1308E: + pop si + leave + retn +sub_12F9F endp + +; --------------------------------------------------------------------------- +table_13091 dw loc_13001 + dw loc_13016 + dw loc_1302B + dw loc_13040 + dw loc_13055 + dw loc_1305C + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1309D proc near + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov byte ptr [bp+var_2+1], 3 + call sub_12914 + test al, 9 + jz loc_13195 + test al, 8 + jz loc_1318A + mov al, byte ptr [bp+var_2+1] + add al, 6 + mov byte ptr [bp+var_2+1], al + jmp loc_1318A +; --------------------------------------------------------------------------- + +loc_130C0: + cmp byte ptr [bp+var_2+1], 3 + ja short loc_130E9 + mov byte ptr [si+10h], 6 + cmp byte ptr [bp+var_2+1], 3 + jnz short loc_130D4 + mov byte ptr [bp+var_2], 0B2h + +loc_130D4: + mov al, byte ptr [bp+var_2] + add al, 7 + mov byte ptr [bp+var_2], al + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + jmp loc_1317E +; --------------------------------------------------------------------------- + +loc_130E9: + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + sub ax, 4 + mov bx, ax + cmp bx, 5 + ja short loc_13176 + add bx, bx + jmp cs:table_13199[bx] + +loc_130FF: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 2 + mov word ptr [si+0Ah], 0FFEAh + mov word ptr [si+0Ch], 24h ; '$' + jmp short loc_13176 +; --------------------------------------------------------------------------- + +loc_13114: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 3 + mov word ptr [si+0Ah], 16h + mov word ptr [si+0Ch], 24h ; '$' + jmp short loc_13176 +; --------------------------------------------------------------------------- + +loc_13129: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ah], 0FFF0h + mov word ptr [si+0Ch], 0FFD0h + jmp short loc_13176 +; --------------------------------------------------------------------------- + +loc_1313E: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ah], 10h + mov word ptr [si+0Ch], 0FFD0h + jmp short loc_13176 +; --------------------------------------------------------------------------- + +loc_13153: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ah], 8 + jmp short loc_13171 +; --------------------------------------------------------------------------- + +loc_13163: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ah], 0FFF8h + +loc_13171: + mov word ptr [si+0Ch], 0FFC0h + +loc_13176: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 0Bh + +loc_1317E: + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_13195 + +loc_1318A: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_130C0 + +loc_13195: + pop si + leave + retn +sub_1309D endp + +; --------------------------------------------------------------------------- + db 0 +table_13199 dw loc_130FF + dw loc_13114 + dw loc_13129 + dw loc_1313E + dw loc_13153 + dw loc_13163 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_131A5 proc near + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov [bp+var_1], 4 + call sub_12914 + test al, 9 + jz loc_1329E + test al, 8 + jz short loc_131C4 + mov al, [bp+var_1] + add al, 8 + mov [bp+var_1], al + +loc_131C4: + mov di, 0FE80h + jmp loc_13293 +; --------------------------------------------------------------------------- + +loc_131CA: + cmp [bp+var_1], 4 + ja short loc_131E3 + add [si+2], di + mov byte ptr [si+10h], 5 + mov word ptr [si+0Ch], 0FF40h + add di, 100h + jmp loc_13287 +; --------------------------------------------------------------------------- + +loc_131E3: + mov al, [bp+var_1] + mov ah, 0 + sub ax, 5 + mov bx, ax + cmp bx, 7 + ja loc_1327F + add bx, bx + jmp cs:table_132A3[bx] + +loc_131FB: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 2 + mov word ptr [si+0Ah], 0FFEAh + mov word ptr [si+0Ch], 24h ; '$' + jmp short loc_1327F +; --------------------------------------------------------------------------- + +loc_13210: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 3 + mov word ptr [si+0Ah], 16h + mov word ptr [si+0Ch], 24h ; '$' + jmp short loc_1327F +; --------------------------------------------------------------------------- + +loc_13225: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ah], 0FFF0h + jmp short loc_13243 +; --------------------------------------------------------------------------- + +loc_13235: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ah], 10h + +loc_13243: + mov word ptr [si+0Ch], 0FFD0h + jmp short loc_1327F +; --------------------------------------------------------------------------- + +loc_1324A: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFB0h + jmp short loc_1327F +; --------------------------------------------------------------------------- + +loc_1325A: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFB0h + jmp short loc_1327F +; --------------------------------------------------------------------------- + +loc_1326A: + sub word ptr [si+2], 180h + jmp short loc_13276 +; --------------------------------------------------------------------------- + +loc_13271: + add word ptr [si+2], 180h + +loc_13276: + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFE0h + +loc_1327F: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 0Bh + +loc_13287: + mov al, [bp+var_1] + add al, 0FFh + mov [bp+var_1], al + or al, al + jbe short loc_1329E + +loc_13293: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_131CA + +loc_1329E: + pop di + pop si + leave + retn +sub_131A5 endp + +; --------------------------------------------------------------------------- + db 0 +table_132A3 dw loc_131FB + dw loc_13210 + dw loc_13225 + dw loc_13235 + dw loc_1324A + dw loc_1325A + dw loc_1326A + dw loc_13271 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_132B3 proc near + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov [bp+var_1], 4 + call sub_12914 + test al, 9 + jz loc_133D8 + test al, 8 + jz short loc_132D2 + mov al, [bp+var_1] + add al, 0Ah + mov [bp+var_1], al + +loc_132D2: + mov di, 0FE80h + jmp loc_133CD +; --------------------------------------------------------------------------- + +loc_132D8: + cmp [bp+var_1], 4 + ja short loc_132F1 + add [si+2], di + mov byte ptr [si+10h], 5 + mov word ptr [si+0Ch], 0FF40h + add di, 100h + jmp loc_133C1 +; --------------------------------------------------------------------------- + +loc_132F1: + mov al, [bp+var_1] + mov ah, 0 + sub ax, 5 + mov bx, ax + cmp bx, 9 + ja loc_133B9 + add bx, bx + jmp cs:table_133DD[bx] + +loc_13309: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 2 + mov word ptr [si+0Ah], 0FFE4h + mov word ptr [si+0Ch], 24h ; '$' + jmp loc_133B9 +; --------------------------------------------------------------------------- + +loc_1331F: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 3 + mov word ptr [si+0Ah], 1Ch + mov word ptr [si+0Ch], 24h ; '$' + jmp loc_133B9 +; --------------------------------------------------------------------------- + +loc_13335: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 3 + mov word ptr [si+0Ah], 20h ; ' ' + jmp short loc_13353 +; --------------------------------------------------------------------------- + +loc_13345: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 2 + mov word ptr [si+0Ah], 0FFE0h + +loc_13353: + mov word ptr [si+0Ch], 20h ; ' ' + jmp short loc_133B9 +; --------------------------------------------------------------------------- + +loc_1335A: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 30h ; '0' + mov word ptr [si+0Ah], 0FFF0h + jmp short loc_133B9 +; --------------------------------------------------------------------------- + +loc_1336F: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 30h ; '0' + mov word ptr [si+0Ah], 10h + jmp short loc_133B9 +; --------------------------------------------------------------------------- + +loc_13384: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFB0h + jmp short loc_133B9 +; --------------------------------------------------------------------------- + +loc_13394: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFB0h + jmp short loc_133B9 +; --------------------------------------------------------------------------- + +loc_133A4: + sub word ptr [si+2], 180h + jmp short loc_133B0 +; --------------------------------------------------------------------------- + +loc_133AB: + add word ptr [si+2], 180h + +loc_133B0: + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFE0h + +loc_133B9: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 0Bh + +loc_133C1: + mov al, [bp+var_1] + add al, 0FFh + mov [bp+var_1], al + or al, al + jbe short loc_133D8 + +loc_133CD: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_132D8 + +loc_133D8: + pop di + pop si + leave + retn +sub_132B3 endp + +; --------------------------------------------------------------------------- + db 0 +table_133DD dw loc_13309 + dw loc_1331F + dw loc_13335 + dw loc_13345 + dw loc_1335A + dw loc_1336F + dw loc_13384 + dw loc_13394 + dw loc_133A4 + dw loc_133AB + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_133F1 proc near + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov [bp+var_1], 4 + call sub_12914 + test al, 9 + jz loc_13516 + test al, 8 + jz short loc_13410 + mov al, [bp+var_1] + add al, 0Ah + mov [bp+var_1], al + +loc_13410: + mov di, 0FE80h + jmp loc_1350B +; --------------------------------------------------------------------------- + +loc_13416: + cmp [bp+var_1], 4 + ja short loc_1342F + add [si+2], di + mov byte ptr [si+10h], 4 + mov word ptr [si+0Ch], 0FF40h + add di, 100h + jmp loc_134FF +; --------------------------------------------------------------------------- + +loc_1342F: + mov al, [bp+var_1] + mov ah, 0 + sub ax, 5 + mov bx, ax + cmp bx, 9 + ja loc_134F7 + add bx, bx + jmp cs:table_1351B[bx] + +loc_13447: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 2 + mov word ptr [si+0Ah], 0FFE4h + mov word ptr [si+0Ch], 24h ; '$' + jmp loc_134F7 +; --------------------------------------------------------------------------- + +loc_1345D: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 3 + mov word ptr [si+0Ah], 1Ch + mov word ptr [si+0Ch], 24h ; '$' + jmp loc_134F7 +; --------------------------------------------------------------------------- + +loc_13473: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 3 + mov word ptr [si+0Ah], 20h ; ' ' + jmp short loc_13491 +; --------------------------------------------------------------------------- + +loc_13483: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 2 + mov word ptr [si+0Ah], 0FFE0h + +loc_13491: + mov word ptr [si+0Ch], 20h ; ' ' + jmp short loc_134F7 +; --------------------------------------------------------------------------- + +loc_13498: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 30h ; '0' + mov word ptr [si+0Ah], 0FFF0h + jmp short loc_134F7 +; --------------------------------------------------------------------------- + +loc_134AD: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 30h ; '0' + mov word ptr [si+0Ah], 10h + jmp short loc_134F7 +; --------------------------------------------------------------------------- + +loc_134C2: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFB0h + jmp short loc_134F7 +; --------------------------------------------------------------------------- + +loc_134D2: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFB0h + jmp short loc_134F7 +; --------------------------------------------------------------------------- + +loc_134E2: + sub word ptr [si+2], 180h + jmp short loc_134EE +; --------------------------------------------------------------------------- + +loc_134E9: + add word ptr [si+2], 180h + +loc_134EE: + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFE0h + +loc_134F7: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 0Ah + +loc_134FF: + mov al, [bp+var_1] + add al, 0FFh + mov [bp+var_1], al + or al, al + jbe short loc_13516 + +loc_1350B: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_13416 + +loc_13516: + pop di + pop si + leave + retn +sub_133F1 endp + +; --------------------------------------------------------------------------- + db 0 +table_1351B dw loc_13447 + dw loc_1345D + dw loc_13473 + dw loc_13483 + dw loc_13498 + dw loc_134AD + dw loc_134C2 + dw loc_134D2 + dw loc_134E2 + dw loc_134E9 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1352F proc near + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov [bp+var_1], 6 + call sub_12914 + test al, 9 + jz loc_13697 + test al, 8 + jz short loc_1354E + mov al, [bp+var_1] + add al, 0Ch + mov [bp+var_1], al + +loc_1354E: + mov di, 0FD80h + jmp loc_1368C +; --------------------------------------------------------------------------- + +loc_13554: + cmp [bp+var_1], 6 + ja short loc_1356D + add [si+2], di + mov byte ptr [si+10h], 4 + mov word ptr [si+0Ch], 0FF40h + add di, 100h + jmp loc_13680 +; --------------------------------------------------------------------------- + +loc_1356D: + mov al, [bp+var_1] + mov ah, 0 + sub ax, 7 + mov bx, ax + cmp bx, 0Dh + ja loc_13678 + add bx, bx + jmp cs:table_1369C[bx] + +loc_13585: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 2 + mov word ptr [si+0Ah], 0FFE0h + mov word ptr [si+0Ch], 24h ; '$' + jmp loc_13678 +; --------------------------------------------------------------------------- + +loc_1359B: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 3 + mov word ptr [si+0Ah], 20h ; ' ' + mov word ptr [si+0Ch], 24h ; '$' + jmp loc_13678 +; --------------------------------------------------------------------------- + +loc_135B1: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 3 + mov word ptr [si+0Ah], 20h ; ' ' + jmp short loc_135CF +; --------------------------------------------------------------------------- + +loc_135C1: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 2 + mov word ptr [si+0Ah], 0FFE0h + +loc_135CF: + mov word ptr [si+0Ch], 20h ; ' ' + jmp loc_13678 +; --------------------------------------------------------------------------- + +loc_135D7: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 30h ; '0' + jmp loc_13678 +; --------------------------------------------------------------------------- + +loc_135E8: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 30h ; '0' + jmp loc_13678 +; --------------------------------------------------------------------------- + +loc_135F9: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0 + mov word ptr [si+0Ah], 0FFF0h + jmp short loc_13678 +; --------------------------------------------------------------------------- + +loc_1360E: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0 + mov word ptr [si+0Ah], 10h + jmp short loc_13678 +; --------------------------------------------------------------------------- + +loc_13623: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FF80h + jmp short loc_13678 +; --------------------------------------------------------------------------- + +loc_13633: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FF80h + jmp short loc_13678 +; --------------------------------------------------------------------------- + +loc_13643: + sub word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFC0h + jmp short loc_13678 +; --------------------------------------------------------------------------- + +loc_13653: + add word ptr [si+2], 180h + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFC0h + jmp short loc_13678 +; --------------------------------------------------------------------------- + +loc_13663: + sub word ptr [si+2], 180h + jmp short loc_1366F +; --------------------------------------------------------------------------- + +loc_1366A: + add word ptr [si+2], 180h + +loc_1366F: + mov byte ptr [si+0Fh], 4 + mov word ptr [si+0Ch], 0FFF0h + +loc_13678: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 9 + +loc_13680: + mov al, [bp+var_1] + add al, 0FFh + mov [bp+var_1], al + or al, al + jbe short loc_13697 + +loc_1368C: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_13554 + +loc_13697: + pop di + pop si + leave + retn +sub_1352F endp + +; --------------------------------------------------------------------------- + db 0 +table_1369C dw loc_13585 + dw loc_1359B + dw loc_135B1 + dw loc_135C1 + dw loc_135D7 + dw loc_135E8 + dw loc_135F9 + dw loc_1360E + dw loc_13623 + dw loc_13633 + dw loc_13643 + dw loc_13653 + dw loc_13663 + dw loc_1366A + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_136B8 proc near + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov [bp+var_1], 2 + call sub_12914 + test al, 5 + jz short loc_13720 + test al, 1 + jz short loc_13717 + inc [bp+var_1] + jmp short loc_13717 +; --------------------------------------------------------------------------- + +loc_136D1: + cmp [bp+var_1], 2 + ja short loc_136F8 + cmp [bp+var_1], 2 + jnz short loc_136E4 + sub word ptr [si+2], 180h + jmp short loc_136E9 +; --------------------------------------------------------------------------- + +loc_136E4: + add word ptr [si+2], 180h + +loc_136E9: + mov word ptr [si+0Ch], 0FEC0h + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 5 + jmp short loc_1370B +; --------------------------------------------------------------------------- + +loc_136F8: + lea ax, [si+0Ah] + push ax + push 0Fh + call sub_C020 + add al, 0B8h + push ax + call sub_E4DE + mov byte ptr [si+10h], 8 + +loc_1370B: + mov al, [bp+var_1] + add al, 0FFh + mov [bp+var_1], al + or al, al + jbe short loc_13720 + +loc_13717: + call sub_E4A6 + mov si, ax + or ax, ax + jnz short loc_136D1 + +loc_13720: + pop si + leave + retn +sub_136B8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13723 proc near + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov [bp+var_1], 2 + call sub_12914 + test al, 5 + jz short loc_13798 + test al, 1 + jz short loc_1378F + mov al, [bp+var_1] + add al, 2 + mov [bp+var_1], al + jmp short loc_1378F +; --------------------------------------------------------------------------- + +loc_13741: + cmp [bp+var_1], 2 + ja short loc_13768 + cmp [bp+var_1], 2 + jnz short loc_13754 + sub word ptr [si+2], 180h + jmp short loc_13759 +; --------------------------------------------------------------------------- + +loc_13754: + add word ptr [si+2], 180h + +loc_13759: + mov word ptr [si+0Ch], 0FEC0h + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 5 + jmp short loc_13783 +; --------------------------------------------------------------------------- + +loc_13768: + cmp [bp+var_1], 4 + jnz short loc_13775 + sub word ptr [si+2], 80h + jmp short loc_1377A +; --------------------------------------------------------------------------- + +loc_13775: + add word ptr [si+2], 80h + +loc_1377A: + mov word ptr [si+0Ch], 0FF40h + mov byte ptr [si+10h], 7 + +loc_13783: + mov al, [bp+var_1] + add al, 0FFh + mov [bp+var_1], al + or al, al + jbe short loc_13798 + +loc_1378F: + call sub_E4A6 + mov si, ax + or ax, ax + jnz short loc_13741 + +loc_13798: + pop si + leave + retn +sub_13723 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1379B proc near + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov [bp+var_1], 4 + call sub_12914 + test al, 5 + jz short loc_13828 + test al, 1 + jz short loc_1381F + mov al, [bp+var_1] + add al, 2 + mov [bp+var_1], al + jmp short loc_1381F +; --------------------------------------------------------------------------- + +loc_137B9: + cmp [bp+var_1], 4 + ja short loc_137F8 + mov al, [bp+var_1] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 3 + ja short loc_137E9 + add bx, bx + jmp cs:table_1382C[bx] + +loc_137D3: + mov word ptr [si+0Ah], 0FFF0h + +loc_137D8: + sub word ptr [si+2], 180h + jmp short loc_137E9 +; --------------------------------------------------------------------------- + +loc_137DF: + mov word ptr [si+0Ah], 10h + +loc_137E4: + add word ptr [si+2], 180h + +loc_137E9: + mov word ptr [si+0Ch], 0FEC0h + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 4 + jmp short loc_13813 +; --------------------------------------------------------------------------- + +loc_137F8: + cmp [bp+var_1], 6 + jnz short loc_13805 + sub word ptr [si+2], 80h + jmp short loc_1380A +; --------------------------------------------------------------------------- + +loc_13805: + add word ptr [si+2], 80h + +loc_1380A: + mov word ptr [si+0Ch], 0FF40h + mov byte ptr [si+10h], 7 + +loc_13813: + mov al, [bp+var_1] + add al, 0FFh + mov [bp+var_1], al + or al, al + jbe short loc_13828 + +loc_1381F: + call sub_E4A6 + mov si, ax + or ax, ax + jnz short loc_137B9 + +loc_13828: + pop si + leave + retn +sub_1379B endp + +; --------------------------------------------------------------------------- + db 0 +table_1382C dw loc_137DF + dw loc_137D3 + dw loc_137E4 + dw loc_137D8 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13834 proc near + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov byte ptr [bp+var_2+1], 4 + call sub_12914 + test al, 5 + jz short loc_138C0 + test al, 1 + jz short loc_13850 + mov al, byte ptr [bp+var_2+1] + add al, 3 + mov byte ptr [bp+var_2+1], al + +loc_13850: + mov byte ptr [bp+var_2], 0BAh + jmp short loc_138B7 +; --------------------------------------------------------------------------- + +loc_13856: + cmp byte ptr [bp+var_2+1], 4 + ja short loc_13895 + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 3 + ja short loc_13886 + add bx, bx + jmp cs:table_138C3[bx] + +loc_13870: + mov word ptr [si+0Ah], 10h + +loc_13875: + sub word ptr [si+2], 180h + jmp short loc_13886 +; --------------------------------------------------------------------------- + +loc_1387C: + mov word ptr [si+0Ah], 0FFF0h + +loc_13881: + add word ptr [si+2], 180h + +loc_13886: + mov word ptr [si+0Ch], 0FEC0h + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 4 + jmp short loc_138AB +; --------------------------------------------------------------------------- + +loc_13895: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2] + add al, 6 + mov byte ptr [bp+var_2], al + mov byte ptr [si+10h], 7 + +loc_138AB: + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_138C0 + +loc_138B7: + call sub_E4A6 + mov si, ax + or ax, ax + jnz short loc_13856 + +loc_138C0: + pop si + leave + retn +sub_13834 endp + +; --------------------------------------------------------------------------- +table_138C3 dw loc_13870 + dw loc_1387C + dw loc_13881 + dw loc_13875 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_138CB proc near + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov byte ptr [bp+var_2+1], 4 + call sub_12914 + test al, 5 + jz loc_1396C + test al, 1 + jz short loc_138E9 + mov al, byte ptr [bp+var_2+1] + add al, 3 + mov byte ptr [bp+var_2+1], al + +loc_138E9: + mov byte ptr [bp+var_2], 0BAh + jmp short loc_13963 +; --------------------------------------------------------------------------- + +loc_138EF: + cmp byte ptr [bp+var_2+1], 4 + ja short loc_13941 + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 3 + ja short loc_13932 + add bx, bx + jmp cs:table_1396F[bx] + +loc_13909: + mov word ptr [si+0Ah], 10h + add word ptr [si+2], 180h + jmp short loc_13932 +; --------------------------------------------------------------------------- + +loc_13915: + mov word ptr [si+0Ah], 0FFF0h + jmp short loc_1392D +; --------------------------------------------------------------------------- + +loc_1391C: + mov word ptr [si+0Ah], 0FFF8h + add word ptr [si+2], 180h + jmp short loc_13932 +; --------------------------------------------------------------------------- + +loc_13928: + mov word ptr [si+0Ah], 8 + +loc_1392D: + sub word ptr [si+2], 180h + +loc_13932: + mov word ptr [si+0Ch], 0FEC0h + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 4 + jmp short loc_13957 +; --------------------------------------------------------------------------- + +loc_13941: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2] + add al, 6 + mov byte ptr [bp+var_2], al + mov byte ptr [si+10h], 7 + +loc_13957: + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_1396C + +loc_13963: + call sub_E4A6 + mov si, ax + or ax, ax + jnz short loc_138EF + +loc_1396C: + pop si + leave + retn +sub_138CB endp + +; --------------------------------------------------------------------------- +table_1396F dw loc_13909 + dw loc_13915 + dw loc_1391C + dw loc_13928 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13977 proc near + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov byte ptr [bp+var_2+1], 6 + call sub_12914 + test al, 5 + jz loc_13A1F + test al, 1 + jz short loc_13995 + mov al, byte ptr [bp+var_2+1] + add al, 3 + mov byte ptr [bp+var_2+1], al + +loc_13995: + mov byte ptr [bp+var_2], 0BAh + jmp short loc_13A14 +; --------------------------------------------------------------------------- + +loc_1399B: + cmp byte ptr [bp+var_2+1], 6 + ja short loc_139F2 + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 5 + ja short loc_139E3 + add bx, bx + jmp cs:table_13A23[bx] + +loc_139B5: + mov word ptr [si+0Ah], 10h + add word ptr [si+2], 1C0h + jmp short loc_139E3 +; --------------------------------------------------------------------------- + +loc_139C1: + mov word ptr [si+0Ah], 0FFF0h + sub word ptr [si+2], 1C0h + jmp short loc_139E3 +; --------------------------------------------------------------------------- + +loc_139CD: + mov word ptr [si+0Ah], 0FFF8h + +loc_139D2: + add word ptr [si+2], 180h + jmp short loc_139E3 +; --------------------------------------------------------------------------- + +loc_139D9: + mov word ptr [si+0Ah], 8 + +loc_139DE: + sub word ptr [si+2], 180h + +loc_139E3: + mov word ptr [si+0Ch], 0FEC0h + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 4 + jmp short loc_13A08 +; --------------------------------------------------------------------------- + +loc_139F2: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2] + add al, 6 + mov byte ptr [bp+var_2], al + mov byte ptr [si+10h], 7 + +loc_13A08: + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_13A1F + +loc_13A14: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_1399B + +loc_13A1F: + pop si + leave + retn +sub_13977 endp + +; --------------------------------------------------------------------------- + db 0 +table_13A23 dw loc_139B5 + dw loc_139C1 + dw loc_139CD + dw loc_139D9 + dw loc_139D2 + dw loc_139DE + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13A2F proc near + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov byte ptr [bp+var_2+1], 6 + call sub_12914 + test al, 5 + jz loc_13AE7 + test al, 1 + jz short loc_13A4D + mov al, byte ptr [bp+var_2+1] + add al, 3 + mov byte ptr [bp+var_2+1], al + +loc_13A4D: + mov byte ptr [bp+var_2], 0BAh + jmp loc_13ADC +; --------------------------------------------------------------------------- + +loc_13A54: + cmp byte ptr [bp+var_2+1], 6 + ja short loc_13ABA + mov word ptr [si+0Ch], 0FEC0h + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 5 + ja short loc_13AAB + add bx, bx + jmp cs:table_13AEA[bx] + +loc_13A73: + mov word ptr [si+0Ah], 1Ch + mov word ptr [si+0Ch], 0FEE0h + add word ptr [si+2], 200h + jmp short loc_13AAB +; --------------------------------------------------------------------------- + +loc_13A84: + mov word ptr [si+0Ah], 0FFE4h + mov word ptr [si+0Ch], 0FEE0h + sub word ptr [si+2], 200h + jmp short loc_13AAB +; --------------------------------------------------------------------------- + +loc_13A95: + mov word ptr [si+0Ah], 0FFF8h + +loc_13A9A: + add word ptr [si+2], 180h + jmp short loc_13AAB +; --------------------------------------------------------------------------- + +loc_13AA1: + mov word ptr [si+0Ah], 8 + +loc_13AA6: + sub word ptr [si+2], 180h + +loc_13AAB: + mov word ptr [si+0Ch], 0FEC0h + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 4 + jmp short loc_13AD0 +; --------------------------------------------------------------------------- + +loc_13ABA: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2] + add al, 6 + mov byte ptr [bp+var_2], al + mov byte ptr [si+10h], 7 + +loc_13AD0: + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_13AE7 + +loc_13ADC: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_13A54 + +loc_13AE7: + pop si + leave + retn +sub_13A2F endp + +; --------------------------------------------------------------------------- +table_13AEA dw loc_13A73 + dw loc_13A84 + dw loc_13A95 + dw loc_13AA1 + dw loc_13A9A + dw loc_13AA6 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13AF6 proc near + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov byte ptr [bp+var_2+1], 6 + call sub_12914 + test al, 5 + jz loc_13BE8 + test al, 1 + jz loc_13BDD + mov al, byte ptr [bp+var_2+1] + add al, 4 + mov byte ptr [bp+var_2+1], al + jmp loc_13BDD +; --------------------------------------------------------------------------- + +loc_13B19: + cmp byte ptr [bp+var_2+1], 6 + ja short loc_13B8D + mov word ptr [si+0Ch], 0FEC0h + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 5 + ja short loc_13B83 + add bx, bx + jmp word ptr cs:table_13BF3[bx] + +loc_13B38: + mov word ptr [si+0Ah], 2Ah ; '*' + mov word ptr [si+0Ch], 0FEE0h + add word ptr [si+2], 200h + jmp short loc_13B83 +; --------------------------------------------------------------------------- + +loc_13B49: + mov word ptr [si+0Ah], 0FFD6h + mov word ptr [si+0Ch], 0FEE0h + sub word ptr [si+2], 200h + jmp short loc_13B83 +; --------------------------------------------------------------------------- + +loc_13B5A: + mov word ptr [si+0Ah], 0FFF8h + add word ptr [si+2], 180h + jmp short loc_13B83 +; --------------------------------------------------------------------------- + +loc_13B66: + mov word ptr [si+0Ah], 8 + jmp short loc_13B7E +; --------------------------------------------------------------------------- + +loc_13B6D: + mov word ptr [si+0Ah], 8 + add word ptr [si+2], 180h + jmp short loc_13B83 +; --------------------------------------------------------------------------- + +loc_13B79: + mov word ptr [si+0Ah], 0FFF8h + +loc_13B7E: + sub word ptr [si+2], 180h + +loc_13B83: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 4 + jmp short loc_13BD1 +; --------------------------------------------------------------------------- + +loc_13B8D: + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + sub ax, 7 + mov bx, ax + cmp bx, 3 + ja short loc_13BC3 + add bx, bx + jmp word ptr cs:table_13BEB[bx] + +loc_13BA3: + mov byte ptr [bp+var_2], 0B8h + jmp short loc_13BC3 +; --------------------------------------------------------------------------- + +loc_13BA9: + mov byte ptr [bp+var_2], 0C0h + sub word ptr [si+2], 80h + jmp short loc_13BC3 +; --------------------------------------------------------------------------- + +loc_13BB4: + mov byte ptr [bp+var_2], 0C0h + add word ptr [si+2], 80h + jmp short loc_13BC3 +; --------------------------------------------------------------------------- + +loc_13BBF: + mov byte ptr [bp+var_2], 0C8h + +loc_13BC3: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov byte ptr [si+10h], 7 + +loc_13BD1: + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_13BE8 + +loc_13BDD: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_13B19 + +loc_13BE8: + pop si + leave + retn +sub_13AF6 endp + +; --------------------------------------------------------------------------- +table_13BEB dw loc_13BA3 + dw loc_13BA9 + dw loc_13BB4 + dw loc_13BBF +table_13BF3 dw loc_13B38 + dw loc_13B49 + dw loc_13B5A + dw loc_13B66 + dw loc_13B6D + dw loc_13B79 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13BFF proc near + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov byte ptr [bp+var_2+1], 1 + call sub_12914 + test al, 9 + jz short loc_13C74 + test al, 8 + jz short loc_13C6B + mov al, byte ptr [bp+var_2+1] + add al, 2 + mov byte ptr [bp+var_2+1], al + jmp short loc_13C6B +; --------------------------------------------------------------------------- + +loc_13C1D: + cmp byte ptr [bp+var_2+1], 1 + jnz short loc_13C33 + push 0Fh + call sub_C020 + add al, 0B8h + mov byte ptr [bp+var_2], al + mov byte ptr [si+10h], 9 + jmp short loc_13C55 +; --------------------------------------------------------------------------- + +loc_13C33: + cmp byte ptr [bp+var_2+1], 3 + jnz short loc_13C44 + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B8h + jmp short loc_13C4D +; --------------------------------------------------------------------------- + +loc_13C44: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0C8h + +loc_13C4D: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 6 + +loc_13C55: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_13C74 + +loc_13C6B: + call sub_E4A6 + mov si, ax + or ax, ax + jnz short loc_13C1D + +loc_13C74: + pop si + leave + retn +sub_13BFF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13C77 proc near + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov byte ptr [bp+var_2+1], 2 + call sub_12914 + test al, 3 + jz short loc_13CFF + test al, 2 + jz short loc_13C8F + add byte ptr [bp+var_2+1], 2 + +loc_13C8F: + and al, 1 + mov [bp+var_3], al + jmp short loc_13CF6 +; --------------------------------------------------------------------------- + +loc_13C96: + cmp byte ptr [bp+var_2+1], 2 + ja short loc_13CB4 + cmp byte ptr [bp+var_2+1], 2 + jnz short loc_13CA9 + sub word ptr [si+2], 80h + jmp short loc_13CAE +; --------------------------------------------------------------------------- + +loc_13CA9: + add word ptr [si+2], 80h + +loc_13CAE: + mov byte ptr [si+10h], 8 + jmp short loc_13CEA +; --------------------------------------------------------------------------- + +loc_13CB4: + cmp byte ptr [bp+var_2+1], 4 + jnz short loc_13CC5 + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B8h + jmp short loc_13CD8 +; --------------------------------------------------------------------------- + +loc_13CC5: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0C8h + cmp [bp+var_3], 0 + jnz short loc_13CD8 + mov byte ptr [bp+var_2+1], 1 + +loc_13CD8: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 6 + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + +loc_13CEA: + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_13CFF + +loc_13CF6: + call sub_E4A6 + mov si, ax + or ax, ax + jnz short loc_13C96 + +loc_13CFF: + pop si + leave + retn +sub_13C77 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13D02 proc near + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov byte ptr [bp+var_2+1], 3 + call sub_12914 + test al, 3 + jz loc_13D9D + test al, 2 + jz short loc_13D1C + add byte ptr [bp+var_2+1], 2 + +loc_13D1C: + and al, 1 + mov [bp+var_3], al + jmp short loc_13D94 +; --------------------------------------------------------------------------- + +loc_13D23: + cmp byte ptr [bp+var_2+1], 3 + ja short loc_13D41 + cmp byte ptr [bp+var_2+1], 3 + jnz short loc_13D33 + mov byte ptr [bp+var_2], 0B4h + +loc_13D33: + mov byte ptr [si+10h], 7 + mov al, byte ptr [bp+var_2] + add al, 6 + mov byte ptr [bp+var_2], al + jmp short loc_13D7E +; --------------------------------------------------------------------------- + +loc_13D41: + cmp byte ptr [bp+var_2+1], 5 + jnz short loc_13D58 + sub word ptr [si+2], 180h + push 7 + call sub_C020 + add al, 0B4h + mov byte ptr [bp+var_2], al + jmp short loc_13D71 +; --------------------------------------------------------------------------- + +loc_13D58: + add word ptr [si+2], 180h + push 7 + call sub_C020 + add al, 0C4h ; 'A' + mov byte ptr [bp+var_2], al + cmp [bp+var_3], 0 + jnz short loc_13D71 + mov byte ptr [bp+var_2+1], 1 + +loc_13D71: + mov word ptr [si+0Ch], 20h ; ' ' + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 6 + +loc_13D7E: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_13D9D + +loc_13D94: + call sub_E4A6 + mov si, ax + or ax, ax + jnz short loc_13D23 + +loc_13D9D: + pop si + leave + retn +sub_13D02 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13DA0 proc near + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov byte ptr [bp+var_2+1], 3 + call sub_12914 + test al, 3 + jz loc_13E53 + test al, 2 + jz short loc_13DBA + add byte ptr [bp+var_2+1], 4 + +loc_13DBA: + and al, 1 + mov [bp+var_3], al + jmp loc_13E48 +; --------------------------------------------------------------------------- + +loc_13DC2: + cmp byte ptr [bp+var_2+1], 3 + ja short loc_13DE0 + mov byte ptr [si+10h], 7 + cmp byte ptr [bp+var_2+1], 3 + jnz short loc_13DD6 + mov byte ptr [bp+var_2], 0B4h + +loc_13DD6: + mov al, byte ptr [bp+var_2] + add al, 6 + mov byte ptr [bp+var_2], al + jmp short loc_13E32 +; --------------------------------------------------------------------------- + +loc_13DE0: + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + sub ax, 4 + mov bx, ax + cmp bx, 3 + ja short loc_13E2A + add bx, bx + jmp cs:table_13E57[bx] + +loc_13DF6: + cmp [bp+var_3], 0 + jnz short loc_13E00 + mov byte ptr [bp+var_2+1], 1 + +loc_13E00: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B2h + jmp short loc_13E2A +; --------------------------------------------------------------------------- + +loc_13E0B: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0CEh + jmp short loc_13E2A +; --------------------------------------------------------------------------- + +loc_13E16: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0BAh + jmp short loc_13E2A +; --------------------------------------------------------------------------- + +loc_13E21: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0C6h + +loc_13E2A: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 6 + +loc_13E32: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_13E53 + +loc_13E48: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_13DC2 + +loc_13E53: + pop si + leave + retn +sub_13DA0 endp + +; --------------------------------------------------------------------------- + db 0 +table_13E57 dw loc_13DF6 + dw loc_13E0B + dw loc_13E16 + dw loc_13E21 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13E5F proc near + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov byte ptr [bp+var_2+1], 4 + call sub_12914 + test al, 3 + jz loc_13F34 + test al, 2 + jz short loc_13E79 + add byte ptr [bp+var_2+1], 4 + +loc_13E79: + and al, 1 + mov [bp+var_3], al + jmp loc_13F29 +; --------------------------------------------------------------------------- + +loc_13E81: + cmp byte ptr [bp+var_2+1], 4 + ja short loc_13EC1 + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 3 + ja short loc_13EBB + add bx, bx + jmp cs:table_13F40[bx] + +loc_13E9B: + mov byte ptr [bp+var_2], 0BAh + jmp short loc_13EBB +; --------------------------------------------------------------------------- + +loc_13EA1: + mov byte ptr [bp+var_2], 0C0h + sub word ptr [si+2], 80h + jmp short loc_13EBB +; --------------------------------------------------------------------------- + +loc_13EAC: + mov byte ptr [bp+var_2], 0C0h + add word ptr [si+2], 80h + jmp short loc_13EBB +; --------------------------------------------------------------------------- + +loc_13EB7: + mov byte ptr [bp+var_2], 0C6h + +loc_13EBB: + mov byte ptr [si+10h], 7 + jmp short loc_13F13 +; --------------------------------------------------------------------------- + +loc_13EC1: + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + sub ax, 5 + mov bx, ax + cmp bx, 3 + ja short loc_13F0B + add bx, bx + jmp cs:table_13F38[bx] + +loc_13ED7: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B0h + cmp [bp+var_3], 0 + jnz short loc_13F0B + mov byte ptr [bp+var_2+1], 1 + jmp short loc_13F0B +; --------------------------------------------------------------------------- + +loc_13EEC: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0D0h + jmp short loc_13F0B +; --------------------------------------------------------------------------- + +loc_13EF7: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B8h + jmp short loc_13F0B +; --------------------------------------------------------------------------- + +loc_13F02: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0C8h + +loc_13F0B: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 6 + +loc_13F13: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_13F34 + +loc_13F29: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_13E81 + +loc_13F34: + pop si + leave + retn +sub_13E5F endp + +; --------------------------------------------------------------------------- + db 0 +table_13F38 dw loc_13ED7 + dw loc_13EEC + dw loc_13EF7 + dw loc_13F02 +table_13F40 dw loc_13E9B + dw loc_13EA1 + dw loc_13EAC + dw loc_13EB7 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13F48 proc near + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov byte ptr [bp+var_2+1], 4 + call sub_12914 + test al, 3 + jz loc_14033 + test al, 2 + jz short loc_13F62 + add byte ptr [bp+var_2+1], 6 + +loc_13F62: + and al, 1 + mov [bp+var_3], al + jmp loc_14028 +; --------------------------------------------------------------------------- + +loc_13F6A: + cmp byte ptr [bp+var_2+1], 4 + ja short loc_13FAA + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 3 + ja short loc_13FA4 + add bx, bx + jmp cs:table_14042[bx] + +loc_13F84: + mov byte ptr [bp+var_2], 0BAh + jmp short loc_13FA4 +; --------------------------------------------------------------------------- + +loc_13F8A: + mov byte ptr [bp+var_2], 0C0h + sub word ptr [si+2], 80h + jmp short loc_13FA4 +; --------------------------------------------------------------------------- + +loc_13F95: + mov byte ptr [bp+var_2], 0C0h + add word ptr [si+2], 80h + jmp short loc_13FA4 +; --------------------------------------------------------------------------- + +loc_13FA0: + mov byte ptr [bp+var_2], 0C6h + +loc_13FA4: + mov byte ptr [si+10h], 7 + jmp short loc_14012 +; --------------------------------------------------------------------------- + +loc_13FAA: + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + sub ax, 5 + mov bx, ax + cmp bx, 5 + ja short loc_1400A + add bx, bx + jmp cs:table_14036[bx] + +loc_13FC0: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B0h + cmp [bp+var_3], 0 + jnz short loc_1400A + mov byte ptr [bp+var_2+1], 1 + jmp short loc_1400A +; --------------------------------------------------------------------------- + +loc_13FD5: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0D0h + jmp short loc_1400A +; --------------------------------------------------------------------------- + +loc_13FE0: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B7h + jmp short loc_1400A +; --------------------------------------------------------------------------- + +loc_13FEB: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0C9h + jmp short loc_1400A +; --------------------------------------------------------------------------- + +loc_13FF6: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0BEh + jmp short loc_1400A +; --------------------------------------------------------------------------- + +loc_14001: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0C2h + +loc_1400A: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 6 + +loc_14012: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_14033 + +loc_14028: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_13F6A + +loc_14033: + pop si + leave + retn +sub_13F48 endp + +; --------------------------------------------------------------------------- +table_14036 dw loc_13FC0 + dw loc_13FD5 + dw loc_13FE0 + dw loc_13FEB + dw loc_13FF6 + dw loc_14001 +table_14042 dw loc_13F84 + dw loc_13F8A + dw loc_13F95 + dw loc_13FA0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1404A proc near + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov byte ptr [bp+var_2+1], 5 + call sub_12914 + test al, 3 + jz loc_14131 + test al, 2 + jz short loc_14064 + add byte ptr [bp+var_2+1], 6 + +loc_14064: + and al, 1 + mov [bp+var_3], al + jmp loc_14126 +; --------------------------------------------------------------------------- + +loc_1406C: + cmp byte ptr [bp+var_2+1], 5 + ja short loc_140A8 + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 4 + ja short loc_140A2 + add bx, bx + jmp cs:table_14141[bx] + +loc_14086: + mov byte ptr [bp+var_2], 0B4h + jmp short loc_140A2 +; --------------------------------------------------------------------------- + +loc_1408C: + mov byte ptr [bp+var_2], 0BAh + jmp short loc_140A2 +; --------------------------------------------------------------------------- + +loc_14092: + mov byte ptr [bp+var_2], 0C0h + jmp short loc_140A2 +; --------------------------------------------------------------------------- + +loc_14098: + mov byte ptr [bp+var_2], 0C6h + jmp short loc_140A2 +; --------------------------------------------------------------------------- + +loc_1409E: + mov byte ptr [bp+var_2], 0CCh + +loc_140A2: + mov byte ptr [si+10h], 7 + jmp short loc_14110 +; --------------------------------------------------------------------------- + +loc_140A8: + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + sub ax, 6 + mov bx, ax + cmp bx, 5 + ja short loc_14108 + add bx, bx + jmp cs:table_14135[bx] + +loc_140BE: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B0h + cmp [bp+var_3], 0 + jnz short loc_14108 + mov byte ptr [bp+var_2+1], 1 + jmp short loc_14108 +; --------------------------------------------------------------------------- + +loc_140D3: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0D0h + jmp short loc_14108 +; --------------------------------------------------------------------------- + +loc_140DE: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B7h + jmp short loc_14108 +; --------------------------------------------------------------------------- + +loc_140E9: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0C9h + jmp short loc_14108 +; --------------------------------------------------------------------------- + +loc_140F4: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0BEh + jmp short loc_14108 +; --------------------------------------------------------------------------- + +loc_140FF: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0C2h + +loc_14108: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 6 + +loc_14110: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_14131 + +loc_14126: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_1406C + +loc_14131: + pop si + leave + retn +sub_1404A endp + +; --------------------------------------------------------------------------- + db 0 +table_14135 dw loc_140BE + dw loc_140D3 + dw loc_140DE + dw loc_140E9 + dw loc_140F4 + dw loc_140FF +table_14141 dw loc_14086 + dw loc_1408C + dw loc_14092 + dw loc_14098 + dw loc_1409E + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1414B proc near + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov byte ptr [bp+var_2+1], 5 + call sub_12914 + test al, 3 + jz loc_14248 + test al, 2 + jz short loc_14165 + add byte ptr [bp+var_2+1], 8 + +loc_14165: + and al, 1 + mov [bp+var_3], al + jmp loc_1423D +; --------------------------------------------------------------------------- + +loc_1416D: + cmp byte ptr [bp+var_2+1], 5 + ja short loc_141A9 + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 4 + ja short loc_141A3 + add bx, bx + jmp cs:table_1425B[bx] + +loc_14187: + mov byte ptr [bp+var_2], 0B4h + jmp short loc_141A3 +; --------------------------------------------------------------------------- + +loc_1418D: + mov byte ptr [bp+var_2], 0BAh + jmp short loc_141A3 +; --------------------------------------------------------------------------- + +loc_14193: + mov byte ptr [bp+var_2], 0C0h + jmp short loc_141A3 +; --------------------------------------------------------------------------- + +loc_14199: + mov byte ptr [bp+var_2], 0C6h + jmp short loc_141A3 +; --------------------------------------------------------------------------- + +loc_1419F: + mov byte ptr [bp+var_2], 0CCh + +loc_141A3: + mov byte ptr [si+10h], 7 + jmp short loc_14227 +; --------------------------------------------------------------------------- + +loc_141A9: + mov al, byte ptr [bp+var_2+1] + mov ah, 0 + sub ax, 6 + mov bx, ax + cmp bx, 7 + ja short loc_1421F + add bx, bx + jmp cs:table_1424B[bx] + +loc_141BF: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0A8h + cmp [bp+var_3], 0 + jnz short loc_1421F + mov byte ptr [bp+var_2+1], 1 + jmp short loc_1421F +; --------------------------------------------------------------------------- + +loc_141D4: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0D8h + jmp short loc_1421F +; --------------------------------------------------------------------------- + +loc_141DF: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B0h + jmp short loc_1421F +; --------------------------------------------------------------------------- + +loc_141EA: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0D0h + jmp short loc_1421F +; --------------------------------------------------------------------------- + +loc_141F5: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0B8h + jmp short loc_1421F +; --------------------------------------------------------------------------- + +loc_14200: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0C8h + jmp short loc_1421F +; --------------------------------------------------------------------------- + +loc_1420B: + sub word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0C1h + jmp short loc_1421F +; --------------------------------------------------------------------------- + +loc_14216: + add word ptr [si+2], 180h + mov byte ptr [bp+var_2], 0BFh + +loc_1421F: + mov byte ptr [si+0Eh], 16h + mov byte ptr [si+10h], 6 + +loc_14227: + lea ax, [si+0Ah] + push ax + push [bp+var_2] + call sub_E4DE + mov al, byte ptr [bp+var_2+1] + add al, 0FFh + mov byte ptr [bp+var_2+1], al + or al, al + jbe short loc_14248 + +loc_1423D: + call sub_E4A6 + mov si, ax + or ax, ax + jnz loc_1416D + +loc_14248: + pop si + leave + retn +sub_1414B endp + +; --------------------------------------------------------------------------- +table_1424B dw loc_141BF + dw loc_141D4 + dw loc_141DF + dw loc_141EA + dw loc_141F5 + dw loc_14200 + dw loc_1420B + dw loc_14216 +table_1425B dw loc_14187 + dw loc_1418D + dw loc_14193 + dw loc_14199 + dw loc_1419F + db 0 ; =============== S U B R O U T I N E ======================================= @@ -20510,12 +22782,9 @@ aSt00_map db 'st00.map',0 word_21290 dw 0 aSt00_std db 'ST00.STD',0 db 0 - db 0DCh - db 7 - db 0Eh - db 8 - db 0F0h - db 7 +off_2129C dw offset sub_15A5C + dw offset sub_15A8E + dw offset sub_15A70 db 3Ch ; < db 0 db 7Eh ; ~ @@ -23364,46 +25633,26 @@ aB@b@bB@b@_0 db ' db 53h ; S db 99h db 54h ; T - db 0F6h - db 58h ; X - db 2Bh ; + - db 54h ; T - db 0AFh - db 55h ; U - db 0AFh - db 55h ; U - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 49h ; I - db 56h ; V - db 0EAh - db 56h ; V - db 0A1h - db 56h ; V - db 33h ; 3 - db 57h ; W - db 0A1h - db 56h ; V - db 0CCh - db 57h ; W - db 83h - db 57h ; W - db 49h ; I - db 56h ; V - db 9Fh - db 58h ; X - db 1Bh - db 58h ; X - db 1Bh - db 58h ; X - db 0EAh - db 56h ; V +off_22790 dw offset sub_1AB76 + dw offset sub_1A6AB + dw offset sub_1A82F + dw offset sub_1A82F + dw 0 + dw 0 + dw 0 + dw 0 + dw offset sub_1A8C9 + dw offset sub_1A96A + dw offset sub_1A921 + dw offset sub_1A9B3 +off_227A8 dw offset sub_1A921 + dw offset sub_1AA4C + dw offset sub_1AA03 + dw offset sub_1A8C9 +off_227B0 dw offset sub_1AB1F + dw offset sub_1AA9B + dw offset sub_1AA9B + dw offset sub_1A96A a_dm09_tx2 db '_DM09.TX2',0 aTH05_10 db '真紅の少女 〜 Crimson Dead!!',0 a_dm08_tx2 db '_DM08.TX2',0 @@ -23491,10 +25740,10 @@ word_22856 dw 0 byte_22858 db 0 byte_22859 db 0 off_2285A dw offset sub_1E5FC -word_2285C dw 938Eh - dw 93EFh - dw 9426h - dw 9426h +off_2285C dw offset sub_1E60E + dw offset sub_1E66F + dw offset sub_1E6A6 + dw offset sub_1E6A6 dw 0 dw 0 byte_22868 db 10h @@ -24363,8 +26612,7 @@ word_23F08 dw ? dd ? ; dd ? ; dd ? ; -word_23F4A dw ? -word_23F4C dw ? +dword_23F4A dd ? word_23F4E dw ? word_23F50 dw ? dword_23F52 dd ? @@ -24374,73 +26622,72 @@ word_23F5A dw ? db ? ; db ? ; byte_23F5E 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 ? ; - db ? ; - db ? ; db ? ; +word_23F60 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 ? ; word_24062 dw ? byte_24064 db ? byte_24065 db ? @@ -26519,10 +28766,10 @@ byte_26000 db ? byte_26001 db ? dword_26002 dd ? word_26006 dw ? +byte_26008 db ? ; dd ? ; dd ? ; db ? ; - db ? ; byte_26012 db ? dd ? ; dd ? ; diff --git a/th05_main_seg3+4.inc b/th05_main_seg3+4.inc index f5e5ff25..0727b013 100644 --- a/th05_main_seg3+4.inc +++ b/th05_main_seg3+4.inc @@ -137,7 +137,11 @@ sub_15330 proc near retn sub_15330 endp -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + + +sub_15345 proc near push si push di mov cx, 7 @@ -153,6 +157,8 @@ sub_15330 endp pop di pop si retn +sub_15345 endp + ; --------------------------------------------------------------------------- nop @@ -339,7 +345,7 @@ loc_15497: mov bl, [si+1Ah] mov bh, 0 add bx, bx - movsx edx, word ptr [bx+4AEh] + movsx edx, _CosTable8[bx] imul eax, edx sar eax, 8 mov [si+0Ah], ax @@ -371,19 +377,58 @@ loc_154E5: mov al, 3 jmp loc_15740 ; --------------------------------------------------------------------------- - db 0 - db 64h, 1Ah, 0EBh, 3, 0, 64h, 16h, 0E8h, 1Dh, 0FEh, 0B0h - db 2, 0E9h, 39h, 2, 0E8h, 0CCh, 2, 88h, 44h, 1Ah, 0B0h - db 1, 0E9h, 2Eh, 2, 0B2h, 2, 0EBh, 2, 0FEh, 0C2h, 89h - db 16h, 80h, 35h, 0E8h, 26h, 0FEh, 8Bh, 44h, 2, 1, 6, 1Ch - db 56h, 8Bh, 44h, 4, 1, 6, 1Eh, 56h, 6, 0FFh, 16h, 64h - db 49h, 8Bh, 1Eh, 80h, 35h, 3, 0DBh, 0FFh, 97h, 0BCh, 8 - db 7, 0B0h, 1, 0E9h, 0FEh, 1, 0C6h, 44h, 23h, 0, 88h, 64h + +loc_154F7: + add [si+1Ah], ah + jmp short loc_154FF ; --------------------------------------------------------------------------- -loc_15548: - sub byte_24F6B, ah - add cl, [bx+si+2E44h] +loc_154FC: + add [si+16h], ah + +loc_154FF: + call sub_1531F + mov al, 2 + jmp loc_15740 +; --------------------------------------------------------------------------- + +loc_15507: + call sub_157D6 + mov [si+1Ah], al + mov al, 1 + jmp loc_15740 +; --------------------------------------------------------------------------- + +loc_15512: + mov dl, 2 + jmp short loc_15518 +; --------------------------------------------------------------------------- + +loc_15516: + inc dl + +loc_15518: + mov word_23F60, dx + call sub_15345 + mov ax, [si+2] + add word ptr dword_25FFC, ax + mov ax, [si+4] + add word ptr dword_25FFC+2, ax + push es + call word_25344 + mov bx, word_23F60 + add bx, bx + call off_2129C[bx] + pop es + mov al, 1 + jmp loc_15740 +; --------------------------------------------------------------------------- + +loc_15542: + mov byte ptr [si+23h], 0 + mov [si+28h], ah + mov ax, es:[di+2] + mov [si+2Eh], al mov [si+34h], ah mov ax, es:[di+4] mov [si+35h], al @@ -391,26 +436,60 @@ loc_15548: mov al, 6 jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_15562: mov [si+28h], ah jmp short loc_1559C ; --------------------------------------------------------------------------- + +loc_15567: mov eax, es:[di+1] mov [si+2Ah], eax mov al, 5 jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_15575: mov [si+34h], ah jmp short loc_1559C ; --------------------------------------------------------------------------- - db 0, 64h, 34h, 0EBh, 1Dh, 0E8h, 54h, 2, 88h, 44h, 34h - db 0B0h, 1, 0E9h, 0B6h, 1, 88h, 64h, 29h, 0EBh, 0Dh, 88h - db 64h, 35h, 0EBh, 8, 0, 64h, 35h, 0EBh, 3, 88h, 64h, 2Eh + +loc_1557A: + add [si+34h], ah + jmp short loc_1559C ; --------------------------------------------------------------------------- +loc_1557F: + call sub_157D6 + mov [si+34h], al + mov al, 1 + jmp loc_15740 +; --------------------------------------------------------------------------- + +loc_1558A: + mov [si+29h], ah + jmp short loc_1559C +; --------------------------------------------------------------------------- + +loc_1558F: + mov [si+35h], ah + jmp short loc_1559C +; --------------------------------------------------------------------------- + +loc_15594: + add [si+35h], ah + jmp short loc_1559C +; --------------------------------------------------------------------------- + +loc_15599: + mov [si+2Eh], ah + loc_1559C: mov al, 2 jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_155A1: mov al, ah xor ah, ah mov dl, byte_25FEC @@ -449,10 +528,16 @@ loc_155E9: mov [si+27h], dl jmp short loc_1559C ; --------------------------------------------------------------------------- + +loc_155EE: inc dl + +loc_155F0: mov [si+23h], dl jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_155F6: mov [si+30h], ah mov al, es:[di+2] mov [si+31h], al @@ -461,14 +546,24 @@ loc_15600: mov al, 3 jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_15605: mov [si+32h], ah mov al, es:[di+2] + +loc_1560C: mov [si+33h], al + +loc_1560F: jmp short loc_15600 ; --------------------------------------------------------------------------- + +loc_15611: mov [si+2Fh], ah jmp short loc_1559C ; --------------------------------------------------------------------------- + +loc_15616: push es mov ax, [si+2] add ax, [si+2Ah] @@ -480,6 +575,8 @@ loc_15600: call sub_15A24 mov [si+34h], al pop es + +loc_15630: jmp loc_1559C ; --------------------------------------------------------------------------- @@ -496,21 +593,31 @@ loc_15633: mov al, 6 jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_15653: mov byte ptr [si+1Fh], 11h jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_1565A: or byte ptr [si+1Fh], 1 jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_15661: or byte ptr [si+1Fh], 10h jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_15668: mov [si+1Ch], ah mov al, es:[di+2] mov [si+1Dh], al mov al, 3 jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_15677: mov al, ah mov ah, 0 push ax @@ -520,31 +627,45 @@ loc_15681: mov al, 2 jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_15686: mov [si+17h], ah jmp short loc_15681 ; --------------------------------------------------------------------------- + +loc_1568B: mov [si+22h], dl loc_1568E: mov [si+23h], dl jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_15694: mov byte ptr [si+22h], 1 cmp byte_25FEB, 3 jnz short loc_1568E inc dl jmp short loc_1568E ; --------------------------------------------------------------------------- + +loc_156A3: inc dl + +loc_156A5: mov [si+24h], dl jmp loc_15740 ; --------------------------------------------------------------------------- + +loc_156AB: mov eax, [si+2] mov [si+6], eax mov eax, es:[di+1] mov [si+2], eax jmp short loc_156D4 ; --------------------------------------------------------------------------- + +loc_156BE: mov eax, [si+2] mov [si+6], eax mov ax, es:[di+1] @@ -557,18 +678,71 @@ loc_156D4: mov al, 5 jmp short loc_15748 ; --------------------------------------------------------------------------- - db 0, 64h, 17h, 0B0h, 2, 0EBh, 5Fh, 88h, 64h, 1Ah, 26h - db 8Ah, 45h, 2, 88h, 44h, 16h, 0E8h, 31h, 0FCh, 0B0h, 3 - db 0EBh, 4Eh, 88h, 64h, 1Ah, 26h, 8Ah, 45h, 2, 88h, 44h - db 16h, 80h, 7Ch, 25h, 0, 75h, 0E9h, 0B0h, 80h, 2Ah, 0C4h - db 88h, 44h, 1Ah, 0EBh, 0E0h, 88h, 64h, 16h, 0E8h, 0Eh - db 0FCh, 0B0h, 2, 0EBh, 2Bh, 8Ah, 44h, 19h, 26h, 3Ah, 45h - db 2, 72h, 8, 0C6h, 44h, 19h, 0, 0B0h, 3, 0EBh, 1Ah, 0FEh - db 44h, 19h, 8Ah, 0C4h, 0B4h, 0, 29h, 44h, 14h, 0E9h, 31h - db 0FCh, 0B0h, 3, 3Ah, 64h, 36h, 74h, 6, 26h, 2, 45h, 2 - db 74h, 0 + +loc_156DA: + add [si+17h], ah + mov al, 2 + jmp short loc_15740 ; --------------------------------------------------------------------------- +loc_156E1: + mov [si+1Ah], ah + mov al, es:[di+2] + mov [si+16h], al + +loc_156EB: + call sub_1531F + mov al, 3 + jmp short loc_15740 +; --------------------------------------------------------------------------- + +loc_156F2: + mov [si+1Ah], ah + mov al, es:[di+2] + mov [si+16h], al + cmp byte ptr [si+25h], 0 + jnz short loc_156EB + mov al, 80h ; '竄ャ' + sub al, ah + mov [si+1Ah], al + jmp short loc_156EB +; --------------------------------------------------------------------------- + +loc_1570B: + mov [si+16h], ah + call sub_1531F + mov al, 2 + jmp short loc_15740 +; --------------------------------------------------------------------------- + +loc_15715: + mov al, [si+19h] + cmp al, es:[di+2] + jb short loc_15726 + mov byte ptr [si+19h], 0 + mov al, 3 + jmp short loc_15740 +; --------------------------------------------------------------------------- + +loc_15726: + inc byte ptr [si+19h] + +loc_15729: + mov al, ah + mov ah, 0 + +loc_1572D: + sub [si+14h], ax + jmp loc_15364 +; --------------------------------------------------------------------------- + +loc_15733: + mov al, 3 + cmp ah, [si+36h] + jz short loc_15740 + add al, es:[di+2] + jz short $+2 + loc_15740: mov ah, 0 add [si+14h], ax @@ -611,13 +785,53 @@ off_1575F dw offset loc_15388 dw offset loc_15486 dw offset loc_15488 dw offset loc_154E5 - db 77h, 2, 7Ch, 2, 87h, 2, 98h, 2, 0C2h, 2, 0E2h, 2, 0E7h - db 2, 0F5h, 2, 0FAh, 2, 0FFh, 2, 0Ah, 3, 0Fh, 3, 14h, 3 - db 19h, 3, 21h, 3, 6Eh, 3, 70h, 3, 0FAh, 2, 76h, 3, 85h - db 3, 0DAh, 3, 0E1h, 3, 0D3h, 3, 0E8h, 3, 0F7h, 3, 6, 4 - db 0Bh, 4, 14h, 4, 25h, 4, 23h, 4, 2Bh, 4, 3Eh, 4, 5Ah - db 4, 61h, 4, 72h, 4, 8Bh, 4, 95h, 4, 95h, 4, 0B3h, 4 - db 0A9h, 4, 36h, 1, 92h, 2, 91h, 3, 96h, 2, 96h, 3, 90h + dw offset loc_154F7 + dw offset loc_154FC + dw offset loc_15507 + dw offset loc_15518 + dw offset loc_15542 + dw offset loc_15562 + dw offset loc_15567 + dw offset loc_15575 + dw offset loc_1557A + dw offset loc_1557F + dw offset loc_1558A + dw offset loc_1558F + dw offset loc_15594 + dw offset loc_15599 + dw offset loc_155A1 + dw offset loc_155EE + dw offset loc_155F0 + dw offset loc_1557A + dw offset loc_155F6 + dw offset loc_15605 + dw offset loc_1565A + dw offset loc_15661 + dw offset loc_15653 + dw offset loc_15668 + dw offset loc_15677 + dw offset loc_15686 + dw offset loc_1568B + dw offset loc_15694 + dw offset loc_156A5 + dw offset loc_156A3 + dw offset loc_156AB + dw offset loc_156BE + dw offset loc_156DA + dw offset loc_156E1 + dw offset loc_156F2 + dw offset loc_1570B + dw offset loc_15715 + dw offset loc_15715 + dw offset loc_15733 + dw offset loc_15729 + dw offset loc_153B6 + dw offset loc_15512 + dw offset loc_15611 + dw offset loc_15516 + dw offset loc_15616 +; --------------------------------------------------------------------------- + nop ; =============== S U B R O U T I N E ======================================= @@ -1117,6 +1331,8 @@ sub_15AAA proc near xor si, si mov ch, byte_25348 mov cl, byte ptr word_26006+1 + +loc_15AB6: mov bl, byte_26000 xor bh, bh cmp bx, 0Fh @@ -1124,7 +1340,7 @@ sub_15AAA proc near ja loc_15BF8 xor di, di add bx, bx - mov ax, cs:[bx+996h] + mov ax, cs:off_15C16[bx] mov bl, byte ptr dword_26002 mov bh, byte ptr dword_26002+2 or bl, bl @@ -1134,12 +1350,18 @@ sub_15AAA proc near loc_15ADD: jmp ax ; --------------------------------------------------------------------------- + +loc_15ADF: inc di jmp loc_15BE2 ; --------------------------------------------------------------------------- + +loc_15AE3: inc di jmp loc_15BF8 ; --------------------------------------------------------------------------- + +loc_15AE7: xor ah, ah mov al, ch div bl @@ -1164,6 +1386,8 @@ loc_15B00: jz short loc_15B83 jmp short loc_15B21 ; --------------------------------------------------------------------------- + +loc_15B18: mov al, bl dec al cmp al, ch @@ -1222,6 +1446,8 @@ loc_15B66: jz loc_15BF8 jmp short loc_15BE2 ; --------------------------------------------------------------------------- + +loc_15B7A: mov al, bl dec al cmp al, ch @@ -1240,11 +1466,15 @@ loc_15B83: jz short loc_15BF8 jmp short loc_15BE2 ; --------------------------------------------------------------------------- + +loc_15B9D: mov si, word_24062 mov al, [si+3582h] inc byte ptr word_24062 and al, 1Fh add cl, al + +loc_15BAD: inc ch cmp ch, bl jb short loc_15BB4 @@ -1257,6 +1487,8 @@ loc_15BB4: inc byte ptr word_24062 jmp short loc_15BF8 ; --------------------------------------------------------------------------- + +loc_15BC6: mov al, byte ptr dword_26002+3 mul ch add cl, al @@ -1301,9 +1533,22 @@ loc_15BF8: sub_15AAA endp ; --------------------------------------------------------------------------- - db 63h, 8, 5Fh, 8, 98h, 8, 98h, 8, 0FAh, 8, 0FAh, 8, 46h - db 9, 46h, 9, 67h, 8, 67h, 8, 67h, 8, 67h, 8, 2Dh, 9, 1Dh - db 9, 63h, 8, 5Fh, 8 +off_15C16 dw offset loc_15AE3 + dw offset loc_15ADF + dw offset loc_15B18 + dw offset loc_15B18 + dw offset loc_15B7A + dw offset loc_15B7A + dw offset loc_15BC6 + dw offset loc_15BC6 + dw offset loc_15AE7 + dw offset loc_15AE7 + dw offset loc_15AE7 + dw offset loc_15AE7 + dw offset loc_15BAD + dw offset loc_15B9D + dw offset loc_15AE3 + dw offset loc_15ADF ; =============== S U B R O U T I N E ======================================= @@ -1429,8 +1674,8 @@ loc_15D2F: xor al, al loc_15D38: - mov cs:byte_15D55, dl - mov cs:byte_15D68, al + mov byte ptr cs:loc_15D52+3, dl + mov byte ptr cs:loc_15D65+3, al mov byte_25348, 0 jmp short $+2 @@ -1438,19 +1683,24 @@ loc_15D48: cmp byte ptr [si], 0 jnz loc_15DD7 mov byte ptr [si], 1 -; --------------------------------------------------------------------------- - db 0C6h, 44h, 12h -byte_15D55 db 7Bh - db 66h, 0A1h, 1Ch, 56h, 66h, 89h, 44h, 2, 80h, 3Eh, 0E0h - db 17h, 0, 75h, 13h, 0C6h, 44h, 13h -byte_15D68 db 7Bh -; --------------------------------------------------------------------------- + +loc_15D52: + mov byte ptr [si+12h], 7Bh + mov eax, dword_25FFC + mov [si+2], eax + cmp byte_221C0, 0 + jnz short loc_15D78 + +loc_15D65: + mov byte ptr [si+13h], 7Bh mov byte ptr [si+16h], 20h ; ' ' mov al, 48h ; 'H' sub al, byte ptr word_26006+1 mov [si+17h], al jmp short loc_15D95 ; --------------------------------------------------------------------------- + +loc_15D78: mov [si+1Ah], eax mov byte ptr [si+13h], 1 mov word ptr [si+1Eh], 0 @@ -1505,7 +1755,11 @@ sub_15DE2 proc far retf sub_15DE2 endp -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + + +sub_15DE6 proc near movzx bx, byte_26000 cmp bl, 2 jb short locret_15E1C @@ -1515,11 +1769,15 @@ sub_15DE2 endp mov cx, 0B9Eh jmp short loc_15E44 ; --------------------------------------------------------------------------- + +loc_15DFD: cmp al, 3 jb short locret_15E1C sub byte ptr dword_26002, 2 retn ; --------------------------------------------------------------------------- + +loc_15E07: shr dh, 2 sub byte ptr dword_26002+3, dh cmp ah, 2 @@ -1527,27 +1785,31 @@ sub_15DE2 endp dec byte ptr dword_26002+2 retn ; --------------------------------------------------------------------------- + +loc_15E18: shr byte ptr dword_26002, 1 locret_15E1C: retn ; --------------------------------------------------------------------------- nop - jge short loc_15E2B - cbw - or ax, [bx+7D0Bh] - or bx, [bx+si-67F5h] - or cx, [bx] +; --------------------------------------------------------------------------- + dw offset loc_15DFD + dw offset loc_15E18 + dw offset loc_15E07 + dw offset loc_15DFD + dw offset loc_15E18 + dw offset loc_15E18 +; --------------------------------------------------------------------------- -loc_15E2B: - mov dh, 1Eh - and [bp-80h], dl - sti - add [bp+1Fh], si +loc_15E2A: + movzx bx, byte_26000 + cmp bl, 1 + jbe short sub_15E53 cmp bl, 4 - jb short locret_15E73 + jb short nullsub_3 cmp bl, 0Dh - ja short locret_15E73 + ja short nullsub_3 sub bl, 4 mov cx, 0BF8h @@ -1557,15 +1819,31 @@ loc_15E44: and bl, 0FEh add bx, cx jmp word ptr cs:[bx] -; --------------------------------------------------------------------------- +sub_15DE6 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_15E53 proc near add byte_26000, 6 mov word ptr dword_26002+2, 602h retn -; --------------------------------------------------------------------------- +sub_15E53 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_15E5F proc near shr dh, 1 add byte ptr dword_26002+3, dh retn +sub_15E5F endp + ; --------------------------------------------------------------------------- + +loc_15E66: shr al, 2 cmp al, 6 jbe short loc_15E6F @@ -1574,62 +1852,285 @@ loc_15E44: loc_15E6F: add byte ptr dword_26002, al -locret_15E73: +; =============== S U B R O U T I N E ======================================= + + +nullsub_3 proc near retn +nullsub_3 endp + ; --------------------------------------------------------------------------- + +loc_15E74: shr al, 1 jmp short loc_15E6F ; --------------------------------------------------------------------------- - db 0E6h, 0Bh, 0DFh, 0Bh, 0DFh, 0Bh, 0E6h, 0Bh, 0F4h, 0Bh - db 0Fh, 0B6h, 1Eh, 20h, 56h, 80h, 0FBh, 0Dh, 77h, 32h - db 0B9h, 40h, 0Ch, 0EBh, 0B3h, 80h, 6, 20h, 56h, 2, 0C7h - db 6, 22h, 56h, 3, 6, 0C3h, 0D0h, 0EEh, 0, 36h, 25h, 56h - db 0FEh, 6, 24h, 56h, 0C3h, 80h, 6, 22h, 56h, 2, 0C3h - db 32h, 0E4h, 0B2h, 3, 0F6h, 0F2h, 3Ch, 0Ch, 76h, 2, 0B0h - db 0Ch, 0, 6, 22h, 56h, 0C3h, 90h, 11h, 0Ch, 28h, 0Ch - db 2Eh, 0Ch, 1Dh, 0Ch, 28h, 0Ch, 2Eh, 0Ch, 3Ah, 0Ch, 0A0h - db 20h, 56h, 24h, 0FEh, 3Ch, 6, 75h, 1Bh, 0A0h, 0Ch, 56h - db 3Ch, 26h, 72h, 5, 0FEh, 6, 24h, 56h, 0C3h, 3Ch, 18h - db 77h, 0Bh, 80h, 3Eh, 24h, 56h, 2, 72h, 4, 0FEh, 0Eh - db 24h, 56h, 0C3h, 90h, 0E8h, 0D7h, 0FFh, 0E8h, 0ECh, 0FEh - db 0C3h, 90h, 0E8h, 0CFh, 0FFh, 0C3h, 0E8h, 0CBh, 0FFh - db 0E8h, 24h, 0FFh, 0C3h, 90h, 0E8h, 0C3h, 0FFh, 0E8h - db 74h, 0FFh, 0C3h, 90h, 0C8h, 4, 2 dup(0), 56h, 57h, 0C4h - db 1Eh, 6Ah, 35h, 26h, 8Bh, 7Fh, 1, 26h, 8Bh, 47h, 3, 89h - db 46h, 0FCh, 0BEh, 96h, 92h, 0C7h, 46h, 0FEh, 2 dup(0) - db 0E9h, 0D0h, 0, 80h, 3Ch, 0, 0Fh, 85h, 0C3h, 0, 0C6h - db 4, 3, 0C6h, 44h, 1, 0, 0C6h, 44h, 18h, 0, 0C6h, 44h - db 19h, 0, 0C7h, 44h, 14h, 2 dup(0), 0C4h, 1Eh, 6Ah, 35h - db 26h, 8Ah, 7, 0B4h, 0, 3, 0C0h, 8Bh, 0D8h, 8Bh, 87h - db 2Ah, 35h, 89h, 44h, 12h, 81h, 0FFh, 70h, 3Eh, 75h, 8 - db 68h, 0, 18h, 0E8h, 8Fh, 0F8h, 8Bh, 0F8h, 89h, 7Ch, 2 - db 81h, 0FFh, 0, 0Ch, 7Dh, 4, 0B0h, 1, 0EBh, 2, 0B0h, 0 - db 88h, 44h, 25h, 81h, 7Eh, 0FCh, 70h, 3Eh, 75h, 9, 68h - db 0, 17h, 0E8h, 6Eh, 0F8h, 89h, 46h, 0FCh, 8Bh, 46h, 0FCh - db 89h, 44h, 4, 0C4h, 1Eh, 6Ah, 35h, 26h, 8Ah, 47h, 5 - db 88h, 44h, 20h, 26h, 8Ah, 47h, 6, 88h, 44h, 36h, 0C6h - db 44h, 21h, 0, 80h, 3Eh, 0Bh, 56h, 3, 75h, 5, 0B8h, 1 - db 0, 0EBh, 2, 33h, 0C0h, 88h, 44h, 23h, 0C6h, 44h, 1Fh - db 0, 0C6h, 44h, 1Ch, 1, 0C6h, 44h, 1Dh, 4, 0C6h, 44h - db 1Eh, 0, 0C6h, 44h, 22h, 0, 0C6h, 44h, 24h, 0, 0E8h - db 0FFh, 0F7h, 88h, 44h, 26h, 0C6h, 44h, 27h, 80h, 0C6h - db 44h, 2Eh, 0Fh, 0C6h, 44h, 28h, 0, 0C6h, 44h, 35h, 2Ah - db 0C7h, 44h, 2Ah, 2 dup(0), 0C7h, 44h, 2Ch, 2 dup(0) - db 0C6h, 44h, 29h, 0, 0EBh, 0Eh, 0FFh, 46h, 0FEh, 83h - db 0C6h, 40h, 83h, 7Eh, 0FEh, 20h, 0Fh, 8Ch, 28h, 0FFh - db 5Fh, 5Eh, 0C9h, 0C3h, 0C8h, 2, 2 dup(0), 90h, 0Eh, 0E8h - db 0Dh, 13h, 0C4h, 1Eh, 6Ah, 35h, 26h, 8Bh, 7, 3Bh, 6 - db 0, 56h, 75h, 41h, 83h, 6, 6Ah, 35h, 2, 0C4h, 1Eh, 6Ah - db 35h, 26h, 8Ah, 7, 88h, 46h, 2 dup(0FFh), 6, 6Ah, 35h - db 80h, 3Eh, 0ACh, 0BFh, 0, 75h, 3, 0E8h, 0D1h, 0FEh, 83h - db 6, 6Ah, 35h, 8, 0FEh, 4Eh, 0FFh, 80h, 7Eh, 0FFh, 0 - db 77h, 0E8h, 0C4h, 1Eh, 6Ah, 35h, 26h, 83h, 3Fh, 0, 75h - db 0Ch, 0C7h, 6, 48h, 0BFh - dw seg seg001 + dw offset loc_15E66 + dw offset sub_15E5F + dw offset sub_15E5F + dw offset loc_15E66 + dw offset loc_15E74 + +; =============== S U B R O U T I N E ======================================= + + +sub_15E82 proc near + movzx bx, byte_26000 + cmp bl, 0Dh + ja short locret_15EBE + mov cx, 0C40h + jmp short loc_15E44 ; --------------------------------------------------------------------------- - mov word ptr dword_2C926, 1242h + +loc_15E91: + add byte_26000, 2 + mov word ptr dword_26002, 603h + retn +; --------------------------------------------------------------------------- + +loc_15E9D: + shr dh, 1 + add byte ptr dword_26002+3, dh + inc byte ptr dword_26002+2 + retn +; --------------------------------------------------------------------------- + +loc_15EA8: + add byte ptr dword_26002, 2 + retn +; --------------------------------------------------------------------------- + +loc_15EAE: + xor ah, ah + mov dl, 3 + div dl + cmp al, 0Ch + jbe short loc_15EBA + mov al, 0Ch + +loc_15EBA: + add byte ptr dword_26002, al + +locret_15EBE: + retn +sub_15E82 endp + +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- + dw offset loc_15E91 + dw offset loc_15EA8 + dw offset loc_15EAE + dw offset loc_15E9D + dw offset loc_15EA8 + dw offset loc_15EAE + dw offset loc_15EBA + +; =============== S U B R O U T I N E ======================================= + + +sub_15ECE proc near + mov al, byte_26000 + and al, 0FEh + cmp al, 6 + jnz short locret_15EF2 + mov al, byte_25FEC + cmp al, 26h ; '&' + jb short loc_15EE3 + inc byte ptr dword_26002+2 + retn +; --------------------------------------------------------------------------- + +loc_15EE3: + cmp al, 18h + ja short locret_15EF2 + cmp byte ptr dword_26002+2, 2 + jb short locret_15EF2 + dec byte ptr dword_26002+2 + +locret_15EF2: + retn +sub_15ECE endp + +; --------------------------------------------------------------------------- + nop + call sub_15ECE + call sub_15DE6 + retn +; --------------------------------------------------------------------------- + nop + call sub_15ECE + retn +; --------------------------------------------------------------------------- + call sub_15ECE + call loc_15E2A + retn +; --------------------------------------------------------------------------- + nop + call sub_15ECE + call sub_15E82 + retn +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_15F10 proc near + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + les bx, dword_23F4A + mov di, es:[bx+1] + mov ax, es:[bx+3] + mov [bp+var_4], ax + mov si, 9296h + mov [bp+var_2], 0 + jmp loc_16000 +; --------------------------------------------------------------------------- + +loc_15F30: + cmp byte ptr [si], 0 + jnz loc_15FFA + mov byte ptr [si], 3 + mov byte ptr [si+1], 0 + mov byte ptr [si+18h], 0 + mov byte ptr [si+19h], 0 + mov word ptr [si+14h], 0 + les bx, dword_23F4A + mov al, es:[bx] + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+352Ah] + mov [si+12h], ax + cmp di, 3E70h + jnz short loc_15F6D + push 1800h + call sub_157FA + mov di, ax + +loc_15F6D: + mov [si+2], di + cmp di, 0C00h + jge short loc_15F7A + mov al, 1 + jmp short loc_15F7C +; --------------------------------------------------------------------------- + +loc_15F7A: + mov al, 0 + +loc_15F7C: + mov [si+25h], al + cmp [bp+var_4], 3E70h + jnz short loc_15F8F + push 1700h + call sub_157FA + mov [bp+var_4], ax + +loc_15F8F: + mov ax, [bp+var_4] + mov [si+4], ax + les bx, dword_23F4A + mov al, es:[bx+5] + mov [si+20h], al + mov al, es:[bx+6] + mov [si+36h], al + mov byte ptr [si+21h], 0 + cmp byte_25FEB, 3 + jnz short loc_15FB7 + mov ax, 1 + jmp short loc_15FB9 +; --------------------------------------------------------------------------- + +loc_15FB7: + xor ax, ax + +loc_15FB9: + mov [si+23h], al + mov byte ptr [si+1Fh], 0 + mov byte ptr [si+1Ch], 1 + mov byte ptr [si+1Dh], 4 + mov byte ptr [si+1Eh], 0 + mov byte ptr [si+22h], 0 + mov byte ptr [si+24h], 0 + call sub_157D6 + mov [si+26h], al + mov byte ptr [si+27h], 80h + mov byte ptr [si+2Eh], 0Fh + mov byte ptr [si+28h], 0 + mov byte ptr [si+35h], 2Ah ; '*' + mov word ptr [si+2Ah], 0 + mov word ptr [si+2Ch], 0 + mov byte ptr [si+29h], 0 + jmp short loc_16008 +; --------------------------------------------------------------------------- + +loc_15FFA: + inc [bp+var_2] + add si, 40h ; '@' + +loc_16000: + cmp [bp+var_2], 20h ; ' ' + jl loc_15F30 + +loc_16008: + pop di + pop si + leave + retn +sub_15F10 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1600C proc far + +var_1 = byte ptr -1 + + enter 2, 0 + nop + push cs + call near ptr sub_17322 + les bx, dword_23F4A + mov ax, es:[bx] + cmp ax, word_25FE0 + jnz short locret_16063 + add word ptr dword_23F4A, 2 + les bx, dword_23F4A + mov al, es:[bx] + mov [bp+var_1], al + inc word ptr dword_23F4A + +loc_16035: + cmp byte_2C98C, 0 + jnz short loc_1603F + call sub_15F10 + +loc_1603F: + add word ptr dword_23F4A, 8 + dec [bp+var_1] + cmp [bp+var_1], 0 + ja short loc_16035 + les bx, dword_23F4A + cmp word ptr es:[bx], 0 + jnz short locret_16063 + mov word ptr dword_2C926+2, seg seg001 + mov word ptr dword_2C926, offset nullsub_1 + +locret_16063: leave retf +sub_1600C endp + ; =============== S U B R O U T I N E ======================================= @@ -1984,22 +2485,34 @@ off_16344 dw offset loc_16316 dw offset loc_1631C dw offset loc_16322 dw offset loc_1632E - dw offset loc_15748 - dw 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1634C proc near + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 4, 0 mov ax, word_26335+1 - mov [bp-2], ax + mov [bp+var_2], ax mov ax, word_26338 - mov [bp-4], ax + mov [bp+var_4], ax mov eax, dword_2634E mov dword ptr word_26335+1, eax - push word ptr [bp+4] + push [bp+arg_0] call sub_162CC - mov ax, [bp-2] + mov ax, [bp+var_2] mov word_26335+1, ax - mov ax, [bp-4] + mov ax, [bp+var_4] mov word_26338, ax leave retn 2 +sub_1634C endp + ; =============== S U B R O U T I N E ======================================= @@ -2028,21 +2541,32 @@ sub_1637A proc near retn sub_1637A endp -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_163B6 proc near + +var_4 = word ptr -4 +var_2 = word ptr -2 + enter 4, 0 mov ax, word_26335+1 - mov [bp-2], ax + mov [bp+var_2], ax mov ax, word_26338 - mov [bp-4], ax + mov [bp+var_4], ax mov eax, dword_2634E mov dword ptr word_26335+1, eax call sub_1637A - mov ax, [bp-2] + mov ax, [bp+var_2] mov word_26335+1, ax - mov ax, [bp-4] + mov ax, [bp+var_4] mov word_26338, ax leave retn +sub_163B6 endp + ; =============== S U B R O U T I N E ======================================= @@ -3981,7 +4505,12 @@ sub_172FF proc far retf sub_172FF endp -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_17322 proc far push bp mov bp, sp mov ax, word_2632C @@ -3999,6 +4528,8 @@ sub_172FF endp loc_17352: pop bp retf +sub_17322 endp + ; =============== S U B R O U T I N E ======================================= @@ -9530,7 +10061,12 @@ loc_1A41F: retn 6 sub_1A3EF endp -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A42B proc near push bp mov bp, sp call sub_1FADD @@ -9560,6 +10096,8 @@ loc_1A45A: mov al, 0 pop bp retn +sub_1A42B endp + ; =============== S U B R O U T I N E ======================================= @@ -9689,11 +10227,19 @@ loc_1A530: retn 6 sub_1A45E endp -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A536 proc near + +arg_0 = word ptr 4 + push bp mov bp, sp push si - mov si, [bp+4] + mov si, [bp+arg_0] push 5956h push si push 0C454h @@ -9705,7 +10251,14 @@ sub_1A45E endp pop si pop bp retn 2 -; --------------------------------------------------------------------------- +sub_1A536 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A556 proc near push bp mov bp, sp cmp word_26346, 30h ; '0' @@ -9744,7 +10297,14 @@ loc_1A59C: loc_1A5B1: pop bp retn -; --------------------------------------------------------------------------- +sub_1A556 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A5B3 proc near push bp mov bp, sp cmp word_26346, 30h ; '0' @@ -9770,7 +10330,14 @@ loc_1A5DC: loc_1A5E9: pop bp retn -; --------------------------------------------------------------------------- +sub_1A5B3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A5EB proc near push bp mov bp, sp mov ax, word_26346 @@ -9813,7 +10380,14 @@ loc_1A64D: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1A5EB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A651 proc near push bp mov bp, sp cmp word_26346, 30h ; '0' @@ -9847,7 +10421,14 @@ loc_1A6A7: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1A651 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A6AB proc near push bp mov bp, sp cmp word_26346, 30h ; '0' @@ -9892,7 +10473,14 @@ loc_1A715: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1A6AB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A719 proc near push bp mov bp, sp mov ax, word_26346 @@ -9929,7 +10517,17 @@ loc_1A771: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1A719 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A775 proc near + +var_1 = byte ptr -1 + enter 2, 0 cmp word_26346, 30h ; '0' jnz short loc_1A7AF @@ -10014,7 +10612,14 @@ loc_1A82B: mov al, 0 leave retn -; --------------------------------------------------------------------------- +sub_1A775 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A82F proc near push bp mov bp, sp cmp word_26346, 30h ; '0' @@ -10077,7 +10682,14 @@ loc_1A8C5: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1A82F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A8C9 proc near push bp mov bp, sp mov ax, word_26346 @@ -10111,7 +10723,14 @@ loc_1A91D: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1A8C9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A921 proc near push bp mov bp, sp mov ax, word_26346 @@ -10139,7 +10758,14 @@ loc_1A966: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1A921 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A96A proc near push bp mov bp, sp mov ax, word_26346 @@ -10166,7 +10792,14 @@ loc_1A9AF: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1A96A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1A9B3 proc near push bp mov bp, sp mov ax, word_26346 @@ -10195,7 +10828,14 @@ loc_1A9FF: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1A9B3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AA03 proc near push bp mov bp, sp mov ax, word_26346 @@ -10222,7 +10862,14 @@ loc_1AA48: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1AA03 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AA4C proc near push bp mov bp, sp mov ax, word_26346 @@ -10253,7 +10900,14 @@ loc_1AA97: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1AA4C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AA9B proc near push bp mov bp, sp cmp word_26346, 30h ; '0' @@ -10303,7 +10957,17 @@ loc_1AB1B: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1AA9B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AB1F proc near + +var_1 = byte ptr -1 + enter 2, 0 cmp word_26346, 30h ; '0' jz short loc_1AB31 @@ -10318,17 +10982,17 @@ loc_1AB31: mov ax, word_26335+1 cmp ax, word ptr dword_2634E jl short loc_1AB53 - mov byte ptr [bp-1], 40h + mov [bp+var_1], 40h jmp short loc_1AB57 ; --------------------------------------------------------------------------- loc_1AB53: - mov byte ptr [bp-1], 0C0h + mov [bp+var_1], 0C0h loc_1AB57: push word_2BC71+1 push word_2BC74 - push word ptr [bp-1] + push word ptr [bp+var_1] call sub_15A24 mov byte ptr word_2BC71, al call sub_17687 @@ -10339,7 +11003,17 @@ loc_1AB72: mov al, 0 leave retn -; --------------------------------------------------------------------------- +sub_1AB1F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AB76 proc near + +var_1 = byte ptr -1 + enter 2, 0 cmp word_26346, 30h ; '0' jz short loc_1AB88 @@ -10354,17 +11028,17 @@ loc_1AB88: mov ax, word_26335+1 cmp ax, word ptr dword_2634E jge short loc_1ABAA - mov byte ptr [bp-1], 40h + mov [bp+var_1], 40h jmp short loc_1ABAE ; --------------------------------------------------------------------------- loc_1ABAA: - mov byte ptr [bp-1], 0C0h + mov [bp+var_1], 0C0h loc_1ABAE: push word_2BC71+1 push word_2BC74 - push word ptr [bp-1] + push word ptr [bp+var_1] call sub_15A24 mov byte ptr word_2BC71, al call sub_17687 @@ -10384,17 +11058,53 @@ loc_1ABD6: locret_1ABD8: leave retn -; --------------------------------------------------------------------------- - db 0C8h, 4, 2 dup(0), 56h, 0A1h, 58h, 59h, 3Bh, 6, 70h - db 59h, 7Eh, 6, 66h, 0A1h, 56h, 59h, 0EBh, 4, 66h, 0A1h - db 6Eh, 59h, 66h, 0A3h, 42h, 0BFh, 0FFh, 6, 66h, 59h, 0A0h - db 65h, 59h, 0B4h, 0, 89h, 46h, 0FCh, 0B9h, 6, 0, 0BBh - db 3Ch, 5Dh, 2Eh, 8Bh, 7, 3Bh, 46h, 0FCh, 74h, 8, 83h - db 0C3h, 2, 0E2h, 0F3h, 0E9h, 8Fh, 3, 2Eh, 0FFh, 67h, 0Ch +sub_1AB76 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1ABDA proc far + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov ax, word_26338 + cmp ax, word ptr dword_2634E+2 + jle short loc_1ABEE + mov eax, dword ptr word_26335+1 + jmp short loc_1ABF2 ; --------------------------------------------------------------------------- +loc_1ABEE: + mov eax, dword_2634E + +loc_1ABF2: + mov dword_2C922, eax + inc word_26346 + mov al, byte_26345 + mov ah, 0 + mov [bp+var_4], ax + mov cx, 6 ; switch 6 cases + mov bx, offset word_1AFBC + +loc_1AC08: + mov ax, cs:[bx] + cmp ax, [bp+var_4] + jz short loc_1AC18 + add bx, 2 + loop loc_1AC08 + jmp loc_1AFA7 ; default +; --------------------------------------------------------------------------- + +loc_1AC18: + jmp word ptr cs:[bx+0Ch] ; switch jump + loc_1AC1C: - cmp word_26346, 1 + cmp word_26346, 1 ; jumptable 0001AC18 case 0 jnz short loc_1AC5E mov word_26342, 1194h mov word_2634C, 0 @@ -10432,69 +11142,222 @@ loc_1AC5E: ; --------------------------------------------------------------------------- loc_1AC90: - call sub_1FB07 + call sub_1FB07 ; jumptable 0001AC18 case 1 push large 1800180h push 0Ah call sub_1A3EF cmp word_26346, 40h jl loc_1AFA7 ; default inc byte_26345 + +loc_1ACAB: mov word_26346, 0 mov byte_26349, 1 mov byte ptr word_2634A+1, 0 - mov word_2CE36, 536Bh - mov word_2CE38, 5649h - mov word_2D06C, 5169h + mov word_2CE36, offset sub_1A5EB + mov word_2CE38, offset sub_1A8C9 + mov word_2D06C, offset sub_FF79 jmp loc_1AFA7 ; default ; --------------------------------------------------------------------------- -aAiy db 0A0h, 069h, 059h, 0B4h, 0 - db 0Bh, 0C0h, 74h, 0Ah, 3Dh, 1, 0, 0Fh, 84h, 0E9h, 0, 0E9h - db 0ECh, 0, 80h, 3Eh, 6Bh, 59h, 9, 74h, 7, 80h, 3Eh, 6Bh - db 59h, 0Eh, 75h, 2Fh, 0A1h, 66h, 59h, 5, 0C0h, 0FFh, 89h - db 46h, 0FEh, 83h, 3Eh, 66h, 59h, 10h, 75h, 28h, 80h, 3Eh - db 99h, 0BFh, 14h, 73h, 5, 0C6h, 6, 99h, 0BFh, 14h, 6Ah - db 0Fh, 9Ah, 2Eh, 2 - dw seg seg002 - db 6Ah, 1, 0E8h, 0B3h, 0B5h, 6Ah, 2, 0E8h, 2Eh, 0B6h, 0EBh - db 9, 0A1h, 66h, 59h, 5, 0F0h, 0FFh, 89h, 46h, 0FEh, 0FFh - db 76h, 0FEh, 0E8h, 7, 0F8h, 0Ah, 0C0h, 0Fh, 84h, 9Ah - db 0, 0C7h, 6, 66h, 59h, 2 dup(0), 0FEh, 6, 69h, 59h, 0FEh - db 6, 6Bh, 59h, 80h, 3Eh, 6Bh, 59h, 0Ah, 73h, 25h, 0A0h - db 6Bh, 59h, 0B4h, 0, 25h, 3, 0, 3, 0C0h, 8Bh, 0D8h, 8Bh - db 87h, 0A8h, 1Dh, 0A3h, 56h, 0C4h, 0A0h, 6Bh, 59h, 0B4h - db 0, 25h, 3, 0, 3, 0C0h, 8Bh, 0D8h, 8Bh, 87h, 0C0h, 1Dh - db 0EBh, 49h, 80h, 3Eh, 6Bh, 59h, 0Fh, 73h, 18h, 0C7h - db 6, 56h, 0C4h, 0F5h, 54h, 0A0h, 6Bh, 59h, 0B4h, 0, 25h - db 3, 0, 3, 0C0h, 8Bh, 0D8h, 8Bh, 87h, 0C8h, 1Dh, 0EBh - db 2Ah, 80h, 3Eh, 6Bh, 59h, 24h, 73h, 28h, 0A0h, 6Bh, 59h - db 0B4h, 0, 25h, 3, 0, 3, 0C0h, 8Bh, 0D8h, 8Bh, 87h, 0B0h - db 1Dh, 0A3h, 56h, 0C4h, 0A0h, 6Bh, 59h, 0B4h, 0, 25h - db 3, 0, 3, 0C0h, 8Bh, 0D8h, 8Bh, 87h, 0D0h, 1Dh, 0A3h - db 58h, 0C4h, 0EBh, 12h, 0C6h, 6, 6Bh, 59h, 0, 0C7h, 46h - db 0FEh, 1, 0, 0EBh, 63h, 0E8h, 8Ah, 0F7h, 0E8h, 0E4h - db 0F7h, 0A1h, 62h, 59h, 3, 6, 7Ah, 59h, 3Dh, 7Ch, 15h - db 7Dh, 19h, 80h, 3Eh, 6Bh, 59h, 9, 73h, 12h, 0C6h, 6 - db 69h, 59h, 0, 0C7h, 6, 66h, 59h, 2 dup(0), 0C6h, 6, 6Bh - db 59h, 9, 0EBh, 23h, 0A1h, 62h, 59h, 3, 6, 7Ah, 59h, 3Dh - db 0CAh, 8, 7Dh, 17h, 80h, 3Eh, 6Bh, 59h, 0Eh, 73h, 10h - db 0C6h, 6, 69h, 59h, 0, 0C7h, 6, 66h, 59h, 2 dup(0), 0C6h - db 6, 6Bh, 59h, 0Eh, 0E8h, 11h, 0F6h, 0B4h, 0, 89h, 46h - db 0FEh, 83h, 7Eh, 0FEh, 0, 0Fh, 84h, 80h, 1, 0C6h, 6 - db 6Bh, 59h, 1, 8Ah, 46h, 0FEh, 4, 0FFh, 0A2h, 83h, 59h - db 0C6h, 6, 65h, 59h, 0FDh, 0C7h, 6, 66h, 59h, 2 dup(0) - db 80h, 3Eh, 28h, 56h, 0, 0Fh, 84h, 5Fh, 1, 6Ah, 0, 0E8h - db 0DAh, 0C7h, 0EBh, 1Ah -byte_1AE4F db 83h, 3Eh, 66h, 59h, 10h, 75h, 16h, 80h, 3Eh, 83h, 59h - db 0, 75h, 7, 6Ah, 4, 0E8h, 6Ah, 0B4h, 0EBh, 5, 6Ah, 4 - db 0E8h, 0E3h, 0B4h, 0E9h, 3Bh, 1, 83h, 3Eh, 66h, 59h - db 20h, 0Fh, 85h, 32h, 1, 80h, 3Eh, 83h, 59h, 0, 75h, 0Fh - db 0E8h, 0FBh, 0B4h, 0C6h, 6, 64h, 59h, 4, 0C6h, 6, 7Ch - db 59h, 0B4h, 0EBh, 0Dh, 0E8h, 28h, 0B5h, 0C6h, 6, 7Ch - db 59h, 4, 0C6h, 6, 64h, 59h, 0B4h, 0FEh, 6, 65h, 59h - db 0A0h, 6Bh, 59h, 0A2h, 98h, 0BFh, 0C7h, 6, 66h, 59h - db 2 dup(0), 6Ah, 0Ch, 9Ah, 2Eh, 2 - dw seg seg002 + +loc_1ACD0: + mov al, byte_26349 ; jumptable 0001AC18 case 2 + mov ah, 0 + or ax, ax + jz short loc_1ACE3 + cmp ax, 1 + jz loc_1ADC9 + jmp loc_1ADCF ; --------------------------------------------------------------------------- + +loc_1ACE3: + cmp byte ptr word_2634A+1, 9 + jz short loc_1ACF1 + cmp byte ptr word_2634A+1, 0Eh + jnz short loc_1AD20 + +loc_1ACF1: + mov ax, word_26346 + add ax, 0FFC0h + mov [bp+var_2], ax + cmp word_26346, 10h + jnz short loc_1AD29 + cmp byte_2C979, 14h + jnb short loc_1AD0D + mov byte_2C979, 14h + +loc_1AD0D: + push 0Fh + call sub_14CEE + push 1 + call sub_162CC + push 2 + call sub_1634C + jmp short loc_1AD29 +; --------------------------------------------------------------------------- + +loc_1AD20: + mov ax, word_26346 + add ax, 0FFF0h + mov [bp+var_2], ax + +loc_1AD29: + push [bp+var_2] + call sub_1A536 + or al, al + jz loc_1ADCF + mov word_26346, 0 + inc byte_26349 + inc byte ptr word_2634A+1 + cmp byte ptr word_2634A+1, 0Ah + jnb short loc_1AD6F + mov al, byte ptr word_2634A+1 + mov ah, 0 + and ax, 3 + add ax, ax + mov bx, ax + mov ax, [bx+1DA8h] + mov word_2CE36, ax + mov al, byte ptr word_2634A+1 + mov ah, 0 + and ax, 3 + add ax, ax + mov bx, ax + mov ax, [bx+1DC0h] + jmp short loc_1ADB8 +; --------------------------------------------------------------------------- + +loc_1AD6F: + cmp byte ptr word_2634A+1, 0Fh + jnb short loc_1AD8E + mov word_2CE36, offset sub_1A775 + mov al, byte ptr word_2634A+1 + mov ah, 0 + and ax, 3 + add ax, ax + mov bx, ax + mov ax, off_227A8[bx] + jmp short loc_1ADB8 +; --------------------------------------------------------------------------- + +loc_1AD8E: + cmp byte ptr word_2634A+1, 24h ; '$' + jnb short loc_1ADBD + mov al, byte ptr word_2634A+1 + mov ah, 0 + and ax, 3 + add ax, ax + mov bx, ax + mov ax, off_22790[bx] + mov word_2CE36, ax + mov al, byte ptr word_2634A+1 + mov ah, 0 + and ax, 3 + add ax, ax + mov bx, ax + mov ax, off_227B0[bx] + +loc_1ADB8: + mov word_2CE38, ax + jmp short loc_1ADCF +; --------------------------------------------------------------------------- + +loc_1ADBD: + mov byte ptr word_2634A+1, 0 + mov [bp+var_2], 1 + jmp short loc_1AE2C +; --------------------------------------------------------------------------- + +loc_1ADC9: + call sub_1A556 + call sub_1A5B3 + +loc_1ADCF: + mov ax, word_26342 + add ax, word_2635A + cmp ax, 157Ch + jge short loc_1ADF4 + cmp byte ptr word_2634A+1, 9 + jnb short loc_1ADF4 + mov byte_26349, 0 + mov word_26346, 0 + mov byte ptr word_2634A+1, 9 + jmp short loc_1AE17 +; --------------------------------------------------------------------------- + +loc_1ADF4: + mov ax, word_26342 + add ax, word_2635A + cmp ax, 8CAh + jge short loc_1AE17 + cmp byte ptr word_2634A+1, 0Eh + jnb short loc_1AE17 + mov byte_26349, 0 + mov word_26346, 0 + mov byte ptr word_2634A+1, 0Eh + +loc_1AE17: + call sub_1A42B + mov ah, 0 + mov [bp+var_2], ax + cmp [bp+var_2], 0 + jz loc_1AFA7 ; default + mov byte ptr word_2634A+1, 1 + +loc_1AE2C: + mov al, byte ptr [bp+var_2] + add al, 0FFh + mov byte_26363, al + mov byte_26345, 0FDh + mov word_26346, 0 + cmp byte_26008, 0 + jz loc_1AFA7 ; default + push 0 + call sub_17627 + jmp short loc_1AE69 +; --------------------------------------------------------------------------- + +loc_1AE4F: + cmp word_26346, 10h ; jumptable 0001AC18 case 253 + jnz short loc_1AE6C + cmp byte_26363, 0 + jnz short loc_1AE64 + push 4 + call sub_162CC + jmp short loc_1AE69 +; --------------------------------------------------------------------------- + +loc_1AE64: + push 4 + call sub_1634C + +loc_1AE69: + jmp loc_1AFA7 ; default +; --------------------------------------------------------------------------- + +loc_1AE6C: + cmp word_26346, 20h ; ' ' + jnz loc_1AFA7 ; default + cmp byte_26363, 0 + jnz short loc_1AE8B + call sub_1637A + mov byte_26344, 4 + mov byte_2635C, 0B4h + jmp short loc_1AE98 +; --------------------------------------------------------------------------- + +loc_1AE8B: + call sub_163B6 + mov byte_2635C, 4 + mov byte_26344, 0B4h + +loc_1AE98: + inc byte_26345 + mov al, byte ptr word_2634A+1 + mov byte_2C978, al + mov word_26346, 0 + push 0Ch + call sub_14CEE mov byte_2CEBC, 0FFh jmp loc_1AFA7 ; default ; --------------------------------------------------------------------------- @@ -10552,7 +11415,7 @@ loc_1AF0E: ; --------------------------------------------------------------------------- loc_1AF24: - mov PaletteTone, 3Ch ; '<' ; jumptable 0001AC18 case 255 + mov PaletteTone, 3Ch ; '<' ; jumptable 0001AC18 case 255 mov byte_25FE9, 1 cmp word_26346, 1 jnz short loc_1AFA7 ; default @@ -10577,7 +11440,7 @@ loc_1AF66: mov word ptr dword_2CE9A+2, ds mov word ptr dword_2CE9A, offset aTH05_11 mov word ptr dword_2D066+2, seg seg003 - mov word ptr dword_2D066, 7298h + mov word ptr dword_2D066, offset sub_1C518 loc_1AF85: call sub_F2B4 @@ -10597,14 +11460,15 @@ loc_1AFA7: pop si leave retf +sub_1ABDA endp ; --------------------------------------------------------------------------- db 0 - dw 0, 1, 2, 0FDh ; value table for switch statement - dw 0FEh, 0FFh +word_1AFBC dw 0, 1, 2, 0FDh + dw 0FEh, 0FFh ; value table for switch statement dw offset loc_1AC1C ; jump table for switch statement dw offset loc_1AC90 - dw offset aAiy - dw offset byte_1AE4F + dw offset loc_1ACD0 + dw offset loc_1AE4F dw offset loc_1AEB7 dw offset loc_1AF24 @@ -12908,7 +13772,12 @@ loc_1C513: retn sub_1C34B endp -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C518 proc far push bp mov bp, sp push si @@ -13218,6 +14087,8 @@ loc_1C812: pop si pop bp retf +sub_1C518 endp + ; --------------------------------------------------------------------------- db 0 off_1C816 dw offset loc_1C54D @@ -16323,7 +17194,12 @@ loc_1E60A: retn sub_1E5FC endp -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1E60E proc near push bp mov bp, sp cmp word_26332, 5Eh ; '^' @@ -16368,7 +17244,14 @@ loc_1E66B: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1E60E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1E66F proc near push bp mov bp, sp cmp byte_25352, 0 @@ -16392,7 +17275,14 @@ loc_1E6A2: mov al, 0 pop bp retn -; --------------------------------------------------------------------------- +sub_1E66F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1E6A6 proc near push bp mov bp, sp mov ax, word_26332 @@ -16429,6 +17319,8 @@ loc_1E70A: mov al, 0 pop bp retn +sub_1E6A6 endp + ; --------------------------------------------------------------------------- push bp mov bp, sp @@ -16509,7 +17401,7 @@ loc_1E7AF: add dx, dx pop bx add bx, dx - mov ax, word_2285C[bx] + mov ax, off_2285C[bx] mov off_2285A, ax loc_1E7F2: diff --git a/th05_maine.asm b/th05_maine.asm index 53ca9048..00b0b6c4 100644 --- a/th05_maine.asm +++ b/th05_maine.asm @@ -1425,7 +1425,7 @@ loc_A962: push 240h push word_15006 push large 100010h - call far ptr loc_ECDE + call sub_ECDE or si, si jle short loc_A9BD test byte ptr word_12AFA+1, 20h @@ -1535,7 +1535,7 @@ loc_AA3E: out dx, al push large 500140h push large 1E00040h - call far ptr loc_ECDE + call sub_ECDE mov dx, 0A6h ; 'ヲ' mov al, 0 @@ -2348,7 +2348,7 @@ loc_B164: mov ah, 0 push ax push large [bp+var_8] - call far ptr loc_E914 + call sub_E914 mov dx, 0A6h ; 'ヲ' mov al, 0 out dx, al @@ -2414,13 +2414,13 @@ loc_B1F7: push si push 0Fh push large [bp+var_4] - call far ptr loc_E914 + call sub_E914 call sub_B37C push 40h push si push 0Fh push large [bp+var_4] - call far ptr loc_E914 + call sub_E914 call sub_B37C dec word_107BC inc di @@ -2433,13 +2433,13 @@ loc_B21E: push si push 0Fh push large [bp+var_4] - call far ptr loc_E914 + call sub_E914 call sub_B37C push 40h push si push 0Fh push large [bp+var_4] - call far ptr loc_E914 + call sub_E914 call sub_B37C inc allcast_step inc allcast_line_on_screen @@ -3620,7 +3620,7 @@ loc_BB00: push si push di push large 820012h - call far ptr loc_ECDE + call sub_ECDE lea ax, [si+2] push ax lea ax, [di+2] @@ -4161,7 +4161,7 @@ loc_BEA6: add ax, 0FFF0h push ax push large 200020h - call far ptr loc_ECDE + call sub_ECDE loc_BEC8: inc di @@ -4661,12 +4661,12 @@ loc_C2BB: push 9 push ds push offset aGxgnbGvbGhvVGv - call far ptr loc_E914 + call sub_E914 push large 7800C0h push 2 push ds push offset aGxgnbGvbGhvV_0 - call far ptr loc_E914 + call sub_E914 loc_C2EB: call sub_EB66 @@ -5188,7 +5188,7 @@ loc_C6F1: push word_116E4 push ds push offset aU__0 - call far ptr loc_E914 + call sub_E914 pop di pop si leave @@ -5298,14 +5298,14 @@ loc_C7B6: push word_116E4 push ds push offset aBd - call far ptr loc_E914 + call sub_E914 lea ax, [si+60h] push ax push di push word_116E4 push ds push offset aBu - call far ptr loc_E914 + call sub_E914 pop di pop si leave @@ -5361,7 +5361,7 @@ arg_6 = word ptr 0Ah push word_116E4 push ds push offset aBd_0 - call far ptr loc_E914 + call sub_E914 pop di pop si leave @@ -5502,7 +5502,7 @@ loc_C9B3: push word_116E4 push ds push offset aBu_0 - call far ptr loc_E914 + call sub_E914 leave retn sub_C8AE endp @@ -5628,7 +5628,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aB@b@b@b@b@b@b@ ; "        腕前判定" - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 18h @@ -5636,7 +5636,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aUqiUx ; "難易度" - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 30h ; '0' @@ -5644,7 +5644,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aNPiuU_ ; "最終得点" - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 48h ; 'H' @@ -5652,7 +5652,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aGGxi - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 60h @@ -5660,7 +5660,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aGGaogcpi - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 78h ; 'x' @@ -5668,7 +5668,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aGqbGatbrmcj ; "ゲーム達成率" - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 90h ; '・ @@ -5676,7 +5676,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aIlcSObcj ; "悪霊退治率" - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0A8h ; 'ィ' @@ -5684,7 +5684,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aGagcgegai - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0C0h @@ -5692,7 +5692,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aUU_gagcgeganNv ; "得点アイテム最高点率" - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0D8h @@ -5700,7 +5700,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aLcnzvv ; "気合い" - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0F0h ; '・ @@ -5708,7 +5708,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aPicacovCj ; "処理落ち率" - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 110h @@ -5716,7 +5716,7 @@ var_4 = dword ptr -4 push word_116E4 push ds push offset aVavVVSrso ; "あなたの腕前" - call far ptr loc_E914 + call sub_E914 les bx, dword_11E6E cmp byte ptr es:[bx+13h], 6 jnz short loc_CBDB @@ -5787,7 +5787,7 @@ loc_CBE3: push word_116E4 push ds push offset aI - call far ptr loc_E914 + call sub_E914 mov ax, word_116E2 add ax, 110h push ax @@ -5797,7 +5797,7 @@ loc_CBE3: push word_116E4 push ds push offset aI_0 - call far ptr loc_E914 + call sub_E914 mov byte_1517C, 1 les bx, dword_11E6E cmp byte ptr es:[bx+13h], 6 @@ -6120,7 +6120,7 @@ loc_D01A: push word_116E4 push ds push offset aU_ - call far ptr loc_E914 + call sub_E914 push ds push offset a_ude_txt ; "_ude.txt" call file_ropen @@ -6204,7 +6204,7 @@ loc_D120: push word_116E4 push ds push offset aBhbhbhbhbhbhu_ ; "??????点" - call far ptr loc_E914 + call sub_E914 mov ax, word_116E2 add ax, 30h ; '0' push ax @@ -6214,7 +6214,7 @@ loc_D120: push word_116E6 push ds push offset aPicacovVVcvsfT ; "処理落ちによる判定不可" - call far ptr loc_E914 + call sub_E914 loc_D156: pop si @@ -6253,7 +6253,7 @@ sub_D16F proc near push word_116E6 push ds push offset byte_15187 - call far ptr loc_E914 + call sub_E914 mov ax, word_116E2 add ax, 30h ; '0' push ax @@ -6263,7 +6263,7 @@ sub_D16F proc near push word_116E6 push ds push offset byte_151A5 - call far ptr loc_E914 + call sub_E914 loc_D1AF: pop bp @@ -6334,7 +6334,7 @@ var_2 = word ptr -2 push word_116E4 push ds push offset aB@vpcB@ ; " 1面 " - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 60h @@ -6342,7 +6342,7 @@ var_2 = word ptr -2 push word_116E4 push ds push offset aB@vqcB@ ; " 2面 " - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 80h @@ -6350,7 +6350,7 @@ var_2 = word ptr -2 push word_116E4 push ds push offset aB@vrcB@ ; " 3面 " - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0A0h @@ -6358,7 +6358,7 @@ var_2 = word ptr -2 push word_116E4 push ds push offset aB@vscB@ ; " 4面 " - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0C0h @@ -6366,7 +6366,7 @@ var_2 = word ptr -2 push word_116E4 push ds push offset aB@vtcB@ ; " 5面 " - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 0E0h ; '・ @@ -6374,7 +6374,7 @@ var_2 = word ptr -2 push word_116E4 push ds push offset aB@vucB@ ; " 6面 " - call far ptr loc_E914 + call sub_E914 push word_116E2 mov ax, word_116E8 add ax, 120h @@ -6382,7 +6382,7 @@ var_2 = word ptr -2 push word_116E4 push ds push offset aNPiuU__0 ; "最終得点" - call far ptr loc_E914 + call sub_E914 mov ax, word_116E2 add ax, 80h mov [bp+var_2], ax @@ -9161,15 +9161,24 @@ loc_E909: retf 4 sub_E878 endp -; --------------------------------------------------------------------------- -loc_E914: +; =============== 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+0Ah] + mov dx, [bp+arg_4] mov al, 0C0h pushf cli @@ -9190,12 +9199,12 @@ loc_E914: mov ax, 0A800h mov es, ax assume es:nothing - mov dx, [bp+0Ch] + mov dx, [bp+arg_6] shl dx, 6 mov di, dx shr dx, 2 add di, dx - mov cx, [bp+0Eh] + mov cx, [bp+arg_8] mov al, 0Bh out 68h, al mov bx, word_107BC @@ -9204,22 +9213,22 @@ loc_E914: jb short loc_E970 cmp bx, 10h jnb short loc_E970 - mov ax, [bx+68Ch] - mov cs:word_EA6B, ax + mov ax, word_1078C[bx] + mov word ptr cs:loc_EA68+3, ax mov bx, 8 loc_E970: - mov ax, [bx+680h] - mov cs:word_E9D3, ax - mov ax, [bx+68Ah] - mov cs:word_EA25, ax + 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 cs:word_E9F2, ax - mov cs:word_EA39, ax + mov word ptr cs:loc_E9F1+1, ax + mov word ptr cs:loc_EA38+1, ax push ds pop fs assume fs:dseg - lds si, [bp+6] + lds si, [bp+arg_0] lodsb or al, al jz short loc_E9FD @@ -9236,7 +9245,7 @@ loc_E996: mov ah, al lodsb shl ah, 1 - cmp al, 9Fh ; '・ + cmp al, 9Fh jnb short loc_E9B6 cmp al, 80h adc ax, 0FEDFh @@ -9248,6 +9257,8 @@ loc_E9B6: mov al, ah out 0A3h, al nop + +loc_E9C2: mov al, ch or al, 20h out 0A5h, al @@ -9256,14 +9267,24 @@ loc_E9B6: mov al, ch out 0A5h, al in al, 0A9h -; --------------------------------------------------------------------------- - db 0E8h -word_E9D3 dw 78h - db 8Ah, 0F8h, 0B3h, 0, 0D3h, 0E8h, 0D3h, 0EBh, 86h, 0E0h - db 0ABh, 26h, 88h, 1Dh, 83h, 0C7h, 4Eh, 0FEh, 0C5h, 80h - db 0FDh, 10h, 72h, 0D5h, 81h, 0EFh, 0, 5, 0BAh -word_E9F2 dw 1234h -; --------------------------------------------------------------------------- + +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 @@ -9289,32 +9310,48 @@ loc_EA0C: loc_EA0F: cmp al, 20h ; ' ' - jz short near ptr byte_EA38 + 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 -; --------------------------------------------------------------------------- - db 0E8h -word_EA25 dw 26h - db 0D3h, 0C8h, 0ABh, 83h, 0C7h, 4Eh, 0FEh, 0C5h, 80h, 0FDh - db 10h, 72h, 0E6h, 81h, 0EFh, 0, 5 -byte_EA38 db 0BAh -word_EA39 dw 1234h -; --------------------------------------------------------------------------- + +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 @@ -9335,12 +9372,21 @@ sub_EA4D proc near retn sub_EA4D endp -; --------------------------------------------------------------------------- - db 0E8h, 0ECh, 0FFh, 8Ah, 0DDh, 83h, 0E3h, 2 dup(3), 0DBh - db 64h, 23h, 87h -word_EA6B dw 1234h -; --------------------------------------------------------------------------- + +; =============== 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 + ; =============== S U B R O U T I N E ======================================= @@ -9673,17 +9719,26 @@ arg_8 = word ptr 0Eh retf 0Ah sub_EC9A endp -; --------------------------------------------------------------------------- -loc_ECDE: +; =============== 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+0Ch] - mov dx, [bp+0Ah] + mov ax, [bp+arg_6] + mov dx, [bp+arg_4] mov bx, ax sar bx, 4 shl bx, 1 @@ -9691,22 +9746,22 @@ loc_ECDE: add bx, dx shr dx, 2 add bx, dx - mov cs:word_ED44, bx + mov word ptr cs:loc_ED43+1, bx and ax, 0Fh mov cx, ax - add ax, [bp+8] + add ax, [bp+arg_2] shr ax, 4 or cx, cx jz short loc_ED11 inc ax loc_ED11: - mov cs:word_ED49, ax + mov word ptr cs:loc_ED48+1, ax jmp short $+2 mov cx, 28h ; '(' sub cx, ax shl cx, 1 - mov ax, [bp+6] + mov ax, [bp+arg_0] mov bp, cx push 0E000h push word_107C8 @@ -9717,14 +9772,33 @@ loc_ED11: 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 ; sp-analysis failed + ; --------------------------------------------------------------------------- - db 0BFh -word_ED44 dw 1234h - db 1Fh, 7, 0B9h -word_ED49 dw 1234h - db 8Bh, 0F7h, 0F3h, 0A5h, 3, 0FDh, 4Bh, 75h, 0F4h, 0FEh - db 0CAh, 75h, 0E9h, 1Fh, 5Eh, 5Fh, 5Dh, 0CAh, 8, 0, 90h + nop ; =============== S U B R O U T I N E ======================================= @@ -10970,26 +11044,16 @@ include libs/master.lib/bgm[data].asm db 50h ; P db 20h db 0 - db 71h ; q - db 0 - db 6Bh ; k - db 0 - db 78h ; x - db 0 - db 72h ; r - db 0 - db 89h - db 0 - db 1Fh - db 0 - db 19h - db 0 - db 26h ; & - db 0 - db 20h - db 0 - db 37h ; 7 - db 0 +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 diff --git a/th05_op.asm b/th05_op.asm index bb77f2b7..dacbc70b 100644 --- a/th05_op.asm +++ b/th05_op.asm @@ -1228,7 +1228,7 @@ loc_A69A: mov bx, [bp+var_2] shl bx, 2 push large dword ptr MENU_DESC[bx] - call far ptr loc_D436 + call sub_D436 loc_A705: pop di @@ -1468,7 +1468,7 @@ loc_A900: mov bx, si shl bx, 2 push large dword ptr MENU_DESC[bx] - call far ptr loc_D436 + call sub_D436 loc_A951: pop di @@ -2615,7 +2615,7 @@ loc_B2AB: push si push [bp+arg_0] push large [bp+var_4] - call far ptr loc_D436 + call sub_D436 pop si leave retn 4 @@ -2668,7 +2668,7 @@ loc_B2FC: push si push [bp+arg_0] push large [bp+var_4] - call far ptr loc_D436 + call sub_D436 pop si leave retn 4 @@ -2696,7 +2696,7 @@ loc_B31C: mov bx, si shl bx, 2 push large [SETUP_BGM_BODY+bx] - call far ptr loc_D436 + call sub_D436 inc si add di, 10h @@ -2731,7 +2731,7 @@ loc_B34A: mov bx, si shl bx, 2 push large [SETUP_SFX_BODY+bx] - call far ptr loc_D436 + call sub_D436 inc si add di, 10h @@ -2761,7 +2761,7 @@ var_2 = word ptr -2 push 0Fh push ds push offset aSETUP_BGM_HEAD ; "     使用する音源を選択して下さい・... - call far ptr loc_D436 + call sub_D436 mov word_12F30, 0Ah mov word_12F32, 4 push large 200080h @@ -2879,7 +2879,7 @@ var_2 = word ptr -2 push 0Fh push ds push offset aSETUP_SFX_HEAD ; "    効果音に使用する音源を選択して・... - call far ptr loc_D436 + call sub_D436 mov word_12F30, 0Ah mov word_12F32, 4 push large 200080h @@ -4114,7 +4114,7 @@ loc_BEF4: lea ax, [si+60h] push ax push large 1400010h - call far ptr loc_DB3C + call sub_DB3C loc_BF05: mov al, [bp+arg_2] @@ -4142,7 +4142,7 @@ loc_BF14: push ax push [bp+var_2] push dx - call far ptr loc_D436 + call sub_D436 loc_BF48: pop si @@ -4192,17 +4192,17 @@ loc_BF6B: push large 0C0050h push 5 push large [MUSICROOM_UP] - call far ptr loc_D436 + call sub_D436 push large 0C0120h push 5 push large [MUSICROOM_DOWN] - call far ptr loc_D436 + call sub_D436 push large 0C0020h push 3 mov bx, musicroom_game_id shl bx, 2 push large dword ptr MUSICROOM_GAME[bx] - call far ptr loc_D436 + call sub_D436 pop si pop bp retn 2 @@ -4650,7 +4650,7 @@ var_2 = word ptr -2 push 7 push ds push offset unk_13EAA - call far ptr loc_D436 + call sub_D436 mov si, 4EF2h mov di, 1 mov [bp+var_2], 0B4h ; 'エ' @@ -4665,7 +4665,7 @@ loc_C351: push 7 push ds push si - call far ptr loc_D436 + call sub_D436 loc_C365: inc di @@ -4725,17 +4725,17 @@ sub_C3A7 proc near mov word_F9BE, 2 push large 1400020h push large 1400010h - call far ptr loc_DB3C + call sub_DB3C push large 14000B4h push large 1400090h - call far ptr loc_DB3C + call sub_DB3C call sub_C293 push large 1400020h push large 1400010h - call far ptr loc_DB3C + call sub_DB3C push large 14000B4h push large 1400090h - call far ptr loc_DB3C + call sub_DB3C pop bp retn sub_C3A7 endp @@ -4761,7 +4761,7 @@ loc_C406: call sub_BFF6 push large 1400040h push large 1400100h - call far ptr loc_DB3C + call sub_DB3C cmp byte_13E96, 0 jz short loc_C42C call sub_C376 @@ -4795,19 +4795,19 @@ arg_0 = word ptr 4 mov si, [bp+arg_0] push large 20h ; ' ' push large 1400010h - call far ptr loc_DB3C + call sub_DB3C push large 60h push large 14000C0h - call far ptr loc_DB3C + call sub_DB3C push si call sub_BF4D call sub_C293 push large 20h ; ' ' push large 1400010h - call far ptr loc_DB3C + call sub_DB3C push large 60h push large 14000C0h - call far ptr loc_DB3C + call sub_DB3C push si call sub_BF4D pop si @@ -6261,12 +6261,12 @@ loc_D012: lea ax, [di-8] push ax push large 0E00008h - call far ptr loc_DB3C + call sub_DB3C lea ax, [si-8] push ax push di push large 800A0h - call far ptr loc_DB3C + call sub_DB3C mov al, byte ptr word_14118 mov ah, 0 mov bx, ax @@ -6591,22 +6591,24 @@ loc_D2F7: push 1 call sub_E15E jmp loc_D1B5 +; --------------------------------------------------------------------------- + leave + retn sub_D12D endp +; --------------------------------------------------------------------------- + db 0 seg001 ends -; --------------------------------------------------------------------------- ; =========================================================================== ; Segment type: Pure code seg002 segment byte public 'CODE' use16 assume cs:seg002 - ; org 1 + ; org 4 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing - leave - retn -; --------------------------------------------------------------------------- - db 0 + +sub_D304 proc near push di xor ax, ax mov di, 3662h @@ -6630,6 +6632,8 @@ loc_D319: jnz short loc_D30E pop di retf +sub_D304 endp + ; =============== S U B R O U T I N E ======================================= @@ -6801,13 +6805,23 @@ sub_D41C endp ; --------------------------------------------------------------------------- db 0 -loc_D436: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D436 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+0Ah] + mov dx, [bp+arg_4] mov al, 0C0h pushf cli @@ -6828,41 +6842,36 @@ loc_D436: mov ax, 0A800h mov es, ax assume es:nothing - mov dx, [bp+0Ch] + mov dx, [bp+arg_6] shl dx, 6 mov di, dx shr dx, 2 add di, dx - mov cx, [bp+0Eh] + mov cx, [bp+arg_8] mov al, 0Bh out 68h, al mov bx, word_F9BE add bx, bx cmp bx, 8 -; START OF FUNCTION CHUNK FOR sub_DA6B - -loc_D480: jb short loc_D492 - -loc_D482: cmp bx, 10h jnb short loc_D492 mov ax, [bx+9AEh] - mov cs:word_D58D, ax + mov word ptr cs:loc_D58A+3, ax mov bx, 8 loc_D492: mov ax, [bx+9A2h] - mov cs:word_D4F5, ax + mov word ptr cs:loc_D4F4+1, ax mov ax, [bx+9ACh] - mov cs:word_D547, ax + mov word ptr cs:loc_D546+1, ax mov ax, word_F9C0 - mov cs:word_D514, ax - mov cs:word_D55B, ax + mov word ptr cs:loc_D513+1, ax + mov word ptr cs:loc_D55A+1, ax push ds pop fs assume fs:dseg - lds si, [bp+6] + lds si, [bp+arg_0] lodsb or al, al jz short loc_D51F @@ -6891,6 +6900,8 @@ loc_D4D8: mov al, ah out 0A3h, al nop + +loc_D4E4: mov al, ch or al, 20h out 0A5h, al @@ -6899,15 +6910,24 @@ loc_D4D8: mov al, ch out 0A5h, al in al, 0A9h -; END OF FUNCTION CHUNK FOR sub_DA6B -; --------------------------------------------------------------------------- - db 0E8h -word_D4F5 dw 78h - db 8Ah, 0F8h, 0B3h, 0, 0D3h, 0E8h, 0D3h, 0EBh, 86h, 0E0h - db 0ABh, 26h, 88h, 1Dh, 83h, 0C7h, 4Eh, 0FEh, 0C5h, 80h - db 0FDh, 10h, 72h, 0D5h, 81h, 0EFh, 0, 5, 0BAh -word_D514 dw 1234h -; --------------------------------------------------------------------------- + +loc_D4F4: + call sub_D56F + 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_D4E4 + sub di, 500h + +loc_D513: + mov dx, 1234h loc_D516: xor ch, ch @@ -6915,7 +6935,6 @@ loc_D516: lodsb or al, al jnz short loc_D4B8 -; START OF FUNCTION CHUNK FOR sub_DA6B loc_D51F: mov al, 0Ah @@ -6934,33 +6953,48 @@ loc_D52E: loc_D531: cmp al, 20h ; ' ' - jz short near ptr byte_D55A + jz short loc_D55A out 0A1h, al mov al, ah out 0A3h, al nop + +loc_D53C: mov al, ch or al, 20h out 0A5h, al in al, 0A9h xor ah, ah -; END OF FUNCTION CHUNK FOR sub_DA6B -; --------------------------------------------------------------------------- - db 0E8h -word_D547 dw 26h - db 0D3h, 0C8h, 0ABh, 83h, 0C7h, 4Eh, 0FEh, 0C5h, 80h, 0FDh - db 10h, 72h, 0E6h, 81h, 0EFh, 0, 5 -byte_D55A db 0BAh -word_D55B dw 1234h -; --------------------------------------------------------------------------- + +loc_D546: + call sub_D56F + ror ax, cl + stosw + add di, 4Eh ; 'N' + inc ch + cmp ch, 10h + jb short loc_D53C + sub di, 500h + +loc_D55A: + mov dx, 1234h shr dx, 1 jmp short loc_D516 +sub_D436 endp + ; --------------------------------------------------------------------------- nop + +; =============== S U B R O U T I N E ======================================= + + +sub_D562 proc near mov dx, ax add dx, dx or ax, dx retn +sub_D562 endp + ; --------------------------------------------------------------------------- mov dx, ax shl dx, 1 @@ -6981,12 +7015,21 @@ sub_D56F proc near retn sub_D56F endp -; --------------------------------------------------------------------------- - db 0E8h, 0ECh, 0FFh, 8Ah, 0DDh, 83h, 0E3h, 2 dup(3), 0DBh - db 64h, 23h, 87h -word_D58D dw 1234h -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + + +sub_D580 proc near + call sub_D56F + mov bl, ch + and bx, 3 + add bx, bx + +loc_D58A: + and ax, fs:[bx+1234h] retn +sub_D580 endp + ; =============== S U B R O U T I N E ======================================= @@ -7742,8 +7785,8 @@ off_DAD1 dw offset loc_DA9D dw offset loc_DA9D dw offset loc_DABF dw offset loc_DA9D - dw offset loc_D480 - dw offset loc_D482 + dw 180h + dw 182h dw 184h dw 186h dw 188h @@ -7804,15 +7847,25 @@ sub_DB21 endp ; --------------------------------------------------------------------------- db 0 -loc_DB3C: +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DB3C 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+0Ch] - mov dx, [bp+0Ah] + mov ax, [bp+arg_6] + mov dx, [bp+arg_4] mov bx, ax sar bx, 4 shl bx, 1 @@ -7820,22 +7873,22 @@ loc_DB3C: add bx, dx shr dx, 2 add bx, dx - mov cs:word_DBA2, bx + mov word ptr cs:loc_DBA1+1, bx and ax, 0Fh mov cx, ax - add ax, [bp+8] + add ax, [bp+arg_2] shr ax, 4 or cx, cx jz short loc_DB6F inc ax loc_DB6F: - mov cs:word_DBA7, ax + mov word ptr cs:loc_DBA6+1, ax jmp short $+2 mov cx, 28h ; '(' sub cx, ax shl cx, 1 - mov ax, [bp+6] + mov ax, [bp+arg_0] mov bp, cx push 0E000h push word_F9CA @@ -7846,14 +7899,34 @@ loc_DB6F: push 0A800h push word_F9C4 mov dl, 4 + +loc_DB9F: mov bx, ax + +loc_DBA1: + mov di, 1234h + pop ds + assume es:nothing + pop es + +loc_DBA6: + mov cx, 1234h + mov si, di + rep movsw + add di, bp + dec bx + jnz short loc_DBA6 + dec dl + jnz short loc_DB9F + pop ds + pop si + pop di + pop bp + retf 8 +sub_DB3C endp ; sp-analysis failed + ; --------------------------------------------------------------------------- - db 0BFh -word_DBA2 dw 1234h - db 1Fh, 7, 0B9h -word_DBA7 dw 1234h - db 8Bh, 0F7h, 0F3h, 0A5h, 3, 0FDh, 4Bh, 75h, 0F4h, 0FEh - db 0CAh, 75h, 0E9h, 1Fh, 5Eh, 5Fh, 5Dh, 0CAh, 8, 0, 90h + nop ; =============== S U B R O U T I N E =======================================